minix/sys/lib/libkern/arch/sh3/ashiftrt.S
2012-02-09 18:48:13 +01:00

181 lines
3.7 KiB
ArmAsm

/* $NetBSD: ashiftrt.S,v 1.7 2009/01/07 22:15:18 uwe Exp $ */
/*-
* Copyright (C) 1999 Tsubai Masanari. All rights reserved.
*
* Redistribution and use in source and binary forms, with or without
* modification, are permitted provided that the following conditions
* are met:
* 1. Redistributions of source code must retain the above copyright
* notice, this list of conditions and the following disclaimer.
* 2. Redistributions in binary form must reproduce the above copyright
* notice, this list of conditions and the following disclaimer in the
* documentation and/or other materials provided with the distribution.
* 3. The name of the author may not be used to endorse or promote products
* derived from this software without specific prior written permission.
*
* THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY EXPRESS OR
* IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES
* OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED.
* IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY DIRECT, INDIRECT,
* INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT
* NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
* DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
* THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
* (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
* OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
*/
#include <machine/asm.h>
#ifdef __ELF__
.hidden __ashiftrt_r4_0
.hidden __ashiftrt_r4_1
.hidden __ashiftrt_r4_2
.hidden __ashiftrt_r4_3
.hidden __ashiftrt_r4_4
.hidden __ashiftrt_r4_5
.hidden __ashiftrt_r4_6
.hidden __ashiftrt_r4_7
.hidden __ashiftrt_r4_8
.hidden __ashiftrt_r4_9
.hidden __ashiftrt_r4_10
.hidden __ashiftrt_r4_11
.hidden __ashiftrt_r4_12
.hidden __ashiftrt_r4_13
.hidden __ashiftrt_r4_14
.hidden __ashiftrt_r4_15
.hidden __ashiftrt_r4_16
.hidden __ashiftrt_r4_17
.hidden __ashiftrt_r4_18
.hidden __ashiftrt_r4_19
.hidden __ashiftrt_r4_20
.hidden __ashiftrt_r4_21
.hidden __ashiftrt_r4_22
.hidden __ashiftrt_r4_23
.hidden __ashiftrt_r4_24
.hidden __ashiftrt_r4_25
.hidden __ashiftrt_r4_26
.hidden __ashiftrt_r4_27
.hidden __ashiftrt_r4_28
.hidden __ashiftrt_r4_29
.hidden __ashiftrt_r4_30
.hidden __ashiftrt_r4_31
#endif /* __ELF__ */
NENTRY(__ashiftrt_r4_31)
shll r4
rts
subc r4, r4
ALTENTRY(__ashiftrt_r4_30)
shar r4
ALTENTRY(__ashiftrt_r4_29)
shar r4
ALTENTRY(__ashiftrt_r4_28)
shar r4
ALTENTRY(__ashiftrt_r4_27)
shar r4
ALTENTRY(__ashiftrt_r4_26)
shar r4
ALTENTRY(__ashiftrt_r4_25)
shar r4
ALTENTRY(__ashiftrt_r4_24)
shlr16 r4
shlr8 r4
rts
exts.b r4, r4
ALTENTRY(__ashiftrt_r4_23)
shar r4
ALTENTRY(__ashiftrt_r4_22)
shar r4
ALTENTRY(__ashiftrt_r4_21)
shar r4
ALTENTRY(__ashiftrt_r4_20)
shar r4
ALTENTRY(__ashiftrt_r4_19)
shar r4
ALTENTRY(__ashiftrt_r4_18)
shar r4
ALTENTRY(__ashiftrt_r4_17)
shar r4
ALTENTRY(__ashiftrt_r4_16)
shlr16 r4
rts
exts.w r4, r4
ALTENTRY(__ashiftrt_r4_15)
swap.w r4, r4
cmp/pz r4
bf/s 1f
exts.w r4, r4
rts
shll r4
1:
sett
rts
rotcl r4
ALTENTRY(__ashiftrt_r4_14)
shar r4
ALTENTRY(__ashiftrt_r4_13)
shar r4
ALTENTRY(__ashiftrt_r4_12)
shar r4
ALTENTRY(__ashiftrt_r4_11)
shar r4
ALTENTRY(__ashiftrt_r4_10)
shar r4
ALTENTRY(__ashiftrt_r4_9)
shar r4
ALTENTRY(__ashiftrt_r4_8)
shar r4
ALTENTRY(__ashiftrt_r4_7)
shar r4
ALTENTRY(__ashiftrt_r4_6)
shar r4
ALTENTRY(__ashiftrt_r4_5)
shar r4
ALTENTRY(__ashiftrt_r4_4)
shar r4
ALTENTRY(__ashiftrt_r4_3)
shar r4
ALTENTRY(__ashiftrt_r4_2)
shar r4
ALTENTRY(__ashiftrt_r4_1)
rts
shar r4
ALTENTRY(__ashiftrt_r4_0)
rts
nop