From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S932450AbbGJNeO (ORCPT ); Fri, 10 Jul 2015 09:34:14 -0400 Received: from mail-db3on0069.outbound.protection.outlook.com ([157.55.234.69]:59869 "EHLO emea01-db3-obe.outbound.protection.outlook.com" rhost-flags-OK-OK-OK-FAIL) by vger.kernel.org with ESMTP id S932355AbbGJNeD (ORCPT ); Fri, 10 Jul 2015 09:34:03 -0400 Authentication-Results: kernel.org; dkim=none (message not signed) header.d=none; Subject: Re: [RFC][PATCH 23/24] atomic: Collapse all atomic_{set,clear}_mask definitions To: Peter Zijlstra , Geert Uytterhoeven References: <20150709172855.564686637@infradead.org> <20150709175310.229218215@infradead.org> <20150710103945.GH19282@twins.programming.kicks-ass.net> CC: "linux-kernel@vger.kernel.org" , Linux-Arch , Richard Henderson , Vineet Gupta , Russell King , Will Deacon , =?UTF-8?Q?H=c3=a5vard_Skinnemoen?= , Miao Steven , David Howells , Richard Kuo , Tony Luck , James Hogan , Ralf Baechle , "James E.J. Bottomley" , Benjamin Herrenschmidt , Heiko Carstens , "David S. Miller" , Ingo Molnar From: Chris Metcalf Message-ID: <559FC9CC.6000400@ezchip.com> Date: Fri, 10 Jul 2015 09:34:04 -0400 User-Agent: Mozilla/5.0 (Windows NT 6.1; WOW64; rv:38.0) Gecko/20100101 Thunderbird/38.0.1 MIME-Version: 1.0 In-Reply-To: <20150710103945.GH19282@twins.programming.kicks-ass.net> Content-Type: text/plain; charset="windows-1252"; format=flowed Content-Transfer-Encoding: 7bit X-Originating-IP: [173.76.21.154] X-ClientProxiedBy: BN3PR09CA0040.namprd09.prod.outlook.com (25.160.111.178) To DB5PR02MB0774.eurprd02.prod.outlook.com (25.161.243.145) X-Microsoft-Exchange-Diagnostics: 1;DB5PR02MB0774;2:O0pXzwe+dON2uHbd26QZY26bjDDgEDLRso6/bQ0KGrTsFUkF+eWhtLatrthi+X7w;3:pwkfvDryWzWL7LZqGInT5BhuF9kZbRcPHQ4b2OX3H3r74+bEmVeCLeRifzKWQLzPc6nJCMe2PT37GvPT4mUGTdAZyJZqOQunDj00mThFUWjbczTREjZSQBvxTm7L40i5llBuT67xIZtA0bZqb/91vg==;25:h3DPR+kYTVw3yoicrlwbxLfyJ71EDmEZ5eOyNxC6Ki+2oqSk8tLf6LIVpeOLi2/ONKqdBFcUyoCcb4jberwvLoBZbreLFmGPJ5zzb0oPUavc4z0IEGIhgXBagb3F6CjDr4zDyMJiRyBtIh0SqSdmx7IKvbld1iVBWSd6dbXSy0pknNl/g61II1Jnh2r7mKZJn/KifBO9t4YrglAC0H3AHvZg9flZsPBA0l6noX26aErLraOyEXW8aNFadoPVlqv1pSLzSGAf3vKOhdevAckn2w==;20:i38lUvAUMZ4iq95yMJP9MKgeazK0yEw4vk85blf2y7oNOM40le9UYv6q/DBe0ssvKQvpMTgzD5HBaj375E+511CJgm4nCG7qIOXZAP92KYqe1pcv1SZaD6itNOYiLoLUAwB+ZQFUrsICFsoSqBIDuKp1qM6WFW3ozJ9w4HvHv/A= X-Microsoft-Antispam: UriScan:;BCL:0;PCL:0;RULEID:;SRVR:DB5PR02MB0774; X-Microsoft-Antispam-PRVS: X-Exchange-Antispam-Report-Test: UriScan:; X-Exchange-Antispam-Report-CFA-Test: BCL:0;PCL:0;RULEID:(601004)(5005006)(3002001);SRVR:DB5PR02MB0774;BCL:0;PCL:0;RULEID:;SRVR:DB5PR02MB0774; X-Microsoft-Exchange-Diagnostics: 1;DB5PR02MB0774;4:ODqAB4vr/D3SO1U3gsJajW+1kcmeiD8whOtEIQnV0+HDhfMRMgaVkVEir8xu52155crYjgWyCTWb5RhV5jjr1SNJhl+o28DMK7xisXUnX56j3WwitsObSSuUfJIXWq9IyhPSgJgJLUIblg4L7WzcdFhynVC5NcJPyN1Kr184nKaAJacHB+yUMM8gPEFjwMQPDDkVhNPa1j7Q9ymr1iPe2dM4knTtgIuAu9egJ7eHv7O0veFqBNsAMXdgIsvHm2zoxX2nCn/BY1QVX3oMadUCCw2uoXmx7yNlsJPy61N44fU= X-Forefront-PRVS: 06339BAE63 X-Forefront-Antispam-Report: SFV:NSPM;SFS:(10009020)(6009001)(6049001)(377454003)(24454002)(51704005)(479174004)(4001350100001)(5001770100001)(117156001)(77096005)(23746002)(36756003)(92566002)(42186005)(33656002)(15975445007)(40100003)(122386002)(59896002)(65956001)(87976001)(66066001)(50466002)(19580395003)(80316001)(65816999)(2950100001)(189998001)(65806001)(47776003)(93886004)(46102003)(54356999)(87266999)(50986999)(76176999)(5001960100002)(83506001)(86362001)(77156002)(62966003)(19580405001)(142933001)(18886065003);DIR:OUT;SFP:1101;SCL:1;SRVR:DB5PR02MB0774;H:[192.168.1.157];FPR:;SPF:None;MLV:sfv;LANG:en; X-Microsoft-Exchange-Diagnostics: =?Windows-1252?Q?1;DB5PR02MB0774;23:lHrmHEWXlv9F0y44Z7h5Z1q36kEE23jP5wJKT?= =?Windows-1252?Q?rGFKNApZTYfCo2PkrUUTzBGJONvtoq90FtdCKDnDdw1QAFbrfJWKi79c?= =?Windows-1252?Q?kM1RdZKUiK3ONrozX430GX5dFej/ItQkq+TNNicfWtvoNfK144m1yRga?= =?Windows-1252?Q?7ooJQujoO9H53RnY1zidjunDnwxGvim+r3tGvIjKOvSh0o8mSGG0Wm+X?= =?Windows-1252?Q?Flpc5ndE53jmlfYC9SXnPozNjfSTC8jmJy56L4aM//bpT7RXGJs2GfGu?= =?Windows-1252?Q?GMRWbbw0FFza+N4bJyAmHHs4CZZoB1+LRkHGaiEwDCakvcvSSX/OiMl/?= =?Windows-1252?Q?Vmxh3fMM8tBxxnLCH+uw7pjPzaRJ3YEqv2dymhTQPJ5M1324B8Cjfvbj?= =?Windows-1252?Q?YKTBFBxIIkJYa4TY5WlZg3A3vHTkUzy4r7mpM3bZx05iaLXbp5j/IrWh?= =?Windows-1252?Q?13oAWmLBhyCIVNuK2QJeoO/CbkpqgX83egpUfjsDf4E4gLLzvjEHmCmX?= =?Windows-1252?Q?gau8bL0K1fnL3LPk8IpW4bWAHdh+Y/dYtuHwYzoHdzlJ88V+YBcNPcKH?= =?Windows-1252?Q?THv347iANWVt0M0WvlOkaSH+NI86TMKl4n2XE0aXQGonhq9TgHhv3upd?= =?Windows-1252?Q?1k3TgObZ5TqCod39JouwKDNnaHuUgeitvyORoAQeD+W6ys/FvrzSaHpp?= =?Windows-1252?Q?Pcwdt0Favn6yjKrySCnWBlL4J2LGdcNPBGMTv2f+SzLolR87W9PMr386?= =?Windows-1252?Q?FyVVGYEmIL25+ygIdK41wMPNotghb9X6JAMLNbvbomP7d87oCgSKN1IV?= =?Windows-1252?Q?x2z3luLPXg4yTFsenVFCO1DCYV4+ltnCAFMGwv9/It81LENgfAcHXjKR?= =?Windows-1252?Q?dJscv1pMW2WVwjIYBJuOLJxQJ+Eg2YpIWkLnHzGfExdl84LSdeyJWwZY?= =?Windows-1252?Q?s6HD7VSjxjlb/0okviLrKzHxC6+vm4xJ33wd7UFbdhCbG/GCjk87h445?= =?Windows-1252?Q?ks1EqWv1SaIZGQL2ICpIsANDLGzg15RunjnHancPgAEjpgCmCTityOVH?= =?Windows-1252?Q?OZzjT2xumOG3oAAkzz76HzJSn5JkvujwYqfsr+h7stSmrnteiKVbWh/I?= =?Windows-1252?Q?mvjITevUL8ty7qLjDdc/k2C7FI/iHyOWAIp4YckTL5Esn/MkVy7ECkvz?= =?Windows-1252?Q?hc/+JC4+5c4h5m0D9eQXbat6eBbYT0HoNhytulGArenl+A1za0soQles?= =?Windows-1252?Q?K9zB7X0k8WioX3+kw=3D=3D?= X-Microsoft-Exchange-Diagnostics: 1;DB5PR02MB0774;5:cRbH1nr64WGRMw2oDWt/ZpmefpjPjqHVAD+ZgZSdIAfZ0aP2kpWSkPetj0FKT/haNw6CBcOKwLVTiVeptFqHuQ0FZf6y5qCEPLkfsSAGL/CEKaqcqxYB04RYVf1KpfBT11MJK+n+aed9HGjYGHrKgA==;24:F3FGq4FSHtdwKdtsdjib2CLDNC+f825TfqBF9bsIaWn1DzhhyBHEYy0YbVvmVSIewKxg7RVf+pDCjmRL+dZ2hjt0BAUg1bPEwTA9gHeZthc=;20:DdoC/azqsLMinL73y9PWlSMeq0YJOsOXl0J7RKDj4z1j5VTp2yMK2NreeViWrL9i+hnxT9hxdenIJPRUngZtug== SpamDiagnosticOutput: 1:23 SpamDiagnosticMetadata: NSPM X-OriginatorOrg: ezchip.com X-MS-Exchange-CrossTenant-OriginalArrivalTime: 10 Jul 2015 13:33:57.5908 (UTC) X-MS-Exchange-CrossTenant-FromEntityHeader: Hosted X-MS-Exchange-Transport-CrossTenantHeadersStamped: DB5PR02MB0774 Sender: linux-kernel-owner@vger.kernel.org List-ID: X-Mailing-List: linux-kernel@vger.kernel.org On 7/10/2015 6:39 AM, Peter Zijlstra wrote: > On Fri, Jul 10, 2015 at 11:10:33AM +0200, Geert Uytterhoeven wrote: >> Hi Peter, >> >> On Thu, Jul 9, 2015 at 7:29 PM, Peter Zijlstra wrote: >>> --- a/include/linux/atomic.h >>> +++ b/include/linux/atomic.h >>> @@ -28,6 +28,23 @@ static inline int atomic_add_unless(atom >>> #define atomic_inc_not_zero(v) atomic_add_unless((v), 1, 0) >>> #endif >>> >>> +#ifndef atomic_nand >>> +static inline void atomic_nand(int i, atomic_t *v) >>> +{ >>> + atomic_and(~i, v); >> That sounds like a misnomer... >> >> Your NAND is "A & ~B", while my[*] NAND is "~(A & B)"? >> >> [*] https://en.wikipedia.org/wiki/NAND_logic > Right you are. > >> What about atomic_clear()? (Is atomic_bic() too ARM-centric?) > atomic_and_not() ? I've seen this as ANDN (as opposed to NAND). That's the name I used in the tilepro atomics as the thing that implements the bitmask clear operation. SPARC also has an "andn" instruction with this semantics. -- Chris Metcalf, EZChip Semiconductor http://www.ezchip.com