^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1) /* SPDX-License-Identifier: GPL-2.0-only */
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2) /*
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 3) * Copyright (C) 2018 Free Software Foundation, Inc.
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 4) */
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 5)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 6) #include <linux/linkage.h>
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 7) #include <asm-generic/export.h>
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 8)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 9) SYM_FUNC_START(__lshrti3)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 10) beqz a2, .L1
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 11) li a5,64
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 12) sub a5,a5,a2
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 13) sext.w a4,a5
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 14) blez a5, .L2
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 15) sext.w a2,a2
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 16) srl a0,a0,a2
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 17) sll a4,a1,a4
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 18) srl a2,a1,a2
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 19) or a0,a0,a4
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 20) mv a1,a2
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 21) .L1:
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 22) ret
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 23) .L2:
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 24) negw a0,a4
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 25) li a2,0
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 26) srl a0,a1,a0
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 27) mv a1,a2
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 28) ret
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 29) SYM_FUNC_END(__lshrti3)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 30) EXPORT_SYMBOL(__lshrti3)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 31)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 32) SYM_FUNC_START(__ashrti3)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 33) beqz a2, .L3
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 34) li a5,64
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 35) sub a5,a5,a2
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 36) sext.w a4,a5
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 37) blez a5, .L4
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 38) sext.w a2,a2
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 39) srl a0,a0,a2
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 40) sll a4,a1,a4
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 41) sra a2,a1,a2
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 42) or a0,a0,a4
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 43) mv a1,a2
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 44) .L3:
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 45) ret
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 46) .L4:
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 47) negw a0,a4
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 48) srai a2,a1,0x3f
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 49) sra a0,a1,a0
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 50) mv a1,a2
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 51) ret
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 52) SYM_FUNC_END(__ashrti3)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 53) EXPORT_SYMBOL(__ashrti3)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 54)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 55) SYM_FUNC_START(__ashlti3)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 56) beqz a2, .L5
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 57) li a5,64
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 58) sub a5,a5,a2
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 59) sext.w a4,a5
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 60) blez a5, .L6
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 61) sext.w a2,a2
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 62) sll a1,a1,a2
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 63) srl a4,a0,a4
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 64) sll a2,a0,a2
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 65) or a1,a1,a4
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 66) mv a0,a2
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 67) .L5:
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 68) ret
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 69) .L6:
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 70) negw a1,a4
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 71) li a2,0
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 72) sll a1,a0,a1
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 73) mv a0,a2
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 74) ret
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 75) SYM_FUNC_END(__ashlti3)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 76) EXPORT_SYMBOL(__ashlti3)