12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576 |
- /* SPDX-License-Identifier: GPL-2.0-only */
- /*
- * Copyright (C) 2018 Free Software Foundation, Inc.
- */
- #include <linux/linkage.h>
- #include <asm-generic/export.h>
- SYM_FUNC_START(__lshrti3)
- beqz a2, .L1
- li a5,64
- sub a5,a5,a2
- sext.w a4,a5
- blez a5, .L2
- sext.w a2,a2
- srl a0,a0,a2
- sll a4,a1,a4
- srl a2,a1,a2
- or a0,a0,a4
- mv a1,a2
- .L1:
- ret
- .L2:
- negw a0,a4
- li a2,0
- srl a0,a1,a0
- mv a1,a2
- ret
- SYM_FUNC_END(__lshrti3)
- EXPORT_SYMBOL(__lshrti3)
- SYM_FUNC_START(__ashrti3)
- beqz a2, .L3
- li a5,64
- sub a5,a5,a2
- sext.w a4,a5
- blez a5, .L4
- sext.w a2,a2
- srl a0,a0,a2
- sll a4,a1,a4
- sra a2,a1,a2
- or a0,a0,a4
- mv a1,a2
- .L3:
- ret
- .L4:
- negw a0,a4
- srai a2,a1,0x3f
- sra a0,a1,a0
- mv a1,a2
- ret
- SYM_FUNC_END(__ashrti3)
- EXPORT_SYMBOL(__ashrti3)
- SYM_FUNC_START(__ashlti3)
- beqz a2, .L5
- li a5,64
- sub a5,a5,a2
- sext.w a4,a5
- blez a5, .L6
- sext.w a2,a2
- sll a1,a1,a2
- srl a4,a0,a4
- sll a2,a0,a2
- or a1,a1,a4
- mv a0,a2
- .L5:
- ret
- .L6:
- negw a1,a4
- li a2,0
- sll a1,a0,a1
- mv a0,a2
- ret
- SYM_FUNC_END(__ashlti3)
- EXPORT_SYMBOL(__ashlti3)
|