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! GLOBAL(ashlsi3) 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 __ashlsi3 37*72cedad2SMasahiro Yamada .align 2 38*72cedad2SMasahiro Yamada__ashlsi3: 39*72cedad2SMasahiro Yamada mov #31,r0 40*72cedad2SMasahiro Yamada and r0,r5 41*72cedad2SMasahiro Yamada mova __ashlsi3_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__ashlsi3_table: 53*72cedad2SMasahiro Yamada .byte __ashlsi3_0-__ashlsi3_table 54*72cedad2SMasahiro Yamada .byte __ashlsi3_1-__ashlsi3_table 55*72cedad2SMasahiro Yamada .byte __ashlsi3_2-__ashlsi3_table 56*72cedad2SMasahiro Yamada .byte __ashlsi3_3-__ashlsi3_table 57*72cedad2SMasahiro Yamada .byte __ashlsi3_4-__ashlsi3_table 58*72cedad2SMasahiro Yamada .byte __ashlsi3_5-__ashlsi3_table 59*72cedad2SMasahiro Yamada .byte __ashlsi3_6-__ashlsi3_table 60*72cedad2SMasahiro Yamada .byte __ashlsi3_7-__ashlsi3_table 61*72cedad2SMasahiro Yamada .byte __ashlsi3_8-__ashlsi3_table 62*72cedad2SMasahiro Yamada .byte __ashlsi3_9-__ashlsi3_table 63*72cedad2SMasahiro Yamada .byte __ashlsi3_10-__ashlsi3_table 64*72cedad2SMasahiro Yamada .byte __ashlsi3_11-__ashlsi3_table 65*72cedad2SMasahiro Yamada .byte __ashlsi3_12-__ashlsi3_table 66*72cedad2SMasahiro Yamada .byte __ashlsi3_13-__ashlsi3_table 67*72cedad2SMasahiro Yamada .byte __ashlsi3_14-__ashlsi3_table 68*72cedad2SMasahiro Yamada .byte __ashlsi3_15-__ashlsi3_table 69*72cedad2SMasahiro Yamada .byte __ashlsi3_16-__ashlsi3_table 70*72cedad2SMasahiro Yamada .byte __ashlsi3_17-__ashlsi3_table 71*72cedad2SMasahiro Yamada .byte __ashlsi3_18-__ashlsi3_table 72*72cedad2SMasahiro Yamada .byte __ashlsi3_19-__ashlsi3_table 73*72cedad2SMasahiro Yamada .byte __ashlsi3_20-__ashlsi3_table 74*72cedad2SMasahiro Yamada .byte __ashlsi3_21-__ashlsi3_table 75*72cedad2SMasahiro Yamada .byte __ashlsi3_22-__ashlsi3_table 76*72cedad2SMasahiro Yamada .byte __ashlsi3_23-__ashlsi3_table 77*72cedad2SMasahiro Yamada .byte __ashlsi3_24-__ashlsi3_table 78*72cedad2SMasahiro Yamada .byte __ashlsi3_25-__ashlsi3_table 79*72cedad2SMasahiro Yamada .byte __ashlsi3_26-__ashlsi3_table 80*72cedad2SMasahiro Yamada .byte __ashlsi3_27-__ashlsi3_table 81*72cedad2SMasahiro Yamada .byte __ashlsi3_28-__ashlsi3_table 82*72cedad2SMasahiro Yamada .byte __ashlsi3_29-__ashlsi3_table 83*72cedad2SMasahiro Yamada .byte __ashlsi3_30-__ashlsi3_table 84*72cedad2SMasahiro Yamada .byte __ashlsi3_31-__ashlsi3_table 85*72cedad2SMasahiro Yamada 86*72cedad2SMasahiro Yamada__ashlsi3_6: 87*72cedad2SMasahiro Yamada shll2 r0 88*72cedad2SMasahiro Yamada__ashlsi3_4: 89*72cedad2SMasahiro Yamada shll2 r0 90*72cedad2SMasahiro Yamada__ashlsi3_2: 91*72cedad2SMasahiro Yamada rts 92*72cedad2SMasahiro Yamada shll2 r0 93*72cedad2SMasahiro Yamada 94*72cedad2SMasahiro Yamada__ashlsi3_7: 95*72cedad2SMasahiro Yamada shll2 r0 96*72cedad2SMasahiro Yamada__ashlsi3_5: 97*72cedad2SMasahiro Yamada shll2 r0 98*72cedad2SMasahiro Yamada__ashlsi3_3: 99*72cedad2SMasahiro Yamada shll2 r0 100*72cedad2SMasahiro Yamada__ashlsi3_1: 101*72cedad2SMasahiro Yamada rts 102*72cedad2SMasahiro Yamada shll r0 103*72cedad2SMasahiro Yamada 104*72cedad2SMasahiro Yamada__ashlsi3_14: 105*72cedad2SMasahiro Yamada shll2 r0 106*72cedad2SMasahiro Yamada__ashlsi3_12: 107*72cedad2SMasahiro Yamada shll2 r0 108*72cedad2SMasahiro Yamada__ashlsi3_10: 109*72cedad2SMasahiro Yamada shll2 r0 110*72cedad2SMasahiro Yamada__ashlsi3_8: 111*72cedad2SMasahiro Yamada rts 112*72cedad2SMasahiro Yamada shll8 r0 113*72cedad2SMasahiro Yamada 114*72cedad2SMasahiro Yamada__ashlsi3_15: 115*72cedad2SMasahiro Yamada shll2 r0 116*72cedad2SMasahiro Yamada__ashlsi3_13: 117*72cedad2SMasahiro Yamada shll2 r0 118*72cedad2SMasahiro Yamada__ashlsi3_11: 119*72cedad2SMasahiro Yamada shll2 r0 120*72cedad2SMasahiro Yamada__ashlsi3_9: 121*72cedad2SMasahiro Yamada shll8 r0 122*72cedad2SMasahiro Yamada rts 123*72cedad2SMasahiro Yamada shll r0 124*72cedad2SMasahiro Yamada 125*72cedad2SMasahiro Yamada__ashlsi3_22: 126*72cedad2SMasahiro Yamada shll2 r0 127*72cedad2SMasahiro Yamada__ashlsi3_20: 128*72cedad2SMasahiro Yamada shll2 r0 129*72cedad2SMasahiro Yamada__ashlsi3_18: 130*72cedad2SMasahiro Yamada shll2 r0 131*72cedad2SMasahiro Yamada__ashlsi3_16: 132*72cedad2SMasahiro Yamada rts 133*72cedad2SMasahiro Yamada shll16 r0 134*72cedad2SMasahiro Yamada 135*72cedad2SMasahiro Yamada__ashlsi3_23: 136*72cedad2SMasahiro Yamada shll2 r0 137*72cedad2SMasahiro Yamada__ashlsi3_21: 138*72cedad2SMasahiro Yamada shll2 r0 139*72cedad2SMasahiro Yamada__ashlsi3_19: 140*72cedad2SMasahiro Yamada shll2 r0 141*72cedad2SMasahiro Yamada__ashlsi3_17: 142*72cedad2SMasahiro Yamada shll16 r0 143*72cedad2SMasahiro Yamada rts 144*72cedad2SMasahiro Yamada shll r0 145*72cedad2SMasahiro Yamada 146*72cedad2SMasahiro Yamada__ashlsi3_30: 147*72cedad2SMasahiro Yamada shll2 r0 148*72cedad2SMasahiro Yamada__ashlsi3_28: 149*72cedad2SMasahiro Yamada shll2 r0 150*72cedad2SMasahiro Yamada__ashlsi3_26: 151*72cedad2SMasahiro Yamada shll2 r0 152*72cedad2SMasahiro Yamada__ashlsi3_24: 153*72cedad2SMasahiro Yamada shll16 r0 154*72cedad2SMasahiro Yamada rts 155*72cedad2SMasahiro Yamada shll8 r0 156*72cedad2SMasahiro Yamada 157*72cedad2SMasahiro Yamada__ashlsi3_31: 158*72cedad2SMasahiro Yamada shll2 r0 159*72cedad2SMasahiro Yamada__ashlsi3_29: 160*72cedad2SMasahiro Yamada shll2 r0 161*72cedad2SMasahiro Yamada__ashlsi3_27: 162*72cedad2SMasahiro Yamada shll2 r0 163*72cedad2SMasahiro Yamada__ashlsi3_25: 164*72cedad2SMasahiro Yamada shll16 r0 165*72cedad2SMasahiro Yamada shll8 r0 166*72cedad2SMasahiro Yamada rts 167*72cedad2SMasahiro Yamada shll r0 168*72cedad2SMasahiro Yamada 169*72cedad2SMasahiro Yamada__ashlsi3_0: 170*72cedad2SMasahiro Yamada rts 171*72cedad2SMasahiro Yamada nop 172