1/* 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) 70