root/arch/arm64/lib/tishift.S

/* [<][>][^][v][top][bottom][index][help] */
   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 
   8 #include <asm/assembler.h>
   9 
  10 ENTRY(__ashlti3)
  11         cbz     x2, 1f
  12         mov     x3, #64
  13         sub     x3, x3, x2
  14         cmp     x3, #0
  15         b.le    2f
  16         lsl     x1, x1, x2
  17         lsr     x3, x0, x3
  18         lsl     x2, x0, x2
  19         orr     x1, x1, x3
  20         mov     x0, x2
  21 1:
  22         ret
  23 2:
  24         neg     w1, w3
  25         mov     x2, #0
  26         lsl     x1, x0, x1
  27         mov     x0, x2
  28         ret
  29 ENDPROC(__ashlti3)
  30 EXPORT_SYMBOL(__ashlti3)
  31 
  32 ENTRY(__ashrti3)
  33         cbz     x2, 1f
  34         mov     x3, #64
  35         sub     x3, x3, x2
  36         cmp     x3, #0
  37         b.le    2f
  38         lsr     x0, x0, x2
  39         lsl     x3, x1, x3
  40         asr     x2, x1, x2
  41         orr     x0, x0, x3
  42         mov     x1, x2
  43 1:
  44         ret
  45 2:
  46         neg     w0, w3
  47         asr     x2, x1, #63
  48         asr     x0, x1, x0
  49         mov     x1, x2
  50         ret
  51 ENDPROC(__ashrti3)
  52 EXPORT_SYMBOL(__ashrti3)
  53 
  54 ENTRY(__lshrti3)
  55         cbz     x2, 1f
  56         mov     x3, #64
  57         sub     x3, x3, x2
  58         cmp     x3, #0
  59         b.le    2f
  60         lsr     x0, x0, x2
  61         lsl     x3, x1, x3
  62         lsr     x2, x1, x2
  63         orr     x0, x0, x3
  64         mov     x1, x2
  65 1:
  66         ret
  67 2:
  68         neg     w0, w3
  69         mov     x2, #0
  70         lsr     x0, x1, x0
  71         mov     x1, x2
  72         ret
  73 ENDPROC(__lshrti3)
  74 EXPORT_SYMBOL(__lshrti3)

/* [<][>][^][v][top][bottom][index][help] */