[{"id":3678852,"web_url":"http://patchwork.ozlabs.org/comment/3678852/","msgid":"<aeJ4DmKB6p6klrqB@ashevche-desk.local>","list_archive_url":null,"date":"2026-04-17T18:12:30","subject":"Re: [PATCH 1/9] bitfield: add FIELD_GET_SIGNED()","submitter":{"id":46495,"url":"http://patchwork.ozlabs.org/api/people/46495/","name":"Andy Shevchenko","email":"andriy.shevchenko@intel.com"},"content":"On Fri, Apr 17, 2026 at 01:36:12PM -0400, Yury Norov wrote:\n> The bitfields are designed in assumption that fields contain unsigned\n> integer values, thus extracting the values from the field implies\n> zero-extending.\n> \n> Some drivers need to sign-extend their fields, and currently do it like:\n> \n> \tdc_re += sign_extend32(FIELD_GET(0xfff000, tmp), 11);\n> \tdc_im += sign_extend32(FIELD_GET(0xfff, tmp), 11);\n> \n> It's error-prone because it relies on user to provide the correct\n> index of the most significant bit and proper 32 vs 64 function flavor.\n> \n> Thus, introduce a FIELD_GET_SIGNED() macro, which is the more\n> convenient and compiles (on x86_64) to just a couple instructions:\n> shl and sar.\n\n...\n\n> +#define FIELD_GET_SIGNED(mask, reg)\t\t\t\t\t\\\n> +\t({\t\t\t\t\t\t\t\t\\\n> +\t\t__BF_FIELD_CHECK(mask, reg, 0U, \"FIELD_GET_SIGNED: \");\t\\\n\n> +\t\t ((__signed_scalar_typeof(mask))((long long)(reg) <<\t\\\n> +\t\t __builtin_clzll(mask) >> (__builtin_clzll(mask) +\t\\\n> +\t\t\t\t\t\t__builtin_ctzll(mask))));\\\n\nI would re-indent these lines as\n\t\t ((__signed_scalar_typeof(mask))\n\t\t  ((long long)(reg) << __builtin_clzll(mask) >>\t\t\\\n\t\t   (__builtin_clzll(mask) + __builtin_ctzll(mask))));\t\\\n> +\t})","headers":{"Return-Path":"\n <linux-rtc+bounces-6369-incoming=patchwork.ozlabs.org@vger.kernel.org>","X-Original-To":["incoming@patchwork.ozlabs.org","linux-rtc@vger.kernel.org"],"Delivered-To":"patchwork-incoming@legolas.ozlabs.org","Authentication-Results":["legolas.ozlabs.org;\n\tdkim=pass (2048-bit key;\n unprotected) header.d=intel.com header.i=@intel.com header.a=rsa-sha256\n header.s=Intel header.b=TEGgjt09;\n\tdkim-atps=neutral","legolas.ozlabs.org;\n spf=pass (sender SPF authorized) smtp.mailfrom=vger.kernel.org\n (client-ip=2600:3c0a:e001:db::12fc:5321; helo=sea.lore.kernel.org;\n envelope-from=linux-rtc+bounces-6369-incoming=patchwork.ozlabs.org@vger.kernel.org;\n receiver=patchwork.ozlabs.org)","smtp.subspace.kernel.org;\n\tdkim=pass (2048-bit key) header.d=intel.com header.i=@intel.com\n header.b=\"TEGgjt09\"","smtp.subspace.kernel.org;\n arc=none smtp.client-ip=192.198.163.9","smtp.subspace.kernel.org;\n dmarc=pass (p=none dis=none) header.from=intel.com","smtp.subspace.kernel.org;\n spf=pass smtp.mailfrom=intel.com"],"Received":["from sea.lore.kernel.org (sea.lore.kernel.org\n [IPv6:2600:3c0a:e001:db::12fc:5321])\n\t(using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits)\n\t key-exchange x25519)\n\t(No client certificate requested)\n\tby legolas.ozlabs.org (Postfix) with ESMTPS id 4fy31s65krz1yCv\n\tfor <incoming@patchwork.ozlabs.org>; Sat, 18 Apr 2026 04:14:41 +1000 (AEST)","from smtp.subspace.kernel.org (conduit.subspace.kernel.org\n [100.90.174.1])\n\tby sea.lore.kernel.org (Postfix) with ESMTP id BD5193010D8E\n\tfor <incoming@patchwork.ozlabs.org>; Fri, 17 Apr 2026 18:13:05 +0000 (UTC)","from localhost.localdomain (localhost.localdomain [127.0.0.1])\n\tby smtp.subspace.kernel.org (Postfix) with ESMTP id 9736F3C1994;\n\tFri, 17 Apr 2026 18:13:04 +0000 (UTC)","from mgamail.intel.com (mgamail.intel.com [192.198.163.9])\n\t(using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits))\n\t(No client certificate requested)\n\tby smtp.subspace.kernel.org (Postfix) with ESMTPS id 7943A34EF03;\n\tFri, 17 Apr 2026 18:12:43 +0000 (UTC)","from fmviesa007.fm.intel.com ([10.60.135.147])\n  by fmvoesa103.fm.intel.com with ESMTP/TLS/ECDHE-RSA-AES256-GCM-SHA384;\n 17 Apr 2026 11:12:39 -0700","from hrotuna-mobl2.ger.corp.intel.com (HELO localhost)\n ([10.245.245.78])\n  by fmviesa007-auth.fm.intel.com with ESMTP/TLS/ECDHE-RSA-AES256-GCM-SHA384;\n 17 Apr 2026 11:12:32 -0700"],"ARC-Seal":"i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116;\n\tt=1776449581; cv=none;\n b=hGUPbbn2jRC65/WhoX8WTmhRJ6rvpqgAqgKEIEH9R7hFHhMSDe4On5LQjhi2c4Dnr5dq/N4yi4uH65HHBscFM3y/S6ZoZysxsnJuW3R4E5BBbCzzUGJzIr1jrKeGfzzN/mJ7zeAv+MWth+6cD7GYd43Xp1KjxHFj3z5TQvXLz84=","ARC-Message-Signature":"i=1; a=rsa-sha256; d=subspace.kernel.org;\n\ts=arc-20240116; t=1776449581; c=relaxed/simple;\n\tbh=CddpyCtlyuj5f3NsZSk8oHQUml9Tggv7gYSrOfGEKoY=;\n\th=Date:From:To:Cc:Subject:Message-ID:References:MIME-Version:\n\t Content-Type:Content-Disposition:In-Reply-To;\n b=LhqatMc5ux1Pm/OLKg1mkKZP6Ggp+lmB8xacWpmy0dDjHZIDI+n79T9LvjAdfwYQgHoNYoGM0zIfKQX5jNcXmJjWDPBi+hCXbEBLNgNFaP0Zo7VfXl5E4px0Hy1IJcy8k/m8mgAX9jDkZQiwVakIx2vnODj67Hvyk/8LotBTLjM=","ARC-Authentication-Results":"i=1; smtp.subspace.kernel.org;\n dmarc=pass (p=none dis=none) header.from=intel.com;\n spf=pass smtp.mailfrom=intel.com;\n dkim=pass (2048-bit key) header.d=intel.com header.i=@intel.com\n header.b=TEGgjt09; arc=none smtp.client-ip=192.198.163.9","DKIM-Signature":"v=1; a=rsa-sha256; c=relaxed/simple;\n  d=intel.com; i=@intel.com; q=dns/txt; s=Intel;\n  t=1776449566; x=1807985566;\n  h=date:from:to:cc:subject:message-id:references:\n   mime-version:in-reply-to;\n  bh=CddpyCtlyuj5f3NsZSk8oHQUml9Tggv7gYSrOfGEKoY=;\n  b=TEGgjt097O+rjqDKuSQ1N1DbyegAb+m3xI3P9Piz4e2gGFmJheG4My82\n   IwIK2VK1SxiHkeWQqX25wG6UGuKU7PnP44j53ajxekgpthqRXkyNBgby7\n   MNmIYYbJ/pg02296xKHFqoNkY42bhUMnB20BdqChzXykIyDDMOmeSUERv\n   UuN4QPZoOLouSAgECeQLi77bPpK8xkHphRkxRI224rCAw2yqN/Ts38ENZ\n   6OvUUQhSGMvyM6hYDec9foN+YRn86SrKynRfpv+Zuvd3Kbr2BIq8B+XMG\n   eTEI+Oyy0jO/EPpS9mf0wpPw8HWig381eIpkkHutu18/EYke1a3C09bli\n   A==;","X-CSE-ConnectionGUID":["oHGIpSGoRWy8fv2Pjv004g==","OFYd4/ZAT1SFu3IFjjdGtg=="],"X-CSE-MsgGUID":["iWfMJy+ETGuA1y2PRf//TA==","26Wz3oNFS6iMK1xPjFlxYQ=="],"X-IronPort-AV":["E=McAfee;i=\"6800,10657,11762\"; a=\"88167918\"","E=Sophos;i=\"6.23,184,1770624000\";\n   d=\"scan'208\";a=\"88167918\"","E=Sophos;i=\"6.23,184,1770624000\";\n   d=\"scan'208\";a=\"227968271\""],"X-ExtLoop1":"1","Date":"Fri, 17 Apr 2026 21:12:30 +0300","From":"Andy Shevchenko <andriy.shevchenko@intel.com>","To":"Yury Norov <ynorov@nvidia.com>","Cc":"Thomas Gleixner <tglx@kernel.org>, Ingo Molnar <mingo@redhat.com>,\n Borislav Petkov <bp@alien8.de>, Dave Hansen <dave.hansen@linux.intel.com>,\n x86@kernel.org, \"H. Peter Anvin\" <hpa@zytor.com>,\n Andy Lutomirski <luto@kernel.org>, Peter Zijlstra <peterz@infradead.org>,\n Jonathan Cameron <jic23@kernel.org>, David Lechner <dlechner@baylibre.com>,\n Nuno =?iso-8859-1?q?S=E1?= <nuno.sa@analog.com>,\n Andy Shevchenko <andy@kernel.org>, Ping-Ke Shih <pkshih@realtek.com>,\n Richard Cochran <richardcochran@gmail.com>,\n Andrew Lunn <andrew+netdev@lunn.ch>, \"David S. Miller\" <davem@davemloft.net>,\n Eric Dumazet <edumazet@google.com>, Jakub Kicinski <kuba@kernel.org>,\n Paolo Abeni <pabeni@redhat.com>,\n Alexandre Belloni <alexandre.belloni@bootlin.com>,\n Yury Norov <yury.norov@gmail.com>,\n Rasmus Villemoes <linux@rasmusvillemoes.dk>,\n Hans de Goede <hansg@kernel.org>, Linus Walleij <linusw@kernel.org>,\n Sakari Ailus <sakari.ailus@linux.intel.com>,\n Salah Triki <salah.triki@gmail.com>, Achim Gratz <Achim.Gratz@stromeko.de>,\n Ben Collins <bcollins@watter.com>, linux-kernel@vger.kernel.org,\n linux-iio@vger.kernel.org, linux-wireless@vger.kernel.org,\n netdev@vger.kernel.org, linux-rtc@vger.kernel.org","Subject":"Re: [PATCH 1/9] bitfield: add FIELD_GET_SIGNED()","Message-ID":"<aeJ4DmKB6p6klrqB@ashevche-desk.local>","References":"<20260417173621.368914-1-ynorov@nvidia.com>\n <20260417173621.368914-2-ynorov@nvidia.com>","Precedence":"bulk","X-Mailing-List":"linux-rtc@vger.kernel.org","List-Id":"<linux-rtc.vger.kernel.org>","List-Subscribe":"<mailto:linux-rtc+subscribe@vger.kernel.org>","List-Unsubscribe":"<mailto:linux-rtc+unsubscribe@vger.kernel.org>","MIME-Version":"1.0","Content-Type":"text/plain; charset=us-ascii","Content-Disposition":"inline","In-Reply-To":"<20260417173621.368914-2-ynorov@nvidia.com>","Organization":"Intel Finland Oy - BIC 0357606-4 - c/o Alberga Business Park, 6\n krs, Bertel Jungin Aukio 5, 02600 Espoo"}},{"id":3678866,"web_url":"http://patchwork.ozlabs.org/comment/3678866/","msgid":"<20260417204355.37fd960d@pumpkin>","list_archive_url":null,"date":"2026-04-17T19:43:55","subject":"Re: [PATCH 1/9] bitfield: add FIELD_GET_SIGNED()","submitter":{"id":89989,"url":"http://patchwork.ozlabs.org/api/people/89989/","name":"David Laight","email":"david.laight.linux@gmail.com"},"content":"On Fri, 17 Apr 2026 13:36:12 -0400\nYury Norov <ynorov@nvidia.com> wrote:\n\n> The bitfields are designed in assumption that fields contain unsigned\n> integer values, thus extracting the values from the field implies\n> zero-extending.\n> \n> Some drivers need to sign-extend their fields, and currently do it like:\n> \n> \tdc_re += sign_extend32(FIELD_GET(0xfff000, tmp), 11);\n> \tdc_im += sign_extend32(FIELD_GET(0xfff, tmp), 11);\n> \n> It's error-prone because it relies on user to provide the correct\n> index of the most significant bit and proper 32 vs 64 function flavor.\n> \n> Thus, introduce a FIELD_GET_SIGNED() macro, which is the more\n> convenient and compiles (on x86_64) to just a couple instructions:\n> shl and sar.\n> \n> Signed-off-by: Yury Norov <ynorov@nvidia.com>\n> ---\n>  include/linux/bitfield.h | 16 ++++++++++++++++\n>  1 file changed, 16 insertions(+)\n> \n> diff --git a/include/linux/bitfield.h b/include/linux/bitfield.h\n> index 54aeeef1f0ec..35ef63972810 100644\n> --- a/include/linux/bitfield.h\n> +++ b/include/linux/bitfield.h\n> @@ -178,6 +178,22 @@\n>  \t\t__FIELD_GET(_mask, _reg, \"FIELD_GET: \");\t\t\\\n>  \t})\n>  \n> +/**\n> + * FIELD_GET_SIGNED() - extract a signed bitfield element\n> + * @mask: shifted mask defining the field's length and position\n> + * @reg:  value of entire bitfield\n> + *\n> + * Returns the sign-extended field specified by @_mask from the\n> + * bitfield passed in as @_reg by masking and shifting it down.\n> + */\n> +#define FIELD_GET_SIGNED(mask, reg)\t\t\t\t\t\\\n> +\t({\t\t\t\t\t\t\t\t\\\n> +\t\t__BF_FIELD_CHECK(mask, reg, 0U, \"FIELD_GET_SIGNED: \");\t\\\n> +\t\t ((__signed_scalar_typeof(mask))((long long)(reg) <<\t\\\n> +\t\t __builtin_clzll(mask) >> (__builtin_clzll(mask) +\t\\\n> +\t\t\t\t\t\t__builtin_ctzll(mask))));\\\n\nHave you looked at what that generates on a typical 32bit architecture?\n\nIt really a bad idea to use __signed_scalar_typeof() on anything that isn't\na simple variable.\nThe bloat from all this when 'mask' is an expansion of GENMASK() is horrid.\nIndeed both signed_scalar_typeof() and unsigned_scalar_typeof() should\nreally not be used - there are generally much better ways.\n\nIn this case you can just write:\n\t({\n\t\tauto _mask = mask;\n\t\tunsigned int __sl = __builtin_clzll(_mask);\n\t\tunsigned int __sr = __sl + __builtin_ctzll(_mask);\n\t\t__builtin_chose_expr(sizeof(_mask) <= 4,\n\t\t\t(int)(reg) << __sl - 32 >> __sr - 32,\n\t\t\t((long long)(reg) << __sl >> __sr)\n\t})\nand let the compiler do any more integer promotions (etc).\n\nI'm also not convinced that the checks __BF_FIELD_CHECK() does\non 'reg' are in any sense worth the effort.\n\nI have tried some simpler alternatives, eg:\n\t!__builtin_constant_p(reg) && statically_true((reg & mask) == 0)\nhowever that throws up some false positives due to some of weird ways\npeople have used FIELD_GET() where it is nothing like the simplest\n(or most obvious) way to do things.\nThat might have been the code that split a 32bit value into bytes\nin a printf with:\n\tFIELD_GET(GENMASK(7, 0), val), FIELD_GET(GENMASK(15, 8), val),\n\tFIELD_GET(GENMASK(23, 16), val), FIELD_GET(GENMASK(31, 24), val),\n\n\tDavid\n\n> +\t})\n> +\n>  /**\n>   * FIELD_MODIFY() - modify a bitfield element\n>   * @_mask: shifted mask defining the field's length and position","headers":{"Return-Path":"\n <linux-rtc+bounces-6373-incoming=patchwork.ozlabs.org@vger.kernel.org>","X-Original-To":["incoming@patchwork.ozlabs.org","linux-rtc@vger.kernel.org"],"Delivered-To":"patchwork-incoming@legolas.ozlabs.org","Authentication-Results":["legolas.ozlabs.org;\n\tdkim=pass (2048-bit key;\n unprotected) header.d=gmail.com header.i=@gmail.com header.a=rsa-sha256\n header.s=20251104 header.b=htHi75iS;\n\tdkim-atps=neutral","legolas.ozlabs.org;\n spf=pass (sender SPF authorized) smtp.mailfrom=vger.kernel.org\n (client-ip=2600:3c15:e001:75::12fc:5321; helo=sin.lore.kernel.org;\n envelope-from=linux-rtc+bounces-6373-incoming=patchwork.ozlabs.org@vger.kernel.org;\n receiver=patchwork.ozlabs.org)","smtp.subspace.kernel.org;\n\tdkim=pass (2048-bit key) header.d=gmail.com header.i=@gmail.com\n header.b=\"htHi75iS\"","smtp.subspace.kernel.org;\n arc=none smtp.client-ip=209.85.128.42","smtp.subspace.kernel.org;\n dmarc=pass (p=none dis=none) header.from=gmail.com","smtp.subspace.kernel.org;\n spf=pass smtp.mailfrom=gmail.com"],"Received":["from sin.lore.kernel.org (sin.lore.kernel.org\n [IPv6:2600:3c15:e001:75::12fc:5321])\n\t(using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits)\n\t key-exchange x25519 server-signature ECDSA (secp384r1) server-digest SHA384)\n\t(No client certificate requested)\n\tby legolas.ozlabs.org (Postfix) with ESMTPS id 4fy5124t5zz1yD3\n\tfor <incoming@patchwork.ozlabs.org>; Sat, 18 Apr 2026 05:44:06 +1000 (AEST)","from smtp.subspace.kernel.org (conduit.subspace.kernel.org\n [100.90.174.1])\n\tby sin.lore.kernel.org (Postfix) with ESMTP id A459930116BD\n\tfor <incoming@patchwork.ozlabs.org>; Fri, 17 Apr 2026 19:44:02 +0000 (UTC)","from localhost.localdomain (localhost.localdomain [127.0.0.1])\n\tby smtp.subspace.kernel.org (Postfix) with ESMTP id 0B541343D8F;\n\tFri, 17 Apr 2026 19:44:01 +0000 (UTC)","from mail-wm1-f42.google.com (mail-wm1-f42.google.com\n [209.85.128.42])\n\t(using TLSv1.2 with cipher ECDHE-RSA-AES128-GCM-SHA256 (128/128 bits))\n\t(No client certificate requested)\n\tby smtp.subspace.kernel.org (Postfix) with ESMTPS id 20C0434DCD7\n\tfor <linux-rtc@vger.kernel.org>; Fri, 17 Apr 2026 19:43:58 +0000 (UTC)","by mail-wm1-f42.google.com with SMTP id\n 5b1f17b1804b1-488b0046078so10224425e9.1\n        for <linux-rtc@vger.kernel.org>; Fri, 17 Apr 2026 12:43:58 -0700 (PDT)","from pumpkin (82-69-66-36.dsl.in-addr.zen.co.uk. [82.69.66.36])\n        by smtp.gmail.com with ESMTPSA id\n 5b1f17b1804b1-488fc11ced7sm58174535e9.0.2026.04.17.12.43.56\n        (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256);\n        Fri, 17 Apr 2026 12:43:56 -0700 (PDT)"],"ARC-Seal":"i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116;\n\tt=1776455040; cv=none;\n b=aRJ53wP+kY/xrUZddv4ZCYaj3DhKiTRby8QmcvpvRtLsSnDQoenXrOBC96vJcQu6nsMOLSEeDXKs2gaOmuCgD1TkxAFsrHkneSlgZMBi4qXwjEEXq+8lybdFYRkCYUoD4rp4HxytGf76fRa2QbiGpHJ1zl3OcUZJbJFGiMQ2W5U=","ARC-Message-Signature":"i=1; a=rsa-sha256; d=subspace.kernel.org;\n\ts=arc-20240116; t=1776455040; c=relaxed/simple;\n\tbh=KaFMDCFH9CdumsHQVkzpXcZ16qLlfuRi8NWo/FeNfgE=;\n\th=Date:From:To:Cc:Subject:Message-ID:In-Reply-To:References:\n\t MIME-Version:Content-Type;\n b=HBKT1Sgsgak+oAvFvHqRD0MfBrNGGsI/dbIz0s3+ZVvMLFcDjsAtlHEGW7NrKVYcfmWpIHHulwnHMlrtKQL7KBzN5SH5EP0W57pUTNv6D2Oqp3blB41AlHa8jA8HDLVzuyHQWEpKT3IfkrPz1IauLCQ6xxxc4wrzcM9DjewQXIA=","ARC-Authentication-Results":"i=1; smtp.subspace.kernel.org;\n dmarc=pass (p=none dis=none) header.from=gmail.com;\n spf=pass smtp.mailfrom=gmail.com;\n dkim=pass (2048-bit key) header.d=gmail.com header.i=@gmail.com\n header.b=htHi75iS; arc=none smtp.client-ip=209.85.128.42","DKIM-Signature":"v=1; a=rsa-sha256; c=relaxed/relaxed;\n        d=gmail.com; s=20251104; t=1776455037; x=1777059837;\n darn=vger.kernel.org;\n        h=content-transfer-encoding:mime-version:references:in-reply-to\n         :message-id:subject:cc:to:from:date:from:to:cc:subject:date\n         :message-id:reply-to;\n        bh=tSJKJdhPF/oSEv0Q3RwysZnU9Ji4VqpvQLZ2wVMqphA=;\n        b=htHi75iSbURVMZ6Xk9C/IrGjBnOFBWNfL2XmrCASRM+7fW23utl/LnXbfsSHB5bDuY\n         p+JrBm3aDjplc/i+J+r+5z3cqZYRptIqbxLk4d2Fs+yDPu6pdSVhKrJvJ+PsyNXkDq8Y\n         g1KMYTwZhGj3NXZxDotQEs15pNW1EocuyHt11lGYxOUqKuT1I0nP1Z3vqRpAp+1nxcdn\n         u5qYKEtx9eWSjtv+po3EklPDjX5B4dyPS8B3N301kbz6KWAK7z2PDbb39K3lJoEnTUyX\n         97wf6Z+bFsq0LOcC+MBtKcORuqrcPUAoc9J2Btom1LDSSbQv8je6lVjNxJkMmHQyu4UJ\n         Av+A==","X-Google-DKIM-Signature":"v=1; a=rsa-sha256; c=relaxed/relaxed;\n        d=1e100.net; s=20251104; t=1776455037; x=1777059837;\n        h=content-transfer-encoding:mime-version:references:in-reply-to\n         :message-id:subject:cc:to:from:date:x-gm-gg:x-gm-message-state:from\n         :to:cc:subject:date:message-id:reply-to;\n        bh=tSJKJdhPF/oSEv0Q3RwysZnU9Ji4VqpvQLZ2wVMqphA=;\n        b=jX1Pw/vY2kHKvnSC6vmrzan8t8MqJUZLSQ6loYv8s5cbkAR7+9uEqM5QR5Fyo6BhDi\n         rla2PM3T7g6pHN3KaRz1XSqY4qQF+B+cAPV4oe+EUfaw0r+2qtmmVFPj6OX3nrySpyvL\n         oV3jsdLN8nItNti0FwZ2bJwyg9Dm3oPnuN8tzsDZiylyZnmiPhh240L6RI/3hq/B8BzN\n         3sVe5M+FQzTn+ksE9FHU/CgB9RpuLDuCEteTfJCwe3v9HKNe5M78i50BNN8DGzSRiHSV\n         6iyqHT91xVmTUNB4Ilen7AWqS/Q39woxFQ3cqekMDJVNgDztk6CjdzEGn/gydPpxM/2K\n         LzNw==","X-Forwarded-Encrypted":"i=1;\n AFNElJ+9cJ2bzpX9/c36sy3yUbLICcNLQ6UVnZonVCs1HiS00R3tfAMVNezKTxH+xNEBk6GXTLvMzy0DQqg=@vger.kernel.org","X-Gm-Message-State":"AOJu0YwhCRaQ1zG2pWLB6Klyulp7SXge+djXF9TfFkYTgzAK52EmkKD3\n\tbvVc9ypU8+1H1uNRkSTCJp7upugXy3DqbTL3VJ/kHTTXj76VucRVbsr3","X-Gm-Gg":"AeBDievWqIj4E5wX/NNH+UlC+i5BLo4WK4IJ7MnnBnuq3qKPRQMttscL1JXwljKO+Ef\n\tJidxyDBh0CF1lXLKp/hnBsuBbgAPsk+Ph9t7mk8d9Tz1vFIFCma6b6fCzPvzQJNU7F0sAxeGpRG\n\tX42VWyjFAVQgbleKSlI9jrpAHW+GoRb4LpIKA40LOHLCE0M9iv9oOa3FCn6AH6AkSBhOsCMCjzJ\n\tq8vlur9ufZXoHREi7GdCWykXd+UaHVEZpIyAalKhgZ3kl5Sfkz0Jv6GF1SNFkjyrA9cHE5PSnNk\n\tnsqxwkJX9lQIMyVqCODa0RxGGP0qgHkQQp0P5Ka6pgL0N1jBRbUNIyf9eZ7SV0z1+ICBBs2/Gl/\n\tLYPYBkgj6rLbZYvoYrcX2xI9vViMeDJyNxwY5aE5ogzDosoTsXh5WL9e8IbJXNgSP9lW7yTzf0v\n\twY60Gn789lF8hHOXcfZgJSpjSAReqdESlQVuwovU5gnvAJguGqHHyxx5l2ZhElWaHkH9hFV35Lt\n\t/w=","X-Received":"by 2002:a05:600c:1c11:b0:488:9ed3:148f with SMTP id\n 5b1f17b1804b1-488fb782a93mr63697245e9.21.1776455037158;\n        Fri, 17 Apr 2026 12:43:57 -0700 (PDT)","Date":"Fri, 17 Apr 2026 20:43:55 +0100","From":"David Laight <david.laight.linux@gmail.com>","To":"Yury Norov <ynorov@nvidia.com>","Cc":"Thomas Gleixner <tglx@kernel.org>, Ingo Molnar <mingo@redhat.com>,\n Borislav Petkov <bp@alien8.de>, Dave Hansen <dave.hansen@linux.intel.com>,\n x86@kernel.org, \"H. Peter Anvin\" <hpa@zytor.com>,\n Andy Lutomirski <luto@kernel.org>, Peter Zijlstra <peterz@infradead.org>,\n Jonathan Cameron <jic23@kernel.org>, David Lechner <dlechner@baylibre.com>,\n Nuno =?utf-8?b?U8Oh?= <nuno.sa@analog.com>,\n Andy Shevchenko <andy@kernel.org>, Ping-Ke Shih <pkshih@realtek.com>,\n Richard Cochran <richardcochran@gmail.com>,\n Andrew Lunn <andrew+netdev@lunn.ch>, \"David S. Miller\" <davem@davemloft.net>,\n Eric Dumazet <edumazet@google.com>, Jakub Kicinski <kuba@kernel.org>,\n Paolo Abeni <pabeni@redhat.com>,\n Alexandre Belloni <alexandre.belloni@bootlin.com>,\n Yury Norov <yury.norov@gmail.com>,\n Rasmus Villemoes <linux@rasmusvillemoes.dk>,\n Hans de Goede <hansg@kernel.org>, Linus Walleij <linusw@kernel.org>,\n Sakari Ailus <sakari.ailus@linux.intel.com>,\n Salah Triki <salah.triki@gmail.com>, Achim Gratz <Achim.Gratz@Stromeko.DE>,\n Ben Collins <bcollins@watter.com>, linux-kernel@vger.kernel.org,\n linux-iio@vger.kernel.org, linux-wireless@vger.kernel.org,\n netdev@vger.kernel.org, linux-rtc@vger.kernel.org","Subject":"Re: [PATCH 1/9] bitfield: add FIELD_GET_SIGNED()","Message-ID":"<20260417204355.37fd960d@pumpkin>","In-Reply-To":"<20260417173621.368914-2-ynorov@nvidia.com>","References":"<20260417173621.368914-1-ynorov@nvidia.com>\n\t<20260417173621.368914-2-ynorov@nvidia.com>","X-Mailer":"Claws Mail 4.1.1 (GTK 3.24.38; arm-unknown-linux-gnueabihf)","Precedence":"bulk","X-Mailing-List":"linux-rtc@vger.kernel.org","List-Id":"<linux-rtc.vger.kernel.org>","List-Subscribe":"<mailto:linux-rtc+subscribe@vger.kernel.org>","List-Unsubscribe":"<mailto:linux-rtc+unsubscribe@vger.kernel.org>","MIME-Version":"1.0","Content-Type":"text/plain; charset=US-ASCII","Content-Transfer-Encoding":"7bit"}},{"id":3678892,"web_url":"http://patchwork.ozlabs.org/comment/3678892/","msgid":"<aeKhj3W4ycqY5wPb@yury>","list_archive_url":null,"date":"2026-04-17T21:09:35","subject":"Re: [PATCH 1/9] bitfield: add FIELD_GET_SIGNED()","submitter":{"id":92516,"url":"http://patchwork.ozlabs.org/api/people/92516/","name":"Yury Norov","email":"ynorov@nvidia.com"},"content":"On Fri, Apr 17, 2026 at 08:43:55PM +0100, David Laight wrote:\n> On Fri, 17 Apr 2026 13:36:12 -0400\n> Yury Norov <ynorov@nvidia.com> wrote:\n> \n> > The bitfields are designed in assumption that fields contain unsigned\n> > integer values, thus extracting the values from the field implies\n> > zero-extending.\n> > \n> > Some drivers need to sign-extend their fields, and currently do it like:\n> > \n> > \tdc_re += sign_extend32(FIELD_GET(0xfff000, tmp), 11);\n> > \tdc_im += sign_extend32(FIELD_GET(0xfff, tmp), 11);\n> > \n> > It's error-prone because it relies on user to provide the correct\n> > index of the most significant bit and proper 32 vs 64 function flavor.\n> > \n> > Thus, introduce a FIELD_GET_SIGNED() macro, which is the more\n> > convenient and compiles (on x86_64) to just a couple instructions:\n> > shl and sar.\n> > \n> > Signed-off-by: Yury Norov <ynorov@nvidia.com>\n> > ---\n> >  include/linux/bitfield.h | 16 ++++++++++++++++\n> >  1 file changed, 16 insertions(+)\n> > \n> > diff --git a/include/linux/bitfield.h b/include/linux/bitfield.h\n> > index 54aeeef1f0ec..35ef63972810 100644\n> > --- a/include/linux/bitfield.h\n> > +++ b/include/linux/bitfield.h\n> > @@ -178,6 +178,22 @@\n> >  \t\t__FIELD_GET(_mask, _reg, \"FIELD_GET: \");\t\t\\\n> >  \t})\n> >  \n> > +/**\n> > + * FIELD_GET_SIGNED() - extract a signed bitfield element\n> > + * @mask: shifted mask defining the field's length and position\n> > + * @reg:  value of entire bitfield\n> > + *\n> > + * Returns the sign-extended field specified by @_mask from the\n> > + * bitfield passed in as @_reg by masking and shifting it down.\n> > + */\n> > +#define FIELD_GET_SIGNED(mask, reg)\t\t\t\t\t\\\n> > +\t({\t\t\t\t\t\t\t\t\\\n> > +\t\t__BF_FIELD_CHECK(mask, reg, 0U, \"FIELD_GET_SIGNED: \");\t\\\n> > +\t\t ((__signed_scalar_typeof(mask))((long long)(reg) <<\t\\\n> > +\t\t __builtin_clzll(mask) >> (__builtin_clzll(mask) +\t\\\n> > +\t\t\t\t\t\t__builtin_ctzll(mask))));\\\n> \n> Have you looked at what that generates on a typical 32bit architecture?\n\nYes, for arm32:\n\n  #define FIELD_GET_SIGNED(mask, reg)                           \\\n      ((long long)(reg) <<                                      \\\n         __builtin_clzll(mask) >> (__builtin_clzll(mask) +      \\\n          __builtin_ctzll(mask)))\n  \n  long long foo(long long reg)\n  {\n         return FIELD_GET_SIGNED(0x00f00000ULL, reg);\n  }\n\ngenerates:\n\n  foo(long long):\n        lsls    r1, r0, #8\n        asrs    r0, r1, #28\n        asrs    r1, r1, #31\n        bx      lr\n\nJust as good as x86_64.\n\nhttps://godbolt.org/z/eMnKrnocq\n \n> It really a bad idea to use __signed_scalar_typeof() on anything that isn't\n> a simple variable.\n> The bloat from all this when 'mask' is an expansion of GENMASK() is horrid.\n> Indeed both signed_scalar_typeof() and unsigned_scalar_typeof() should\n> really not be used - there are generally much better ways.\n\nDavid, it's not the first time you're throwing \"bad idea, horrid bloat,\nreally not be used\"-like rant with absolutely no evidence that people\ndo something wrong. Today I became another random victim of your style\nof communication, and I don't think there's any benefit to tolerate it\nfor me or anybody else.\n\nI encourage you to change your attitude, and use professional and\nspecific communication style in the kernel mailing list.\n\nStarting from now, I'm not a free tester for your ideas anymore. If\nyou think that my patch is wrong, please prove it yourself. If you\nthink that 32-bit or whatever code generation is bad - please send\nan example. If you believe that your implementation is any better -\nplease bother yourself to convince me.\n\nI will continue receiving patches from you in my tree, but if your\npatch is claimed to improve code generation, performance of any sort,\nor similar things, and doesn't provide any numbers - I'll not waste\nmy time on it.\n\nThanks,\nYury\n\n> In this case you can just write:\n> \t({\n> \t\tauto _mask = mask;\n> \t\tunsigned int __sl = __builtin_clzll(_mask);\n> \t\tunsigned int __sr = __sl + __builtin_ctzll(_mask);\n> \t\t__builtin_chose_expr(sizeof(_mask) <= 4,\n> \t\t\t(int)(reg) << __sl - 32 >> __sr - 32,\n> \t\t\t((long long)(reg) << __sl >> __sr)\n> \t})\n> and let the compiler do any more integer promotions (etc).\n> \n> I'm also not convinced that the checks __BF_FIELD_CHECK() does\n> on 'reg' are in any sense worth the effort.\n> \n> I have tried some simpler alternatives, eg:\n> \t!__builtin_constant_p(reg) && statically_true((reg & mask) == 0)\n> however that throws up some false positives due to some of weird ways\n> people have used FIELD_GET() where it is nothing like the simplest\n> (or most obvious) way to do things.\n> That might have been the code that split a 32bit value into bytes\n> in a printf with:\n> \tFIELD_GET(GENMASK(7, 0), val), FIELD_GET(GENMASK(15, 8), val),\n> \tFIELD_GET(GENMASK(23, 16), val), FIELD_GET(GENMASK(31, 24), val),\n> \n> \tDavid\n> \n> > +\t})\n> > +\n> >  /**\n> >   * FIELD_MODIFY() - modify a bitfield element\n> >   * @_mask: shifted mask defining the field's length and position","headers":{"Return-Path":"\n <linux-rtc+bounces-6374-incoming=patchwork.ozlabs.org@vger.kernel.org>","X-Original-To":["incoming@patchwork.ozlabs.org","linux-rtc@vger.kernel.org"],"Delivered-To":"patchwork-incoming@legolas.ozlabs.org","Authentication-Results":["legolas.ozlabs.org;\n\tdkim=pass (2048-bit key;\n unprotected) header.d=Nvidia.com header.i=@Nvidia.com header.a=rsa-sha256\n header.s=selector2 header.b=DgEzk/xQ;\n\tdkim-atps=neutral","legolas.ozlabs.org;\n spf=pass (sender SPF authorized) smtp.mailfrom=vger.kernel.org\n (client-ip=2600:3c0a:e001:db::12fc:5321; helo=sea.lore.kernel.org;\n envelope-from=linux-rtc+bounces-6374-incoming=patchwork.ozlabs.org@vger.kernel.org;\n receiver=patchwork.ozlabs.org)","smtp.subspace.kernel.org;\n\tdkim=pass (2048-bit key) header.d=Nvidia.com header.i=@Nvidia.com\n header.b=\"DgEzk/xQ\"","smtp.subspace.kernel.org;\n arc=fail smtp.client-ip=40.107.201.26","smtp.subspace.kernel.org;\n dmarc=pass (p=reject dis=none) header.from=nvidia.com","smtp.subspace.kernel.org;\n spf=fail smtp.mailfrom=nvidia.com","dkim=none (message not signed)\n header.d=none;dmarc=none action=none header.from=nvidia.com;"],"Received":["from sea.lore.kernel.org (sea.lore.kernel.org\n [IPv6:2600:3c0a:e001:db::12fc:5321])\n\t(using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits)\n\t key-exchange x25519 server-signature ECDSA (secp384r1) server-digest SHA384)\n\t(No client certificate requested)\n\tby legolas.ozlabs.org (Postfix) with ESMTPS id 4fy6xk4Sh0z1y1V\n\tfor <incoming@patchwork.ozlabs.org>; Sat, 18 Apr 2026 07:11:22 +1000 (AEST)","from smtp.subspace.kernel.org (conduit.subspace.kernel.org\n [100.90.174.1])\n\tby sea.lore.kernel.org (Postfix) with ESMTP id 962E33092F6C\n\tfor <incoming@patchwork.ozlabs.org>; Fri, 17 Apr 2026 21:09:46 +0000 (UTC)","from localhost.localdomain (localhost.localdomain [127.0.0.1])\n\tby smtp.subspace.kernel.org (Postfix) with ESMTP id 74BFB33F58D;\n\tFri, 17 Apr 2026 21:09:46 +0000 (UTC)","from CH4PR04CU002.outbound.protection.outlook.com\n (mail-northcentralusazon11013026.outbound.protection.outlook.com\n [40.107.201.26])\n\t(using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits))\n\t(No client certificate requested)\n\tby smtp.subspace.kernel.org (Postfix) with ESMTPS id F304C3290A6;\n\tFri, 17 Apr 2026 21:09:43 +0000 (UTC)","from CY8PR12MB8300.namprd12.prod.outlook.com (2603:10b6:930:7d::16)\n by DS4PR12MB9562.namprd12.prod.outlook.com (2603:10b6:8:27e::5) with\n Microsoft SMTP Server (version=TLS1_2,\n cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.9791.48; Fri, 17 Apr\n 2026 21:09:37 +0000","from CY8PR12MB8300.namprd12.prod.outlook.com\n ([fe80::ce75:8187:3ac3:c5de]) by CY8PR12MB8300.namprd12.prod.outlook.com\n ([fe80::ce75:8187:3ac3:c5de%3]) with mapi id 15.20.9818.023; Fri, 17 Apr 2026\n 21:09:37 +0000"],"ARC-Seal":["i=2; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116;\n\tt=1776460186; cv=fail;\n b=YTsm7PYPOvqNhiPMpLT0Gh80YMexE2b4viLgaeX4X+ftQfnOXW4Fm4d8KNuFg+9xjibhW6tB9mBsw5LNHuubUAyk74JAg7RkG2NW/RAr34my614ri6BASuYp3aMiILczwRvBy1HBSMwzIYfhsT2khhz91sJ+KEiCf7/lVjRpzys=","i=1; a=rsa-sha256; s=arcselector10001; d=microsoft.com; cv=none;\n b=stwRWK25YCGF100Uv6D75KZ7yfbvhi6jgDCx/pcLneC1FvMtMkBkvyTMtwvKxII4CPEM3g9yVP0gRRL0Ghc3OpmEMq6CkrkyaZPd0lwYPED5o80M1OOfzVMuOc2ENb8yX8qgLCCztIj6enql45d3ChJtrZYbjNgGSzu4/mqhxgbVmnWFX9KYA7L7IEqTwG/gVrkaaL00s+wcpaYBYMLBi1jWBcdbT9EAWb84fsEqpDwxWIt+6lbYD0scG6s9KYNvqnXc3uIQgjvJceA0e3g8teCbePeQUME17+bFEA4pK7cDjh5szmvlF9eW8KcCWwkWOnfXTUT0v2wo/3laFlxb7g=="],"ARC-Message-Signature":["i=2; a=rsa-sha256; d=subspace.kernel.org;\n\ts=arc-20240116; t=1776460186; c=relaxed/simple;\n\tbh=YY5k99HU0mWpCbQ2bSTT+xIXRGwfyGEtj7FPtFTgQWI=;\n\th=Date:From:To:Cc:Subject:Message-ID:References:Content-Type:\n\t Content-Disposition:In-Reply-To:MIME-Version;\n b=EOQolwqubTbChWtqCm6DVekrNYTXhhfISJncuHYO1+iR8zSyALmxnaxSZtpXo6JHj3YJO2yzQI/aaVbHtuNkZHJ/sWVcHDiR1lLswHc5PYGLbVLU77aVILioKcSee5NlZzJpVi6anH36ygjbbO7V9CF1U29AMl5vD6MSX4ZxSfE=","i=1; a=rsa-sha256; c=relaxed/relaxed; d=microsoft.com;\n s=arcselector10001;\n 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;\n bh=pHvPdN616B8CpixxuCmke86CzFx2S874uSUuj5XtshA=;\n b=WyIo9pGPOPzkut0qOvrsNc5nwj8a11jCMurDpV2UzOlCDMlsHaA8uJN27ciwOF8jkPXTQAvKX3AQbrVCW53RnKhb4UGl3thTgN4ddrJFGmKrs8TNu132Y3GlXwh26OVBYDjT2OE7JgBppIcdbnIVJcwtzkBmsSJMO5WilFIiRRAcIblh5nQT+Js/cWx++WcEN4LfaxYhDopzAwln8FWpD6e8MzMZhkfTi0kmACMt1I5KOVPJiSSGWAdZsCxqYdOA/rHgDk7NEIHRL+OkN+SY1JMfQ28S2MbRmGU/UQz1QnbDt9CF91U7D4sBbeKbhY/8U6+uNpOHp3O7skeNH+G2/Q=="],"ARC-Authentication-Results":["i=2; smtp.subspace.kernel.org;\n dmarc=pass (p=reject dis=none) header.from=nvidia.com;\n spf=fail smtp.mailfrom=nvidia.com;\n dkim=pass (2048-bit key) header.d=Nvidia.com header.i=@Nvidia.com\n header.b=DgEzk/xQ; arc=fail smtp.client-ip=40.107.201.26","i=1; mx.microsoft.com 1; spf=pass\n smtp.mailfrom=nvidia.com; dmarc=pass action=none header.from=nvidia.com;\n dkim=pass header.d=nvidia.com; arc=none"],"DKIM-Signature":"v=1; a=rsa-sha256; c=relaxed/relaxed; d=Nvidia.com;\n s=selector2;\n h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck;\n bh=pHvPdN616B8CpixxuCmke86CzFx2S874uSUuj5XtshA=;\n b=DgEzk/xQjvCY+Asmvz46M5t5Tl4uidUqIZHenh4uh8Jo0h2f9DnthWclkpLt9islEbeLxYFN88aR2hGYdxLB8hHDwJ/7poFQ0yHnDtkCZA29nZFmchJEhrlCaf0ffjOAYBT8O/iA9KpR5db353JV5TMmG5V7jfg35cOSfpXCVPHqQ03ZaKN4Aanv/t3Kkc3uQ2jxe/QYgN4op2Er7sfLpWyT6FB8ej2FSuq1fnwzJWFFVtuNoKtaZlITIWIoBKeylGCYAlMcK6Fjossde6qGtNRizUjhlCBUu/bgHlFqxfTeyZY5/FZxsh5zeKX9ZNpA/N/L/emo7Y/lONazp8rZ/w==","Date":"Fri, 17 Apr 2026 17:09:35 -0400","From":"Yury Norov <ynorov@nvidia.com>","To":"David Laight <david.laight.linux@gmail.com>","Cc":"Thomas Gleixner <tglx@kernel.org>, Ingo Molnar <mingo@redhat.com>,\n Borislav Petkov <bp@alien8.de>, Dave Hansen <dave.hansen@linux.intel.com>,\n x86@kernel.org, \"H. Peter Anvin\" <hpa@zytor.com>,\n Andy Lutomirski <luto@kernel.org>, Peter Zijlstra <peterz@infradead.org>,\n Jonathan Cameron <jic23@kernel.org>, David Lechner <dlechner@baylibre.com>,\n Nuno =?iso-8859-1?q?S=E1?= <nuno.sa@analog.com>,\n Andy Shevchenko <andy@kernel.org>, Ping-Ke Shih <pkshih@realtek.com>,\n Richard Cochran <richardcochran@gmail.com>,\n Andrew Lunn <andrew+netdev@lunn.ch>, \"David S. Miller\" <davem@davemloft.net>,\n Eric Dumazet <edumazet@google.com>, Jakub Kicinski <kuba@kernel.org>,\n Paolo Abeni <pabeni@redhat.com>,\n Alexandre Belloni <alexandre.belloni@bootlin.com>,\n Yury Norov <yury.norov@gmail.com>,\n Rasmus Villemoes <linux@rasmusvillemoes.dk>,\n Hans de Goede <hansg@kernel.org>, Linus Walleij <linusw@kernel.org>,\n Sakari Ailus <sakari.ailus@linux.intel.com>,\n Salah Triki <salah.triki@gmail.com>, Achim Gratz <Achim.Gratz@stromeko.de>,\n Ben Collins <bcollins@watter.com>, linux-kernel@vger.kernel.org,\n linux-iio@vger.kernel.org, linux-wireless@vger.kernel.org,\n netdev@vger.kernel.org, linux-rtc@vger.kernel.org","Subject":"Re: [PATCH 1/9] bitfield: add FIELD_GET_SIGNED()","Message-ID":"<aeKhj3W4ycqY5wPb@yury>","References":"<20260417173621.368914-1-ynorov@nvidia.com>\n <20260417173621.368914-2-ynorov@nvidia.com>\n <20260417204355.37fd960d@pumpkin>","Content-Type":"text/plain; charset=us-ascii","Content-Disposition":"inline","In-Reply-To":"<20260417204355.37fd960d@pumpkin>","X-ClientProxiedBy":"BN9PR03CA0159.namprd03.prod.outlook.com\n (2603:10b6:408:f4::14) To CY8PR12MB8300.namprd12.prod.outlook.com\n (2603:10b6:930:7d::16)","Precedence":"bulk","X-Mailing-List":"linux-rtc@vger.kernel.org","List-Id":"<linux-rtc.vger.kernel.org>","List-Subscribe":"<mailto:linux-rtc+subscribe@vger.kernel.org>","List-Unsubscribe":"<mailto:linux-rtc+unsubscribe@vger.kernel.org>","MIME-Version":"1.0","X-MS-PublicTrafficType":"Email","X-MS-TrafficTypeDiagnostic":"CY8PR12MB8300:EE_|DS4PR12MB9562:EE_","X-MS-Office365-Filtering-Correlation-Id":"3be48ee0-159a-4382-2ea2-08de9cc5a1f5","X-MS-Exchange-SenderADCheck":"1","X-MS-Exchange-AntiSpam-Relay":"0","X-Microsoft-Antispam":"\n\tBCL:0;ARA:13230040|7416014|376014|1800799024|366016|10070799003|22082099003|56012099003|18002099003;","X-Microsoft-Antispam-Message-Info":"\n\tRLr2SCxaFJPSMZ6dB59LzyU2eXiCGefLp9XzzZD5dwGcygxn4RqKEYdWMg6RV4IDbLRt8Vuj+oePnbEuZbUOrfb0m9A4hb/8gxfJ3Htog2tTC0/eEA286o331LbiGh9fPqI9ySj7eGLKD/77KmZaZXHt4G0FJdj54iYP3AEV1yc7//0KLcyM+pIbbMUj+SbJVqf2Jo+LFTRtPfMf/NGwrZr0F50tzbUMSftdvmpzGu6gX0EuqR3MMmQosnwT/M3QP383t7RiLAxt+jAN5N6ca8VUO7BoYbP0oQV9xH1PvE7Ozj1prvSGzQUSQQpTADOP1S1xQSm60WhoAgYPbKsnsg7R6V+MLEPsrcjxnWebD3dPIfCyFj9YqlCnq+QdjZ339GLNclvkGIZY5p+IcbRCGT4cmvlYvmEcy1iusO5x8OP0YnEqERxS8V0rE2tWUbONOZfTAL1/5Lg0IAa1zmXhzaIivlkOwuQuVcEemJDr8SJpUN5CFQfVuX5IkXxFE5dNOczS/+LxQMH6X4plP+n/aPoQycL4ZsjvZbr2Ft57Jd9OsuSTVV/P7qgwCQ/Jz3GTAW9MK2C6bngz+CB6O8MUj6UdoHG94iDhM3b/lvnYvdd6PvEP58hIi3i0c4wfqrtlEZVWhbeMLZn8l8lChCx/Rjybkd1R0qgZZ81rNQLPrP92pFvSDdWu2T9s3EXqTO8a5SA1zL5igAK5Mg5iw/S1LHayw4zpw91IJMLbZ31vmro=","X-Forefront-Antispam-Report":"\n\tCIP: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)(7416014)(376014)(1800799024)(366016)(10070799003)(22082099003)(56012099003)(18002099003);DIR:OUT;SFP:1101;","X-MS-Exchange-AntiSpam-MessageData-ChunkCount":"1","X-MS-Exchange-AntiSpam-MessageData-0":"\n SgJdau4ntgtKZsDJuKpWMEYFaDsEd8oYD73nYnRk2eR6h4hBJlEQf6qQOtow3km5Qd+n4sVvxWKggzs1qjTcBLZpXbC2DYEtXZMXe4y2Yps9lAeACHbNind1m5gH7VsSgjGtLLeYfKHZ9G/AgD9wIdBKNXFVAdwZaCxmuXvg32qgqQyCEHwD7BkytXX6IC5bA7K3o8565y4p0oXypNfu8ITpCVEigrez90yEYsZSi22CC1AnDayeMJyepdjTzTH72AKwwStH37gh9DUBmybo+nrAvy/ZwsRzmk8DLmpEtKtO6gJuoq2yQlqddwKjffMadqX8753MNXbmrYrW1nZ9GuGGCgb8a+3hTeTEyogAvXc8TOlseW1phkbJL43bSKtvb8ePdehMzlAmO9PQ0qr0mZd8LCpqTUAKj124veLP8Et36swzDhgR8AO1m1aNujzKFGjsiPPADOGqJbU1qLBh4/LPbRJP3gb696FCBxOJHrEuJ/6/CxkXsosY+4ZPf8Ey/z1epRuGL20LODAJGyFQHnx7otBmXKiYX4u7/efQHOCwsBC6V9ekmGC0/RTLWNwLBzBgI+GjS7gxghTB6XzoOSpNjw+6Hc001jT0GGgmNg5/+/hg7y6++YxOkAu8VkL9MOZ67rUy0zMU2GUif+96Qcx09pthyrQYZgpZYxFXf4DtN8qfMjEUGsesv7309x5FHKb/BDmV9AEyp4Zj26R1eEQbbVWvVQ3hskN9HH+vqSV1v3eG8n1v/3AAC+EDk89c0ckkCbkdAE8U3xNxbrEqmwyXidBWEi8N7VQVphbdlx6Fgw+GlzltRA69ZhHx4JDNw0TSpQw1rGjRyCkWDxs5pzQDz76J/HUmd94XrWkPk3wr8owGYRZCvWvDGRbUpNNjUm3CEY88sO7q/uABA6MNPqNwJBNIG4I4HtAiT0ibzsifVGfrk5zLMEFaq9ol9iAvGMiIxWWOycUG4zsQuIBTPrHyTxfOHv29TxtTHJqCWeaN4O1kqGnozMR3UWpdH7yFyMRE+XQXWgFGNkXS+4vN04iYGAABW19751FwpUgcpJngJMObiEGaJvQrlqe61+XR9t/q7w6D8i5B1/lc5bCS/uTOHTs7y7+NIWyU6Mmgf3LXkSvmsxLDRrOhf54G1bLt8pEdwo0FbUSAvL22cE5AipLtrSnq0RBY58WoJTdXvWxa5jIfdgDfaaABoUAB6YAO1UYfhLtxkLkt5u9hfRkKuljhpioqdkF2Iq2d5uZEU+axIB3FZzgPKvFHRthS0+MHE7eymR/ePYJaRhfjobtMcYfXTXc2C+EuO7LptlJBaf/5nx8ZEOggtz8MD9/3i1ef1bqDQK5l2Aa8++BH6K41WJWWzMln4kb7cYEboMOA8vufq8b9ppmhq5AohfD3G0LB4VeTz50PGKNW3vgi9sDL6wyLVE8eqYuOv6JGwseLzU28hlBghV0pFmOIIQV5EvW1dz+U0jnoJcCkUHk4f+aHUDT0LfEyuyxjze7WfBg08oJU0s6ALjTJAbWl31i4FsUDmBIrIUyur6vpAidg+vRvI71xmHdC2h269KjLD9ledBeWv+jd/AWgsMFh1Jw/1DjNzdnGL82r8Hh5K5hR7Oj53lpbP6V5KYNlA1LnQUnqpxKZQCUme8ssHA42rITQbwv5LyolLW+zLxoI2lAVhUQKyhWYrVP6y7BN7QiiLcgIVc1KkO3vCwmRQtHS65GVCAFwGxGwsJjS3mbony2IkX0+XSd/gxDX3zG9cDaLwgmfxbUSdZT0KU04ZtdbPI6gLlRL","X-OriginatorOrg":"Nvidia.com","X-MS-Exchange-CrossTenant-Network-Message-Id":"\n 3be48ee0-159a-4382-2ea2-08de9cc5a1f5","X-MS-Exchange-CrossTenant-AuthSource":"CY8PR12MB8300.namprd12.prod.outlook.com","X-MS-Exchange-CrossTenant-AuthAs":"Internal","X-MS-Exchange-CrossTenant-OriginalArrivalTime":"17 Apr 2026 21:09:37.5201\n (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":"\n 9TV0Bi+ee/xAZAiV7ZIelQMjv09RIg7Ul8NeBwWcRnfll05I3RsgqzfHXKAsPVBpEFj71Wn00PhrGMAIQf0FzQ==","X-MS-Exchange-Transport-CrossTenantHeadersStamped":"DS4PR12MB9562"}}]