From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: from EUR05-DB8-obe.outbound.protection.outlook.com (mail-db8eur05on2069.outbound.protection.outlook.com [40.107.20.69]) by sourceware.org (Postfix) with ESMTPS id B3B5B3858D32 for ; Thu, 1 Dec 2022 09:09:31 +0000 (GMT) DMARC-Filter: OpenDMARC Filter v1.4.1 sourceware.org B3B5B3858D32 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=lJXPBvpGGAiqExTX2+iq0YmpWh+ehms4wQqna+TwVADl7lFUDP5RSycwyNKomeZcDt8gyWHn5nKoTj3vK/bvYzVUM+bRZkB/O3hwbTHo11s2xYxZlPEcKzXzPIWQu9Wxrgc88W81tUCEJ2VjR7Wi7guPjUozpM8FfHS/nP4uMq9xjjEYLciElzztFIVkEE8mKo9J0TcoJYNJ0bcwM8OUppLeskXiQH62/7YTRhy8Yh3b4+iTSOXC24jUMnlP11TCxLmmyrCfXGf97RpwEOu9KUKPiQlS805bdTuo/sdAVCUxzbNmKms4dzDY8QaRXP9wTUTf7lLCHT/XfbmcplXxCg== 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=W0g6jzSGPOGLKBBOcQSCJMFCOghaQ6jefRCdNcICZ9g=; b=JLgqCeTkeBEQJ7dALJmq5eOTWdfHapDEPufxRLyFXToNl4i1I/j4NmeG6F1OkNgasKSDumhUHji/cimBvZHrqsrxR36bxL6pHxwLTj1Tmp7cM/N6251Gsnc3wM7mjPduJ/gnP7vSkNIdbj0yQcR+ei48Lsg2QfAFbHZZQBnACm5NAhQw4bdZW8L+DGLrsTjBb42GjrBKRCjNUnazeBp6wEgi+kbiQKw/1R6TdBvnrP0/doDDptH+FzSNuj7lJdAZkNLcGchEgqq3hsf4Nwn2VeZ3xMfH+9bH1vkjP6e7gCu1bD0H3DUyTkgu937bbtosdR+NDZohHrDkM7pNZH/Kpg== 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=W0g6jzSGPOGLKBBOcQSCJMFCOghaQ6jefRCdNcICZ9g=; b=BwRR2dhXYb8Q00CpVIsUIEAEfVGU3enIBV3qY1i9bdLfR2ytJu/v0PxPyoCLXl+a5nL9oyOtf2TUtxUymyGPT2SBkKOw0ap5TvOqQBVYKDbtWx5SDbF8S2cL1sYh3Kh6UThC/uBsy87ulALJ7hlzltO7COO3pkrydD7FwT9mil5qetFefMKoHknvDdLtXyp9RLIlpgz4WYQPOcaTtg2Yeu5S/GF5Fqs9vD3yS4WA908MEsikI4aoNjBlPG9mDXkQpXKvsMPacsmraHneTb0MeK9K5F5qMdUE7+JejyyYrhPIoDXimu4Np09tkJW5QDKmfpEIgN3syqtT9gD4NlrLKA== 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 PA4PR04MB7614.eurprd04.prod.outlook.com (2603:10a6:102:ea::16) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.5857.20; Thu, 1 Dec 2022 09:09:28 +0000 Received: from VE1PR04MB6560.eurprd04.prod.outlook.com ([fe80::4da2:ea8b:e71e:b8d8]) by VE1PR04MB6560.eurprd04.prod.outlook.com ([fe80::4da2:ea8b:e71e:b8d8%4]) with mapi id 15.20.5857.023; Thu, 1 Dec 2022 09:09:28 +0000 Message-ID: <673753a0-ab7b-6c44-844e-3addfcf01693@suse.com> Date: Thu, 1 Dec 2022 10:09:26 +0100 User-Agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:102.0) Gecko/20100101 Thunderbird/102.5.0 Content-Language: en-US To: Binutils Cc: "H.J. Lu" From: Jan Beulich Subject: [PATCH] x86: also use D for XCHG and TEST Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 7bit X-ClientProxiedBy: FR3P281CA0105.DEUP281.PROD.OUTLOOK.COM (2603:10a6:d10:a1::6) To VE1PR04MB6560.eurprd04.prod.outlook.com (2603:10a6:803:122::25) MIME-Version: 1.0 X-MS-PublicTrafficType: Email X-MS-TrafficTypeDiagnostic: VE1PR04MB6560:EE_|PA4PR04MB7614:EE_ X-MS-Office365-Filtering-Correlation-Id: c30050a5-2058-4015-0ceb-08dad37bbfd2 X-MS-Exchange-SenderADCheck: 1 X-MS-Exchange-AntiSpam-Relay: 0 X-Microsoft-Antispam: BCL:0; X-Microsoft-Antispam-Message-Info: S8JryU2MHMlZ0o/p9qZaGEd3JGTceS2GeBCDBmcPKmwpLg69LXz4sKM6X3vFD1ORPKkEX9WI1AMJieV4MHNRLPK7fQHtp4+LZVIPqnd/Z8pQzIefXqFyE9etEHBzC21BwuVuKa5LMVq99+ahZ22tZ+3uag31wOzZFPcdY5Odi3y5MSjyPwGhH1Et66q/jVBYY28t5oiPvq8bb2CQmO4yYi8NNCJ21dFO0qwtgUt3bjALmvM/xtjnTwW7QrZtkg4Cw7ui3P7QlEhpdGr+9lQZASp3uZkDF5Q5h1ZhQuuclXZfXtm68phnPIF2UKZ7KiBpgWtP1kpKFI5CzyT7xM+wMNJqNfNga4Be26+N7mzhMfwXYL70U/BeOUsvdMs+VV9WCU3obKhBiaduJxvDjWKVq4c8xnCuGcjGqz1carERTEpm9vmttxlDzx6CIzYkUZ1BJHD+hU9OeKPE5rzMuTnitAHHTNnQT6XPy4d06yOCWcK6WQSaCIY9NStzR+w6d37nCOpEK2/U5YrJlFCZ6S3OB2XvziszZjeG5mVDHpdGwLliD3/So7kgQoRj+N95wrhrobI+yzCLFR8Ug8QAqBD6PwXkOu12tvbvS9fm3Aj04vrRkywk3653k0cP4N6mi+YijP8rBeJf6KwZJUHcR4OMFh5AgjvZ6vYHN30Rg5ZNOebBaT7Ti1fOagtSJF2CFLv2oSDLQsGU8RLlx3KXLISbSxqL43VV1qE0VGg6ghBEjwU= 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)(346002)(136003)(396003)(39860400002)(366004)(376002)(451199015)(36756003)(478600001)(2906002)(186003)(6486002)(6512007)(6506007)(38100700002)(31696002)(86362001)(83380400001)(26005)(2616005)(41300700001)(8676002)(66476007)(66556008)(31686004)(4326008)(8936002)(5660300002)(6916009)(316002)(66946007)(43740500002)(45980500001);DIR:OUT;SFP:1101; X-MS-Exchange-AntiSpam-MessageData-ChunkCount: 1 X-MS-Exchange-AntiSpam-MessageData-0: =?utf-8?B?UzIzUzUxQnRsY01NTGNKc0IwdjhvWHdhVHM5RTBIWitSUHIzUjhwZzBwRmQx?= =?utf-8?B?RzNNU04yUFNVVFpZamRscUtXbmQxSGxJQ0VKWUlHV1I4QW1UTnR2emxkVVhR?= =?utf-8?B?b0hxT3h5SGxTYTlPRWxPV3RKZ2NJRXA3eThJTklWY2NkVE5GeVFFV0VHMC9G?= =?utf-8?B?YnFyZmF0M21admZZeldFSmpyNGwrTE9yMlZ4cFM4TW5HeE44N1RLWjc4UTFX?= =?utf-8?B?RXcwSjZ2TnRNVmlZS1M5UUpha2RNZHBhMzZEcXEvcUpXbDA2MTR3Rm5HY3pk?= =?utf-8?B?OGhnQlZLTExDdlFoNzZ3cEdmQUN1VmdRYVFiNjRSdDZCalVoM042cUZMRlZX?= =?utf-8?B?SlRXaUp6YS9lSmordFViMm14SlZ0SUxzWGtBN1g5MDZJcWJQL1dKWEwvY3FW?= =?utf-8?B?NG1JKytpbXJyKytJVW1wMEdCbEV1Z3Mxbkd3V1RMcG42L25iLzZRTWUzYWFT?= =?utf-8?B?aXl3YXdianFXbnZWb2hFdUlKNFlFbUxWOFZwNnNGcDZUUDZ1RWRaZDhycEFG?= =?utf-8?B?Q29lajFCMXNDU3h5bW9mTXV0SWlMOUtuS01LN3Iya003NnYzR2UyRW9VYVpJ?= =?utf-8?B?dm1Wc0xtNncrVGtkeldUVXhzVjRpRmhmTTdiU21QZTVCcnV3U1JiU1NrTkJQ?= =?utf-8?B?ZGNPVUtTUDFRaEJ6MElsY2llNXV6Rmh6OTJhVmVpODhNNlVVbEsya2RES1pj?= =?utf-8?B?Y1pIb3dBcGxaMHdVZDJxL3hXanpBbFl0V0FNTnhjaDhQamFkMVJkRVhaT3J1?= =?utf-8?B?czBhVXdQdnRkdnQycmxacWJudnA3UWdyZ3kySzdKWkQ5dUhVNmhicC9udkxS?= =?utf-8?B?RlJYS25OQm4yOEszNVlTcy80bTNaeTErRVpLeGM4S05QMEdFQThtYXhWSGV2?= =?utf-8?B?UGlLRUk0SkJmbEZydVdncG8wVEp0QUp4R0ZQVVpJeTVRZENyeTU4Y3F0eHo3?= =?utf-8?B?aVJYT2dhWXdjSVlpTDFxbm5CRzRxcFBpTmZwL25VUDhxTW15SkE3QURwb2kx?= =?utf-8?B?cW1RaDZJRVZnclpSaDQvQWFvVHJadlA2YVg0TW5KVTJMRU9ncVdQL1k2VmNM?= =?utf-8?B?dkoxMFY5djUrU0oyMXV0ZzhRZURpWWNKZGE2MFNISDVWTlBEeW9oa0pkMVBT?= =?utf-8?B?dzJvZDVpdzgralptRGwzOHkveVJCSlFhM2RVN2lndnNCTWdIbnIxd0kwRGFa?= =?utf-8?B?WDRXTmwvVHlyRFM5bWk1MUp5SXB1c0ZlbERoOHJ2VENtZFo2VG1yNGZSY2di?= =?utf-8?B?aHNQZVNtWnROcXJUeWQ3d0Vuc1cxcFo3elBsRzhGOGRCY1Nzem0zN3Z4Z2NO?= =?utf-8?B?ODJCQllvMGVTV3A4UlpVQnpqYll1OVhkYW5GQW1weDZGWWRzNlVQbFh3L1JJ?= =?utf-8?B?UFloV1FZMnRQd3p2UzQxeHYxU1d0c3diaVJTdVdWS0hvM0tuSTFxeGdCRUEr?= =?utf-8?B?VVN1dFNlWnBoM0tELzYyNEdTSCtpd01XYXhCdGNKZER0MWNkaTB1SmlqUXFI?= =?utf-8?B?Vy80TUIvMlZCbUhydHBkU0hLVVNlWE9BTmZqMU5vNHdFZUxzcTFFLzBIL3dW?= =?utf-8?B?NGZFT21SNS9Nc0RYSXVtQm1IeVVPbTNhNlM2dVlVRFRTdU0rU21VMzh2N1pw?= =?utf-8?B?aU0vL0llV05ZZUJCdWFzdUFTRzdBdTl0QktSWjlBUW5wK2FnczNXM1hkQ25q?= =?utf-8?B?VERSbld1S1dJLy94UkFoTXE3UnlQcmx3NUNYOGFaS3EwUDJGM2ZGbTdmS2Jz?= =?utf-8?B?c0tmV04vRWxwMUxROVlyVXdlYTJOR00wZEwyWk4rV3N0b0NNclB0Q3oxUzF3?= =?utf-8?B?Snp5Rk9RbktpMThNRmVHc0pubVdBcGxwaTVUNWl5dDk4ZldUL0tiV2ZLRU1Y?= =?utf-8?B?ZVloQWJkOU5ncUR6bXAxK3phbDliVjQvN1drS1d3bFRicU5WTjcxU0NIOVR4?= =?utf-8?B?akxheklXeDRoMjNUVWxSYVQ5bkRSbGMwcWtjOHV1eE4wRFFrRUtPTUpSZ214?= =?utf-8?B?TnFTbHdJZllPcDZXT05haWo5alRVbEdLTk1FenMwSFFjTnZ0TkNuVVV2Zytn?= =?utf-8?B?N1lzY2dTeTZYWEhuSW11OFBic01NRi9BWjlDYnpNbmdoZTZWK0g4THNVQ3V0?= =?utf-8?Q?5fAyf80dBJSAoWHk8roNA+ebf?= X-OriginatorOrg: suse.com X-MS-Exchange-CrossTenant-Network-Message-Id: c30050a5-2058-4015-0ceb-08dad37bbfd2 X-MS-Exchange-CrossTenant-AuthSource: VE1PR04MB6560.eurprd04.prod.outlook.com X-MS-Exchange-CrossTenant-AuthAs: Internal X-MS-Exchange-CrossTenant-OriginalArrivalTime: 01 Dec 2022 09:09:28.0248 (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: 2amUyM3/9/WdeSCWlVzsnKy+FNW7vHF6MkKQ+wbIZBop3kYWU0Vu0NMeKAu25dJsgUep6OeYbextOcLlvRfpBw== X-MS-Exchange-Transport-CrossTenantHeadersStamped: PA4PR04MB7614 X-Spam-Status: No, score=-3029.1 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: Leverage the C (commutative) attribute to also reduce the number of XCHG and TEST templates we have. This way the reg <-> r/m (and reg <-> reg for XCHG) forms can also be folded into a single template each, utilizing D. --- a/gas/config/tc-i386.c +++ b/gas/config/tc-i386.c @@ -6803,8 +6803,10 @@ match_template (char mnem_suffix) || (t->base_opcode | 7) != 0x27)) found_reverse_match = (t->base_opcode & 0xee) != 0x6e ? Opcode_ExtD : Opcode_SIMD_IntD; - else + else if (!t->opcode_modifier.commutative) found_reverse_match = Opcode_D; + else + found_reverse_match = ~0; } else { @@ -7001,9 +7003,6 @@ match_template (char mnem_suffix) i.tm.base_opcode ^= found_reverse_match; - i.tm.operand_types[0] = operand_types[i.operands - 1]; - i.tm.operand_types[i.operands - 1] = operand_types[0]; - /* Certain SIMD insns have their load forms specified in the opcode table, and hence we need to _set_ RegMem instead of clearing it. We need to avoid setting the bit though on insns like KMOVW. */ @@ -7011,6 +7010,11 @@ match_template (char mnem_suffix) = i.tm.opcode_modifier.modrm && i.tm.opcode_modifier.d && i.tm.operands > 2U - i.tm.opcode_modifier.sse2avx && !i.tm.opcode_modifier.regmem; + + /* Fall through. */ + case ~0: + i.tm.operand_types[0] = operand_types[i.operands - 1]; + i.tm.operand_types[i.operands - 1] = operand_types[0]; break; case Opcode_VexW: --- a/opcodes/i386-opc.tbl +++ b/opcodes/i386-opc.tbl @@ -230,10 +230,8 @@ popa, 0x61, None, Cpu186|CpuNo64, Defaul // xchg commutes: we allow both operand orders. // In the 64bit code, xchg rax, rax is reused for new nop instruction. -xchg, 0x90, None, 0, CheckRegSize|No_bSuf|No_sSuf, { Reg16|Reg32|Reg64, Acc|Word|Dword|Qword } -xchg, 0x90, None, 0, CheckRegSize|No_bSuf|No_sSuf, { Acc|Word|Dword|Qword, Reg16|Reg32|Reg64 } -xchg, 0x86, None, 0, W|CheckRegSize|Modrm|No_sSuf|HLEPrefixAny, { Reg8|Reg16|Reg32|Reg64, Reg8|Reg16|Reg32|Reg64|Byte|Word|Dword|Qword|Unspecified|BaseIndex } -xchg, 0x86, None, 0, W|CheckRegSize|Modrm|No_sSuf|HLEPrefixAny, { Reg8|Reg16|Reg32|Reg64|Byte|Word|Dword|Qword|Unspecified|BaseIndex, Reg8|Reg16|Reg32|Reg64 } +xchg, 0x90, None, 0, D|C|CheckRegSize|No_bSuf|No_sSuf, { Reg16|Reg32|Reg64, Acc|Word|Dword|Qword } +xchg, 0x86, None, 0, D|W|C|CheckRegSize|Modrm|No_sSuf|HLEPrefixAny, { Reg8|Reg16|Reg32|Reg64, Reg8|Reg16|Reg32|Reg64|Unspecified|BaseIndex } // In/out from ports. in, 0xe4, None, 0, W|No_sSuf|No_qSuf, { Imm8, Acc|Byte|Word|Dword } @@ -301,8 +299,7 @@ cmp, 0x83, 7, 0, Modrm|No_bSuf|No_sSuf, cmp, 0x3c, None, 0, W|No_sSuf, { Imm8|Imm16|Imm32|Imm32S, Acc|Byte|Word|Dword|Qword } cmp, 0x80, 7, 0, W|Modrm|No_sSuf, { Imm8|Imm16|Imm32|Imm32S, Reg8|Reg16|Reg32|Reg64|Byte|Word|Dword|Qword|Unspecified|BaseIndex } -test, 0x84, None, 0, W|CheckRegSize|Modrm|No_sSuf, { Reg8|Reg16|Reg32|Reg64, Reg8|Reg16|Reg32|Reg64|Unspecified|Byte|Word|Dword|Qword|BaseIndex } -test, 0x84, None, 0, W|CheckRegSize|Modrm|No_sSuf, { Byte|Word|Dword|Qword|Unspecified|BaseIndex, Reg8|Reg16|Reg32|Reg64 } +test, 0x84, None, 0, D|W|C|CheckRegSize|Modrm|No_sSuf, { Reg8|Reg16|Reg32|Reg64, Reg8|Reg16|Reg32|Reg64|Unspecified|BaseIndex } test, 0xa8, None, 0, W|No_sSuf|Optimize, { Imm8|Imm16|Imm32|Imm32S, Acc|Byte|Word|Dword|Qword } test, 0xf6, 0, 0, W|Modrm|No_sSuf|Optimize, { Imm8|Imm16|Imm32|Imm32S, Reg8|Reg16|Reg32|Reg64|Byte|Word|Dword|Qword|Unspecified|BaseIndex }