File: mpv_sparcv8x.s

package info (click to toggle)
wine-gecko-2.21 2.21%2Bdfsg2-1
  • links: PTS, VCS
  • area: main
  • in suites: jessie, jessie-kfreebsd
  • size: 646,272 kB
  • ctags: 630,086
  • sloc: cpp: 2,895,786; ansic: 1,502,970; python: 156,675; asm: 115,373; java: 111,421; sh: 63,309; xml: 62,872; makefile: 58,685; perl: 19,182; objc: 3,461; yacc: 2,051; lex: 979; pascal: 929; exp: 449; php: 244; lisp: 228; awk: 211; sed: 26; csh: 21; ada: 16; ruby: 3
file content (144 lines) | stat: -rw-r--r-- 3,203 bytes parent folder | download | duplicates (4)
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
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
! Inner multiply loop functions for pure 32-bit Sparc v8 CPUs.
! This Source Code Form is subject to the terms of the Mozilla Public
! License, v. 2.0. If a copy of the MPL was not distributed with this
! file, You can obtain one at http://mozilla.org/MPL/2.0/.

! $Id: mpv_sparcv8x.s,v 1.3 2012/04/25 14:49:50 gerv%gerv.net Exp $

	.file	"mpv_sparcv8x.s"
	.align	8

	.section     ".text",#alloc,#execinstr
	.global      s_mpv_mul_d
 s_mpv_mul_d:
	save         %sp, -0x60, %sp
	mov          %i0, %o0
	clr          %g4
	cmp          %i1, 0x0
	be           .L103
	sub          %i1, 0x1, %o5
	ld           [%o0], %g1
.L101:
	umul         %g1, %i2, %g2
	rd           %y, %g1
	add          %g2, %g4, %g3
	mov          %g1, %o4
	add          %o0, 0x4, %o0
	cmp          %g3, %g4
	blu,a        .L102
	add          %g1, 0x1, %o4
.L102:
	st           %g3, [%i3]
	mov          %o5, %g1
	add          %i3, 0x4, %i3
	cmp          %g1, 0x0
	mov          %o4, %g4
	sub          %o5, 0x1, %o5
	bne,a        .L101
	ld           [%o0], %g1
.L103:
	st           %g4, [%i3]
	ret
	restore

	.type	s_mpv_mul_d,2
	.size	s_mpv_mul_d,(.-s_mpv_mul_d)

	.align	16
	.global      s_mpv_mul_d_add
 s_mpv_mul_d_add:

	save         %sp, -0x60, %sp
	mov          %i0, %o0
	clr          %g4
	cmp          %i1, 0x0
	be           .L204
	sub          %i1, 0x1, %o5
	ld           [%o0], %g1
.L201:
	umul         %g1, %i2, %g2
	rd           %y, %g1
	add          %g2, %g4, %g3
	mov          %g1, %o4
	add          %o0, 0x4, %o0
	cmp          %g3, %g4
	blu,a        .L202
	add          %g1, 0x1, %o4
.L202:
	ld           [%i3], %g2
	add          %g3, %g2, %g1
	cmp          %g1, %g2
	blu,a        .L203
	add          %o4, 0x1, %o4
.L203:
	st           %g1, [%i3]
	mov          %o5, %g1
	add          %i3, 0x4, %i3
	cmp          %g1, 0x0
	mov          %o4, %g4
	sub          %o5, 0x1, %o5
	bne,a        .L201
	ld           [%o0], %g1
.L204:
	st           %g4, [%i3]
	ret
	restore

	.type	s_mpv_mul_d_add,2
	.size	s_mpv_mul_d_add,(.-s_mpv_mul_d_add)

	.align	16
	.global      s_mpv_mul_d_add_prop
 s_mpv_mul_d_add_prop:

	save         %sp, -0x60, %sp
	mov          %i0, %o0
	clr          %o5
	cmp          %i1, 0x0
	be           .L30x70
	sub          %i1, 0x1, %g4
	ld           [%o0], %g1
.L30x1c:
	umul         %g1, %i2, %g2
	rd           %y, %g1
	add          %g2, %o5, %g3
	mov          %g1, %o4
	add          %o0, 0x4, %o0
	cmp          %g3, %o5
	blu,a        .L30x3c
	add          %g1, 0x1, %o4
.L30x3c:
	ld           [%i3], %g2
	add          %g3, %g2, %g1
	cmp          %g1, %g2
	blu,a        .L30x50
	add          %o4, 0x1, %o4
.L30x50:
	st           %g1, [%i3]
	mov          %g4, %g1
	add          %i3, 0x4, %i3
	cmp          %g1, 0x0
	mov          %o4, %o5
	sub          %g4, 0x1, %g4
	bne,a        .L30x1c
	ld           [%o0], %g1
.L30x70:
	cmp          %o5, 0x0
	be           .L30xa0
	nop
	ld           [%i3], %g1
.L30x80:
	add          %o5, %g1, %g2
	st           %g2, [%i3]
	add          %i3, 0x4, %i3
	cmp          %g2, %g1
	addx         %g0, 0x0, %o5
	cmp          %o5, 0x0
	bne,a        .L30x80
	ld           [%i3], %g1
.L30xa0:
	ret
	restore

	.type	s_mpv_mul_d_add_prop,2
	.size	s_mpv_mul_d_add_prop,(.-s_mpv_mul_d_add_prop)