From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: from EUR04-VI1-obe.outbound.protection.outlook.com (mail-vi1eur04on2059.outbound.protection.outlook.com [40.107.8.59]) by sourceware.org (Postfix) with ESMTPS id 743103858291 for ; Thu, 26 Oct 2023 09:25:06 +0000 (GMT) DMARC-Filter: OpenDMARC Filter v1.4.2 sourceware.org 743103858291 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-Filter: OpenARC Filter v1.0.0 sourceware.org 743103858291 Authentication-Results: server2.sourceware.org; arc=pass smtp.remote-ip=40.107.8.59 ARC-Seal: i=2; a=rsa-sha256; d=sourceware.org; s=key; t=1698312308; cv=pass; b=adAofC4d1EAoiyV1uVAioVDDKgZor4L3v4e7ak9Llo8US0Yk8X8kotha0oBCu7ohl1wWkJKnmgjK+5ZMlWYLGlz6MDkd+Ps2tv0b6hzFXYi+fbHlBAZh9H7BvhQOqfoFSOlX80z2/bo3vwxsHwIdK/BDZFD4klQmIOAsyz7MeKg= ARC-Message-Signature: i=2; a=rsa-sha256; d=sourceware.org; s=key; t=1698312308; c=relaxed/simple; bh=8m9Qvn6rcccuUYsnkX7BgBs9tgm94hmStfDsY6apK+I=; h=DKIM-Signature:Message-ID:Date:Subject:To:From:MIME-Version; b=By0RDN8LHkE6sKkFaHaPQ8jP1FqAauCqiSrVJ7bl278+Qx+0dpd+qvrSxU3/NTFmc+KLC92rALoq65UR1i3LvwDJhhEjOk0o5G57DA69jcHO0H62ZMj6nuU+m65LF3Ez71Kh0ne/4EUG/wQMetjoE2gbq3ZFVPqw4pK5viQByh8= ARC-Authentication-Results: i=2; server2.sourceware.org ARC-Seal: i=1; a=rsa-sha256; s=arcselector9901; d=microsoft.com; cv=none; b=M8d1HYFsBwdsSzqtKCkfCWdbJleK3WUxA1H3nzD/zVbrSnQTr/NDOIliQDV4GUdCOTpZWjkMoB3oZzCWGKxmzRHSqUkFV17R45n1iPprom0EmDD+aNUkl0+y3iywYA8+ZnpUn9Y1m1iloNuBvy/q2EnTaT0faeEeflOBkNQw6tVMM491r6FQW7NtgtCvJMAv/QjS1bWFAh/AVeOXQR2Vtym1kkAF8H4GGJGICd8bCnTDm0J1sWdoQivVS7c1QQdy2oM+OZH2qs3A2oo6NyNV5boxC6tsLADjDtKK2vUpr7OnhW8gntuTd9TXnGk6vtRwd2aeNruxrbK8KclfCkGv8w== 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=TBJHkhTJtaplBiVS2nzyRtO6I162romBxbZtWMwIhAw=; b=m8kFwGPr2jNJQ0ccrmrFaTzhwwGN5rVj9D/tMYkVzS877Rej9ni6OkZ2N8QV8pAP0PXIGLYkZvmXaRrRQkHG7vPerQVzs/qlbyQUkE18Z7kddohh+uKUVJ4i+eMyv5Px6G8IPnGSHkU3DV3b/U4q//uCDHVKLXL7TlCtZ0MwyyznkITBFcUCivL8ZpqF9LIIMXZsk8qMMB6vsu/Wur9dMD/KbJVieWJbukV3fJ8S+KL3LCqTlpKyiYHKURAMOOvRl7KE/g/XSFAmmZ+FNwMA+37Z2WHNa3k3Bsn/CgojeGfiKsyCp9An52JcZ7g6F5/dmCg4PrFrxK4YonhBOl4l7w== 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=TBJHkhTJtaplBiVS2nzyRtO6I162romBxbZtWMwIhAw=; b=Szgld958eKJ3PM4rJ0CZxtUoAJ6r9ywg50BfDSJXnnvbtei1/6I80bI17ra+X20z2TChSlgkpMpwKB+bFEqvR4B58VzinrH98YX5WdMyLtVVHbKJnNt8UCFln7NKAU42WPZRB6Sjvhv0eIqLm53yCGC8Iab6ACP7Khn2RcXUnhOItv1nDDNmCSEazkxUG7FkaxI3qD2+rfcTVEzC4kcrZN2KkvB69jkDWES35S+ZaxS9OGrzM3GzUrAGwW7Lzf2+5EY1CWr4opHcDAexb5DvQ8nsrFZHprCU9E0kOFZJ7pKsLNs8SIwIuEquBzF+7fi+GQc3aayHjsm1Sty8OKfDZA== Authentication-Results: dkim=none (message not signed) header.d=none;dmarc=none action=none header.from=suse.com; Received: from DU2PR04MB8790.eurprd04.prod.outlook.com (2603:10a6:10:2e1::23) by PR3PR04MB7210.eurprd04.prod.outlook.com (2603:10a6:102:8f::13) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.6933.16; Thu, 26 Oct 2023 09:25:03 +0000 Received: from DU2PR04MB8790.eurprd04.prod.outlook.com ([fe80::d924:b650:a2ad:7b25]) by DU2PR04MB8790.eurprd04.prod.outlook.com ([fe80::d924:b650:a2ad:7b25%3]) with mapi id 15.20.6954.008; Thu, 26 Oct 2023 09:25:03 +0000 Message-ID: <2b4a78d3-a4e1-9fc3-c143-63bef46b276d@suse.com> Date: Thu, 26 Oct 2023 11:25:01 +0200 User-Agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:102.0) Gecko/20100101 Thunderbird/102.15.1 Subject: Re: [PATCH][v4] Support Intel USER_MSR Content-Language: en-US To: "Hu, Lin1" Cc: "Lu, Hongjiu" , "binutils@sourceware.org" References: <8a91a57b-9cd7-7541-557a-82c30a3debfc@suse.com> <20231026062158.3054598-1-lin1.hu@intel.com> <689f0001-ba13-cdf3-b644-f21835a83c82@suse.com> From: Jan Beulich In-Reply-To: Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit X-ClientProxiedBy: FR0P281CA0157.DEUP281.PROD.OUTLOOK.COM (2603:10a6:d10:b3::20) To DU2PR04MB8790.eurprd04.prod.outlook.com (2603:10a6:10:2e1::23) MIME-Version: 1.0 X-MS-PublicTrafficType: Email X-MS-TrafficTypeDiagnostic: DU2PR04MB8790:EE_|PR3PR04MB7210:EE_ X-MS-Office365-Filtering-Correlation-Id: 2ebf736c-1bef-482e-e8d8-08dbd6056f75 X-MS-Exchange-SenderADCheck: 1 X-MS-Exchange-AntiSpam-Relay: 0 X-Microsoft-Antispam: BCL:0; X-Microsoft-Antispam-Message-Info: i0rhOCgoVqxd/tIk4SQmBAC/9lbIKgAAassQ5e3MkAcPxbCF06nAR50k1Cbyd6roez6p3z/fSdrV1FzxC59zPK3d4oEBfVADeJQaaz3jN+Ads1MFREKK5A6SBhZUIMKn2/P6A6LOFE+Xwno5KxdCt8p29TLhgpnJ7yS6BCXK368csZeip9MAKnb8Y9a/AmZabu0i14Z0GKwS4F/nhd39dldGEMUJyrN5Skbhw4vCXq7MpGADazQzYNgaKI3PUobzeYG7YI2DibDayMD1sGiooIf8QFymW45FLigjWOEckshTNnbEVVAr3yKQRSaokut+RZEdS8+vBRIzjfQjXPPPkdj9xBtXXxGQhFQHopjMRLgP56ifK12DAbTs07Da8rJ2o82+t1vMjPsUNzGU/HXWpPYvAVoIUgurj90sjz1IweIqkSRHvCCbxaOaFDmTIMNTwNswzVWN+g5qjWU9I7BCw/K/CI5Sfci224HTl1GIsl1nZHCNuw9bw1HIJdep5xdIJSeezgeS6bOLJ3nuiAqLxhvHQdK62Bp8agCMhA2QI2/u4DqgLp2ULT9O3kcytdXcOg5RPJLQpqbCtG3+y+lOuQrQ7GKoM9op2Ayo0b2XJcYpFl21DtpRyWPei8WzaQMeJk190E0z0N9zkLhJ6Uvo1A== X-Forefront-Antispam-Report: CIP:255.255.255.255;CTRY:;LANG:en;SCL:1;SRV:;IPV:NLI;SFV:NSPM;H:DU2PR04MB8790.eurprd04.prod.outlook.com;PTR:;CAT:NONE;SFS:(13230031)(39860400002)(136003)(346002)(366004)(376002)(396003)(230922051799003)(64100799003)(451199024)(186009)(1800799009)(83380400001)(66899024)(36756003)(26005)(38100700002)(8676002)(6512007)(41300700001)(6916009)(66946007)(54906003)(8936002)(53546011)(316002)(66476007)(66556008)(6486002)(5660300002)(4326008)(31686004)(478600001)(6506007)(2906002)(86362001)(31696002)(2616005)(45980500001)(43740500002);DIR:OUT;SFP:1101; X-MS-Exchange-AntiSpam-MessageData-ChunkCount: 1 X-MS-Exchange-AntiSpam-MessageData-0: =?utf-8?B?Vmg1S1F3TGZIVFdhT1Fuck1tRUhOOHllRmNvcVFHVDJneVZFSkt4TmhVRmxZ?= =?utf-8?B?aFBJLzc3Si83b3htUGk4WFUrdUxLRHdSRlJhcUNkUkN0N2hpMFhZNTBuTjZU?= =?utf-8?B?QzJ5WjFOWW9ITlhiNy9naHozcFpTZ0hTOTZZNEk3bzNHSTNITVdIdlNqMUoz?= =?utf-8?B?dVFySTJNTk8yM3hIdER6M0pNZDVnUU9FSE9VbXdOY3FuN2xJMHVxTzZOVmdG?= =?utf-8?B?dlc0UGpxVG1mMGpZb21sQW1rRTFWWmQzRXRiZ3NMNXJGdnlERlhBVGZMNUwy?= =?utf-8?B?SzR3RE5TaHJnN1dvUVRTTlVscEtnR04xKzBCalFZQmo5aFZmUXdrTElST05a?= =?utf-8?B?bko2TGhodWVtMjhLZ1Yrc3hPczRvR0NwY2JhcmNlRVN1bHFDWXpvRCtMZUlr?= =?utf-8?B?Lzd1RU5ueXQxcnBXS1hjQ2hBWno5SHN3QzRSeVUzdlk5OEN5NzkzN3VBSUpM?= =?utf-8?B?TEVva3hRSlRIbWV6UmNsTG12V1k5bUpkR243Uk9SSE5ucjFFeE80b0tDMi85?= =?utf-8?B?Yk5oK3NjUUZuSk1Cc1NmdEExZEJlU2FKbHVJQkl5ZkFHTU9nNDhUOVI3Yjcz?= =?utf-8?B?UXVkdktQWTBxSlBmZ3RveTRldHF5SnM2ZUcvVGp3bm5KcXhwL1FDcXZFQmRp?= =?utf-8?B?Uno5dmp2SjRHS1dXNnJ2MWd1ZUkxNlI2dzBzcmdaM3lWejQ0QzgzcFRPT2U5?= =?utf-8?B?RS9Td0FTMm1yVXExS2xETTA0TTdQcWd0Y2NlM1h1c1RJUU9qYWhLY0UzL1Rr?= =?utf-8?B?eEFSdXhwSlFEN2ZDSXNhQ1NBL2J4Z2ViajN4MENMV3RxSWx4TEpCU2g3N2s3?= =?utf-8?B?M3didlB6Z0dERFpDRUVkd0RXcWF1VS9OenUwSWdZa1UvemFYakFnb2VHUkxK?= =?utf-8?B?a3RvQVU5eXBSMGppaUxaQVVwWkVtUkdhOGdtTHZtU0VBb2tsTDF5MWZYUGlV?= =?utf-8?B?T1E0OVpvRC9Lck96dWNuVXQrZU5nd29KMHIwckxpL3M0UFZ0VVZHK0RyajR2?= =?utf-8?B?SVpRcGhDUE4wYmdvZTkrMy9YVEg1RSs1REJXSlN6ekU4K2tvMi9jRWE4d0h0?= =?utf-8?B?SnZLS0RCeVdOQ2I1MUU5cmZlYlk4NEJWZzBSMk1yMkptdG5YSUJnZFlrZkxP?= =?utf-8?B?YnRlRFFIWHhzdzA5c2lSSWFFWjkwdDYrMGlHdHB6eFBUVzN4V0M0NGlBaFpa?= =?utf-8?B?S2Vqby91d3R3SGt6bHIrbzB5Z2psbCtzU29oOTNhc2dYM0hjemxwUmNlTkNj?= =?utf-8?B?QThVZXRvbkxtVDArVXkwTWNQYWxwYkI5R0dwa3NteGRVOHdUWWVmaDc0ZjFE?= =?utf-8?B?cE44czZpa3ZiNmtyb3NwQmVSZkZXS1hwbU4zS0k2cTJqTlJCclpmMStBMldF?= =?utf-8?B?SkRSS1RZem05NEUyUE9mejMxYXR6QVYwQk9pYTJLR3hvVEx0MTVhZ3ZKN2dq?= =?utf-8?B?RFY4elB0d0Nha3ljdzU4ZVJCT2xPSGdJL0xKbll2d01QZEowZng5Y29HYTd1?= =?utf-8?B?RHN2SGZNZmNSeVZwOUU5NTJqeTd5NXh4M2N6QmhoRFF6ZUZtSGJHOXFWSTBp?= =?utf-8?B?WURzZlA0UEw0cklLdDBTeHlHRU1NVFhNWHkzbXB6dWlHQjJZM3NTSFNKTisy?= =?utf-8?B?ZVZMcGh0SXczdUtPZ1hlYjltZmI2RTJLNm4yTGVNczB0YUM5aWVydGNhdGNt?= =?utf-8?B?eWZNMWg1RUJTL0dWTGRNM0o0dk91ajIxVlBCWGRpeFBPQzFJZklDVHJmUXJG?= =?utf-8?B?Tlh5T3U1RXRuRE1NT2o3bUY2Mlc5eWNHNmwvMnlKbjl5ZnhzUlA1SzM5dkhO?= =?utf-8?B?dDZ3UHRmeUZwQW5yT2NvYmhycjI3U0FnTkNLdVV1VE1uTDhOVFZ3VVFlYW42?= =?utf-8?B?ZXYvQWhBUGhuS2dUcTVoVWcyaHV6QkRWb1U0ZUtOTytHRVJiYmwwSmF3MzBF?= =?utf-8?B?TnpSbjNSNzU5NHorMFZwenhPZWZtL0UyOHk0MUY2ZXB1RlZtR1J5UEpEQWcy?= =?utf-8?B?eUpsVGUrOG5JQkcrS0hsd2tsUXkwekM3VTRQeDNoOFk5aDFUdlN5U2xxT3RH?= =?utf-8?B?UGh6WjBid2w5cnRsVEhhNlBtRFk0enRNYzBiVFhVZHlRMkZ2YWI0NCsvRVpE?= =?utf-8?Q?4M4j9F1dRJz4Wb5TDM7pZJaei?= X-OriginatorOrg: suse.com X-MS-Exchange-CrossTenant-Network-Message-Id: 2ebf736c-1bef-482e-e8d8-08dbd6056f75 X-MS-Exchange-CrossTenant-AuthSource: DU2PR04MB8790.eurprd04.prod.outlook.com X-MS-Exchange-CrossTenant-AuthAs: Internal X-MS-Exchange-CrossTenant-OriginalArrivalTime: 26 Oct 2023 09:25:03.7594 (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: hV7eTmjmw4PugqxP5LNI1DGMz0D7KaP5g0qt5fWY+LSK1jYSrCN8QsF4GFQJNU5Al7ZLHaydwX56qx0bBN4ixg== X-MS-Exchange-Transport-CrossTenantHeadersStamped: PR3PR04MB7210 X-Spam-Status: No, score=-3028.4 required=5.0 tests=BAYES_00,DKIM_SIGNED,DKIM_VALID,DKIM_VALID_AU,DKIM_VALID_EF,NICE_REPLY_A,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: On 26.10.2023 11:08, Hu, Lin1 wrote: >> -----Original Message----- >> From: Jan Beulich >> Sent: Thursday, October 26, 2023 4:31 PM >> >> On 26.10.2023 08:21, Hu, Lin1 wrote: >>> @@ -2504,7 +2505,8 @@ smallest_imm_type (offsetT num) >>> t.bitfield.imm8 = 1; >>> t.bitfield.imm8s = 1; >>> t.bitfield.imm16 = 1; >>> - t.bitfield.imm32 = 1; >>> + if (fits_in_unsigned_long (num)) >>> + t.bitfield.imm32 = 1; >>> t.bitfield.imm32s = 1; >>> } >> >> I fear this isn't correct for 32-bit code, where all immediates are deemed fitting >> in both 32-bit signed and unsigned. Otoh you surely ran the testsuite, and I >> would have expected mistakes here to be covered by at least one testcase. >> > > OK, so we might need special handling in places for cases where the operand of a USER_MSR instruction is negative, do you have a suggestion for where this should be handled, after match_template()? > > PS. This part of change is for raise error when user input urdmsr $-1, %r14. Hmm, I realize even when avoiding optimize_imm() you still need to have smallest_imm_type() capable of dealing with the case. That's fine, the logic shouldn't be put elsewhere (which would only make things yet less manageable). But outside of 64-bit code I think you want to set .imm32 without consulting fits_in_unsigned_long(). >>> @@ -6358,8 +6374,11 @@ optimize_imm (void) >>> smallest_imm_type (i.op[op].imms- >>> X_add_number)); >>> >>> /* We must avoid matching of Imm32 templates when 64bit >>> - only immediate is available. */ >>> - if (guess_suffix == QWORD_MNEM_SUFFIX) >>> + only immediate is available. user_msr instructions can >>> + match Imm32 templates when guess_suffix == >> QWORD_MNEM_SUFFIX. >>> + */ >>> + if (guess_suffix == QWORD_MNEM_SUFFIX >>> + && !is_cpu(current_templates->start, CpuUSER_MSR)) >>> i.types[op].bitfield.imm32 = 0; >>> break; >> >> Taking together the changes you make to smallest_imm_type() and the change >> you make here, I guess - to come back to an earlier comment of yours - it would >> be less risky if these changes were omitted and the new insns instead bypassed >> optimize_imm(), as suggested before as an alternative. > > For solve the problem of Imm32, I just need theses change without smallest_imm_type(). > > I want to make sure I'm not misunderstanding. For solving the Imm32 problem, do you mean you prefer > > if (i.imm_operands) > { > if (is_cpu(current_templates->start, CpuUSER_MSR)) > { > for (op == i.operands; --op >= 0;) > { > if (operand_type_check (i.types[op], imm)) > { > i.types[op] = operand_type_or (i.types[op], > smallest_imm_type (i.op[op].imms->X_add_number)); > } > } > } > else > optimize_imm(); > } > > This part of the code is currently just a prototype. Along these lines (and with a suitable comment), yes. I'm not sure, btw, whether you really need operand_type_or(); I seems to me that you could assign the return value directly to i.types[op]. But I may be overlooking some particular case ... >>> --- /dev/null >>> +++ b/gas/testsuite/gas/i386/x86-64-user_msr-inval.s >>> @@ -0,0 +1,11 @@ >>> +# Check Illegal 64bit USER_MSR instructions >>> + >>> + .allow_index_reg >> >> Yet another instance of this when it's not needed? >> > > Since it looked to me like they were denied for the same reason, I'll add them。 Why do you say "add" here, ... >>> --- /dev/null >>> +++ b/gas/testsuite/gas/i386/x86-64-user_msr.s >>> @@ -0,0 +1,43 @@ >>> +# Check 64bit USER_MSR instructions >>> + >>> + .allow_index_reg >> >> Iirc I did ask to remove this, for being meaningless here. Please uniformly >> remove this from all the new tests introduced here. >> > > OK, I have removed them. ... when here you say you removed them? Jan