xref: /openbmc/u-boot/arch/sh/lib/ashlsi3.S (revision 83d290c56fab2d38cd1ab4c4cc7099559c1d5046)
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