From patchwork Fri Jan 13 11:08:33 2023 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Jan Beulich X-Patchwork-Id: 43170 Return-Path: Delivered-To: ouuuleilei@gmail.com Received: by 2002:a5d:4e01:0:0:0:0:0 with SMTP id p1csp207563wrt; Fri, 13 Jan 2023 03:09:26 -0800 (PST) X-Google-Smtp-Source: AMrXdXvpBrGq0hDk/WQ+DNq9TYQh7Mfd37NXU9/URlFdwxdVyBB65lBfSKd7zJkL8hDsffqYJ9Uz X-Received: by 2002:a17:907:8b11:b0:81b:fbff:a7cc with SMTP id sz17-20020a1709078b1100b0081bfbffa7ccmr69268676ejc.18.1673608166818; Fri, 13 Jan 2023 03:09:26 -0800 (PST) Received: from sourceware.org (server2.sourceware.org. [2620:52:3:1:0:246e:9693:128c]) by mx.google.com with ESMTPS id gn3-20020a1709070d0300b008546dd18d16si12745614ejc.51.2023.01.13.03.09.26 for (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Fri, 13 Jan 2023 03:09:26 -0800 (PST) Received-SPF: pass (google.com: domain of binutils-bounces+ouuuleilei=gmail.com@sourceware.org designates 2620:52:3:1:0:246e:9693:128c as permitted sender) client-ip=2620:52:3:1:0:246e:9693:128c; Authentication-Results: mx.google.com; dkim=pass header.i=@sourceware.org header.s=default header.b=T4w5OjHr; arc=fail (signature failed); spf=pass (google.com: domain of binutils-bounces+ouuuleilei=gmail.com@sourceware.org designates 2620:52:3:1:0:246e:9693:128c as permitted sender) smtp.mailfrom="binutils-bounces+ouuuleilei=gmail.com@sourceware.org"; dmarc=pass (p=NONE sp=NONE dis=NONE) header.from=sourceware.org Received: from server2.sourceware.org (localhost [IPv6:::1]) by sourceware.org (Postfix) with ESMTP id ED5BA38543BC for ; Fri, 13 Jan 2023 11:08:59 +0000 (GMT) DKIM-Filter: OpenDKIM Filter v2.11.0 sourceware.org ED5BA38543BC DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=sourceware.org; s=default; t=1673608140; bh=xRb3PzMLkTe3AHAY61DeV6xodmNrumcN+4pLOQQGgMo=; h=Date:Subject:To:Cc:References:In-Reply-To:List-Id: List-Unsubscribe:List-Archive:List-Post:List-Help:List-Subscribe: From:Reply-To:From; b=T4w5OjHrOgQGsJU3JR+lGLzK+ZhwrtSyIXBnetp+ejFkquHkOgJwk/nQgedk1wiWM z2/kveIAV3wko0NZjOKS7KKT/CSxB/vQYxqwRP7E89mi7d4Sh9yQn1QjtOGyg4hXxA 6srmSWmtwaDr34TQk+bNlKY/P4CsIjISxhyFLwWM= X-Original-To: binutils@sourceware.org Delivered-To: binutils@sourceware.org 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 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 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: In-Reply-To: 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?q?iOymQYxThR8en/R2ysgcvfluyt3b?= =?utf-8?q?+tsMn3/trsi5rOPlihVZ35spYRkW8VkF+9CQrmmMJK/473LtFklxMfj4bZ3w63uAl?= =?utf-8?q?wiB2xVISTXPRLH+xRZtBQY/WCbLP60AW/eIU9Rt92uI+3f0SGCcMLtp4LQY2XLgkM?= =?utf-8?q?ENNKZ9nfazJVoZ6WVcuROfUh8jj3gJ6Yj6h2uLYmdnyeU04a+1lZHB1opHzsFy+We?= =?utf-8?q?Fp8c7y/ksWGF3AiHlHRIGtZcmo+PEAot576qtURxLxoi2GTq37cNdXKLg/OOhH+HA?= =?utf-8?q?lubkKciqX5doFk+VdtknKWRLi34x73D5OnTFqTdQBApPeonmxaYMSeJhO/Rh1Cfop?= =?utf-8?q?RrWfyOpv/NOycUjIvDYfY0P5VP5xml5BvWKjqOdEH35vJyfiOACJiFsiJcKE0o9GC?= =?utf-8?q?oKB0wPFGFJMMI3G3b499MOCXyvRFcCTRGUrxf0mNg72pbA9BndVEerk8kzw0sYRgx?= =?utf-8?q?hrpI+4cSX4SPxAWSI9uCVlxcWDE7ZaCew7gQ4jS8MggrpVqlJvvXlOTQqjHXvIWER?= =?utf-8?q?POivstV4SoBnEK/00w1NYSnl75YBOOnfWyF399PUeT1G/2oVcXWhNjySJfPvTtTsI?= =?utf-8?q?ONsmlZeldsvMAhrZjnSjk20PSVDTXkKgO6rRrCWQ1A/kE3wuEyo6qKz35Bhg/QIlD?= =?utf-8?q?YwjymX6aq13GgswLAjsHeyaj6GtAwBg0lTbGEiSfifeZjv4Lr28pefPkNJV6mURdy?= =?utf-8?q?TB2F99mP9XsyMIzu4KweKCQc9Br6uNr4tKoGVKNIEWVMy6jOjkEuq1DsWIHQ10jI7?= =?utf-8?q?DY3JAfpTT1xuxwK/xLR9DyiJLJ/HF9z9PmgcMTwrwvgzTLgoYLZAz0+IgGxWq1KCe?= =?utf-8?q?MhXY1G63WshESQRiGvx/Kx7qPDiNhNWFW5ewZw4H5cXxT400DWixdDih4YFhNBMtP?= =?utf-8?q?lscmXaqCxaoFjt6mHfxs6/suCBN7JtyU9LrUH1urcsyJNKRX9Kcp4zVpyUWOH9Mgc?= =?utf-8?q?hkokpaAVphJPWlLkRCvrQ4Gt5+CT15OqXiBXm5TQM/mtQx8SHGPup7rfcFQoMeo0b?= =?utf-8?q?zusGM44t7Hgtsv9IRolFpw+2xJzVT7IXMMVIM+nX5FV7OWF7vqOvSSLaAZ7mFTkMM?= =?utf-8?q?yG0hyZaRhu5MMzgccv7LZ5ABj4DgBetAQ3A9/px8cjzBw3oH4GwIQN3EazQCEUsmC?= =?utf-8?q?ffAitbm1xUhTx9odhrRG1nq9VOonsek/H86WLYyd0rbwnO2jmxFbFoLCg2XuEPuno?= =?utf-8?q?e8lBHi0MLh8Rp/I0cJVaJM8+3/OlKbSh5WoCezr/FxV0cQ8QMtq0n1+VfFjarVJ2u?= =?utf-8?q?4K+xgQ4Xy501BMiLv8ZzaXwyTKj54MAIvuL2HF/1n4s9l6dYTmbatoO9UiwYaryyf?= =?utf-8?q?aXG69M4F/1InKWEl0PpgkjHz8ce9fBdL1Ycewxrl/o7T6hc11ivCUpB3/vLB1eSLl?= =?utf-8?q?jMpbovUvWmy0d153gTv/SjIU7h5xa2idav29nP9Pr9g+xHPGu3o9GSal3b7cgPCpD?= =?utf-8?q?T8ei/lQl8JDWQOLj+rGB2EMqYVMS/wxC2nhV2XBjFelW98e+jJ4asP6QUnfPgG7Nu?= =?utf-8?q?OM/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 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-Patchwork-Original-From: Jan Beulich via Binutils From: Jan Beulich Reply-To: Jan Beulich Errors-To: binutils-bounces+ouuuleilei=gmail.com@sourceware.org Sender: "Binutils" X-getmail-retrieved-from-mailbox: =?utf-8?q?INBOX?= X-GMAIL-THRID: =?utf-8?q?1754905356923783991?= X-GMAIL-MSGID: =?utf-8?q?1754905356923783991?= 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)