linux-kernel.vger.kernel.org archive mirror
 help / color / mirror / Atom feed
* [PATCH 00/10] x86: use gcc 6+ asm flag output feature
@ 2016-06-07 23:30 H. Peter Anvin
  2016-06-07 23:31 ` [PATCH 01/10] x86, bitops: remove use of "sbb" to return CF H. Peter Anvin
                   ` (11 more replies)
  0 siblings, 12 replies; 43+ messages in thread
From: H. Peter Anvin @ 2016-06-07 23:30 UTC (permalink / raw)
  To: Ingo Molnar, Thomas Gleixner, H. Peter Anvin, Linux Kernel Mailing List
  Cc: Peter Zijlstra, Andy Lutomirski, Borislav Petkov

From: "H. Peter Anvin" <hpa@zytor.com>

gcc 6+ has the ability to let flags (actually, conditions, which are
specific combinations of flags) to be used directly as asm() outputs.
The syntax for that is "=@cc<cc>" where <cc> is the same set of
letters that would be used in a j<cc> or set<cc> instruction
(e.g. "=@ccz" to test the ZF flag.)

This patchset by itself reduces the size of the x86-64 kernel by
0.12%, from a baseline of 4.7-rc2 built with gcc 6.1 (first line is
with the patchset, the second one is without):

     text       data       bss        dec       hex filename
     
 68245656   41004339  20533248  129783243   7bc55cb o.i386-allconfig/vmlinux
 68355716   41008499  20533248  129897463   7be13f7 o.i386-allconfig/vmlinux

127384005  129742359  38150144  295276508  11998fdc o.x86_64-allconfig/vmlinux
127538765  129742295  38150144  295431204  119bec24 o.x86_64-allconfig/vmlinux

^ permalink raw reply	[flat|nested] 43+ messages in thread
* [PATCH v2 07/10] x86, asm: Use CC_SET()/CC_OUT() in <asm/percpu.h>
@ 2016-06-08 19:38 H. Peter Anvin
  2016-06-08 19:48 ` [tip:x86/asm] " tip-bot for H. Peter Anvin
  0 siblings, 1 reply; 43+ messages in thread
From: H. Peter Anvin @ 2016-06-08 19:38 UTC (permalink / raw)
  To: Ingo Molnar, Thomas Gleixner, H. Peter Anvin, Linux Kernel Mailing List
  Cc: Andy Lutomirski, Borislav Petkov

From: "H. Peter Anvin" <hpa@zytor.com>

Remove open-coded uses of set instructions to use CC_SET()/CC_OUT() in
<asm/percpu.h>.

Signed-off-by: H. Peter Anvin <hpa@zytor.com>
Reviewed-by: Andy Lutomirski <luto@kernel.org>
Reviewed-by: Borislav Petkov <bp@suse.de>
Acked-by: Peter Zijlstra (Intel) <peterz@infradead.org>
---
 arch/x86/include/asm/percpu.h | 9 +++++----
 1 file changed, 5 insertions(+), 4 deletions(-)

diff --git a/arch/x86/include/asm/percpu.h b/arch/x86/include/asm/percpu.h
index 184d7f3..e02e3f8 100644
--- a/arch/x86/include/asm/percpu.h
+++ b/arch/x86/include/asm/percpu.h
@@ -511,8 +511,9 @@ do {									\
 #define x86_test_and_clear_bit_percpu(bit, var)				\
 ({									\
 	bool old__;							\
-	asm volatile("btr %2,"__percpu_arg(1)"\n\tsetc %0"		\
-		     : "=qm" (old__), "+m" (var)			\
+	asm volatile("btr %2,"__percpu_arg(1)"\n\t"			\
+		     CC_SET(c)						\
+		     : CC_OUT(c) (old__), "+m" (var)			\
 		     : "dIr" (bit));					\
 	old__;								\
 })
@@ -535,8 +536,8 @@ static inline bool x86_this_cpu_variable_test_bit(int nr,
 	bool oldbit;
 
 	asm volatile("bt "__percpu_arg(2)",%1\n\t"
-			"setc %0"
-			: "=qm" (oldbit)
+			CC_SET(c)
+			: CC_OUT(c) (oldbit)
 			: "m" (*(unsigned long *)addr), "Ir" (nr));
 
 	return oldbit;
-- 
2.7.3.0.11.gd79db92

^ permalink raw reply related	[flat|nested] 43+ messages in thread

end of thread, other threads:[~2016-06-08 19:49 UTC | newest]

Thread overview: 43+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2016-06-07 23:30 [PATCH 00/10] x86: use gcc 6+ asm flag output feature H. Peter Anvin
2016-06-07 23:31 ` [PATCH 01/10] x86, bitops: remove use of "sbb" to return CF H. Peter Anvin
2016-06-07 23:39   ` [tip:x86/asm] " tip-bot for H. Peter Anvin
2016-06-07 23:31 ` [PATCH 02/10] x86, asm: use bool for bitops and other assembly outputs H. Peter Anvin
2016-06-07 23:40   ` [tip:x86/asm] " tip-bot for H. Peter Anvin
2016-06-08  7:49   ` [PATCH 02/10] " Peter Zijlstra
2016-06-08  8:28     ` Ingo Molnar
2016-06-08  8:33       ` Ingo Molnar
2016-06-08  8:55         ` H. Peter Anvin
2016-06-08  9:01           ` Ingo Molnar
2016-06-08  9:12             ` H. Peter Anvin
2016-06-08  9:20               ` Ingo Molnar
2016-06-08  9:31                 ` H. Peter Anvin
2016-06-08  9:39                   ` Peter Zijlstra
2016-06-08  9:43                     ` H. Peter Anvin
2016-06-08  9:40                 ` H. Peter Anvin
2016-06-08  8:58       ` H. Peter Anvin
2016-06-08  9:06         ` Ingo Molnar
2016-06-07 23:31 ` [PATCH 03/10] x86, asm: change the GEN_*_RMWcc() macros to not quote the condition H. Peter Anvin
2016-06-07 23:40   ` [tip:x86/asm] " tip-bot for H. Peter Anvin
2016-06-07 23:31 ` [PATCH 04/10] x86, asm: define CC_SET() and CC_OUT() macros H. Peter Anvin
2016-06-07 23:40   ` [tip:x86/asm] " tip-bot for H. Peter Anvin
2016-06-08  5:09   ` [PATCH 04/10] " Andy Lutomirski
2016-06-08 19:29     ` H. Peter Anvin
2016-06-08 19:34       ` H. Peter Anvin
2016-06-08 19:35         ` Borislav Petkov
2016-06-07 23:31 ` [PATCH 05/10] x86, asm: change GEN_*_RMWcc() to use CC_SET()/CC_OUT() H. Peter Anvin
2016-06-07 23:41   ` [tip:x86/asm] " tip-bot for H. Peter Anvin
2016-06-07 23:31 ` [PATCH 06/10] x86, asm: Use CC_SET()/CC_OUT() in <asm/bitops.h> H. Peter Anvin
2016-06-07 23:41   ` [tip:x86/asm] " tip-bot for H. Peter Anvin
2016-06-07 23:31 ` [PATCH 07/10] x86, asm: Use CC_SET()/CC_OUT() in <asm/percpu.h> H. Peter Anvin
2016-06-07 23:42   ` [tip:x86/asm] " tip-bot for H. Peter Anvin
2016-06-07 23:31 ` [PATCH 08/10] x86, asm: Use CC_SET()/CC_OUT() in <asm/rwsem.h> H. Peter Anvin
2016-06-07 23:42   ` [tip:x86/asm] " tip-bot for H. Peter Anvin
2016-06-07 23:31 ` [PATCH 09/10] x86, asm: Use CC_SET()/CC_OUT() and static_cpu_has() in archrandom.h H. Peter Anvin
2016-06-07 23:42   ` [tip:x86/asm] " tip-bot for H. Peter Anvin
2016-06-08  5:12   ` [PATCH 09/10] " Andy Lutomirski
2016-06-07 23:31 ` [PATCH 10/10] x86, asm, boot: Use CC_SET()/CC_OUT() in arch/x86/boot/boot.h H. Peter Anvin
2016-06-07 23:43   ` [tip:x86/asm] " tip-bot for H. Peter Anvin
2016-06-08  8:00 ` [PATCH 00/10] x86: use gcc 6+ asm flag output feature Peter Zijlstra
2016-06-08  8:56   ` H. Peter Anvin
2016-06-08  8:26 ` Ingo Molnar
2016-06-08 19:38 [PATCH v2 07/10] x86, asm: Use CC_SET()/CC_OUT() in <asm/percpu.h> H. Peter Anvin
2016-06-08 19:48 ` [tip:x86/asm] " tip-bot for H. Peter Anvin

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).