blob: 0fdff97794debbdfaae4a146a99b4550e670ab5e [file] [log] [blame]
xjb04a4022021-11-25 15:01:52 +08001/* SPDX-License-Identifier: (GPL-2.0 OR BSD-3-Clause)
2 *
3 * Copyright (C) 2017-2018 Jason A. Donenfeld <Jason@zx2c4.com>. All Rights Reserved.
4 */
5
6#include <linux/linkage.h>
7
8ENTRY(__ashlti3)
9 cbz x2, 1f
10 mov x3, #64
11 sub x3, x3, x2
12 cmp x3, #0
13 b.le 2f
14 lsl x1, x1, x2
15 lsr x3, x0, x3
16 lsl x2, x0, x2
17 orr x1, x1, x3
18 mov x0, x2
191:
20 ret
212:
22 neg w1, w3
23 mov x2, #0
24 lsl x1, x0, x1
25 mov x0, x2
26 ret
27ENDPROC(__ashlti3)
28
29ENTRY(__ashrti3)
30 cbz x2, 1f
31 mov x3, #64
32 sub x3, x3, x2
33 cmp x3, #0
34 b.le 2f
35 lsr x0, x0, x2
36 lsl x3, x1, x3
37 asr x2, x1, x2
38 orr x0, x0, x3
39 mov x1, x2
401:
41 ret
422:
43 neg w0, w3
44 asr x2, x1, #63
45 asr x0, x1, x0
46 mov x1, x2
47 ret
48ENDPROC(__ashrti3)
49
50ENTRY(__lshrti3)
51 cbz x2, 1f
52 mov x3, #64
53 sub x3, x3, x2
54 cmp x3, #0
55 b.le 2f
56 lsr x0, x0, x2
57 lsl x3, x1, x3
58 lsr x2, x1, x2
59 orr x0, x0, x3
60 mov x1, x2
611:
62 ret
632:
64 neg w0, w3
65 mov x2, #0
66 lsr x0, x1, x0
67 mov x1, x2
68 ret
69ENDPROC(__lshrti3)