aboutsummaryrefslogtreecommitdiff
path: root/arch/sparc/lib/NG4fls.S
diff options
context:
space:
mode:
authorGravatar Vijay Kumar <vijay.ac.kumar@oracle.com> 2017-10-11 12:50:04 -0600
committerGravatar David S. Miller <davem@davemloft.net> 2017-11-15 14:26:46 +0900
commit70cbec0c53739e170ea9c418e740f007ab5bca52 (patch)
treeb5b37614b6a07b8a1b71b27914f8730075b8e0e5 /arch/sparc/lib/NG4fls.S
parentsparc64: Define SPARC default __fls function (diff)
downloadlinux-70cbec0c53739e170ea9c418e740f007ab5bca52.tar.gz
linux-70cbec0c53739e170ea9c418e740f007ab5bca52.tar.bz2
linux-70cbec0c53739e170ea9c418e740f007ab5bca52.zip
sparc64: SPARC optimized fls function
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>
Diffstat (limited to 'arch/sparc/lib/NG4fls.S')
-rw-r--r--arch/sparc/lib/NG4fls.S20
1 files changed, 20 insertions, 0 deletions
diff --git a/arch/sparc/lib/NG4fls.S b/arch/sparc/lib/NG4fls.S
new file mode 100644
index 000000000000..bc17b65f1052
--- /dev/null
+++ b/arch/sparc/lib/NG4fls.S
@@ -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)