|  | /* | 
|  | * linux/arch/m32r/lib/ashxdi3.S | 
|  | * | 
|  | * Copyright (C) 2001,2002  Hiroyuki Kondo, and Hirokazu Takata | 
|  | * | 
|  | */ | 
|  | /* $Id$ */ | 
|  |  | 
|  |  | 
|  | ; | 
|  | ;      input   (r0,r1)  src | 
|  | ;      input    r2      shift val | 
|  | ;               r3      scratch | 
|  | ;      output  (r0,r1) | 
|  | ; | 
|  |  | 
|  | #ifdef CONFIG_ISA_DUAL_ISSUE | 
|  |  | 
|  | #ifndef __LITTLE_ENDIAN__ | 
|  |  | 
|  | .text | 
|  | .align	4 | 
|  | .globl __ashrdi3 | 
|  | __ashrdi3: | 
|  | cmpz	r2		    ||	ldi	r3, #32 | 
|  | jc	r14		    ||	cmpu	r2, r3 | 
|  | bc      1f | 
|  | ;   case 32 =< shift | 
|  | mv      r1, r0		    ||	srai    r0, #31 | 
|  | addi    r2, #-32 | 
|  | sra     r1, r2 | 
|  | jmp     r14 | 
|  | .fillinsn | 
|  | 1:  ;   case shift <32 | 
|  | mv      r3, r0		    ||	srl     r1, r2 | 
|  | sra     r0, r2		    ||	neg     r2, r2 | 
|  | sll     r3, r2 | 
|  | or      r1, r3		    ||	jmp	r14 | 
|  |  | 
|  | .align  4 | 
|  | .globl __ashldi3 | 
|  | .globl __lshldi3 | 
|  | __ashldi3: | 
|  | __lshldi3: | 
|  | cmpz	r2		    ||	ldi	r3, #32 | 
|  | jc	r14		    ||	cmpu	r2, r3 | 
|  | bc      1f | 
|  | ;   case 32 =< shift | 
|  | mv      r0, r1		    ||	addi    r2, #-32 | 
|  | sll     r0, r2		    ||	ldi     r1, #0 | 
|  | jmp     r14 | 
|  | .fillinsn | 
|  | 1:  ;   case shift <32 | 
|  | mv      r3, r1		    ||	sll     r0, r2 | 
|  | sll     r1, r2		    ||	neg     r2, r2 | 
|  | srl     r3, r2 | 
|  | or      r0, r3		    ||	jmp	r14 | 
|  |  | 
|  | .align	4 | 
|  | .globl __lshrdi3 | 
|  | __lshrdi3: | 
|  | cmpz	r2		    ||	ldi	r3, #32 | 
|  | jc	r14		    ||	cmpu	r2, r3 | 
|  | bc      1f | 
|  | ;   case 32 =< shift | 
|  | mv      r1, r0		    ||	addi    r2, #-32 | 
|  | ldi	r0, #0		    ||	srl     r1, r2 | 
|  | jmp     r14 | 
|  | .fillinsn | 
|  | 1:  ;   case shift <32 | 
|  | mv      r3, r0		    ||	srl     r1, r2 | 
|  | srl     r0, r2		    ||	neg     r2, r2 | 
|  | sll     r3, r2 | 
|  | or      r1, r3		    ||	jmp	r14 | 
|  |  | 
|  | #else /* LITTLE_ENDIAN */ | 
|  |  | 
|  | .text | 
|  | .align	4 | 
|  | .globl __ashrdi3 | 
|  | __ashrdi3: | 
|  | cmpz	r2		    ||	ldi	r3, #32 | 
|  | jc	r14		    ||	cmpu	r2, r3 | 
|  | bc      1f | 
|  | ;   case 32 =< shift | 
|  | mv      r0, r1		    ||	srai    r1, #31 | 
|  | addi    r2, #-32 | 
|  | sra     r0, r2 | 
|  | jmp     r14 | 
|  | .fillinsn | 
|  | 1:  ;   case shift <32 | 
|  | mv      r3, r1		    ||	srl     r0, r2 | 
|  | sra     r1, r2		    ||	neg     r2, r2 | 
|  | sll     r3, r2 | 
|  | or      r0, r3		    ||	jmp	r14 | 
|  |  | 
|  | .align  4 | 
|  | .globl __ashldi3 | 
|  | .globl __lshldi3 | 
|  | __ashldi3: | 
|  | __lshldi3: | 
|  | cmpz	r2		    ||	ldi	r3, #32 | 
|  | jc	r14		    ||	cmpu	r2, r3 | 
|  | bc      1f | 
|  | ;   case 32 =< shift | 
|  | mv      r1, r0		    ||	addi    r2, #-32 | 
|  | sll     r1, r2		    ||	ldi     r0, #0 | 
|  | jmp     r14 | 
|  | .fillinsn | 
|  | 1:  ;   case shift <32 | 
|  | mv      r3, r0		    ||	sll     r1, r2 | 
|  | sll     r0, r2		    ||	neg     r2, r2 | 
|  | srl     r3, r2 | 
|  | or      r1, r3		    ||	jmp	r14 | 
|  |  | 
|  | .align	4 | 
|  | .globl __lshrdi3 | 
|  | __lshrdi3: | 
|  | cmpz	r2		    ||	ldi	r3, #32 | 
|  | jc	r14		    ||	cmpu	r2, r3 | 
|  | bc      1f | 
|  | ;   case 32 =< shift | 
|  | mv      r0, r1		    ||	addi    r2, #-32 | 
|  | ldi	r1, #0		    ||	srl     r0, r2 | 
|  | jmp     r14 | 
|  | .fillinsn | 
|  | 1:  ;   case shift <32 | 
|  | mv      r3, r1		    ||	srl     r0, r2 | 
|  | srl     r1, r2		    ||	neg     r2, r2 | 
|  | sll     r3, r2 | 
|  | or      r0, r3		    ||	jmp	r14 | 
|  |  | 
|  | #endif | 
|  |  | 
|  | #else /* not CONFIG_ISA_DUAL_ISSUE */ | 
|  |  | 
|  | #ifndef __LITTLE_ENDIAN__ | 
|  |  | 
|  | .text | 
|  | .align	4 | 
|  | .globl __ashrdi3 | 
|  | __ashrdi3: | 
|  | beqz	r2, 2f | 
|  | cmpui   r2, #32 | 
|  | bc      1f | 
|  | ;   case 32 =< shift | 
|  | mv      r1, r0 | 
|  | srai    r0, #31 | 
|  | addi    r2, #-32 | 
|  | sra     r1, r2 | 
|  | jmp     r14 | 
|  | .fillinsn | 
|  | 1:  ;   case shift <32 | 
|  | mv      r3, r0 | 
|  | srl     r1, r2 | 
|  | sra     r0, r2 | 
|  | neg     r2, r2 | 
|  | sll     r3, r2 | 
|  | or      r1, r3 | 
|  | .fillinsn | 
|  | 2: | 
|  | jmp	r14 | 
|  |  | 
|  | .align  4 | 
|  | .globl __ashldi3 | 
|  | .globl __lshldi3 | 
|  | __ashldi3: | 
|  | __lshldi3: | 
|  | beqz	r2, 2f | 
|  | cmpui   r2, #32 | 
|  | bc      1f | 
|  | ;   case 32 =< shift | 
|  | mv      r0, r1 | 
|  | addi    r2, #-32 | 
|  | sll     r0, r2 | 
|  | ldi     r1, #0 | 
|  | jmp     r14 | 
|  | .fillinsn | 
|  | 1:  ;   case shift <32 | 
|  | mv      r3, r1 | 
|  | sll     r0, r2 | 
|  | sll     r1, r2 | 
|  | neg     r2, r2 | 
|  | srl     r3, r2 | 
|  | or      r0, r3 | 
|  | .fillinsn | 
|  | 2: | 
|  | jmp	r14 | 
|  |  | 
|  | .align	4 | 
|  | .globl __lshrdi3 | 
|  | __lshrdi3: | 
|  | beqz	r2, 2f | 
|  | cmpui   r2, #32 | 
|  | bc      1f | 
|  | ;   case 32 =< shift | 
|  | mv      r1, r0 | 
|  | ldi	r0, #0 | 
|  | addi    r2, #-32 | 
|  | srl     r1, r2 | 
|  | jmp     r14 | 
|  | .fillinsn | 
|  | 1:  ;   case shift <32 | 
|  | mv      r3, r0 | 
|  | srl     r1, r2 | 
|  | srl     r0, r2 | 
|  | neg     r2, r2 | 
|  | sll     r3, r2 | 
|  | or      r1, r3 | 
|  | .fillinsn | 
|  | 2: | 
|  | jmp	r14 | 
|  |  | 
|  | #else | 
|  |  | 
|  | .text | 
|  | .align	4 | 
|  | .globl __ashrdi3 | 
|  | __ashrdi3: | 
|  | beqz	r2, 2f | 
|  | cmpui   r2, #32 | 
|  | bc      1f | 
|  | ;   case 32 =< shift | 
|  | mv      r0, r1 | 
|  | srai    r1, #31 | 
|  | addi    r2, #-32 | 
|  | sra     r0, r2 | 
|  | jmp     r14 | 
|  | .fillinsn | 
|  | 1:  ;   case shift <32 | 
|  | mv      r3, r1 | 
|  | srl     r0, r2 | 
|  | sra     r1, r2 | 
|  | neg     r2, r2 | 
|  | sll     r3, r2 | 
|  | or      r0, r3 | 
|  | .fillinsn | 
|  | 2: | 
|  | jmp	r14 | 
|  |  | 
|  | .align  4 | 
|  | .globl __ashldi3 | 
|  | .globl __lshldi3 | 
|  | __ashldi3: | 
|  | __lshldi3: | 
|  | beqz	r2, 2f | 
|  | cmpui   r2, #32 | 
|  | bc      1f | 
|  | ;   case 32 =< shift | 
|  | mv      r1, r0 | 
|  | addi    r2, #-32 | 
|  | sll     r1, r2 | 
|  | ldi     r0, #0 | 
|  | jmp     r14 | 
|  | .fillinsn | 
|  | 1:  ;   case shift <32 | 
|  | mv      r3, r0 | 
|  | sll     r1, r2 | 
|  | sll     r0, r2 | 
|  | neg     r2, r2 | 
|  | srl     r3, r2 | 
|  | or      r1, r3 | 
|  | .fillinsn | 
|  | 2: | 
|  | jmp	r14 | 
|  |  | 
|  | .align	4 | 
|  | .globl __lshrdi3 | 
|  | __lshrdi3: | 
|  | beqz	r2, 2f | 
|  | cmpui   r2, #32 | 
|  | bc      1f | 
|  | ;   case 32 =< shift | 
|  | mv      r0, r1 | 
|  | ldi	r1, #0 | 
|  | addi    r2, #-32 | 
|  | srl     r0, r2 | 
|  | jmp     r14 | 
|  | .fillinsn | 
|  | 1:  ;   case shift <32 | 
|  | mv      r3, r1 | 
|  | srl     r0, r2 | 
|  | srl     r1, r2 | 
|  | neg     r2, r2 | 
|  | sll     r3, r2 | 
|  | or      r0, r3 | 
|  | .fillinsn | 
|  | 2: | 
|  | jmp	r14 | 
|  |  | 
|  | #endif | 
|  |  | 
|  | #endif /* not CONFIG_ISA_DUAL_ISSUE */ | 
|  |  | 
|  | .end | 
|  |  |