/* Copyright (C) 1994, 1995, 1997, 1998, 1999, 2000, 2001, 2002, 2003,
   2004, 2005, 2006
   Free Software Foundation, Inc.

 * SPDX-License-Identifier:	GPL-2.0+
 */

!! libgcc routines for the Renesas / SuperH SH CPUs.
!! Contributed by Steve Chamberlain.
!! sac@cygnus.com

!! ashiftrt_r4_x, ___ashrsi3, ___ashlsi3, ___lshrsi3 routines
!! recoded in assembly by Toshiyasu Morita
!! tm@netcom.com

/* SH2 optimizations for ___ashrsi3, ___ashlsi3, ___lshrsi3 and
   ELF local label prefixes by J"orn Rennecke
   amylaar@cygnus.com  */

!
! GLOBAL(ashlsi3)
!
! Entry:
!
! r4: Value to shift
! r5: Shifts
!
! Exit:
!
! r0: Result
!
! Destroys:
!
! (none)
!
	.global	__ashlsi3
	.align	2
__ashlsi3:
	mov	#31,r0
	and	r0,r5
	mova	__ashlsi3_table,r0
	mov.b	@(r0,r5),r5
#ifdef __sh1__
	add	r5,r0
	jmp	@r0
#else
	braf	r5
#endif
	mov	r4,r0

	.align	2
__ashlsi3_table:
	.byte		__ashlsi3_0-__ashlsi3_table
	.byte		__ashlsi3_1-__ashlsi3_table
	.byte		__ashlsi3_2-__ashlsi3_table
	.byte		__ashlsi3_3-__ashlsi3_table
	.byte		__ashlsi3_4-__ashlsi3_table
	.byte		__ashlsi3_5-__ashlsi3_table
	.byte		__ashlsi3_6-__ashlsi3_table
	.byte		__ashlsi3_7-__ashlsi3_table
	.byte		__ashlsi3_8-__ashlsi3_table
	.byte		__ashlsi3_9-__ashlsi3_table
	.byte		__ashlsi3_10-__ashlsi3_table
	.byte		__ashlsi3_11-__ashlsi3_table
	.byte		__ashlsi3_12-__ashlsi3_table
	.byte		__ashlsi3_13-__ashlsi3_table
	.byte		__ashlsi3_14-__ashlsi3_table
	.byte		__ashlsi3_15-__ashlsi3_table
	.byte		__ashlsi3_16-__ashlsi3_table
	.byte		__ashlsi3_17-__ashlsi3_table
	.byte		__ashlsi3_18-__ashlsi3_table
	.byte		__ashlsi3_19-__ashlsi3_table
	.byte		__ashlsi3_20-__ashlsi3_table
	.byte		__ashlsi3_21-__ashlsi3_table
	.byte		__ashlsi3_22-__ashlsi3_table
	.byte		__ashlsi3_23-__ashlsi3_table
	.byte		__ashlsi3_24-__ashlsi3_table
	.byte		__ashlsi3_25-__ashlsi3_table
	.byte		__ashlsi3_26-__ashlsi3_table
	.byte		__ashlsi3_27-__ashlsi3_table
	.byte		__ashlsi3_28-__ashlsi3_table
	.byte		__ashlsi3_29-__ashlsi3_table
	.byte		__ashlsi3_30-__ashlsi3_table
	.byte		__ashlsi3_31-__ashlsi3_table

__ashlsi3_6:
	shll2	r0
__ashlsi3_4:
	shll2	r0
__ashlsi3_2:
	rts
	shll2	r0

__ashlsi3_7:
	shll2	r0
__ashlsi3_5:
	shll2	r0
__ashlsi3_3:
	shll2	r0
__ashlsi3_1:
	rts
	shll	r0

__ashlsi3_14:
	shll2	r0
__ashlsi3_12:
	shll2	r0
__ashlsi3_10:
	shll2	r0
__ashlsi3_8:
	rts
	shll8	r0

__ashlsi3_15:
	shll2	r0
__ashlsi3_13:
	shll2	r0
__ashlsi3_11:
	shll2	r0
__ashlsi3_9:
	shll8	r0
	rts
	shll	r0

__ashlsi3_22:
	shll2	r0
__ashlsi3_20:
	shll2	r0
__ashlsi3_18:
	shll2	r0
__ashlsi3_16:
	rts
	shll16	r0

__ashlsi3_23:
	shll2	r0
__ashlsi3_21:
	shll2	r0
__ashlsi3_19:
	shll2	r0
__ashlsi3_17:
	shll16	r0
	rts
	shll	r0

__ashlsi3_30:
	shll2	r0
__ashlsi3_28:
	shll2	r0
__ashlsi3_26:
	shll2	r0
__ashlsi3_24:
	shll16	r0
	rts
	shll8	r0

__ashlsi3_31:
	shll2	r0
__ashlsi3_29:
	shll2	r0
__ashlsi3_27:
	shll2	r0
__ashlsi3_25:
	shll16	r0
	shll8	r0
	rts
	shll	r0

__ashlsi3_0:
	rts
	nop
