1*83d290c5STom Rini/* SPDX-License-Identifier: GPL-2.0+ */ 272cedad2SMasahiro Yamada/* Copyright (C) 1994, 1995, 1997, 1998, 1999, 2000, 2001, 2002, 2003, 372cedad2SMasahiro Yamada 2004, 2005, 2006 472cedad2SMasahiro Yamada Free Software Foundation, Inc. 572cedad2SMasahiro Yamada */ 672cedad2SMasahiro Yamada 772cedad2SMasahiro Yamada!! libgcc routines for the Renesas / SuperH SH CPUs. 872cedad2SMasahiro Yamada!! Contributed by Steve Chamberlain. 972cedad2SMasahiro Yamada!! sac@cygnus.com 1072cedad2SMasahiro Yamada 1172cedad2SMasahiro Yamada!! ashiftrt_r4_x, ___ashrsi3, ___ashlsi3, ___lshrsi3 routines 1272cedad2SMasahiro Yamada!! recoded in assembly by Toshiyasu Morita 1372cedad2SMasahiro Yamada!! tm@netcom.com 1472cedad2SMasahiro Yamada 1572cedad2SMasahiro Yamada/* SH2 optimizations for ___ashrsi3, ___ashlsi3, ___lshrsi3 and 1672cedad2SMasahiro Yamada ELF local label prefixes by J"orn Rennecke 1772cedad2SMasahiro Yamada amylaar@cygnus.com */ 1872cedad2SMasahiro Yamada 1972cedad2SMasahiro Yamada! 2072cedad2SMasahiro Yamada! GLOBAL(ashlsi3) 2172cedad2SMasahiro Yamada! 2272cedad2SMasahiro Yamada! Entry: 2372cedad2SMasahiro Yamada! 2472cedad2SMasahiro Yamada! r4: Value to shift 2572cedad2SMasahiro Yamada! r5: Shifts 2672cedad2SMasahiro Yamada! 2772cedad2SMasahiro Yamada! Exit: 2872cedad2SMasahiro Yamada! 2972cedad2SMasahiro Yamada! r0: Result 3072cedad2SMasahiro Yamada! 3172cedad2SMasahiro Yamada! Destroys: 3272cedad2SMasahiro Yamada! 3372cedad2SMasahiro Yamada! (none) 3472cedad2SMasahiro Yamada! 3572cedad2SMasahiro Yamada .global __ashlsi3 3672cedad2SMasahiro Yamada .align 2 3772cedad2SMasahiro Yamada__ashlsi3: 3872cedad2SMasahiro Yamada mov #31,r0 3972cedad2SMasahiro Yamada and r0,r5 4072cedad2SMasahiro Yamada mova __ashlsi3_table,r0 4172cedad2SMasahiro Yamada mov.b @(r0,r5),r5 4272cedad2SMasahiro Yamada#ifdef __sh1__ 4372cedad2SMasahiro Yamada add r5,r0 4472cedad2SMasahiro Yamada jmp @r0 4572cedad2SMasahiro Yamada#else 4672cedad2SMasahiro Yamada braf r5 4772cedad2SMasahiro Yamada#endif 4872cedad2SMasahiro Yamada mov r4,r0 4972cedad2SMasahiro Yamada 5072cedad2SMasahiro Yamada .align 2 5172cedad2SMasahiro Yamada__ashlsi3_table: 5272cedad2SMasahiro Yamada .byte __ashlsi3_0-__ashlsi3_table 5372cedad2SMasahiro Yamada .byte __ashlsi3_1-__ashlsi3_table 5472cedad2SMasahiro Yamada .byte __ashlsi3_2-__ashlsi3_table 5572cedad2SMasahiro Yamada .byte __ashlsi3_3-__ashlsi3_table 5672cedad2SMasahiro Yamada .byte __ashlsi3_4-__ashlsi3_table 5772cedad2SMasahiro Yamada .byte __ashlsi3_5-__ashlsi3_table 5872cedad2SMasahiro Yamada .byte __ashlsi3_6-__ashlsi3_table 5972cedad2SMasahiro Yamada .byte __ashlsi3_7-__ashlsi3_table 6072cedad2SMasahiro Yamada .byte __ashlsi3_8-__ashlsi3_table 6172cedad2SMasahiro Yamada .byte __ashlsi3_9-__ashlsi3_table 6272cedad2SMasahiro Yamada .byte __ashlsi3_10-__ashlsi3_table 6372cedad2SMasahiro Yamada .byte __ashlsi3_11-__ashlsi3_table 6472cedad2SMasahiro Yamada .byte __ashlsi3_12-__ashlsi3_table 6572cedad2SMasahiro Yamada .byte __ashlsi3_13-__ashlsi3_table 6672cedad2SMasahiro Yamada .byte __ashlsi3_14-__ashlsi3_table 6772cedad2SMasahiro Yamada .byte __ashlsi3_15-__ashlsi3_table 6872cedad2SMasahiro Yamada .byte __ashlsi3_16-__ashlsi3_table 6972cedad2SMasahiro Yamada .byte __ashlsi3_17-__ashlsi3_table 7072cedad2SMasahiro Yamada .byte __ashlsi3_18-__ashlsi3_table 7172cedad2SMasahiro Yamada .byte __ashlsi3_19-__ashlsi3_table 7272cedad2SMasahiro Yamada .byte __ashlsi3_20-__ashlsi3_table 7372cedad2SMasahiro Yamada .byte __ashlsi3_21-__ashlsi3_table 7472cedad2SMasahiro Yamada .byte __ashlsi3_22-__ashlsi3_table 7572cedad2SMasahiro Yamada .byte __ashlsi3_23-__ashlsi3_table 7672cedad2SMasahiro Yamada .byte __ashlsi3_24-__ashlsi3_table 7772cedad2SMasahiro Yamada .byte __ashlsi3_25-__ashlsi3_table 7872cedad2SMasahiro Yamada .byte __ashlsi3_26-__ashlsi3_table 7972cedad2SMasahiro Yamada .byte __ashlsi3_27-__ashlsi3_table 8072cedad2SMasahiro Yamada .byte __ashlsi3_28-__ashlsi3_table 8172cedad2SMasahiro Yamada .byte __ashlsi3_29-__ashlsi3_table 8272cedad2SMasahiro Yamada .byte __ashlsi3_30-__ashlsi3_table 8372cedad2SMasahiro Yamada .byte __ashlsi3_31-__ashlsi3_table 8472cedad2SMasahiro Yamada 8572cedad2SMasahiro Yamada__ashlsi3_6: 8672cedad2SMasahiro Yamada shll2 r0 8772cedad2SMasahiro Yamada__ashlsi3_4: 8872cedad2SMasahiro Yamada shll2 r0 8972cedad2SMasahiro Yamada__ashlsi3_2: 9072cedad2SMasahiro Yamada rts 9172cedad2SMasahiro Yamada shll2 r0 9272cedad2SMasahiro Yamada 9372cedad2SMasahiro Yamada__ashlsi3_7: 9472cedad2SMasahiro Yamada shll2 r0 9572cedad2SMasahiro Yamada__ashlsi3_5: 9672cedad2SMasahiro Yamada shll2 r0 9772cedad2SMasahiro Yamada__ashlsi3_3: 9872cedad2SMasahiro Yamada shll2 r0 9972cedad2SMasahiro Yamada__ashlsi3_1: 10072cedad2SMasahiro Yamada rts 10172cedad2SMasahiro Yamada shll r0 10272cedad2SMasahiro Yamada 10372cedad2SMasahiro Yamada__ashlsi3_14: 10472cedad2SMasahiro Yamada shll2 r0 10572cedad2SMasahiro Yamada__ashlsi3_12: 10672cedad2SMasahiro Yamada shll2 r0 10772cedad2SMasahiro Yamada__ashlsi3_10: 10872cedad2SMasahiro Yamada shll2 r0 10972cedad2SMasahiro Yamada__ashlsi3_8: 11072cedad2SMasahiro Yamada rts 11172cedad2SMasahiro Yamada shll8 r0 11272cedad2SMasahiro Yamada 11372cedad2SMasahiro Yamada__ashlsi3_15: 11472cedad2SMasahiro Yamada shll2 r0 11572cedad2SMasahiro Yamada__ashlsi3_13: 11672cedad2SMasahiro Yamada shll2 r0 11772cedad2SMasahiro Yamada__ashlsi3_11: 11872cedad2SMasahiro Yamada shll2 r0 11972cedad2SMasahiro Yamada__ashlsi3_9: 12072cedad2SMasahiro Yamada shll8 r0 12172cedad2SMasahiro Yamada rts 12272cedad2SMasahiro Yamada shll r0 12372cedad2SMasahiro Yamada 12472cedad2SMasahiro Yamada__ashlsi3_22: 12572cedad2SMasahiro Yamada shll2 r0 12672cedad2SMasahiro Yamada__ashlsi3_20: 12772cedad2SMasahiro Yamada shll2 r0 12872cedad2SMasahiro Yamada__ashlsi3_18: 12972cedad2SMasahiro Yamada shll2 r0 13072cedad2SMasahiro Yamada__ashlsi3_16: 13172cedad2SMasahiro Yamada rts 13272cedad2SMasahiro Yamada shll16 r0 13372cedad2SMasahiro Yamada 13472cedad2SMasahiro Yamada__ashlsi3_23: 13572cedad2SMasahiro Yamada shll2 r0 13672cedad2SMasahiro Yamada__ashlsi3_21: 13772cedad2SMasahiro Yamada shll2 r0 13872cedad2SMasahiro Yamada__ashlsi3_19: 13972cedad2SMasahiro Yamada shll2 r0 14072cedad2SMasahiro Yamada__ashlsi3_17: 14172cedad2SMasahiro Yamada shll16 r0 14272cedad2SMasahiro Yamada rts 14372cedad2SMasahiro Yamada shll r0 14472cedad2SMasahiro Yamada 14572cedad2SMasahiro Yamada__ashlsi3_30: 14672cedad2SMasahiro Yamada shll2 r0 14772cedad2SMasahiro Yamada__ashlsi3_28: 14872cedad2SMasahiro Yamada shll2 r0 14972cedad2SMasahiro Yamada__ashlsi3_26: 15072cedad2SMasahiro Yamada shll2 r0 15172cedad2SMasahiro Yamada__ashlsi3_24: 15272cedad2SMasahiro Yamada shll16 r0 15372cedad2SMasahiro Yamada rts 15472cedad2SMasahiro Yamada shll8 r0 15572cedad2SMasahiro Yamada 15672cedad2SMasahiro Yamada__ashlsi3_31: 15772cedad2SMasahiro Yamada shll2 r0 15872cedad2SMasahiro Yamada__ashlsi3_29: 15972cedad2SMasahiro Yamada shll2 r0 16072cedad2SMasahiro Yamada__ashlsi3_27: 16172cedad2SMasahiro Yamada shll2 r0 16272cedad2SMasahiro Yamada__ashlsi3_25: 16372cedad2SMasahiro Yamada shll16 r0 16472cedad2SMasahiro Yamada shll8 r0 16572cedad2SMasahiro Yamada rts 16672cedad2SMasahiro Yamada shll r0 16772cedad2SMasahiro Yamada 16872cedad2SMasahiro Yamada__ashlsi3_0: 16972cedad2SMasahiro Yamada rts 17072cedad2SMasahiro Yamada nop 171