31 lines
		
	
	
		
			495 B
		
	
	
	
		
			ArmAsm
		
	
	
	
	
	
			
		
		
	
	
			31 lines
		
	
	
		
			495 B
		
	
	
	
		
			ArmAsm
		
	
	
	
	
	
| /* 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)
 | |
| 
 | |
| ENTRY(__NG4fls)
 | |
| 	brz,pn	%o0, 1f
 | |
| 	LZCNT_O0_G2	!lzcnt	%o0, %g2
 | |
| 	mov	63, %g3
 | |
| 	sub	%g3, %g2, %o0
 | |
| 1:
 | |
| 	retl
 | |
| 	 nop
 | |
| ENDPROC(__NG4fls)
 | 
