* [PATCH] x86/bitops: Implement variable_ffz() as variable__ffs(~word)
@ 2025-03-27 9:56 Uros Bizjak
2025-03-28 22:36 ` [tip: x86/asm] x86/bitops: Simplify " tip-bot2 for Uros Bizjak
0 siblings, 1 reply; 2+ messages in thread
From: Uros Bizjak @ 2025-03-27 9:56 UTC (permalink / raw)
To: x86, linux-kernel
Cc: Uros Bizjak, Thomas Gleixner, Ingo Molnar, Borislav Petkov,
Dave Hansen, H. Peter Anvin
Find first zero (FFZ) can be implemented by negating the
input and using find first set (FFS).
No functional changes intended.
Signed-off-by: Uros Bizjak <ubizjak@gmail.com>
Cc: Thomas Gleixner <tglx@linutronix.de>
Cc: Ingo Molnar <mingo@kernel.org>
Cc: Borislav Petkov <bp@alien8.de>
Cc: Dave Hansen <dave.hansen@linux.intel.com>
Cc: "H. Peter Anvin" <hpa@zytor.com>
---
arch/x86/include/asm/bitops.h | 5 +----
1 file changed, 1 insertion(+), 4 deletions(-)
diff --git a/arch/x86/include/asm/bitops.h b/arch/x86/include/asm/bitops.h
index bbaf75ea6703..eebbc8889e70 100644
--- a/arch/x86/include/asm/bitops.h
+++ b/arch/x86/include/asm/bitops.h
@@ -267,10 +267,7 @@ static __always_inline unsigned long variable__ffs(unsigned long word)
static __always_inline unsigned long variable_ffz(unsigned long word)
{
- asm("tzcnt %1,%0"
- : "=r" (word)
- : "r" (~word));
- return word;
+ return variable__ffs(~word);
}
/**
--
2.49.0
^ permalink raw reply related [flat|nested] 2+ messages in thread
* [tip: x86/asm] x86/bitops: Simplify variable_ffz() as variable__ffs(~word)
2025-03-27 9:56 [PATCH] x86/bitops: Implement variable_ffz() as variable__ffs(~word) Uros Bizjak
@ 2025-03-28 22:36 ` tip-bot2 for Uros Bizjak
0 siblings, 0 replies; 2+ messages in thread
From: tip-bot2 for Uros Bizjak @ 2025-03-28 22:36 UTC (permalink / raw)
To: linux-tip-commits
Cc: Uros Bizjak, Ingo Molnar, Brian Gerst, Juergen Gross,
H. Peter Anvin, Josh Poimboeuf, x86, linux-kernel
The following commit has been merged into the x86/asm branch of tip:
Commit-ID: e29c5d0e5dc35ed8b8920b573925d8aa2f8bafb0
Gitweb: https://git.kernel.org/tip/e29c5d0e5dc35ed8b8920b573925d8aa2f8bafb0
Author: Uros Bizjak <ubizjak@gmail.com>
AuthorDate: Thu, 27 Mar 2025 10:56:28 +01:00
Committer: Ingo Molnar <mingo@kernel.org>
CommitterDate: Fri, 28 Mar 2025 23:24:16 +01:00
x86/bitops: Simplify variable_ffz() as variable__ffs(~word)
Find first zero (FFZ) can be implemented by negating the
input and using find first set (FFS).
Before/after code generation comparison on ffz()-using
kernel code shows that code generation has not changed:
# kernel/signal.o:
text data bss dec hex filename
42121 3472 8 45601 b221 signal.o.before
42121 3472 8 45601 b221 signal.o.after
md5:
ce4c31e1bce96af19b62a5f9659842f1 signal.o.before.asm
ce4c31e1bce96af19b62a5f9659842f1 signal.o.after.asm
[ mingo: Added code generation check. ]
Signed-off-by: Uros Bizjak <ubizjak@gmail.com>
Signed-off-by: Ingo Molnar <mingo@kernel.org>
Cc: Brian Gerst <brgerst@gmail.com>
Cc: Juergen Gross <jgross@suse.com>
Cc: H. Peter Anvin <hpa@zytor.com>
Cc: Josh Poimboeuf <jpoimboe@redhat.com>
Link: https://lore.kernel.org/r/20250327095641.131483-1-ubizjak@gmail.com
---
arch/x86/include/asm/bitops.h | 5 +----
1 file changed, 1 insertion(+), 4 deletions(-)
diff --git a/arch/x86/include/asm/bitops.h b/arch/x86/include/asm/bitops.h
index bbaf75e..eebbc88 100644
--- a/arch/x86/include/asm/bitops.h
+++ b/arch/x86/include/asm/bitops.h
@@ -267,10 +267,7 @@ static __always_inline unsigned long variable__ffs(unsigned long word)
static __always_inline unsigned long variable_ffz(unsigned long word)
{
- asm("tzcnt %1,%0"
- : "=r" (word)
- : "r" (~word));
- return word;
+ return variable__ffs(~word);
}
/**
^ permalink raw reply related [flat|nested] 2+ messages in thread
end of thread, other threads:[~2025-03-28 22:36 UTC | newest]
Thread overview: 2+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2025-03-27 9:56 [PATCH] x86/bitops: Implement variable_ffz() as variable__ffs(~word) Uros Bizjak
2025-03-28 22:36 ` [tip: x86/asm] x86/bitops: Simplify " tip-bot2 for Uros Bizjak
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox