1*72cedad2SMasahiro Yamada/* Copyright (C) 1994, 1995, 1997, 1998, 1999, 2000, 2001, 2002, 2003, 2*72cedad2SMasahiro Yamada 2004, 2005, 2006 3*72cedad2SMasahiro Yamada Free Software Foundation, Inc. 4*72cedad2SMasahiro Yamada 5*72cedad2SMasahiro Yamada * SPDX-License-Identifier: GPL-2.0+ 6*72cedad2SMasahiro Yamada */ 7*72cedad2SMasahiro Yamada 8*72cedad2SMasahiro Yamada!! libgcc routines for the Renesas / SuperH SH CPUs. 9*72cedad2SMasahiro Yamada!! Contributed by Steve Chamberlain. 10*72cedad2SMasahiro Yamada!! sac@cygnus.com 11*72cedad2SMasahiro Yamada 12*72cedad2SMasahiro Yamada!! ashiftrt_r4_x, ___ashrsi3, ___ashlsi3, ___lshrsi3 routines 13*72cedad2SMasahiro Yamada!! recoded in assembly by Toshiyasu Morita 14*72cedad2SMasahiro Yamada!! tm@netcom.com 15*72cedad2SMasahiro Yamada 16*72cedad2SMasahiro Yamada/* SH2 optimizations for ___ashrsi3, ___ashlsi3, ___lshrsi3 and 17*72cedad2SMasahiro Yamada ELF local label prefixes by J"orn Rennecke 18*72cedad2SMasahiro Yamada amylaar@cygnus.com */ 19*72cedad2SMasahiro Yamada 20*72cedad2SMasahiro Yamada! 21*72cedad2SMasahiro Yamada! __lshrsi3) 22*72cedad2SMasahiro Yamada! 23*72cedad2SMasahiro Yamada! Entry: 24*72cedad2SMasahiro Yamada! 25*72cedad2SMasahiro Yamada! r4: Value to shift 26*72cedad2SMasahiro Yamada! r5: Shifts 27*72cedad2SMasahiro Yamada! 28*72cedad2SMasahiro Yamada! Exit: 29*72cedad2SMasahiro Yamada! 30*72cedad2SMasahiro Yamada! r0: Result 31*72cedad2SMasahiro Yamada! 32*72cedad2SMasahiro Yamada! Destroys: 33*72cedad2SMasahiro Yamada! 34*72cedad2SMasahiro Yamada! (none) 35*72cedad2SMasahiro Yamada! 36*72cedad2SMasahiro Yamada .global __lshrsi3 37*72cedad2SMasahiro Yamada .align 2 38*72cedad2SMasahiro Yamada__lshrsi3: 39*72cedad2SMasahiro Yamada mov #31,r0 40*72cedad2SMasahiro Yamada and r0,r5 41*72cedad2SMasahiro Yamada mova __lshrsi3_table,r0 42*72cedad2SMasahiro Yamada mov.b @(r0,r5),r5 43*72cedad2SMasahiro Yamada#ifdef __sh1__ 44*72cedad2SMasahiro Yamada add r5,r0 45*72cedad2SMasahiro Yamada jmp @r0 46*72cedad2SMasahiro Yamada#else 47*72cedad2SMasahiro Yamada braf r5 48*72cedad2SMasahiro Yamada#endif 49*72cedad2SMasahiro Yamada mov r4,r0 50*72cedad2SMasahiro Yamada 51*72cedad2SMasahiro Yamada .align 2 52*72cedad2SMasahiro Yamada__lshrsi3_table: 53*72cedad2SMasahiro Yamada .byte __lshrsi3_0-__lshrsi3_table 54*72cedad2SMasahiro Yamada .byte __lshrsi3_1-__lshrsi3_table 55*72cedad2SMasahiro Yamada .byte __lshrsi3_2-__lshrsi3_table 56*72cedad2SMasahiro Yamada .byte __lshrsi3_3-__lshrsi3_table 57*72cedad2SMasahiro Yamada .byte __lshrsi3_4-__lshrsi3_table 58*72cedad2SMasahiro Yamada .byte __lshrsi3_5-__lshrsi3_table 59*72cedad2SMasahiro Yamada .byte __lshrsi3_6-__lshrsi3_table 60*72cedad2SMasahiro Yamada .byte __lshrsi3_7-__lshrsi3_table 61*72cedad2SMasahiro Yamada .byte __lshrsi3_8-__lshrsi3_table 62*72cedad2SMasahiro Yamada .byte __lshrsi3_9-__lshrsi3_table 63*72cedad2SMasahiro Yamada .byte __lshrsi3_10-__lshrsi3_table 64*72cedad2SMasahiro Yamada .byte __lshrsi3_11-__lshrsi3_table 65*72cedad2SMasahiro Yamada .byte __lshrsi3_12-__lshrsi3_table 66*72cedad2SMasahiro Yamada .byte __lshrsi3_13-__lshrsi3_table 67*72cedad2SMasahiro Yamada .byte __lshrsi3_14-__lshrsi3_table 68*72cedad2SMasahiro Yamada .byte __lshrsi3_15-__lshrsi3_table 69*72cedad2SMasahiro Yamada .byte __lshrsi3_16-__lshrsi3_table 70*72cedad2SMasahiro Yamada .byte __lshrsi3_17-__lshrsi3_table 71*72cedad2SMasahiro Yamada .byte __lshrsi3_18-__lshrsi3_table 72*72cedad2SMasahiro Yamada .byte __lshrsi3_19-__lshrsi3_table 73*72cedad2SMasahiro Yamada .byte __lshrsi3_20-__lshrsi3_table 74*72cedad2SMasahiro Yamada .byte __lshrsi3_21-__lshrsi3_table 75*72cedad2SMasahiro Yamada .byte __lshrsi3_22-__lshrsi3_table 76*72cedad2SMasahiro Yamada .byte __lshrsi3_23-__lshrsi3_table 77*72cedad2SMasahiro Yamada .byte __lshrsi3_24-__lshrsi3_table 78*72cedad2SMasahiro Yamada .byte __lshrsi3_25-__lshrsi3_table 79*72cedad2SMasahiro Yamada .byte __lshrsi3_26-__lshrsi3_table 80*72cedad2SMasahiro Yamada .byte __lshrsi3_27-__lshrsi3_table 81*72cedad2SMasahiro Yamada .byte __lshrsi3_28-__lshrsi3_table 82*72cedad2SMasahiro Yamada .byte __lshrsi3_29-__lshrsi3_table 83*72cedad2SMasahiro Yamada .byte __lshrsi3_30-__lshrsi3_table 84*72cedad2SMasahiro Yamada .byte __lshrsi3_31-__lshrsi3_table 85*72cedad2SMasahiro Yamada 86*72cedad2SMasahiro Yamada__lshrsi3_6: 87*72cedad2SMasahiro Yamada shlr2 r0 88*72cedad2SMasahiro Yamada__lshrsi3_4: 89*72cedad2SMasahiro Yamada shlr2 r0 90*72cedad2SMasahiro Yamada__lshrsi3_2: 91*72cedad2SMasahiro Yamada rts 92*72cedad2SMasahiro Yamada shlr2 r0 93*72cedad2SMasahiro Yamada 94*72cedad2SMasahiro Yamada__lshrsi3_7: 95*72cedad2SMasahiro Yamada shlr2 r0 96*72cedad2SMasahiro Yamada__lshrsi3_5: 97*72cedad2SMasahiro Yamada shlr2 r0 98*72cedad2SMasahiro Yamada__lshrsi3_3: 99*72cedad2SMasahiro Yamada shlr2 r0 100*72cedad2SMasahiro Yamada__lshrsi3_1: 101*72cedad2SMasahiro Yamada rts 102*72cedad2SMasahiro Yamada shlr r0 103*72cedad2SMasahiro Yamada 104*72cedad2SMasahiro Yamada__lshrsi3_14: 105*72cedad2SMasahiro Yamada shlr2 r0 106*72cedad2SMasahiro Yamada__lshrsi3_12: 107*72cedad2SMasahiro Yamada shlr2 r0 108*72cedad2SMasahiro Yamada__lshrsi3_10: 109*72cedad2SMasahiro Yamada shlr2 r0 110*72cedad2SMasahiro Yamada__lshrsi3_8: 111*72cedad2SMasahiro Yamada rts 112*72cedad2SMasahiro Yamada shlr8 r0 113*72cedad2SMasahiro Yamada 114*72cedad2SMasahiro Yamada__lshrsi3_15: 115*72cedad2SMasahiro Yamada shlr2 r0 116*72cedad2SMasahiro Yamada__lshrsi3_13: 117*72cedad2SMasahiro Yamada shlr2 r0 118*72cedad2SMasahiro Yamada__lshrsi3_11: 119*72cedad2SMasahiro Yamada shlr2 r0 120*72cedad2SMasahiro Yamada__lshrsi3_9: 121*72cedad2SMasahiro Yamada shlr8 r0 122*72cedad2SMasahiro Yamada rts 123*72cedad2SMasahiro Yamada shlr r0 124*72cedad2SMasahiro Yamada 125*72cedad2SMasahiro Yamada__lshrsi3_22: 126*72cedad2SMasahiro Yamada shlr2 r0 127*72cedad2SMasahiro Yamada__lshrsi3_20: 128*72cedad2SMasahiro Yamada shlr2 r0 129*72cedad2SMasahiro Yamada__lshrsi3_18: 130*72cedad2SMasahiro Yamada shlr2 r0 131*72cedad2SMasahiro Yamada__lshrsi3_16: 132*72cedad2SMasahiro Yamada rts 133*72cedad2SMasahiro Yamada shlr16 r0 134*72cedad2SMasahiro Yamada 135*72cedad2SMasahiro Yamada__lshrsi3_23: 136*72cedad2SMasahiro Yamada shlr2 r0 137*72cedad2SMasahiro Yamada__lshrsi3_21: 138*72cedad2SMasahiro Yamada shlr2 r0 139*72cedad2SMasahiro Yamada__lshrsi3_19: 140*72cedad2SMasahiro Yamada shlr2 r0 141*72cedad2SMasahiro Yamada__lshrsi3_17: 142*72cedad2SMasahiro Yamada shlr16 r0 143*72cedad2SMasahiro Yamada rts 144*72cedad2SMasahiro Yamada shlr r0 145*72cedad2SMasahiro Yamada 146*72cedad2SMasahiro Yamada__lshrsi3_30: 147*72cedad2SMasahiro Yamada shlr2 r0 148*72cedad2SMasahiro Yamada__lshrsi3_28: 149*72cedad2SMasahiro Yamada shlr2 r0 150*72cedad2SMasahiro Yamada__lshrsi3_26: 151*72cedad2SMasahiro Yamada shlr2 r0 152*72cedad2SMasahiro Yamada__lshrsi3_24: 153*72cedad2SMasahiro Yamada shlr16 r0 154*72cedad2SMasahiro Yamada rts 155*72cedad2SMasahiro Yamada shlr8 r0 156*72cedad2SMasahiro Yamada 157*72cedad2SMasahiro Yamada__lshrsi3_31: 158*72cedad2SMasahiro Yamada shlr2 r0 159*72cedad2SMasahiro Yamada__lshrsi3_29: 160*72cedad2SMasahiro Yamada shlr2 r0 161*72cedad2SMasahiro Yamada__lshrsi3_27: 162*72cedad2SMasahiro Yamada shlr2 r0 163*72cedad2SMasahiro Yamada__lshrsi3_25: 164*72cedad2SMasahiro Yamada shlr16 r0 165*72cedad2SMasahiro Yamada shlr8 r0 166*72cedad2SMasahiro Yamada rts 167*72cedad2SMasahiro Yamada shlr r0 168*72cedad2SMasahiro Yamada 169*72cedad2SMasahiro Yamada__lshrsi3_0: 170*72cedad2SMasahiro Yamada rts 171*72cedad2SMasahiro Yamada nop 172