Skip to content
Projects
Groups
Snippets
Help
Loading...
Help
Support
Keyboard shortcuts
?
Submit feedback
Contribute to GitLab
Sign in / Register
Toggle navigation
G
go
Project overview
Project overview
Details
Activity
Releases
Repository
Repository
Files
Commits
Branches
Tags
Contributors
Graph
Compare
Issues
0
Issues
0
List
Boards
Labels
Milestones
Merge Requests
0
Merge Requests
0
Analytics
Analytics
Repository
Value Stream
Wiki
Wiki
Snippets
Snippets
Members
Members
Collapse sidebar
Close sidebar
Activity
Graph
Create a new issue
Commits
Issue Boards
Open sidebar
Kirill Smelkov
go
Commits
73374c93
Commit
73374c93
authored
Apr 19, 2010
by
Evan Shaw
Committed by
Robert Griesemer
Apr 19, 2010
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
big: Get rid of function pointers and init function
R=rsc, gri CC=golang-dev
https://golang.org/cl/929041
parent
8df31213
Changes
4
Hide whitespace changes
Inline
Side-by-side
Showing
4 changed files
with
43 additions
and
89 deletions
+43
-89
src/pkg/big/arith.go
src/pkg/big/arith.go
+7
-53
src/pkg/big/arith_386.s
src/pkg/big/arith_386.s
+15
-15
src/pkg/big/arith_amd64.s
src/pkg/big/arith_amd64.s
+14
-14
src/pkg/big/arith_arm.s
src/pkg/big/arith_arm.s
+7
-7
No files found.
src/pkg/big/arith.go
View file @
73374c93
...
@@ -267,58 +267,12 @@ func divWW_g(x1, x0, y Word) (q, r Word) {
...
@@ -267,58 +267,12 @@ func divWW_g(x1, x0, y Word) (q, r Word) {
}
}
// ----------------------------------------------------------------------------
// Elementary operations on vectors
// All higher-level functions use these elementary vector operations.
// The function pointers f are initialized with default implementations
// f_g, written in Go for portability. The corresponding assembly routines
// f_s should be installed if they exist.
var
(
// addVV sets z and returns c such that z+c = x+y.
addVV
func
(
z
,
x
,
y
*
Word
,
n
int
)
(
c
Word
)
=
addVV_g
// subVV sets z and returns c such that z-c = x-y.
subVV
func
(
z
,
x
,
y
*
Word
,
n
int
)
(
c
Word
)
=
subVV_g
// addVW sets z and returns c such that z+c = x-y.
addVW
func
(
z
,
x
*
Word
,
y
Word
,
n
int
)
(
c
Word
)
=
addVW_g
// subVW sets z and returns c such that z-c = x-y.
subVW
func
(
z
,
x
*
Word
,
y
Word
,
n
int
)
(
c
Word
)
=
subVW_g
// mulAddVWW sets z and returns c such that z+c = x*y + r.
mulAddVWW
func
(
z
,
x
*
Word
,
y
,
r
Word
,
n
int
)
(
c
Word
)
=
mulAddVWW_g
// addMulVVW sets z and returns c such that z+c = z + x*y.
addMulVVW
func
(
z
,
x
*
Word
,
y
Word
,
n
int
)
(
c
Word
)
=
addMulVVW_g
// divWVW sets z and returns r such that z-r = (xn<<(n*_W) + x) / y.
divWVW
func
(
z
*
Word
,
xn
Word
,
x
*
Word
,
y
Word
,
n
int
)
(
r
Word
)
=
divWVW_g
)
func
init
()
{
// Uncomment to use generic routines.
//return;
// Install assembly routines.
addVV
=
addVV_s
subVV
=
subVV_s
addVW
=
addVW_s
subVW
=
subVW_s
mulAddVWW
=
mulAddVWW_s
addMulVVW
=
addMulVVW_s
divWVW
=
divWVW_s
}
func
(
p
*
Word
)
at
(
i
int
)
*
Word
{
func
(
p
*
Word
)
at
(
i
int
)
*
Word
{
return
(
*
Word
)(
unsafe
.
Pointer
(
uintptr
(
unsafe
.
Pointer
(
p
))
+
uintptr
(
i
)
*
_S
))
return
(
*
Word
)(
unsafe
.
Pointer
(
uintptr
(
unsafe
.
Pointer
(
p
))
+
uintptr
(
i
)
*
_S
))
}
}
func
addVV
_s
(
z
,
x
,
y
*
Word
,
n
int
)
(
c
Word
)
func
addVV
(
z
,
x
,
y
*
Word
,
n
int
)
(
c
Word
)
func
addVV_g
(
z
,
x
,
y
*
Word
,
n
int
)
(
c
Word
)
{
func
addVV_g
(
z
,
x
,
y
*
Word
,
n
int
)
(
c
Word
)
{
for
i
:=
0
;
i
<
n
;
i
++
{
for
i
:=
0
;
i
<
n
;
i
++
{
c
,
*
z
.
at
(
i
)
=
addWW_g
(
*
x
.
at
(
i
),
*
y
.
at
(
i
),
c
)
c
,
*
z
.
at
(
i
)
=
addWW_g
(
*
x
.
at
(
i
),
*
y
.
at
(
i
),
c
)
...
@@ -327,7 +281,7 @@ func addVV_g(z, x, y *Word, n int) (c Word) {
...
@@ -327,7 +281,7 @@ func addVV_g(z, x, y *Word, n int) (c Word) {
}
}
func
subVV
_s
(
z
,
x
,
y
*
Word
,
n
int
)
(
c
Word
)
func
subVV
(
z
,
x
,
y
*
Word
,
n
int
)
(
c
Word
)
func
subVV_g
(
z
,
x
,
y
*
Word
,
n
int
)
(
c
Word
)
{
func
subVV_g
(
z
,
x
,
y
*
Word
,
n
int
)
(
c
Word
)
{
for
i
:=
0
;
i
<
n
;
i
++
{
for
i
:=
0
;
i
<
n
;
i
++
{
c
,
*
z
.
at
(
i
)
=
subWW_g
(
*
x
.
at
(
i
),
*
y
.
at
(
i
),
c
)
c
,
*
z
.
at
(
i
)
=
subWW_g
(
*
x
.
at
(
i
),
*
y
.
at
(
i
),
c
)
...
@@ -336,7 +290,7 @@ func subVV_g(z, x, y *Word, n int) (c Word) {
...
@@ -336,7 +290,7 @@ func subVV_g(z, x, y *Word, n int) (c Word) {
}
}
func
addVW
_s
(
z
,
x
*
Word
,
y
Word
,
n
int
)
(
c
Word
)
func
addVW
(
z
,
x
*
Word
,
y
Word
,
n
int
)
(
c
Word
)
func
addVW_g
(
z
,
x
*
Word
,
y
Word
,
n
int
)
(
c
Word
)
{
func
addVW_g
(
z
,
x
*
Word
,
y
Word
,
n
int
)
(
c
Word
)
{
c
=
y
c
=
y
for
i
:=
0
;
i
<
n
;
i
++
{
for
i
:=
0
;
i
<
n
;
i
++
{
...
@@ -346,7 +300,7 @@ func addVW_g(z, x *Word, y Word, n int) (c Word) {
...
@@ -346,7 +300,7 @@ func addVW_g(z, x *Word, y Word, n int) (c Word) {
}
}
func
subVW
_s
(
z
,
x
*
Word
,
y
Word
,
n
int
)
(
c
Word
)
func
subVW
(
z
,
x
*
Word
,
y
Word
,
n
int
)
(
c
Word
)
func
subVW_g
(
z
,
x
*
Word
,
y
Word
,
n
int
)
(
c
Word
)
{
func
subVW_g
(
z
,
x
*
Word
,
y
Word
,
n
int
)
(
c
Word
)
{
c
=
y
c
=
y
for
i
:=
0
;
i
<
n
;
i
++
{
for
i
:=
0
;
i
<
n
;
i
++
{
...
@@ -356,7 +310,7 @@ func subVW_g(z, x *Word, y Word, n int) (c Word) {
...
@@ -356,7 +310,7 @@ func subVW_g(z, x *Word, y Word, n int) (c Word) {
}
}
func
mulAddVWW
_s
(
z
,
x
*
Word
,
y
,
r
Word
,
n
int
)
(
c
Word
)
func
mulAddVWW
(
z
,
x
*
Word
,
y
,
r
Word
,
n
int
)
(
c
Word
)
func
mulAddVWW_g
(
z
,
x
*
Word
,
y
,
r
Word
,
n
int
)
(
c
Word
)
{
func
mulAddVWW_g
(
z
,
x
*
Word
,
y
,
r
Word
,
n
int
)
(
c
Word
)
{
c
=
r
c
=
r
for
i
:=
0
;
i
<
n
;
i
++
{
for
i
:=
0
;
i
<
n
;
i
++
{
...
@@ -366,7 +320,7 @@ func mulAddVWW_g(z, x *Word, y, r Word, n int) (c Word) {
...
@@ -366,7 +320,7 @@ func mulAddVWW_g(z, x *Word, y, r Word, n int) (c Word) {
}
}
func
addMulVVW
_s
(
z
,
x
*
Word
,
y
Word
,
n
int
)
(
c
Word
)
func
addMulVVW
(
z
,
x
*
Word
,
y
Word
,
n
int
)
(
c
Word
)
func
addMulVVW_g
(
z
,
x
*
Word
,
y
Word
,
n
int
)
(
c
Word
)
{
func
addMulVVW_g
(
z
,
x
*
Word
,
y
Word
,
n
int
)
(
c
Word
)
{
for
i
:=
0
;
i
<
n
;
i
++
{
for
i
:=
0
;
i
<
n
;
i
++
{
z1
,
z0
:=
mulAddWWW_g
(
*
x
.
at
(
i
),
y
,
*
z
.
at
(
i
))
z1
,
z0
:=
mulAddWWW_g
(
*
x
.
at
(
i
),
y
,
*
z
.
at
(
i
))
...
@@ -377,7 +331,7 @@ func addMulVVW_g(z, x *Word, y Word, n int) (c Word) {
...
@@ -377,7 +331,7 @@ func addMulVVW_g(z, x *Word, y Word, n int) (c Word) {
}
}
func
divWVW
_s
(
z
*
Word
,
xn
Word
,
x
*
Word
,
y
Word
,
n
int
)
(
r
Word
)
func
divWVW
(
z
*
Word
,
xn
Word
,
x
*
Word
,
y
Word
,
n
int
)
(
r
Word
)
func
divWVW_g
(
z
*
Word
,
xn
Word
,
x
*
Word
,
y
Word
,
n
int
)
(
r
Word
)
{
func
divWVW_g
(
z
*
Word
,
xn
Word
,
x
*
Word
,
y
Word
,
n
int
)
(
r
Word
)
{
r
=
xn
r
=
xn
for
i
:=
n
-
1
;
i
>=
0
;
i
--
{
for
i
:=
n
-
1
;
i
>=
0
;
i
--
{
...
...
src/pkg/big/arith_386.s
View file @
73374c93
...
@@ -5,8 +5,8 @@
...
@@ -5,8 +5,8 @@
//
This
file
provides
fast
assembly
versions
for
the
elementary
//
This
file
provides
fast
assembly
versions
for
the
elementary
//
arithmetic
operations
on
vectors
implemented
in
arith
.
go
.
//
arithmetic
operations
on
vectors
implemented
in
arith
.
go
.
//
func
addVV
_s
(
z
,
x
,
y
*
Word
,
n
int
)
(
c
Word
)
//
func
addVV
(
z
,
x
,
y
*
Word
,
n
int
)
(
c
Word
)
TEXT
·
addVV
_s
(
SB
),7,$0
TEXT
·
addVV
(
SB
),7,$0
MOVL
z
+
0
(
FP
),
DI
MOVL
z
+
0
(
FP
),
DI
MOVL
x
+
4
(
FP
),
SI
MOVL
x
+
4
(
FP
),
SI
MOVL
y
+
8
(
FP
),
CX
MOVL
y
+
8
(
FP
),
CX
...
@@ -29,9 +29,9 @@ E1: CMPL BX, BP // i < n
...
@@ -29,9 +29,9 @@ E1: CMPL BX, BP // i < n
RET
RET
//
func
subVV
_s
(
z
,
x
,
y
*
Word
,
n
int
)
(
c
Word
)
//
func
subVV
(
z
,
x
,
y
*
Word
,
n
int
)
(
c
Word
)
//
(
same
as
addVV
_s
except
for
SBBL
instead
of
ADCL
and
label
names
)
//
(
same
as
addVV
except
for
SBBL
instead
of
ADCL
and
label
names
)
TEXT
·
subVV
_s
(
SB
),7,$0
TEXT
·
subVV
(
SB
),7,$0
MOVL
z
+
0
(
FP
),
DI
MOVL
z
+
0
(
FP
),
DI
MOVL
x
+
4
(
FP
),
SI
MOVL
x
+
4
(
FP
),
SI
MOVL
y
+
8
(
FP
),
CX
MOVL
y
+
8
(
FP
),
CX
...
@@ -54,8 +54,8 @@ E2: CMPL BX, BP // i < n
...
@@ -54,8 +54,8 @@ E2: CMPL BX, BP // i < n
RET
RET
//
func
addVW
_s
(
z
,
x
*
Word
,
y
Word
,
n
int
)
(
c
Word
)
//
func
addVW
(
z
,
x
*
Word
,
y
Word
,
n
int
)
(
c
Word
)
TEXT
·
addVW
_s
(
SB
),7,$0
TEXT
·
addVW
(
SB
),7,$0
MOVL
z
+
0
(
FP
),
DI
MOVL
z
+
0
(
FP
),
DI
MOVL
x
+
4
(
FP
),
SI
MOVL
x
+
4
(
FP
),
SI
MOVL
y
+
8
(
FP
),
AX
//
c
=
y
MOVL
y
+
8
(
FP
),
AX
//
c
=
y
...
@@ -76,8 +76,8 @@ E3: CMPL BX, BP // i < n
...
@@ -76,8 +76,8 @@ E3: CMPL BX, BP // i < n
RET
RET
//
func
subVW
_s
(
z
,
x
*
Word
,
y
Word
,
n
int
)
(
c
Word
)
//
func
subVW
(
z
,
x
*
Word
,
y
Word
,
n
int
)
(
c
Word
)
TEXT
·
subVW
_s
(
SB
),7,$0
TEXT
·
subVW
(
SB
),7,$0
MOVL
z
+
0
(
FP
),
DI
MOVL
z
+
0
(
FP
),
DI
MOVL
x
+
4
(
FP
),
SI
MOVL
x
+
4
(
FP
),
SI
MOVL
y
+
8
(
FP
),
AX
//
c
=
y
MOVL
y
+
8
(
FP
),
AX
//
c
=
y
...
@@ -99,8 +99,8 @@ E4: CMPL BX, BP // i < n
...
@@ -99,8 +99,8 @@ E4: CMPL BX, BP // i < n
RET
RET
//
func
mulAddVWW
_s
(
z
,
x
*
Word
,
y
,
r
Word
,
n
int
)
(
c
Word
)
//
func
mulAddVWW
(
z
,
x
*
Word
,
y
,
r
Word
,
n
int
)
(
c
Word
)
TEXT
·
mulAddVWW
_s
(
SB
),7,$0
TEXT
·
mulAddVWW
(
SB
),7,$0
MOVL
z
+
0
(
FP
),
DI
MOVL
z
+
0
(
FP
),
DI
MOVL
x
+
4
(
FP
),
SI
MOVL
x
+
4
(
FP
),
SI
MOVL
y
+
8
(
FP
),
BP
MOVL
y
+
8
(
FP
),
BP
...
@@ -126,8 +126,8 @@ E5: CMPL BX, $0 // i < 0
...
@@ -126,8 +126,8 @@ E5: CMPL BX, $0 // i < 0
RET
RET
//
func
addMulVVW
_s
(
z
,
x
*
Word
,
y
Word
,
n
int
)
(
c
Word
)
//
func
addMulVVW
(
z
,
x
*
Word
,
y
Word
,
n
int
)
(
c
Word
)
TEXT
·
addMulVVW
_s
(
SB
),7,$0
TEXT
·
addMulVVW
(
SB
),7,$0
MOVL
z
+
0
(
FP
),
DI
MOVL
z
+
0
(
FP
),
DI
MOVL
x
+
4
(
FP
),
SI
MOVL
x
+
4
(
FP
),
SI
MOVL
y
+
8
(
FP
),
BP
MOVL
y
+
8
(
FP
),
BP
...
@@ -155,8 +155,8 @@ E6: CMPL BX, $0 // i < 0
...
@@ -155,8 +155,8 @@ E6: CMPL BX, $0 // i < 0
RET
RET
//
divWVW
_s
(
z
*
Word
,
xn
Word
,
x
*
Word
,
y
Word
,
n
int
)
(
r
Word
)
//
divWVW
(
z
*
Word
,
xn
Word
,
x
*
Word
,
y
Word
,
n
int
)
(
r
Word
)
TEXT
·
divWVW
_s
(
SB
),7,$0
TEXT
·
divWVW
(
SB
),7,$0
MOVL
z
+
0
(
FP
),
DI
MOVL
z
+
0
(
FP
),
DI
MOVL
xn
+
4
(
FP
),
DX
//
r
=
xn
MOVL
xn
+
4
(
FP
),
DX
//
r
=
xn
MOVL
x
+
8
(
FP
),
SI
MOVL
x
+
8
(
FP
),
SI
...
...
src/pkg/big/arith_amd64.s
View file @
73374c93
...
@@ -7,8 +7,8 @@
...
@@ -7,8 +7,8 @@
//
TODO
(
gri
)
-
experiment
with
unrolled
loops
for
faster
execution
//
TODO
(
gri
)
-
experiment
with
unrolled
loops
for
faster
execution
//
func
addVV
_s
(
z
,
x
,
y
*
Word
,
n
int
)
(
c
Word
)
//
func
addVV
(
z
,
x
,
y
*
Word
,
n
int
)
(
c
Word
)
TEXT
·
addVV
_s
(
SB
),7,$0
TEXT
·
addVV
(
SB
),7,$0
MOVQ
z
+
0
(
FP
),
R10
MOVQ
z
+
0
(
FP
),
R10
MOVQ
x
+
8
(
FP
),
R8
MOVQ
x
+
8
(
FP
),
R8
MOVQ
y
+
16
(
FP
),
R9
MOVQ
y
+
16
(
FP
),
R9
...
@@ -31,9 +31,9 @@ E1: CMPQ BX, R11 // i < n
...
@@ -31,9 +31,9 @@ E1: CMPQ BX, R11 // i < n
RET
RET
//
func
subVV
_s
(
z
,
x
,
y
*
Word
,
n
int
)
(
c
Word
)
//
func
subVV
(
z
,
x
,
y
*
Word
,
n
int
)
(
c
Word
)
//
(
same
as
addVV_s
except
for
SBBQ
instead
of
ADCQ
and
label
names
)
//
(
same
as
addVV_s
except
for
SBBQ
instead
of
ADCQ
and
label
names
)
TEXT
·
subVV
_s
(
SB
),7,$0
TEXT
·
subVV
(
SB
),7,$0
MOVQ
z
+
0
(
FP
),
R10
MOVQ
z
+
0
(
FP
),
R10
MOVQ
x
+
8
(
FP
),
R8
MOVQ
x
+
8
(
FP
),
R8
MOVQ
y
+
16
(
FP
),
R9
MOVQ
y
+
16
(
FP
),
R9
...
@@ -56,8 +56,8 @@ E2: CMPQ BX, R11 // i < n
...
@@ -56,8 +56,8 @@ E2: CMPQ BX, R11 // i < n
RET
RET
//
func
addVW
_s
(
z
,
x
*
Word
,
y
Word
,
n
int
)
(
c
Word
)
//
func
addVW
(
z
,
x
*
Word
,
y
Word
,
n
int
)
(
c
Word
)
TEXT
·
addVW
_s
(
SB
),7,$0
TEXT
·
addVW
(
SB
),7,$0
MOVQ
z
+
0
(
FP
),
R10
MOVQ
z
+
0
(
FP
),
R10
MOVQ
x
+
8
(
FP
),
R8
MOVQ
x
+
8
(
FP
),
R8
MOVQ
y
+
16
(
FP
),
AX
//
c
=
y
MOVQ
y
+
16
(
FP
),
AX
//
c
=
y
...
@@ -78,8 +78,8 @@ E3: CMPQ BX, R11 // i < n
...
@@ -78,8 +78,8 @@ E3: CMPQ BX, R11 // i < n
RET
RET
//
func
subVW
_s
(
z
,
x
*
Word
,
y
Word
,
n
int
)
(
c
Word
)
//
func
subVW
(
z
,
x
*
Word
,
y
Word
,
n
int
)
(
c
Word
)
TEXT
·
subVW
_s
(
SB
),7,$0
TEXT
·
subVW
(
SB
),7,$0
MOVQ
z
+
0
(
FP
),
R10
MOVQ
z
+
0
(
FP
),
R10
MOVQ
x
+
8
(
FP
),
R8
MOVQ
x
+
8
(
FP
),
R8
MOVQ
y
+
16
(
FP
),
AX
//
c
=
y
MOVQ
y
+
16
(
FP
),
AX
//
c
=
y
...
@@ -101,8 +101,8 @@ E4: CMPQ BX, R11 // i < n
...
@@ -101,8 +101,8 @@ E4: CMPQ BX, R11 // i < n
RET
RET
//
func
mulAddVWW
_s
(
z
,
x
*
Word
,
y
,
r
Word
,
n
int
)
(
c
Word
)
//
func
mulAddVWW
(
z
,
x
*
Word
,
y
,
r
Word
,
n
int
)
(
c
Word
)
TEXT
·
mulAddVWW
_s
(
SB
),7,$0
TEXT
·
mulAddVWW
(
SB
),7,$0
MOVQ
z
+
0
(
FP
),
R10
MOVQ
z
+
0
(
FP
),
R10
MOVQ
x
+
8
(
FP
),
R8
MOVQ
x
+
8
(
FP
),
R8
MOVQ
y
+
16
(
FP
),
R9
MOVQ
y
+
16
(
FP
),
R9
...
@@ -126,8 +126,8 @@ E5: CMPQ BX, R11 // i < n
...
@@ -126,8 +126,8 @@ E5: CMPQ BX, R11 // i < n
RET
RET
//
func
addMulVVW
_s
(
z
,
x
*
Word
,
y
Word
,
n
int
)
(
c
Word
)
//
func
addMulVVW
(
z
,
x
*
Word
,
y
Word
,
n
int
)
(
c
Word
)
TEXT
·
addMulVVW
_s
(
SB
),7,$0
TEXT
·
addMulVVW
(
SB
),7,$0
MOVQ
z
+
0
(
FP
),
R10
MOVQ
z
+
0
(
FP
),
R10
MOVQ
x
+
8
(
FP
),
R8
MOVQ
x
+
8
(
FP
),
R8
MOVQ
y
+
16
(
FP
),
R9
MOVQ
y
+
16
(
FP
),
R9
...
@@ -153,8 +153,8 @@ E6: CMPQ BX, R11 // i < n
...
@@ -153,8 +153,8 @@ E6: CMPQ BX, R11 // i < n
RET
RET
//
divWVW
_s
(
z
*
Word
,
xn
Word
,
x
*
Word
,
y
Word
,
n
int
)
(
r
Word
)
//
divWVW
(
z
*
Word
,
xn
Word
,
x
*
Word
,
y
Word
,
n
int
)
(
r
Word
)
TEXT
·
divWVW
_s
(
SB
),7,$0
TEXT
·
divWVW
(
SB
),7,$0
MOVQ
z
+
0
(
FP
),
R10
MOVQ
z
+
0
(
FP
),
R10
MOVQ
xn
+
8
(
FP
),
DX
//
r
=
xn
MOVQ
xn
+
8
(
FP
),
DX
//
r
=
xn
MOVQ
x
+
16
(
FP
),
R8
MOVQ
x
+
16
(
FP
),
R8
...
...
src/pkg/big/arith_arm.s
View file @
73374c93
...
@@ -6,24 +6,24 @@
...
@@ -6,24 +6,24 @@
//
arithmetic
operations
on
vectors
implemented
in
arith
.
go
.
//
arithmetic
operations
on
vectors
implemented
in
arith
.
go
.
//
TODO
(
gri
)
Implement
these
routines
.
//
TODO
(
gri
)
Implement
these
routines
.
TEXT
·
addVV
_s
(
SB
),7,$0
TEXT
·
addVV
(
SB
),7,$0
B
·
addVV_g
(
SB
)
B
·
addVV_g
(
SB
)
TEXT
·
subVV
_s
(
SB
),7,$0
TEXT
·
subVV
(
SB
),7,$0
B
·
subVV_g
(
SB
)
B
·
subVV_g
(
SB
)
TEXT
·
addVW
_s
(
SB
),7,$0
TEXT
·
addVW
(
SB
),7,$0
B
·
addVW_g
(
SB
)
B
·
addVW_g
(
SB
)
TEXT
·
subVW
_s
(
SB
),7,$0
TEXT
·
subVW
(
SB
),7,$0
B
·
subVW_g
(
SB
)
B
·
subVW_g
(
SB
)
TEXT
·
mulAddVWW
_s
(
SB
),7,$0
TEXT
·
mulAddVWW
(
SB
),7,$0
B
·
mulAddVWW_g
(
SB
)
B
·
mulAddVWW_g
(
SB
)
TEXT
·
addMulVVW
_s
(
SB
),7,$0
TEXT
·
addMulVVW
(
SB
),7,$0
B
·
addMulVVW_g
(
SB
)
B
·
addMulVVW_g
(
SB
)
TEXT
·
divWVW
_s
(
SB
),7,$0
TEXT
·
divWVW
(
SB
),7,$0
B
·
divWVW_g
(
SB
)
B
·
divWVW_g
(
SB
)
Write
Preview
Markdown
is supported
0%
Try again
or
attach a new file
Attach a file
Cancel
You are about to add
0
people
to the discussion. Proceed with caution.
Finish editing this message first!
Cancel
Please
register
or
sign in
to comment