xref: /linux/arch/riscv/lib/tishift.S (revision a20eefaee64610541d125cd2c10fa25e278f0bee)
1/* SPDX-License-Identifier: GPL-2.0-only */
2/*
3 * Copyright (C) 2018 Free Software Foundation, Inc.
4 */
5
6#include <linux/linkage.h>
7
8ENTRY(__lshrti3)
9	beqz	a2, .L1
10	li	a5,64
11	sub	a5,a5,a2
12	addi	sp,sp,-16
13	sext.w	a4,a5
14	blez	a5, .L2
15	sext.w	a2,a2
16	sll	a4,a1,a4
17	srl	a0,a0,a2
18	srl	a1,a1,a2
19	or	a0,a0,a4
20	sd	a1,8(sp)
21	sd	a0,0(sp)
22	ld	a0,0(sp)
23	ld	a1,8(sp)
24	addi	sp,sp,16
25	ret
26.L1:
27	ret
28.L2:
29	negw	a4,a4
30	srl	a1,a1,a4
31	sd	a1,0(sp)
32	sd	zero,8(sp)
33	ld	a0,0(sp)
34	ld	a1,8(sp)
35	addi	sp,sp,16
36	ret
37ENDPROC(__lshrti3)
38