root/arch/sh/lib/ashlsi3.S

/* [<][>][^][v][top][bottom][index][help] */
   1 /* SPDX-License-Identifier: GPL-2.0+ WITH GCC-exception-2.0
   2 
   3    Copyright (C) 1994, 1995, 1997, 1998, 1999, 2000, 2001, 2002, 2003,
   4    2004, 2005, 2006
   5    Free Software Foundation, Inc.
   6 */
   7 
   8 !! libgcc routines for the Renesas / SuperH SH CPUs.
   9 !! Contributed by Steve Chamberlain.
  10 !! sac@cygnus.com
  11 
  12 !! ashiftrt_r4_x, ___ashrsi3, ___ashlsi3, ___lshrsi3 routines
  13 !! recoded in assembly by Toshiyasu Morita
  14 !! tm@netcom.com
  15 
  16 /* SH2 optimizations for ___ashrsi3, ___ashlsi3, ___lshrsi3 and
  17    ELF local label prefixes by J"orn Rennecke
  18    amylaar@cygnus.com  */
  19 
  20 !
  21 ! __ashlsi3
  22 !
  23 ! Entry:
  24 !
  25 ! r4: Value to shift
  26 ! r5: Shifts
  27 !
  28 ! Exit:
  29 !
  30 ! r0: Result
  31 !
  32 ! Destroys:
  33 !
  34 ! (none)
  35 !
  36 ! __ashlsi3_r0
  37 !
  38 ! Entry:
  39 !
  40 ! r4: Value to shift
  41 ! r0: Shifts
  42 !
  43 ! Exit:
  44 !
  45 ! r0: Result
  46 !
  47 ! Destroys:
  48 !
  49 ! (none)
  50 
  51 
  52         .global __ashlsi3
  53         .global __ashlsi3_r0
  54         
  55         .align  2
  56 __ashlsi3:
  57         mov     r5,r0
  58         .align  2
  59 __ashlsi3_r0:
  60         and     #31,r0
  61         mov.l   r4,@-r15
  62         mov     r0,r4
  63         mova    ashlsi3_table,r0
  64         mov.b   @(r0,r4),r4
  65         add     r4,r0
  66         jmp     @r0
  67         mov.l   @r15+,r0
  68 
  69         .align  2
  70 ashlsi3_table:
  71         .byte           ashlsi3_0-ashlsi3_table
  72         .byte           ashlsi3_1-ashlsi3_table
  73         .byte           ashlsi3_2-ashlsi3_table
  74         .byte           ashlsi3_3-ashlsi3_table
  75         .byte           ashlsi3_4-ashlsi3_table
  76         .byte           ashlsi3_5-ashlsi3_table
  77         .byte           ashlsi3_6-ashlsi3_table
  78         .byte           ashlsi3_7-ashlsi3_table
  79         .byte           ashlsi3_8-ashlsi3_table
  80         .byte           ashlsi3_9-ashlsi3_table
  81         .byte           ashlsi3_10-ashlsi3_table
  82         .byte           ashlsi3_11-ashlsi3_table
  83         .byte           ashlsi3_12-ashlsi3_table
  84         .byte           ashlsi3_13-ashlsi3_table
  85         .byte           ashlsi3_14-ashlsi3_table
  86         .byte           ashlsi3_15-ashlsi3_table
  87         .byte           ashlsi3_16-ashlsi3_table
  88         .byte           ashlsi3_17-ashlsi3_table
  89         .byte           ashlsi3_18-ashlsi3_table
  90         .byte           ashlsi3_19-ashlsi3_table
  91         .byte           ashlsi3_20-ashlsi3_table
  92         .byte           ashlsi3_21-ashlsi3_table
  93         .byte           ashlsi3_22-ashlsi3_table
  94         .byte           ashlsi3_23-ashlsi3_table
  95         .byte           ashlsi3_24-ashlsi3_table
  96         .byte           ashlsi3_25-ashlsi3_table
  97         .byte           ashlsi3_26-ashlsi3_table
  98         .byte           ashlsi3_27-ashlsi3_table
  99         .byte           ashlsi3_28-ashlsi3_table
 100         .byte           ashlsi3_29-ashlsi3_table
 101         .byte           ashlsi3_30-ashlsi3_table
 102         .byte           ashlsi3_31-ashlsi3_table
 103 
 104 ashlsi3_6:
 105         shll2   r0
 106 ashlsi3_4:
 107         shll2   r0
 108 ashlsi3_2:
 109         rts
 110         shll2   r0
 111 
 112 ashlsi3_7:
 113         shll2   r0
 114 ashlsi3_5:
 115         shll2   r0
 116 ashlsi3_3:
 117         shll2   r0
 118 ashlsi3_1:
 119         rts
 120         shll    r0
 121 
 122 ashlsi3_14:
 123         shll2   r0
 124 ashlsi3_12:
 125         shll2   r0
 126 ashlsi3_10:
 127         shll2   r0
 128 ashlsi3_8:
 129         rts
 130         shll8   r0
 131 
 132 ashlsi3_15:
 133         shll2   r0
 134 ashlsi3_13:
 135         shll2   r0
 136 ashlsi3_11:
 137         shll2   r0
 138 ashlsi3_9:
 139         shll8   r0
 140         rts
 141         shll    r0
 142 
 143 ashlsi3_22:
 144         shll2   r0
 145 ashlsi3_20:
 146         shll2   r0
 147 ashlsi3_18:
 148         shll2   r0
 149 ashlsi3_16:
 150         rts
 151         shll16  r0
 152 
 153 ashlsi3_23:
 154         shll2   r0
 155 ashlsi3_21:
 156         shll2   r0
 157 ashlsi3_19:
 158         shll2   r0
 159 ashlsi3_17:
 160         shll16  r0
 161         rts
 162         shll    r0
 163 
 164 ashlsi3_30:
 165         shll2   r0
 166 ashlsi3_28:
 167         shll2   r0
 168 ashlsi3_26:
 169         shll2   r0
 170 ashlsi3_24:
 171         shll16  r0
 172         rts
 173         shll8   r0
 174 
 175 ashlsi3_31:
 176         shll2   r0
 177 ashlsi3_29:
 178         shll2   r0
 179 ashlsi3_27:
 180         shll2   r0
 181 ashlsi3_25:
 182         shll16  r0
 183         shll8   r0
 184         rts
 185         shll    r0
 186 
 187 ashlsi3_0:
 188         rts
 189         nop

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