From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: X-Spam-Checker-Version: SpamAssassin 3.4.0 (2014-02-07) on aws-us-west-2-korg-lkml-1.web.codeaurora.org Received: from kanga.kvack.org (kanga.kvack.org [205.233.56.17]) by smtp.lore.kernel.org (Postfix) with ESMTP id EF85DC3DA61 for ; Tue, 30 Jul 2024 01:52:28 +0000 (UTC) Received: by kanga.kvack.org (Postfix) id 6A5F36B007B; Mon, 29 Jul 2024 21:52:28 -0400 (EDT) Received: by kanga.kvack.org (Postfix, from userid 40) id 656646B0083; Mon, 29 Jul 2024 21:52:28 -0400 (EDT) X-Delivered-To: int-list-linux-mm@kvack.org Received: by kanga.kvack.org (Postfix, from userid 63042) id 51D7C6B0085; Mon, 29 Jul 2024 21:52:28 -0400 (EDT) X-Delivered-To: linux-mm@kvack.org Received: from relay.hostedemail.com (smtprelay0013.hostedemail.com [216.40.44.13]) by kanga.kvack.org (Postfix) with ESMTP id 3384F6B007B for ; Mon, 29 Jul 2024 21:52:28 -0400 (EDT) Received: from smtpin30.hostedemail.com (a10.router.float.18 [10.200.18.1]) by unirelay07.hostedemail.com (Postfix) with ESMTP id D61B4160147 for ; Tue, 30 Jul 2024 01:52:27 +0000 (UTC) X-FDA: 82394744334.30.8CCEC63 Received: from mail-ed1-f43.google.com (mail-ed1-f43.google.com [209.85.208.43]) by imf02.hostedemail.com (Postfix) with ESMTP id B97C680007 for ; Tue, 30 Jul 2024 01:52:25 +0000 (UTC) Authentication-Results: imf02.hostedemail.com; dkim=pass header.d=linuxfoundation.org header.s=google header.b="AN77vI3/"; spf=pass (imf02.hostedemail.com: domain of torvalds@linuxfoundation.org designates 209.85.208.43 as permitted sender) smtp.mailfrom=torvalds@linuxfoundation.org; dmarc=pass (policy=none) header.from=linuxfoundation.org ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=hostedemail.com; s=arc-20220608; t=1722304274; h=from:from:sender:reply-to:subject:subject:date:date: message-id:message-id:to:to:cc:cc:mime-version:mime-version: content-type:content-type:content-transfer-encoding: in-reply-to:in-reply-to:references:references:dkim-signature; bh=iXIPbaTCS5ZLwFvLSTc3lM2kcdvwengf9gnEid7wlG4=; b=yUkzz9lvRedCb3nK/VIIXprNAJWb5cT4NQYfO9h4XFkTEPZHiZWLkRgPH90NtJZx7IqM0Y 7ETH82lKiZwIGLt9+lFCQbbmp9CtRCx1LMaU7YAWVQhKSFrt1aoyn4N19pzfL9MIvEXFKC 09caBlERLzJ2wGbFo1S+Y796rn6nnDM= ARC-Authentication-Results: i=1; imf02.hostedemail.com; dkim=pass header.d=linuxfoundation.org header.s=google header.b="AN77vI3/"; spf=pass (imf02.hostedemail.com: domain of torvalds@linuxfoundation.org designates 209.85.208.43 as permitted sender) smtp.mailfrom=torvalds@linuxfoundation.org; dmarc=pass (policy=none) header.from=linuxfoundation.org ARC-Seal: i=1; s=arc-20220608; d=hostedemail.com; t=1722304274; a=rsa-sha256; cv=none; b=KkpfK01z9xgGKxMcEgpm/R9jBOWIc8a1zdaX89Vu+m/dSxunOTzP5wUcbVdSFCWWeXZW/Q uuoN13JxS5+n+nWdG7f4hNv0hWcBux/c1xwYNn87BuM9YThf4IqCqCfqsBJnXLuN2t3vDk 7ozuLcam03eh0/8lJbZRuobE0ADEM/o= Received: by mail-ed1-f43.google.com with SMTP id 4fb4d7f45d1cf-59589a9be92so6261756a12.2 for ; Mon, 29 Jul 2024 18:52:25 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=linuxfoundation.org; s=google; t=1722304344; x=1722909144; darn=kvack.org; h=cc:to:subject:message-id:date:from:in-reply-to:references :mime-version:from:to:cc:subject:date:message-id:reply-to; bh=iXIPbaTCS5ZLwFvLSTc3lM2kcdvwengf9gnEid7wlG4=; b=AN77vI3/I2UDz2utP4jUHSfJCaRGwPq4xP0joHNJRCWVBVG/hkv4WOkgj+XMB0s/KK xm4+kJ6fBuUoAA5Aknbtz13eayIe3FvOABGgrHKebADStC7YKYU6T4mBv3TDTNl5WdV4 V1xqznqUOKZMkqIBvBXhRt0rkICIeVsyK3+/g= X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1722304344; x=1722909144; h=cc:to:subject:message-id:date:from:in-reply-to:references :mime-version:x-gm-message-state:from:to:cc:subject:date:message-id :reply-to; bh=iXIPbaTCS5ZLwFvLSTc3lM2kcdvwengf9gnEid7wlG4=; b=nUSLqR50WG8lx9c1strxbFA5VaWvM++ud30jEMYAfB+hKlwqQiKOayGyMEuyzXDmy7 /laidEsBjap+oKZ99ZjkAoodSiuZQWPPhc2n66972fZ60Uav0a9Ttrx3yds2sApA49p4 gSZdO29+tUDrsC4Cm9IiNWnWgor72xc48LTeBXKSpi0+RbwKbtIvYqkMM6WmR3Hgm1la itJx3UTsknYc/3GM1FWmzPbSbJZUr/5ioFr3QHUtDjbIFaMR/MnMT9rvc2FCbI3H4YjD tm3AC7o9G/RwPpv50f1SO1/mSRhvplz4k+lzfel7i9TUp8pBz1ONlD4FYAJpNF9TbD90 TWEw== X-Forwarded-Encrypted: i=1; AJvYcCUVkJC1ZshLu1DasIq8aUIpub1GnoekMiVgbq8lDOHQ6VaGgAUscWlNOYr/slMx1pJCVepHddWEBuD/O9WRf/lQy/0= X-Gm-Message-State: AOJu0YzUYZeaKc73SkG7WpH0sNEQ5gUWe339XUeB99dXJy3nB4OZRb+G 5bCC90+Z0uB8Mx68HMidghZyNHrQZEUoRf3TOlHBsRyC9r3+7GLg3QDRMwW5QZwUWSjkUolyYOX /JSJMVQ== X-Google-Smtp-Source: AGHT+IEUXKcDEM3YDXe0YcHGj6iOO6L+nEv4ORWAQLwnpfngQO67e1Xdbtalw5c3kLYeCYYXXXP9vA== X-Received: by 2002:a50:baef:0:b0:5af:e7d1:9532 with SMTP id 4fb4d7f45d1cf-5b020101f5emr5505371a12.8.1722304343962; Mon, 29 Jul 2024 18:52:23 -0700 (PDT) Received: from mail-ed1-f43.google.com (mail-ed1-f43.google.com. [209.85.208.43]) by smtp.gmail.com with ESMTPSA id 4fb4d7f45d1cf-5ac631b04ecsm6522617a12.11.2024.07.29.18.52.20 for (version=TLS1_3 cipher=TLS_AES_128_GCM_SHA256 bits=128/128); Mon, 29 Jul 2024 18:52:21 -0700 (PDT) Received: by mail-ed1-f43.google.com with SMTP id 4fb4d7f45d1cf-5afd7a9660eso4354656a12.0 for ; Mon, 29 Jul 2024 18:52:20 -0700 (PDT) X-Forwarded-Encrypted: i=1; AJvYcCWq/u2zdsZ4L8aPIm9pQQ/eMdB6Am+R0kix/50vgrEbdOD/G6ug/fbLbl191JFi+J3z+gBiZcGFKxTxtJDcBrnHkhc= X-Received: by 2002:a50:9318:0:b0:5a1:c43:82ca with SMTP id 4fb4d7f45d1cf-5b021f0d87bmr4930298a12.26.1722304340583; Mon, 29 Jul 2024 18:52:20 -0700 (PDT) MIME-Version: 1.0 References: <402c3c617c29465c898b1af55e3c6095@AcuMS.aculab.com> <5cd3e11780df40b0b771da5548966ebd@AcuMS.aculab.com> In-Reply-To: From: Linus Torvalds Date: Mon, 29 Jul 2024 18:52:03 -0700 X-Gmail-Original-Message-ID: Message-ID: Subject: Re: [PATCH v2 1/8] minmax: Put all the clamp() definitions together To: Arnd Bergmann Cc: David Laight , "linux-kernel@vger.kernel.org" , Jens Axboe , Matthew Wilcox , Christoph Hellwig , Andrew Morton , Andy Shevchenko , Dan Carpenter , "Jason A . Donenfeld" , "pedro.falcato@gmail.com" , Mateusz Guzik , "linux-mm@kvack.org" , Lorenzo Stoakes Content-Type: text/plain; charset="UTF-8" X-Rspamd-Server: rspam06 X-Rspamd-Queue-Id: B97C680007 X-Stat-Signature: xnd44gf6ekgxpna45ftqyyowqch7q7x3 X-Rspam-User: X-HE-Tag: 1722304345-465767 X-HE-Meta: U2FsdGVkX1/1drpx4iOXmNr/Jk+d+ZyaYMsEwEpWJ64XwihCGeUxku7SXWKtug4qNlAAOONXZAFMHyt1tZaceckFMBRIzBJ7BZ66OA7cxiUKGl72C0Kw0qNVPFjd6XkDJP96mGpvVVNsBxoJokaZ34T2njTMSmqo95mxCCQPNDCiY/IwVU0sqQiyRcbi+l3VdKSrTR25Vh3G7vHNB1DOxDEQl+VsrM+j7ocZfyF/LetpKNnQyFfpgQ8SaJddqcF2y9ETm5E8J+B9T4PC9nZ7ybgbgRtgSLBnoywq9MBfmA5C219Zju/s/HvQbtoN/xEI4DPXGC1YYndfQ3XxJprlznLS4LBVj+5+WhaAWIJKsszAPQaMEWI9z54JwqHrTGzUN3J/UOsBB9XjsdKHL39sn8tbm5cZH7mbufnLkLWZV+FY8IFX/xFpo/eTjx4fvzgwhJ22XWAUdQSIAfv4ZeM99immiCdKWcFShYC45865WzMp1FjcIbR6ZsLraK1pQeEgygjiFFL6rfk6AbICAZijAtMduhJo54oQeVBPHZVBc/P0O47wf92BtTPPvqQkcNQiFikhs14yQFGy5owf/1yhXifE8jlQBfpaO2IZjVDPPn0/4qlI9A8VaVO1BIdTddgbRdmcQmoVEtPiWJEC/dCffNHnB6giBvpfLEoWHMSF0FHvASk04O7zwW57GmOH15aVfD7XAttE9KUdoK8Ysa3+YtDkNgPkZRspjCRMGm084cyQMwSx3Oe8dlwNQtBRJzxlCKAu0pvUx4F4ZvCWw6i1BVUfZ3mQRX6st42+WePe1P7BVWmWG9Jf9Ab4aQBpQWy9IYVodOKohVKRI2/VRDATFCEE4T1pbHJ/eOQLbTSCLBdS9STs9GEmbrLI1zytPB/h5/O99Al6KlwRNBeykmMk3+Mn3TyehBdkbcTHfSSNWTO+czwRc6DVdBlq7pdpEpxt31tR585B9MPNiPnljOR 5Z9nYCaz YJFcDIjK4jJe+EeKvqdsPxLQoBx+RTluY7C1LuOfiafDFrmEz2CC3RNfzxsHtRZaAHZSvEL+rbBok8Ob2nK4m/QToayxbuFmRuWFl6UnADAYh07V9CS86qXIzV2NUPy0ykwGgU548j2YOo0l+I+YkVuQjSeL4qmCWDbBhw8IprfLgKh1nNGvdiG4xOFqRqBvk9l7EIm0Yowe1IVEj7GBpl/vrqtuwMyHCdX2wGMzBS/Ckd7Q0gctlGdGjdIU1z8WgcTB5YDEdYRsiFxQNmLMvlJ+Wq1gDGQX8mYW1NFCxgSpwaqBpfz6v9tLfzOr9LxvgcNaXgXtkxRrCgjsldZR5oxSw8db4vU1VkOmStJm9DADb1cHSHagGIhQl5ZAOWOkOKWRVIqqA9t9bBv8RCZJ69WfsHx9gNvNtVrlO X-Bogosity: Ham, tests=bogofilter, spamicity=0.000000, version=1.2.4 Sender: owner-linux-mm@kvack.org Precedence: bulk X-Loop: owner-majordomo@kvack.org List-ID: List-Subscribe: List-Unsubscribe: On Mon, 29 Jul 2024 at 16:21, Linus Torvalds wrote: > > What we actually care about is not "constant", but "no side effects". Ho humm.. We actually could do something like this: #define no_side_effects(x) __builtin_constant_p((x,0)) because __builtin_constant_p() doesn't actually look at just the value of the expression, but is defined to return 0 even if the value is constant but the expression has side effects. So no_side_effects(variable) returns true, but no_side_effects(variable++) returns false. Note that this is also why _static_assert() and __builtin_choose_expr() are generally very dubiously useful. Because they are limited to a "C constant expression", they fundamentally cannot take advantage of trivial optimization things, and fall flat on their face in many real life situations. In contrast, __builtin_constant_p() works for arbitrary expressions, and just says "I can easily turn this expression into a constant". Which makes it much more powerful than the nasty syntactic "C constant expression" thing that is very limited. Things like __builtin_choose_expr() are ok with very simple and direct conditionals like "is this a double", and they have their place, but in something like min() that by definition takes many different types - including pointer types - it's been a huge pain. Linus