From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: 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 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=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 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=tqDiXMIXfTcwVqJ8hFX2JT+qI/VgZc6+cQz+rGeISd8=; b=jC1IAjeSi0Q5/3/5xOEoj5IfoMcmicNjaUg5NYgRPt1BD1EEr8L1FAzSEtrjnems1/J72SchOlRHSObBg3vdGiwhFuFrlfkS4S3Wfadc3rjEhStODyGxTi0JNVRKBzfVlHeDJkhefk+tcVAkUxb8LDd8PENbtE0DU7NLqeLrK0n0tmBsuImYpFSWYhr21hrH959LJkpfbJOCsJD9NzXJtHLmfoNR+NSQCbDkjqi/kaLE+fM+w0HtXXcoJRvwV7dTu/yr4zC7Q6OQ4GPFO2qzOF8o1rG+GfsJdGE2cKLjZ+2u3MPCwNR3oaJFVpSi0747NyqmLsNRPnTaPR+8dOdoKQ== 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 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: From: Jan Beulich In-Reply-To: Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 7bit 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?B?NUg2d3hVMGpkNElKdlRGZlNsNDM5MWV1cUFGbXk4NG5CUjEzL213aU5WYTdp?= =?utf-8?B?dUlycmJFaHlNeTFNUnNFcHd3elNkeFVNT0hyUDhjdXhEdGhEajlUYStrU25n?= =?utf-8?B?c2FheHYxODR4N0hhbDJJcDVVTXVIMFU1WnYwajE5bEJjcEIwbW83dG9kSFpj?= =?utf-8?B?UUh3QWhEa09jakl5U1hSWEJWL2FsclBYbXZMNS9Vc2VZbVd5VWd2T0VIZktQ?= =?utf-8?B?MHo1c3BPN1BJU2hWbWRaN2JVbFZ4VEdyeGNHd3EreE95aDYxZk9RaFJHT2J6?= =?utf-8?B?RktsLzVMZUlaWk5qeGZEWGJnbnY4T1c2SEdyNzRlR0sxeTRTNjRJemJmbVgr?= =?utf-8?B?ajBaNU5VWTNTbm9QTTZvYU1NNEJlRTV5TFB1emd3Y2xNWldpSWZTOGp5bUFo?= =?utf-8?B?YnVmS0hENmxwaEtLd1BCOGNsM29vUnJzb2FGYzJrbDErQ0JQYUplRFA0OWdK?= =?utf-8?B?VUwzKzZjVzlKbmQ0cTNFNSt1YjZJT3UrVFZjNkpHM0Y4ald1ZFYydkQrMzR5?= =?utf-8?B?ZlVCNVZNdHJ0WEtRdVJxcUc1ZUtjMCtsQ2MzaTVTaW0rV0t2RnEzSC9nNWVn?= =?utf-8?B?enJUcTRqbFFxMDlvUUNtT3RURTFGWWZwS3RMcDBJcmdYc0RFMXF4b29uU1d1?= =?utf-8?B?RVl6NUd3REV2YUo1SjhsNGNSWmsvWS9IWitjTEIzTUFBbEFILzJsWXFVdnRS?= =?utf-8?B?R2c2Ry9ZM1BUZ2NqbThETGdhVVhPOTVVaTZBclZuSmZyK1RIQ1dpM1BnOWp0?= =?utf-8?B?Rmp5eHUzSUFNT2NRZ29GbW1vOXJNR2hBZ3dqQWRPQnc1YnFpRFJhWXRkOWcz?= =?utf-8?B?d29vUCt5T3Z0MWE0RXhrYnFMVDRsZWgyRS8yZndnN2dwVGRkd0N2amhLQlA2?= =?utf-8?B?ZmJjSldSWGZjZjhrNjJHYkk5V1ZjQ3JDYVBTbjBuOGxHNkFETHlEYzNKWFhR?= =?utf-8?B?SzY3QnFWTy9ManQvUmxaaDh0RzdwTG1zbWcvSjRYQTlCSjdGT2xnUnhJTXpF?= =?utf-8?B?Y0RzSFErVU95MXVnUCtjZzFFT1ZLTVZrVlQwa01xZXNUQkEweHZvVXZzMk9D?= =?utf-8?B?eHJqdEhiZEdRZ1NqZHpQeklwY1Zoc3J4VFp4NCtBQzVGT1BDcnIxVHBRbDV0?= =?utf-8?B?S1lTdXJKdlloRFB2YUgzbnp4eWJZRTVMUUtkMTNneFE3YWdDZDg5MjZlYVRC?= =?utf-8?B?VXJFVVFROGthYW05ZHA5ckkxeU5XM1M0SmhZOVJzUGo4c0ZaY3lLWXNGWHN5?= =?utf-8?B?YWVsQmIwaGFZU1RyQUFZemZPb1h3QmVOV2RycE5jUWhxdXNabDBGTmR2Zm80?= =?utf-8?B?alpFMENPNDdJZk9zbDlIbGVDSGszb0R1d0IxL0o0cTYvV09BbjNzWjZpTFFF?= =?utf-8?B?TW9LSjBUZVA5Z3czQSt0NUovdC9qeno4cmNYYk5aSTNZWmpzbDJ5ZDVyc3Rw?= =?utf-8?B?RUErczdGN0lsUkcyTE83MVBpT0IyaUFQVERrK1FXZ3lJWmJsakg0VkFreEY1?= =?utf-8?B?V0UrSHE2dFlCVVhHYm8zQktMSmNxbkNUUit3MVlqeHZMMm53RjdHcUUxcUxa?= =?utf-8?B?cmxZbEx0QkIxVGF1TEc5TVQwSlVrUWxtV3hQT041NjA3bW1LQlBhZWdoaE92?= =?utf-8?B?dEo4SE04c3dqNkxQZ3J1V2ZvODVld2tYT1E1UlVQRUdWRFY4ZHduZjE2OENW?= =?utf-8?B?OGVneFpqNjB3bkNsVzdZQmdVcjFpbEhsUWlmUDZSc1VNRXBzQTFmSEhjV1kw?= =?utf-8?B?MDZyblFiTTJEaFB1dTZtL2hKMzBVeDhjeVo0dDBKUjNyNWZOenQ3bGtkcHdS?= =?utf-8?B?Zit5V0YwOWFpZHVzUFRmSVJwd3FIa0twT1RKNTZIUUJSRXNXdEtvY0h1bERJ?= =?utf-8?B?bkRCVTNLL3NtWXJxdTNnejhCM09ZZHNQVVhYT1RkeTEwcXhpTnA4MWgwbFpW?= =?utf-8?B?b0dia1dtZ2luN3E2WW9QUXgzSC9VcUZ5L09lOFpwa2FRdjF4Nm5jMDlwUzRG?= =?utf-8?B?dy9nYVJEcXdkZW5EbTNRbmx5YmxGU3lRL2RWbzA3UlNTTXhMZ3d1VWlINDJD?= =?utf-8?B?WWhKVzhuaFRmZHJPLy8yMmJQNWxWNWVLOUVpQURiS0paVHNMM0k2dHlUWUtR?= =?utf-8?Q?LvnlyPl6jpmog1fCWdTJaoaDp?= 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 List-Id: 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 }