Blame view

kernel/linux-rt-4.4.41/arch/h8300/lib/mulsi3.S 679 Bytes
5113f6f70   김현기   kernel add
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
  ;
  ; mulsi3 for H8/300H - based on Renesas SH implementation
  ;
  ; by Toshiyasu Morita
  ;
  ; Old code:
  ;
  ; 16b * 16b = 372 states (worst case)
  ; 32b * 32b = 724 states (worst case)
  ;
  ; New code:
  ;
  ; 16b * 16b =  48 states
  ; 16b * 32b =  72 states
  ; 32b * 32b =  92 states
  ;
  
  	.global __mulsi3
  __mulsi3:
  	mov.w	r1,r2   ; ( 2 states) b * d
  	mulxu	r0,er2  ; (22 states)
  
  	mov.w	e0,r3   ; ( 2 states) a * d
  	beq	L_skip1 ; ( 4 states)
  	mulxu	r1,er3  ; (22 states)
  	add.w	r3,e2   ; ( 2 states)
  
  L_skip1:
  	mov.w	e1,r3   ; ( 2 states) c * b
  	beq	L_skip2 ; ( 4 states)
  	mulxu	r0,er3  ; (22 states)
  	add.w	r3,e2   ; ( 2 states)
  
  L_skip2:
  	mov.l	er2,er0	; ( 2 states)
  	rts		; (10 states)
  
  	.end