1*5f91a3adSMasahiro Yamada/* Copyright (C) 1994, 1995, 1997, 1998, 1999, 2000, 2001, 2002, 2003, 2*5f91a3adSMasahiro Yamada 2004, 2005, 2006 3*5f91a3adSMasahiro Yamada Free Software Foundation, Inc. 4*5f91a3adSMasahiro Yamada 5*5f91a3adSMasahiro Yamada * SPDX-License-Identifier: GPL-2.0+ 6*5f91a3adSMasahiro Yamada */ 7*5f91a3adSMasahiro Yamada 8*5f91a3adSMasahiro Yamada!! libgcc routines for the Renesas / SuperH SH CPUs. 9*5f91a3adSMasahiro Yamada!! Contributed by Steve Chamberlain. 10*5f91a3adSMasahiro Yamada!! sac@cygnus.com 11*5f91a3adSMasahiro Yamada 12*5f91a3adSMasahiro Yamada!! ashiftrt_r4_x, ___ashrsi3, ___ashlsi3, ___lshrsi3 routines 13*5f91a3adSMasahiro Yamada!! recoded in assembly by Toshiyasu Morita 14*5f91a3adSMasahiro Yamada!! tm@netcom.com 15*5f91a3adSMasahiro Yamada 16*5f91a3adSMasahiro Yamada/* SH2 optimizations for ___ashrsi3, ___ashlsi3, ___lshrsi3 and 17*5f91a3adSMasahiro Yamada ELF local label prefixes by J"orn Rennecke 18*5f91a3adSMasahiro Yamada amylaar@cygnus.com */ 19*5f91a3adSMasahiro Yamada 20*5f91a3adSMasahiro Yamada /* r0: rn r1: qn */ /* r0: n1 r4: n0 r5: d r6: d1 */ /* r2: __m */ 21*5f91a3adSMasahiro Yamada /* n1 < d, but n1 might be larger than d1. */ 22*5f91a3adSMasahiro Yamada .global __udiv_qrnnd_16 23*5f91a3adSMasahiro Yamada .balign 8 24*5f91a3adSMasahiro Yamada__udiv_qrnnd_16: 25*5f91a3adSMasahiro Yamada div0u 26*5f91a3adSMasahiro Yamada cmp/hi r6,r0 27*5f91a3adSMasahiro Yamada bt .Lots 28*5f91a3adSMasahiro Yamada .rept 16 29*5f91a3adSMasahiro Yamada div1 r6,r0 30*5f91a3adSMasahiro Yamada .endr 31*5f91a3adSMasahiro Yamada extu.w r0,r1 32*5f91a3adSMasahiro Yamada bt 0f 33*5f91a3adSMasahiro Yamada add r6,r0 34*5f91a3adSMasahiro Yamada0: rotcl r1 35*5f91a3adSMasahiro Yamada mulu.w r1,r5 36*5f91a3adSMasahiro Yamada xtrct r4,r0 37*5f91a3adSMasahiro Yamada swap.w r0,r0 38*5f91a3adSMasahiro Yamada sts macl,r2 39*5f91a3adSMasahiro Yamada cmp/hs r2,r0 40*5f91a3adSMasahiro Yamada sub r2,r0 41*5f91a3adSMasahiro Yamada bt 0f 42*5f91a3adSMasahiro Yamada addc r5,r0 43*5f91a3adSMasahiro Yamada add #-1,r1 44*5f91a3adSMasahiro Yamada bt 0f 45*5f91a3adSMasahiro Yamada1: add #-1,r1 46*5f91a3adSMasahiro Yamada rts 47*5f91a3adSMasahiro Yamada add r5,r0 48*5f91a3adSMasahiro Yamada .balign 8 49*5f91a3adSMasahiro Yamada.Lots: 50*5f91a3adSMasahiro Yamada sub r5,r0 51*5f91a3adSMasahiro Yamada swap.w r4,r1 52*5f91a3adSMasahiro Yamada xtrct r0,r1 53*5f91a3adSMasahiro Yamada clrt 54*5f91a3adSMasahiro Yamada mov r1,r0 55*5f91a3adSMasahiro Yamada addc r5,r0 56*5f91a3adSMasahiro Yamada mov #-1,r1 57*5f91a3adSMasahiro Yamada bf/s 1b 58*5f91a3adSMasahiro Yamada shlr16 r1 59*5f91a3adSMasahiro Yamada0: rts 60*5f91a3adSMasahiro Yamada nop 61