From mboxrd@z Thu Jan 1 00:00:00 1970 Received: from PH8PR06CU001.outbound.protection.outlook.com (mail-westus3azon11012022.outbound.protection.outlook.com [40.107.209.22]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by smtp.subspace.kernel.org (Postfix) with ESMTPS id CC6F31A00F0 for ; Sat, 11 Apr 2026 04:24:34 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=fail smtp.client-ip=40.107.209.22 ARC-Seal:i=2; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1775881476; cv=fail; b=CP/vQTVN2Ha/CLWnzGxmaYR4eQSQNptlh0zb5vrIm28w9RD9rqiMk6O80AqYRyJAcRRs+ZA5BYbnEGLDWQO9CDXuAilryFbKW1zeId0NungQgCxq3qRrtudAeefzXYQBHshxeZt2K1g1fZLxrnA/qZoRroZEso+8k7Gd55XW8Ig= ARC-Message-Signature:i=2; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1775881476; c=relaxed/simple; bh=7bjesdwlKAQr3g0PIIU3vurnsOlcUTpQqY40/TMaAC4=; h=Date:From:To:Cc:Subject:Message-ID:References:Content-Type: Content-Disposition:In-Reply-To:MIME-Version; b=qIFNp0kxe+dMAwYucFm+BhG1c+S68jSeE7eZuuqUcAzmnWbChGdyYs8jZB8b0i6EV4fGKfMxhOBxMcWDnQTxwpPt2ETfjJK6WfxIsDxAZyZvrH7Kkcqmhk/OBQ8dAMGaNNwOmdzS3FyNg5n5L8dxtO2g3uUHOBOkvTfyxZLceXQ= ARC-Authentication-Results:i=2; smtp.subspace.kernel.org; dmarc=pass (p=reject dis=none) header.from=nvidia.com; spf=fail smtp.mailfrom=nvidia.com; dkim=pass (2048-bit key) header.d=Nvidia.com header.i=@Nvidia.com header.b=YRWfXLtt; arc=fail smtp.client-ip=40.107.209.22 Authentication-Results: smtp.subspace.kernel.org; dmarc=pass (p=reject dis=none) header.from=nvidia.com Authentication-Results: smtp.subspace.kernel.org; spf=fail smtp.mailfrom=nvidia.com Authentication-Results: smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=Nvidia.com header.i=@Nvidia.com header.b="YRWfXLtt" ARC-Seal: i=1; a=rsa-sha256; s=arcselector10001; d=microsoft.com; cv=none; b=xpEC3BPscFej+QJjjpEaaEw5+ogH1nlVWDkphBnmLwUmZLu2ao/y18S8FakbgibgpUUC8p1oZ+tHRDC0o684sVYOp4nwIkzcb4kzyqfNaUcKIWcwGGm+OX81dDNSKjaBjmK7tuCcr7cnBGBXNbMrlaBV0BPgrjb/BCGdRYWRSeA8BtJ0XTuKk5Zp4v95KEsxrxDpximgfhjKPJmni5ftD16W4qjZQdgz4AfDLvSmwafub/cOQeSs41k48qYsKDg0gD83RwhQ3xI5a5Tr45ko8A8PNNZkeWNk4rZwov88uizw0T+lhsJKbtWuE+Y5O98Kpu2bay+tXSdUzE5g36vgRQ== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=microsoft.com; s=arcselector10001; 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=8N9TAMb7P81pwE18k2KScATdEEy1OUWsR+uvQRImFs0=; b=mvH1s9NT3j1CvHYFedZ1gYQyxGlAsuXyAvYYpgHmaZ9iH3T0iYs5DHRNsHcAYehbC9N9oRqyaJQ6FenbxSrStyoovHVrEVCag9RO5qBJMpPXaqw3Kc/IAxtHabmgYbxASpQKLa9nFfFN032xFcDuc7LSljt7LgLdG1mH7/HrEXbFE7zW3ZWCv1HQQ6gxzrq0EaLwrdLVMw2EibULCoz2LxK9Vk1tIODdohm7SSTN7v74kLdCeE+zcTidSKFuAMCGc7HEgwHsUub9seYG6OVlb8mkdCs3xZhwMH+wSLdY61GYsy6VaEdAfUOpymDFEJO9GbQ7HSccij+ilWCxDadeUg== ARC-Authentication-Results: i=1; mx.microsoft.com 1; spf=pass smtp.mailfrom=nvidia.com; dmarc=pass action=none header.from=nvidia.com; dkim=pass header.d=nvidia.com; arc=none DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=Nvidia.com; s=selector2; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck; bh=8N9TAMb7P81pwE18k2KScATdEEy1OUWsR+uvQRImFs0=; b=YRWfXLttPwtrNwJxid6p4UCbCzKSnsB+R5/oOY9vxrtAi9G4tuCsVkwMg8aTYopomq+eV7k1r9etFlIArtqT4B3bQScDezoyVP7dDasd5qEl9yG47NDkNGHkjAy9TLWYRPAAURkCO3hcQEqsjhNL650weLiMADnuLhLModHYT4Lhzp7ftTCucyZNzaWxVmWFha8CjhGwsR7kYyciAiTpdJOivfK20OgR35XRC9MCVckzNwZM8aGEgAm7UTCwJiCe344F0A1OzLNLrEIaIJ/mk6GxxHHgIepOo8hbs/5L9vGAENFOgYnJqavu9WryH0yqm53Y/YX9tUscWPU36hnpZg== Authentication-Results: dkim=none (message not signed) header.d=none;dmarc=none action=none header.from=nvidia.com; Received: from CY8PR12MB8300.namprd12.prod.outlook.com (2603:10b6:930:7d::16) by BY5PR12MB4276.namprd12.prod.outlook.com (2603:10b6:a03:20f::13) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.9791.32; Sat, 11 Apr 2026 04:24:31 +0000 Received: from CY8PR12MB8300.namprd12.prod.outlook.com ([fe80::ce75:8187:3ac3:c5de]) by CY8PR12MB8300.namprd12.prod.outlook.com ([fe80::ce75:8187:3ac3:c5de%3]) with mapi id 15.20.9769.018; Sat, 11 Apr 2026 04:24:31 +0000 Date: Sat, 11 Apr 2026 00:24:28 -0400 From: Yury Norov To: David Laight Cc: Geert Uytterhoeven , Alexandre Belloni , Jonathan Cameron , Crt Mori , Nuno =?iso-8859-1?Q?S=E1?= , Richard Genoud , Andy Shevchenko , Yury Norov , Rasmus Villemoes , Matt Coster , open list Subject: Re: [PATCH 1/1] bitfield.h: Ensure FIELD_PREP_CONST() is constant Message-ID: References: <20260410090927.60484-1-david.laight.linux@gmail.com> <20260410194539.560b5fdc@pumpkin> Content-Type: text/plain; charset=us-ascii Content-Disposition: inline In-Reply-To: <20260410194539.560b5fdc@pumpkin> X-ClientProxiedBy: BN9P220CA0027.NAMP220.PROD.OUTLOOK.COM (2603:10b6:408:13e::32) To CY8PR12MB8300.namprd12.prod.outlook.com (2603:10b6:930:7d::16) Precedence: bulk X-Mailing-List: linux-kernel@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 X-MS-PublicTrafficType: Email X-MS-TrafficTypeDiagnostic: CY8PR12MB8300:EE_|BY5PR12MB4276:EE_ X-MS-Office365-Filtering-Correlation-Id: 24f22a12-02c5-47a1-b5d8-08de97823a67 X-MS-Exchange-SenderADCheck: 1 X-MS-Exchange-AntiSpam-Relay: 0 X-Microsoft-Antispam: BCL:0;ARA:13230040|10070799003|366016|7416014|376014|1800799024|18002099003|22082099003|56012099003; X-Microsoft-Antispam-Message-Info: dDE17NQDRHLkgMx++BssWIyqK55C0MieRkK9Z5S2oeoqsfj4V7kI4s9LMYvB4XPItSWD75W15Rh3grtFmPkHFz1BPKbzFvKA0aBh6BM24a1JUjQFx5IZr7h+2iIIO6NZgfYGFx56yaUYZVLvuSDTi/MNuqN7XFsho6R/f3dtqV4yqTawFw0VUEknfyQ0ij2DsA+AjwHc4RSVLP1XV/7OIjOSzB8fgjzk88WHHl8f4W6yrS/xdQ6VJx4dqoHrh8BSuQOWb510/sm3YDy4Pl6j5iHGF2jayB5udtTWFwKPHjVSKPbWI+gFk0T19mqB83UdBoU/uU72ad07QKVeuLJCEsTv8XW/voORDDXfLmZ8WRhQnAnAtODcp320rwX/Jv0juh0CJ8Z0MRC/lA9ex/2uegoXx+cj+/fqOvL/xpoP6uyEKHtepCs1+Fn84wLtFXRD2OdAWcmDSwCY3i4Rbh2mcNSzEhsyuN878d6N+mxamkKd4FLq2P7rPR8EFQMfjLdjbezJ1gwnAAulG1fqAOQJgoNXVJGBlfYudcc1xq4JH7tP8aWMMbfTXc7tqBoo8YmNlgkBq3y1gCW+34mG6rvEvRBAl5GawhirNySyvEDopRYGbdZkQpv6XhWUbffz3jvph8+aRAAZcNk3TSI4iHd+Tu6SfHn410F0n3cdsDI3oGSdMZSZpve136+xAEXOTAUeP/1kXbu5X5mQnwe4Tw4K3KecamIrXL9Da573aEZrMwk= X-Forefront-Antispam-Report: CIP:255.255.255.255;CTRY:;LANG:en;SCL:1;SRV:;IPV:NLI;SFV:NSPM;H:CY8PR12MB8300.namprd12.prod.outlook.com;PTR:;CAT:NONE;SFS:(13230040)(10070799003)(366016)(7416014)(376014)(1800799024)(18002099003)(22082099003)(56012099003);DIR:OUT;SFP:1101; X-MS-Exchange-AntiSpam-MessageData-ChunkCount: 1 X-MS-Exchange-AntiSpam-MessageData-0: =?us-ascii?Q?km29se0aMmkqMVl7HCpZLPvTWxO1yLKlcP4iASJInJ4b7ACefaaE1cIruM+1?= =?us-ascii?Q?mVK7VJ205/5Qmt8QE/akI3i7G8rfhyVLiDVcPuJchduZD6gpnE9FRnyG871f?= =?us-ascii?Q?wHB4AMAMZCokIy0/RbRnKZ1kb3ogi82w7qjfozHWvqz1zKXUm2HOH3I+OpZy?= =?us-ascii?Q?jYtkkC7JJUhpyBTXWEN8wydLigTHgfHi90T5ZC/27Fq3HSzC9O7+ZjhAnXCx?= =?us-ascii?Q?NMJ92/xuE6FkGWDSw6GFcP0wRv9biBt3Aq/7ToFf0fyW8SNgooCD/TuTsDUk?= =?us-ascii?Q?zTpq1DxNjjvJ4qD23DiR6H6JMbUnMrBI9gKz++eiehTjXmu9RH+tfEHUNpya?= =?us-ascii?Q?MAkPPSf2qTdh/FtwqmX6fNNpA4RR8ffEiE1+hOUapsDeSi+90FTcMyeeYv+J?= =?us-ascii?Q?z5T4024SF9K356RqHbWBE9qNMfXtQmv8+Y80mJyZ5SzWBFL8edLm09YEyIxG?= =?us-ascii?Q?3cR3BhBZsY811RWYxmXG9OU459zW08xIRep5PId0zZ+cVd73qwDX3UVT+sHF?= =?us-ascii?Q?t17h6SPqkVkIfTSIGlAhwhyaTOVfx+kgOFsJ1Hes0T2URq1IpaM3ZUobgzA6?= =?us-ascii?Q?It5P9b4qJvAvgQ2xr90zh7TY99SGKIMw6JJNcln/fFZS2oURpZmSTV+09Ayx?= =?us-ascii?Q?zYeiXpZ6eVfb/O2fEl0CNz+OL8S5rGHiuv7DmdlVi3TIgNq3VlhIgDMpXdt5?= =?us-ascii?Q?RlW3zqivZLQrAGsMaJUx8nO97YdMij0ajSdot33//1M9ll+wDwEPHb9Efm5F?= =?us-ascii?Q?NWdFvd9JiiMpgrdJmblNaQVqZQcD/m3uQxocrMQpGvv8ttA1Unr+LlC8zBd0?= =?us-ascii?Q?1s1fbjvsdE5gpuQai5ybaVOF66xjvneRXOLFVpEHSn6xhgIyO/Sr63b5fNV8?= =?us-ascii?Q?UCmIDrbzq/ZuOVkitq46Irn0mNuz6gwZdn8ioXNIakTcSeFwqC0fm1oRpZeb?= =?us-ascii?Q?jyDQFuiTldMQ6sMhQjDZut9/vruQsKXO+KQ3nzg0b8fiGeAhFMmAuk1mK97M?= =?us-ascii?Q?rPSHZ2QkttoJCnNHA4xR+pec135zqHZ6ELmGwdqH/4tWHHo6N35wZ6FpEIdD?= =?us-ascii?Q?5jKiXkPXvGNP5k7WgayauKwVzsh1sh/jNeqbilea4MPyc+hFaeyLRoOkYGVN?= =?us-ascii?Q?mFDcP/iTVkQlUSW2ZbKY54PBzKOMxam1XQPuUhmvrwml3DQtNjGsnlWqbjAB?= =?us-ascii?Q?/z0T5z0ghLEHmRzdREVJMjswTMbZztcrhMh8oWuJR4COHqH6rmFtgf61pqF0?= =?us-ascii?Q?DfeDT0znUpDUryKgnBcksI8NQdEtsuBmDiVXqVRZ3o2GYcTq598N7wac4AKq?= =?us-ascii?Q?ihzeK/oluC69MK+Tri+TK7QNkm11sp1qh/Hk/PkYe3Ca8VIbtvEz5aErOJZO?= =?us-ascii?Q?109U2yLal00eab6f1LJDUUY4Es0PkgWPD7WsKZHc0XALg8rbqYXpex+bLatk?= =?us-ascii?Q?9U4L1ddTEOV2WuOnu1eNXznKqJeWeHrwLZrRFJ8QA97VEGmrCpsfIBORsoNj?= =?us-ascii?Q?jpqqtw4wF8aoIXF5da8bLAGGbO6kjQnQGtaqtXTvGYWA1+Jh/CRAMjwEdtqW?= =?us-ascii?Q?a4frUpXFmrmg0OT+CpL0mXraN1WIsswkEfqm++7wqNI90Yg0XXbz3lSvpXWG?= =?us-ascii?Q?g9zo2X8mDQhvMZlAv5X6VBdtkWel9tPVBshBMGDCwif28qbjU6Sg+I8vZ0Ol?= =?us-ascii?Q?QMLYvz59vne99ZZZgvuq+fa4MPo663IAm1cvDd6GTe2yWgg14LekAZeQIt2S?= =?us-ascii?Q?YLbCHv0eI2Hp/uXWIx62pNvs5UrQ0trsjjmbvBXo2LRDWyLVmsfF?= X-OriginatorOrg: Nvidia.com X-MS-Exchange-CrossTenant-Network-Message-Id: 24f22a12-02c5-47a1-b5d8-08de97823a67 X-MS-Exchange-CrossTenant-AuthSource: CY8PR12MB8300.namprd12.prod.outlook.com X-MS-Exchange-CrossTenant-AuthAs: Internal X-MS-Exchange-CrossTenant-OriginalArrivalTime: 11 Apr 2026 04:24:31.6761 (UTC) X-MS-Exchange-CrossTenant-FromEntityHeader: Hosted X-MS-Exchange-CrossTenant-Id: 43083d15-7273-40c1-b7db-39efd9ccc17a X-MS-Exchange-CrossTenant-MailboxType: HOSTED X-MS-Exchange-CrossTenant-UserPrincipalName: WPgj17U6haijbpPFvogT3qDZia9wZkDnZuK33XJe93O+qxSbNWxlTmefLUs0ZBhdt6dctZsqMVrvfzGzrLzpPw== X-MS-Exchange-Transport-CrossTenantHeadersStamped: BY5PR12MB4276 On Fri, Apr 10, 2026 at 07:45:38PM +0100, David Laight wrote: > On Fri, 10 Apr 2026 12:55:25 -0400 > Yury Norov wrote: ... > > > Note that when 'val' is a variable 'val << constant' is likely > > > to execute faster than 'val * (1 << constant)'. > > > So the normal FIELD_PREP() is best left alone. > > > > Do you have any numbers? I'd prefer to have the codebase consistent > > when possible. > > I think the multiply instruction will have a higher latency than the shift. > So you are talking about a very small number of clocks if the expression > is in the critical register dependency path. > However FIELD_GET() would need to use a divide - and that would be a lot > worse. > > Having written that, ISTR that 'mask' is required to be a constant. > So the compiler may use a shift anyway - if the divide is unsigned. > But for non-constant mask you definitely want a 'shift right'. Non-constant masks are handled with __field_get(), which doesn't use __bf_shf(). > While you might think that it only makes sense to use unsigned values, > I've found one piece of code (IIRC in the x86 fault handler) that > passes a signed value to FIELD_GET() and needs the result sign extended. > So, unless that is changed, FIELD_GET() must use an explicit right shift. > (Of course, right shift of negative values is probably UB...) FIELD_GET() is quite fine with the change: #define __FIELD_GET(mask, reg, pfx) \ ({ \ __BF_FIELD_CHECK_MASK(mask, 0U, pfx); \ - (typeof(mask))(((reg) & (mask)) >> __bf_shf(mask)); \ + (typeof(mask))(((reg) & (mask)) / __bf_low_bit(mask)); \ }) void my_test(void) { f3 0f 1e fa endbr64 48 83 ec 08 sub $0x8,%rsp volatile int i = -1; pr_err("%lx\n", FIELD_GET(GENMASK(10,5), i)); 48 c7 c7 13 e3 51 82 mov $0xffffffff8251e313,%rdi volatile int i = -1; c7 44 24 04 ff ff ff movl $0xffffffff,0x4(%rsp) ff pr_err("%lx\n", FIELD_GET(GENMASK(10,5), i)); 8b 74 24 04 mov 0x4(%rsp),%esi } 48 83 c4 08 add $0x8,%rsp pr_err("%lx\n", FIELD_GET(GENMASK(10,5), i)); 81 e6 e0 07 00 00 and $0x7e0,%esi 48 c1 ee 05 shr $0x5,%rsi e9 32 aa b9 ff jmp <_printk> Thanks, Yury