]> asedeno.scripts.mit.edu Git - linux.git/commitdiff
sparc64: SPARC optimized fls function
authorVijay Kumar <vijay.ac.kumar@oracle.com>
Wed, 11 Oct 2017 18:50:04 +0000 (12:50 -0600)
committerDavid S. Miller <davem@davemloft.net>
Wed, 15 Nov 2017 05:26:46 +0000 (14:26 +0900)
Defined SPARC optimized fls using lzcnt opcode.

Signed-off-by: Vijay Kumar <vijay.ac.kumar@oracle.com>
Signed-off-by: David S. Miller <davem@davemloft.net>
arch/sparc/lib/Makefile
arch/sparc/lib/NG4fls.S [new file with mode: 0644]

index 5380c59854209c7a050178ab49ce0c21c723dc43..2823b8e530ed631c01b3012ce3fba67a425b5513 100644 (file)
@@ -18,6 +18,7 @@ lib-$(CONFIG_SPARC32) += muldi3.o bitext.o cmpdi2.o
 lib-$(CONFIG_SPARC64) += multi3.o
 lib-$(CONFIG_SPARC64) += fls.o
 lib-$(CONFIG_SPARC64) += fls64.o
+obj-$(CONFIG_SPARC64) += NG4fls.o
 
 lib-$(CONFIG_SPARC64) += copy_page.o clear_page.o bzero.o
 lib-$(CONFIG_SPARC64) += csum_copy.o csum_copy_from_user.o csum_copy_to_user.o
diff --git a/arch/sparc/lib/NG4fls.S b/arch/sparc/lib/NG4fls.S
new file mode 100644 (file)
index 0000000..bc17b65
--- /dev/null
@@ -0,0 +1,20 @@
+/* NG4fls.S: SPARC optimized fls and __fls for T4 and above.
+ *
+ * Copyright (c) 2017, Oracle and/or its affiliates. All rights reserved.
+ */
+
+#include <linux/linkage.h>
+
+#define LZCNT_O0_G2    \
+       .word   0x85b002e8
+
+       .text
+       .register       %g2, #scratch
+       .register       %g3, #scratch
+
+ENTRY(NG4fls)
+       LZCNT_O0_G2     !lzcnt  %o0, %g2
+       mov     64, %g3
+       retl
+        sub    %g3, %g2, %o0
+ENDPROC(NG4fls)