From patchwork Fri Feb 3 07:45:51 2023 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Jan Beulich X-Patchwork-Id: 52368 Return-Path: Delivered-To: ouuuleilei@gmail.com Received: by 2002:adf:eb09:0:0:0:0:0 with SMTP id s9csp698468wrn; Thu, 2 Feb 2023 23:46:27 -0800 (PST) X-Google-Smtp-Source: AK7set/4oMtHDUQ58t+MMj/uQPBMnHiEd2+ssu0cHbPz8oJ24McbwTjmiyZjxm8HmGqSsyEjs3D2 X-Received: by 2002:a50:ab14:0:b0:47b:16c7:492c with SMTP id s20-20020a50ab14000000b0047b16c7492cmr9384603edc.25.1675410387306; Thu, 02 Feb 2023 23:46:27 -0800 (PST) Received: from sourceware.org (server2.sourceware.org. [2620:52:3:1:0:246e:9693:128c]) by mx.google.com with ESMTPS id r6-20020a170906958600b00878561c0885si2065868ejx.450.2023.02.02.23.46.26 for (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Thu, 02 Feb 2023 23:46:27 -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=bED52O+I; 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 380C638432F6 for ; Fri, 3 Feb 2023 07:46:05 +0000 (GMT) DKIM-Filter: OpenDKIM Filter v2.11.0 sourceware.org 380C638432F6 DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=sourceware.org; s=default; t=1675410365; bh=tqDiXMIXfTcwVqJ8hFX2JT+qI/VgZc6+cQz+rGeISd8=; 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=bED52O+IOJ8BD+QQa7TC9YDordzw82fKKToGQYEI9MhNW75HLJqc31pBjWf9j+vQ9 itxbKoT6IMysRFlz10mXyl4La+zAt0FF3VH/MlJuMvOUYJbaRY/oJuzuyAqPJN+BfX D4XTSCnFOGUJAYjJ51d3ktz/soO2bNmIRMhgP0vg= X-Original-To: binutils@sourceware.org Delivered-To: binutils@sourceware.org Received: from EUR05-VI1-obe.outbound.protection.outlook.com (mail-vi1eur05on2067.outbound.protection.outlook.com [40.107.21.67]) by sourceware.org (Postfix) with ESMTPS id 73E67385700E for ; Fri, 3 Feb 2023 07:45:55 +0000 (GMT) DMARC-Filter: OpenDMARC Filter v1.4.2 sourceware.org 73E67385700E ARC-Seal: i=1; a=rsa-sha256; s=arcselector9901; d=microsoft.com; cv=none; b=d0tziy6+QcZOGOPHWTgW/EZ7G3uJUXoPBhmqywqjs3vutkccjNswAmS5lK8pXvTBv+XGWzlLu+UhdlT5Qg9V92ee5/jkqyON7A74wIQ3Jnam1kTuStyUCaZ6lpnvG+CZJiHkZt0+IEveUQbD+7w0ntGOY3lgL1SyOv0fN2oRgxQ/+T/kVd3NmAl0Zrp1eSlbjZKwO86EnHOvqlADma70QITEKi9RWu7AyH/3d93Nw8ZSiNqXIsQ5rrHsKtUYjFlf4GkWr7plBQdP3j6ZNQq58yQhrHn/5VsWKm4nRR5SPoJF6jRhuBOWCRFk6NNJ6JwoltGoXZhpcIXfoGt5Y2VHcQ== 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=tqDiXMIXfTcwVqJ8hFX2JT+qI/VgZc6+cQz+rGeISd8=; b=A4+FbtGpwKGAuiNQCoxCEZ1c97cAW4ebFA2ubxAtyL3aXOe82/t8tNpkTDiVJBHjdWdqej6u+icWmamESsCgjWFUXWRC4dCcjFVQ1ezHmn4J/CTgkbECR1h8k8FRQDe37QQrfUSyTpzc2s1LPJ+tdNwkrPy+dszLh1lON4CkWpxApO/3TJ5+2cHCv/2IQdmFvVUlcvi3ZNpKzufTaXP+h/qBSN7wDfon37TaT8LT/ImqGS51aKI3FAQcOvd6vikEdkrU9lLj3uwdlEvcsOCfdysOp67KBhf/4Fc5qrmCIGmYuAO4wY7XBMx5uHkBbxFHqKuFwFxNE+PQKcIa9vhalA== 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 AS8PR04MB8165.eurprd04.prod.outlook.com (2603:10a6:20b:3fd::20) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.6064.25; Fri, 3 Feb 2023 07:45:53 +0000 Received: from VE1PR04MB6560.eurprd04.prod.outlook.com ([fe80::e138:4fc3:705c:d178]) by VE1PR04MB6560.eurprd04.prod.outlook.com ([fe80::e138:4fc3:705c:d178%6]) with mapi id 15.20.6064.024; Fri, 3 Feb 2023 07:45:53 +0000 Message-ID: <03deb7fa-cc01-a049-965e-4ee534aadc35@suse.com> Date: Fri, 3 Feb 2023 08:45:51 +0100 User-Agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:102.0) Gecko/20100101 Thunderbird/102.6.1 Subject: [PATCH 2/3] x86: drop use of XOP2SOURCES Content-Language: en-US To: Binutils Cc: "H.J. Lu" References: In-Reply-To: X-ClientProxiedBy: FR3P281CA0200.DEUP281.PROD.OUTLOOK.COM (2603:10a6:d10:a5::15) To VE1PR04MB6560.eurprd04.prod.outlook.com (2603:10a6:803:122::25) MIME-Version: 1.0 X-MS-PublicTrafficType: Email X-MS-TrafficTypeDiagnostic: VE1PR04MB6560:EE_|AS8PR04MB8165:EE_ X-MS-Office365-Filtering-Correlation-Id: 32e6d115-2eec-48b0-77d6-08db05baacfe X-MS-Exchange-SenderADCheck: 1 X-MS-Exchange-AntiSpam-Relay: 0 X-Microsoft-Antispam: BCL:0; X-Microsoft-Antispam-Message-Info: 5NX8xFumkug0SJPZia28UCfIGWTAB5/IvEnQ1OyhRiUOfashdfhfvTf5K+VOXVcreuyhZS+Gadcc/8xtDIVg6x8w65Q9sQAbHy88Q1mxceyFNtERkFsSoMBJGzDlyO5k2DqkvzGkFcS4TuGxhWNMgDz5yPULBC1sAGu5x5nsghfOHHQNfJrsqblrPHlhWxIcvfRz+4KlFuCMqFfxpc1OTmGS4M4uEkqZNeVQcNEcmW7/fKD3E76zD0KNBW09rEWr0O6n3jMUMnU7mBKASQlijf9TRh78GMEhs6RYDoiAHQi3VTH8h3/3FBgqx8uhP46ZEVviOYA3cckQO+KOOt1UblVCpJaw3AhpMXjyY8rxN3H8pDHyxV71zYBWAMD9TkVAbR+Z4lejQd0551xjWjzSMaUXd64/AC1X2uvR5b8yhLlrktZxw+50o3AOrPXM1+2QTbICnd+5kNtgUo6VL4iAmBXkIAmuxLNubbIiGNSZmXKvhjvihh0WdrAuqG4OIvx8Pz2XrSt4ZAFnAuEFCIPkrN4NICArKzuVl4KITUZzYyoclHQTglRZUhcJF+ZVf/zZAw/uUPtLwL08xY+Ui2x7/1SuvuDsKKwQJjj5mTg+NkIRWN5ljmkOR9VRtu3bwLyECPc3n6QMdx50gcwfZcGBDNKaEuj2LUMkhyypldA8mv8w+DyjR3oEbU7hLvTjFsxFAuPZTY8LnRZ+IEXHrvheilifsu6iUPFiTv7n87g8iNY= 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:(13230025)(39860400002)(366004)(396003)(346002)(136003)(376002)(451199018)(5660300002)(38100700002)(478600001)(86362001)(36756003)(8936002)(31696002)(6486002)(41300700001)(316002)(2906002)(186003)(4326008)(6512007)(31686004)(66946007)(66476007)(66556008)(26005)(6506007)(2616005)(8676002)(6916009)(43740500002)(45980500001); DIR:OUT; SFP:1101; X-MS-Exchange-AntiSpam-MessageData-ChunkCount: 1 X-MS-Exchange-AntiSpam-MessageData-0: =?utf-8?q?5H6wxU0jd4IJvTFfSl4391euqAFm?= =?utf-8?q?y84nBR13/mwiNVa7iuIrrbEhyMy1MRsEpwwzSdxUMOHrP8cuxDthDj9Ta+kSngsaa?= =?utf-8?q?xv184x7Hal2Ip5UMuH0U5Zv0j19lBcpB0mo7todHZcQHwAhDkOcjIySXRXBV/alrP?= =?utf-8?q?XmvL5/UseYmWyUgvOEHfKP0z5spO7PIShVmdZ7bUlVxTGrxcGwq+xOyh61fOQhRGO?= =?utf-8?q?bzFKl/5LeIZZNjxfDXbgnv8OW6HGr74eGK1y4S64IzbfmX+j0Z5NUY3SnoPM6oaMM?= =?utf-8?q?4BeE5yLPuzgwclMZWiIfS8jymAhbufKHD6lphKKwPB8cl3ooRrsoaFc2kl1+CBPaJ?= =?utf-8?q?eDP49gJUL3+6cW9Jnd4q3E5+ub6IOu+TVc6JG3F8jWudV2vD+34yfUB5VMtrtXKQu?= =?utf-8?q?RqqG5eKc0+lCc3i5Sim+WKvFq3H/g5egzrTq4jlQq09oQCmOtTE1FYfpKtLp0IrgX?= =?utf-8?q?sDE1qxoonSWuEYz5GwDEvaJ5J8l4cRZk/Y/HZ+cLB3MAAlAH/2lYqUvtRGg6G/Y3P?= =?utf-8?q?Tgcjm8DLgaUXO95Ui6ArVnJfr+THCWi3Pg9jtFjyxu3IAMOcQgoFmmo9rMGhAgwjA?= =?utf-8?q?dOBw5bqiDRaYtd9g3wooP+yOvt1a4ExkbqLT4leh2E/2fwg7gpTddwCvjhKBP6fbc?= =?utf-8?q?JWRXfcf8k62GbI9WVcCrCaPSn0n8lG6ADLyDc3JXXQK67BqVO/Ljt/RlZh8tG7pLm?= =?utf-8?q?smg/J4XA9BJ7FOlgRxIMzEcDsHQ+UOy1ugP+cg1EOVKMVkVT0kMqesTBA0xvoUvs2?= =?utf-8?q?OCxrjtHbdGQgSjdzPzIpcVhsrxTZx4+AC5FOPCrr1TpQl5tKYSurJvYhDPvaH3nzx?= =?utf-8?q?ybYE5LQKd13gxQ7agCd8926eaTBUrEUQQ8kaam9dp9rI1yNW3S4JhY9RsPj8sFZcy?= =?utf-8?q?KYsFXsyaelBb0haYSTrAAYzfOoXwBeNWdrpNcQhqusZl0FNdvfo4jZE0CO47IfOsl?= =?utf-8?q?9HleCHk3oDuwB1/J4q6/WOAn3sZ6iLQEMoKJ0TeP9gw3A+t5J/t/jzz8rcXbNZI3Y?= =?utf-8?q?Zjsl2yd5rstpEA+s7F7IlRG2LO71PiOB2iAPTDk+QWgyIZbljH4VAkxF5WE+Hq6tY?= =?utf-8?q?BUXGbo3BKLJcqnCTR+w1YjxvL2nwF7GqE1qLZrlYlLtBB1TauLG9MT0JUkQlmWxPO?= =?utf-8?q?N5607mmKBPaeghhOvtJ8HM8swj6LPgruWfo85ewkXOQ5RUPEGVDV8dwnf168CV8eg?= =?utf-8?q?xZj60wnClW7YBgUr1ilHlQifP6RsUMEpsA1fHHcWY006rnQbM2DhPuu6m/hJ30Ux8?= =?utf-8?q?cyZ4t0JR3r5fNzt7lkdpwRf+yWF09aidusPTfIRpwqHkKpOTJ56HQBREsWtKocHul?= =?utf-8?q?DInDBU3K/smYrqu3gz8B3OYdsPUXXOTdy10qxiNp81h0lZVoGbkWmgin7q6YoPQx3?= =?utf-8?q?H/UqFy/Oe8ZpkaQv1x6nc09pS4Fw/gaRDqwdenDm3QnlyblFSyQ/dVo07RSSMxLgw?= =?utf-8?q?uUiH42CYhJW8nhTfdrO//22bP5lV5eK9EiADbKJZTsL3I6tyTYKQLvnlyPl6jpmog?= =?utf-8?q?1fCWdTJaoaDp?= X-OriginatorOrg: suse.com X-MS-Exchange-CrossTenant-Network-Message-Id: 32e6d115-2eec-48b0-77d6-08db05baacfe X-MS-Exchange-CrossTenant-AuthSource: VE1PR04MB6560.eurprd04.prod.outlook.com X-MS-Exchange-CrossTenant-AuthAs: Internal X-MS-Exchange-CrossTenant-OriginalArrivalTime: 03 Feb 2023 07:45:52.9189 (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: aoT5u5Gdkrt6CuMSeQW84YeU2TXvvhN2pEEC1tbkQCg8BNxT1yRQIYMpNG0pz2NmJNw3Af4F5Be82UIdjh5dYw== X-MS-Exchange-Transport-CrossTenantHeadersStamped: AS8PR04MB8165 X-Spam-Status: No, score=-3028.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-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?1756795122290070869?= X-GMAIL-MSGID: =?utf-8?q?1756795122290070869?= The few XOP insns which used it wrongly didn't have VexVVVV specified. With that added, the only further missing piece to use more generic code elsewhere is SwapSources - see e.g. the BMI2 insns for similar operand patterns. With the only users gone, drop the #define as well as the special case code. --- a/gas/config/tc-i386.c +++ b/gas/config/tc-i386.c @@ -2142,9 +2142,9 @@ operand_size_match (const insn_template { unsigned int given = i.operands - j - 1; - /* For 4- and 5-operand insns VEX.W controls just the first two + /* For 4-operand and XOP insns VEX.W controls just the first two register operands. */ - if (t->opcode_modifier.vexsources) + if (t->opcode_modifier.vexsources || t->cpu_flags.bitfield.cpuxop) given = j < 2 ? 1 - j : j; if (t->operand_types[j].bitfield.class == Reg @@ -6933,7 +6933,8 @@ match_template (char mnem_suffix) if (!(size_match & MATCH_REVERSE)) continue; /* Try reversing direction of operands. */ - j = t->opcode_modifier.vexsources ? 1 : i.operands - 1; + j = t->opcode_modifier.vexsources + || t->cpu_flags.bitfield.cpuxop ? 1 : i.operands - 1; overlap0 = operand_type_and (i.types[0], operand_types[j]); overlap1 = operand_type_and (i.types[j], operand_types[0]); overlap2 = operand_type_and (i.types[1], operand_types[1]); @@ -6967,7 +6968,8 @@ match_template (char mnem_suffix) && (intel_syntax || intel_mnemonic)) found_reverse_match |= Opcode_FloatR; } - else if (t->opcode_modifier.vexsources) + else if (t->opcode_modifier.vexsources + || t->cpu_flags.bitfield.cpuxop) { found_reverse_match = Opcode_VexW; goto check_operands_345; @@ -8618,35 +8620,7 @@ build_modrm_byte (void) else mem = ~0; - if (i.tm.opcode_modifier.vexsources == XOP2SOURCES) - { - /* VEX.vvvv encodes one of the sources. */ - if (i.tm.opcode_modifier.vexw == VEXW0) - i.vex.register_specifier = i.op[0].regs; - else - i.vex.register_specifier = i.op[1].regs; - - /* Destination is a XMM register encoded in the ModRM.reg - and VEX.R bit. */ - i.rm.reg = i.op[2].regs->reg_num; - if ((i.op[2].regs->reg_flags & RegRex) != 0) - i.rex |= REX_R; - - /* ModRM.rm and VEX.B encodes the other source. */ - if (!i.mem_operands) - { - i.rm.mode = 3; - - if (i.tm.opcode_modifier.vexw == VEXW0) - i.rm.regmem = i.op[1].regs->reg_num; - else - i.rm.regmem = i.op[0].regs->reg_num; - - if ((i.op[1].regs->reg_flags & RegRex) != 0) - i.rex |= REX_B; - } - } - else if (i.tm.opcode_modifier.vexvvvv == VEXLWP) + if (i.tm.opcode_modifier.vexvvvv == VEXLWP) { i.vex.register_specifier = i.op[2].regs; if (!i.mem_operands) --- a/opcodes/i386-opc.h +++ b/opcodes/i386-opc.h @@ -619,10 +619,8 @@ enum OpcodePrefix, /* number of VEX source operands: 0: <= 2 source operands. - 1: 2 XOP source operands. 2: 3 source operands. */ -#define XOP2SOURCES 1 #define VEX3SOURCES 2 VexSources, /* Instruction with a mandatory SIB byte: --- a/opcodes/i386-opc.tbl +++ b/opcodes/i386-opc.tbl @@ -1876,10 +1876,10 @@ vpmacsww, 0x95, XOP, Modrm|SpaceXOP08|Ve vpmadcsswd, 0xa6, XOP, Modrm|SpaceXOP08|VexSources=2|VexVVVV=1|VexW=1|NoSuf|Vex, { RegXMM, RegXMM|Unspecified|BaseIndex, RegXMM, RegXMM } vpmadcswd, 0xb6, XOP, Modrm|SpaceXOP08|VexSources=2|VexVVVV=1|VexW=1|NoSuf|Vex, { RegXMM, RegXMM|Unspecified|BaseIndex, RegXMM, RegXMM } vpperm, 0xa3, XOP, D|Modrm|SpaceXOP08|VexSources=2|VexVVVV|VexW0|NoSuf|Vex, { RegXMM, RegXMM|Unspecified|BaseIndex, RegXMM, RegXMM } -vprot, 0x90 | , XOP, D|Modrm|Vex128|SpaceXOP09|VexW0|VexSources=1|NoSuf, { RegXMM, RegXMM|Unspecified|BaseIndex, RegXMM } +vprot, 0x90 | , XOP, D|Modrm|Vex128|SpaceXOP09|VexVVVV|SwapSources|VexW0|NoSuf, { RegXMM, RegXMM|Unspecified|BaseIndex, RegXMM } vprot, 0xc0 | , XOP, Modrm|Vex128|SpaceXOP08|VexW0|NoSuf, { Imm8, RegXMM|Unspecified|BaseIndex, RegXMM } -vpsha, 0x98 | , XOP, D|Modrm|Vex128|SpaceXOP09|VexW0|VexSources=1|NoSuf, { RegXMM, RegXMM|Unspecified|BaseIndex, RegXMM } -vpshl, 0x94 | , XOP, D|Modrm|Vex128|SpaceXOP09|VexW0|VexSources=1|NoSuf, { RegXMM, RegXMM|Unspecified|BaseIndex, RegXMM } +vpsha, 0x98 | , XOP, D|Modrm|Vex128|SpaceXOP09|VexVVVV|SwapSources|VexW0|NoSuf, { RegXMM, RegXMM|Unspecified|BaseIndex, RegXMM } +vpshl, 0x94 | , XOP, D|Modrm|Vex128|SpaceXOP09|VexVVVV|SwapSources|VexW0|NoSuf, { RegXMM, RegXMM|Unspecified|BaseIndex, RegXMM }