1*4494ce4fSKuninori Morimoto/* SPDX-License-Identifier: GPL-2.0+ WITH GCC-exception-2.0 2*4494ce4fSKuninori Morimoto 3*4494ce4fSKuninori Morimoto Copyright (C) 1994, 1995, 1997, 1998, 1999, 2000, 2001, 2002, 2003, 41aad54a9SPaul Mundt 2004, 2005, 2006 51aad54a9SPaul Mundt Free Software Foundation, Inc. 6*4494ce4fSKuninori Morimoto*/ 71aad54a9SPaul Mundt 81aad54a9SPaul Mundt!! libgcc routines for the Renesas / SuperH SH CPUs. 91aad54a9SPaul Mundt!! Contributed by Steve Chamberlain. 101aad54a9SPaul Mundt!! sac@cygnus.com 111aad54a9SPaul Mundt 121aad54a9SPaul Mundt!! ashiftrt_r4_x, ___ashrsi3, ___ashlsi3, ___lshrsi3 routines 131aad54a9SPaul Mundt!! recoded in assembly by Toshiyasu Morita 141aad54a9SPaul Mundt!! tm@netcom.com 151aad54a9SPaul Mundt 161aad54a9SPaul Mundt/* SH2 optimizations for ___ashrsi3, ___ashlsi3, ___lshrsi3 and 171aad54a9SPaul Mundt ELF local label prefixes by J"orn Rennecke 181aad54a9SPaul Mundt amylaar@cygnus.com */ 191aad54a9SPaul Mundt 201aad54a9SPaul Mundt! 211aad54a9SPaul Mundt! __ashlsi3 221aad54a9SPaul Mundt! 231aad54a9SPaul Mundt! Entry: 241aad54a9SPaul Mundt! 251aad54a9SPaul Mundt! r4: Value to shift 261aad54a9SPaul Mundt! r5: Shifts 271aad54a9SPaul Mundt! 281aad54a9SPaul Mundt! Exit: 291aad54a9SPaul Mundt! 301aad54a9SPaul Mundt! r0: Result 311aad54a9SPaul Mundt! 321aad54a9SPaul Mundt! Destroys: 331aad54a9SPaul Mundt! 341aad54a9SPaul Mundt! (none) 351aad54a9SPaul Mundt! 36940d4113SYoshinori Sato! __ashlsi3_r0 37940d4113SYoshinori Sato! 38940d4113SYoshinori Sato! Entry: 39940d4113SYoshinori Sato! 40940d4113SYoshinori Sato! r4: Value to shift 41940d4113SYoshinori Sato! r0: Shifts 42940d4113SYoshinori Sato! 43940d4113SYoshinori Sato! Exit: 44940d4113SYoshinori Sato! 45940d4113SYoshinori Sato! r0: Result 46940d4113SYoshinori Sato! 47940d4113SYoshinori Sato! Destroys: 48940d4113SYoshinori Sato! 49940d4113SYoshinori Sato! (none) 50940d4113SYoshinori Sato 51940d4113SYoshinori Sato 521aad54a9SPaul Mundt .global __ashlsi3 53940d4113SYoshinori Sato .global __ashlsi3_r0 541aad54a9SPaul Mundt 551aad54a9SPaul Mundt .align 2 561aad54a9SPaul Mundt__ashlsi3: 57940d4113SYoshinori Sato mov r5,r0 58940d4113SYoshinori Sato .align 2 59940d4113SYoshinori Sato__ashlsi3_r0: 60940d4113SYoshinori Sato and #31,r0 61940d4113SYoshinori Sato mov.l r4,@-r15 62940d4113SYoshinori Sato mov r0,r4 631aad54a9SPaul Mundt mova ashlsi3_table,r0 64940d4113SYoshinori Sato mov.b @(r0,r4),r4 65940d4113SYoshinori Sato add r4,r0 661aad54a9SPaul Mundt jmp @r0 67940d4113SYoshinori Sato mov.l @r15+,r0 681aad54a9SPaul Mundt 691aad54a9SPaul Mundt .align 2 701aad54a9SPaul Mundtashlsi3_table: 711aad54a9SPaul Mundt .byte ashlsi3_0-ashlsi3_table 721aad54a9SPaul Mundt .byte ashlsi3_1-ashlsi3_table 731aad54a9SPaul Mundt .byte ashlsi3_2-ashlsi3_table 741aad54a9SPaul Mundt .byte ashlsi3_3-ashlsi3_table 751aad54a9SPaul Mundt .byte ashlsi3_4-ashlsi3_table 761aad54a9SPaul Mundt .byte ashlsi3_5-ashlsi3_table 771aad54a9SPaul Mundt .byte ashlsi3_6-ashlsi3_table 781aad54a9SPaul Mundt .byte ashlsi3_7-ashlsi3_table 791aad54a9SPaul Mundt .byte ashlsi3_8-ashlsi3_table 801aad54a9SPaul Mundt .byte ashlsi3_9-ashlsi3_table 811aad54a9SPaul Mundt .byte ashlsi3_10-ashlsi3_table 821aad54a9SPaul Mundt .byte ashlsi3_11-ashlsi3_table 831aad54a9SPaul Mundt .byte ashlsi3_12-ashlsi3_table 841aad54a9SPaul Mundt .byte ashlsi3_13-ashlsi3_table 851aad54a9SPaul Mundt .byte ashlsi3_14-ashlsi3_table 861aad54a9SPaul Mundt .byte ashlsi3_15-ashlsi3_table 871aad54a9SPaul Mundt .byte ashlsi3_16-ashlsi3_table 881aad54a9SPaul Mundt .byte ashlsi3_17-ashlsi3_table 891aad54a9SPaul Mundt .byte ashlsi3_18-ashlsi3_table 901aad54a9SPaul Mundt .byte ashlsi3_19-ashlsi3_table 911aad54a9SPaul Mundt .byte ashlsi3_20-ashlsi3_table 921aad54a9SPaul Mundt .byte ashlsi3_21-ashlsi3_table 931aad54a9SPaul Mundt .byte ashlsi3_22-ashlsi3_table 941aad54a9SPaul Mundt .byte ashlsi3_23-ashlsi3_table 951aad54a9SPaul Mundt .byte ashlsi3_24-ashlsi3_table 961aad54a9SPaul Mundt .byte ashlsi3_25-ashlsi3_table 971aad54a9SPaul Mundt .byte ashlsi3_26-ashlsi3_table 981aad54a9SPaul Mundt .byte ashlsi3_27-ashlsi3_table 991aad54a9SPaul Mundt .byte ashlsi3_28-ashlsi3_table 1001aad54a9SPaul Mundt .byte ashlsi3_29-ashlsi3_table 1011aad54a9SPaul Mundt .byte ashlsi3_30-ashlsi3_table 1021aad54a9SPaul Mundt .byte ashlsi3_31-ashlsi3_table 1031aad54a9SPaul Mundt 1041aad54a9SPaul Mundtashlsi3_6: 1051aad54a9SPaul Mundt shll2 r0 1061aad54a9SPaul Mundtashlsi3_4: 1071aad54a9SPaul Mundt shll2 r0 1081aad54a9SPaul Mundtashlsi3_2: 1091aad54a9SPaul Mundt rts 1101aad54a9SPaul Mundt shll2 r0 1111aad54a9SPaul Mundt 1121aad54a9SPaul Mundtashlsi3_7: 1131aad54a9SPaul Mundt shll2 r0 1141aad54a9SPaul Mundtashlsi3_5: 1151aad54a9SPaul Mundt shll2 r0 1161aad54a9SPaul Mundtashlsi3_3: 1171aad54a9SPaul Mundt shll2 r0 1181aad54a9SPaul Mundtashlsi3_1: 1191aad54a9SPaul Mundt rts 1201aad54a9SPaul Mundt shll r0 1211aad54a9SPaul Mundt 1221aad54a9SPaul Mundtashlsi3_14: 1231aad54a9SPaul Mundt shll2 r0 1241aad54a9SPaul Mundtashlsi3_12: 1251aad54a9SPaul Mundt shll2 r0 1261aad54a9SPaul Mundtashlsi3_10: 1271aad54a9SPaul Mundt shll2 r0 1281aad54a9SPaul Mundtashlsi3_8: 1291aad54a9SPaul Mundt rts 1301aad54a9SPaul Mundt shll8 r0 1311aad54a9SPaul Mundt 1321aad54a9SPaul Mundtashlsi3_15: 1331aad54a9SPaul Mundt shll2 r0 1341aad54a9SPaul Mundtashlsi3_13: 1351aad54a9SPaul Mundt shll2 r0 1361aad54a9SPaul Mundtashlsi3_11: 1371aad54a9SPaul Mundt shll2 r0 1381aad54a9SPaul Mundtashlsi3_9: 1391aad54a9SPaul Mundt shll8 r0 1401aad54a9SPaul Mundt rts 1411aad54a9SPaul Mundt shll r0 1421aad54a9SPaul Mundt 1431aad54a9SPaul Mundtashlsi3_22: 1441aad54a9SPaul Mundt shll2 r0 1451aad54a9SPaul Mundtashlsi3_20: 1461aad54a9SPaul Mundt shll2 r0 1471aad54a9SPaul Mundtashlsi3_18: 1481aad54a9SPaul Mundt shll2 r0 1491aad54a9SPaul Mundtashlsi3_16: 1501aad54a9SPaul Mundt rts 1511aad54a9SPaul Mundt shll16 r0 1521aad54a9SPaul Mundt 1531aad54a9SPaul Mundtashlsi3_23: 1541aad54a9SPaul Mundt shll2 r0 1551aad54a9SPaul Mundtashlsi3_21: 1561aad54a9SPaul Mundt shll2 r0 1571aad54a9SPaul Mundtashlsi3_19: 1581aad54a9SPaul Mundt shll2 r0 1591aad54a9SPaul Mundtashlsi3_17: 1601aad54a9SPaul Mundt shll16 r0 1611aad54a9SPaul Mundt rts 1621aad54a9SPaul Mundt shll r0 1631aad54a9SPaul Mundt 1641aad54a9SPaul Mundtashlsi3_30: 1651aad54a9SPaul Mundt shll2 r0 1661aad54a9SPaul Mundtashlsi3_28: 1671aad54a9SPaul Mundt shll2 r0 1681aad54a9SPaul Mundtashlsi3_26: 1691aad54a9SPaul Mundt shll2 r0 1701aad54a9SPaul Mundtashlsi3_24: 1711aad54a9SPaul Mundt shll16 r0 1721aad54a9SPaul Mundt rts 1731aad54a9SPaul Mundt shll8 r0 1741aad54a9SPaul Mundt 1751aad54a9SPaul Mundtashlsi3_31: 1761aad54a9SPaul Mundt shll2 r0 1771aad54a9SPaul Mundtashlsi3_29: 1781aad54a9SPaul Mundt shll2 r0 1791aad54a9SPaul Mundtashlsi3_27: 1801aad54a9SPaul Mundt shll2 r0 1811aad54a9SPaul Mundtashlsi3_25: 1821aad54a9SPaul Mundt shll16 r0 1831aad54a9SPaul Mundt shll8 r0 1841aad54a9SPaul Mundt rts 1851aad54a9SPaul Mundt shll r0 1861aad54a9SPaul Mundt 1871aad54a9SPaul Mundtashlsi3_0: 1881aad54a9SPaul Mundt rts 1891aad54a9SPaul Mundt nop 190