57 lines
1018 B
ArmAsm
57 lines
1018 B
ArmAsm
|
/* SPDX-License-Identifier: GPL-2.0-only */
|
||
|
|
||
|
#include <asm/asmmacro.h>
|
||
|
#include <linux/export.h>
|
||
|
#include <linux/linkage.h>
|
||
|
|
||
|
SYM_FUNC_START(__ashlti3)
|
||
|
srli.d t2, a0, 1
|
||
|
nor t3, zero, a2
|
||
|
sll.d t1, a1, a2
|
||
|
srl.d t2, t2, t3
|
||
|
andi t0, a2, 64
|
||
|
sll.d a0, a0, a2
|
||
|
or t1, t2, t1
|
||
|
maskeqz a1, a0, t0
|
||
|
masknez a0, a0, t0
|
||
|
masknez t0, t1, t0
|
||
|
or a1, t0, a1
|
||
|
jr ra
|
||
|
SYM_FUNC_END(__ashlti3)
|
||
|
EXPORT_SYMBOL(__ashlti3)
|
||
|
|
||
|
SYM_FUNC_START(__ashrti3)
|
||
|
nor t3, zero, a2
|
||
|
slli.d t2, a1, 1
|
||
|
srl.d t1, a0, a2
|
||
|
sll.d t2, t2, t3
|
||
|
andi t0, a2, 64
|
||
|
or t1, t2, t1
|
||
|
sra.d a2, a1, a2
|
||
|
srai.d a1, a1, 63
|
||
|
maskeqz a0, a2, t0
|
||
|
maskeqz a1, a1, t0
|
||
|
masknez a2, a2, t0
|
||
|
masknez t0, t1, t0
|
||
|
or a1, a1, a2
|
||
|
or a0, t0, a0
|
||
|
jr ra
|
||
|
SYM_FUNC_END(__ashrti3)
|
||
|
EXPORT_SYMBOL(__ashrti3)
|
||
|
|
||
|
SYM_FUNC_START(__lshrti3)
|
||
|
slli.d t2, a1, 1
|
||
|
nor t3, zero, a2
|
||
|
srl.d t1, a0, a2
|
||
|
sll.d t2, t2, t3
|
||
|
andi t0, a2, 64
|
||
|
srl.d a1, a1, a2
|
||
|
or t1, t2, t1
|
||
|
maskeqz a0, a1, t0
|
||
|
masknez a1, a1, t0
|
||
|
masknez t0, t1, t0
|
||
|
or a0, t0, a0
|
||
|
jr ra
|
||
|
SYM_FUNC_END(__lshrti3)
|
||
|
EXPORT_SYMBOL(__lshrti3)
|