Skip to content
Projects
Groups
Snippets
Help
Loading...
Help
Support
Keyboard shortcuts
?
Submit feedback
Contribute to GitLab
Sign in / Register
Toggle navigation
L
linux
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
linux
Commits
dcc52875
Commit
dcc52875
authored
Jul 07, 2003
by
David S. Miller
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
[SPARC64]: Move raid xor into library assembler file.
parent
2dd18907
Changes
4
Show whitespace changes
Inline
Side-by-side
Showing
4 changed files
with
371 additions
and
360 deletions
+371
-360
arch/sparc64/kernel/sparc64_ksyms.c
arch/sparc64/kernel/sparc64_ksyms.c
+13
-0
arch/sparc64/lib/Makefile
arch/sparc64/lib/Makefile
+1
-1
arch/sparc64/lib/xor.S
arch/sparc64/lib/xor.S
+356
-0
include/asm-sparc64/xor.h
include/asm-sparc64/xor.h
+1
-359
No files found.
arch/sparc64/kernel/sparc64_ksyms.c
View file @
dcc52875
...
...
@@ -116,6 +116,14 @@ extern unsigned long pfn_base;
extern
unsigned
int
sys_call_table
[];
extern
void
xor_vis_2
(
unsigned
long
,
unsigned
long
*
,
unsigned
long
*
);
extern
void
xor_vis_3
(
unsigned
long
,
unsigned
long
*
,
unsigned
long
*
,
unsigned
long
*
);
extern
void
xor_vis_4
(
unsigned
long
,
unsigned
long
*
,
unsigned
long
*
,
unsigned
long
*
,
unsigned
long
*
);
extern
void
xor_vis_5
(
unsigned
long
,
unsigned
long
*
,
unsigned
long
*
,
unsigned
long
*
,
unsigned
long
*
,
unsigned
long
*
);
/* used by various drivers */
#ifdef CONFIG_SMP
#ifndef CONFIG_DEBUG_SPINLOCK
...
...
@@ -376,3 +384,8 @@ EXPORT_SYMBOL(ns87303_lock);
EXPORT_SYMBOL_GPL
(
sys_call_table
);
EXPORT_SYMBOL
(
tick_ops
);
EXPORT_SYMBOL
(
xor_vis_2
);
EXPORT_SYMBOL
(
xor_vis_3
);
EXPORT_SYMBOL
(
xor_vis_4
);
EXPORT_SYMBOL
(
xor_vis_5
);
arch/sparc64/lib/Makefile
View file @
dcc52875
...
...
@@ -10,4 +10,4 @@ lib-y := PeeCeeI.o blockops.o debuglocks.o strlen.o strncmp.o \
VIScopy.o VISbzero.o VISmemset.o VIScsum.o VIScsumcopy.o
\
VIScsumcopyusr.o VISsave.o atomic.o rwlock.o bitops.o
\
dec_and_lock.o U3memcpy.o U3copy_from_user.o U3copy_to_user.o
\
U3copy_in_user.o mcount.o ipcsum.o rwsem.o
U3copy_in_user.o mcount.o ipcsum.o rwsem.o
xor.o
arch/sparc64/lib/xor.S
0 → 100644
View file @
dcc52875
/*
*
arch
/
sparc64
/
lib
/
xor
.
S
*
*
High
speed
xor_block
operation
for
RAID4
/
5
utilizing
the
*
UltraSparc
Visual
Instruction
Set
.
*
*
Copyright
(
C
)
1997
,
1999
Jakub
Jelinek
(
jj
@
ultra
.
linux
.
cz
)
*/
#include <asm/visasm.h>
#include <asm/asi.h>
#include <asm/dcu.h>
#include <asm/spitfire.h>
/*
*
Requirements
:
*
!(((
long
)
dest
|
(
long
)
sourceN
)
&
(
64
-
1
))
&&
*
!(
len
&
127
)
&&
len
>=
256
*/
.
text
.
globl
xor_vis_2
.
type
xor_vis_2
,
@
function
xor_vis_2
:
rd
%
fprs
,
%
o5
andcc
%
o5
,
FPRS_FEF
|
FPRS_DU
,
%
g0
be
,
pt
%
icc
,
0
f
sethi
%
hi
(
VISenter
),
%
g1
jmpl
%
g1
+
%
lo
(
VISenter
),
%
g7
add
%
g7
,
8
,
%
g7
0
:
wr
%
g0
,
FPRS_FEF
,
%
fprs
rd
%
asi
,
%
g1
wr
%
g0
,
ASI_BLK_P
,
%
asi
membar
#
LoadStore|#StoreLoad|
#
StoreStore
sub
%
o0
,
128
,
%
o0
ldda
[%
o1
]
%
asi
,
%f0
ldda
[%
o2
]
%
asi
,
%f16
2
:
ldda
[%
o1
+
64
]
%
asi
,
%f32
fxor
%f0
,
%f16
,
%f16
fxor
%f2
,
%f18
,
%f18
fxor
%f4
,
%f20
,
%f20
fxor
%f6
,
%f22
,
%f22
fxor
%f8
,
%f24
,
%f24
fxor
%f10
,
%f26
,
%f26
fxor
%f12
,
%f28
,
%f28
fxor
%f14
,
%f30
,
%f30
stda
%f16
,
[%
o1
]
%
asi
ldda
[%
o2
+
64
]
%
asi
,
%f48
ldda
[%
o1
+
128
]
%
asi
,
%f0
fxor
%f32
,
%f48
,
%f48
fxor
%f34
,
%f50
,
%f50
add
%
o1
,
128
,
%
o1
fxor
%f36
,
%f52
,
%f52
add
%
o2
,
128
,
%
o2
fxor
%f38
,
%f54
,
%f54
subcc
%
o0
,
128
,
%
o0
fxor
%f40
,
%f56
,
%f56
fxor
%f42
,
%f58
,
%f58
fxor
%f44
,
%f60
,
%f60
fxor
%f46
,
%f62
,
%f62
stda
%f48
,
[%
o1
-
64
]
%
asi
bne
,
pt
%
xcc
,
2
b
ldda
[%
o2
]
%
asi
,
%f16
ldda
[%
o1
+
64
]
%
asi
,
%f32
fxor
%f0
,
%f16
,
%f16
fxor
%f2
,
%f18
,
%f18
fxor
%f4
,
%f20
,
%f20
fxor
%f6
,
%f22
,
%f22
fxor
%f8
,
%f24
,
%f24
fxor
%f10
,
%f26
,
%f26
fxor
%f12
,
%f28
,
%f28
fxor
%f14
,
%f30
,
%f30
stda
%f16
,
[%
o1
]
%
asi
ldda
[%
o2
+
64
]
%
asi
,
%f48
membar
#
Sync
fxor
%f32
,
%f48
,
%f48
fxor
%f34
,
%f50
,
%f50
fxor
%f36
,
%f52
,
%f52
fxor
%f38
,
%f54
,
%f54
fxor
%f40
,
%f56
,
%f56
fxor
%f42
,
%f58
,
%f58
fxor
%f44
,
%f60
,
%f60
fxor
%f46
,
%f62
,
%f62
stda
%f48
,
[%
o1
+
64
]
%
asi
membar
#
Sync|#StoreStore|
#
StoreLoad
wr
%
g1
,
%
g0
,
%
asi
retl
wr
%
g0
,
0
,
%
fprs
.
size
xor_vis_2
,
.
-
xor_vis_2
.
globl
xor_vis_3
.
type
xor_vis_3
,
@
function
xor_vis_3
:
rd
%
fprs
,
%
o5
andcc
%
o5
,
FPRS_FEF
|
FPRS_DU
,
%
g0
be
,
pt
%
icc
,
0
f
sethi
%
hi
(
VISenter
),
%
g1
jmpl
%
g1
+
%
lo
(
VISenter
),
%
g7
add
%
g7
,
8
,
%
g7
0
:
wr
%
g0
,
FPRS_FEF
,
%
fprs
rd
%
asi
,
%
g1
wr
%
g0
,
ASI_BLK_P
,
%
asi
membar
#
LoadStore|#StoreLoad|
#
StoreStore
sub
%
o0
,
64
,
%
o0
ldda
[%
o1
]
%
asi
,
%f0
ldda
[%
o2
]
%
asi
,
%f16
3
:
ldda
[%
o3
]
%
asi
,
%f32
fxor
%f0
,
%f16
,
%f48
fxor
%f2
,
%f18
,
%f50
add
%
o1
,
64
,
%
o1
fxor
%f4
,
%f20
,
%f52
fxor
%f6
,
%f22
,
%f54
add
%
o2
,
64
,
%
o2
fxor
%f8
,
%f24
,
%f56
fxor
%f10
,
%f26
,
%f58
fxor
%f12
,
%f28
,
%f60
fxor
%f14
,
%f30
,
%f62
ldda
[%
o1
]
%
asi
,
%f0
fxor
%f48
,
%f32
,
%f48
fxor
%f50
,
%f34
,
%f50
fxor
%f52
,
%f36
,
%f52
fxor
%f54
,
%f38
,
%f54
add
%
o3
,
64
,
%
o3
fxor
%f56
,
%f40
,
%f56
fxor
%f58
,
%f42
,
%f58
subcc
%
o0
,
64
,
%
o0
fxor
%f60
,
%f44
,
%f60
fxor
%f62
,
%f46
,
%f62
stda
%f48
,
[%
o1
-
64
]
%
asi
bne
,
pt
%
xcc
,
3
b
ldda
[%
o2
]
%
asi
,
%f16
ldda
[%
o3
]
%
asi
,
%f32
fxor
%f0
,
%f16
,
%f48
fxor
%f2
,
%f18
,
%f50
fxor
%f4
,
%f20
,
%f52
fxor
%f6
,
%f22
,
%f54
fxor
%f8
,
%f24
,
%f56
fxor
%f10
,
%f26
,
%f58
fxor
%f12
,
%f28
,
%f60
fxor
%f14
,
%f30
,
%f62
membar
#
Sync
fxor
%f48
,
%f32
,
%f48
fxor
%f50
,
%f34
,
%f50
fxor
%f52
,
%f36
,
%f52
fxor
%f54
,
%f38
,
%f54
fxor
%f56
,
%f40
,
%f56
fxor
%f58
,
%f42
,
%f58
fxor
%f60
,
%f44
,
%f60
fxor
%f62
,
%f46
,
%f62
stda
%f48
,
[%
o1
]
%
asi
membar
#
Sync|#StoreStore|
#
StoreLoad
wr
%
g1
,
%
g0
,
%
asi
retl
wr
%
g0
,
0
,
%
fprs
.
size
xor_vis_3
,
.
-
xor_vis_3
.
globl
xor_vis_4
.
type
xor_vis_4
,
@
function
xor_vis_4
:
rd
%
fprs
,
%
o5
andcc
%
o5
,
FPRS_FEF
|
FPRS_DU
,
%
g0
be
,
pt
%
icc
,
0
f
sethi
%
hi
(
VISenter
),
%
g1
jmpl
%
g1
+
%
lo
(
VISenter
),
%
g7
add
%
g7
,
8
,
%
g7
0
:
wr
%
g0
,
FPRS_FEF
,
%
fprs
rd
%
asi
,
%
g1
wr
%
g0
,
ASI_BLK_P
,
%
asi
membar
#
LoadStore|#StoreLoad|
#
StoreStore
sub
%
o0
,
64
,
%
o0
ldda
[%
o1
]
%
asi
,
%f0
ldda
[%
o2
]
%
asi
,
%f16
4
:
ldda
[%
o3
]
%
asi
,
%f32
fxor
%f0
,
%f16
,
%f16
fxor
%f2
,
%f18
,
%f18
add
%
o1
,
64
,
%
o1
fxor
%f4
,
%f20
,
%f20
fxor
%f6
,
%f22
,
%f22
add
%
o2
,
64
,
%
o2
fxor
%f8
,
%f24
,
%f24
fxor
%f10
,
%f26
,
%f26
fxor
%f12
,
%f28
,
%f28
fxor
%f14
,
%f30
,
%f30
ldda
[%
o4
]
%
asi
,
%f48
fxor
%f16
,
%f32
,
%f32
fxor
%f18
,
%f34
,
%f34
fxor
%f20
,
%f36
,
%f36
fxor
%f22
,
%f38
,
%f38
add
%
o3
,
64
,
%
o3
fxor
%f24
,
%f40
,
%f40
fxor
%f26
,
%f42
,
%f42
fxor
%f28
,
%f44
,
%f44
fxor
%f30
,
%f46
,
%f46
ldda
[%
o1
]
%
asi
,
%f0
fxor
%f32
,
%f48
,
%f48
fxor
%f34
,
%f50
,
%f50
fxor
%f36
,
%f52
,
%f52
add
%
o4
,
64
,
%
o4
fxor
%f38
,
%f54
,
%f54
fxor
%f40
,
%f56
,
%f56
fxor
%f42
,
%f58
,
%f58
subcc
%
o0
,
64
,
%
o0
fxor
%f44
,
%f60
,
%f60
fxor
%f46
,
%f62
,
%f62
stda
%f48
,
[%
o1
-
64
]
%
asi
bne
,
pt
%
xcc
,
4
b
ldda
[%
o2
]
%
asi
,
%f16
ldda
[%
o3
]
%
asi
,
%f32
fxor
%f0
,
%f16
,
%f16
fxor
%f2
,
%f18
,
%f18
fxor
%f4
,
%f20
,
%f20
fxor
%f6
,
%f22
,
%f22
fxor
%f8
,
%f24
,
%f24
fxor
%f10
,
%f26
,
%f26
fxor
%f12
,
%f28
,
%f28
fxor
%f14
,
%f30
,
%f30
ldda
[%
o4
]
%
asi
,
%f48
fxor
%f16
,
%f32
,
%f32
fxor
%f18
,
%f34
,
%f34
fxor
%f20
,
%f36
,
%f36
fxor
%f22
,
%f38
,
%f38
fxor
%f24
,
%f40
,
%f40
fxor
%f26
,
%f42
,
%f42
fxor
%f28
,
%f44
,
%f44
fxor
%f30
,
%f46
,
%f46
membar
#
Sync
fxor
%f32
,
%f48
,
%f48
fxor
%f34
,
%f50
,
%f50
fxor
%f36
,
%f52
,
%f52
fxor
%f38
,
%f54
,
%f54
fxor
%f40
,
%f56
,
%f56
fxor
%f42
,
%f58
,
%f58
fxor
%f44
,
%f60
,
%f60
fxor
%f46
,
%f62
,
%f62
stda
%f48
,
[%
o1
]
%
asi
membar
#
Sync|#StoreStore|
#
StoreLoad
wr
%
g1
,
%
g0
,
%
asi
retl
wr
%
g0
,
0
,
%
fprs
.
size
xor_vis_4
,
.
-
xor_vis_4
.
globl
xor_vis_5
.
type
xor_vis_5
,
@
function
xor_vis_5
:
mov
%
o5
,
%
g5
rd
%
fprs
,
%
o5
andcc
%
o5
,
FPRS_FEF
|
FPRS_DU
,
%
g0
be
,
pt
%
icc
,
0
f
sethi
%
hi
(
VISenter
),
%
g1
jmpl
%
g1
+
%
lo
(
VISenter
),
%
g7
add
%
g7
,
8
,
%
g7
0
:
wr
%
g0
,
FPRS_FEF
,
%
fprs
mov
%
g5
,
%
o5
rd
%
asi
,
%
g1
wr
%
g0
,
ASI_BLK_P
,
%
asi
membar
#
LoadStore|#StoreLoad|
#
StoreStore
sub
%
o0
,
64
,
%
o0
ldda
[%
o1
]
%
asi
,
%f0
ldda
[%
o2
]
%
asi
,
%f16
5
:
ldda
[%
o3
]
%
asi
,
%f32
fxor
%f0
,
%f16
,
%f48
fxor
%f2
,
%f18
,
%f50
add
%
o1
,
64
,
%
o1
fxor
%f4
,
%f20
,
%f52
fxor
%f6
,
%f22
,
%f54
add
%
o2
,
64
,
%
o2
fxor
%f8
,
%f24
,
%f56
fxor
%f10
,
%f26
,
%f58
fxor
%f12
,
%f28
,
%f60
fxor
%f14
,
%f30
,
%f62
ldda
[%
o4
]
%
asi
,
%f16
fxor
%f48
,
%f32
,
%f48
fxor
%f50
,
%f34
,
%f50
fxor
%f52
,
%f36
,
%f52
fxor
%f54
,
%f38
,
%f54
add
%
o3
,
64
,
%
o3
fxor
%f56
,
%f40
,
%f56
fxor
%f58
,
%f42
,
%f58
fxor
%f60
,
%f44
,
%f60
fxor
%f62
,
%f46
,
%f62
ldda
[%
o5
]
%
asi
,
%f32
fxor
%f48
,
%f16
,
%f48
fxor
%f50
,
%f18
,
%f50
add
%
o4
,
64
,
%
o4
fxor
%f52
,
%f20
,
%f52
fxor
%f54
,
%f22
,
%f54
add
%
o5
,
64
,
%
o5
fxor
%f56
,
%f24
,
%f56
fxor
%f58
,
%f26
,
%f58
fxor
%f60
,
%f28
,
%f60
fxor
%f62
,
%f30
,
%f62
ldda
[%
o1
]
%
asi
,
%f0
fxor
%f48
,
%f32
,
%f48
fxor
%f50
,
%f34
,
%f50
fxor
%f52
,
%f36
,
%f52
fxor
%f54
,
%f38
,
%f54
fxor
%f56
,
%f40
,
%f56
fxor
%f58
,
%f42
,
%f58
subcc
%
o0
,
64
,
%
o0
fxor
%f60
,
%f44
,
%f60
fxor
%f62
,
%f46
,
%f62
stda
%f48
,
[%
o1
-
64
]
%
asi
bne
,
pt
%
xcc
,
5
b
ldda
[%
o2
]
%
asi
,
%f16
ldda
[%
o3
]
%
asi
,
%f32
fxor
%f0
,
%f16
,
%f48
fxor
%f2
,
%f18
,
%f50
fxor
%f4
,
%f20
,
%f52
fxor
%f6
,
%f22
,
%f54
fxor
%f8
,
%f24
,
%f56
fxor
%f10
,
%f26
,
%f58
fxor
%f12
,
%f28
,
%f60
fxor
%f14
,
%f30
,
%f62
ldda
[%
o4
]
%
asi
,
%f16
fxor
%f48
,
%f32
,
%f48
fxor
%f50
,
%f34
,
%f50
fxor
%f52
,
%f36
,
%f52
fxor
%f54
,
%f38
,
%f54
fxor
%f56
,
%f40
,
%f56
fxor
%f58
,
%f42
,
%f58
fxor
%f60
,
%f44
,
%f60
fxor
%f62
,
%f46
,
%f62
ldda
[%
o5
]
%
asi
,
%f32
fxor
%f48
,
%f16
,
%f48
fxor
%f50
,
%f18
,
%f50
fxor
%f52
,
%f20
,
%f52
fxor
%f54
,
%f22
,
%f54
fxor
%f56
,
%f24
,
%f56
fxor
%f58
,
%f26
,
%f58
fxor
%f60
,
%f28
,
%f60
fxor
%f62
,
%f30
,
%f62
membar
#
Sync
fxor
%f48
,
%f32
,
%f48
fxor
%f50
,
%f34
,
%f50
fxor
%f52
,
%f36
,
%f52
fxor
%f54
,
%f38
,
%f54
fxor
%f56
,
%f40
,
%f56
fxor
%f58
,
%f42
,
%f58
fxor
%f60
,
%f44
,
%f60
fxor
%f62
,
%f46
,
%f62
stda
%f48
,
[%
o1
]
%
asi
membar
#
Sync|#StoreStore|
#
StoreLoad
wr
%
g1
,
%
g0
,
%
asi
retl
wr
%
g0
,
0
,
%
fprs
.
size
xor_vis_5
,
.
-
xor_vis_5
include/asm-sparc64/xor.h
View file @
dcc52875
...
...
@@ -16,15 +16,6 @@
* Software Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
*/
/*
* Requirements:
* !(((long)dest | (long)sourceN) & (64 - 1)) &&
* !(len & 127) && len >= 256
*
* It is done in pure assembly, as otherwise gcc makes it a non-leaf
* function, which is not what we want.
*/
#include <asm/pstate.h>
#include <asm/asi.h>
...
...
@@ -36,356 +27,7 @@ extern void xor_vis_4(unsigned long, unsigned long *, unsigned long *,
extern
void
xor_vis_5
(
unsigned
long
,
unsigned
long
*
,
unsigned
long
*
,
unsigned
long
*
,
unsigned
long
*
,
unsigned
long
*
);
#define _S(x) __S(x)
#define __S(x) #x
#define DEF(x) __asm__(#x " = " _S(x))
DEF
(
FPRS_FEF
);
DEF
(
FPRS_DU
);
DEF
(
ASI_BLK_P
);
/* ??? We set and use %asi instead of using ASI_BLK_P directly because gas
currently does not accept symbolic constants for the ASI specifier. */
__asm__
(
"
.text
.globl xor_vis_2
.type xor_vis_2,@function
xor_vis_2:
rd %fprs, %o5
andcc %o5, FPRS_FEF|FPRS_DU, %g0
be,pt %icc, 0f
sethi %hi(VISenter), %g1
jmpl %g1 + %lo(VISenter), %g7
add %g7, 8, %g7
0: wr %g0, FPRS_FEF, %fprs
rd %asi, %g1
wr %g0, ASI_BLK_P, %asi
membar #LoadStore|#StoreLoad|#StoreStore
sub %o0, 128, %o0
ldda [%o1] %asi, %f0
ldda [%o2] %asi, %f16
2: ldda [%o1 + 64] %asi, %f32
fxor %f0, %f16, %f16
fxor %f2, %f18, %f18
fxor %f4, %f20, %f20
fxor %f6, %f22, %f22
fxor %f8, %f24, %f24
fxor %f10, %f26, %f26
fxor %f12, %f28, %f28
fxor %f14, %f30, %f30
stda %f16, [%o1] %asi
ldda [%o2 + 64] %asi, %f48
ldda [%o1 + 128] %asi, %f0
fxor %f32, %f48, %f48
fxor %f34, %f50, %f50
add %o1, 128, %o1
fxor %f36, %f52, %f52
add %o2, 128, %o2
fxor %f38, %f54, %f54
subcc %o0, 128, %o0
fxor %f40, %f56, %f56
fxor %f42, %f58, %f58
fxor %f44, %f60, %f60
fxor %f46, %f62, %f62
stda %f48, [%o1 - 64] %asi
bne,pt %xcc, 2b
ldda [%o2] %asi, %f16
ldda [%o1 + 64] %asi, %f32
fxor %f0, %f16, %f16
fxor %f2, %f18, %f18
fxor %f4, %f20, %f20
fxor %f6, %f22, %f22
fxor %f8, %f24, %f24
fxor %f10, %f26, %f26
fxor %f12, %f28, %f28
fxor %f14, %f30, %f30
stda %f16, [%o1] %asi
ldda [%o2 + 64] %asi, %f48
membar #Sync
fxor %f32, %f48, %f48
fxor %f34, %f50, %f50
fxor %f36, %f52, %f52
fxor %f38, %f54, %f54
fxor %f40, %f56, %f56
fxor %f42, %f58, %f58
fxor %f44, %f60, %f60
fxor %f46, %f62, %f62
stda %f48, [%o1 + 64] %asi
membar #Sync|#StoreStore|#StoreLoad
wr %g1, %g0, %asi
retl
wr %g0, 0, %fprs
.size xor_vis_2, .-xor_vis_2
.globl xor_vis_3
.type xor_vis_3,@function
xor_vis_3:
rd %fprs, %o5
andcc %o5, FPRS_FEF|FPRS_DU, %g0
be,pt %icc, 0f
sethi %hi(VISenter), %g1
jmpl %g1 + %lo(VISenter), %g7
add %g7, 8, %g7
0: wr %g0, FPRS_FEF, %fprs
rd %asi, %g1
wr %g0, ASI_BLK_P, %asi
membar #LoadStore|#StoreLoad|#StoreStore
sub %o0, 64, %o0
ldda [%o1] %asi, %f0
ldda [%o2] %asi, %f16
3: ldda [%o3] %asi, %f32
fxor %f0, %f16, %f48
fxor %f2, %f18, %f50
add %o1, 64, %o1
fxor %f4, %f20, %f52
fxor %f6, %f22, %f54
add %o2, 64, %o2
fxor %f8, %f24, %f56
fxor %f10, %f26, %f58
fxor %f12, %f28, %f60
fxor %f14, %f30, %f62
ldda [%o1] %asi, %f0
fxor %f48, %f32, %f48
fxor %f50, %f34, %f50
fxor %f52, %f36, %f52
fxor %f54, %f38, %f54
add %o3, 64, %o3
fxor %f56, %f40, %f56
fxor %f58, %f42, %f58
subcc %o0, 64, %o0
fxor %f60, %f44, %f60
fxor %f62, %f46, %f62
stda %f48, [%o1 - 64] %asi
bne,pt %xcc, 3b
ldda [%o2] %asi, %f16
ldda [%o3] %asi, %f32
fxor %f0, %f16, %f48
fxor %f2, %f18, %f50
fxor %f4, %f20, %f52
fxor %f6, %f22, %f54
fxor %f8, %f24, %f56
fxor %f10, %f26, %f58
fxor %f12, %f28, %f60
fxor %f14, %f30, %f62
membar #Sync
fxor %f48, %f32, %f48
fxor %f50, %f34, %f50
fxor %f52, %f36, %f52
fxor %f54, %f38, %f54
fxor %f56, %f40, %f56
fxor %f58, %f42, %f58
fxor %f60, %f44, %f60
fxor %f62, %f46, %f62
stda %f48, [%o1] %asi
membar #Sync|#StoreStore|#StoreLoad
wr %g1, %g0, %asi
retl
wr %g0, 0, %fprs
.size xor_vis_3, .-xor_vis_3
.globl xor_vis_4
.type xor_vis_4,@function
xor_vis_4:
rd %fprs, %o5
andcc %o5, FPRS_FEF|FPRS_DU, %g0
be,pt %icc, 0f
sethi %hi(VISenter), %g1
jmpl %g1 + %lo(VISenter), %g7
add %g7, 8, %g7
0: wr %g0, FPRS_FEF, %fprs
rd %asi, %g1
wr %g0, ASI_BLK_P, %asi
membar #LoadStore|#StoreLoad|#StoreStore
sub %o0, 64, %o0
ldda [%o1] %asi, %f0
ldda [%o2] %asi, %f16
4: ldda [%o3] %asi, %f32
fxor %f0, %f16, %f16
fxor %f2, %f18, %f18
add %o1, 64, %o1
fxor %f4, %f20, %f20
fxor %f6, %f22, %f22
add %o2, 64, %o2
fxor %f8, %f24, %f24
fxor %f10, %f26, %f26
fxor %f12, %f28, %f28
fxor %f14, %f30, %f30
ldda [%o4] %asi, %f48
fxor %f16, %f32, %f32
fxor %f18, %f34, %f34
fxor %f20, %f36, %f36
fxor %f22, %f38, %f38
add %o3, 64, %o3
fxor %f24, %f40, %f40
fxor %f26, %f42, %f42
fxor %f28, %f44, %f44
fxor %f30, %f46, %f46
ldda [%o1] %asi, %f0
fxor %f32, %f48, %f48
fxor %f34, %f50, %f50
fxor %f36, %f52, %f52
add %o4, 64, %o4
fxor %f38, %f54, %f54
fxor %f40, %f56, %f56
fxor %f42, %f58, %f58
subcc %o0, 64, %o0
fxor %f44, %f60, %f60
fxor %f46, %f62, %f62
stda %f48, [%o1 - 64] %asi
bne,pt %xcc, 4b
ldda [%o2] %asi, %f16
ldda [%o3] %asi, %f32
fxor %f0, %f16, %f16
fxor %f2, %f18, %f18
fxor %f4, %f20, %f20
fxor %f6, %f22, %f22
fxor %f8, %f24, %f24
fxor %f10, %f26, %f26
fxor %f12, %f28, %f28
fxor %f14, %f30, %f30
ldda [%o4] %asi, %f48
fxor %f16, %f32, %f32
fxor %f18, %f34, %f34
fxor %f20, %f36, %f36
fxor %f22, %f38, %f38
fxor %f24, %f40, %f40
fxor %f26, %f42, %f42
fxor %f28, %f44, %f44
fxor %f30, %f46, %f46
membar #Sync
fxor %f32, %f48, %f48
fxor %f34, %f50, %f50
fxor %f36, %f52, %f52
fxor %f38, %f54, %f54
fxor %f40, %f56, %f56
fxor %f42, %f58, %f58
fxor %f44, %f60, %f60
fxor %f46, %f62, %f62
stda %f48, [%o1] %asi
membar #Sync|#StoreStore|#StoreLoad
wr %g1, %g0, %asi
retl
wr %g0, 0, %fprs
.size xor_vis_4, .-xor_vis_4
.globl xor_vis_5
.type xor_vis_5,@function
xor_vis_5:
mov %o5, %g5
rd %fprs, %o5
andcc %o5, FPRS_FEF|FPRS_DU, %g0
be,pt %icc, 0f
sethi %hi(VISenter), %g1
jmpl %g1 + %lo(VISenter), %g7
add %g7, 8, %g7
0: wr %g0, FPRS_FEF, %fprs
mov %g5, %o5
rd %asi, %g1
wr %g0, ASI_BLK_P, %asi
membar #LoadStore|#StoreLoad|#StoreStore
sub %o0, 64, %o0
ldda [%o1] %asi, %f0
ldda [%o2] %asi, %f16
5: ldda [%o3] %asi, %f32
fxor %f0, %f16, %f48
fxor %f2, %f18, %f50
add %o1, 64, %o1
fxor %f4, %f20, %f52
fxor %f6, %f22, %f54
add %o2, 64, %o2
fxor %f8, %f24, %f56
fxor %f10, %f26, %f58
fxor %f12, %f28, %f60
fxor %f14, %f30, %f62
ldda [%o4] %asi, %f16
fxor %f48, %f32, %f48
fxor %f50, %f34, %f50
fxor %f52, %f36, %f52
fxor %f54, %f38, %f54
add %o3, 64, %o3
fxor %f56, %f40, %f56
fxor %f58, %f42, %f58
fxor %f60, %f44, %f60
fxor %f62, %f46, %f62
ldda [%o5] %asi, %f32
fxor %f48, %f16, %f48
fxor %f50, %f18, %f50
add %o4, 64, %o4
fxor %f52, %f20, %f52
fxor %f54, %f22, %f54
add %o5, 64, %o5
fxor %f56, %f24, %f56
fxor %f58, %f26, %f58
fxor %f60, %f28, %f60
fxor %f62, %f30, %f62
ldda [%o1] %asi, %f0
fxor %f48, %f32, %f48
fxor %f50, %f34, %f50
fxor %f52, %f36, %f52
fxor %f54, %f38, %f54
fxor %f56, %f40, %f56
fxor %f58, %f42, %f58
subcc %o0, 64, %o0
fxor %f60, %f44, %f60
fxor %f62, %f46, %f62
stda %f48, [%o1 - 64] %asi
bne,pt %xcc, 5b
ldda [%o2] %asi, %f16
ldda [%o3] %asi, %f32
fxor %f0, %f16, %f48
fxor %f2, %f18, %f50
fxor %f4, %f20, %f52
fxor %f6, %f22, %f54
fxor %f8, %f24, %f56
fxor %f10, %f26, %f58
fxor %f12, %f28, %f60
fxor %f14, %f30, %f62
ldda [%o4] %asi, %f16
fxor %f48, %f32, %f48
fxor %f50, %f34, %f50
fxor %f52, %f36, %f52
fxor %f54, %f38, %f54
fxor %f56, %f40, %f56
fxor %f58, %f42, %f58
fxor %f60, %f44, %f60
fxor %f62, %f46, %f62
ldda [%o5] %asi, %f32
fxor %f48, %f16, %f48
fxor %f50, %f18, %f50
fxor %f52, %f20, %f52
fxor %f54, %f22, %f54
fxor %f56, %f24, %f56
fxor %f58, %f26, %f58
fxor %f60, %f28, %f60
fxor %f62, %f30, %f62
membar #Sync
fxor %f48, %f32, %f48
fxor %f50, %f34, %f50
fxor %f52, %f36, %f52
fxor %f54, %f38, %f54
fxor %f56, %f40, %f56
fxor %f58, %f42, %f58
fxor %f60, %f44, %f60
fxor %f62, %f46, %f62
stda %f48, [%o1] %asi
membar #Sync|#StoreStore|#StoreLoad
wr %g1, %g0, %asi
retl
wr %g0, 0, %fprs
.size xor_vis_5, .-xor_vis_5
"
);
/* XXX Ugh, write cheetah versions... -DaveM */
static
struct
xor_block_template
xor_block_VIS
=
{
.
name
=
"VIS"
,
...
...
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