294 lines
		
	
	
	
		
			4.9 KiB
			
		
	
	
	
		
			ArmAsm
		
	
	
	
	
	
		
		
			
		
	
	
			294 lines
		
	
	
	
		
			4.9 KiB
			
		
	
	
	
		
			ArmAsm
		
	
	
	
	
	
|   | /* | ||
|  |  * linux/arch/m32r/lib/ashxdi3.S | ||
|  |  * | ||
|  |  * Copyright (C) 2001,2002  Hiroyuki Kondo, and Hirokazu Takata | ||
|  |  * | ||
|  |  */ | ||
|  | 
 | ||
|  | ;
 | ||
|  | ;      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 |