Skip to content
Projects
Groups
Snippets
Help
Loading...
Help
Support
Keyboard shortcuts
?
Submit feedback
Contribute to GitLab
Sign in
Toggle navigation
V
vlc-gpu
Project overview
Project overview
Details
Activity
Releases
Repository
Repository
Files
Commits
Branches
Tags
Contributors
Graph
Compare
Issues
0
Issues
0
List
Boards
Labels
Milestones
Redmine
Redmine
Merge Requests
0
Merge Requests
0
CI / CD
CI / CD
Pipelines
Jobs
Schedules
Operations
Operations
Metrics
Environments
Analytics
Analytics
CI / CD
Repository
Value Stream
Wiki
Wiki
Snippets
Snippets
Members
Members
Collapse sidebar
Close sidebar
Activity
Graph
Create a new issue
Jobs
Commits
Issue Boards
Open sidebar
videolan
vlc-gpu
Commits
746e6074
Commit
746e6074
authored
Sep 25, 2001
by
Christophe Massiot
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
Altivec IDCT and motion compensation, courtesy of Michel Lespinasse for
mpeg2dec (untested).
parent
b0ef1133
Changes
14
Show whitespace changes
Inline
Side-by-side
Showing
14 changed files
with
2947 additions
and
1185 deletions
+2947
-1185
Makefile.opts.in
Makefile.opts.in
+1
-2
configure
configure
+245
-190
configure.in
configure.in
+1
-3
include/common.h
include/common.h
+10
-1
include/defs.h.in
include/defs.h.in
+6
-0
include/vdec_ext-plugins.h
include/vdec_ext-plugins.h
+3
-2
plugins/idct/Makefile
plugins/idct/Makefile
+6
-18
plugins/idct/idctaltivec.c
plugins/idct/idctaltivec.c
+637
-4
plugins/idct/idctaltivecasm.S
plugins/idct/idctaltivecasm.S
+0
-481
plugins/motion/Makefile
plugins/motion/Makefile
+1
-1
plugins/motion/motionaltivec.c
plugins/motion/motionaltivec.c
+1996
-470
src/interface/main.c
src/interface/main.c
+1
-6
src/video_decoder/vpar_pool.c
src/video_decoder/vpar_pool.c
+31
-1
src/video_output/video_output.c
src/video_output/video_output.c
+9
-6
No files found.
Makefile.opts.in
View file @
746e6074
...
...
@@ -74,7 +74,6 @@ LIB_GGI = @LIB_GGI@
LIB_GLIDE
=
@LIB_GLIDE@
LIB_GNOME
=
@LIB_GNOME@
LIB_GTK
=
@LIB_GTK@
LIB_ALTIVEC
=
@LIB_ALTIVEC@
LIB_LIBDVDCSS
=
@LIB_LIBDVDCSS@
LIB_KDE
=
@LIB_KDE@
LIB_MACOSX
=
@LIB_MACOSX@
...
...
@@ -237,7 +236,7 @@ endif
# Optimizations for PowerPC
ifneq
(,$(findstring powerpc,$(ARCH)))
CFLAGS
+=
-mmultiple
-mhard-float
-mstring
CFLAGS
+=
-mmultiple
-mhard-float
-mstring
-Wa
,-m7400
endif
# Optimizations for Sparc
...
...
configure
View file @
746e6074
...
...
@@ -1910,16 +1910,71 @@ else
fi
done
for
ac_func
in
memalign
do
echo
$ac_n
"checking for
$ac_func
""...
$ac_c
"
1>&6
echo
"configure:1917: checking for
$ac_func
"
>
&5
if
eval
"test
\"
`
echo
'$''{'
ac_cv_func_
$ac_func
'+set}'
`
\"
= set"
;
then
echo
$ac_n
"(cached)
$ac_c
"
1>&6
else
cat
>
conftest.
$ac_ext
<<
EOF
#line 1922 "configure"
#include "confdefs.h"
/* System header to define __stub macros and hopefully few prototypes,
which can conflict with char
$ac_func
(); below. */
#include <assert.h>
/* Override any gcc2 internal prototype to avoid an error. */
/* We use char because int might match the return type of a gcc2
builtin and then its argument prototype would still apply. */
char
$ac_func
();
int main() {
/* The GNU C library defines this for functions which it implements
to always fail with ENOSYS. Some functions are actually named
something starting with __ and the normal name is an alias. */
#if defined (__stub_
$ac_func
) || defined (__stub___
$ac_func
)
choke me
#else
$ac_func
();
#endif
; return 0; }
EOF
if
{
(
eval echo
configure:1945:
\"
$ac_link
\"
)
1>&5
;
(
eval
$ac_link
)
2>&5
;
}
&&
test
-s
conftest
${
ac_exeext
}
;
then
rm
-rf
conftest
*
eval
"ac_cv_func_
$ac_func
=yes"
else
echo
"configure: failed program was:"
>
&5
cat
conftest.
$ac_ext
>
&5
rm
-rf
conftest
*
eval
"ac_cv_func_
$ac_func
=no"
fi
rm
-f
conftest
*
fi
if
eval
"test
\"
`
echo
'$ac_cv_func_'
$ac_func
`
\"
= yes"
;
then
echo
"
$ac_t
""yes"
1>&6
ac_tr_func
=
HAVE_
`
echo
$ac_func
|
tr
'abcdefghijklmnopqrstuvwxyz'
'ABCDEFGHIJKLMNOPQRSTUVWXYZ'
`
cat
>>
confdefs.h
<<
EOF
#define
$ac_tr_func
1
EOF
else
echo
"
$ac_t
""no"
1>&6
fi
done
for
ac_func
in
sigrelse
do
echo
$ac_n
"checking for
$ac_func
""...
$ac_c
"
1>&6
echo
"configure:19
18
: checking for
$ac_func
"
>
&5
echo
"configure:19
73
: checking for
$ac_func
"
>
&5
if
eval
"test
\"
`
echo
'$''{'
ac_cv_func_
$ac_func
'+set}'
`
\"
= set"
;
then
echo
$ac_n
"(cached)
$ac_c
"
1>&6
else
cat
>
conftest.
$ac_ext
<<
EOF
#line 19
23
"configure"
#line 19
78
"configure"
#include "confdefs.h"
/* System header to define __stub macros and hopefully few prototypes,
which can conflict with char
$ac_func
(); below. */
...
...
@@ -1942,7 +1997,7 @@ $ac_func();
; return 0; }
EOF
if
{
(
eval echo
configure:
1946
:
\"
$ac_link
\"
)
1>&5
;
(
eval
$ac_link
)
2>&5
;
}
&&
test
-s
conftest
${
ac_exeext
}
;
then
if
{
(
eval echo
configure:
2001
:
\"
$ac_link
\"
)
1>&5
;
(
eval
$ac_link
)
2>&5
;
}
&&
test
-s
conftest
${
ac_exeext
}
;
then
rm
-rf
conftest
*
eval
"ac_cv_func_
$ac_func
=yes"
else
...
...
@@ -1969,12 +2024,12 @@ done
NEED_GETOPT
=
0
echo
$ac_n
"checking for getopt_long""...
$ac_c
"
1>&6
echo
"configure:
1973
: checking for getopt_long"
>
&5
echo
"configure:
2028
: checking for getopt_long"
>
&5
if
eval
"test
\"
`
echo
'$''{'
ac_cv_func_getopt_long
'+set}'
`
\"
= set"
;
then
echo
$ac_n
"(cached)
$ac_c
"
1>&6
else
cat
>
conftest.
$ac_ext
<<
EOF
#line
1978
"configure"
#line
2033
"configure"
#include "confdefs.h"
/* System header to define __stub macros and hopefully few prototypes,
which can conflict with char getopt_long(); below. */
...
...
@@ -1997,7 +2052,7 @@ getopt_long();
; return 0; }
EOF
if
{
(
eval echo
configure:20
01
:
\"
$ac_link
\"
)
1>&5
;
(
eval
$ac_link
)
2>&5
;
}
&&
test
-s
conftest
${
ac_exeext
}
;
then
if
{
(
eval echo
configure:20
56
:
\"
$ac_link
\"
)
1>&5
;
(
eval
$ac_link
)
2>&5
;
}
&&
test
-s
conftest
${
ac_exeext
}
;
then
rm
-rf
conftest
*
eval
"ac_cv_func_getopt_long=yes"
else
...
...
@@ -2019,7 +2074,7 @@ else
echo
"
$ac_t
""no"
1>&6
# FreeBSD has a gnugetopt library for this:
echo
$ac_n
"checking for getopt_long in -lgnugetopt""...
$ac_c
"
1>&6
echo
"configure:20
23
: checking for getopt_long in -lgnugetopt"
>
&5
echo
"configure:20
78
: checking for getopt_long in -lgnugetopt"
>
&5
ac_lib_var
=
`
echo
gnugetopt
'_'
getopt_long |
sed
'y%./+-%__p_%'
`
if
eval
"test
\"
`
echo
'$''{'
ac_cv_lib_
$ac_lib_var
'+set}'
`
\"
= set"
;
then
echo
$ac_n
"(cached)
$ac_c
"
1>&6
...
...
@@ -2027,7 +2082,7 @@ else
ac_save_LIBS
=
"
$LIBS
"
LIBS
=
"-lgnugetopt
$LIBS
"
cat
>
conftest.
$ac_ext
<<
EOF
#line 20
31
"configure"
#line 20
86
"configure"
#include "confdefs.h"
/* Override any gcc2 internal prototype to avoid an error. */
/* We use char because int might match the return type of a gcc2
...
...
@@ -2038,7 +2093,7 @@ int main() {
getopt_long()
; return 0; }
EOF
if
{
(
eval echo
configure:20
42
:
\"
$ac_link
\"
)
1>&5
;
(
eval
$ac_link
)
2>&5
;
}
&&
test
-s
conftest
${
ac_exeext
}
;
then
if
{
(
eval echo
configure:20
97
:
\"
$ac_link
\"
)
1>&5
;
(
eval
$ac_link
)
2>&5
;
}
&&
test
-s
conftest
${
ac_exeext
}
;
then
rm
-rf
conftest
*
eval
"ac_cv_lib_
$ac_lib_var
=yes"
else
...
...
@@ -2069,17 +2124,17 @@ for ac_hdr in unistd.h
do
ac_safe
=
`
echo
"
$ac_hdr
"
|
sed
'y%./+-%__p_%'
`
echo
$ac_n
"checking for
$ac_hdr
""...
$ac_c
"
1>&6
echo
"configure:2
073
: checking for
$ac_hdr
"
>
&5
echo
"configure:2
128
: checking for
$ac_hdr
"
>
&5
if
eval
"test
\"
`
echo
'$''{'
ac_cv_header_
$ac_safe
'+set}'
`
\"
= set"
;
then
echo
$ac_n
"(cached)
$ac_c
"
1>&6
else
cat
>
conftest.
$ac_ext
<<
EOF
#line 2
078
"configure"
#line 2
133
"configure"
#include "confdefs.h"
#include <
$ac_hdr
>
EOF
ac_try
=
"
$ac_cpp
conftest.
$ac_ext
>/dev/null 2>conftest.out"
{
(
eval echo
configure:2
083
:
\"
$ac_try
\"
)
1>&5
;
(
eval
$ac_try
)
2>&5
;
}
{
(
eval echo
configure:2
138
:
\"
$ac_try
\"
)
1>&5
;
(
eval
$ac_try
)
2>&5
;
}
ac_err
=
`
grep
-v
'^ *+'
conftest.out |
grep
-v
"^conftest.
${
ac_ext
}
\$
"
`
if
test
-z
"
$ac_err
"
;
then
rm
-rf
conftest
*
...
...
@@ -2108,12 +2163,12 @@ done
for
ac_func
in
getpagesize
do
echo
$ac_n
"checking for
$ac_func
""...
$ac_c
"
1>&6
echo
"configure:21
12
: checking for
$ac_func
"
>
&5
echo
"configure:21
67
: checking for
$ac_func
"
>
&5
if
eval
"test
\"
`
echo
'$''{'
ac_cv_func_
$ac_func
'+set}'
`
\"
= set"
;
then
echo
$ac_n
"(cached)
$ac_c
"
1>&6
else
cat
>
conftest.
$ac_ext
<<
EOF
#line 21
17
"configure"
#line 21
72
"configure"
#include "confdefs.h"
/* System header to define __stub macros and hopefully few prototypes,
which can conflict with char
$ac_func
(); below. */
...
...
@@ -2136,7 +2191,7 @@ $ac_func();
; return 0; }
EOF
if
{
(
eval echo
configure:21
40
:
\"
$ac_link
\"
)
1>&5
;
(
eval
$ac_link
)
2>&5
;
}
&&
test
-s
conftest
${
ac_exeext
}
;
then
if
{
(
eval echo
configure:21
95
:
\"
$ac_link
\"
)
1>&5
;
(
eval
$ac_link
)
2>&5
;
}
&&
test
-s
conftest
${
ac_exeext
}
;
then
rm
-rf
conftest
*
eval
"ac_cv_func_
$ac_func
=yes"
else
...
...
@@ -2161,7 +2216,7 @@ fi
done
echo
$ac_n
"checking for working mmap""...
$ac_c
"
1>&6
echo
"configure:2
165
: checking for working mmap"
>
&5
echo
"configure:2
220
: checking for working mmap"
>
&5
if
eval
"test
\"
`
echo
'$''{'
ac_cv_func_mmap_fixed_mapped
'+set}'
`
\"
= set"
;
then
echo
$ac_n
"(cached)
$ac_c
"
1>&6
else
...
...
@@ -2169,7 +2224,7 @@ else
ac_cv_func_mmap_fixed_mapped
=
no
else
cat
>
conftest.
$ac_ext
<<
EOF
#line 2
173
"configure"
#line 2
228
"configure"
#include "confdefs.h"
/* Thanks to Mike Haertel and Jim Avera for this test.
...
...
@@ -2312,7 +2367,7 @@ main()
}
EOF
if
{
(
eval echo
configure:23
16
:
\"
$ac_link
\"
)
1>&5
;
(
eval
$ac_link
)
2>&5
;
}
&&
test
-s
conftest
${
ac_exeext
}
&&
(
./conftest
;
exit
)
2>/dev/null
if
{
(
eval echo
configure:23
71
:
\"
$ac_link
\"
)
1>&5
;
(
eval
$ac_link
)
2>&5
;
}
&&
test
-s
conftest
${
ac_exeext
}
&&
(
./conftest
;
exit
)
2>/dev/null
then
ac_cv_func_mmap_fixed_mapped
=
yes
else
...
...
@@ -2335,12 +2390,12 @@ EOF
fi
echo
$ac_n
"checking return type of signal handlers""...
$ac_c
"
1>&6
echo
"configure:23
39
: checking return type of signal handlers"
>
&5
echo
"configure:23
94
: checking return type of signal handlers"
>
&5
if
eval
"test
\"
`
echo
'$''{'
ac_cv_type_signal
'+set}'
`
\"
= set"
;
then
echo
$ac_n
"(cached)
$ac_c
"
1>&6
else
cat
>
conftest.
$ac_ext
<<
EOF
#line 23
44
"configure"
#line 23
99
"configure"
#include "confdefs.h"
#include <sys/types.h>
#include <signal.h>
...
...
@@ -2357,7 +2412,7 @@ int main() {
int i;
; return 0; }
EOF
if
{
(
eval echo
configure:2
361
:
\"
$ac_compile
\"
)
1>&5
;
(
eval
$ac_compile
)
2>&5
;
}
;
then
if
{
(
eval echo
configure:2
416
:
\"
$ac_compile
\"
)
1>&5
;
(
eval
$ac_compile
)
2>&5
;
}
;
then
rm
-rf
conftest
*
ac_cv_type_signal
=
void
else
...
...
@@ -2376,7 +2431,7 @@ EOF
echo
$ac_n
"checking for dlopen in -ldl""...
$ac_c
"
1>&6
echo
"configure:2
380
: checking for dlopen in -ldl"
>
&5
echo
"configure:2
435
: checking for dlopen in -ldl"
>
&5
ac_lib_var
=
`
echo
dl
'_'
dlopen |
sed
'y%./+-%__p_%'
`
if
eval
"test
\"
`
echo
'$''{'
ac_cv_lib_
$ac_lib_var
'+set}'
`
\"
= set"
;
then
echo
$ac_n
"(cached)
$ac_c
"
1>&6
...
...
@@ -2384,7 +2439,7 @@ else
ac_save_LIBS
=
"
$LIBS
"
LIBS
=
"-ldl
$LIBS
"
cat
>
conftest.
$ac_ext
<<
EOF
#line 2
388
"configure"
#line 2
443
"configure"
#include "confdefs.h"
/* Override any gcc2 internal prototype to avoid an error. */
/* We use char because int might match the return type of a gcc2
...
...
@@ -2395,7 +2450,7 @@ int main() {
dlopen()
; return 0; }
EOF
if
{
(
eval echo
configure:2
399
:
\"
$ac_link
\"
)
1>&5
;
(
eval
$ac_link
)
2>&5
;
}
&&
test
-s
conftest
${
ac_exeext
}
;
then
if
{
(
eval echo
configure:2
454
:
\"
$ac_link
\"
)
1>&5
;
(
eval
$ac_link
)
2>&5
;
}
&&
test
-s
conftest
${
ac_exeext
}
;
then
rm
-rf
conftest
*
eval
"ac_cv_lib_
$ac_lib_var
=yes"
else
...
...
@@ -2416,7 +2471,7 @@ else
fi
echo
$ac_n
"checking for pow in -lm""...
$ac_c
"
1>&6
echo
"configure:24
20
: checking for pow in -lm"
>
&5
echo
"configure:24
75
: checking for pow in -lm"
>
&5
ac_lib_var
=
`
echo
m
'_'
pow |
sed
'y%./+-%__p_%'
`
if
eval
"test
\"
`
echo
'$''{'
ac_cv_lib_
$ac_lib_var
'+set}'
`
\"
= set"
;
then
echo
$ac_n
"(cached)
$ac_c
"
1>&6
...
...
@@ -2424,7 +2479,7 @@ else
ac_save_LIBS
=
"
$LIBS
"
LIBS
=
"-lm
$LIBS
"
cat
>
conftest.
$ac_ext
<<
EOF
#line 24
28
"configure"
#line 24
83
"configure"
#include "confdefs.h"
/* Override any gcc2 internal prototype to avoid an error. */
/* We use char because int might match the return type of a gcc2
...
...
@@ -2435,7 +2490,7 @@ int main() {
pow()
; return 0; }
EOF
if
{
(
eval echo
configure:24
39
:
\"
$ac_link
\"
)
1>&5
;
(
eval
$ac_link
)
2>&5
;
}
&&
test
-s
conftest
${
ac_exeext
}
;
then
if
{
(
eval echo
configure:24
94
:
\"
$ac_link
\"
)
1>&5
;
(
eval
$ac_link
)
2>&5
;
}
&&
test
-s
conftest
${
ac_exeext
}
;
then
rm
-rf
conftest
*
eval
"ac_cv_lib_
$ac_lib_var
=yes"
else
...
...
@@ -2459,7 +2514,7 @@ fi
THREAD_LIB
=
error
if
test
"x
${
THREAD_LIB
}
"
=
xerror
;
then
echo
$ac_n
"checking for pthread_attr_init in -lpthread""...
$ac_c
"
1>&6
echo
"configure:2
463
: checking for pthread_attr_init in -lpthread"
>
&5
echo
"configure:2
518
: checking for pthread_attr_init in -lpthread"
>
&5
ac_lib_var
=
`
echo
pthread
'_'
pthread_attr_init |
sed
'y%./+-%__p_%'
`
if
eval
"test
\"
`
echo
'$''{'
ac_cv_lib_
$ac_lib_var
'+set}'
`
\"
= set"
;
then
echo
$ac_n
"(cached)
$ac_c
"
1>&6
...
...
@@ -2467,7 +2522,7 @@ else
ac_save_LIBS
=
"
$LIBS
"
LIBS
=
"-lpthread
$LIBS
"
cat
>
conftest.
$ac_ext
<<
EOF
#line 2
471
"configure"
#line 2
526
"configure"
#include "confdefs.h"
/* Override any gcc2 internal prototype to avoid an error. */
/* We use char because int might match the return type of a gcc2
...
...
@@ -2478,7 +2533,7 @@ int main() {
pthread_attr_init()
; return 0; }
EOF
if
{
(
eval echo
configure:2
482
:
\"
$ac_link
\"
)
1>&5
;
(
eval
$ac_link
)
2>&5
;
}
&&
test
-s
conftest
${
ac_exeext
}
;
then
if
{
(
eval echo
configure:2
537
:
\"
$ac_link
\"
)
1>&5
;
(
eval
$ac_link
)
2>&5
;
}
&&
test
-s
conftest
${
ac_exeext
}
;
then
rm
-rf
conftest
*
eval
"ac_cv_lib_
$ac_lib_var
=yes"
else
...
...
@@ -2501,7 +2556,7 @@ fi
fi
if
test
"x
${
THREAD_LIB
}
"
=
xerror
;
then
echo
$ac_n
"checking for pthread_attr_init in -lpthreads""...
$ac_c
"
1>&6
echo
"configure:25
05
: checking for pthread_attr_init in -lpthreads"
>
&5
echo
"configure:25
60
: checking for pthread_attr_init in -lpthreads"
>
&5
ac_lib_var
=
`
echo
pthreads
'_'
pthread_attr_init |
sed
'y%./+-%__p_%'
`
if
eval
"test
\"
`
echo
'$''{'
ac_cv_lib_
$ac_lib_var
'+set}'
`
\"
= set"
;
then
echo
$ac_n
"(cached)
$ac_c
"
1>&6
...
...
@@ -2509,7 +2564,7 @@ else
ac_save_LIBS
=
"
$LIBS
"
LIBS
=
"-lpthreads
$LIBS
"
cat
>
conftest.
$ac_ext
<<
EOF
#line 25
13
"configure"
#line 25
68
"configure"
#include "confdefs.h"
/* Override any gcc2 internal prototype to avoid an error. */
/* We use char because int might match the return type of a gcc2
...
...
@@ -2520,7 +2575,7 @@ int main() {
pthread_attr_init()
; return 0; }
EOF
if
{
(
eval echo
configure:25
24
:
\"
$ac_link
\"
)
1>&5
;
(
eval
$ac_link
)
2>&5
;
}
&&
test
-s
conftest
${
ac_exeext
}
;
then
if
{
(
eval echo
configure:25
79
:
\"
$ac_link
\"
)
1>&5
;
(
eval
$ac_link
)
2>&5
;
}
&&
test
-s
conftest
${
ac_exeext
}
;
then
rm
-rf
conftest
*
eval
"ac_cv_lib_
$ac_lib_var
=yes"
else
...
...
@@ -2543,7 +2598,7 @@ fi
fi
if
test
"x
${
THREAD_LIB
}
"
=
xerror
;
then
echo
$ac_n
"checking for pthread_attr_init in -lc_r""...
$ac_c
"
1>&6
echo
"configure:2
547
: checking for pthread_attr_init in -lc_r"
>
&5
echo
"configure:2
602
: checking for pthread_attr_init in -lc_r"
>
&5
ac_lib_var
=
`
echo
c_r
'_'
pthread_attr_init |
sed
'y%./+-%__p_%'
`
if
eval
"test
\"
`
echo
'$''{'
ac_cv_lib_
$ac_lib_var
'+set}'
`
\"
= set"
;
then
echo
$ac_n
"(cached)
$ac_c
"
1>&6
...
...
@@ -2551,7 +2606,7 @@ else
ac_save_LIBS
=
"
$LIBS
"
LIBS
=
"-lc_r
$LIBS
"
cat
>
conftest.
$ac_ext
<<
EOF
#line 2
555
"configure"
#line 2
610
"configure"
#include "confdefs.h"
/* Override any gcc2 internal prototype to avoid an error. */
/* We use char because int might match the return type of a gcc2
...
...
@@ -2562,7 +2617,7 @@ int main() {
pthread_attr_init()
; return 0; }
EOF
if
{
(
eval echo
configure:2
566
:
\"
$ac_link
\"
)
1>&5
;
(
eval
$ac_link
)
2>&5
;
}
&&
test
-s
conftest
${
ac_exeext
}
;
then
if
{
(
eval echo
configure:2
621
:
\"
$ac_link
\"
)
1>&5
;
(
eval
$ac_link
)
2>&5
;
}
&&
test
-s
conftest
${
ac_exeext
}
;
then
rm
-rf
conftest
*
eval
"ac_cv_lib_
$ac_lib_var
=yes"
else
...
...
@@ -2585,12 +2640,12 @@ fi
fi
if
test
"x
${
THREAD_LIB
}
"
=
xerror
;
then
echo
$ac_n
"checking for pthread_attr_init""...
$ac_c
"
1>&6
echo
"configure:2
589
: checking for pthread_attr_init"
>
&5
echo
"configure:2
644
: checking for pthread_attr_init"
>
&5
if
eval
"test
\"
`
echo
'$''{'
ac_cv_func_pthread_attr_init
'+set}'
`
\"
= set"
;
then
echo
$ac_n
"(cached)
$ac_c
"
1>&6
else
cat
>
conftest.
$ac_ext
<<
EOF
#line 2
594
"configure"
#line 2
649
"configure"
#include "confdefs.h"
/* System header to define __stub macros and hopefully few prototypes,
which can conflict with char pthread_attr_init(); below. */
...
...
@@ -2613,7 +2668,7 @@ pthread_attr_init();
; return 0; }
EOF
if
{
(
eval echo
configure:26
17
:
\"
$ac_link
\"
)
1>&5
;
(
eval
$ac_link
)
2>&5
;
}
&&
test
-s
conftest
${
ac_exeext
}
;
then
if
{
(
eval echo
configure:26
72
:
\"
$ac_link
\"
)
1>&5
;
(
eval
$ac_link
)
2>&5
;
}
&&
test
-s
conftest
${
ac_exeext
}
;
then
rm
-rf
conftest
*
eval
"ac_cv_func_pthread_attr_init=yes"
else
...
...
@@ -2636,7 +2691,7 @@ fi
fi
echo
$ac_n
"checking for cthread_fork in -lthreads""...
$ac_c
"
1>&6
echo
"configure:26
40
: checking for cthread_fork in -lthreads"
>
&5
echo
"configure:26
95
: checking for cthread_fork in -lthreads"
>
&5
ac_lib_var
=
`
echo
threads
'_'
cthread_fork |
sed
'y%./+-%__p_%'
`
if
eval
"test
\"
`
echo
'$''{'
ac_cv_lib_
$ac_lib_var
'+set}'
`
\"
= set"
;
then
echo
$ac_n
"(cached)
$ac_c
"
1>&6
...
...
@@ -2644,7 +2699,7 @@ else
ac_save_LIBS
=
"
$LIBS
"
LIBS
=
"-lthreads
$LIBS
"
cat
>
conftest.
$ac_ext
<<
EOF
#line 2
648
"configure"
#line 2
703
"configure"
#include "confdefs.h"
/* Override any gcc2 internal prototype to avoid an error. */
/* We use char because int might match the return type of a gcc2
...
...
@@ -2655,7 +2710,7 @@ int main() {
cthread_fork()
; return 0; }
EOF
if
{
(
eval echo
configure:2
659
:
\"
$ac_link
\"
)
1>&5
;
(
eval
$ac_link
)
2>&5
;
}
&&
test
-s
conftest
${
ac_exeext
}
;
then
if
{
(
eval echo
configure:2
714
:
\"
$ac_link
\"
)
1>&5
;
(
eval
$ac_link
)
2>&5
;
}
&&
test
-s
conftest
${
ac_exeext
}
;
then
rm
-rf
conftest
*
eval
"ac_cv_lib_
$ac_lib_var
=yes"
else
...
...
@@ -2677,7 +2732,7 @@ fi
cat
>
conftest.
$ac_ext
<<
EOF
#line 2
681
"configure"
#line 2
736
"configure"
#include "confdefs.h"
#include <pthread.h>
EOF
...
...
@@ -2693,7 +2748,7 @@ fi
rm
-f
conftest
*
cat
>
conftest.
$ac_ext
<<
EOF
#line 2
697
"configure"
#line 2
752
"configure"
#include "confdefs.h"
#include <strings.h>
EOF
...
...
@@ -2713,17 +2768,17 @@ for ac_hdr in stddef.h getopt.h strings.h
do
ac_safe
=
`
echo
"
$ac_hdr
"
|
sed
'y%./+-%__p_%'
`
echo
$ac_n
"checking for
$ac_hdr
""...
$ac_c
"
1>&6
echo
"configure:27
17
: checking for
$ac_hdr
"
>
&5
echo
"configure:27
72
: checking for
$ac_hdr
"
>
&5
if
eval
"test
\"
`
echo
'$''{'
ac_cv_header_
$ac_safe
'+set}'
`
\"
= set"
;
then
echo
$ac_n
"(cached)
$ac_c
"
1>&6
else
cat
>
conftest.
$ac_ext
<<
EOF
#line 27
22
"configure"
#line 27
77
"configure"
#include "confdefs.h"
#include <
$ac_hdr
>
EOF
ac_try
=
"
$ac_cpp
conftest.
$ac_ext
>/dev/null 2>conftest.out"
{
(
eval echo
configure:27
27
:
\"
$ac_try
\"
)
1>&5
;
(
eval
$ac_try
)
2>&5
;
}
{
(
eval echo
configure:27
82
:
\"
$ac_try
\"
)
1>&5
;
(
eval
$ac_try
)
2>&5
;
}
ac_err
=
`
grep
-v
'^ *+'
conftest.out |
grep
-v
"^conftest.
${
ac_ext
}
\$
"
`
if
test
-z
"
$ac_err
"
;
then
rm
-rf
conftest
*
...
...
@@ -2753,17 +2808,17 @@ for ac_hdr in sys/sockio.h fcntl.h sys/time.h
do
ac_safe
=
`
echo
"
$ac_hdr
"
|
sed
'y%./+-%__p_%'
`
echo
$ac_n
"checking for
$ac_hdr
""...
$ac_c
"
1>&6
echo
"configure:2
757
: checking for
$ac_hdr
"
>
&5
echo
"configure:2
812
: checking for
$ac_hdr
"
>
&5
if
eval
"test
\"
`
echo
'$''{'
ac_cv_header_
$ac_safe
'+set}'
`
\"
= set"
;
then
echo
$ac_n
"(cached)
$ac_c
"
1>&6
else
cat
>
conftest.
$ac_ext
<<
EOF
#line 2
762
"configure"
#line 2
817
"configure"
#include "confdefs.h"
#include <
$ac_hdr
>
EOF
ac_try
=
"
$ac_cpp
conftest.
$ac_ext
>/dev/null 2>conftest.out"
{
(
eval echo
configure:2
767
:
\"
$ac_try
\"
)
1>&5
;
(
eval
$ac_try
)
2>&5
;
}
{
(
eval echo
configure:2
822
:
\"
$ac_try
\"
)
1>&5
;
(
eval
$ac_try
)
2>&5
;
}
ac_err
=
`
grep
-v
'^ *+'
conftest.out |
grep
-v
"^conftest.
${
ac_ext
}
\$
"
`
if
test
-z
"
$ac_err
"
;
then
rm
-rf
conftest
*
...
...
@@ -2793,17 +2848,17 @@ for ac_hdr in sys/soundcard.h machine/soundcard.h
do
ac_safe
=
`
echo
"
$ac_hdr
"
|
sed
'y%./+-%__p_%'
`
echo
$ac_n
"checking for
$ac_hdr
""...
$ac_c
"
1>&6
echo
"configure:2
797
: checking for
$ac_hdr
"
>
&5
echo
"configure:2
852
: checking for
$ac_hdr
"
>
&5
if
eval
"test
\"
`
echo
'$''{'
ac_cv_header_
$ac_safe
'+set}'
`
\"
= set"
;
then
echo
$ac_n
"(cached)
$ac_c
"
1>&6
else
cat
>
conftest.
$ac_ext
<<
EOF
#line 28
02
"configure"
#line 28
57
"configure"
#include "confdefs.h"
#include <
$ac_hdr
>
EOF
ac_try
=
"
$ac_cpp
conftest.
$ac_ext
>/dev/null 2>conftest.out"
{
(
eval echo
configure:28
07
:
\"
$ac_try
\"
)
1>&5
;
(
eval
$ac_try
)
2>&5
;
}
{
(
eval echo
configure:28
62
:
\"
$ac_try
\"
)
1>&5
;
(
eval
$ac_try
)
2>&5
;
}
ac_err
=
`
grep
-v
'^ *+'
conftest.out |
grep
-v
"^conftest.
${
ac_ext
}
\$
"
`
if
test
-z
"
$ac_err
"
;
then
rm
-rf
conftest
*
...
...
@@ -2833,17 +2888,17 @@ for ac_hdr in dlfcn.h image.h
do
ac_safe
=
`
echo
"
$ac_hdr
"
|
sed
'y%./+-%__p_%'
`
echo
$ac_n
"checking for
$ac_hdr
""...
$ac_c
"
1>&6
echo
"configure:28
37
: checking for
$ac_hdr
"
>
&5
echo
"configure:28
92
: checking for
$ac_hdr
"
>
&5
if
eval
"test
\"
`
echo
'$''{'
ac_cv_header_
$ac_safe
'+set}'
`
\"
= set"
;
then
echo
$ac_n
"(cached)
$ac_c
"
1>&6
else
cat
>
conftest.
$ac_ext
<<
EOF
#line 28
42
"configure"
#line 28
97
"configure"
#include "confdefs.h"
#include <
$ac_hdr
>
EOF
ac_try
=
"
$ac_cpp
conftest.
$ac_ext
>/dev/null 2>conftest.out"
{
(
eval echo
configure:2
847
:
\"
$ac_try
\"
)
1>&5
;
(
eval
$ac_try
)
2>&5
;
}
{
(
eval echo
configure:2
902
:
\"
$ac_try
\"
)
1>&5
;
(
eval
$ac_try
)
2>&5
;
}
ac_err
=
`
grep
-v
'^ *+'
conftest.out |
grep
-v
"^conftest.
${
ac_ext
}
\$
"
`
if
test
-z
"
$ac_err
"
;
then
rm
-rf
conftest
*
...
...
@@ -2873,17 +2928,17 @@ for ac_hdr in arpa/inet.h net/if.h netinet/in.h sys/socket.h
do
ac_safe
=
`
echo
"
$ac_hdr
"
|
sed
'y%./+-%__p_%'
`
echo
$ac_n
"checking for
$ac_hdr
""...
$ac_c
"
1>&6
echo
"configure:2
877
: checking for
$ac_hdr
"
>
&5
echo
"configure:2
932
: checking for
$ac_hdr
"
>
&5
if
eval
"test
\"
`
echo
'$''{'
ac_cv_header_
$ac_safe
'+set}'
`
\"
= set"
;
then
echo
$ac_n
"(cached)
$ac_c
"
1>&6
else
cat
>
conftest.
$ac_ext
<<
EOF
#line 2
882
"configure"
#line 2
937
"configure"
#include "confdefs.h"
#include <
$ac_hdr
>
EOF
ac_try
=
"
$ac_cpp
conftest.
$ac_ext
>/dev/null 2>conftest.out"
{
(
eval echo
configure:2
887
:
\"
$ac_try
\"
)
1>&5
;
(
eval
$ac_try
)
2>&5
;
}
{
(
eval echo
configure:2
942
:
\"
$ac_try
\"
)
1>&5
;
(
eval
$ac_try
)
2>&5
;
}
ac_err
=
`
grep
-v
'^ *+'
conftest.out |
grep
-v
"^conftest.
${
ac_ext
}
\$
"
`
if
test
-z
"
$ac_err
"
;
then
rm
-rf
conftest
*
...
...
@@ -2913,17 +2968,17 @@ for ac_hdr in machine/param.h
do
ac_safe
=
`
echo
"
$ac_hdr
"
|
sed
'y%./+-%__p_%'
`
echo
$ac_n
"checking for
$ac_hdr
""...
$ac_c
"
1>&6
echo
"configure:29
17
: checking for
$ac_hdr
"
>
&5
echo
"configure:29
72
: checking for
$ac_hdr
"
>
&5
if
eval
"test
\"
`
echo
'$''{'
ac_cv_header_
$ac_safe
'+set}'
`
\"
= set"
;
then
echo
$ac_n
"(cached)
$ac_c
"
1>&6
else
cat
>
conftest.
$ac_ext
<<
EOF
#line 29
22
"configure"
#line 29
77
"configure"
#include "confdefs.h"
#include <
$ac_hdr
>
EOF
ac_try
=
"
$ac_cpp
conftest.
$ac_ext
>/dev/null 2>conftest.out"
{
(
eval echo
configure:29
27
:
\"
$ac_try
\"
)
1>&5
;
(
eval
$ac_try
)
2>&5
;
}
{
(
eval echo
configure:29
82
:
\"
$ac_try
\"
)
1>&5
;
(
eval
$ac_try
)
2>&5
;
}
ac_err
=
`
grep
-v
'^ *+'
conftest.out |
grep
-v
"^conftest.
${
ac_ext
}
\$
"
`
if
test
-z
"
$ac_err
"
;
then
rm
-rf
conftest
*
...
...
@@ -2954,17 +3009,17 @@ for ac_hdr in cthreads.h pthread.h kernel/scheduler.h kernel/OS.h
do
ac_safe
=
`
echo
"
$ac_hdr
"
|
sed
'y%./+-%__p_%'
`
echo
$ac_n
"checking for
$ac_hdr
""...
$ac_c
"
1>&6
echo
"configure:
2958
: checking for
$ac_hdr
"
>
&5
echo
"configure:
3013
: checking for
$ac_hdr
"
>
&5
if
eval
"test
\"
`
echo
'$''{'
ac_cv_header_
$ac_safe
'+set}'
`
\"
= set"
;
then
echo
$ac_n
"(cached)
$ac_c
"
1>&6
else
cat
>
conftest.
$ac_ext
<<
EOF
#line
2963
"configure"
#line
3018
"configure"
#include "confdefs.h"
#include <
$ac_hdr
>
EOF
ac_try
=
"
$ac_cpp
conftest.
$ac_ext
>/dev/null 2>conftest.out"
{
(
eval echo
configure:
2968
:
\"
$ac_try
\"
)
1>&5
;
(
eval
$ac_try
)
2>&5
;
}
{
(
eval echo
configure:
3023
:
\"
$ac_try
\"
)
1>&5
;
(
eval
$ac_try
)
2>&5
;
}
ac_err
=
`
grep
-v
'^ *+'
conftest.out |
grep
-v
"^conftest.
${
ac_ext
}
\$
"
`
if
test
-z
"
$ac_err
"
;
then
rm
-rf
conftest
*
...
...
@@ -2993,9 +3048,9 @@ done
CFLAGS
=
"
${
save_CFLAGS
}
-Wall -Werror"
echo
$ac_n
"checking for ntohl in sys/param.h""...
$ac_c
"
1>&6
echo
"configure:
2997
: checking for ntohl in sys/param.h"
>
&5
echo
"configure:
3052
: checking for ntohl in sys/param.h"
>
&5
cat
>
conftest.
$ac_ext
<<
EOF
#line
2999
"configure"
#line
3054
"configure"
#include "confdefs.h"
#include <sys/param.h>
void foo() { int meuh; ntohl(meuh); }
...
...
@@ -3003,7 +3058,7 @@ int main() {
; return 0; }
EOF
if
{
(
eval echo
configure:30
07
:
\"
$ac_compile
\"
)
1>&5
;
(
eval
$ac_compile
)
2>&5
;
}
;
then
if
{
(
eval echo
configure:30
62
:
\"
$ac_compile
\"
)
1>&5
;
(
eval
$ac_compile
)
2>&5
;
}
;
then
rm
-rf
conftest
*
cat
>>
confdefs.h
<<
\
EOF
#define NTOHL_IN_SYS_PARAM_H 1
...
...
@@ -3020,16 +3075,16 @@ rm -f conftest*
CFLAGS
=
"
${
save_CFLAGS
}
-finline-limit-20000"
echo
$ac_n
"checking if
\$
CC accepts -finline-limit""...
$ac_c
"
1>&6
echo
"configure:30
24
: checking if
\$
CC accepts -finline-limit"
>
&5
echo
"configure:30
79
: checking if
\$
CC accepts -finline-limit"
>
&5
cat
>
conftest.
$ac_ext
<<
EOF
#line 30
26
"configure"
#line 30
81
"configure"
#include "confdefs.h"
int main() {
; return 0; }
EOF
if
{
(
eval echo
configure:30
33
:
\"
$ac_compile
\"
)
1>&5
;
(
eval
$ac_compile
)
2>&5
;
}
;
then
if
{
(
eval echo
configure:30
88
:
\"
$ac_compile
\"
)
1>&5
;
(
eval
$ac_compile
)
2>&5
;
}
;
then
rm
-rf
conftest
*
save_CFLAGS
=
"
${
save_CFLAGS
}
-finline-limit-20000"
;
echo
"
$ac_t
""yes"
1>&6
else
...
...
@@ -3042,16 +3097,16 @@ rm -f conftest*
CFLAGS
=
"
${
save_CFLAGS
}
-bundle -undefined suppress"
echo
$ac_n
"checking if
\$
CC accepts -bundle -undefined suppress""...
$ac_c
"
1>&6
echo
"configure:3
046
: checking if
\$
CC accepts -bundle -undefined suppress"
>
&5
echo
"configure:3
101
: checking if
\$
CC accepts -bundle -undefined suppress"
>
&5
cat
>
conftest.
$ac_ext
<<
EOF
#line 3
048
"configure"
#line 3
103
"configure"
#include "confdefs.h"
int main() {
; return 0; }
EOF
if
{
(
eval echo
configure:3
055
:
\"
$ac_compile
\"
)
1>&5
;
(
eval
$ac_compile
)
2>&5
;
}
;
then
if
{
(
eval echo
configure:3
110
:
\"
$ac_compile
\"
)
1>&5
;
(
eval
$ac_compile
)
2>&5
;
}
;
then
rm
-rf
conftest
*
PLCFLAGS
=
"
${
PLCFLAGS
}
-bundle -undefined suppress"
;
echo
"
$ac_t
""yes"
1>&6
else
...
...
@@ -3064,16 +3119,16 @@ rm -f conftest*
CFLAGS
=
"
${
save_CFLAGS
}
-shared"
echo
$ac_n
"checking if
\$
CC accepts -shared""...
$ac_c
"
1>&6
echo
"configure:3
068
: checking if
\$
CC accepts -shared"
>
&5
echo
"configure:3
123
: checking if
\$
CC accepts -shared"
>
&5
cat
>
conftest.
$ac_ext
<<
EOF
#line 3
070
"configure"
#line 3
125
"configure"
#include "confdefs.h"
int main() {
; return 0; }
EOF
if
{
(
eval echo
configure:3
077
:
\"
$ac_compile
\"
)
1>&5
;
(
eval
$ac_compile
)
2>&5
;
}
;
then
if
{
(
eval echo
configure:3
132
:
\"
$ac_compile
\"
)
1>&5
;
(
eval
$ac_compile
)
2>&5
;
}
;
then
rm
-rf
conftest
*
PLCFLAGS
=
"
${
PLCFLAGS
}
-shared"
;
echo
"
$ac_t
""yes"
1>&6
else
...
...
@@ -3088,16 +3143,16 @@ if test x"${SOFLAGS}" = x; then
try_SOFLAGS
=
"-Wl,-soname -Wl,"
LDFLAGS
=
"
${
save_LDFLAGS
}
${
try_SOFLAGS
}
foo.so.0"
echo
$ac_n
"checking if linker accepts
${
try_SOFLAGS
}
foo.so.0""...
$ac_c
"
1>&6
echo
"configure:3
092
: checking if linker accepts
${
try_SOFLAGS
}
foo.so.0"
>
&5
echo
"configure:3
147
: checking if linker accepts
${
try_SOFLAGS
}
foo.so.0"
>
&5
cat
>
conftest.
$ac_ext
<<
EOF
#line 3
094
"configure"
#line 3
149
"configure"
#include "confdefs.h"
int main() {
; return 0; }
EOF
if
{
(
eval echo
configure:31
01
:
\"
$ac_link
\"
)
1>&5
;
(
eval
$ac_link
)
2>&5
;
}
&&
test
-s
conftest
${
ac_exeext
}
;
then
if
{
(
eval echo
configure:31
56
:
\"
$ac_link
\"
)
1>&5
;
(
eval
$ac_link
)
2>&5
;
}
&&
test
-s
conftest
${
ac_exeext
}
;
then
rm
-rf
conftest
*
SOFLAGS
=
"
${
try_SOFLAGS
}
"
;
echo
"
$ac_t
""yes"
1>&6
else
...
...
@@ -3113,16 +3168,16 @@ if test x"${SOFLAGS}" = x; then
try_SOFLAGS
=
"-Wl,-h -Wl,"
LDFLAGS
=
"
${
save_LDFLAGS
}
${
try_SOFLAGS
}
foo.so.0"
echo
$ac_n
"checking if linker accepts
${
try_SOFLAGS
}
foo.so.0""...
$ac_c
"
1>&6
echo
"configure:31
17
: checking if linker accepts
${
try_SOFLAGS
}
foo.so.0"
>
&5
echo
"configure:31
72
: checking if linker accepts
${
try_SOFLAGS
}
foo.so.0"
>
&5
cat
>
conftest.
$ac_ext
<<
EOF
#line 31
19
"configure"
#line 31
74
"configure"
#include "confdefs.h"
int main() {
; return 0; }
EOF
if
{
(
eval echo
configure:31
26
:
\"
$ac_link
\"
)
1>&5
;
(
eval
$ac_link
)
2>&5
;
}
&&
test
-s
conftest
${
ac_exeext
}
;
then
if
{
(
eval echo
configure:31
81
:
\"
$ac_link
\"
)
1>&5
;
(
eval
$ac_link
)
2>&5
;
}
&&
test
-s
conftest
${
ac_exeext
}
;
then
rm
-rf
conftest
*
SOFLAGS
=
"
${
try_SOFLAGS
}
"
;
echo
"
$ac_t
""yes"
1>&6
else
...
...
@@ -3138,9 +3193,9 @@ CFLAGS="${save_CFLAGS}"
LDFLAGS
=
"
${
save_LDFLAGS
}
"
echo
$ac_n
"checking for boolean_t in sys/types.h""...
$ac_c
"
1>&6
echo
"configure:31
42
: checking for boolean_t in sys/types.h"
>
&5
echo
"configure:31
97
: checking for boolean_t in sys/types.h"
>
&5
cat
>
conftest.
$ac_ext
<<
EOF
#line 31
44
"configure"
#line 31
99
"configure"
#include "confdefs.h"
#include <sys/types.h>
void quux() { boolean_t foo; }
...
...
@@ -3148,7 +3203,7 @@ int main() {
; return 0; }
EOF
if
{
(
eval echo
configure:3
152
:
\"
$ac_compile
\"
)
1>&5
;
(
eval
$ac_compile
)
2>&5
;
}
;
then
if
{
(
eval echo
configure:3
207
:
\"
$ac_compile
\"
)
1>&5
;
(
eval
$ac_compile
)
2>&5
;
}
;
then
rm
-rf
conftest
*
cat
>>
confdefs.h
<<
\
EOF
#define BOOLEAN_T_IN_SYS_TYPES_H 1
...
...
@@ -3163,9 +3218,9 @@ else
fi
rm
-f
conftest
*
echo
$ac_n
"checking for boolean_t in pthread.h""...
$ac_c
"
1>&6
echo
"configure:3
167
: checking for boolean_t in pthread.h"
>
&5
echo
"configure:3
222
: checking for boolean_t in pthread.h"
>
&5
cat
>
conftest.
$ac_ext
<<
EOF
#line 3
169
"configure"
#line 3
224
"configure"
#include "confdefs.h"
#include <pthread.h>
void quux() { boolean_t foo; }
...
...
@@ -3173,7 +3228,7 @@ int main() {
; return 0; }
EOF
if
{
(
eval echo
configure:3
177
:
\"
$ac_compile
\"
)
1>&5
;
(
eval
$ac_compile
)
2>&5
;
}
;
then
if
{
(
eval echo
configure:3
232
:
\"
$ac_compile
\"
)
1>&5
;
(
eval
$ac_compile
)
2>&5
;
}
;
then
rm
-rf
conftest
*
cat
>>
confdefs.h
<<
\
EOF
#define BOOLEAN_T_IN_PTHREAD_H 1
...
...
@@ -3188,9 +3243,9 @@ else
fi
rm
-f
conftest
*
echo
$ac_n
"checking for boolean_t in cthreads.h""...
$ac_c
"
1>&6
echo
"configure:3
192
: checking for boolean_t in cthreads.h"
>
&5
echo
"configure:3
247
: checking for boolean_t in cthreads.h"
>
&5
cat
>
conftest.
$ac_ext
<<
EOF
#line 3
194
"configure"
#line 3
249
"configure"
#include "confdefs.h"
#include <cthreads.h>
void quux() { boolean_t foo; }
...
...
@@ -3198,7 +3253,7 @@ int main() {
; return 0; }
EOF
if
{
(
eval echo
configure:32
02
:
\"
$ac_compile
\"
)
1>&5
;
(
eval
$ac_compile
)
2>&5
;
}
;
then
if
{
(
eval echo
configure:32
57
:
\"
$ac_compile
\"
)
1>&5
;
(
eval
$ac_compile
)
2>&5
;
}
;
then
rm
-rf
conftest
*
cat
>>
confdefs.h
<<
\
EOF
#define BOOLEAN_T_IN_CTHREADS_H 1
...
...
@@ -3214,12 +3269,12 @@ fi
rm
-f
conftest
*
echo
$ac_n
"checking for working const""...
$ac_c
"
1>&6
echo
"configure:32
18
: checking for working const"
>
&5
echo
"configure:32
73
: checking for working const"
>
&5
if
eval
"test
\"
`
echo
'$''{'
ac_cv_c_const
'+set}'
`
\"
= set"
;
then
echo
$ac_n
"(cached)
$ac_c
"
1>&6
else
cat
>
conftest.
$ac_ext
<<
EOF
#line 32
23
"configure"
#line 32
78
"configure"
#include "confdefs.h"
int main() {
...
...
@@ -3268,7 +3323,7 @@ ccp = (char const *const *) p;
; return 0; }
EOF
if
{
(
eval echo
configure:3
272
:
\"
$ac_compile
\"
)
1>&5
;
(
eval
$ac_compile
)
2>&5
;
}
;
then
if
{
(
eval echo
configure:3
327
:
\"
$ac_compile
\"
)
1>&5
;
(
eval
$ac_compile
)
2>&5
;
}
;
then
rm
-rf
conftest
*
ac_cv_c_const
=
yes
else
...
...
@@ -3289,12 +3344,12 @@ EOF
fi
echo
$ac_n
"checking for ANSI C header files""...
$ac_c
"
1>&6
echo
"configure:3
293
: checking for ANSI C header files"
>
&5
echo
"configure:3
348
: checking for ANSI C header files"
>
&5
if
eval
"test
\"
`
echo
'$''{'
ac_cv_header_stdc
'+set}'
`
\"
= set"
;
then
echo
$ac_n
"(cached)
$ac_c
"
1>&6
else
cat
>
conftest.
$ac_ext
<<
EOF
#line 3
298
"configure"
#line 3
353
"configure"
#include "confdefs.h"
#include <stdlib.h>
#include <stdarg.h>
...
...
@@ -3302,7 +3357,7 @@ else
#include <float.h>
EOF
ac_try
=
"
$ac_cpp
conftest.
$ac_ext
>/dev/null 2>conftest.out"
{
(
eval echo
configure:33
06
:
\"
$ac_try
\"
)
1>&5
;
(
eval
$ac_try
)
2>&5
;
}
{
(
eval echo
configure:33
61
:
\"
$ac_try
\"
)
1>&5
;
(
eval
$ac_try
)
2>&5
;
}
ac_err
=
`
grep
-v
'^ *+'
conftest.out |
grep
-v
"^conftest.
${
ac_ext
}
\$
"
`
if
test
-z
"
$ac_err
"
;
then
rm
-rf
conftest
*
...
...
@@ -3319,7 +3374,7 @@ rm -f conftest*
if
test
$ac_cv_header_stdc
=
yes
;
then
# SunOS 4.x string.h does not declare mem*, contrary to ANSI.
cat
>
conftest.
$ac_ext
<<
EOF
#line 33
23
"configure"
#line 33
78
"configure"
#include "confdefs.h"
#include <string.h>
EOF
...
...
@@ -3337,7 +3392,7 @@ fi
if
test
$ac_cv_header_stdc
=
yes
;
then
# ISC 2.0.2 stdlib.h does not declare free, contrary to ANSI.
cat
>
conftest.
$ac_ext
<<
EOF
#line 33
41
"configure"
#line 33
96
"configure"
#include "confdefs.h"
#include <stdlib.h>
EOF
...
...
@@ -3358,7 +3413,7 @@ if test "$cross_compiling" = yes; then
:
else
cat
>
conftest.
$ac_ext
<<
EOF
#line 3
362
"configure"
#line 3
417
"configure"
#include "confdefs.h"
#include <ctype.h>
#define ISLOWER(c) ('a' <= (c) && (c) <= 'z')
...
...
@@ -3369,7 +3424,7 @@ if (XOR (islower (i), ISLOWER (i)) || toupper (i) != TOUPPER (i)) exit(2);
exit (0); }
EOF
if
{
(
eval echo
configure:3
373
:
\"
$ac_link
\"
)
1>&5
;
(
eval
$ac_link
)
2>&5
;
}
&&
test
-s
conftest
${
ac_exeext
}
&&
(
./conftest
;
exit
)
2>/dev/null
if
{
(
eval echo
configure:3
428
:
\"
$ac_link
\"
)
1>&5
;
(
eval
$ac_link
)
2>&5
;
}
&&
test
-s
conftest
${
ac_exeext
}
&&
(
./conftest
;
exit
)
2>/dev/null
then
:
else
...
...
@@ -3393,12 +3448,12 @@ EOF
fi
echo
$ac_n
"checking for size_t""...
$ac_c
"
1>&6
echo
"configure:3
397
: checking for size_t"
>
&5
echo
"configure:3
452
: checking for size_t"
>
&5
if
eval
"test
\"
`
echo
'$''{'
ac_cv_type_size_t
'+set}'
`
\"
= set"
;
then
echo
$ac_n
"(cached)
$ac_c
"
1>&6
else
cat
>
conftest.
$ac_ext
<<
EOF
#line 34
02
"configure"
#line 34
57
"configure"
#include "confdefs.h"
#include <sys/types.h>
#if STDC_HEADERS
...
...
@@ -3426,12 +3481,12 @@ EOF
fi
echo
$ac_n
"checking whether time.h and sys/time.h may both be included""...
$ac_c
"
1>&6
echo
"configure:34
30
: checking whether time.h and sys/time.h may both be included"
>
&5
echo
"configure:34
85
: checking whether time.h and sys/time.h may both be included"
>
&5
if
eval
"test
\"
`
echo
'$''{'
ac_cv_header_time
'+set}'
`
\"
= set"
;
then
echo
$ac_n
"(cached)
$ac_c
"
1>&6
else
cat
>
conftest.
$ac_ext
<<
EOF
#line 34
35
"configure"
#line 34
90
"configure"
#include "confdefs.h"
#include <sys/types.h>
#include <sys/time.h>
...
...
@@ -3440,7 +3495,7 @@ int main() {
struct tm *tp;
; return 0; }
EOF
if
{
(
eval echo
configure:34
44
:
\"
$ac_compile
\"
)
1>&5
;
(
eval
$ac_compile
)
2>&5
;
}
;
then
if
{
(
eval echo
configure:34
99
:
\"
$ac_compile
\"
)
1>&5
;
(
eval
$ac_compile
)
2>&5
;
}
;
then
rm
-rf
conftest
*
ac_cv_header_time
=
yes
else
...
...
@@ -3462,21 +3517,21 @@ fi
echo
$ac_n
"checking __attribute__ ((aligned ())) support""...
$ac_c
"
1>&6
echo
"configure:3
466
: checking __attribute__ ((aligned ())) support"
>
&5
echo
"configure:3
521
: checking __attribute__ ((aligned ())) support"
>
&5
if
eval
"test
\"
`
echo
'$''{'
ac_cv_c_attribute_aligned
'+set}'
`
\"
= set"
;
then
echo
$ac_n
"(cached)
$ac_c
"
1>&6
else
ac_cv_c_attribute_aligned
=
0
for
ac_cv_c_attr_align_try
in
2 4 8 16 32 64
;
do
cat
>
conftest.
$ac_ext
<<
EOF
#line 3
473
"configure"
#line 3
528
"configure"
#include "confdefs.h"
int main() {
static char c __attribute__ ((aligned(
$ac_cv_c_attr_align_try
))) = 0; return c;
; return 0; }
EOF
if
{
(
eval echo
configure:3
480
:
\"
$ac_compile
\"
)
1>&5
;
(
eval
$ac_compile
)
2>&5
;
}
;
then
if
{
(
eval echo
configure:3
535
:
\"
$ac_compile
\"
)
1>&5
;
(
eval
$ac_compile
)
2>&5
;
}
;
then
rm
-rf
conftest
*
ac_cv_c_attribute_aligned
=
$ac_cv_c_attr_align_try
else
...
...
@@ -3509,19 +3564,19 @@ SSE_MODULES="imdctsse downmixsse"
ALTIVEC_MODULES
=
"idctaltivec motionaltivec"
echo
$ac_n
"checking if
\$
CC groks MMX inline assembly""...
$ac_c
"
1>&6
echo
"configure:35
13
: checking if
\$
CC groks MMX inline assembly"
>
&5
echo
"configure:35
68
: checking if
\$
CC groks MMX inline assembly"
>
&5
if
eval
"test
\"
`
echo
'$''{'
ac_cv_mmx_inline
'+set}'
`
\"
= set"
;
then
echo
$ac_n
"(cached)
$ac_c
"
1>&6
else
cat
>
conftest.
$ac_ext
<<
EOF
#line 35
18
"configure"
#line 35
73
"configure"
#include "confdefs.h"
void quux(){void *p;asm("packuswb %%mm1,%%mm2"::"r"(p));}
int main() {
; return 0; }
EOF
if
{
(
eval echo
configure:35
25
:
\"
$ac_compile
\"
)
1>&5
;
(
eval
$ac_compile
)
2>&5
;
}
;
then
if
{
(
eval echo
configure:35
80
:
\"
$ac_compile
\"
)
1>&5
;
(
eval
$ac_compile
)
2>&5
;
}
;
then
rm
-rf
conftest
*
ac_cv_mmx_inline
=
yes
else
...
...
@@ -3539,19 +3594,19 @@ if test x"$ac_cv_mmx_inline" != x"no"; then
fi
echo
$ac_n
"checking if
\$
CC groks MMX EXT inline assembly""...
$ac_c
"
1>&6
echo
"configure:35
43
: checking if
\$
CC groks MMX EXT inline assembly"
>
&5
echo
"configure:35
98
: checking if
\$
CC groks MMX EXT inline assembly"
>
&5
if
eval
"test
\"
`
echo
'$''{'
ac_cv_mmxext_inline
'+set}'
`
\"
= set"
;
then
echo
$ac_n
"(cached)
$ac_c
"
1>&6
else
cat
>
conftest.
$ac_ext
<<
EOF
#line 3
548
"configure"
#line 3
603
"configure"
#include "confdefs.h"
void quux(){void *p;asm("maskmovq %%mm1,%%mm2"::"r"(p));}
int main() {
; return 0; }
EOF
if
{
(
eval echo
configure:3
555
:
\"
$ac_compile
\"
)
1>&5
;
(
eval
$ac_compile
)
2>&5
;
}
;
then
if
{
(
eval echo
configure:3
610
:
\"
$ac_compile
\"
)
1>&5
;
(
eval
$ac_compile
)
2>&5
;
}
;
then
rm
-rf
conftest
*
ac_cv_mmxext_inline
=
yes
else
...
...
@@ -3569,19 +3624,19 @@ if test x"$ac_cv_mmxext_inline" != x"no"; then
fi
echo
$ac_n
"checking if
\$
CC groks 3D Now! inline assembly""...
$ac_c
"
1>&6
echo
"configure:3
573
: checking if
\$
CC groks 3D Now! inline assembly"
>
&5
echo
"configure:3
628
: checking if
\$
CC groks 3D Now! inline assembly"
>
&5
if
eval
"test
\"
`
echo
'$''{'
ac_cv_3dnow_inline
'+set}'
`
\"
= set"
;
then
echo
$ac_n
"(cached)
$ac_c
"
1>&6
else
cat
>
conftest.
$ac_ext
<<
EOF
#line 3
578
"configure"
#line 3
633
"configure"
#include "confdefs.h"
void quux(){void *p;asm("pfadd %%mm1,%%mm2"::"r"(p));}
int main() {
; return 0; }
EOF
if
{
(
eval echo
configure:3
585
:
\"
$ac_compile
\"
)
1>&5
;
(
eval
$ac_compile
)
2>&5
;
}
;
then
if
{
(
eval echo
configure:3
640
:
\"
$ac_compile
\"
)
1>&5
;
(
eval
$ac_compile
)
2>&5
;
}
;
then
rm
-rf
conftest
*
ac_cv_3dnow_inline
=
yes
else
...
...
@@ -3599,19 +3654,19 @@ if test x"$ac_cv_3dnow_inline" != x"no"; then
fi
echo
$ac_n
"checking if
\$
CC groks SSE inline assembly""...
$ac_c
"
1>&6
echo
"configure:36
03
: checking if
\$
CC groks SSE inline assembly"
>
&5
echo
"configure:36
58
: checking if
\$
CC groks SSE inline assembly"
>
&5
if
eval
"test
\"
`
echo
'$''{'
ac_cv_sse_inline
'+set}'
`
\"
= set"
;
then
echo
$ac_n
"(cached)
$ac_c
"
1>&6
else
cat
>
conftest.
$ac_ext
<<
EOF
#line 36
08
"configure"
#line 36
63
"configure"
#include "confdefs.h"
void quux(){void *p;asm("xorps %%xmm1,%%xmm2"::"r"(p));}
int main() {
; return 0; }
EOF
if
{
(
eval echo
configure:36
15
:
\"
$ac_compile
\"
)
1>&5
;
(
eval
$ac_compile
)
2>&5
;
}
;
then
if
{
(
eval echo
configure:36
70
:
\"
$ac_compile
\"
)
1>&5
;
(
eval
$ac_compile
)
2>&5
;
}
;
then
rm
-rf
conftest
*
ac_cv_sse_inline
=
yes
else
...
...
@@ -3629,19 +3684,19 @@ if test x"$ac_cv_sse_inline" != x"no"; then
fi
echo
$ac_n
"checking if
\$
CC groks Altivec inline assembly""...
$ac_c
"
1>&6
echo
"configure:36
33
: checking if
\$
CC groks Altivec inline assembly"
>
&5
echo
"configure:36
88
: checking if
\$
CC groks Altivec inline assembly"
>
&5
if
eval
"test
\"
`
echo
'$''{'
ac_cv_altivec_inline
'+set}'
`
\"
= set"
;
then
echo
$ac_n
"(cached)
$ac_c
"
1>&6
else
cat
>
conftest.
$ac_ext
<<
EOF
#line 36
38
"configure"
#line 36
93
"configure"
#include "confdefs.h"
void quux(){asm("mtspr 256,%0"::"r"(-1));}
int main() {
; return 0; }
EOF
if
{
(
eval echo
configure:3
645
:
\"
$ac_compile
\"
)
1>&5
;
(
eval
$ac_compile
)
2>&5
;
}
;
then
if
{
(
eval echo
configure:3
700
:
\"
$ac_compile
\"
)
1>&5
;
(
eval
$ac_compile
)
2>&5
;
}
;
then
rm
-rf
conftest
*
ac_cv_altivec_inline
=
yes
else
...
...
@@ -3665,17 +3720,17 @@ for ac_hdr in winioctl.h
do
ac_safe
=
`
echo
"
$ac_hdr
"
|
sed
'y%./+-%__p_%'
`
echo
$ac_n
"checking for
$ac_hdr
""...
$ac_c
"
1>&6
echo
"configure:3
669
: checking for
$ac_hdr
"
>
&5
echo
"configure:3
724
: checking for
$ac_hdr
"
>
&5
if
eval
"test
\"
`
echo
'$''{'
ac_cv_header_
$ac_safe
'+set}'
`
\"
= set"
;
then
echo
$ac_n
"(cached)
$ac_c
"
1>&6
else
cat
>
conftest.
$ac_ext
<<
EOF
#line 3
674
"configure"
#line 3
729
"configure"
#include "confdefs.h"
#include <
$ac_hdr
>
EOF
ac_try
=
"
$ac_cpp
conftest.
$ac_ext
>/dev/null 2>conftest.out"
{
(
eval echo
configure:3
679
:
\"
$ac_try
\"
)
1>&5
;
(
eval
$ac_try
)
2>&5
;
}
{
(
eval echo
configure:3
734
:
\"
$ac_try
\"
)
1>&5
;
(
eval
$ac_try
)
2>&5
;
}
ac_err
=
`
grep
-v
'^ *+'
conftest.out |
grep
-v
"^conftest.
${
ac_ext
}
\$
"
`
if
test
-z
"
$ac_err
"
;
then
rm
-rf
conftest
*
...
...
@@ -3708,17 +3763,17 @@ for ac_hdr in sys/ioctl.h
do
ac_safe
=
`
echo
"
$ac_hdr
"
|
sed
'y%./+-%__p_%'
`
echo
$ac_n
"checking for
$ac_hdr
""...
$ac_c
"
1>&6
echo
"configure:37
12
: checking for
$ac_hdr
"
>
&5
echo
"configure:37
67
: checking for
$ac_hdr
"
>
&5
if
eval
"test
\"
`
echo
'$''{'
ac_cv_header_
$ac_safe
'+set}'
`
\"
= set"
;
then
echo
$ac_n
"(cached)
$ac_c
"
1>&6
else
cat
>
conftest.
$ac_ext
<<
EOF
#line 37
17
"configure"
#line 37
72
"configure"
#include "confdefs.h"
#include <
$ac_hdr
>
EOF
ac_try
=
"
$ac_cpp
conftest.
$ac_ext
>/dev/null 2>conftest.out"
{
(
eval echo
configure:37
22
:
\"
$ac_try
\"
)
1>&5
;
(
eval
$ac_try
)
2>&5
;
}
{
(
eval echo
configure:37
77
:
\"
$ac_try
\"
)
1>&5
;
(
eval
$ac_try
)
2>&5
;
}
ac_err
=
`
grep
-v
'^ *+'
conftest.out |
grep
-v
"^conftest.
${
ac_ext
}
\$
"
`
if
test
-z
"
$ac_err
"
;
then
rm
-rf
conftest
*
...
...
@@ -3744,17 +3799,17 @@ EOF
do
ac_safe
=
`
echo
"
$ac_hdr
"
|
sed
'y%./+-%__p_%'
`
echo
$ac_n
"checking for
$ac_hdr
""...
$ac_c
"
1>&6
echo
"configure:3
748
: checking for
$ac_hdr
"
>
&5
echo
"configure:3
803
: checking for
$ac_hdr
"
>
&5
if
eval
"test
\"
`
echo
'$''{'
ac_cv_header_
$ac_safe
'+set}'
`
\"
= set"
;
then
echo
$ac_n
"(cached)
$ac_c
"
1>&6
else
cat
>
conftest.
$ac_ext
<<
EOF
#line 3
753
"configure"
#line 3
808
"configure"
#include "confdefs.h"
#include <
$ac_hdr
>
EOF
ac_try
=
"
$ac_cpp
conftest.
$ac_ext
>/dev/null 2>conftest.out"
{
(
eval echo
configure:3
758
:
\"
$ac_try
\"
)
1>&5
;
(
eval
$ac_try
)
2>&5
;
}
{
(
eval echo
configure:3
813
:
\"
$ac_try
\"
)
1>&5
;
(
eval
$ac_try
)
2>&5
;
}
ac_err
=
`
grep
-v
'^ *+'
conftest.out |
grep
-v
"^conftest.
${
ac_ext
}
\$
"
`
if
test
-z
"
$ac_err
"
;
then
rm
-rf
conftest
*
...
...
@@ -3783,7 +3838,7 @@ done
BSD_DVD_STRUCT
=
0
LINUX_DVD_STRUCT
=
0
cat
>
conftest.
$ac_ext
<<
EOF
#line 3
787
"configure"
#line 3
842
"configure"
#include "confdefs.h"
#include <sys/dvdio.h>
EOF
...
...
@@ -3801,7 +3856,7 @@ fi
rm
-f
conftest
*
cat
>
conftest.
$ac_ext
<<
EOF
#line 38
05
"configure"
#line 38
60
"configure"
#include "confdefs.h"
#include <sys/cdio.h>
EOF
...
...
@@ -3819,7 +3874,7 @@ fi
rm
-f
conftest
*
cat
>
conftest.
$ac_ext
<<
EOF
#line 38
23
"configure"
#line 38
78
"configure"
#include "confdefs.h"
#include <linux/cdrom.h>
EOF
...
...
@@ -3838,7 +3893,7 @@ rm -f conftest*
NEED_BSDI_LIBDVD
=
0
cat
>
conftest.
$ac_ext
<<
EOF
#line 38
42
"configure"
#line 38
97
"configure"
#include "confdefs.h"
#include <dvd.h>
EOF
...
...
@@ -3860,17 +3915,17 @@ else
do
ac_safe
=
`
echo
"
$ac_hdr
"
|
sed
'y%./+-%__p_%'
`
echo
$ac_n
"checking for
$ac_hdr
""...
$ac_c
"
1>&6
echo
"configure:3
864
: checking for
$ac_hdr
"
>
&5
echo
"configure:3
919
: checking for
$ac_hdr
"
>
&5
if
eval
"test
\"
`
echo
'$''{'
ac_cv_header_
$ac_safe
'+set}'
`
\"
= set"
;
then
echo
$ac_n
"(cached)
$ac_c
"
1>&6
else
cat
>
conftest.
$ac_ext
<<
EOF
#line 3
869
"configure"
#line 3
924
"configure"
#include "confdefs.h"
#include <
$ac_hdr
>
EOF
ac_try
=
"
$ac_cpp
conftest.
$ac_ext
>/dev/null 2>conftest.out"
{
(
eval echo
configure:3
874
:
\"
$ac_try
\"
)
1>&5
;
(
eval
$ac_try
)
2>&5
;
}
{
(
eval echo
configure:3
929
:
\"
$ac_try
\"
)
1>&5
;
(
eval
$ac_try
)
2>&5
;
}
ac_err
=
`
grep
-v
'^ *+'
conftest.out |
grep
-v
"^conftest.
${
ac_ext
}
\$
"
`
if
test
-z
"
$ac_err
"
;
then
rm
-rf
conftest
*
...
...
@@ -3910,17 +3965,17 @@ rm -f conftest*
ac_safe
=
`
echo
"sys/scsi/scsi_types.h"
|
sed
'y%./+-%__p_%'
`
echo
$ac_n
"checking for sys/scsi/scsi_types.h""...
$ac_c
"
1>&6
echo
"configure:39
14
: checking for sys/scsi/scsi_types.h"
>
&5
echo
"configure:39
69
: checking for sys/scsi/scsi_types.h"
>
&5
if
eval
"test
\"
`
echo
'$''{'
ac_cv_header_
$ac_safe
'+set}'
`
\"
= set"
;
then
echo
$ac_n
"(cached)
$ac_c
"
1>&6
else
cat
>
conftest.
$ac_ext
<<
EOF
#line 39
19
"configure"
#line 39
74
"configure"
#include "confdefs.h"
#include <sys/scsi/scsi_types.h>
EOF
ac_try
=
"
$ac_cpp
conftest.
$ac_ext
>/dev/null 2>conftest.out"
{
(
eval echo
configure:39
24
:
\"
$ac_try
\"
)
1>&5
;
(
eval
$ac_try
)
2>&5
;
}
{
(
eval echo
configure:39
79
:
\"
$ac_try
\"
)
1>&5
;
(
eval
$ac_try
)
2>&5
;
}
ac_err
=
`
grep
-v
'^ *+'
conftest.out |
grep
-v
"^conftest.
${
ac_ext
}
\$
"
`
if
test
-z
"
$ac_err
"
;
then
rm
-rf
conftest
*
...
...
@@ -3939,17 +3994,17 @@ if eval "test \"`echo '$ac_cv_header_'$ac_safe`\" = yes"; then
ac_safe
=
`
echo
"sys/scsi/impl/uscsi.h"
|
sed
'y%./+-%__p_%'
`
echo
$ac_n
"checking for sys/scsi/impl/uscsi.h""...
$ac_c
"
1>&6
echo
"configure:39
43
: checking for sys/scsi/impl/uscsi.h"
>
&5
echo
"configure:39
98
: checking for sys/scsi/impl/uscsi.h"
>
&5
if
eval
"test
\"
`
echo
'$''{'
ac_cv_header_
$ac_safe
'+set}'
`
\"
= set"
;
then
echo
$ac_n
"(cached)
$ac_c
"
1>&6
else
cat
>
conftest.
$ac_ext
<<
EOF
#line
3948
"configure"
#line
4003
"configure"
#include "confdefs.h"
#include <sys/scsi/impl/uscsi.h>
EOF
ac_try
=
"
$ac_cpp
conftest.
$ac_ext
>/dev/null 2>conftest.out"
{
(
eval echo
configure:
3953
:
\"
$ac_try
\"
)
1>&5
;
(
eval
$ac_try
)
2>&5
;
}
{
(
eval echo
configure:
4008
:
\"
$ac_try
\"
)
1>&5
;
(
eval
$ac_try
)
2>&5
;
}
ac_err
=
`
grep
-v
'^ *+'
conftest.out |
grep
-v
"^conftest.
${
ac_ext
}
\$
"
`
if
test
-z
"
$ac_err
"
;
then
rm
-rf
conftest
*
...
...
@@ -4103,7 +4158,7 @@ if test "${enable_pth+set}" = set; then
enableval
=
"
$enable_pth
"
if
test
x
$enableval
=
xyes
;
then
echo
$ac_n
"checking for pth_init in -lpth""...
$ac_c
"
1>&6
echo
"configure:41
07
: checking for pth_init in -lpth"
>
&5
echo
"configure:41
62
: checking for pth_init in -lpth"
>
&5
ac_lib_var
=
`
echo
pth
'_'
pth_init |
sed
'y%./+-%__p_%'
`
if
eval
"test
\"
`
echo
'$''{'
ac_cv_lib_
$ac_lib_var
'+set}'
`
\"
= set"
;
then
echo
$ac_n
"(cached)
$ac_c
"
1>&6
...
...
@@ -4111,7 +4166,7 @@ else
ac_save_LIBS
=
"
$LIBS
"
LIBS
=
"-lpth
$LIBS
"
cat
>
conftest.
$ac_ext
<<
EOF
#line 41
15
"configure"
#line 41
70
"configure"
#include "confdefs.h"
/* Override any gcc2 internal prototype to avoid an error. */
/* We use char because int might match the return type of a gcc2
...
...
@@ -4122,7 +4177,7 @@ int main() {
pth_init()
; return 0; }
EOF
if
{
(
eval echo
configure:41
26
:
\"
$ac_link
\"
)
1>&5
;
(
eval
$ac_link
)
2>&5
;
}
&&
test
-s
conftest
${
ac_exeext
}
;
then
if
{
(
eval echo
configure:41
81
:
\"
$ac_link
\"
)
1>&5
;
(
eval
$ac_link
)
2>&5
;
}
&&
test
-s
conftest
${
ac_exeext
}
;
then
rm
-rf
conftest
*
eval
"ac_cv_lib_
$ac_lib_var
=yes"
else
...
...
@@ -4150,7 +4205,7 @@ else
fi
cat
>
conftest.
$ac_ext
<<
EOF
#line 4
154
"configure"
#line 4
209
"configure"
#include "confdefs.h"
#include <pth.h>
EOF
...
...
@@ -4314,7 +4369,7 @@ if test "${enable_esd+set}" = set; then
# Extract the first word of "esd-config", so it can be a program name with args.
set
dummy esd-config
;
ac_word
=
$2
echo
$ac_n
"checking for
$ac_word
""...
$ac_c
"
1>&6
echo
"configure:43
18
: checking for
$ac_word
"
>
&5
echo
"configure:43
73
: checking for
$ac_word
"
>
&5
if
eval
"test
\"
`
echo
'$''{'
ac_cv_path_ESD_CONFIG
'+set}'
`
\"
= set"
;
then
echo
$ac_n
"(cached)
$ac_c
"
1>&6
else
...
...
@@ -4382,17 +4437,17 @@ else
do
ac_safe
=
`
echo
"
$ac_hdr
"
|
sed
'y%./+-%__p_%'
`
echo
$ac_n
"checking for
$ac_hdr
""...
$ac_c
"
1>&6
echo
"configure:4
386
: checking for
$ac_hdr
"
>
&5
echo
"configure:4
441
: checking for
$ac_hdr
"
>
&5
if
eval
"test
\"
`
echo
'$''{'
ac_cv_header_
$ac_safe
'+set}'
`
\"
= set"
;
then
echo
$ac_n
"(cached)
$ac_c
"
1>&6
else
cat
>
conftest.
$ac_ext
<<
EOF
#line 4
391
"configure"
#line 4
446
"configure"
#include "confdefs.h"
#include <
$ac_hdr
>
EOF
ac_try
=
"
$ac_cpp
conftest.
$ac_ext
>/dev/null 2>conftest.out"
{
(
eval echo
configure:4
396
:
\"
$ac_try
\"
)
1>&5
;
(
eval
$ac_try
)
2>&5
;
}
{
(
eval echo
configure:4
451
:
\"
$ac_try
\"
)
1>&5
;
(
eval
$ac_try
)
2>&5
;
}
ac_err
=
`
grep
-v
'^ *+'
conftest.out |
grep
-v
"^conftest.
${
ac_ext
}
\$
"
`
if
test
-z
"
$ac_err
"
;
then
rm
-rf
conftest
*
...
...
@@ -4438,17 +4493,17 @@ fi
do
ac_safe
=
`
echo
"
$ac_hdr
"
|
sed
'y%./+-%__p_%'
`
echo
$ac_n
"checking for
$ac_hdr
""...
$ac_c
"
1>&6
echo
"configure:44
42
: checking for
$ac_hdr
"
>
&5
echo
"configure:44
97
: checking for
$ac_hdr
"
>
&5
if
eval
"test
\"
`
echo
'$''{'
ac_cv_header_
$ac_safe
'+set}'
`
\"
= set"
;
then
echo
$ac_n
"(cached)
$ac_c
"
1>&6
else
cat
>
conftest.
$ac_ext
<<
EOF
#line 4
447
"configure"
#line 4
502
"configure"
#include "confdefs.h"
#include <
$ac_hdr
>
EOF
ac_try
=
"
$ac_cpp
conftest.
$ac_ext
>/dev/null 2>conftest.out"
{
(
eval echo
configure:4
452
:
\"
$ac_try
\"
)
1>&5
;
(
eval
$ac_try
)
2>&5
;
}
{
(
eval echo
configure:4
507
:
\"
$ac_try
\"
)
1>&5
;
(
eval
$ac_try
)
2>&5
;
}
ac_err
=
`
grep
-v
'^ *+'
conftest.out |
grep
-v
"^conftest.
${
ac_ext
}
\$
"
`
if
test
-z
"
$ac_err
"
;
then
rm
-rf
conftest
*
...
...
@@ -4526,7 +4581,7 @@ fi
# Extract the first word of "sdl12-config", so it can be a program name with args.
set
dummy sdl12-config
;
ac_word
=
$2
echo
$ac_n
"checking for
$ac_word
""...
$ac_c
"
1>&6
echo
"configure:45
30
: checking for
$ac_word
"
>
&5
echo
"configure:45
85
: checking for
$ac_word
"
>
&5
if
eval
"test
\"
`
echo
'$''{'
ac_cv_path_SDL12_CONFIG
'+set}'
`
\"
= set"
;
then
echo
$ac_n
"(cached)
$ac_c
"
1>&6
else
...
...
@@ -4566,7 +4621,7 @@ fi
# Extract the first word of "sdl11-config", so it can be a program name with args.
set
dummy sdl11-config
;
ac_word
=
$2
echo
$ac_n
"checking for
$ac_word
""...
$ac_c
"
1>&6
echo
"configure:4
570
: checking for
$ac_word
"
>
&5
echo
"configure:4
625
: checking for
$ac_word
"
>
&5
if
eval
"test
\"
`
echo
'$''{'
ac_cv_path_SDL11_CONFIG
'+set}'
`
\"
= set"
;
then
echo
$ac_n
"(cached)
$ac_c
"
1>&6
else
...
...
@@ -4607,7 +4662,7 @@ fi
# Extract the first word of "sdl-config", so it can be a program name with args.
set
dummy sdl-config
;
ac_word
=
$2
echo
$ac_n
"checking for
$ac_word
""...
$ac_c
"
1>&6
echo
"configure:46
11
: checking for
$ac_word
"
>
&5
echo
"configure:46
66
: checking for
$ac_word
"
>
&5
if
eval
"test
\"
`
echo
'$''{'
ac_cv_path_SDL_CONFIG
'+set}'
`
\"
= set"
;
then
echo
$ac_n
"(cached)
$ac_c
"
1>&6
else
...
...
@@ -4653,17 +4708,17 @@ fi
do
ac_safe
=
`
echo
"
$ac_hdr
"
|
sed
'y%./+-%__p_%'
`
echo
$ac_n
"checking for
$ac_hdr
""...
$ac_c
"
1>&6
echo
"configure:4
657
: checking for
$ac_hdr
"
>
&5
echo
"configure:4
712
: checking for
$ac_hdr
"
>
&5
if
eval
"test
\"
`
echo
'$''{'
ac_cv_header_
$ac_safe
'+set}'
`
\"
= set"
;
then
echo
$ac_n
"(cached)
$ac_c
"
1>&6
else
cat
>
conftest.
$ac_ext
<<
EOF
#line 4
662
"configure"
#line 4
717
"configure"
#include "confdefs.h"
#include <
$ac_hdr
>
EOF
ac_try
=
"
$ac_cpp
conftest.
$ac_ext
>/dev/null 2>conftest.out"
{
(
eval echo
configure:4
667
:
\"
$ac_try
\"
)
1>&5
;
(
eval
$ac_try
)
2>&5
;
}
{
(
eval echo
configure:4
722
:
\"
$ac_try
\"
)
1>&5
;
(
eval
$ac_try
)
2>&5
;
}
ac_err
=
`
grep
-v
'^ *+'
conftest.out |
grep
-v
"^conftest.
${
ac_ext
}
\$
"
`
if
test
-z
"
$ac_err
"
;
then
rm
-rf
conftest
*
...
...
@@ -4726,17 +4781,17 @@ if test "${with_directx+set}" = set; then
do
ac_safe
=
`
echo
"
$ac_hdr
"
|
sed
'y%./+-%__p_%'
`
echo
$ac_n
"checking for
$ac_hdr
""...
$ac_c
"
1>&6
echo
"configure:47
30
: checking for
$ac_hdr
"
>
&5
echo
"configure:47
85
: checking for
$ac_hdr
"
>
&5
if
eval
"test
\"
`
echo
'$''{'
ac_cv_header_
$ac_safe
'+set}'
`
\"
= set"
;
then
echo
$ac_n
"(cached)
$ac_c
"
1>&6
else
cat
>
conftest.
$ac_ext
<<
EOF
#line 47
35
"configure"
#line 47
90
"configure"
#include "confdefs.h"
#include <
$ac_hdr
>
EOF
ac_try
=
"
$ac_cpp
conftest.
$ac_ext
>/dev/null 2>conftest.out"
{
(
eval echo
configure:47
40
:
\"
$ac_try
\"
)
1>&5
;
(
eval
$ac_try
)
2>&5
;
}
{
(
eval echo
configure:47
95
:
\"
$ac_try
\"
)
1>&5
;
(
eval
$ac_try
)
2>&5
;
}
ac_err
=
`
grep
-v
'^ *+'
conftest.out |
grep
-v
"^conftest.
${
ac_ext
}
\$
"
`
if
test
-z
"
$ac_err
"
;
then
rm
-rf
conftest
*
...
...
@@ -4775,17 +4830,17 @@ fi
do
ac_safe
=
`
echo
"
$ac_hdr
"
|
sed
'y%./+-%__p_%'
`
echo
$ac_n
"checking for
$ac_hdr
""...
$ac_c
"
1>&6
echo
"configure:4
779
: checking for
$ac_hdr
"
>
&5
echo
"configure:4
834
: checking for
$ac_hdr
"
>
&5
if
eval
"test
\"
`
echo
'$''{'
ac_cv_header_
$ac_safe
'+set}'
`
\"
= set"
;
then
echo
$ac_n
"(cached)
$ac_c
"
1>&6
else
cat
>
conftest.
$ac_ext
<<
EOF
#line 4
784
"configure"
#line 4
839
"configure"
#include "confdefs.h"
#include <
$ac_hdr
>
EOF
ac_try
=
"
$ac_cpp
conftest.
$ac_ext
>/dev/null 2>conftest.out"
{
(
eval echo
configure:4
789
:
\"
$ac_try
\"
)
1>&5
;
(
eval
$ac_try
)
2>&5
;
}
{
(
eval echo
configure:4
844
:
\"
$ac_try
\"
)
1>&5
;
(
eval
$ac_try
)
2>&5
;
}
ac_err
=
`
grep
-v
'^ *+'
conftest.out |
grep
-v
"^conftest.
${
ac_ext
}
\$
"
`
if
test
-z
"
$ac_err
"
;
then
rm
-rf
conftest
*
...
...
@@ -4882,7 +4937,7 @@ if test "${enable_gnome+set}" = set; then
# Extract the first word of "gnome-config", so it can be a program name with args.
set
dummy gnome-config
;
ac_word
=
$2
echo
$ac_n
"checking for
$ac_word
""...
$ac_c
"
1>&6
echo
"configure:4
886
: checking for
$ac_word
"
>
&5
echo
"configure:4
941
: checking for
$ac_word
"
>
&5
if
eval
"test
\"
`
echo
'$''{'
ac_cv_path_GNOME_CONFIG
'+set}'
`
\"
= set"
;
then
echo
$ac_n
"(cached)
$ac_c
"
1>&6
else
...
...
@@ -4927,17 +4982,17 @@ fi
do
ac_safe
=
`
echo
"
$ac_hdr
"
|
sed
'y%./+-%__p_%'
`
echo
$ac_n
"checking for
$ac_hdr
""...
$ac_c
"
1>&6
echo
"configure:49
31
: checking for
$ac_hdr
"
>
&5
echo
"configure:49
86
: checking for
$ac_hdr
"
>
&5
if
eval
"test
\"
`
echo
'$''{'
ac_cv_header_
$ac_safe
'+set}'
`
\"
= set"
;
then
echo
$ac_n
"(cached)
$ac_c
"
1>&6
else
cat
>
conftest.
$ac_ext
<<
EOF
#line 49
36
"configure"
#line 49
91
"configure"
#include "confdefs.h"
#include <
$ac_hdr
>
EOF
ac_try
=
"
$ac_cpp
conftest.
$ac_ext
>/dev/null 2>conftest.out"
{
(
eval echo
configure:49
41
:
\"
$ac_try
\"
)
1>&5
;
(
eval
$ac_try
)
2>&5
;
}
{
(
eval echo
configure:49
96
:
\"
$ac_try
\"
)
1>&5
;
(
eval
$ac_try
)
2>&5
;
}
ac_err
=
`
grep
-v
'^ *+'
conftest.out |
grep
-v
"^conftest.
${
ac_ext
}
\$
"
`
if
test
-z
"
$ac_err
"
;
then
rm
-rf
conftest
*
...
...
@@ -4987,7 +5042,7 @@ then
# Extract the first word of "gtk-config", so it can be a program name with args.
set
dummy gtk-config
;
ac_word
=
$2
echo
$ac_n
"checking for
$ac_word
""...
$ac_c
"
1>&6
echo
"configure:
4991
: checking for
$ac_word
"
>
&5
echo
"configure:
5046
: checking for
$ac_word
"
>
&5
if
eval
"test
\"
`
echo
'$''{'
ac_cv_path_GTK_CONFIG
'+set}'
`
\"
= set"
;
then
echo
$ac_n
"(cached)
$ac_c
"
1>&6
else
...
...
@@ -5032,17 +5087,17 @@ fi
do
ac_safe
=
`
echo
"
$ac_hdr
"
|
sed
'y%./+-%__p_%'
`
echo
$ac_n
"checking for
$ac_hdr
""...
$ac_c
"
1>&6
echo
"configure:50
36
: checking for
$ac_hdr
"
>
&5
echo
"configure:50
91
: checking for
$ac_hdr
"
>
&5
if
eval
"test
\"
`
echo
'$''{'
ac_cv_header_
$ac_safe
'+set}'
`
\"
= set"
;
then
echo
$ac_n
"(cached)
$ac_c
"
1>&6
else
cat
>
conftest.
$ac_ext
<<
EOF
#line 50
41
"configure"
#line 50
96
"configure"
#include "confdefs.h"
#include <
$ac_hdr
>
EOF
ac_try
=
"
$ac_cpp
conftest.
$ac_ext
>/dev/null 2>conftest.out"
{
(
eval echo
configure:5
046
:
\"
$ac_try
\"
)
1>&5
;
(
eval
$ac_try
)
2>&5
;
}
{
(
eval echo
configure:5
101
:
\"
$ac_try
\"
)
1>&5
;
(
eval
$ac_try
)
2>&5
;
}
ac_err
=
`
grep
-v
'^ *+'
conftest.out |
grep
-v
"^conftest.
${
ac_ext
}
\$
"
`
if
test
-z
"
$ac_err
"
;
then
rm
-rf
conftest
*
...
...
@@ -5093,17 +5148,17 @@ if test x$enable_x11 != xno; then
do
ac_safe
=
`
echo
"
$ac_hdr
"
|
sed
'y%./+-%__p_%'
`
echo
$ac_n
"checking for
$ac_hdr
""...
$ac_c
"
1>&6
echo
"configure:5
097
: checking for
$ac_hdr
"
>
&5
echo
"configure:5
152
: checking for
$ac_hdr
"
>
&5
if
eval
"test
\"
`
echo
'$''{'
ac_cv_header_
$ac_safe
'+set}'
`
\"
= set"
;
then
echo
$ac_n
"(cached)
$ac_c
"
1>&6
else
cat
>
conftest.
$ac_ext
<<
EOF
#line 51
02
"configure"
#line 51
57
"configure"
#include "confdefs.h"
#include <
$ac_hdr
>
EOF
ac_try
=
"
$ac_cpp
conftest.
$ac_ext
>/dev/null 2>conftest.out"
{
(
eval echo
configure:51
07
:
\"
$ac_try
\"
)
1>&5
;
(
eval
$ac_try
)
2>&5
;
}
{
(
eval echo
configure:51
62
:
\"
$ac_try
\"
)
1>&5
;
(
eval
$ac_try
)
2>&5
;
}
ac_err
=
`
grep
-v
'^ *+'
conftest.out |
grep
-v
"^conftest.
${
ac_ext
}
\$
"
`
if
test
-z
"
$ac_err
"
;
then
rm
-rf
conftest
*
...
...
@@ -5155,17 +5210,17 @@ if test x$enable_xvideo != xno; then
do
ac_safe
=
`
echo
"
$ac_hdr
"
|
sed
'y%./+-%__p_%'
`
echo
$ac_n
"checking for
$ac_hdr
""...
$ac_c
"
1>&6
echo
"configure:5
159
: checking for
$ac_hdr
"
>
&5
echo
"configure:5
214
: checking for
$ac_hdr
"
>
&5
if
eval
"test
\"
`
echo
'$''{'
ac_cv_header_
$ac_safe
'+set}'
`
\"
= set"
;
then
echo
$ac_n
"(cached)
$ac_c
"
1>&6
else
cat
>
conftest.
$ac_ext
<<
EOF
#line 5
164
"configure"
#line 5
219
"configure"
#include "confdefs.h"
#include <
$ac_hdr
>
EOF
ac_try
=
"
$ac_cpp
conftest.
$ac_ext
>/dev/null 2>conftest.out"
{
(
eval echo
configure:5
169
:
\"
$ac_try
\"
)
1>&5
;
(
eval
$ac_try
)
2>&5
;
}
{
(
eval echo
configure:5
224
:
\"
$ac_try
\"
)
1>&5
;
(
eval
$ac_try
)
2>&5
;
}
ac_err
=
`
grep
-v
'^ *+'
conftest.out |
grep
-v
"^conftest.
${
ac_ext
}
\$
"
`
if
test
-z
"
$ac_err
"
;
then
rm
-rf
conftest
*
...
...
@@ -5205,17 +5260,17 @@ if test "${enable_alsa+set}" = set; then
then
ac_safe
=
`
echo
"sys/asoundlib.h"
|
sed
'y%./+-%__p_%'
`
echo
$ac_n
"checking for sys/asoundlib.h""...
$ac_c
"
1>&6
echo
"configure:52
09
: checking for sys/asoundlib.h"
>
&5
echo
"configure:52
64
: checking for sys/asoundlib.h"
>
&5
if
eval
"test
\"
`
echo
'$''{'
ac_cv_header_
$ac_safe
'+set}'
`
\"
= set"
;
then
echo
$ac_n
"(cached)
$ac_c
"
1>&6
else
cat
>
conftest.
$ac_ext
<<
EOF
#line 52
14
"configure"
#line 52
69
"configure"
#include "confdefs.h"
#include <sys/asoundlib.h>
EOF
ac_try
=
"
$ac_cpp
conftest.
$ac_ext
>/dev/null 2>conftest.out"
{
(
eval echo
configure:52
19
:
\"
$ac_try
\"
)
1>&5
;
(
eval
$ac_try
)
2>&5
;
}
{
(
eval echo
configure:52
74
:
\"
$ac_try
\"
)
1>&5
;
(
eval
$ac_try
)
2>&5
;
}
ac_err
=
`
grep
-v
'^ *+'
conftest.out |
grep
-v
"^conftest.
${
ac_ext
}
\$
"
`
if
test
-z
"
$ac_err
"
;
then
rm
-rf
conftest
*
...
...
@@ -5232,7 +5287,7 @@ fi
if
eval
"test
\"
`
echo
'$ac_cv_header_'
$ac_safe
`
\"
= yes"
;
then
echo
"
$ac_t
""yes"
1>&6
echo
$ac_n
"checking for main in -lasound""...
$ac_c
"
1>&6
echo
"configure:52
36
: checking for main in -lasound"
>
&5
echo
"configure:52
91
: checking for main in -lasound"
>
&5
ac_lib_var
=
`
echo
asound
'_'
main |
sed
'y%./+-%__p_%'
`
if
eval
"test
\"
`
echo
'$''{'
ac_cv_lib_
$ac_lib_var
'+set}'
`
\"
= set"
;
then
echo
$ac_n
"(cached)
$ac_c
"
1>&6
...
...
@@ -5240,14 +5295,14 @@ else
ac_save_LIBS
=
"
$LIBS
"
LIBS
=
"-lasound
$LIBS
"
cat
>
conftest.
$ac_ext
<<
EOF
#line 52
44
"configure"
#line 52
99
"configure"
#include "confdefs.h"
int main() {
main()
; return 0; }
EOF
if
{
(
eval echo
configure:5
251
:
\"
$ac_link
\"
)
1>&5
;
(
eval
$ac_link
)
2>&5
;
}
&&
test
-s
conftest
${
ac_exeext
}
;
then
if
{
(
eval echo
configure:5
306
:
\"
$ac_link
\"
)
1>&5
;
(
eval
$ac_link
)
2>&5
;
}
&&
test
-s
conftest
${
ac_exeext
}
;
then
rm
-rf
conftest
*
eval
"ac_cv_lib_
$ac_lib_var
=yes"
else
...
...
configure.in
View file @
746e6074
...
...
@@ -56,6 +56,7 @@ AC_CHECK_FUNC(inet_aton,,[
])
AC_CHECK_FUNCS(vasprintf)
AC_CHECK_FUNCS(swab)
AC_CHECK_FUNCS(memalign)
AC_CHECK_FUNCS(sigrelse)
...
...
@@ -619,14 +620,12 @@ AC_ARG_ENABLE(macosx,
LIB_MACOSX="-framework CoreAudio -framework Carbon -framework AGL"
LIB_TS="${LIB_TS} -framework AGL -framework Carbon"
LIB_SDL="${LIB_SDL} -framework AGL -framework Carbon"
LIB_ALTIVEC="-framework vecLib"
fi],
[AC_CHECK_HEADERS(Carbon/Carbon.h,
BUILTINS="${BUILTINS} macosx"
LIB_MACOSX="-framework CoreAudio -framework Carbon -framework AGL"
LIB_TS="${LIB_TS} -framework AGL -framework Carbon"
LIB_SDL="${LIB_SDL} -framework AGL -framework Carbon"
LIB_ALTIVEC="-framework vecLib"
)])
dnl
...
...
@@ -959,7 +958,6 @@ AC_SUBST(LIB_GGI)
AC_SUBST(LIB_GLIDE)
AC_SUBST(LIB_GNOME)
AC_SUBST(LIB_GTK)
AC_SUBST(LIB_ALTIVEC)
AC_SUBST(LIB_LIBDVDCSS)
AC_SUBST(LIB_KDE)
AC_SUBST(LIB_MACOSX)
...
...
include/common.h
View file @
746e6074
...
...
@@ -3,7 +3,7 @@
* Collection of useful common types and macros definitions
*****************************************************************************
* Copyright (C) 1998, 1999, 2000 VideoLAN
* $Id: common.h,v 1.
39 2001/08/22 17:21:45
massiot Exp $
* $Id: common.h,v 1.
40 2001/09/25 11:46:13
massiot Exp $
*
* Authors: Samuel Hocevar <sam@via.ecp.fr>
* Vincent Seguin <seguin@via.ecp.fr>
...
...
@@ -199,6 +199,15 @@ struct pgrm_descriptor_s;
# define ATTR_ALIGN(align)
#endif
/* Alignment of critical dynamic data structure */
#ifdef HAVE_MEMALIGN
/* Some systems have memalign() but no declaration for it */
void
*
memalign
(
size_t
align
,
size_t
size
);
#else
/* Assume malloc alignment is sufficient */
# define memalign(align,size) malloc(size)
#endif
/* win32, cl and icl support */
#if defined( _MSC_VER )
# define __attribute__(x)
...
...
include/defs.h.in
View file @
746e6074
...
...
@@ -28,6 +28,9 @@
/* Define if you have the gettimeofday function. */
#undef HAVE_GETTIMEOFDAY
/* Define if you have the memalign function. */
#undef HAVE_MEMALIGN
/* Define if you have the putenv function. */
#undef HAVE_PUTENV
...
...
@@ -94,6 +97,9 @@
/* Define if you have the <getopt.h> header file. */
#undef HAVE_GETOPT_H
/* Define if you have the <gnome.h> header file. */
#undef HAVE_GNOME_H
/* Define if you have the <gtk/gtk.h> header file. */
#undef HAVE_GTK_GTK_H
...
...
include/vdec_ext-plugins.h
View file @
746e6074
...
...
@@ -2,7 +2,7 @@
* vdec_ext-plugins.h : structures from the video decoder exported to plug-ins
*****************************************************************************
* Copyright (C) 1999, 2000 VideoLAN
* $Id: vdec_ext-plugins.h,v 1.
4 2001/09/05 16:07:49
massiot Exp $
* $Id: vdec_ext-plugins.h,v 1.
5 2001/09/25 11:46:13
massiot Exp $
*
* Authors: Christophe Massiot <massiot@via.ecp.fr>
*
...
...
@@ -27,7 +27,8 @@
*****************************************************************************/
typedef
struct
idct_inner_s
{
dctelem_t
pi_block
[
64
];
/* block */
/* Should be kept aligned ! */
dctelem_t
*
pi_block
;
/* block */
void
(
*
pf_idct
)
(
dctelem_t
*
,
yuv_data_t
*
,
int
,
void
*
,
int
);
/* sparse IDCT or not, add or copy ? */
...
...
plugins/idct/Makefile
View file @
746e6074
...
...
@@ -12,17 +12,15 @@ PLUGIN_IDCTCLASSIC = idctclassic.o
PLUGIN_IDCTMMX
=
idctmmx.o
PLUGIN_IDCTMMXEXT
=
idctmmxext.o
PLUGIN_IDCTALTIVEC
=
idctaltivec.o
PLUGIN_IDCTALTIVECASM
=
idctaltivecasm.o
BUILTIN_IDCT
=
$(PLUGIN_IDCT:%.o=BUILTIN_IDCT_%.o)
BUILTIN_IDCTCLASSIC
=
$(PLUGIN_IDCTCLASSIC:%.o=BUILTIN_IDCTCLASSIC_%.o)
BUILTIN_IDCTMMX
=
$(PLUGIN_IDCTMMX:%.o=BUILTIN_IDCTMMX_%.o)
BUILTIN_IDCTMMXEXT
=
$(PLUGIN_IDCTMMXEXT:%.o=BUILTIN_IDCTMMXEXT_%.o)
BUILTIN_IDCTALTIVEC
=
$(PLUGIN_IDCTALTIVEC:%.o=BUILTIN_IDCTALTIVEC_%.o)
BUILTIN_IDCTALTIVECASM
=
$(PLUGIN_IDCTALTIVECASM:%.o=BUILTIN_IDCTALTIVEC_%.o)
PLUGIN_C
=
$(PLUGIN_IDCT)
$(PLUGIN_IDCTCLASSIC)
$(PLUGIN_IDCTMMX)
$(PLUGIN_IDCTMMXEXT)
ALL_OBJ
=
$(PLUGIN_C)
$(
PLUGIN_IDCTALTIVEC)
$(
BUILTIN_IDCT)
$(BUILTIN_IDCTCLASSIC)
$(BUILTIN_IDCTMMX)
$(BUILTIN_IDCTMMXEXT)
$(BUILTIN_IDCTALTIVEC)
PLUGIN_C
=
$(PLUGIN_IDCT)
$(PLUGIN_IDCTCLASSIC)
$(PLUGIN_IDCTMMX)
$(PLUGIN_IDCTMMXEXT)
$(PLUGIN_IDCTALTIVEC)
ALL_OBJ
=
$(PLUGIN_C)
$(BUILTIN_IDCT)
$(BUILTIN_IDCTCLASSIC)
$(BUILTIN_IDCTMMX)
$(BUILTIN_IDCTMMXEXT)
$(BUILTIN_IDCTALTIVEC)
#
# Virtual targets
...
...
@@ -30,13 +28,6 @@ ALL_OBJ = $(PLUGIN_C) $(PLUGIN_IDCTALTIVEC) $(BUILTIN_IDCT) $(BUILTIN_IDCTCLASSI
include
../../Makefile.modules
$(PLUGIN_IDCTALTIVEC)
:
%.o: .dep/%.d
$(PLUGIN_IDCTALTIVEC)
:
%.o: %.c
$(CC)
$(CFLAGS)
-DPLUGIN
$(PCFLAGS)
-faltivec
-c
-o
$@
$<
$(PLUGIN_IDCTALTIVECASM)
:
%.o: %.S
$(CC)
$(CFLAGS)
-DPLUGIN
$(PCFLAGS)
-faltivec
-c
-o
$@
$<
$(BUILTIN_IDCT)
:
BUILTIN_IDCT_%.o: .dep/%.d
$(BUILTIN_IDCT)
:
BUILTIN_IDCT_%.o: %.c
$(CC)
$(CFLAGS)
-DBUILTIN
-DMODULE_NAME
=
idct
-c
-o
$@
$<
...
...
@@ -55,10 +46,7 @@ $(BUILTIN_IDCTMMXEXT): BUILTIN_IDCTMMXEXT_%.o: %.c
$(BUILTIN_IDCTALTIVEC)
:
BUILTIN_IDCTALTIVEC_%.o: .dep/%.d
$(BUILTIN_IDCTALTIVEC)
:
BUILTIN_IDCTALTIVEC_%.o: %.c
$(CC)
$(CFLAGS)
-DBUILTIN
-DMODULE_NAME
=
idctaltivec
-faltivec
-c
-o
$@
$<
$(BUILTIN_IDCTALTIVECASM)
:
BUILTIN_IDCTALTIVEC_%.o: %.S
$(CC)
$(CFLAGS)
-DBUILTIN
-DMODULE_NAME
=
idctaltivec
-faltivec
-c
-o
$@
$<
$(CC)
$(CFLAGS)
-DBUILTIN
-DMODULE_NAME
=
idctaltivec
-c
-o
$@
$<
#
# Real targets
...
...
@@ -92,10 +80,10 @@ $(BUILTIN_IDCTALTIVECASM): BUILTIN_IDCTALTIVEC_%.o: %.S
ar r
$@
$^
$(RANLIB)
$@
../idctaltivec.so
:
$(PLUGIN_IDCTALTIVEC)
$(PLUGIN_IDCTALTIVECASM)
$(CC)
$(PCFLAGS)
-o
$@
$^
$(PLCFLAGS)
$(LIB_ALTIVEC)
../idctaltivec.so
:
$(PLUGIN_IDCTALTIVEC)
$(CC)
$(PCFLAGS)
-o
$@
$^
$(PLCFLAGS)
../idctaltivec.a
:
$(BUILTIN_IDCTALTIVEC)
$(BUILTIN_IDCTALTIVECASM)
../idctaltivec.a
:
$(BUILTIN_IDCTALTIVEC)
ar r
$@
$^
$(RANLIB)
$@
plugins/idct/idctaltivec.c
View file @
746e6074
...
...
@@ -2,7 +2,7 @@
* idctaltivec.c : Altivec IDCT module
*****************************************************************************
* Copyright (C) 1999, 2000 VideoLAN
* $Id: idctaltivec.c,v 1.1
4 2001/09/11 22:22:31
massiot Exp $
* $Id: idctaltivec.c,v 1.1
5 2001/09/25 11:46:14
massiot Exp $
*
* Authors: Christophe Massiot <massiot@via.ecp.fr>
*
...
...
@@ -21,6 +21,8 @@
* Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111, USA.
*****************************************************************************/
#ifndef __ALTIVEC__
#define MODULE_NAME idctaltivec
#include "modules_inner.h"
...
...
@@ -31,6 +33,7 @@
#include <stdlib.h>
#include <string.h>
#include <inttypes.h>
#include "config.h"
#include "common.h"
...
...
@@ -47,8 +50,6 @@
* Local prototypes.
*****************************************************************************/
static
void
idct_getfunctions
(
function_list_t
*
p_function_list
);
void
idct_block_copy_altivec
(
dctelem_t
*
,
yuv_data_t
*
,
int
,
void
*
,
int
);
void
idct_block_add_altivec
(
dctelem_t
*
,
yuv_data_t
*
,
int
,
void
*
,
int
);
/*****************************************************************************
* Build configuration tree.
...
...
@@ -93,16 +94,647 @@ static int idct_Probe( probedata_t *p_data )
}
/*****************************************************************************
*
Placeholders for unused functions
*
NormScan : This IDCT uses reordered coeffs, so we patch the scan table
*****************************************************************************/
static
void
NormScan
(
u8
ppi_scan
[
2
][
64
]
)
{
int
i
,
j
;
for
(
i
=
0
;
i
<
64
;
i
++
)
{
j
=
ppi_scan
[
0
][
i
];
ppi_scan
[
0
][
i
]
=
(
j
&
0x38
)
|
((
j
&
6
)
>>
1
)
|
((
j
&
1
)
<<
2
);
j
=
ppi_scan
[
1
][
i
];
ppi_scan
[
1
][
i
]
=
(
j
&
0x38
)
|
((
j
&
6
)
>>
1
)
|
((
j
&
1
)
<<
2
);
}
}
/*****************************************************************************
* Placeholders for unused functions
*****************************************************************************/
static
void
InitIDCT
(
void
**
pp_idct_data
)
{
}
/*****************************************************************************
* IDCT in Altivec
*****************************************************************************/
static
int16_t
constants
[
5
][
8
]
ATTR_ALIGN
(
16
)
=
{
{
23170
,
13573
,
6518
,
21895
,
-
23170
,
-
21895
,
32
,
31
},
{
16384
,
22725
,
21407
,
19266
,
16384
,
19266
,
21407
,
22725
},
{
22725
,
31521
,
29692
,
26722
,
22725
,
26722
,
29692
,
31521
},
{
21407
,
29692
,
27969
,
25172
,
21407
,
25172
,
27969
,
29692
},
{
19266
,
26722
,
25172
,
22654
,
19266
,
22654
,
25172
,
26722
}
};
/*
* The asm code is generated with:
*
* gcc-2.95 -fvec -D__ALTIVEC__ -O9 -fomit-frame-pointer -mregnames -S
* idct_altivec.c
*
* awk '{args=""; len=split ($2, arg, ",");
* for (i=1; i<=len; i++) { a=arg[i]; if (i<len) a=a",";
* args = args sprintf ("%-6s", a) }
* printf ("\t\"\t%-16s%-24s\\n\"\n", $1, args) }' idct_altivec.s |
* unexpand -a
*
* I then do some simple trimming on the function prolog/trailers
*/
void
idct_block_copy_altivec
(
int16_t
*
block
,
uint8_t
*
dest
,
int
stride
)
{
asm
(
"
\n
"
"# stwu %r1, -128(%r1)
\n
"
"# mflr %r0
\n
"
"# stw %r0, 132(%r1)
\n
"
"# addi %r0, %r1, 128
\n
"
"# bl _savev25
\n
"
" addi %r9, %r3, 112
\n
"
" vspltish %v25, 4
\n
"
" vxor %v13, %v13, %v13
\n
"
" lis %r10, constants@ha
\n
"
" lvx %v1, 0, %r9
\n
"
" la %r10, constants@l(%r10)
\n
"
" lvx %v5, 0, %r3
\n
"
" addi %r9, %r3, 16
\n
"
" lvx %v8, 0, %r10
\n
"
" addi %r11, %r10, 32
\n
"
" lvx %v12, 0, %r9
\n
"
" lvx %v6, 0, %r11
\n
"
" addi %r8, %r3, 48
\n
"
" vslh %v1, %v1, %v25
\n
"
" addi %r9, %r3, 80
\n
"
" lvx %v11, 0, %r8
\n
"
" vslh %v5, %v5, %v25
\n
"
" lvx %v0, 0, %r9
\n
"
" addi %r11, %r10, 64
\n
"
" vsplth %v3, %v8, 2
\n
"
" lvx %v7, 0, %r11
\n
"
" addi %r9, %r3, 96
\n
"
" vslh %v12, %v12, %v25
\n
"
" vmhraddshs %v27, %v1, %v6, %v13
\n
"
" addi %r8, %r3, 32
\n
"
" vsplth %v2, %v8, 5
\n
"
" lvx %v1, 0, %r9
\n
"
" vslh %v11, %v11, %v25
\n
"
" addi %r3, %r3, 64
\n
"
" lvx %v9, 0, %r8
\n
"
" addi %r9, %r10, 48
\n
"
" vslh %v0, %v0, %v25
\n
"
" lvx %v4, 0, %r9
\n
"
" vmhraddshs %v31, %v12, %v6, %v13
\n
"
" addi %r10, %r10, 16
\n
"
" vmhraddshs %v30, %v0, %v7, %v13
\n
"
" lvx %v10, 0, %r3
\n
"
" vsplth %v19, %v8, 3
\n
"
" vmhraddshs %v15, %v11, %v7, %v13
\n
"
" lvx %v12, 0, %r10
\n
"
" vsplth %v6, %v8, 4
\n
"
" vslh %v1, %v1, %v25
\n
"
" vsplth %v11, %v8, 1
\n
"
" li %r9, 4
\n
"
" vslh %v9, %v9, %v25
\n
"
" vsplth %v7, %v8, 0
\n
"
" vmhraddshs %v18, %v1, %v4, %v13
\n
"
" vspltw %v8, %v8, 3
\n
"
" vsubshs %v0, %v13, %v27
\n
"
" vmhraddshs %v1, %v9, %v4, %v13
\n
"
" vmhraddshs %v17, %v3, %v31, %v0
\n
"
" vmhraddshs %v4, %v2, %v15, %v30
\n
"
" vslh %v10, %v10, %v25
\n
"
" vmhraddshs %v9, %v5, %v12, %v13
\n
"
" vspltish %v25, 6
\n
"
" vmhraddshs %v5, %v10, %v12, %v13
\n
"
" vmhraddshs %v28, %v19, %v30, %v15
\n
"
" vmhraddshs %v27, %v3, %v27, %v31
\n
"
" vsubshs %v0, %v13, %v18
\n
"
" vmhraddshs %v18, %v11, %v18, %v1
\n
"
" vaddshs %v30, %v17, %v4
\n
"
" vmhraddshs %v12, %v11, %v1, %v0
\n
"
" vsubshs %v4, %v17, %v4
\n
"
" vaddshs %v10, %v9, %v5
\n
"
" vsubshs %v17, %v27, %v28
\n
"
" vaddshs %v27, %v27, %v28
\n
"
" vsubshs %v1, %v9, %v5
\n
"
" vaddshs %v28, %v10, %v18
\n
"
" vsubshs %v18, %v10, %v18
\n
"
" vaddshs %v10, %v1, %v12
\n
"
" vsubshs %v1, %v1, %v12
\n
"
" vsubshs %v12, %v17, %v4
\n
"
" vaddshs %v4, %v17, %v4
\n
"
" vmhraddshs %v5, %v7, %v12, %v1
\n
"
" vmhraddshs %v26, %v6, %v4, %v10
\n
"
" vmhraddshs %v29, %v6, %v12, %v1
\n
"
" vmhraddshs %v14, %v7, %v4, %v10
\n
"
" vsubshs %v12, %v18, %v30
\n
"
" vaddshs %v9, %v28, %v27
\n
"
" vaddshs %v16, %v18, %v30
\n
"
" vsubshs %v10, %v28, %v27
\n
"
" vmrglh %v31, %v9, %v12
\n
"
" vmrglh %v30, %v5, %v26
\n
"
" vmrglh %v15, %v14, %v29
\n
"
" vmrghh %v5, %v5, %v26
\n
"
" vmrglh %v27, %v16, %v10
\n
"
" vmrghh %v9, %v9, %v12
\n
"
" vmrghh %v18, %v16, %v10
\n
"
" vmrghh %v1, %v14, %v29
\n
"
" vmrglh %v14, %v9, %v5
\n
"
" vmrglh %v16, %v31, %v30
\n
"
" vmrglh %v10, %v15, %v27
\n
"
" vmrghh %v9, %v9, %v5
\n
"
" vmrghh %v26, %v15, %v27
\n
"
" vmrglh %v27, %v16, %v10
\n
"
" vmrghh %v12, %v1, %v18
\n
"
" vmrglh %v29, %v1, %v18
\n
"
" vsubshs %v0, %v13, %v27
\n
"
" vmrghh %v5, %v31, %v30
\n
"
" vmrglh %v31, %v9, %v12
\n
"
" vmrglh %v30, %v5, %v26
\n
"
" vmrglh %v15, %v14, %v29
\n
"
" vmhraddshs %v17, %v3, %v31, %v0
\n
"
" vmrghh %v18, %v16, %v10
\n
"
" vmhraddshs %v27, %v3, %v27, %v31
\n
"
" vmhraddshs %v4, %v2, %v15, %v30
\n
"
" vmrghh %v1, %v14, %v29
\n
"
" vmhraddshs %v28, %v19, %v30, %v15
\n
"
" vmrghh %v0, %v9, %v12
\n
"
" vsubshs %v13, %v13, %v18
\n
"
" vmrghh %v5, %v5, %v26
\n
"
" vmhraddshs %v18, %v11, %v18, %v1
\n
"
" vaddshs %v9, %v0, %v8
\n
"
" vaddshs %v30, %v17, %v4
\n
"
" vmhraddshs %v12, %v11, %v1, %v13
\n
"
" vsubshs %v4, %v17, %v4
\n
"
" vaddshs %v10, %v9, %v5
\n
"
" vsubshs %v17, %v27, %v28
\n
"
" vaddshs %v27, %v27, %v28
\n
"
" vsubshs %v1, %v9, %v5
\n
"
" vaddshs %v28, %v10, %v18
\n
"
" vsubshs %v18, %v10, %v18
\n
"
" vaddshs %v10, %v1, %v12
\n
"
" vsubshs %v1, %v1, %v12
\n
"
" vsubshs %v12, %v17, %v4
\n
"
" vaddshs %v4, %v17, %v4
\n
"
" vaddshs %v9, %v28, %v27
\n
"
" vmhraddshs %v14, %v7, %v4, %v10
\n
"
" vsrah %v9, %v9, %v25
\n
"
" vmhraddshs %v5, %v7, %v12, %v1
\n
"
" vpkshus %v0, %v9, %v9
\n
"
" vmhraddshs %v29, %v6, %v12, %v1
\n
"
" stvewx %v0, 0, %r4
\n
"
" vaddshs %v16, %v18, %v30
\n
"
" vsrah %v31, %v14, %v25
\n
"
" stvewx %v0, %r9, %r4
\n
"
" add %r4, %r4, %r5
\n
"
" vsrah %v15, %v16, %v25
\n
"
" vpkshus %v0, %v31, %v31
\n
"
" vsrah %v1, %v5, %v25
\n
"
" stvewx %v0, 0, %r4
\n
"
" vsubshs %v12, %v18, %v30
\n
"
" stvewx %v0, %r9, %r4
\n
"
" vmhraddshs %v26, %v6, %v4, %v10
\n
"
" vpkshus %v0, %v1, %v1
\n
"
" add %r4, %r4, %r5
\n
"
" vsrah %v5, %v12, %v25
\n
"
" stvewx %v0, 0, %r4
\n
"
" vsrah %v30, %v29, %v25
\n
"
" stvewx %v0, %r9, %r4
\n
"
" vsubshs %v10, %v28, %v27
\n
"
" vpkshus %v0, %v15, %v15
\n
"
" add %r4, %r4, %r5
\n
"
" stvewx %v0, 0, %r4
\n
"
" vsrah %v18, %v26, %v25
\n
"
" stvewx %v0, %r9, %r4
\n
"
" vsrah %v27, %v10, %v25
\n
"
" vpkshus %v0, %v5, %v5
\n
"
" add %r4, %r4, %r5
\n
"
" stvewx %v0, 0, %r4
\n
"
" stvewx %v0, %r9, %r4
\n
"
" vpkshus %v0, %v30, %v30
\n
"
" add %r4, %r4, %r5
\n
"
" stvewx %v0, 0, %r4
\n
"
" stvewx %v0, %r9, %r4
\n
"
" vpkshus %v0, %v18, %v18
\n
"
" add %r4, %r4, %r5
\n
"
" stvewx %v0, 0, %r4
\n
"
" stvewx %v0, %r9, %r4
\n
"
" add %r4, %r4, %r5
\n
"
" vpkshus %v0, %v27, %v27
\n
"
" stvewx %v0, 0, %r4
\n
"
" stvewx %v0, %r9, %r4
\n
"
"# addi %r0, %r1, 128
\n
"
"# bl _restv25
\n
"
"# lwz %r0, 132(%r1)
\n
"
"# mtlr %r0
\n
"
"# la %r1, 128(%r1)
\n
"
);
}
void
idct_block_add_altivec
(
int16_t
*
block
,
uint8_t
*
dest
,
int
stride
)
{
asm
(
"
\n
"
"# stwu %r1, -192(%r1)
\n
"
"# mflr %r0
\n
"
"# stw %r0, 196(%r1)
\n
"
"# addi %r0, %r1, 192
\n
"
"# bl _savev21
\n
"
" addi %r9, %r3, 112
\n
"
" vspltish %v21, 4
\n
"
" vxor %v1, %v1, %v1
\n
"
" lvx %v13, 0, %r9
\n
"
" lis %r10, constants@ha
\n
"
" vspltisw %v3, -1
\n
"
" la %r10, constants@l(%r10)
\n
"
" lvx %v5, 0, %r3
\n
"
" addi %r9, %r3, 16
\n
"
" lvx %v8, 0, %r10
\n
"
" lvx %v12, 0, %r9
\n
"
" addi %r11, %r10, 32
\n
"
" lvx %v6, 0, %r11
\n
"
" addi %r8, %r3, 48
\n
"
" vslh %v13, %v13, %v21
\n
"
" addi %r9, %r3, 80
\n
"
" lvx %v11, 0, %r8
\n
"
" vslh %v5, %v5, %v21
\n
"
" lvx %v0, 0, %r9
\n
"
" addi %r11, %r10, 64
\n
"
" vsplth %v2, %v8, 2
\n
"
" lvx %v7, 0, %r11
\n
"
" vslh %v12, %v12, %v21
\n
"
" addi %r9, %r3, 96
\n
"
" vmhraddshs %v24, %v13, %v6, %v1
\n
"
" addi %r8, %r3, 32
\n
"
" vsplth %v17, %v8, 5
\n
"
" lvx %v13, 0, %r9
\n
"
" vslh %v11, %v11, %v21
\n
"
" addi %r3, %r3, 64
\n
"
" lvx %v10, 0, %r8
\n
"
" vslh %v0, %v0, %v21
\n
"
" addi %r9, %r10, 48
\n
"
" vmhraddshs %v31, %v12, %v6, %v1
\n
"
" lvx %v4, 0, %r9
\n
"
" addi %r10, %r10, 16
\n
"
" vmhraddshs %v26, %v0, %v7, %v1
\n
"
" lvx %v9, 0, %r3
\n
"
" vsplth %v16, %v8, 3
\n
"
" vmhraddshs %v22, %v11, %v7, %v1
\n
"
" lvx %v6, 0, %r10
\n
"
" lvsl %v19, 0, %r4
\n
"
" vsubshs %v12, %v1, %v24
\n
"
" lvsl %v0, %r5, %r4
\n
"
" vsplth %v11, %v8, 1
\n
"
" vslh %v10, %v10, %v21
\n
"
" vmrghb %v19, %v3, %v19
\n
"
" lvx %v15, 0, %r4
\n
"
" vslh %v13, %v13, %v21
\n
"
" vmrghb %v3, %v3, %v0
\n
"
" li %r9, 4
\n
"
" vmhraddshs %v14, %v2, %v31, %v12
\n
"
" vsplth %v7, %v8, 0
\n
"
" vmhraddshs %v23, %v13, %v4, %v1
\n
"
" vsplth %v18, %v8, 4
\n
"
" vmhraddshs %v27, %v10, %v4, %v1
\n
"
" vspltw %v8, %v8, 3
\n
"
" vmhraddshs %v12, %v17, %v22, %v26
\n
"
" vperm %v15, %v15, %v1, %v19
\n
"
" vslh %v9, %v9, %v21
\n
"
" vmhraddshs %v10, %v5, %v6, %v1
\n
"
" vspltish %v21, 6
\n
"
" vmhraddshs %v30, %v9, %v6, %v1
\n
"
" vmhraddshs %v26, %v16, %v26, %v22
\n
"
" vmhraddshs %v24, %v2, %v24, %v31
\n
"
" vmhraddshs %v31, %v11, %v23, %v27
\n
"
" vsubshs %v0, %v1, %v23
\n
"
" vaddshs %v23, %v14, %v12
\n
"
" vmhraddshs %v9, %v11, %v27, %v0
\n
"
" vsubshs %v12, %v14, %v12
\n
"
" vaddshs %v6, %v10, %v30
\n
"
" vsubshs %v14, %v24, %v26
\n
"
" vaddshs %v24, %v24, %v26
\n
"
" vsubshs %v13, %v10, %v30
\n
"
" vaddshs %v26, %v6, %v31
\n
"
" vsubshs %v31, %v6, %v31
\n
"
" vaddshs %v6, %v13, %v9
\n
"
" vsubshs %v13, %v13, %v9
\n
"
" vsubshs %v9, %v14, %v12
\n
"
" vaddshs %v12, %v14, %v12
\n
"
" vmhraddshs %v30, %v7, %v9, %v13
\n
"
" vmhraddshs %v25, %v18, %v12, %v6
\n
"
" vmhraddshs %v28, %v18, %v9, %v13
\n
"
" vmhraddshs %v29, %v7, %v12, %v6
\n
"
" vaddshs %v10, %v26, %v24
\n
"
" vsubshs %v5, %v31, %v23
\n
"
" vsubshs %v13, %v26, %v24
\n
"
" vaddshs %v4, %v31, %v23
\n
"
" vmrglh %v26, %v30, %v25
\n
"
" vmrglh %v31, %v10, %v5
\n
"
" vmrglh %v22, %v29, %v28
\n
"
" vmrghh %v30, %v30, %v25
\n
"
" vmrglh %v24, %v4, %v13
\n
"
" vmrghh %v10, %v10, %v5
\n
"
" vmrghh %v23, %v4, %v13
\n
"
" vmrghh %v27, %v29, %v28
\n
"
" vmrglh %v29, %v10, %v30
\n
"
" vmrglh %v4, %v31, %v26
\n
"
" vmrglh %v13, %v22, %v24
\n
"
" vmrghh %v10, %v10, %v30
\n
"
" vmrghh %v25, %v22, %v24
\n
"
" vmrglh %v24, %v4, %v13
\n
"
" vmrghh %v5, %v27, %v23
\n
"
" vmrglh %v28, %v27, %v23
\n
"
" vsubshs %v0, %v1, %v24
\n
"
" vmrghh %v30, %v31, %v26
\n
"
" vmrglh %v31, %v10, %v5
\n
"
" vmrglh %v26, %v30, %v25
\n
"
" vmrglh %v22, %v29, %v28
\n
"
" vmhraddshs %v14, %v2, %v31, %v0
\n
"
" vmrghh %v23, %v4, %v13
\n
"
" vmhraddshs %v24, %v2, %v24, %v31
\n
"
" vmhraddshs %v12, %v17, %v22, %v26
\n
"
" vmrghh %v27, %v29, %v28
\n
"
" vmhraddshs %v26, %v16, %v26, %v22
\n
"
" vmrghh %v0, %v10, %v5
\n
"
" vmhraddshs %v31, %v11, %v23, %v27
\n
"
" vmrghh %v30, %v30, %v25
\n
"
" vsubshs %v13, %v1, %v23
\n
"
" vaddshs %v10, %v0, %v8
\n
"
" vaddshs %v23, %v14, %v12
\n
"
" vsubshs %v12, %v14, %v12
\n
"
" vaddshs %v6, %v10, %v30
\n
"
" vsubshs %v14, %v24, %v26
\n
"
" vmhraddshs %v9, %v11, %v27, %v13
\n
"
" vaddshs %v24, %v24, %v26
\n
"
" vaddshs %v26, %v6, %v31
\n
"
" vsubshs %v13, %v10, %v30
\n
"
" vaddshs %v10, %v26, %v24
\n
"
" vsubshs %v31, %v6, %v31
\n
"
" vaddshs %v6, %v13, %v9
\n
"
" vsrah %v10, %v10, %v21
\n
"
" vsubshs %v13, %v13, %v9
\n
"
" vaddshs %v0, %v15, %v10
\n
"
" vsubshs %v9, %v14, %v12
\n
"
" vaddshs %v12, %v14, %v12
\n
"
" vpkshus %v15, %v0, %v0
\n
"
" stvewx %v15, 0, %r4
\n
"
" vaddshs %v4, %v31, %v23
\n
"
" vmhraddshs %v29, %v7, %v12, %v6
\n
"
" stvewx %v15, %r9, %r4
\n
"
" add %r4, %r4, %r5
\n
"
" vsubshs %v5, %v31, %v23
\n
"
" lvx %v15, 0, %r4
\n
"
" vmhraddshs %v30, %v7, %v9, %v13
\n
"
" vsrah %v22, %v4, %v21
\n
"
" vperm %v15, %v15, %v1, %v3
\n
"
" vmhraddshs %v28, %v18, %v9, %v13
\n
"
" vsrah %v31, %v29, %v21
\n
"
" vsubshs %v13, %v26, %v24
\n
"
" vaddshs %v0, %v15, %v31
\n
"
" vsrah %v27, %v30, %v21
\n
"
" vpkshus %v15, %v0, %v0
\n
"
" vsrah %v30, %v5, %v21
\n
"
" stvewx %v15, 0, %r4
\n
"
" vsrah %v26, %v28, %v21
\n
"
" stvewx %v15, %r9, %r4
\n
"
" vmhraddshs %v25, %v18, %v12, %v6
\n
"
" add %r4, %r4, %r5
\n
"
" vsrah %v24, %v13, %v21
\n
"
" lvx %v15, 0, %r4
\n
"
" vperm %v15, %v15, %v1, %v19
\n
"
" vsrah %v23, %v25, %v21
\n
"
" vaddshs %v0, %v15, %v27
\n
"
" vpkshus %v15, %v0, %v0
\n
"
" stvewx %v15, 0, %r4
\n
"
" stvewx %v15, %r9, %r4
\n
"
" add %r4, %r4, %r5
\n
"
" lvx %v15, 0, %r4
\n
"
" vperm %v15, %v15, %v1, %v3
\n
"
" vaddshs %v0, %v15, %v22
\n
"
" vpkshus %v15, %v0, %v0
\n
"
" stvewx %v15, 0, %r4
\n
"
" stvewx %v15, %r9, %r4
\n
"
" add %r4, %r4, %r5
\n
"
" lvx %v15, 0, %r4
\n
"
" vperm %v15, %v15, %v1, %v19
\n
"
" vaddshs %v0, %v15, %v30
\n
"
" vpkshus %v15, %v0, %v0
\n
"
" stvewx %v15, 0, %r4
\n
"
" stvewx %v15, %r9, %r4
\n
"
" add %r4, %r4, %r5
\n
"
" lvx %v15, 0, %r4
\n
"
" vperm %v15, %v15, %v1, %v3
\n
"
" vaddshs %v0, %v15, %v26
\n
"
" vpkshus %v15, %v0, %v0
\n
"
" stvewx %v15, 0, %r4
\n
"
" stvewx %v15, %r9, %r4
\n
"
" add %r4, %r4, %r5
\n
"
" lvx %v15, 0, %r4
\n
"
" vperm %v15, %v15, %v1, %v19
\n
"
" vaddshs %v0, %v15, %v23
\n
"
" vpkshus %v15, %v0, %v0
\n
"
" stvewx %v15, 0, %r4
\n
"
" stvewx %v15, %r9, %r4
\n
"
" add %r4, %r4, %r5
\n
"
" lvx %v15, 0, %r4
\n
"
" vperm %v15, %v15, %v1, %v3
\n
"
" vaddshs %v0, %v15, %v24
\n
"
" vpkshus %v15, %v0, %v0
\n
"
" stvewx %v15, 0, %r4
\n
"
" stvewx %v15, %r9, %r4
\n
"
"# addi %r0, %r1, 192
\n
"
"# bl _restv21
\n
"
"# lwz %r0, 196(%r1)
\n
"
"# mtlr %r0
\n
"
"# la %r1, 192(%r1)
\n
"
);
}
#else
/* __ALTIVEC__ */
#define vector_s16_t vector signed short
#define vector_u16_t vector unsigned short
#define vector_s8_t vector signed char
#define vector_u8_t vector unsigned char
#define vector_s32_t vector signed int
#define vector_u32_t vector unsigned int
#define IDCT_HALF \
/* 1st stage */
\
t1 = vec_mradds (a1, vx7, vx1 ); \
t8 = vec_mradds (a1, vx1, vec_subs (zero, vx7)); \
t7 = vec_mradds (a2, vx5, vx3); \
t3 = vec_mradds (ma2, vx3, vx5); \
\
/* 2nd stage */
\
t5 = vec_adds (vx0, vx4); \
t0 = vec_subs (vx0, vx4); \
t2 = vec_mradds (a0, vx6, vx2); \
t4 = vec_mradds (a0, vx2, vec_subs (zero,vx6)); \
t6 = vec_adds (t8, t3); \
t3 = vec_subs (t8, t3); \
t8 = vec_subs (t1, t7); \
t1 = vec_adds (t1, t7); \
\
/* 3rd stage */
\
t7 = vec_adds (t5, t2); \
t2 = vec_subs (t5, t2); \
t5 = vec_adds (t0, t4); \
t0 = vec_subs (t0, t4); \
t4 = vec_subs (t8, t3); \
t3 = vec_adds (t8, t3); \
\
/* 4th stage */
\
vy0 = vec_adds (t7, t1); \
vy7 = vec_subs (t7, t1); \
vy1 = vec_mradds (c4, t3, t5); \
vy6 = vec_mradds (mc4, t3, t5); \
vy2 = vec_mradds (c4, t4, t0); \
vy5 = vec_mradds (mc4, t4, t0); \
vy3 = vec_adds (t2, t6); \
vy4 = vec_subs (t2, t6);
#define IDCT \
vector_s16_t vx0, vx1, vx2, vx3, vx4, vx5, vx6, vx7; \
vector_s16_t vy0, vy1, vy2, vy3, vy4, vy5, vy6, vy7; \
vector_s16_t a0, a1, a2, ma2, c4, mc4, zero, bias; \
vector_s16_t t0, t1, t2, t3, t4, t5, t6, t7, t8; \
vector_u16_t shift; \
\
c4 = vec_splat (constants[0], 0); \
a0 = vec_splat (constants[0], 1); \
a1 = vec_splat (constants[0], 2); \
a2 = vec_splat (constants[0], 3); \
mc4 = vec_splat (constants[0], 4); \
ma2 = vec_splat (constants[0], 5); \
bias = (vector_s16_t)vec_splat ((vector_s32_t)constants[0], 3); \
\
zero = vec_splat_s16 (0); \
shift = vec_splat_u16 (4); \
\
vx0 = vec_mradds (vec_sl (block[0], shift), constants[1], zero); \
vx1 = vec_mradds (vec_sl (block[1], shift), constants[2], zero); \
vx2 = vec_mradds (vec_sl (block[2], shift), constants[3], zero); \
vx3 = vec_mradds (vec_sl (block[3], shift), constants[4], zero); \
vx4 = vec_mradds (vec_sl (block[4], shift), constants[1], zero); \
vx5 = vec_mradds (vec_sl (block[5], shift), constants[4], zero); \
vx6 = vec_mradds (vec_sl (block[6], shift), constants[3], zero); \
vx7 = vec_mradds (vec_sl (block[7], shift), constants[2], zero); \
\
IDCT_HALF \
\
vx0 = vec_mergeh (vy0, vy4); \
vx1 = vec_mergel (vy0, vy4); \
vx2 = vec_mergeh (vy1, vy5); \
vx3 = vec_mergel (vy1, vy5); \
vx4 = vec_mergeh (vy2, vy6); \
vx5 = vec_mergel (vy2, vy6); \
vx6 = vec_mergeh (vy3, vy7); \
vx7 = vec_mergel (vy3, vy7); \
\
vy0 = vec_mergeh (vx0, vx4); \
vy1 = vec_mergel (vx0, vx4); \
vy2 = vec_mergeh (vx1, vx5); \
vy3 = vec_mergel (vx1, vx5); \
vy4 = vec_mergeh (vx2, vx6); \
vy5 = vec_mergel (vx2, vx6); \
vy6 = vec_mergeh (vx3, vx7); \
vy7 = vec_mergel (vx3, vx7); \
\
vx0 = vec_adds (vec_mergeh (vy0, vy4), bias); \
vx1 = vec_mergel (vy0, vy4); \
vx2 = vec_mergeh (vy1, vy5); \
vx3 = vec_mergel (vy1, vy5); \
vx4 = vec_mergeh (vy2, vy6); \
vx5 = vec_mergel (vy2, vy6); \
vx6 = vec_mergeh (vy3, vy7); \
vx7 = vec_mergel (vy3, vy7); \
\
IDCT_HALF \
\
shift = vec_splat_u16 (6); \
vx0 = vec_sra (vy0, shift); \
vx1 = vec_sra (vy1, shift); \
vx2 = vec_sra (vy2, shift); \
vx3 = vec_sra (vy3, shift); \
vx4 = vec_sra (vy4, shift); \
vx5 = vec_sra (vy5, shift); \
vx6 = vec_sra (vy6, shift); \
vx7 = vec_sra (vy7, shift);
static
vector_s16_t
constants
[
5
]
=
{
(
vector_s16_t
)(
23170
,
13573
,
6518
,
21895
,
-
23170
,
-
21895
,
32
,
31
),
(
vector_s16_t
)(
16384
,
22725
,
21407
,
19266
,
16384
,
19266
,
21407
,
22725
),
(
vector_s16_t
)(
22725
,
31521
,
29692
,
26722
,
22725
,
26722
,
29692
,
31521
),
(
vector_s16_t
)(
21407
,
29692
,
27969
,
25172
,
21407
,
25172
,
27969
,
29692
),
(
vector_s16_t
)(
19266
,
26722
,
25172
,
22654
,
19266
,
22654
,
25172
,
26722
)
};
void
idct_block_copy_altivec
(
vector_s16_t
*
block
,
unsigned
char
*
dest
,
int
stride
)
{
vector_u8_t
tmp
;
IDCT
#define COPY(dest,src) \
tmp = vec_packsu (src, src); \
vec_ste ((vector_u32_t)tmp, 0, (unsigned int *)dest); \
vec_ste ((vector_u32_t)tmp, 4, (unsigned int *)dest);
COPY
(
dest
,
vx0
)
dest
+=
stride
;
COPY
(
dest
,
vx1
)
dest
+=
stride
;
COPY
(
dest
,
vx2
)
dest
+=
stride
;
COPY
(
dest
,
vx3
)
dest
+=
stride
;
COPY
(
dest
,
vx4
)
dest
+=
stride
;
COPY
(
dest
,
vx5
)
dest
+=
stride
;
COPY
(
dest
,
vx6
)
dest
+=
stride
;
COPY
(
dest
,
vx7
)
}
void
idct_block_add_altivec
(
vector_s16_t
*
block
,
unsigned
char
*
dest
,
int
stride
)
{
vector_u8_t
tmp
;
vector_s16_t
tmp2
,
tmp3
;
vector_u8_t
perm0
;
vector_u8_t
perm1
;
vector_u8_t
p0
,
p1
,
p
;
IDCT
p0
=
vec_lvsl
(
0
,
dest
);
p1
=
vec_lvsl
(
stride
,
dest
);
p
=
vec_splat_u8
(
-
1
);
perm0
=
vec_mergeh
(
p
,
p0
);
perm1
=
vec_mergeh
(
p
,
p1
);
#define ADD(dest,src,perm) \
/* *(uint64_t *)&tmp = *(uint64_t *)dest; */
\
tmp = vec_ld (0, dest); \
tmp2 = (vector_s16_t)vec_perm (tmp, (vector_u8_t)zero, perm); \
tmp3 = vec_adds (tmp2, src); \
tmp = vec_packsu (tmp3, tmp3); \
vec_ste ((vector_u32_t)tmp, 0, (unsigned int *)dest); \
vec_ste ((vector_u32_t)tmp, 4, (unsigned int *)dest);
ADD
(
dest
,
vx0
,
perm0
)
dest
+=
stride
;
ADD
(
dest
,
vx1
,
perm1
)
dest
+=
stride
;
ADD
(
dest
,
vx2
,
perm0
)
dest
+=
stride
;
ADD
(
dest
,
vx3
,
perm1
)
dest
+=
stride
;
ADD
(
dest
,
vx4
,
perm0
)
dest
+=
stride
;
ADD
(
dest
,
vx5
,
perm1
)
dest
+=
stride
;
ADD
(
dest
,
vx6
,
perm0
)
dest
+=
stride
;
ADD
(
dest
,
vx7
,
perm1
)
}
#endif
/* __ALTIVEC__ */
#ifndef __ALTIVEC__
/*****************************************************************************
* Functions exported as capabilities. They are declared as static so that
...
...
@@ -122,3 +754,4 @@ static void idct_getfunctions( function_list_t * p_function_list )
#undef F
}
#endif
/* __ALTIVEC__ */
plugins/idct/idctaltivecasm.S
deleted
100644 → 0
View file @
b0ef1133
#*****************************************************************************
#
idctaltivec.S
:
Altivec
IDCT
code
#*****************************************************************************
#
Copyright
(
C
)
1999
,
2001
VideoLAN
#
$Id
:
idctaltivecasm
.
S
,
v
1
.1
2001
/
09
/
05
16
:
20
:
23
massiot
Exp
$
#
#
Author
:
Paul
Mackerras
<
paulus
@
linuxcare
.
com
>
#
#
This
program
is
free
software
; you can redistribute it and/or modify
#
it
under
the
terms
of
the
GNU
General
Public
License
as
published
by
#
the
Free
Software
Foundation
; either version 2 of the License, or
#
(
at
your
option
)
any
later
version
.
#
#
This
program
is
distributed
in
the
hope
that
it
will
be
useful
,
#
but
WITHOUT
ANY
WARRANTY
; without even the implied warranty of
#
MERCHANTABILITY
or
FITNESS
FOR
A
PARTICULAR
PURPOSE
.
See
the
#
GNU
General
Public
License
for
more
details
.
#
#
You
should
have
received
a
copy
of
the
GNU
General
Public
License
#
along
with
this
program
; if not, write to the Free Software
#
Foundation
,
Inc
.
,
59
Temple
Place
-
Suite
330
,
Boston
,
MA
02111
,
USA
.
#*****************************************************************************/
.
data
.
align
4
wvec
:
.
long
0x3f0a8bd4
.
long
0x3e8d42af
.
long
0x3f3504f3
.
long
0x3f968317
.
long
0x3f8e39da
.
long
0x3fd4db31
.
long
0x3ec7c5c2
.
long
0x3ffb14be
.
long
0x3f43ef15
.
long
0x3fec835e
.
long
0
.
long
0
d
:
.
long
0
,
0
,
0
,
0
.
text
.
globl
idct_block_copy_altivec
idct_block_copy_altivec
:
li
6
,
0
b
idct_asm_altivec
.
global
idct_block_add_altivec
idct_block_add_altivec
:
li
6
,
1
.
globl
idct_asm_altivec
idct_asm_altivec
:
lvx
22
,
0
,
3
#
ih
=
*(
vector
signed
short
*)(
p
)
;
addi
3
,
3
,
16
#
p
+=
8
;
vupkhsh
20
,
22
#
i0
=
vec_unpackh
(
ih
)
;
vupklsh
21
,
22
#
i1
=
vec_unpackl
(
ih
)
;
vcfsx
0
,
20
,
3
#
x00
=
vec_ctf
(
i0
,
3
)
;
vcfsx
10
,
21
,
3
#
x01
=
vec_ctf
(
i1
,
3
)
;
lvx
22
,
0
,
3
#
ih
=
*(
vector
signed
short
*)(
p
)
;
addi
3
,
3
,
16
#
p
+=
8
;
vupkhsh
20
,
22
#
i0
=
vec_unpackh
(
ih
)
;
vupklsh
21
,
22
#
i1
=
vec_unpackl
(
ih
)
;
vcfsx
1
,
20
,
3
#
x10
=
vec_ctf
(
i0
,
3
)
;
vcfsx
11
,
21
,
3
#
x11
=
vec_ctf
(
i1
,
3
)
;
lvx
22
,
0
,
3
#
ih
=
*(
vector
signed
short
*)(
p
)
;
addi
3
,
3
,
16
#
p
+=
8
;
vupkhsh
20
,
22
#
i0
=
vec_unpackh
(
ih
)
;
vupklsh
21
,
22
#
i1
=
vec_unpackl
(
ih
)
;
vcfsx
2
,
20
,
3
#
x20
=
vec_ctf
(
i0
,
3
)
;
vcfsx
12
,
21
,
3
#
x21
=
vec_ctf
(
i1
,
3
)
;
lvx
22
,
0
,
3
#
ih
=
*(
vector
signed
short
*)(
p
)
;
addi
3
,
3
,
16
#
p
+=
8
;
vupkhsh
20
,
22
#
i0
=
vec_unpackh
(
ih
)
;
vupklsh
21
,
22
#
i1
=
vec_unpackl
(
ih
)
;
vcfsx
3
,
20
,
3
#
x30
=
vec_ctf
(
i0
,
3
)
;
vcfsx
13
,
21
,
3
#
x31
=
vec_ctf
(
i1
,
3
)
;
lvx
22
,
0
,
3
#
ih
=
*(
vector
signed
short
*)(
p
)
;
addi
3
,
3
,
16
#
p
+=
8
;
vupkhsh
20
,
22
#
i0
=
vec_unpackh
(
ih
)
;
vupklsh
21
,
22
#
i1
=
vec_unpackl
(
ih
)
;
vcfsx
4
,
20
,
3
#
x40
=
vec_ctf
(
i0
,
3
)
;
vcfsx
14
,
21
,
3
#
x41
=
vec_ctf
(
i1
,
3
)
;
lvx
22
,
0
,
3
#
ih
=
*(
vector
signed
short
*)(
p
)
;
addi
3
,
3
,
16
#
p
+=
8
;
vupkhsh
20
,
22
#
i0
=
vec_unpackh
(
ih
)
;
vupklsh
21
,
22
#
i1
=
vec_unpackl
(
ih
)
;
vcfsx
5
,
20
,
3
#
x50
=
vec_ctf
(
i0
,
3
)
;
vcfsx
15
,
21
,
3
#
x51
=
vec_ctf
(
i1
,
3
)
;
lvx
22
,
0
,
3
#
ih
=
*(
vector
signed
short
*)(
p
)
;
addi
3
,
3
,
16
#
p
+=
8
;
vupkhsh
20
,
22
#
i0
=
vec_unpackh
(
ih
)
;
vupklsh
21
,
22
#
i1
=
vec_unpackl
(
ih
)
;
vcfsx
6
,
20
,
3
#
x60
=
vec_ctf
(
i0
,
3
)
;
vcfsx
16
,
21
,
3
#
x61
=
vec_ctf
(
i1
,
3
)
;
lvx
22
,
0
,
3
#
ih
=
*(
vector
signed
short
*)(
p
)
;
vupkhsh
20
,
22
#
i0
=
vec_unpackh
(
ih
)
;
vupklsh
21
,
22
#
i1
=
vec_unpackl
(
ih
)
;
vcfsx
7
,
20
,
3
#
x70
=
vec_ctf
(
i0
,
3
)
;
vcfsx
17
,
21
,
3
#
x71
=
vec_ctf
(
i1
,
3
)
;
vmrghw
8
,
0
,
2
#
x80
=
vec_mergeh
(
x00
,
x20
)
;
vmrghw
9
,
1
,
3
#
x90
=
vec_mergeh
(
x10
,
x30
)
;
vmrglw
18
,
0
,
2
#
x81
=
vec_mergel
(
x00
,
x20
)
;
vmrglw
19
,
1
,
3
#
x91
=
vec_mergel
(
x10
,
x30
)
;
vmrghw
0
,
8
,
9
#
x00
=
vec_mergeh
(
x80
,
x90
)
;
vmrglw
1
,
8
,
9
#
x10
=
vec_mergel
(
x80
,
x90
)
;
vmrghw
2
,
18
,
19
#
x20
=
vec_mergeh
(
x81
,
x91
)
;
vmrglw
3
,
18
,
19
#
x30
=
vec_mergel
(
x81
,
x91
)
;
vmrghw
8
,
10
,
12
#
x80
=
vec_mergeh
(
x01
,
x21
)
;
vmrghw
9
,
11
,
13
#
x90
=
vec_mergeh
(
x11
,
x31
)
;
vmrglw
18
,
10
,
12
#
x81
=
vec_mergel
(
x01
,
x21
)
;
vmrglw
19
,
11
,
13
#
x91
=
vec_mergel
(
x11
,
x31
)
;
vmrghw
20
,
4
,
6
#
y80
=
vec_mergeh
(
x40
,
x60
)
;
vmrghw
22
,
5
,
7
#
y90
=
vec_mergeh
(
x50
,
x70
)
;
vmrglw
21
,
4
,
6
#
y81
=
vec_mergel
(
x40
,
x60
)
;
vmrglw
23
,
5
,
7
#
y91
=
vec_mergel
(
x50
,
x70
)
;
vmrghw
4
,
8
,
9
#
x40
=
vec_mergeh
(
x80
,
x90
)
;
vmrglw
5
,
8
,
9
#
x50
=
vec_mergel
(
x80
,
x90
)
;
vmrghw
6
,
18
,
19
#
x60
=
vec_mergeh
(
x81
,
x91
)
;
vmrglw
7
,
18
,
19
#
x70
=
vec_mergel
(
x81
,
x91
)
;
vmrghw
10
,
20
,
22
#
x01
=
vec_mergeh
(
y80
,
y90
)
;
vmrglw
11
,
20
,
22
#
x11
=
vec_mergel
(
y80
,
y90
)
;
vmrghw
12
,
21
,
23
#
x21
=
vec_mergeh
(
y81
,
y91
)
;
vmrglw
13
,
21
,
23
#
x31
=
vec_mergel
(
y81
,
y91
)
;
vmrghw
20
,
14
,
16
#
y80
=
vec_mergeh
(
x41
,
x61
)
;
vmrghw
22
,
15
,
17
#
y90
=
vec_mergeh
(
x51
,
x71
)
;
vmrglw
21
,
14
,
16
#
y81
=
vec_mergel
(
x41
,
x61
)
;
vmrglw
23
,
15
,
17
#
y91
=
vec_mergel
(
x51
,
x71
)
;
vmrghw
14
,
20
,
22
#
x41
=
vec_mergeh
(
y80
,
y90
)
;
vmrglw
15
,
20
,
22
#
x51
=
vec_mergel
(
y80
,
y90
)
;
vmrghw
16
,
21
,
23
#
x61
=
vec_mergeh
(
y81
,
y91
)
;
vmrglw
17
,
21
,
23
#
x71
=
vec_mergel
(
y81
,
y91
)
;
lis
7
,
wvec
@
ha
addi
7
,
7
,
wvec
@
l
addi
8
,
7
,
16
addi
9
,
7
,
32
lvx
28
,
0
,
7
#
*(
vector
float
*)
wvec2
;
lvx
29
,
0
,
8
#
*(
vector
float
*)
wvec3
;
lvx
30
,
0
,
9
#
*(
vector
float
*)
wvec4
;
vspltw
20
,
28
,
3
#
W3
=
vec_splat
(
wvec2
,
3
)
;
vspltw
21
,
28
,
1
#
W7
=
vec_splat
(
wvec2
,
1
)
;
vspltw
22
,
29
,
0
#
W1_W7
=
vec_splat
(
wvec3
,
0
)
;
vspltw
23
,
29
,
1
#
W1pW7
=
vec_splat
(
wvec3
,
1
)
;
vspltw
24
,
29
,
2
#
W3_W5
=
vec_splat
(
wvec3
,
2
)
;
vspltw
25
,
29
,
3
#
W3pW5
=
vec_splat
(
wvec3
,
3
)
;
vspltisw
31
,
0
#
z
=
(
vector
float
)(
0
)
;
#
/*
first
stage
*/
vaddfp
26
,
1
,
7
vmaddfp
8
,
21
,
26
,
31
#
x80
=
vec_madd
(
W7
,
vec_add
(
x10
,
x70
),
z
)
;
vaddfp
27
,
11
,
17
vmaddfp
18
,
21
,
27
,
31
#
x81
=
vec_madd
(
W7
,
vec_add
(
x11
,
x71
),
z
)
;
vmaddfp
1
,
22
,
1
,
8
#
x10
=
vec_madd
(
W1_W7
,
x10
,
x80
)
;
vmaddfp
11
,
22
,
11
,
18
#
x11
=
vec_madd
(
W1_W7
,
x11
,
x81
)
;
vnmsubfp
7
,
23
,
7
,
8
#
x70
=
vec_nmsub
(
W1pW7
,
x70
,
x80
)
;
vnmsubfp
17
,
23
,
17
,
18
#
x71
=
vec_nmsub
(
W1pW7
,
x71
,
x81
)
;
vaddfp
26
,
5
,
3
vmaddfp
8
,
20
,
26
,
31
#
x80
=
vec_madd
(
W3
,
vec_add
(
x50
,
x30
),
z
)
;
vaddfp
27
,
15
,
13
vmaddfp
18
,
20
,
27
,
31
#
x81
=
vec_madd
(
W3
,
vec_add
(
x51
,
x31
),
z
)
;
vnmsubfp
5
,
24
,
5
,
8
#
x50
=
vec_nmsub
(
W3_W5
,
x50
,
x80
)
;
vnmsubfp
15
,
24
,
15
,
18
#
x51
=
vec_nmsub
(
W3_W5
,
x51
,
x81
)
;
vnmsubfp
3
,
25
,
3
,
8
#
x30
=
vec_nmsub
(
W3pW5
,
x30
,
x80
)
;
vnmsubfp
13
,
25
,
13
,
18
#
x31
=
vec_nmsub
(
W3pW5
,
x31
,
x81
)
;
vspltw
20
,
28
,
0
#
W6
=
vec_splat
(
wvec2
,
0
)
;
vspltw
21
,
30
,
0
#
W2_W6
=
vec_splat
(
wvec4
,
0
)
;
vspltw
22
,
30
,
1
#
W2pW6
=
vec_splat
(
wvec4
,
1
)
;
vspltw
23
,
28
,
2
#
SQRT0_5
=
vec_splat
(
wvec2
,
2
)
;
#
/*
second
stage
*/
vaddfp
8
,
0
,
4
#
x80
=
vec_add
(
x00
,
x40
)
;
vaddfp
18
,
10
,
14
#
x81
=
vec_add
(
x01
,
x41
)
;
vsubfp
0
,
0
,
4
#
x00
=
vec_sub
(
x00
,
x40
)
;
vsubfp
10
,
10
,
14
#
x01
=
vec_sub
(
x01
,
x41
)
;
vaddfp
26
,
2
,
6
vmaddfp
4
,
20
,
26
,
31
#
x40
=
vec_madd
(
W6
,
vec_add
(
x20
,
x60
),
z
)
;
vaddfp
27
,
12
,
16
vmaddfp
14
,
20
,
27
,
31
#
x41
=
vec_madd
(
W6
,
vec_add
(
x21
,
x61
),
z
)
;
vnmsubfp
6
,
22
,
6
,
4
#
x60
=
vec_nmsub
(
W2pW6
,
x60
,
x40
)
;
vnmsubfp
16
,
22
,
16
,
14
#
x61
=
vec_nmsub
(
W2pW6
,
x61
,
x41
)
;
vmaddfp
2
,
21
,
2
,
4
#
x20
=
vec_madd
(
W2_W6
,
x20
,
x40
)
;
vmaddfp
12
,
21
,
12
,
14
#
x21
=
vec_madd
(
W2_W6
,
x21
,
x41
)
;
vaddfp
4
,
1
,
5
#
x40
=
vec_add
(
x10
,
x50
)
;
vaddfp
14
,
11
,
15
#
x41
=
vec_add
(
x11
,
x51
)
;
vsubfp
1
,
1
,
5
#
x10
=
vec_sub
(
x10
,
x50
)
;
vsubfp
11
,
11
,
15
#
x11
=
vec_sub
(
x11
,
x51
)
;
vaddfp
5
,
7
,
3
#
x50
=
vec_add
(
x70
,
x30
)
;
vaddfp
15
,
17
,
13
#
x51
=
vec_add
(
x71
,
x31
)
;
vsubfp
7
,
7
,
3
#
x70
=
vec_sub
(
x70
,
x30
)
;
vsubfp
17
,
17
,
13
#
x71
=
vec_sub
(
x71
,
x31
)
;
#
/*
third
stage
*/
vaddfp
3
,
8
,
2
#
x30
=
vec_add
(
x80
,
x20
)
;
vaddfp
13
,
18
,
12
#
x31
=
vec_add
(
x81
,
x21
)
;
vsubfp
8
,
8
,
2
#
x80
=
vec_sub
(
x80
,
x20
)
;
vsubfp
18
,
18
,
12
#
x81
=
vec_sub
(
x81
,
x21
)
;
vaddfp
2
,
0
,
6
#
x20
=
vec_add
(
x00
,
x60
)
;
vaddfp
12
,
10
,
16
#
x21
=
vec_add
(
x01
,
x61
)
;
vsubfp
0
,
0
,
6
#
x00
=
vec_sub
(
x00
,
x60
)
;
vsubfp
10
,
10
,
16
#
x01
=
vec_sub
(
x01
,
x61
)
;
vaddfp
24
,
1
,
7
vmaddfp
6
,
23
,
24
,
31
#
x60
=
vec_madd
(
SQRT0_5
,
vec_add
(
x10
,
x70
),
z
)
;
vaddfp
25
,
11
,
17
vmaddfp
16
,
23
,
25
,
31
#
x61
=
vec_madd
(
SQRT0_5
,
vec_add
(
x11
,
x71
),
z
)
;
vsubfp
26
,
1
,
7
vmaddfp
1
,
23
,
26
,
31
#
x10
=
vec_madd
(
SQRT0_5
,
vec_sub
(
x10
,
x70
),
z
)
;
vsubfp
27
,
11
,
17
vmaddfp
11
,
23
,
27
,
31
#
x11
=
vec_madd
(
SQRT0_5
,
vec_sub
(
x11
,
x71
),
z
)
;
#
/*
fourth
stage
*/
vsubfp
7
,
3
,
4
#
x70
=
vec_sub
(
x30
,
x40
)
;
vsubfp
17
,
13
,
14
#
x71
=
vec_sub
(
x31
,
x41
)
;
vaddfp
9
,
3
,
4
#
x90
=
vec_add
(
x30
,
x40
)
;
vaddfp
19
,
13
,
14
#
x91
=
vec_add
(
x31
,
x41
)
;
vaddfp
3
,
8
,
5
#
x30
=
vec_add
(
x80
,
x50
)
;
vaddfp
13
,
18
,
15
#
x31
=
vec_add
(
x81
,
x51
)
;
vsubfp
4
,
8
,
5
#
x40
=
vec_sub
(
x80
,
x50
)
;
vsubfp
14
,
18
,
15
#
x41
=
vec_sub
(
x81
,
x51
)
;
vsubfp
5
,
0
,
1
#
x50
=
vec_sub
(
x00
,
x10
)
;
vsubfp
15
,
10
,
11
#
x51
=
vec_sub
(
x01
,
x11
)
;
vaddfp
8
,
0
,
1
#
x80
=
vec_add
(
x00
,
x10
)
;
vaddfp
18
,
10
,
11
#
x81
=
vec_add
(
x01
,
x11
)
;
vaddfp
1
,
2
,
6
#
x10
=
vec_add
(
x20
,
x60
)
;
vaddfp
11
,
12
,
16
#
x11
=
vec_add
(
x21
,
x61
)
;
vsubfp
6
,
2
,
6
#
x60
=
vec_sub
(
x20
,
x60
)
;
vsubfp
16
,
12
,
16
#
x61
=
vec_sub
(
x21
,
x61
)
;
#
/*
x0
*
is
now
in
x9
*,
x2
*
is
in
x8
*
*/
vmrghw
20
,
9
,
8
#
y80
=
vec_mergeh
(
x90
,
x80
)
;
vmrghw
22
,
1
,
3
#
y90
=
vec_mergeh
(
x10
,
x30
)
;
vmrglw
21
,
9
,
8
#
y81
=
vec_mergel
(
x90
,
x80
)
;
vmrglw
23
,
1
,
3
#
y91
=
vec_mergel
(
x10
,
x30
)
;
vmrghw
0
,
20
,
22
#
x00
=
vec_mergeh
(
y80
,
y90
)
;
vmrglw
1
,
20
,
22
#
x10
=
vec_mergel
(
y80
,
y90
)
;
vmrghw
2
,
21
,
23
#
x20
=
vec_mergeh
(
y81
,
y91
)
;
vmrglw
3
,
21
,
23
#
x30
=
vec_mergel
(
y81
,
y91
)
;
vmrghw
8
,
19
,
18
#
x80
=
vec_mergeh
(
x91
,
x81
)
;
vmrghw
9
,
11
,
13
#
x90
=
vec_mergeh
(
x11
,
x31
)
;
vmrglw
18
,
19
,
18
#
x81
=
vec_mergel
(
x91
,
x81
)
;
vmrglw
19
,
11
,
13
#
x91
=
vec_mergel
(
x11
,
x31
)
;
vmrghw
20
,
4
,
6
#
y80
=
vec_mergeh
(
x40
,
x60
)
;
vmrghw
22
,
5
,
7
#
y90
=
vec_mergeh
(
x50
,
x70
)
;
vmrglw
21
,
4
,
6
#
y81
=
vec_mergel
(
x40
,
x60
)
;
vmrglw
23
,
5
,
7
#
y91
=
vec_mergel
(
x50
,
x70
)
;
vmrghw
4
,
8
,
9
#
x40
=
vec_mergeh
(
x80
,
x90
)
;
vmrglw
5
,
8
,
9
#
x50
=
vec_mergel
(
x80
,
x90
)
;
vmrghw
6
,
18
,
19
#
x60
=
vec_mergeh
(
x81
,
x91
)
;
vmrglw
7
,
18
,
19
#
x70
=
vec_mergel
(
x81
,
x91
)
;
vmrghw
10
,
20
,
22
#
x01
=
vec_mergeh
(
y80
,
y90
)
;
vmrglw
11
,
20
,
22
#
x11
=
vec_mergel
(
y80
,
y90
)
;
vmrghw
12
,
21
,
23
#
x21
=
vec_mergeh
(
y81
,
y91
)
;
vmrglw
13
,
21
,
23
#
x31
=
vec_mergel
(
y81
,
y91
)
;
vmrghw
20
,
14
,
16
#
y80
=
vec_mergeh
(
x41
,
x61
)
;
vmrghw
22
,
15
,
17
#
y90
=
vec_mergeh
(
x51
,
x71
)
;
vmrglw
21
,
14
,
16
#
y81
=
vec_mergel
(
x41
,
x61
)
;
vmrglw
23
,
15
,
17
#
y91
=
vec_mergel
(
x51
,
x71
)
;
vmrghw
14
,
20
,
22
#
x41
=
vec_mergeh
(
y80
,
y90
)
;
vmrglw
15
,
20
,
22
#
x51
=
vec_mergel
(
y80
,
y90
)
;
vmrghw
16
,
21
,
23
#
x61
=
vec_mergeh
(
y81
,
y91
)
;
vmrglw
17
,
21
,
23
#
x71
=
vec_mergel
(
y81
,
y91
)
;
vspltw
20
,
28
,
3
#
W3
=
vec_splat
(
wvec2
,
3
)
;
vspltw
21
,
28
,
1
#
W7
=
vec_splat
(
wvec2
,
1
)
;
vspltw
22
,
29
,
0
#
W1_W7
=
vec_splat
(
wvec3
,
0
)
;
vspltw
23
,
29
,
1
#
W1pW7
=
vec_splat
(
wvec3
,
1
)
;
vspltw
24
,
29
,
2
#
W3_W5
=
vec_splat
(
wvec3
,
2
)
;
vspltw
25
,
29
,
3
#
W3pW5
=
vec_splat
(
wvec3
,
3
)
;
#
/*
first
stage
*/
vaddfp
26
,
1
,
7
vmaddfp
8
,
21
,
26
,
31
#
x80
=
vec_madd
(
W7
,
vec_add
(
x10
,
x70
),
z
)
;
vaddfp
27
,
11
,
17
vmaddfp
18
,
21
,
27
,
31
#
x81
=
vec_madd
(
W7
,
vec_add
(
x11
,
x71
),
z
)
;
vmaddfp
1
,
22
,
1
,
8
#
x10
=
vec_madd
(
W1_W7
,
x10
,
x80
)
;
vmaddfp
11
,
22
,
11
,
18
#
x11
=
vec_madd
(
W1_W7
,
x11
,
x81
)
;
vnmsubfp
7
,
23
,
7
,
8
#
x70
=
vec_nmsub
(
W1pW7
,
x70
,
x80
)
;
vnmsubfp
17
,
23
,
17
,
18
#
x71
=
vec_nmsub
(
W1pW7
,
x71
,
x81
)
;
vaddfp
26
,
5
,
3
vmaddfp
8
,
20
,
26
,
31
#
x80
=
vec_madd
(
W3
,
vec_add
(
x50
,
x30
),
z
)
;
vaddfp
27
,
15
,
13
vmaddfp
18
,
20
,
27
,
31
#
x81
=
vec_madd
(
W3
,
vec_add
(
x51
,
x31
),
z
)
;
vnmsubfp
5
,
24
,
5
,
8
#
x50
=
vec_nmsub
(
W3_W5
,
x50
,
x80
)
;
vnmsubfp
15
,
24
,
15
,
18
#
x51
=
vec_nmsub
(
W3_W5
,
x51
,
x81
)
;
vnmsubfp
3
,
25
,
3
,
8
#
x30
=
vec_nmsub
(
W3pW5
,
x30
,
x80
)
;
vnmsubfp
13
,
25
,
13
,
18
#
x31
=
vec_nmsub
(
W3pW5
,
x31
,
x81
)
;
vspltw
20
,
28
,
0
#
W6
=
vec_splat
(
wvec2
,
0
)
;
vspltw
21
,
30
,
0
#
W2_W6
=
vec_splat
(
wvec4
,
0
)
;
vspltw
22
,
30
,
1
#
W2pW6
=
vec_splat
(
wvec4
,
1
)
;
vspltw
23
,
28
,
2
#
SQRT0_5
=
vec_splat
(
wvec2
,
2
)
;
#
/*
second
stage
*/
vaddfp
8
,
0
,
4
#
x80
=
vec_add
(
x00
,
x40
)
;
vaddfp
18
,
10
,
14
#
x81
=
vec_add
(
x01
,
x41
)
;
vsubfp
0
,
0
,
4
#
x00
=
vec_sub
(
x00
,
x40
)
;
vsubfp
10
,
10
,
14
#
x01
=
vec_sub
(
x01
,
x41
)
;
vaddfp
26
,
2
,
6
vmaddfp
4
,
20
,
26
,
31
#
x40
=
vec_madd
(
W6
,
vec_add
(
x20
,
x60
),
z
)
;
vaddfp
27
,
12
,
16
vmaddfp
14
,
20
,
27
,
31
#
x41
=
vec_madd
(
W6
,
vec_add
(
x21
,
x61
),
z
)
;
vnmsubfp
6
,
22
,
6
,
4
#
x60
=
vec_nmsub
(
W2pW6
,
x60
,
x40
)
;
vnmsubfp
16
,
22
,
16
,
14
#
x61
=
vec_nmsub
(
W2pW6
,
x61
,
x41
)
;
vmaddfp
2
,
21
,
2
,
4
#
x20
=
vec_madd
(
W2_W6
,
x20
,
x40
)
;
vmaddfp
12
,
21
,
12
,
14
#
x21
=
vec_madd
(
W2_W6
,
x21
,
x41
)
;
vaddfp
4
,
1
,
5
#
x40
=
vec_add
(
x10
,
x50
)
;
vaddfp
14
,
11
,
15
#
x41
=
vec_add
(
x11
,
x51
)
;
vsubfp
1
,
1
,
5
#
x10
=
vec_sub
(
x10
,
x50
)
;
vsubfp
11
,
11
,
15
#
x11
=
vec_sub
(
x11
,
x51
)
;
vaddfp
5
,
7
,
3
#
x50
=
vec_add
(
x70
,
x30
)
;
vaddfp
15
,
17
,
13
#
x51
=
vec_add
(
x71
,
x31
)
;
vsubfp
7
,
7
,
3
#
x70
=
vec_sub
(
x70
,
x30
)
;
vsubfp
17
,
17
,
13
#
x71
=
vec_sub
(
x71
,
x31
)
;
#
/*
third
stage
*/
vaddfp
3
,
8
,
2
#
x30
=
vec_add
(
x80
,
x20
)
;
vaddfp
13
,
18
,
12
#
x31
=
vec_add
(
x81
,
x21
)
;
vsubfp
8
,
8
,
2
#
x80
=
vec_sub
(
x80
,
x20
)
;
vsubfp
18
,
18
,
12
#
x81
=
vec_sub
(
x81
,
x21
)
;
vaddfp
2
,
0
,
6
#
x20
=
vec_add
(
x00
,
x60
)
;
vaddfp
12
,
10
,
16
#
x21
=
vec_add
(
x01
,
x61
)
;
vsubfp
0
,
0
,
6
#
x00
=
vec_sub
(
x00
,
x60
)
;
vsubfp
10
,
10
,
16
#
x01
=
vec_sub
(
x01
,
x61
)
;
vaddfp
24
,
1
,
7
vmaddfp
6
,
23
,
24
,
31
#
x60
=
vec_madd
(
SQRT0_5
,
vec_add
(
x10
,
x70
),
z
)
;
vaddfp
25
,
11
,
17
vmaddfp
16
,
23
,
25
,
31
#
x61
=
vec_madd
(
SQRT0_5
,
vec_add
(
x11
,
x71
),
z
)
;
vsubfp
26
,
1
,
7
vmaddfp
1
,
23
,
26
,
31
#
x10
=
vec_madd
(
SQRT0_5
,
vec_sub
(
x10
,
x70
),
z
)
;
vsubfp
27
,
11
,
17
vmaddfp
11
,
23
,
27
,
31
#
x11
=
vec_madd
(
SQRT0_5
,
vec_sub
(
x11
,
x71
),
z
)
;
#
/*
fourth
stage
*/
vsubfp
7
,
3
,
4
#
x70
=
vec_sub
(
x30
,
x40
)
;
vsubfp
17
,
13
,
14
#
x71
=
vec_sub
(
x31
,
x41
)
;
vaddfp
9
,
3
,
4
#
x90
=
vec_add
(
x30
,
x40
)
;
vaddfp
19
,
13
,
14
#
x91
=
vec_add
(
x31
,
x41
)
;
vaddfp
3
,
8
,
5
#
x30
=
vec_add
(
x80
,
x50
)
;
vaddfp
13
,
18
,
15
#
x31
=
vec_add
(
x81
,
x51
)
;
vsubfp
4
,
8
,
5
#
x40
=
vec_sub
(
x80
,
x50
)
;
vsubfp
14
,
18
,
15
#
x41
=
vec_sub
(
x81
,
x51
)
;
vsubfp
5
,
0
,
1
#
x50
=
vec_sub
(
x00
,
x10
)
;
vsubfp
15
,
10
,
11
#
x51
=
vec_sub
(
x01
,
x11
)
;
vaddfp
8
,
0
,
1
#
x80
=
vec_add
(
x00
,
x10
)
;
vaddfp
18
,
10
,
11
#
x81
=
vec_add
(
x01
,
x11
)
;
vaddfp
1
,
2
,
6
#
x10
=
vec_add
(
x20
,
x60
)
;
vaddfp
11
,
12
,
16
#
x11
=
vec_add
(
x21
,
x61
)
;
vsubfp
6
,
2
,
6
#
x60
=
vec_sub
(
x20
,
x60
)
;
vsubfp
16
,
12
,
16
#
x61
=
vec_sub
(
x21
,
x61
)
;
#
/*
x0
*
is
now
in
x9
*,
x2
*
is
in
x8
*
*/
cmpwi
6
,
0
lis
6
,
d
@
ha
addi
6
,
6
,
d
@
l
vctsxs
20
,
9
,
0
#
i0
=
vec_cts
(
x90
,
0
)
;
vctsxs
21
,
19
,
0
#
i1
=
vec_cts
(
x91
,
0
)
;
vpkswss
22
,
20
,
21
#
ih
=
vec_packs
(
i0
,
i1
)
;
beq
1
f
#
if
(
accum
)
{
lfd
0
,
0
(
4
)
stfd
0
,
0
(
6
)
#
*(
long
long
*)
&d
=
*(
long
long
*)
dest
;
lvx
24
,
0
,
6
vmrghb
23
,
31
,
24
#
dh
=
(
vector
signed
short
)
vec_mergeh
(
zb
,
d
)
;
vaddshs
22
,
23
,
22
#
ih
=
vec_adds
(
dh
,
ih
)
;
1
:
#
}
vpkshus
24
,
22
,
31
stvx
24
,
0
,
6
#
d
=
vec_packsu
(
ih
,
zh
)
;
lfd
0
,
0
(
6
)
stfd
0
,
0
(
4
)
#
*(
long
long
*)
dest
=
*(
long
long
*)
&d
;
add
4
,
4
,
5
#
dest
+=
stride
;
vctsxs
20
,
1
,
0
#
i0
=
vec_cts
(
x10
,
0
)
;
vctsxs
21
,
11
,
0
#
i1
=
vec_cts
(
x11
,
0
)
;
vpkswss
22
,
20
,
21
#
ih
=
vec_packs
(
i0
,
i1
)
;
beq
1
f
#
if
(
accum
)
{
lfd
0
,
0
(
4
)
stfd
0
,
0
(
6
)
#
*(
long
long
*)
&d
=
*(
long
long
*)
dest
;
lvx
24
,
0
,
6
vmrghb
23
,
31
,
24
#
dh
=
(
vector
signed
short
)
vec_mergeh
(
zb
,
d
)
;
vaddshs
22
,
23
,
22
#
ih
=
vec_adds
(
dh
,
ih
)
;
1
:
#
}
vpkshus
24
,
22
,
31
stvx
24
,
0
,
6
#
d
=
vec_packsu
(
ih
,
zh
)
;
lfd
0
,
0
(
6
)
stfd
0
,
0
(
4
)
#
*(
long
long
*)
dest
=
*(
long
long
*)
&d
;
add
4
,
4
,
5
#
dest
+=
stride
;
vctsxs
20
,
8
,
0
#
i0
=
vec_cts
(
x80
,
0
)
;
vctsxs
21
,
18
,
0
#
i1
=
vec_cts
(
x81
,
0
)
;
vpkswss
22
,
20
,
21
#
ih
=
vec_packs
(
i0
,
i1
)
;
beq
1
f
#
if
(
accum
)
{
lfd
0
,
0
(
4
)
stfd
0
,
0
(
6
)
#
*(
long
long
*)
&d
=
*(
long
long
*)
dest
;
lvx
24
,
0
,
6
vmrghb
23
,
31
,
24
#
dh
=
(
vector
signed
short
)
vec_mergeh
(
zb
,
d
)
;
vaddshs
22
,
23
,
22
#
ih
=
vec_adds
(
dh
,
ih
)
;
1
:
#
}
vpkshus
24
,
22
,
31
stvx
24
,
0
,
6
#
d
=
vec_packsu
(
ih
,
zh
)
;
lfd
0
,
0
(
6
)
stfd
0
,
0
(
4
)
#
*(
long
long
*)
dest
=
*(
long
long
*)
&d
;
add
4
,
4
,
5
#
dest
+=
stride
;
vctsxs
20
,
3
,
0
#
i0
=
vec_cts
(
x30
,
0
)
;
vctsxs
21
,
13
,
0
#
i1
=
vec_cts
(
x31
,
0
)
;
vpkswss
22
,
20
,
21
#
ih
=
vec_packs
(
i0
,
i1
)
;
beq
1
f
#
if
(
accum
)
{
lfd
0
,
0
(
4
)
stfd
0
,
0
(
6
)
#
*(
long
long
*)
&d
=
*(
long
long
*)
dest
;
lvx
24
,
0
,
6
vmrghb
23
,
31
,
24
#
dh
=
(
vector
signed
short
)
vec_mergeh
(
zb
,
d
)
;
vaddshs
22
,
23
,
22
#
ih
=
vec_adds
(
dh
,
ih
)
;
1
:
#
}
vpkshus
24
,
22
,
31
stvx
24
,
0
,
6
#
d
=
vec_packsu
(
ih
,
zh
)
;
lfd
0
,
0
(
6
)
stfd
0
,
0
(
4
)
#
*(
long
long
*)
dest
=
*(
long
long
*)
&d
;
add
4
,
4
,
5
#
dest
+=
stride
;
vctsxs
20
,
4
,
0
#
i0
=
vec_cts
(
x40
,
0
)
;
vctsxs
21
,
14
,
0
#
i1
=
vec_cts
(
x41
,
0
)
;
vpkswss
22
,
20
,
21
#
ih
=
vec_packs
(
i0
,
i1
)
;
beq
1
f
#
if
(
accum
)
{
lfd
0
,
0
(
4
)
stfd
0
,
0
(
6
)
#
*(
long
long
*)
&d
=
*(
long
long
*)
dest
;
lvx
24
,
0
,
6
vmrghb
23
,
31
,
24
#
dh
=
(
vector
signed
short
)
vec_mergeh
(
zb
,
d
)
;
vaddshs
22
,
23
,
22
#
ih
=
vec_adds
(
dh
,
ih
)
;
1
:
#
}
vpkshus
24
,
22
,
31
stvx
24
,
0
,
6
#
d
=
vec_packsu
(
ih
,
zh
)
;
lfd
0
,
0
(
6
)
stfd
0
,
0
(
4
)
#
*(
long
long
*)
dest
=
*(
long
long
*)
&d
;
add
4
,
4
,
5
#
dest
+=
stride
;
vctsxs
20
,
5
,
0
#
i0
=
vec_cts
(
x50
,
0
)
;
vctsxs
21
,
15
,
0
#
i1
=
vec_cts
(
x51
,
0
)
;
vpkswss
22
,
20
,
21
#
ih
=
vec_packs
(
i0
,
i1
)
;
beq
1
f
#
if
(
accum
)
{
lfd
0
,
0
(
4
)
stfd
0
,
0
(
6
)
#
*(
long
long
*)
&d
=
*(
long
long
*)
dest
;
lvx
24
,
0
,
6
vmrghb
23
,
31
,
24
#
dh
=
(
vector
signed
short
)
vec_mergeh
(
zb
,
d
)
;
vaddshs
22
,
23
,
22
#
ih
=
vec_adds
(
dh
,
ih
)
;
1
:
#
}
vpkshus
24
,
22
,
31
stvx
24
,
0
,
6
#
d
=
vec_packsu
(
ih
,
zh
)
;
lfd
0
,
0
(
6
)
stfd
0
,
0
(
4
)
#
*(
long
long
*)
dest
=
*(
long
long
*)
&d
;
add
4
,
4
,
5
#
dest
+=
stride
;
vctsxs
20
,
6
,
0
#
i0
=
vec_cts
(
x60
,
0
)
;
vctsxs
21
,
16
,
0
#
i1
=
vec_cts
(
x61
,
0
)
;
vpkswss
22
,
20
,
21
#
ih
=
vec_packs
(
i0
,
i1
)
;
beq
1
f
#
if
(
accum
)
{
lfd
0
,
0
(
4
)
stfd
0
,
0
(
6
)
#
*(
long
long
*)
&d
=
*(
long
long
*)
dest
;
lvx
24
,
0
,
6
vmrghb
23
,
31
,
24
#
dh
=
(
vector
signed
short
)
vec_mergeh
(
zb
,
d
)
;
vaddshs
22
,
23
,
22
#
ih
=
vec_adds
(
dh
,
ih
)
;
1
:
#
}
vpkshus
24
,
22
,
31
stvx
24
,
0
,
6
#
d
=
vec_packsu
(
ih
,
zh
)
;
lfd
0
,
0
(
6
)
stfd
0
,
0
(
4
)
#
*(
long
long
*)
dest
=
*(
long
long
*)
&d
;
add
4
,
4
,
5
#
dest
+=
stride
;
vctsxs
20
,
7
,
0
#
i0
=
vec_cts
(
x70
,
0
)
;
vctsxs
21
,
17
,
0
#
i1
=
vec_cts
(
x71
,
0
)
;
vpkswss
22
,
20
,
21
#
ih
=
vec_packs
(
i0
,
i1
)
;
beq
1
f
#
if
(
accum
)
{
lfd
0
,
0
(
4
)
stfd
0
,
0
(
6
)
#
*(
long
long
*)
&d
=
*(
long
long
*)
dest
;
lvx
24
,
0
,
6
vmrghb
23
,
31
,
24
#
dh
=
(
vector
signed
short
)
vec_mergeh
(
zb
,
d
)
;
vaddshs
22
,
23
,
22
#
ih
=
vec_adds
(
dh
,
ih
)
;
1
:
#
}
vpkshus
24
,
22
,
31
stvx
24
,
0
,
6
#
d
=
vec_packsu
(
ih
,
zh
)
;
lfd
0
,
0
(
6
)
stfd
0
,
0
(
4
)
#
*(
long
long
*)
dest
=
*(
long
long
*)
&d
;
blr
plugins/motion/Makefile
View file @
746e6074
...
...
@@ -92,7 +92,7 @@ $(BUILTIN_MOTIONALTIVEC): BUILTIN_MOTIONALTIVEC_%.o: %.c
$(RANLIB)
$@
../motionaltivec.so
:
$(PLUGIN_MOTIONALTIVEC)
$(CC)
$(PCFLAGS)
-o
$@
$^
$(PLCFLAGS)
$(LIB_ALTIVEC)
$(CC)
$(PCFLAGS)
-o
$@
$^
$(PLCFLAGS)
../motionaltivec.a
:
$(BUILTIN_MOTIONALTIVEC)
ar r
$@
$^
...
...
plugins/motion/motionaltivec.c
View file @
746e6074
...
...
@@ -2,9 +2,9 @@
* motionaltivec.c : Altivec motion compensation module for vlc
*****************************************************************************
* Copyright (C) 2001 VideoLAN
* $Id: motionaltivec.c,v 1.
3 2001/09/11 22:22:31
massiot Exp $
* $Id: motionaltivec.c,v 1.
4 2001/09/25 11:46:14
massiot Exp $
*
* Authors:
Aaron Holtzman <aholtzma@ess.engr.uvic.ca
>
* Authors:
Michel Lespinasse <walken@zoy.org
>
* Paul Mackerras <paulus@linuxcare.com.au>
*
* This program is free software; you can redistribute it and/or modify
...
...
@@ -22,6 +22,8 @@
* Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111, USA.
*****************************************************************************/
#ifndef __ALTIVEC__
#define MODULE_NAME motionaltivec
#include "modules_inner.h"
...
...
@@ -32,6 +34,7 @@
#include <stdlib.h>
/* malloc(), free() */
#include <string.h>
#include <inttypes.h>
#include "config.h"
#include "common.h"
/* boolean_t, byte_t */
...
...
@@ -91,472 +94,1993 @@ static int motion_Probe( probedata_t *p_data )
* Motion compensation in Altivec
*****************************************************************************/
#define COPY_8(d, s) (*(long long *)(d) = *(long long *)(s))
#define COPY_16(d, s) (((long long *)(d))[0] = ((long long *)(s))[0], \
((long long *)(d))[1] = ((long long *)(s))[1])
/*
* The asm code is generated with:
*
* gcc-2.95 -fvec -D__ALTIVEC__ -O9 -fomit-frame-pointer -mregnames -S
* motion_comp_altivec.c
*
* sed 's/.L/._L/g' motion_comp_altivec.s |
* awk '{args=""; len=split ($2, arg, ",");
* for (i=1; i<=len; i++) { a=arg[i]; if (i<len) a=a",";
* args = args sprintf ("%-6s", a) }
* printf ("\t\"\t%-16s%-24s\\n\"\n", $1, args) }' |
* unexpand -a
*/
static
void
MC_put_o_16_altivec
(
uint8_t
*
dest
,
uint8_t
*
ref
,
int
stride
,
int
height
)
{
asm
(
"
\n
"
" srawi %r6, %r6, 1
\n
"
" li %r9, 15
\n
"
" addi %r6, %r6, -1
\n
"
" lvsl %v12, 0, %r4
\n
"
" mtctr %r6
\n
"
" lvx %v1, 0, %r4
\n
"
" lvx %v0, %r9, %r4
\n
"
" add %r0, %r5, %r5
\n
"
" vperm %v13, %v1, %v0, %v12
\n
"
" add %r4, %r4, %r5
\n
"
"._L6:
\n
"
" li %r9, 15
\n
"
" lvx %v1, 0, %r4
\n
"
" lvx %v0, %r9, %r4
\n
"
" stvx %v13, 0, %r3
\n
"
" vperm %v13, %v1, %v0, %v12
\n
"
" add %r4, %r4, %r5
\n
"
" lvx %v1, 0, %r4
\n
"
" lvx %v0, %r9, %r4
\n
"
" stvx %v13, %r5, %r3
\n
"
" vperm %v13, %v1, %v0, %v12
\n
"
" add %r4, %r4, %r5
\n
"
" add %r3, %r3, %r0
\n
"
" bdnz ._L6
\n
"
" lvx %v0, %r9, %r4
\n
"
" lvx %v1, 0, %r4
\n
"
" stvx %v13, 0, %r3
\n
"
" vperm %v13, %v1, %v0, %v12
\n
"
" stvx %v13, %r5, %r3
\n
"
);
}
static
void
MC_put_o_8_altivec
(
uint8_t
*
dest
,
uint8_t
*
ref
,
int
stride
,
int
height
)
{
asm
(
"
\n
"
" lvsl %v12, 0, %r4
\n
"
" lvsl %v1, %r5, %r4
\n
"
" vmrghb %v12, %v12, %v12
\n
"
" srawi %r6, %r6, 1
\n
"
" li %r9, 7
\n
"
" vmrghb %v1, %v1, %v1
\n
"
" addi %r6, %r6, -1
\n
"
" vpkuhum %v10, %v12, %v12
\n
"
" lvx %v13, 0, %r4
\n
"
" mtctr %r6
\n
"
" vpkuhum %v11, %v1, %v1
\n
"
" lvx %v0, %r9, %r4
\n
"
" add %r4, %r4, %r5
\n
"
" vperm %v12, %v13, %v0, %v10
\n
"
"._L11:
\n
"
" li %r9, 7
\n
"
" lvx %v0, %r9, %r4
\n
"
" lvx %v13, 0, %r4
\n
"
" stvewx %v12, 0, %r3
\n
"
" li %r9, 4
\n
"
" vperm %v1, %v13, %v0, %v11
\n
"
" stvewx %v12, %r9, %r3
\n
"
" add %r4, %r4, %r5
\n
"
" li %r9, 7
\n
"
" lvx %v0, %r9, %r4
\n
"
" lvx %v13, 0, %r4
\n
"
" add %r3, %r3, %r5
\n
"
" stvewx %v1, 0, %r3
\n
"
" vperm %v12, %v13, %v0, %v10
\n
"
" li %r9, 4
\n
"
" stvewx %v1, %r9, %r3
\n
"
" add %r4, %r4, %r5
\n
"
" add %r3, %r3, %r5
\n
"
" bdnz ._L11
\n
"
" li %r9, 7
\n
"
" lvx %v0, %r9, %r4
\n
"
" lvx %v13, 0, %r4
\n
"
" stvewx %v12, 0, %r3
\n
"
" li %r9, 4
\n
"
" vperm %v1, %v13, %v0, %v11
\n
"
" stvewx %v12, %r9, %r3
\n
"
" add %r3, %r3, %r5
\n
"
" stvewx %v1, 0, %r3
\n
"
" stvewx %v1, %r9, %r3
\n
"
);
}
static
void
MC_put_x_16_altivec
(
uint8_t
*
dest
,
uint8_t
*
ref
,
int
stride
,
int
height
)
{
asm
(
"
\n
"
" lvsl %v11, 0, %r4
\n
"
" vspltisb %v0, 1
\n
"
" li %r9, 16
\n
"
" lvx %v12, 0, %r4
\n
"
" vaddubm %v10, %v11, %v0
\n
"
" lvx %v13, %r9, %r4
\n
"
" srawi %r6, %r6, 1
\n
"
" addi %r6, %r6, -1
\n
"
" vperm %v1, %v12, %v13, %v10
\n
"
" vperm %v0, %v12, %v13, %v11
\n
"
" mtctr %r6
\n
"
" add %r0, %r5, %r5
\n
"
" add %r4, %r4, %r5
\n
"
" vavgub %v0, %v0, %v1
\n
"
"._L16:
\n
"
" li %r9, 16
\n
"
" lvx %v12, 0, %r4
\n
"
" lvx %v13, %r9, %r4
\n
"
" stvx %v0, 0, %r3
\n
"
" vperm %v1, %v12, %v13, %v10
\n
"
" add %r4, %r4, %r5
\n
"
" vperm %v0, %v12, %v13, %v11
\n
"
" lvx %v12, 0, %r4
\n
"
" lvx %v13, %r9, %r4
\n
"
" vavgub %v0, %v0, %v1
\n
"
" stvx %v0, %r5, %r3
\n
"
" vperm %v1, %v12, %v13, %v10
\n
"
" add %r4, %r4, %r5
\n
"
" vperm %v0, %v12, %v13, %v11
\n
"
" add %r3, %r3, %r0
\n
"
" vavgub %v0, %v0, %v1
\n
"
" bdnz ._L16
\n
"
" lvx %v13, %r9, %r4
\n
"
" lvx %v12, 0, %r4
\n
"
" stvx %v0, 0, %r3
\n
"
" vperm %v1, %v12, %v13, %v10
\n
"
" vperm %v0, %v12, %v13, %v11
\n
"
" vavgub %v0, %v0, %v1
\n
"
" stvx %v0, %r5, %r3
\n
"
);
}
static
void
MC_put_x_8_altivec
(
uint8_t
*
dest
,
uint8_t
*
ref
,
int
stride
,
int
height
)
{
asm
(
"
\n
"
" lvsl %v0, 0, %r4
\n
"
" vspltisb %v13, 1
\n
"
" lvsl %v10, %r5, %r4
\n
"
" vmrghb %v0, %v0, %v0
\n
"
" li %r9, 8
\n
"
" lvx %v11, 0, %r4
\n
"
" vmrghb %v10, %v10, %v10
\n
"
" vpkuhum %v8, %v0, %v0
\n
"
" lvx %v12, %r9, %r4
\n
"
" srawi %r6, %r6, 1
\n
"
" vpkuhum %v9, %v10, %v10
\n
"
" vaddubm %v7, %v8, %v13
\n
"
" addi %r6, %r6, -1
\n
"
" vperm %v1, %v11, %v12, %v8
\n
"
" mtctr %r6
\n
"
" vaddubm %v13, %v9, %v13
\n
"
" add %r4, %r4, %r5
\n
"
" vperm %v0, %v11, %v12, %v7
\n
"
" vavgub %v0, %v1, %v0
\n
"
"._L21:
\n
"
" li %r9, 8
\n
"
" lvx %v12, %r9, %r4
\n
"
" lvx %v11, 0, %r4
\n
"
" stvewx %v0, 0, %r3
\n
"
" li %r9, 4
\n
"
" vperm %v1, %v11, %v12, %v13
\n
"
" stvewx %v0, %r9, %r3
\n
"
" vperm %v0, %v11, %v12, %v9
\n
"
" add %r4, %r4, %r5
\n
"
" li %r9, 8
\n
"
" lvx %v12, %r9, %r4
\n
"
" vavgub %v10, %v0, %v1
\n
"
" lvx %v11, 0, %r4
\n
"
" add %r3, %r3, %r5
\n
"
" stvewx %v10, 0, %r3
\n
"
" vperm %v1, %v11, %v12, %v7
\n
"
" vperm %v0, %v11, %v12, %v8
\n
"
" li %r9, 4
\n
"
" stvewx %v10, %r9, %r3
\n
"
" add %r4, %r4, %r5
\n
"
" vavgub %v0, %v0, %v1
\n
"
" add %r3, %r3, %r5
\n
"
" bdnz ._L21
\n
"
" li %r9, 8
\n
"
" lvx %v12, %r9, %r4
\n
"
" lvx %v11, 0, %r4
\n
"
" stvewx %v0, 0, %r3
\n
"
" li %r9, 4
\n
"
" vperm %v1, %v11, %v12, %v13
\n
"
" stvewx %v0, %r9, %r3
\n
"
" vperm %v0, %v11, %v12, %v9
\n
"
" add %r3, %r3, %r5
\n
"
" vavgub %v10, %v0, %v1
\n
"
" stvewx %v10, 0, %r3
\n
"
" stvewx %v10, %r9, %r3
\n
"
);
}
static
void
MC_put_y_16_altivec
(
uint8_t
*
dest
,
uint8_t
*
ref
,
int
stride
,
int
height
)
{
asm
(
"
\n
"
" li %r9, 15
\n
"
" lvsl %v10, 0, %r4
\n
"
" lvx %v13, 0, %r4
\n
"
" lvx %v1, %r9, %r4
\n
"
" add %r4, %r4, %r5
\n
"
" vperm %v12, %v13, %v1, %v10
\n
"
" srawi %r6, %r6, 1
\n
"
" lvx %v13, 0, %r4
\n
"
" lvx %v1, %r9, %r4
\n
"
" addi %r6, %r6, -1
\n
"
" vperm %v11, %v13, %v1, %v10
\n
"
" mtctr %r6
\n
"
" add %r0, %r5, %r5
\n
"
" add %r4, %r4, %r5
\n
"
" vavgub %v0, %v12, %v11
\n
"
"._L26:
\n
"
" li %r9, 15
\n
"
" lvx %v13, 0, %r4
\n
"
" lvx %v1, %r9, %r4
\n
"
" stvx %v0, 0, %r3
\n
"
" vperm %v12, %v13, %v1, %v10
\n
"
" add %r4, %r4, %r5
\n
"
" lvx %v13, 0, %r4
\n
"
" lvx %v1, %r9, %r4
\n
"
" vavgub %v0, %v12, %v11
\n
"
" stvx %v0, %r5, %r3
\n
"
" vperm %v11, %v13, %v1, %v10
\n
"
" add %r4, %r4, %r5
\n
"
" add %r3, %r3, %r0
\n
"
" vavgub %v0, %v12, %v11
\n
"
" bdnz ._L26
\n
"
" lvx %v1, %r9, %r4
\n
"
" lvx %v13, 0, %r4
\n
"
" stvx %v0, 0, %r3
\n
"
" vperm %v12, %v13, %v1, %v10
\n
"
" vavgub %v0, %v12, %v11
\n
"
" stvx %v0, %r5, %r3
\n
"
);
}
static
void
MC_put_y_8_altivec
(
uint8_t
*
dest
,
uint8_t
*
ref
,
int
stride
,
int
height
)
{
asm
(
"
\n
"
" lvsl %v13, 0, %r4
\n
"
" lvsl %v11, %r5, %r4
\n
"
" vmrghb %v13, %v13, %v13
\n
"
" li %r9, 7
\n
"
" lvx %v12, 0, %r4
\n
"
" vmrghb %v11, %v11, %v11
\n
"
" lvx %v1, %r9, %r4
\n
"
" vpkuhum %v9, %v13, %v13
\n
"
" add %r4, %r4, %r5
\n
"
" vpkuhum %v10, %v11, %v11
\n
"
" vperm %v13, %v12, %v1, %v9
\n
"
" srawi %r6, %r6, 1
\n
"
" lvx %v12, 0, %r4
\n
"
" lvx %v1, %r9, %r4
\n
"
" addi %r6, %r6, -1
\n
"
" vperm %v11, %v12, %v1, %v10
\n
"
" mtctr %r6
\n
"
" add %r4, %r4, %r5
\n
"
" vavgub %v0, %v13, %v11
\n
"
"._L31:
\n
"
" li %r9, 7
\n
"
" lvx %v1, %r9, %r4
\n
"
" lvx %v12, 0, %r4
\n
"
" stvewx %v0, 0, %r3
\n
"
" li %r9, 4
\n
"
" vperm %v13, %v12, %v1, %v9
\n
"
" stvewx %v0, %r9, %r3
\n
"
" add %r4, %r4, %r5
\n
"
" vavgub %v0, %v13, %v11
\n
"
" li %r9, 7
\n
"
" lvx %v1, %r9, %r4
\n
"
" lvx %v12, 0, %r4
\n
"
" add %r3, %r3, %r5
\n
"
" stvewx %v0, 0, %r3
\n
"
" vperm %v11, %v12, %v1, %v10
\n
"
" li %r9, 4
\n
"
" stvewx %v0, %r9, %r3
\n
"
" vavgub %v0, %v13, %v11
\n
"
" add %r4, %r4, %r5
\n
"
" add %r3, %r3, %r5
\n
"
" bdnz ._L31
\n
"
" li %r9, 7
\n
"
" lvx %v1, %r9, %r4
\n
"
" lvx %v12, 0, %r4
\n
"
" stvewx %v0, 0, %r3
\n
"
" li %r9, 4
\n
"
" vperm %v13, %v12, %v1, %v9
\n
"
" stvewx %v0, %r9, %r3
\n
"
" add %r3, %r3, %r5
\n
"
" vavgub %v0, %v13, %v11
\n
"
" stvewx %v0, 0, %r3
\n
"
" stvewx %v0, %r9, %r3
\n
"
);
}
static
void
MC_put_xy_16_altivec
(
uint8_t
*
dest
,
uint8_t
*
ref
,
int
stride
,
int
height
)
{
asm
(
"
\n
"
" lvsl %v5, 0, %r4
\n
"
" vspltisb %v3, 1
\n
"
" li %r9, 16
\n
"
" lvx %v1, 0, %r4
\n
"
" vaddubm %v4, %v5, %v3
\n
"
" lvx %v0, %r9, %r4
\n
"
" add %r4, %r4, %r5
\n
"
" vperm %v10, %v1, %v0, %v4
\n
"
" srawi %r6, %r6, 1
\n
"
" vperm %v11, %v1, %v0, %v5
\n
"
" addi %r6, %r6, -1
\n
"
" lvx %v1, 0, %r4
\n
"
" mtctr %r6
\n
"
" lvx %v0, %r9, %r4
\n
"
" vavgub %v9, %v11, %v10
\n
"
" vxor %v8, %v11, %v10
\n
"
" add %r0, %r5, %r5
\n
"
" vperm %v10, %v1, %v0, %v4
\n
"
" add %r4, %r4, %r5
\n
"
" vperm %v11, %v1, %v0, %v5
\n
"
" vxor %v6, %v11, %v10
\n
"
" vavgub %v7, %v11, %v10
\n
"
" vor %v0, %v8, %v6
\n
"
" vxor %v13, %v9, %v7
\n
"
" vand %v0, %v3, %v0
\n
"
" vavgub %v1, %v9, %v7
\n
"
" vand %v0, %v0, %v13
\n
"
" vsububm %v13, %v1, %v0
\n
"
"._L36:
\n
"
" li %r9, 16
\n
"
" lvx %v1, 0, %r4
\n
"
" lvx %v0, %r9, %r4
\n
"
" stvx %v13, 0, %r3
\n
"
" vperm %v10, %v1, %v0, %v4
\n
"
" add %r4, %r4, %r5
\n
"
" vperm %v11, %v1, %v0, %v5
\n
"
" lvx %v1, 0, %r4
\n
"
" lvx %v0, %r9, %r4
\n
"
" vavgub %v9, %v11, %v10
\n
"
" vxor %v8, %v11, %v10
\n
"
" add %r4, %r4, %r5
\n
"
" vperm %v10, %v1, %v0, %v4
\n
"
" vavgub %v12, %v9, %v7
\n
"
" vperm %v11, %v1, %v0, %v5
\n
"
" vor %v13, %v8, %v6
\n
"
" vxor %v0, %v9, %v7
\n
"
" vxor %v6, %v11, %v10
\n
"
" vand %v13, %v3, %v13
\n
"
" vavgub %v7, %v11, %v10
\n
"
" vor %v1, %v8, %v6
\n
"
" vand %v13, %v13, %v0
\n
"
" vxor %v0, %v9, %v7
\n
"
" vand %v1, %v3, %v1
\n
"
" vsububm %v13, %v12, %v13
\n
"
" vand %v1, %v1, %v0
\n
"
" stvx %v13, %r5, %r3
\n
"
" vavgub %v0, %v9, %v7
\n
"
" add %r3, %r3, %r0
\n
"
" vsububm %v13, %v0, %v1
\n
"
" bdnz ._L36
\n
"
" lvx %v0, %r9, %r4
\n
"
" lvx %v1, 0, %r4
\n
"
" stvx %v13, 0, %r3
\n
"
" vperm %v10, %v1, %v0, %v4
\n
"
" vperm %v11, %v1, %v0, %v5
\n
"
" vxor %v8, %v11, %v10
\n
"
" vavgub %v9, %v11, %v10
\n
"
" vor %v0, %v8, %v6
\n
"
" vxor %v13, %v9, %v7
\n
"
" vand %v0, %v3, %v0
\n
"
" vavgub %v1, %v9, %v7
\n
"
" vand %v0, %v0, %v13
\n
"
" vsububm %v13, %v1, %v0
\n
"
" stvx %v13, %r5, %r3
\n
"
);
}
static
void
MC_put_xy_8_altivec
(
uint8_t
*
dest
,
uint8_t
*
ref
,
int
stride
,
int
height
)
{
asm
(
"
\n
"
" lvsl %v4, 0, %r4
\n
"
" vspltisb %v3, 1
\n
"
" lvsl %v5, %r5, %r4
\n
"
" vmrghb %v4, %v4, %v4
\n
"
" li %r9, 16
\n
"
" vmrghb %v5, %v5, %v5
\n
"
" lvx %v1, 0, %r4
\n
"
" vpkuhum %v4, %v4, %v4
\n
"
" lvx %v0, %r9, %r4
\n
"
" vpkuhum %v5, %v5, %v5
\n
"
" add %r4, %r4, %r5
\n
"
" vaddubm %v2, %v4, %v3
\n
"
" vperm %v11, %v1, %v0, %v4
\n
"
" srawi %r6, %r6, 1
\n
"
" vaddubm %v19, %v5, %v3
\n
"
" addi %r6, %r6, -1
\n
"
" vperm %v10, %v1, %v0, %v2
\n
"
" mtctr %r6
\n
"
" lvx %v1, 0, %r4
\n
"
" lvx %v0, %r9, %r4
\n
"
" vavgub %v9, %v11, %v10
\n
"
" vxor %v8, %v11, %v10
\n
"
" add %r4, %r4, %r5
\n
"
" vperm %v10, %v1, %v0, %v19
\n
"
" vperm %v11, %v1, %v0, %v5
\n
"
" vxor %v6, %v11, %v10
\n
"
" vavgub %v7, %v11, %v10
\n
"
" vor %v0, %v8, %v6
\n
"
" vxor %v13, %v9, %v7
\n
"
" vand %v0, %v3, %v0
\n
"
" vavgub %v1, %v9, %v7
\n
"
" vand %v0, %v0, %v13
\n
"
" vsububm %v13, %v1, %v0
\n
"
"._L41:
\n
"
" li %r9, 16
\n
"
" lvx %v0, %r9, %r4
\n
"
" lvx %v1, 0, %r4
\n
"
" stvewx %v13, 0, %r3
\n
"
" li %r9, 4
\n
"
" vperm %v10, %v1, %v0, %v2
\n
"
" stvewx %v13, %r9, %r3
\n
"
" vperm %v11, %v1, %v0, %v4
\n
"
" add %r4, %r4, %r5
\n
"
" li %r9, 16
\n
"
" vavgub %v9, %v11, %v10
\n
"
" lvx %v0, %r9, %r4
\n
"
" vxor %v8, %v11, %v10
\n
"
" lvx %v1, 0, %r4
\n
"
" vavgub %v12, %v9, %v7
\n
"
" vor %v13, %v8, %v6
\n
"
" add %r3, %r3, %r5
\n
"
" vperm %v10, %v1, %v0, %v19
\n
"
" li %r9, 4
\n
"
" vperm %v11, %v1, %v0, %v5
\n
"
" vand %v13, %v3, %v13
\n
"
" add %r4, %r4, %r5
\n
"
" vxor %v0, %v9, %v7
\n
"
" vxor %v6, %v11, %v10
\n
"
" vavgub %v7, %v11, %v10
\n
"
" vor %v1, %v8, %v6
\n
"
" vand %v13, %v13, %v0
\n
"
" vxor %v0, %v9, %v7
\n
"
" vand %v1, %v3, %v1
\n
"
" vsububm %v13, %v12, %v13
\n
"
" vand %v1, %v1, %v0
\n
"
" stvewx %v13, 0, %r3
\n
"
" vavgub %v0, %v9, %v7
\n
"
" stvewx %v13, %r9, %r3
\n
"
" add %r3, %r3, %r5
\n
"
" vsububm %v13, %v0, %v1
\n
"
" bdnz ._L41
\n
"
" li %r9, 16
\n
"
" lvx %v0, %r9, %r4
\n
"
" lvx %v1, 0, %r4
\n
"
" stvewx %v13, 0, %r3
\n
"
" vperm %v10, %v1, %v0, %v2
\n
"
" li %r9, 4
\n
"
" vperm %v11, %v1, %v0, %v4
\n
"
" stvewx %v13, %r9, %r3
\n
"
" add %r3, %r3, %r5
\n
"
" vxor %v8, %v11, %v10
\n
"
" vavgub %v9, %v11, %v10
\n
"
" vor %v0, %v8, %v6
\n
"
" vxor %v13, %v9, %v7
\n
"
" vand %v0, %v3, %v0
\n
"
" vavgub %v1, %v9, %v7
\n
"
" vand %v0, %v0, %v13
\n
"
" vsububm %v13, %v1, %v0
\n
"
" stvewx %v13, 0, %r3
\n
"
" stvewx %v13, %r9, %r3
\n
"
);
}
static
void
MC_avg_o_16_altivec
(
uint8_t
*
dest
,
uint8_t
*
ref
,
int
stride
,
int
height
)
{
asm
(
"
\n
"
" li %r9, 15
\n
"
" lvx %v0, %r9, %r4
\n
"
" lvsl %v11, 0, %r4
\n
"
" lvx %v1, 0, %r4
\n
"
" srawi %r6, %r6, 1
\n
"
" addi %r6, %r6, -1
\n
"
" vperm %v0, %v1, %v0, %v11
\n
"
" lvx %v13, 0, %r3
\n
"
" mtctr %r6
\n
"
" add %r9, %r5, %r5
\n
"
" vavgub %v12, %v13, %v0
\n
"
" add %r4, %r4, %r5
\n
"
"._L46:
\n
"
" li %r11, 15
\n
"
" lvx %v1, 0, %r4
\n
"
" lvx %v0, %r11, %r4
\n
"
" lvx %v13, %r5, %r3
\n
"
" vperm %v0, %v1, %v0, %v11
\n
"
" stvx %v12, 0, %r3
\n
"
" add %r4, %r4, %r5
\n
"
" vavgub %v12, %v13, %v0
\n
"
" lvx %v1, 0, %r4
\n
"
" lvx %v0, %r11, %r4
\n
"
" lvx %v13, %r9, %r3
\n
"
" vperm %v0, %v1, %v0, %v11
\n
"
" stvx %v12, %r5, %r3
\n
"
" add %r4, %r4, %r5
\n
"
" vavgub %v12, %v13, %v0
\n
"
" add %r3, %r3, %r9
\n
"
" bdnz ._L46
\n
"
" lvx %v0, %r11, %r4
\n
"
" lvx %v1, 0, %r4
\n
"
" lvx %v13, %r5, %r3
\n
"
" vperm %v0, %v1, %v0, %v11
\n
"
" stvx %v12, 0, %r3
\n
"
" vavgub %v12, %v13, %v0
\n
"
" stvx %v12, %r5, %r3
\n
"
);
}
static
void
MC_avg_o_8_altivec
(
uint8_t
*
dest
,
uint8_t
*
ref
,
int
stride
,
int
height
)
{
asm
(
"
\n
"
" lvsl %v12, 0, %r4
\n
"
" li %r9, 7
\n
"
" vmrghb %v12, %v12, %v12
\n
"
" lvsl %v1, %r5, %r4
\n
"
" lvx %v13, 0, %r4
\n
"
" vpkuhum %v9, %v12, %v12
\n
"
" lvx %v0, %r9, %r4
\n
"
" srawi %r6, %r6, 1
\n
"
" vmrghb %v1, %v1, %v1
\n
"
" addi %r6, %r6, -1
\n
"
" vperm %v0, %v13, %v0, %v9
\n
"
" lvx %v11, 0, %r3
\n
"
" mtctr %r6
\n
"
" vpkuhum %v10, %v1, %v1
\n
"
" add %r4, %r4, %r5
\n
"
" vavgub %v12, %v11, %v0
\n
"
"._L51:
\n
"
" li %r9, 7
\n
"
" lvx %v0, %r9, %r4
\n
"
" lvx %v13, 0, %r4
\n
"
" lvx %v11, %r5, %r3
\n
"
" stvewx %v12, 0, %r3
\n
"
" vperm %v0, %v13, %v0, %v10
\n
"
" li %r9, 4
\n
"
" stvewx %v12, %r9, %r3
\n
"
" vavgub %v1, %v11, %v0
\n
"
" add %r4, %r4, %r5
\n
"
" li %r9, 7
\n
"
" lvx %v0, %r9, %r4
\n
"
" add %r3, %r3, %r5
\n
"
" lvx %v13, 0, %r4
\n
"
" lvx %v11, %r5, %r3
\n
"
" stvewx %v1, 0, %r3
\n
"
" vperm %v0, %v13, %v0, %v9
\n
"
" li %r9, 4
\n
"
" stvewx %v1, %r9, %r3
\n
"
" vavgub %v12, %v11, %v0
\n
"
" add %r4, %r4, %r5
\n
"
" add %r3, %r3, %r5
\n
"
" bdnz ._L51
\n
"
" li %r9, 7
\n
"
" lvx %v0, %r9, %r4
\n
"
" lvx %v13, 0, %r4
\n
"
" lvx %v11, %r5, %r3
\n
"
" stvewx %v12, 0, %r3
\n
"
" vperm %v0, %v13, %v0, %v10
\n
"
" li %r9, 4
\n
"
" stvewx %v12, %r9, %r3
\n
"
" vavgub %v1, %v11, %v0
\n
"
" add %r3, %r3, %r5
\n
"
" stvewx %v1, 0, %r3
\n
"
" stvewx %v1, %r9, %r3
\n
"
);
}
static
void
MC_avg_x_16_altivec
(
uint8_t
*
dest
,
uint8_t
*
ref
,
int
stride
,
int
height
)
{
asm
(
"
\n
"
" lvsl %v8, 0, %r4
\n
"
" vspltisb %v0, 1
\n
"
" li %r9, 16
\n
"
" lvx %v12, %r9, %r4
\n
"
" vaddubm %v7, %v8, %v0
\n
"
" lvx %v11, 0, %r4
\n
"
" srawi %r6, %r6, 1
\n
"
" vperm %v1, %v11, %v12, %v7
\n
"
" addi %r6, %r6, -1
\n
"
" vperm %v0, %v11, %v12, %v8
\n
"
" lvx %v9, 0, %r3
\n
"
" mtctr %r6
\n
"
" add %r9, %r5, %r5
\n
"
" vavgub %v0, %v0, %v1
\n
"
" add %r4, %r4, %r5
\n
"
" vavgub %v10, %v9, %v0
\n
"
"._L56:
\n
"
" li %r11, 16
\n
"
" lvx %v11, 0, %r4
\n
"
" lvx %v12, %r11, %r4
\n
"
" lvx %v9, %r5, %r3
\n
"
" stvx %v10, 0, %r3
\n
"
" vperm %v0, %v11, %v12, %v7
\n
"
" add %r4, %r4, %r5
\n
"
" vperm %v1, %v11, %v12, %v8
\n
"
" lvx %v11, 0, %r4
\n
"
" lvx %v12, %r11, %r4
\n
"
" vavgub %v1, %v1, %v0
\n
"
" add %r4, %r4, %r5
\n
"
" vperm %v13, %v11, %v12, %v7
\n
"
" vavgub %v10, %v9, %v1
\n
"
" vperm %v0, %v11, %v12, %v8
\n
"
" lvx %v9, %r9, %r3
\n
"
" stvx %v10, %r5, %r3
\n
"
" vavgub %v0, %v0, %v13
\n
"
" add %r3, %r3, %r9
\n
"
" vavgub %v10, %v9, %v0
\n
"
" bdnz ._L56
\n
"
" lvx %v12, %r11, %r4
\n
"
" lvx %v11, 0, %r4
\n
"
" lvx %v9, %r5, %r3
\n
"
" vperm %v1, %v11, %v12, %v7
\n
"
" stvx %v10, 0, %r3
\n
"
" vperm %v0, %v11, %v12, %v8
\n
"
" vavgub %v0, %v0, %v1
\n
"
" vavgub %v10, %v9, %v0
\n
"
" stvx %v10, %r5, %r3
\n
"
);
}
static
void
MC_avg_x_8_altivec
(
uint8_t
*
dest
,
uint8_t
*
ref
,
int
stride
,
int
height
)
{
asm
(
"
\n
"
" lvsl %v10, 0, %r4
\n
"
" vspltisb %v13, 1
\n
"
" li %r9, 8
\n
"
" vmrghb %v10, %v10, %v10
\n
"
" lvx %v11, 0, %r4
\n
"
" lvx %v12, %r9, %r4
\n
"
" vpkuhum %v7, %v10, %v10
\n
"
" srawi %r6, %r6, 1
\n
"
" lvsl %v10, %r5, %r4
\n
"
" vaddubm %v6, %v7, %v13
\n
"
" vperm %v0, %v11, %v12, %v7
\n
"
" addi %r6, %r6, -1
\n
"
" vmrghb %v10, %v10, %v10
\n
"
" lvx %v9, 0, %r3
\n
"
" mtctr %r6
\n
"
" vperm %v1, %v11, %v12, %v6
\n
"
" add %r4, %r4, %r5
\n
"
" vpkuhum %v8, %v10, %v10
\n
"
" vavgub %v0, %v0, %v1
\n
"
" vaddubm %v13, %v8, %v13
\n
"
" vavgub %v10, %v9, %v0
\n
"
"._L61:
\n
"
" li %r9, 8
\n
"
" lvx %v12, %r9, %r4
\n
"
" lvx %v11, 0, %r4
\n
"
" lvx %v9, %r5, %r3
\n
"
" stvewx %v10, 0, %r3
\n
"
" vperm %v1, %v11, %v12, %v13
\n
"
" vperm %v0, %v11, %v12, %v8
\n
"
" li %r9, 4
\n
"
" stvewx %v10, %r9, %r3
\n
"
" add %r4, %r4, %r5
\n
"
" vavgub %v0, %v0, %v1
\n
"
" li %r9, 8
\n
"
" lvx %v12, %r9, %r4
\n
"
" vavgub %v10, %v9, %v0
\n
"
" lvx %v11, 0, %r4
\n
"
" add %r3, %r3, %r5
\n
"
" vperm %v1, %v11, %v12, %v6
\n
"
" lvx %v9, %r5, %r3
\n
"
" vperm %v0, %v11, %v12, %v7
\n
"
" stvewx %v10, 0, %r3
\n
"
" li %r9, 4
\n
"
" vavgub %v0, %v0, %v1
\n
"
" stvewx %v10, %r9, %r3
\n
"
" add %r4, %r4, %r5
\n
"
" add %r3, %r3, %r5
\n
"
" vavgub %v10, %v9, %v0
\n
"
" bdnz ._L61
\n
"
" li %r9, 8
\n
"
" lvx %v12, %r9, %r4
\n
"
" lvx %v11, 0, %r4
\n
"
" lvx %v9, %r5, %r3
\n
"
" vperm %v1, %v11, %v12, %v13
\n
"
" stvewx %v10, 0, %r3
\n
"
" vperm %v0, %v11, %v12, %v8
\n
"
" li %r9, 4
\n
"
" stvewx %v10, %r9, %r3
\n
"
" vavgub %v0, %v0, %v1
\n
"
" add %r3, %r3, %r5
\n
"
" vavgub %v10, %v9, %v0
\n
"
" stvewx %v10, 0, %r3
\n
"
" stvewx %v10, %r9, %r3
\n
"
);
}
static
void
MC_avg_y_16_altivec
(
uint8_t
*
dest
,
uint8_t
*
ref
,
int
stride
,
int
height
)
{
asm
(
"
\n
"
" li %r9, 15
\n
"
" lvx %v1, %r9, %r4
\n
"
" lvsl %v9, 0, %r4
\n
"
" lvx %v13, 0, %r4
\n
"
" add %r4, %r4, %r5
\n
"
" vperm %v11, %v13, %v1, %v9
\n
"
" li %r11, 15
\n
"
" lvx %v13, 0, %r4
\n
"
" lvx %v1, %r11, %r4
\n
"
" srawi %r6, %r6, 1
\n
"
" vperm %v10, %v13, %v1, %v9
\n
"
" addi %r6, %r6, -1
\n
"
" lvx %v12, 0, %r3
\n
"
" mtctr %r6
\n
"
" vavgub %v0, %v11, %v10
\n
"
" add %r9, %r5, %r5
\n
"
" add %r4, %r4, %r5
\n
"
" vavgub %v0, %v12, %v0
\n
"
"._L66:
\n
"
" li %r11, 15
\n
"
" lvx %v13, 0, %r4
\n
"
" lvx %v1, %r11, %r4
\n
"
" lvx %v12, %r5, %r3
\n
"
" vperm %v11, %v13, %v1, %v9
\n
"
" stvx %v0, 0, %r3
\n
"
" add %r4, %r4, %r5
\n
"
" vavgub %v0, %v11, %v10
\n
"
" lvx %v13, 0, %r4
\n
"
" lvx %v1, %r11, %r4
\n
"
" vavgub %v0, %v12, %v0
\n
"
" add %r4, %r4, %r5
\n
"
" lvx %v12, %r9, %r3
\n
"
" vperm %v10, %v13, %v1, %v9
\n
"
" stvx %v0, %r5, %r3
\n
"
" vavgub %v0, %v11, %v10
\n
"
" add %r3, %r3, %r9
\n
"
" vavgub %v0, %v12, %v0
\n
"
" bdnz ._L66
\n
"
" lvx %v1, %r11, %r4
\n
"
" lvx %v13, 0, %r4
\n
"
" lvx %v12, %r5, %r3
\n
"
" vperm %v11, %v13, %v1, %v9
\n
"
" stvx %v0, 0, %r3
\n
"
" vavgub %v0, %v11, %v10
\n
"
" vavgub %v0, %v12, %v0
\n
"
" stvx %v0, %r5, %r3
\n
"
);
}
void
MC_put_16_altivec
(
uint8_t
*
dest
,
uint8_t
*
ref
,
int
stride
,
int
height
)
static
void
MC_avg_y_8_altivec
(
uint8_t
*
dest
,
uint8_t
*
ref
,
int
stride
,
int
height
)
{
vector
unsigned
char
rshift
,
refw0
,
refw1
,
d
;
asm
(
"
\n
"
" lvsl %v12, 0, %r4
\n
"
" lvsl %v9, %r5, %r4
\n
"
" vmrghb %v12, %v12, %v12
\n
"
" li %r9, 7
\n
"
" lvx %v11, 0, %r4
\n
"
" vmrghb %v9, %v9, %v9
\n
"
" lvx %v13, %r9, %r4
\n
"
" vpkuhum %v7, %v12, %v12
\n
"
" add %r4, %r4, %r5
\n
"
" vpkuhum %v8, %v9, %v9
\n
"
" vperm %v12, %v11, %v13, %v7
\n
"
" srawi %r6, %r6, 1
\n
"
" lvx %v11, 0, %r4
\n
"
" lvx %v13, %r9, %r4
\n
"
" addi %r6, %r6, -1
\n
"
" vperm %v9, %v11, %v13, %v8
\n
"
" lvx %v10, 0, %r3
\n
"
" mtctr %r6
\n
"
" add %r4, %r4, %r5
\n
"
" vavgub %v0, %v12, %v9
\n
"
" vavgub %v1, %v10, %v0
\n
"
"._L71:
\n
"
" li %r9, 7
\n
"
" lvx %v13, %r9, %r4
\n
"
" lvx %v11, 0, %r4
\n
"
" lvx %v10, %r5, %r3
\n
"
" stvewx %v1, 0, %r3
\n
"
" vperm %v12, %v11, %v13, %v7
\n
"
" li %r9, 4
\n
"
" stvewx %v1, %r9, %r3
\n
"
" vavgub %v0, %v12, %v9
\n
"
" add %r4, %r4, %r5
\n
"
" li %r9, 7
\n
"
" vavgub %v1, %v10, %v0
\n
"
" lvx %v13, %r9, %r4
\n
"
" lvx %v11, 0, %r4
\n
"
" add %r3, %r3, %r5
\n
"
" vperm %v9, %v11, %v13, %v8
\n
"
" lvx %v10, %r5, %r3
\n
"
" stvewx %v1, 0, %r3
\n
"
" vavgub %v0, %v12, %v9
\n
"
" li %r9, 4
\n
"
" stvewx %v1, %r9, %r3
\n
"
" add %r4, %r4, %r5
\n
"
" vavgub %v1, %v10, %v0
\n
"
" add %r3, %r3, %r5
\n
"
" bdnz ._L71
\n
"
" li %r9, 7
\n
"
" lvx %v13, %r9, %r4
\n
"
" lvx %v11, 0, %r4
\n
"
" lvx %v10, %r5, %r3
\n
"
" vperm %v12, %v11, %v13, %v7
\n
"
" stvewx %v1, 0, %r3
\n
"
" li %r9, 4
\n
"
" vavgub %v0, %v12, %v9
\n
"
" stvewx %v1, %r9, %r3
\n
"
" add %r3, %r3, %r5
\n
"
" vavgub %v1, %v10, %v0
\n
"
" stvewx %v1, 0, %r3
\n
"
" stvewx %v1, %r9, %r3
\n
"
);
}
static
void
MC_avg_xy_16_altivec
(
uint8_t
*
dest
,
uint8_t
*
ref
,
int
stride
,
int
height
)
{
asm
(
"
\n
"
" lvsl %v4, 0, %r4
\n
"
" vspltisb %v2, 1
\n
"
" li %r9, 16
\n
"
" lvx %v1, %r9, %r4
\n
"
" vaddubm %v3, %v4, %v2
\n
"
" lvx %v13, 0, %r4
\n
"
" add %r4, %r4, %r5
\n
"
" vperm %v10, %v13, %v1, %v3
\n
"
" li %r11, 16
\n
"
" vperm %v11, %v13, %v1, %v4
\n
"
" srawi %r6, %r6, 1
\n
"
" lvx %v13, 0, %r4
\n
"
" lvx %v1, %r11, %r4
\n
"
" vavgub %v9, %v11, %v10
\n
"
" vxor %v8, %v11, %v10
\n
"
" addi %r6, %r6, -1
\n
"
" vperm %v10, %v13, %v1, %v3
\n
"
" lvx %v6, 0, %r3
\n
"
" mtctr %r6
\n
"
" vperm %v11, %v13, %v1, %v4
\n
"
" add %r9, %r5, %r5
\n
"
" add %r4, %r4, %r5
\n
"
" vxor %v5, %v11, %v10
\n
"
" vavgub %v7, %v11, %v10
\n
"
" vor %v1, %v8, %v5
\n
"
" vxor %v13, %v9, %v7
\n
"
" vand %v1, %v2, %v1
\n
"
" vavgub %v0, %v9, %v7
\n
"
" vand %v1, %v1, %v13
\n
"
" vsububm %v0, %v0, %v1
\n
"
" vavgub %v12, %v6, %v0
\n
"
"._L76:
\n
"
" li %r11, 16
\n
"
" lvx %v13, 0, %r4
\n
"
" lvx %v1, %r11, %r4
\n
"
" lvx %v6, %r5, %r3
\n
"
" stvx %v12, 0, %r3
\n
"
" vperm %v10, %v13, %v1, %v3
\n
"
" vperm %v11, %v13, %v1, %v4
\n
"
" add %r4, %r4, %r5
\n
"
" lvx %v13, 0, %r4
\n
"
" lvx %v1, %r11, %r4
\n
"
" vavgub %v9, %v11, %v10
\n
"
" vxor %v8, %v11, %v10
\n
"
" add %r4, %r4, %r5
\n
"
" vperm %v10, %v13, %v1, %v3
\n
"
" vavgub %v12, %v9, %v7
\n
"
" vperm %v11, %v13, %v1, %v4
\n
"
" vor %v0, %v8, %v5
\n
"
" vxor %v13, %v9, %v7
\n
"
" vxor %v5, %v11, %v10
\n
"
" vand %v0, %v2, %v0
\n
"
" vavgub %v7, %v11, %v10
\n
"
" vor %v1, %v8, %v5
\n
"
" vand %v0, %v0, %v13
\n
"
" vand %v1, %v2, %v1
\n
"
" vxor %v13, %v9, %v7
\n
"
" vsububm %v12, %v12, %v0
\n
"
" vand %v1, %v1, %v13
\n
"
" vavgub %v0, %v9, %v7
\n
"
" vavgub %v12, %v6, %v12
\n
"
" lvx %v6, %r9, %r3
\n
"
" vsububm %v0, %v0, %v1
\n
"
" stvx %v12, %r5, %r3
\n
"
" vavgub %v12, %v6, %v0
\n
"
" add %r3, %r3, %r9
\n
"
" bdnz ._L76
\n
"
" lvx %v1, %r11, %r4
\n
"
" lvx %v13, 0, %r4
\n
"
" lvx %v6, %r5, %r3
\n
"
" vperm %v10, %v13, %v1, %v3
\n
"
" stvx %v12, 0, %r3
\n
"
" vperm %v11, %v13, %v1, %v4
\n
"
" vxor %v8, %v11, %v10
\n
"
" vavgub %v9, %v11, %v10
\n
"
" vor %v0, %v8, %v5
\n
"
" vxor %v13, %v9, %v7
\n
"
" vand %v0, %v2, %v0
\n
"
" vavgub %v1, %v9, %v7
\n
"
" vand %v0, %v0, %v13
\n
"
" vsububm %v1, %v1, %v0
\n
"
" vavgub %v12, %v6, %v1
\n
"
" stvx %v12, %r5, %r3
\n
"
);
}
static
void
MC_avg_xy_8_altivec
(
uint8_t
*
dest
,
uint8_t
*
ref
,
int
stride
,
int
height
)
{
asm
(
"
\n
"
" lvsl %v2, 0, %r4
\n
"
" vspltisb %v19, 1
\n
"
" lvsl %v3, %r5, %r4
\n
"
" vmrghb %v2, %v2, %v2
\n
"
" li %r9, 16
\n
"
" vmrghb %v3, %v3, %v3
\n
"
" lvx %v9, 0, %r4
\n
"
" vpkuhum %v2, %v2, %v2
\n
"
" lvx %v1, %r9, %r4
\n
"
" vpkuhum %v3, %v3, %v3
\n
"
" add %r4, %r4, %r5
\n
"
" vaddubm %v18, %v2, %v19
\n
"
" vperm %v11, %v9, %v1, %v2
\n
"
" srawi %r6, %r6, 1
\n
"
" vaddubm %v17, %v3, %v19
\n
"
" addi %r6, %r6, -1
\n
"
" vperm %v10, %v9, %v1, %v18
\n
"
" lvx %v4, 0, %r3
\n
"
" mtctr %r6
\n
"
" lvx %v1, %r9, %r4
\n
"
" lvx %v9, 0, %r4
\n
"
" vavgub %v8, %v11, %v10
\n
"
" vxor %v7, %v11, %v10
\n
"
" add %r4, %r4, %r5
\n
"
" vperm %v10, %v9, %v1, %v17
\n
"
" vperm %v11, %v9, %v1, %v3
\n
"
" vxor %v5, %v11, %v10
\n
"
" vavgub %v6, %v11, %v10
\n
"
" vor %v1, %v7, %v5
\n
"
" vxor %v13, %v8, %v6
\n
"
" vand %v1, %v19, %v1
\n
"
" vavgub %v0, %v8, %v6
\n
"
" vand %v1, %v1, %v13
\n
"
" vsububm %v0, %v0, %v1
\n
"
" vavgub %v13, %v4, %v0
\n
"
"._L81:
\n
"
" li %r9, 16
\n
"
" lvx %v1, %r9, %r4
\n
"
" lvx %v9, 0, %r4
\n
"
" lvx %v4, %r5, %r3
\n
"
" stvewx %v13, 0, %r3
\n
"
" vperm %v10, %v9, %v1, %v18
\n
"
" vperm %v11, %v9, %v1, %v2
\n
"
" li %r9, 4
\n
"
" stvewx %v13, %r9, %r3
\n
"
" vxor %v7, %v11, %v10
\n
"
" add %r4, %r4, %r5
\n
"
" li %r9, 16
\n
"
" vavgub %v8, %v11, %v10
\n
"
" lvx %v1, %r9, %r4
\n
"
" vor %v0, %v7, %v5
\n
"
" lvx %v9, 0, %r4
\n
"
" vxor %v12, %v8, %v6
\n
"
" vand %v0, %v19, %v0
\n
"
" add %r3, %r3, %r5
\n
"
" vperm %v10, %v9, %v1, %v17
\n
"
" vavgub %v13, %v8, %v6
\n
"
" li %r9, 4
\n
"
" vperm %v11, %v9, %v1, %v3
\n
"
" vand %v0, %v0, %v12
\n
"
" add %r4, %r4, %r5
\n
"
" vxor %v5, %v11, %v10
\n
"
" vavgub %v6, %v11, %v10
\n
"
" vor %v1, %v7, %v5
\n
"
" vsububm %v13, %v13, %v0
\n
"
" vxor %v0, %v8, %v6
\n
"
" vand %v1, %v19, %v1
\n
"
" vavgub %v13, %v4, %v13
\n
"
" vand %v1, %v1, %v0
\n
"
" lvx %v4, %r5, %r3
\n
"
" vavgub %v0, %v8, %v6
\n
"
" stvewx %v13, 0, %r3
\n
"
" stvewx %v13, %r9, %r3
\n
"
" vsububm %v0, %v0, %v1
\n
"
" add %r3, %r3, %r5
\n
"
" vavgub %v13, %v4, %v0
\n
"
" bdnz ._L81
\n
"
" li %r9, 16
\n
"
" lvx %v1, %r9, %r4
\n
"
" lvx %v9, 0, %r4
\n
"
" lvx %v4, %r5, %r3
\n
"
" vperm %v10, %v9, %v1, %v18
\n
"
" stvewx %v13, 0, %r3
\n
"
" vperm %v11, %v9, %v1, %v2
\n
"
" li %r9, 4
\n
"
" stvewx %v13, %r9, %r3
\n
"
" vxor %v7, %v11, %v10
\n
"
" add %r3, %r3, %r5
\n
"
" vavgub %v8, %v11, %v10
\n
"
" vor %v0, %v7, %v5
\n
"
" vxor %v13, %v8, %v6
\n
"
" vand %v0, %v19, %v0
\n
"
" vavgub %v1, %v8, %v6
\n
"
" vand %v0, %v0, %v13
\n
"
" vsububm %v1, %v1, %v0
\n
"
" vavgub %v13, %v4, %v1
\n
"
" stvewx %v13, 0, %r3
\n
"
" stvewx %v13, %r9, %r3
\n
"
);
}
#else
/* __ALTIVEC__ */
#define vector_s16_t vector signed short
#define vector_u16_t vector unsigned short
#define vector_s8_t vector signed char
#define vector_u8_t vector unsigned char
#define vector_s32_t vector signed int
#define vector_u32_t vector unsigned int
void
MC_put_o_16_altivec
(
unsigned
char
*
dest
,
unsigned
char
*
ref
,
int
stride
,
int
height
)
{
vector_u8_t
perm
,
ref0
,
ref1
,
tmp
;
perm
=
vec_lvsl
(
0
,
ref
);
height
=
(
height
>>
1
)
-
1
;
ref0
=
vec_ld
(
0
,
ref
);
ref1
=
vec_ld
(
15
,
ref
);
ref
+=
stride
;
tmp
=
vec_perm
(
ref0
,
ref1
,
perm
);
do
{
rshift
=
vec_lvsl
(
0
,
ref
);
refw0
=
vec_ld
(
0
,
ref
);
refw1
=
vec_ld
(
16
,
ref
);
d
=
vec_perm
(
refw0
,
refw1
,
rshift
);
if
((
unsigned
long
)
dest
&
15
)
{
/* unaligned store, yuck */
vector
unsigned
char
x
=
d
;
COPY_16
(
dest
,
&
x
);
}
else
vec_st
(
d
,
0
,
dest
);
ref0
=
vec_ld
(
0
,
ref
);
ref1
=
vec_ld
(
15
,
ref
);
ref
+=
stride
;
dest
+=
stride
;
vec_st
(
tmp
,
0
,
dest
);
tmp
=
vec_perm
(
ref0
,
ref1
,
perm
);
ref0
=
vec_ld
(
0
,
ref
);
ref1
=
vec_ld
(
15
,
ref
);
ref
+=
stride
;
vec_st
(
tmp
,
stride
,
dest
);
dest
+=
2
*
stride
;
tmp
=
vec_perm
(
ref0
,
ref1
,
perm
);
}
while
(
--
height
);
ref0
=
vec_ld
(
0
,
ref
);
ref1
=
vec_ld
(
15
,
ref
);
vec_st
(
tmp
,
0
,
dest
);
tmp
=
vec_perm
(
ref0
,
ref1
,
perm
);
vec_st
(
tmp
,
stride
,
dest
);
}
void
MC_avg_16_altivec
(
uint8_t
*
dest
,
uint8_t
*
ref
,
int
stride
,
int
height
)
void
MC_put_o_8_altivec
(
unsigned
char
*
dest
,
unsigned
char
*
ref
,
int
stride
,
int
height
)
{
vector
unsigned
char
rshift
,
refw0
,
refw1
;
vector
unsigned
char
r
,
d
;
vector_u8_t
perm0
,
perm1
,
tmp0
,
tmp1
,
ref0
,
ref1
;
tmp0
=
vec_lvsl
(
0
,
ref
);
tmp0
=
vec_mergeh
(
tmp0
,
tmp0
);
perm0
=
vec_pack
((
vector_u16_t
)
tmp0
,
(
vector_u16_t
)
tmp0
);
tmp1
=
vec_lvsl
(
stride
,
ref
);
tmp1
=
vec_mergeh
(
tmp1
,
tmp1
);
perm1
=
vec_pack
((
vector_u16_t
)
tmp1
,
(
vector_u16_t
)
tmp1
);
height
=
(
height
>>
1
)
-
1
;
ref0
=
vec_ld
(
0
,
ref
);
ref1
=
vec_ld
(
7
,
ref
);
ref
+=
stride
;
tmp0
=
vec_perm
(
ref0
,
ref1
,
perm0
);
do
{
rshift
=
vec_lvsl
(
0
,
ref
);
refw0
=
vec_ld
(
0
,
ref
);
refw1
=
vec_ld
(
16
,
ref
);
r
=
vec_perm
(
refw0
,
refw1
,
rshift
);
if
((
unsigned
long
)
dest
&
15
)
{
/* unaligned load/store, yuck */
vector
unsigned
char
dw0
,
dw1
,
dshift
,
mask
;
dshift
=
vec_lvsr
(
0
,
dest
);
dw0
=
vec_ld
(
0
,
dest
);
dw1
=
vec_ld
(
16
,
dest
);
d
=
vec_perm
(
r
,
r
,
dshift
);
mask
=
vec_perm
((
vector
unsigned
char
)(
0
),
(
vector
unsigned
char
)(
255
),
dshift
);
dw0
=
vec_sel
(
dw0
,
vec_avg
(
dw0
,
d
),
mask
);
dw1
=
vec_sel
(
vec_avg
(
dw1
,
d
),
dw1
,
mask
);
vec_st
(
dw0
,
0
,
dest
);
vec_st
(
dw1
,
16
,
dest
);
}
else
{
d
=
vec_ld
(
0
,
dest
);
d
=
vec_avg
(
d
,
r
);
vec_st
(
d
,
0
,
dest
);
}
ref0
=
vec_ld
(
0
,
ref
);
ref1
=
vec_ld
(
7
,
ref
);
ref
+=
stride
;
vec_ste
((
vector_u32_t
)
tmp0
,
0
,
(
unsigned
int
*
)
dest
);
vec_ste
((
vector_u32_t
)
tmp0
,
4
,
(
unsigned
int
*
)
dest
);
dest
+=
stride
;
tmp1
=
vec_perm
(
ref0
,
ref1
,
perm1
);
ref0
=
vec_ld
(
0
,
ref
);
ref1
=
vec_ld
(
7
,
ref
);
ref
+=
stride
;
vec_ste
((
vector_u32_t
)
tmp1
,
0
,
(
unsigned
int
*
)
dest
);
vec_ste
((
vector_u32_t
)
tmp1
,
4
,
(
unsigned
int
*
)
dest
);
dest
+=
stride
;
tmp0
=
vec_perm
(
ref0
,
ref1
,
perm0
);
}
while
(
--
height
);
ref0
=
vec_ld
(
0
,
ref
);
ref1
=
vec_ld
(
7
,
ref
);
vec_ste
((
vector_u32_t
)
tmp0
,
0
,
(
unsigned
int
*
)
dest
);
vec_ste
((
vector_u32_t
)
tmp0
,
4
,
(
unsigned
int
*
)
dest
);
dest
+=
stride
;
tmp1
=
vec_perm
(
ref0
,
ref1
,
perm1
);
vec_ste
((
vector_u32_t
)
tmp1
,
0
,
(
unsigned
int
*
)
dest
);
vec_ste
((
vector_u32_t
)
tmp1
,
4
,
(
unsigned
int
*
)
dest
);
}
void
MC_put_x16_altivec
(
uint8_t
*
dest
,
uint8_t
*
ref
,
int
stride
,
int
height
)
void
MC_put_x_16_altivec
(
unsigned
char
*
dest
,
unsigned
char
*
ref
,
int
stride
,
int
height
)
{
vector
unsigned
char
rshift0
,
rshift1
,
refw0
,
refw1
;
vector
unsigned
char
t0
,
t1
,
d
,
one
;
vector_u8_t
permA
,
permB
,
ref0
,
ref1
,
tmp
;
permA
=
vec_lvsl
(
0
,
ref
);
permB
=
vec_add
(
permA
,
vec_splat_u8
(
1
));
height
=
(
height
>>
1
)
-
1
;
ref0
=
vec_ld
(
0
,
ref
);
ref1
=
vec_ld
(
16
,
ref
);
ref
+=
stride
;
tmp
=
vec_avg
(
vec_perm
(
ref0
,
ref1
,
permA
),
vec_perm
(
ref0
,
ref1
,
permB
));
one
=
(
vector
unsigned
char
)(
1
);
do
{
rshift0
=
vec_lvsl
(
0
,
ref
);
rshift1
=
vec_add
(
rshift0
,
one
);
refw0
=
vec_ld
(
0
,
ref
);
refw1
=
vec_ld
(
16
,
ref
);
t0
=
vec_perm
(
refw0
,
refw1
,
rshift0
);
t1
=
vec_perm
(
refw0
,
refw1
,
rshift1
);
d
=
vec_avg
(
t0
,
t1
);
if
((
unsigned
long
)
dest
&
15
)
{
/* unaligned store, yuck */
vector
unsigned
char
x
=
d
;
COPY_16
(
dest
,
&
x
);
}
else
vec_st
(
d
,
0
,
dest
);
ref0
=
vec_ld
(
0
,
ref
);
ref1
=
vec_ld
(
16
,
ref
);
ref
+=
stride
;
dest
+=
stride
;
vec_st
(
tmp
,
0
,
dest
);
tmp
=
vec_avg
(
vec_perm
(
ref0
,
ref1
,
permA
),
vec_perm
(
ref0
,
ref1
,
permB
));
ref0
=
vec_ld
(
0
,
ref
);
ref1
=
vec_ld
(
16
,
ref
);
ref
+=
stride
;
vec_st
(
tmp
,
stride
,
dest
);
dest
+=
2
*
stride
;
tmp
=
vec_avg
(
vec_perm
(
ref0
,
ref1
,
permA
),
vec_perm
(
ref0
,
ref1
,
permB
));
}
while
(
--
height
);
ref0
=
vec_ld
(
0
,
ref
);
ref1
=
vec_ld
(
16
,
ref
);
vec_st
(
tmp
,
0
,
dest
);
tmp
=
vec_avg
(
vec_perm
(
ref0
,
ref1
,
permA
),
vec_perm
(
ref0
,
ref1
,
permB
));
vec_st
(
tmp
,
stride
,
dest
);
}
void
MC_avg_x16_altivec
(
uint8_t
*
dest
,
uint8_t
*
ref
,
int
stride
,
int
height
)
void
MC_put_x_8_altivec
(
unsigned
char
*
dest
,
unsigned
char
*
ref
,
int
stride
,
int
height
)
{
vector
unsigned
char
rshift0
,
rshift1
,
refw0
,
refw1
;
vector
unsigned
char
t0
,
t1
,
r
,
d
,
one
;
vector_u8_t
perm0A
,
perm0B
,
perm1A
,
perm1B
,
ones
,
tmp0
,
tmp1
,
ref0
,
ref1
;
ones
=
vec_splat_u8
(
1
);
tmp0
=
vec_lvsl
(
0
,
ref
);
tmp0
=
vec_mergeh
(
tmp0
,
tmp0
);
perm0A
=
vec_pack
((
vector_u16_t
)
tmp0
,
(
vector_u16_t
)
tmp0
);
perm0B
=
vec_add
(
perm0A
,
ones
);
tmp1
=
vec_lvsl
(
stride
,
ref
);
tmp1
=
vec_mergeh
(
tmp1
,
tmp1
);
perm1A
=
vec_pack
((
vector_u16_t
)
tmp1
,
(
vector_u16_t
)
tmp1
);
perm1B
=
vec_add
(
perm1A
,
ones
);
height
=
(
height
>>
1
)
-
1
;
ref0
=
vec_ld
(
0
,
ref
);
ref1
=
vec_ld
(
8
,
ref
);
ref
+=
stride
;
tmp0
=
vec_avg
(
vec_perm
(
ref0
,
ref1
,
perm0A
),
vec_perm
(
ref0
,
ref1
,
perm0B
));
one
=
(
vector
unsigned
char
)(
1
);
do
{
rshift0
=
vec_lvsl
(
0
,
ref
);
rshift1
=
vec_add
(
rshift0
,
one
);
refw0
=
vec_ld
(
0
,
ref
);
refw1
=
vec_ld
(
16
,
ref
);
t0
=
vec_perm
(
refw0
,
refw1
,
rshift0
);
t1
=
vec_perm
(
refw0
,
refw1
,
rshift1
);
r
=
vec_avg
(
t0
,
t1
);
if
((
unsigned
long
)
dest
&
15
)
{
/* unaligned load/store, yuck */
vector
unsigned
char
dw0
,
dw1
,
dshift
,
mask
;
dshift
=
vec_lvsr
(
0
,
dest
);
dw0
=
vec_ld
(
0
,
dest
);
dw1
=
vec_ld
(
16
,
dest
);
d
=
vec_perm
(
r
,
r
,
dshift
);
mask
=
vec_perm
((
vector
unsigned
char
)(
0
),
(
vector
unsigned
char
)(
255
),
dshift
);
dw0
=
vec_sel
(
dw0
,
vec_avg
(
dw0
,
d
),
mask
);
dw1
=
vec_sel
(
vec_avg
(
dw1
,
d
),
dw1
,
mask
);
vec_st
(
dw0
,
0
,
dest
);
vec_st
(
dw1
,
16
,
dest
);
}
else
{
d
=
vec_ld
(
0
,
dest
);
d
=
vec_avg
(
d
,
r
);
vec_st
(
d
,
0
,
dest
);
}
ref0
=
vec_ld
(
0
,
ref
);
ref1
=
vec_ld
(
8
,
ref
);
ref
+=
stride
;
vec_ste
((
vector_u32_t
)
tmp0
,
0
,
(
unsigned
int
*
)
dest
);
vec_ste
((
vector_u32_t
)
tmp0
,
4
,
(
unsigned
int
*
)
dest
);
dest
+=
stride
;
tmp1
=
vec_avg
(
vec_perm
(
ref0
,
ref1
,
perm1A
),
vec_perm
(
ref0
,
ref1
,
perm1B
));
ref0
=
vec_ld
(
0
,
ref
);
ref1
=
vec_ld
(
8
,
ref
);
ref
+=
stride
;
vec_ste
((
vector_u32_t
)
tmp1
,
0
,
(
unsigned
int
*
)
dest
);
vec_ste
((
vector_u32_t
)
tmp1
,
4
,
(
unsigned
int
*
)
dest
);
dest
+=
stride
;
tmp0
=
vec_avg
(
vec_perm
(
ref0
,
ref1
,
perm0A
),
vec_perm
(
ref0
,
ref1
,
perm0B
));
}
while
(
--
height
);
ref0
=
vec_ld
(
0
,
ref
);
ref1
=
vec_ld
(
8
,
ref
);
vec_ste
((
vector_u32_t
)
tmp0
,
0
,
(
unsigned
int
*
)
dest
);
vec_ste
((
vector_u32_t
)
tmp0
,
4
,
(
unsigned
int
*
)
dest
);
dest
+=
stride
;
tmp1
=
vec_avg
(
vec_perm
(
ref0
,
ref1
,
perm1A
),
vec_perm
(
ref0
,
ref1
,
perm1B
));
vec_ste
((
vector_u32_t
)
tmp1
,
0
,
(
unsigned
int
*
)
dest
);
vec_ste
((
vector_u32_t
)
tmp1
,
4
,
(
unsigned
int
*
)
dest
);
}
void
MC_put_y16_altivec
(
uint8_t
*
dest
,
uint8_t
*
ref
,
int
stride
,
int
height
)
void
MC_put_y_16_altivec
(
unsigned
char
*
dest
,
unsigned
char
*
ref
,
int
stride
,
int
height
)
{
vector
unsigned
char
rshift
,
refw0
,
refw1
;
vector
unsigned
char
r0
,
r1
,
d
;
vector_u8_t
perm
,
ref0
,
ref1
,
tmp0
,
tmp1
,
tmp
;
perm
=
vec_lvsl
(
0
,
ref
);
height
=
(
height
>>
1
)
-
1
;
ref0
=
vec_ld
(
0
,
ref
);
ref1
=
vec_ld
(
15
,
ref
);
ref
+=
stride
;
tmp0
=
vec_perm
(
ref0
,
ref1
,
perm
);
ref0
=
vec_ld
(
0
,
ref
);
ref1
=
vec_ld
(
15
,
ref
);
ref
+=
stride
;
tmp1
=
vec_perm
(
ref0
,
ref1
,
perm
);
tmp
=
vec_avg
(
tmp0
,
tmp1
);
rshift
=
vec_lvsl
(
0
,
ref
);
refw0
=
vec_ld
(
0
,
ref
);
refw1
=
vec_ld
(
16
,
ref
);
r0
=
vec_perm
(
refw0
,
refw1
,
rshift
);
do
{
ref0
=
vec_ld
(
0
,
ref
);
ref1
=
vec_ld
(
15
,
ref
);
ref
+=
stride
;
rshift
=
vec_lvsl
(
0
,
ref
);
refw0
=
vec_ld
(
0
,
ref
);
refw1
=
vec_ld
(
16
,
ref
);
r1
=
vec_perm
(
refw0
,
refw1
,
rshift
);
d
=
vec_avg
(
r0
,
r1
);
r0
=
r1
;
if
((
unsigned
long
)
dest
&
15
)
{
/* unaligned store, yuck */
vector
unsigned
char
x
=
d
;
COPY_16
(
dest
,
&
x
);
}
else
vec_st
(
d
,
0
,
dest
);
dest
+=
stride
;
vec_st
(
tmp
,
0
,
dest
);
tmp0
=
vec_perm
(
ref0
,
ref1
,
perm
);
tmp
=
vec_avg
(
tmp0
,
tmp1
);
ref0
=
vec_ld
(
0
,
ref
);
ref1
=
vec_ld
(
15
,
ref
);
ref
+=
stride
;
vec_st
(
tmp
,
stride
,
dest
);
dest
+=
2
*
stride
;
tmp1
=
vec_perm
(
ref0
,
ref1
,
perm
);
tmp
=
vec_avg
(
tmp0
,
tmp1
);
}
while
(
--
height
);
ref0
=
vec_ld
(
0
,
ref
);
ref1
=
vec_ld
(
15
,
ref
);
vec_st
(
tmp
,
0
,
dest
);
tmp0
=
vec_perm
(
ref0
,
ref1
,
perm
);
tmp
=
vec_avg
(
tmp0
,
tmp1
);
vec_st
(
tmp
,
stride
,
dest
);
}
void
MC_avg_y16_altivec
(
uint8_t
*
dest
,
uint8_t
*
ref
,
int
stride
,
int
height
)
void
MC_put_y_8_altivec
(
unsigned
char
*
dest
,
unsigned
char
*
ref
,
int
stride
,
int
height
)
{
vector
unsigned
char
rshift
,
refw0
,
refw1
;
vector
unsigned
char
r0
,
r1
,
r
,
d
;
vector_u8_t
perm0
,
perm1
,
tmp0
,
tmp1
,
tmp
,
ref0
,
ref1
;
tmp0
=
vec_lvsl
(
0
,
ref
);
tmp0
=
vec_mergeh
(
tmp0
,
tmp0
);
perm0
=
vec_pack
((
vector_u16_t
)
tmp0
,
(
vector_u16_t
)
tmp0
);
tmp1
=
vec_lvsl
(
stride
,
ref
);
tmp1
=
vec_mergeh
(
tmp1
,
tmp1
);
perm1
=
vec_pack
((
vector_u16_t
)
tmp1
,
(
vector_u16_t
)
tmp1
);
height
=
(
height
>>
1
)
-
1
;
ref0
=
vec_ld
(
0
,
ref
);
ref1
=
vec_ld
(
7
,
ref
);
ref
+=
stride
;
tmp0
=
vec_perm
(
ref0
,
ref1
,
perm0
);
ref0
=
vec_ld
(
0
,
ref
);
ref1
=
vec_ld
(
7
,
ref
);
ref
+=
stride
;
tmp1
=
vec_perm
(
ref0
,
ref1
,
perm1
);
tmp
=
vec_avg
(
tmp0
,
tmp1
);
rshift
=
vec_lvsl
(
0
,
ref
);
refw0
=
vec_ld
(
0
,
ref
);
refw1
=
vec_ld
(
16
,
ref
);
r0
=
vec_perm
(
refw0
,
refw1
,
rshift
);
do
{
ref0
=
vec_ld
(
0
,
ref
);
ref1
=
vec_ld
(
7
,
ref
);
ref
+=
stride
;
rshift
=
vec_lvsl
(
0
,
ref
);
refw0
=
vec_ld
(
0
,
ref
);
refw1
=
vec_ld
(
16
,
ref
);
r1
=
vec_perm
(
refw0
,
refw1
,
rshift
);
r
=
vec_avg
(
r0
,
r1
);
r0
=
r1
;
if
((
unsigned
long
)
dest
&
15
)
{
/* unaligned load/store, yuck */
vector
unsigned
char
dw0
,
dw1
,
dshift
,
mask
;
dshift
=
vec_lvsr
(
0
,
dest
);
dw0
=
vec_ld
(
0
,
dest
);
dw1
=
vec_ld
(
16
,
dest
);
d
=
vec_perm
(
r
,
r
,
dshift
);
mask
=
vec_perm
((
vector
unsigned
char
)(
0
),
(
vector
unsigned
char
)(
255
),
dshift
);
dw0
=
vec_sel
(
dw0
,
vec_avg
(
dw0
,
d
),
mask
);
dw1
=
vec_sel
(
vec_avg
(
dw1
,
d
),
dw1
,
mask
);
vec_st
(
dw0
,
0
,
dest
);
vec_st
(
dw1
,
16
,
dest
);
}
else
{
d
=
vec_ld
(
0
,
dest
);
d
=
vec_avg
(
d
,
r
);
vec_st
(
d
,
0
,
dest
);
}
vec_ste
((
vector_u32_t
)
tmp
,
0
,
(
unsigned
int
*
)
dest
);
vec_ste
((
vector_u32_t
)
tmp
,
4
,
(
unsigned
int
*
)
dest
);
dest
+=
stride
;
tmp0
=
vec_perm
(
ref0
,
ref1
,
perm0
);
tmp
=
vec_avg
(
tmp0
,
tmp1
);
ref0
=
vec_ld
(
0
,
ref
);
ref1
=
vec_ld
(
7
,
ref
);
ref
+=
stride
;
vec_ste
((
vector_u32_t
)
tmp
,
0
,
(
unsigned
int
*
)
dest
);
vec_ste
((
vector_u32_t
)
tmp
,
4
,
(
unsigned
int
*
)
dest
);
dest
+=
stride
;
tmp1
=
vec_perm
(
ref0
,
ref1
,
perm1
);
tmp
=
vec_avg
(
tmp0
,
tmp1
);
}
while
(
--
height
);
ref0
=
vec_ld
(
0
,
ref
);
ref1
=
vec_ld
(
7
,
ref
);
vec_ste
((
vector_u32_t
)
tmp
,
0
,
(
unsigned
int
*
)
dest
);
vec_ste
((
vector_u32_t
)
tmp
,
4
,
(
unsigned
int
*
)
dest
);
dest
+=
stride
;
tmp0
=
vec_perm
(
ref0
,
ref1
,
perm0
);
tmp
=
vec_avg
(
tmp0
,
tmp1
);
vec_ste
((
vector_u32_t
)
tmp
,
0
,
(
unsigned
int
*
)
dest
);
vec_ste
((
vector_u32_t
)
tmp
,
4
,
(
unsigned
int
*
)
dest
);
}
void
MC_put_xy16_altivec
(
uint8_t
*
dest
,
uint8_t
*
ref
,
int
stride
,
int
height
)
void
MC_put_xy_16_altivec
(
unsigned
char
*
dest
,
unsigned
char
*
ref
,
int
stride
,
int
height
)
{
vector
unsigned
char
rshift0
,
rshift1
,
refw0
,
refw1
;
vector
unsigned
char
t0
,
t1
,
r0
,
r1
,
d
,
one
;
vector_u8_t
permA
,
permB
,
ref0
,
ref1
,
A
,
B
,
avg0
,
avg1
,
xor0
,
xor1
,
tmp
;
vector_u8_t
ones
;
ones
=
vec_splat_u8
(
1
);
permA
=
vec_lvsl
(
0
,
ref
);
permB
=
vec_add
(
permA
,
ones
);
height
=
(
height
>>
1
)
-
1
;
ref0
=
vec_ld
(
0
,
ref
);
ref1
=
vec_ld
(
16
,
ref
);
ref
+=
stride
;
A
=
vec_perm
(
ref0
,
ref1
,
permA
);
B
=
vec_perm
(
ref0
,
ref1
,
permB
);
avg0
=
vec_avg
(
A
,
B
);
xor0
=
vec_xor
(
A
,
B
);
ref0
=
vec_ld
(
0
,
ref
);
ref1
=
vec_ld
(
16
,
ref
);
ref
+=
stride
;
A
=
vec_perm
(
ref0
,
ref1
,
permA
);
B
=
vec_perm
(
ref0
,
ref1
,
permB
);
avg1
=
vec_avg
(
A
,
B
);
xor1
=
vec_xor
(
A
,
B
);
tmp
=
vec_sub
(
vec_avg
(
avg0
,
avg1
),
vec_and
(
vec_and
(
ones
,
vec_or
(
xor0
,
xor1
)),
vec_xor
(
avg0
,
avg1
)));
rshift0
=
vec_lvsl
(
0
,
ref
);
one
=
(
vector
unsigned
char
)(
1
);
rshift1
=
vec_add
(
rshift0
,
one
);
refw0
=
vec_ld
(
0
,
ref
);
refw1
=
vec_ld
(
16
,
ref
);
t0
=
vec_perm
(
refw0
,
refw1
,
rshift0
);
t1
=
vec_perm
(
refw0
,
refw1
,
rshift1
);
r0
=
vec_avg
(
t0
,
t1
);
do
{
ref0
=
vec_ld
(
0
,
ref
);
ref1
=
vec_ld
(
16
,
ref
);
ref
+=
stride
;
rshift0
=
vec_lvsl
(
0
,
ref
);
rshift1
=
vec_add
(
rshift0
,
one
);
refw0
=
vec_ld
(
0
,
ref
);
refw1
=
vec_ld
(
16
,
ref
);
t0
=
vec_perm
(
refw0
,
refw1
,
rshift0
);
t1
=
vec_perm
(
refw0
,
refw1
,
rshift1
);
r1
=
vec_avg
(
t0
,
t1
);
d
=
vec_avg
(
r0
,
r1
);
r0
=
r1
;
if
((
unsigned
long
)
dest
&
15
)
{
/* unaligned store, yuck */
vector
unsigned
char
x
=
d
;
COPY_16
(
dest
,
&
x
);
}
else
vec_st
(
d
,
0
,
dest
);
dest
+=
stride
;
vec_st
(
tmp
,
0
,
dest
);
A
=
vec_perm
(
ref0
,
ref1
,
permA
);
B
=
vec_perm
(
ref0
,
ref1
,
permB
);
avg0
=
vec_avg
(
A
,
B
);
xor0
=
vec_xor
(
A
,
B
);
tmp
=
vec_sub
(
vec_avg
(
avg0
,
avg1
),
vec_and
(
vec_and
(
ones
,
vec_or
(
xor0
,
xor1
)),
vec_xor
(
avg0
,
avg1
)));
ref0
=
vec_ld
(
0
,
ref
);
ref1
=
vec_ld
(
16
,
ref
);
ref
+=
stride
;
vec_st
(
tmp
,
stride
,
dest
);
dest
+=
2
*
stride
;
A
=
vec_perm
(
ref0
,
ref1
,
permA
);
B
=
vec_perm
(
ref0
,
ref1
,
permB
);
avg1
=
vec_avg
(
A
,
B
);
xor1
=
vec_xor
(
A
,
B
);
tmp
=
vec_sub
(
vec_avg
(
avg0
,
avg1
),
vec_and
(
vec_and
(
ones
,
vec_or
(
xor0
,
xor1
)),
vec_xor
(
avg0
,
avg1
)));
}
while
(
--
height
);
ref0
=
vec_ld
(
0
,
ref
);
ref1
=
vec_ld
(
16
,
ref
);
vec_st
(
tmp
,
0
,
dest
);
A
=
vec_perm
(
ref0
,
ref1
,
permA
);
B
=
vec_perm
(
ref0
,
ref1
,
permB
);
avg0
=
vec_avg
(
A
,
B
);
xor0
=
vec_xor
(
A
,
B
);
tmp
=
vec_sub
(
vec_avg
(
avg0
,
avg1
),
vec_and
(
vec_and
(
ones
,
vec_or
(
xor0
,
xor1
)),
vec_xor
(
avg0
,
avg1
)));
vec_st
(
tmp
,
stride
,
dest
);
}
void
MC_avg_xy16_altivec
(
uint8_t
*
dest
,
uint8_t
*
ref
,
int
stride
,
int
height
)
void
MC_put_xy_8_altivec
(
unsigned
char
*
dest
,
unsigned
char
*
ref
,
int
stride
,
int
height
)
{
vector
unsigned
char
rshift0
,
rshift1
,
refw0
,
refw1
;
vector
unsigned
char
t0
,
t1
,
r0
,
r1
,
r
,
d
,
one
;
vector_u8_t
perm0A
,
perm0B
,
perm1A
,
perm1B
,
ref0
,
ref1
,
A
,
B
;
vector_u8_t
avg0
,
avg1
,
xor0
,
xor1
,
tmp
,
ones
;
ones
=
vec_splat_u8
(
1
);
perm0A
=
vec_lvsl
(
0
,
ref
);
perm0A
=
vec_mergeh
(
perm0A
,
perm0A
);
perm0A
=
vec_pack
((
vector_u16_t
)
perm0A
,
(
vector_u16_t
)
perm0A
);
perm0B
=
vec_add
(
perm0A
,
ones
);
perm1A
=
vec_lvsl
(
stride
,
ref
);
perm1A
=
vec_mergeh
(
perm1A
,
perm1A
);
perm1A
=
vec_pack
((
vector_u16_t
)
perm1A
,
(
vector_u16_t
)
perm1A
);
perm1B
=
vec_add
(
perm1A
,
ones
);
height
=
(
height
>>
1
)
-
1
;
ref0
=
vec_ld
(
0
,
ref
);
ref1
=
vec_ld
(
16
,
ref
);
ref
+=
stride
;
A
=
vec_perm
(
ref0
,
ref1
,
perm0A
);
B
=
vec_perm
(
ref0
,
ref1
,
perm0B
);
avg0
=
vec_avg
(
A
,
B
);
xor0
=
vec_xor
(
A
,
B
);
ref0
=
vec_ld
(
0
,
ref
);
ref1
=
vec_ld
(
16
,
ref
);
ref
+=
stride
;
A
=
vec_perm
(
ref0
,
ref1
,
perm1A
);
B
=
vec_perm
(
ref0
,
ref1
,
perm1B
);
avg1
=
vec_avg
(
A
,
B
);
xor1
=
vec_xor
(
A
,
B
);
tmp
=
vec_sub
(
vec_avg
(
avg0
,
avg1
),
vec_and
(
vec_and
(
ones
,
vec_or
(
xor0
,
xor1
)),
vec_xor
(
avg0
,
avg1
)));
rshift0
=
vec_lvsl
(
0
,
ref
);
one
=
(
vector
unsigned
char
)(
1
);
rshift1
=
vec_add
(
rshift0
,
one
);
refw0
=
vec_ld
(
0
,
ref
);
refw1
=
vec_ld
(
16
,
ref
);
t0
=
vec_perm
(
refw0
,
refw1
,
rshift0
);
t1
=
vec_perm
(
refw0
,
refw1
,
rshift1
);
r0
=
vec_avg
(
t0
,
t1
);
do
{
ref0
=
vec_ld
(
0
,
ref
);
ref1
=
vec_ld
(
16
,
ref
);
ref
+=
stride
;
rshift0
=
vec_lvsl
(
0
,
ref
);
rshift1
=
vec_add
(
rshift0
,
one
);
refw0
=
vec_ld
(
0
,
ref
);
refw1
=
vec_ld
(
16
,
ref
);
t0
=
vec_perm
(
refw0
,
refw1
,
rshift0
);
t1
=
vec_perm
(
refw0
,
refw1
,
rshift1
);
r1
=
vec_avg
(
t0
,
t1
);
r
=
vec_avg
(
r0
,
r1
);
r0
=
r1
;
if
((
unsigned
long
)
dest
&
15
)
{
/* unaligned load/store, yuck */
vector
unsigned
char
dw0
,
dw1
,
dshift
,
mask
;
dshift
=
vec_lvsr
(
0
,
dest
);
dw0
=
vec_ld
(
0
,
dest
);
dw1
=
vec_ld
(
16
,
dest
);
d
=
vec_perm
(
r
,
r
,
dshift
);
mask
=
vec_perm
((
vector
unsigned
char
)(
0
),
(
vector
unsigned
char
)(
255
),
dshift
);
dw0
=
vec_sel
(
dw0
,
vec_avg
(
dw0
,
d
),
mask
);
dw1
=
vec_sel
(
vec_avg
(
dw1
,
d
),
dw1
,
mask
);
vec_st
(
dw0
,
0
,
dest
);
vec_st
(
dw1
,
16
,
dest
);
}
else
{
d
=
vec_ld
(
0
,
dest
);
d
=
vec_avg
(
d
,
r
);
vec_st
(
d
,
0
,
dest
);
}
vec_ste
((
vector_u32_t
)
tmp
,
0
,
(
unsigned
int
*
)
dest
);
vec_ste
((
vector_u32_t
)
tmp
,
4
,
(
unsigned
int
*
)
dest
);
dest
+=
stride
;
A
=
vec_perm
(
ref0
,
ref1
,
perm0A
);
B
=
vec_perm
(
ref0
,
ref1
,
perm0B
);
avg0
=
vec_avg
(
A
,
B
);
xor0
=
vec_xor
(
A
,
B
);
tmp
=
vec_sub
(
vec_avg
(
avg0
,
avg1
),
vec_and
(
vec_and
(
ones
,
vec_or
(
xor0
,
xor1
)),
vec_xor
(
avg0
,
avg1
)));
ref0
=
vec_ld
(
0
,
ref
);
ref1
=
vec_ld
(
16
,
ref
);
ref
+=
stride
;
vec_ste
((
vector_u32_t
)
tmp
,
0
,
(
unsigned
int
*
)
dest
);
vec_ste
((
vector_u32_t
)
tmp
,
4
,
(
unsigned
int
*
)
dest
);
dest
+=
stride
;
A
=
vec_perm
(
ref0
,
ref1
,
perm1A
);
B
=
vec_perm
(
ref0
,
ref1
,
perm1B
);
avg1
=
vec_avg
(
A
,
B
);
xor1
=
vec_xor
(
A
,
B
);
tmp
=
vec_sub
(
vec_avg
(
avg0
,
avg1
),
vec_and
(
vec_and
(
ones
,
vec_or
(
xor0
,
xor1
)),
vec_xor
(
avg0
,
avg1
)));
}
while
(
--
height
);
ref0
=
vec_ld
(
0
,
ref
);
ref1
=
vec_ld
(
16
,
ref
);
vec_ste
((
vector_u32_t
)
tmp
,
0
,
(
unsigned
int
*
)
dest
);
vec_ste
((
vector_u32_t
)
tmp
,
4
,
(
unsigned
int
*
)
dest
);
dest
+=
stride
;
A
=
vec_perm
(
ref0
,
ref1
,
perm0A
);
B
=
vec_perm
(
ref0
,
ref1
,
perm0B
);
avg0
=
vec_avg
(
A
,
B
);
xor0
=
vec_xor
(
A
,
B
);
tmp
=
vec_sub
(
vec_avg
(
avg0
,
avg1
),
vec_and
(
vec_and
(
ones
,
vec_or
(
xor0
,
xor1
)),
vec_xor
(
avg0
,
avg1
)));
vec_ste
((
vector_u32_t
)
tmp
,
0
,
(
unsigned
int
*
)
dest
);
vec_ste
((
vector_u32_t
)
tmp
,
4
,
(
unsigned
int
*
)
dest
);
}
void
MC_put_8_altivec
(
uint8_t
*
dest
,
uint8_t
*
ref
,
int
stride
,
int
height
)
#if 0
void MC_put_xy_8_altivec (unsigned char * dest, unsigned char * ref,
int stride, int height)
{
vector
unsigned
char
rshift
,
refw0
,
refw1
,
d
;
vector_u8_t permA, permB, ref0, ref1, A, B, C, D, tmp, zero, ones;
vector_u16_t splat2, temp;
ones = vec_splat_u8 (1);
permA = vec_lvsl (0, ref);
permB = vec_add (permA, ones);
zero = vec_splat_u8 (0);
splat2 = vec_splat_u16 (2);
do {
rshift
=
vec_lvsl
(
0
,
ref
);
refw0
=
vec_ld
(
0
,
ref
);
refw1
=
vec_ld
(
16
,
ref
);
d
=
vec_perm
(
refw0
,
refw1
,
rshift
);
COPY_8
(
dest
,
&
d
);
ref0 = vec_ld (0, ref);
ref1 = vec_ld (16, ref);
ref += stride;
A = vec_perm (ref0, ref1, permA);
B = vec_perm (ref0, ref1, permB);
ref0 = vec_ld (0, ref);
ref1 = vec_ld (16, ref);
C = vec_perm (ref0, ref1, permA);
D = vec_perm (ref0, ref1, permB);
temp = vec_add (vec_add ((vector_u16_t)vec_mergeh (zero, A),
(vector_u16_t)vec_mergeh (zero, B)),
vec_add ((vector_u16_t)vec_mergeh (zero, C),
(vector_u16_t)vec_mergeh (zero, D)));
temp = vec_sr (vec_add (temp, splat2), splat2);
tmp = vec_pack (temp, temp);
vec_st (tmp, 0, dest);
dest += stride;
tmp = vec_avg (vec_perm (ref0, ref1, permA),
vec_perm (ref0, ref1, permB));
} while (--height);
}
#endif
void
MC_avg_8_altivec
(
uint8_t
*
dest
,
uint8_t
*
ref
,
int
stride
,
int
height
)
void
MC_avg_o_16_altivec
(
unsigned
char
*
dest
,
unsigned
char
*
ref
,
int
stride
,
int
height
)
{
vector
unsigned
char
rshift
,
refw0
,
refw1
;
vector
unsigned
char
r
,
d
;
vector_u8_t
perm
,
ref0
,
ref1
,
tmp
,
prev
;
perm
=
vec_lvsl
(
0
,
ref
);
height
=
(
height
>>
1
)
-
1
;
ref0
=
vec_ld
(
0
,
ref
);
ref1
=
vec_ld
(
15
,
ref
);
ref
+=
stride
;
prev
=
vec_ld
(
0
,
dest
);
tmp
=
vec_avg
(
prev
,
vec_perm
(
ref0
,
ref1
,
perm
));
do
{
rshift
=
vec_lvsl
(
0
,
ref
);
refw0
=
vec_ld
(
0
,
ref
);
refw1
=
vec_ld
(
16
,
ref
);
r
=
vec_perm
(
refw0
,
refw1
,
rshift
);
COPY_8
(
&
d
,
dest
);
d
=
vec_avg
(
d
,
r
);
COPY_8
(
dest
,
&
d
);
ref0
=
vec_ld
(
0
,
ref
);
ref1
=
vec_ld
(
15
,
ref
);
ref
+=
stride
;
dest
+=
stride
;
prev
=
vec_ld
(
stride
,
dest
);
vec_st
(
tmp
,
0
,
dest
);
tmp
=
vec_avg
(
prev
,
vec_perm
(
ref0
,
ref1
,
perm
));
ref0
=
vec_ld
(
0
,
ref
);
ref1
=
vec_ld
(
15
,
ref
);
ref
+=
stride
;
prev
=
vec_ld
(
2
*
stride
,
dest
);
vec_st
(
tmp
,
stride
,
dest
);
dest
+=
2
*
stride
;
tmp
=
vec_avg
(
prev
,
vec_perm
(
ref0
,
ref1
,
perm
));
}
while
(
--
height
);
ref0
=
vec_ld
(
0
,
ref
);
ref1
=
vec_ld
(
15
,
ref
);
prev
=
vec_ld
(
stride
,
dest
);
vec_st
(
tmp
,
0
,
dest
);
tmp
=
vec_avg
(
prev
,
vec_perm
(
ref0
,
ref1
,
perm
));
vec_st
(
tmp
,
stride
,
dest
);
}
void
MC_put_x8_altivec
(
uint8_t
*
dest
,
uint8_t
*
ref
,
int
stride
,
int
height
)
void
MC_avg_o_8_altivec
(
unsigned
char
*
dest
,
unsigned
char
*
ref
,
int
stride
,
int
height
)
{
vector
unsigned
char
rshift0
,
rshift1
,
refw0
,
refw1
;
vector
unsigned
char
t0
,
t1
,
d
,
one
;
vector_u8_t
perm0
,
perm1
,
tmp0
,
tmp1
,
ref0
,
ref1
,
prev
;
tmp0
=
vec_lvsl
(
0
,
ref
);
tmp0
=
vec_mergeh
(
tmp0
,
tmp0
);
perm0
=
vec_pack
((
vector_u16_t
)
tmp0
,
(
vector_u16_t
)
tmp0
);
tmp1
=
vec_lvsl
(
stride
,
ref
);
tmp1
=
vec_mergeh
(
tmp1
,
tmp1
);
perm1
=
vec_pack
((
vector_u16_t
)
tmp1
,
(
vector_u16_t
)
tmp1
);
height
=
(
height
>>
1
)
-
1
;
ref0
=
vec_ld
(
0
,
ref
);
ref1
=
vec_ld
(
7
,
ref
);
ref
+=
stride
;
prev
=
vec_ld
(
0
,
dest
);
tmp0
=
vec_avg
(
prev
,
vec_perm
(
ref0
,
ref1
,
perm0
));
one
=
(
vector
unsigned
char
)(
1
);
do
{
rshift0
=
vec_lvsl
(
0
,
ref
);
rshift1
=
vec_add
(
rshift0
,
one
);
refw0
=
vec_ld
(
0
,
ref
);
refw1
=
vec_ld
(
16
,
ref
);
t0
=
vec_perm
(
refw0
,
refw1
,
rshift0
);
t1
=
vec_perm
(
refw0
,
refw1
,
rshift1
);
d
=
vec_avg
(
t0
,
t1
);
COPY_8
(
dest
,
&
d
);
ref0
=
vec_ld
(
0
,
ref
);
ref1
=
vec_ld
(
7
,
ref
);
ref
+=
stride
;
prev
=
vec_ld
(
stride
,
dest
);
vec_ste
((
vector_u32_t
)
tmp0
,
0
,
(
unsigned
int
*
)
dest
);
vec_ste
((
vector_u32_t
)
tmp0
,
4
,
(
unsigned
int
*
)
dest
);
dest
+=
stride
;
tmp1
=
vec_avg
(
prev
,
vec_perm
(
ref0
,
ref1
,
perm1
));
ref0
=
vec_ld
(
0
,
ref
);
ref1
=
vec_ld
(
7
,
ref
);
ref
+=
stride
;
prev
=
vec_ld
(
stride
,
dest
);
vec_ste
((
vector_u32_t
)
tmp1
,
0
,
(
unsigned
int
*
)
dest
);
vec_ste
((
vector_u32_t
)
tmp1
,
4
,
(
unsigned
int
*
)
dest
);
dest
+=
stride
;
tmp0
=
vec_avg
(
prev
,
vec_perm
(
ref0
,
ref1
,
perm0
));
}
while
(
--
height
);
ref0
=
vec_ld
(
0
,
ref
);
ref1
=
vec_ld
(
7
,
ref
);
prev
=
vec_ld
(
stride
,
dest
);
vec_ste
((
vector_u32_t
)
tmp0
,
0
,
(
unsigned
int
*
)
dest
);
vec_ste
((
vector_u32_t
)
tmp0
,
4
,
(
unsigned
int
*
)
dest
);
dest
+=
stride
;
tmp1
=
vec_avg
(
prev
,
vec_perm
(
ref0
,
ref1
,
perm1
));
vec_ste
((
vector_u32_t
)
tmp1
,
0
,
(
unsigned
int
*
)
dest
);
vec_ste
((
vector_u32_t
)
tmp1
,
4
,
(
unsigned
int
*
)
dest
);
}
void
MC_avg_x8_altivec
(
uint8_t
*
dest
,
uint8_t
*
ref
,
int
stride
,
int
height
)
void
MC_avg_x_16_altivec
(
unsigned
char
*
dest
,
unsigned
char
*
ref
,
int
stride
,
int
height
)
{
vector
unsigned
char
rshift0
,
rshift1
,
refw0
,
refw1
;
vector
unsigned
char
t0
,
t1
,
r
,
d
,
one
;
vector_u8_t
permA
,
permB
,
ref0
,
ref1
,
tmp
,
prev
;
permA
=
vec_lvsl
(
0
,
ref
);
permB
=
vec_add
(
permA
,
vec_splat_u8
(
1
));
height
=
(
height
>>
1
)
-
1
;
ref0
=
vec_ld
(
0
,
ref
);
ref1
=
vec_ld
(
16
,
ref
);
prev
=
vec_ld
(
0
,
dest
);
ref
+=
stride
;
tmp
=
vec_avg
(
prev
,
vec_avg
(
vec_perm
(
ref0
,
ref1
,
permA
),
vec_perm
(
ref0
,
ref1
,
permB
)));
one
=
(
vector
unsigned
char
)(
1
);
do
{
rshift0
=
vec_lvsl
(
0
,
ref
);
rshift1
=
vec_add
(
rshift0
,
one
);
refw0
=
vec_ld
(
0
,
ref
);
refw1
=
vec_ld
(
16
,
ref
);
t0
=
vec_perm
(
refw0
,
refw1
,
rshift0
);
t1
=
vec_perm
(
refw0
,
refw1
,
rshift1
);
r
=
vec_avg
(
t0
,
t1
);
COPY_8
(
&
d
,
dest
);
d
=
vec_avg
(
d
,
r
);
COPY_8
(
dest
,
&
d
);
ref0
=
vec_ld
(
0
,
ref
);
ref1
=
vec_ld
(
16
,
ref
);
ref
+=
stride
;
dest
+=
stride
;
prev
=
vec_ld
(
stride
,
dest
);
vec_st
(
tmp
,
0
,
dest
);
tmp
=
vec_avg
(
prev
,
vec_avg
(
vec_perm
(
ref0
,
ref1
,
permA
),
vec_perm
(
ref0
,
ref1
,
permB
)));
ref0
=
vec_ld
(
0
,
ref
);
ref1
=
vec_ld
(
16
,
ref
);
ref
+=
stride
;
prev
=
vec_ld
(
2
*
stride
,
dest
);
vec_st
(
tmp
,
stride
,
dest
);
dest
+=
2
*
stride
;
tmp
=
vec_avg
(
prev
,
vec_avg
(
vec_perm
(
ref0
,
ref1
,
permA
),
vec_perm
(
ref0
,
ref1
,
permB
)));
}
while
(
--
height
);
ref0
=
vec_ld
(
0
,
ref
);
ref1
=
vec_ld
(
16
,
ref
);
prev
=
vec_ld
(
stride
,
dest
);
vec_st
(
tmp
,
0
,
dest
);
tmp
=
vec_avg
(
prev
,
vec_avg
(
vec_perm
(
ref0
,
ref1
,
permA
),
vec_perm
(
ref0
,
ref1
,
permB
)));
vec_st
(
tmp
,
stride
,
dest
);
}
void
MC_put_y8_altivec
(
uint8_t
*
dest
,
uint8_t
*
ref
,
int
stride
,
int
height
)
void
MC_avg_x_8_altivec
(
unsigned
char
*
dest
,
unsigned
char
*
ref
,
int
stride
,
int
height
)
{
vector
unsigned
char
rshift
,
refw0
,
refw1
;
vector
unsigned
char
r0
,
r1
,
d
;
vector_u8_t
perm0A
,
perm0B
,
perm1A
,
perm1B
,
ones
,
tmp0
,
tmp1
,
ref0
,
ref1
;
vector_u8_t
prev
;
ones
=
vec_splat_u8
(
1
);
tmp0
=
vec_lvsl
(
0
,
ref
);
tmp0
=
vec_mergeh
(
tmp0
,
tmp0
);
perm0A
=
vec_pack
((
vector_u16_t
)
tmp0
,
(
vector_u16_t
)
tmp0
);
perm0B
=
vec_add
(
perm0A
,
ones
);
tmp1
=
vec_lvsl
(
stride
,
ref
);
tmp1
=
vec_mergeh
(
tmp1
,
tmp1
);
perm1A
=
vec_pack
((
vector_u16_t
)
tmp1
,
(
vector_u16_t
)
tmp1
);
perm1B
=
vec_add
(
perm1A
,
ones
);
height
=
(
height
>>
1
)
-
1
;
ref0
=
vec_ld
(
0
,
ref
);
ref1
=
vec_ld
(
8
,
ref
);
prev
=
vec_ld
(
0
,
dest
);
ref
+=
stride
;
tmp0
=
vec_avg
(
prev
,
vec_avg
(
vec_perm
(
ref0
,
ref1
,
perm0A
),
vec_perm
(
ref0
,
ref1
,
perm0B
)));
rshift
=
vec_lvsl
(
0
,
ref
);
refw0
=
vec_ld
(
0
,
ref
);
refw1
=
vec_ld
(
16
,
ref
);
r0
=
vec_perm
(
refw0
,
refw1
,
rshift
);
do
{
ref0
=
vec_ld
(
0
,
ref
);
ref1
=
vec_ld
(
8
,
ref
);
ref
+=
stride
;
rshift
=
vec_lvsl
(
0
,
ref
);
refw0
=
vec_ld
(
0
,
ref
);
refw1
=
vec_ld
(
16
,
ref
);
r1
=
vec_perm
(
refw0
,
refw1
,
rshift
);
d
=
vec_avg
(
r0
,
r1
);
r0
=
r1
;
COPY_8
(
dest
,
&
d
);
prev
=
vec_ld
(
stride
,
dest
);
vec_ste
((
vector_u32_t
)
tmp0
,
0
,
(
unsigned
int
*
)
dest
);
vec_ste
((
vector_u32_t
)
tmp0
,
4
,
(
unsigned
int
*
)
dest
);
dest
+=
stride
;
tmp1
=
vec_avg
(
prev
,
vec_avg
(
vec_perm
(
ref0
,
ref1
,
perm1A
),
vec_perm
(
ref0
,
ref1
,
perm1B
)));
ref0
=
vec_ld
(
0
,
ref
);
ref1
=
vec_ld
(
8
,
ref
);
ref
+=
stride
;
prev
=
vec_ld
(
stride
,
dest
);
vec_ste
((
vector_u32_t
)
tmp1
,
0
,
(
unsigned
int
*
)
dest
);
vec_ste
((
vector_u32_t
)
tmp1
,
4
,
(
unsigned
int
*
)
dest
);
dest
+=
stride
;
tmp0
=
vec_avg
(
prev
,
vec_avg
(
vec_perm
(
ref0
,
ref1
,
perm0A
),
vec_perm
(
ref0
,
ref1
,
perm0B
)));
}
while
(
--
height
);
ref0
=
vec_ld
(
0
,
ref
);
ref1
=
vec_ld
(
8
,
ref
);
prev
=
vec_ld
(
stride
,
dest
);
vec_ste
((
vector_u32_t
)
tmp0
,
0
,
(
unsigned
int
*
)
dest
);
vec_ste
((
vector_u32_t
)
tmp0
,
4
,
(
unsigned
int
*
)
dest
);
dest
+=
stride
;
tmp1
=
vec_avg
(
prev
,
vec_avg
(
vec_perm
(
ref0
,
ref1
,
perm1A
),
vec_perm
(
ref0
,
ref1
,
perm1B
)));
vec_ste
((
vector_u32_t
)
tmp1
,
0
,
(
unsigned
int
*
)
dest
);
vec_ste
((
vector_u32_t
)
tmp1
,
4
,
(
unsigned
int
*
)
dest
);
}
void
MC_avg_y8_altivec
(
uint8_t
*
dest
,
uint8_t
*
ref
,
int
stride
,
int
height
)
void
MC_avg_y_16_altivec
(
unsigned
char
*
dest
,
unsigned
char
*
ref
,
int
stride
,
int
height
)
{
vector
unsigned
char
rshift
,
refw0
,
refw1
;
vector
unsigned
char
r0
,
r1
,
r
,
d
;
vector_u8_t
perm
,
ref0
,
ref1
,
tmp0
,
tmp1
,
tmp
,
prev
;
perm
=
vec_lvsl
(
0
,
ref
);
height
=
(
height
>>
1
)
-
1
;
ref0
=
vec_ld
(
0
,
ref
);
ref1
=
vec_ld
(
15
,
ref
);
ref
+=
stride
;
tmp0
=
vec_perm
(
ref0
,
ref1
,
perm
);
ref0
=
vec_ld
(
0
,
ref
);
ref1
=
vec_ld
(
15
,
ref
);
ref
+=
stride
;
prev
=
vec_ld
(
0
,
dest
);
tmp1
=
vec_perm
(
ref0
,
ref1
,
perm
);
tmp
=
vec_avg
(
prev
,
vec_avg
(
tmp0
,
tmp1
));
rshift
=
vec_lvsl
(
0
,
ref
);
refw0
=
vec_ld
(
0
,
ref
);
refw1
=
vec_ld
(
16
,
ref
);
r0
=
vec_perm
(
refw0
,
refw1
,
rshift
);
do
{
ref0
=
vec_ld
(
0
,
ref
);
ref1
=
vec_ld
(
15
,
ref
);
ref
+=
stride
;
rshift
=
vec_lvsl
(
0
,
ref
);
refw0
=
vec_ld
(
0
,
ref
);
refw1
=
vec_ld
(
16
,
ref
);
r1
=
vec_perm
(
refw0
,
refw1
,
rshift
);
r
=
vec_avg
(
r0
,
r1
);
r0
=
r1
;
COPY_8
(
&
d
,
dest
);
d
=
vec_avg
(
d
,
r
);
COPY_8
(
dest
,
&
d
);
dest
+=
stride
;
prev
=
vec_ld
(
stride
,
dest
);
vec_st
(
tmp
,
0
,
dest
);
tmp0
=
vec_perm
(
ref0
,
ref1
,
perm
);
tmp
=
vec_avg
(
prev
,
vec_avg
(
tmp0
,
tmp1
));
ref0
=
vec_ld
(
0
,
ref
);
ref1
=
vec_ld
(
15
,
ref
);
ref
+=
stride
;
prev
=
vec_ld
(
2
*
stride
,
dest
);
vec_st
(
tmp
,
stride
,
dest
);
dest
+=
2
*
stride
;
tmp1
=
vec_perm
(
ref0
,
ref1
,
perm
);
tmp
=
vec_avg
(
prev
,
vec_avg
(
tmp0
,
tmp1
));
}
while
(
--
height
);
ref0
=
vec_ld
(
0
,
ref
);
ref1
=
vec_ld
(
15
,
ref
);
prev
=
vec_ld
(
stride
,
dest
);
vec_st
(
tmp
,
0
,
dest
);
tmp0
=
vec_perm
(
ref0
,
ref1
,
perm
);
tmp
=
vec_avg
(
prev
,
vec_avg
(
tmp0
,
tmp1
));
vec_st
(
tmp
,
stride
,
dest
);
}
void
MC_put_xy8_altivec
(
uint8_t
*
dest
,
uint8_t
*
ref
,
int
stride
,
int
height
)
void
MC_avg_y_8_altivec
(
unsigned
char
*
dest
,
unsigned
char
*
ref
,
int
stride
,
int
height
)
{
vector
unsigned
char
rshift0
,
rshift1
,
refw0
,
refw1
;
vector
unsigned
char
t0
,
t1
,
r0
,
r1
,
d
,
one
;
vector_u8_t
perm0
,
perm1
,
tmp0
,
tmp1
,
tmp
,
ref0
,
ref1
,
prev
;
tmp0
=
vec_lvsl
(
0
,
ref
);
tmp0
=
vec_mergeh
(
tmp0
,
tmp0
);
perm0
=
vec_pack
((
vector_u16_t
)
tmp0
,
(
vector_u16_t
)
tmp0
);
tmp1
=
vec_lvsl
(
stride
,
ref
);
tmp1
=
vec_mergeh
(
tmp1
,
tmp1
);
perm1
=
vec_pack
((
vector_u16_t
)
tmp1
,
(
vector_u16_t
)
tmp1
);
height
=
(
height
>>
1
)
-
1
;
ref0
=
vec_ld
(
0
,
ref
);
ref1
=
vec_ld
(
7
,
ref
);
ref
+=
stride
;
tmp0
=
vec_perm
(
ref0
,
ref1
,
perm0
);
ref0
=
vec_ld
(
0
,
ref
);
ref1
=
vec_ld
(
7
,
ref
);
ref
+=
stride
;
prev
=
vec_ld
(
0
,
dest
);
tmp1
=
vec_perm
(
ref0
,
ref1
,
perm1
);
tmp
=
vec_avg
(
prev
,
vec_avg
(
tmp0
,
tmp1
));
rshift0
=
vec_lvsl
(
0
,
ref
);
one
=
(
vector
unsigned
char
)(
1
);
rshift1
=
vec_add
(
rshift0
,
one
);
refw0
=
vec_ld
(
0
,
ref
);
refw1
=
vec_ld
(
16
,
ref
);
t0
=
vec_perm
(
refw0
,
refw1
,
rshift0
);
t1
=
vec_perm
(
refw0
,
refw1
,
rshift1
);
r0
=
vec_avg
(
t0
,
t1
);
do
{
ref0
=
vec_ld
(
0
,
ref
);
ref1
=
vec_ld
(
7
,
ref
);
ref
+=
stride
;
prev
=
vec_ld
(
stride
,
dest
);
vec_ste
((
vector_u32_t
)
tmp
,
0
,
(
unsigned
int
*
)
dest
);
vec_ste
((
vector_u32_t
)
tmp
,
4
,
(
unsigned
int
*
)
dest
);
dest
+=
stride
;
tmp0
=
vec_perm
(
ref0
,
ref1
,
perm0
);
tmp
=
vec_avg
(
prev
,
vec_avg
(
tmp0
,
tmp1
));
ref0
=
vec_ld
(
0
,
ref
);
ref1
=
vec_ld
(
7
,
ref
);
ref
+=
stride
;
rshift0
=
vec_lvsl
(
0
,
ref
);
rshift1
=
vec_add
(
rshift0
,
one
);
refw0
=
vec_ld
(
0
,
ref
);
refw1
=
vec_ld
(
16
,
ref
);
t0
=
vec_perm
(
refw0
,
refw1
,
rshift0
);
t1
=
vec_perm
(
refw0
,
refw1
,
rshift1
);
r1
=
vec_avg
(
t0
,
t1
);
d
=
vec_avg
(
r0
,
r1
);
r0
=
r1
;
COPY_8
(
dest
,
&
d
);
prev
=
vec_ld
(
stride
,
dest
);
vec_ste
((
vector_u32_t
)
tmp
,
0
,
(
unsigned
int
*
)
dest
);
vec_ste
((
vector_u32_t
)
tmp
,
4
,
(
unsigned
int
*
)
dest
);
dest
+=
stride
;
tmp1
=
vec_perm
(
ref0
,
ref1
,
perm1
);
tmp
=
vec_avg
(
prev
,
vec_avg
(
tmp0
,
tmp1
));
}
while
(
--
height
);
ref0
=
vec_ld
(
0
,
ref
);
ref1
=
vec_ld
(
7
,
ref
);
prev
=
vec_ld
(
stride
,
dest
);
vec_ste
((
vector_u32_t
)
tmp
,
0
,
(
unsigned
int
*
)
dest
);
vec_ste
((
vector_u32_t
)
tmp
,
4
,
(
unsigned
int
*
)
dest
);
dest
+=
stride
;
tmp0
=
vec_perm
(
ref0
,
ref1
,
perm0
);
tmp
=
vec_avg
(
prev
,
vec_avg
(
tmp0
,
tmp1
));
vec_ste
((
vector_u32_t
)
tmp
,
0
,
(
unsigned
int
*
)
dest
);
vec_ste
((
vector_u32_t
)
tmp
,
4
,
(
unsigned
int
*
)
dest
);
}
void
MC_avg_xy8_altivec
(
uint8_t
*
dest
,
uint8_t
*
ref
,
int
stride
,
int
height
)
void
MC_avg_xy_16_altivec
(
unsigned
char
*
dest
,
unsigned
char
*
ref
,
int
stride
,
int
height
)
{
vector
unsigned
char
rshift0
,
rshift1
,
refw0
,
refw1
;
vector
unsigned
char
t0
,
t1
,
r0
,
r1
,
r
,
d
,
one
;
vector_u8_t
permA
,
permB
,
ref0
,
ref1
,
A
,
B
,
avg0
,
avg1
,
xor0
,
xor1
,
tmp
;
vector_u8_t
ones
,
prev
;
ones
=
vec_splat_u8
(
1
);
permA
=
vec_lvsl
(
0
,
ref
);
permB
=
vec_add
(
permA
,
ones
);
height
=
(
height
>>
1
)
-
1
;
ref0
=
vec_ld
(
0
,
ref
);
ref1
=
vec_ld
(
16
,
ref
);
ref
+=
stride
;
A
=
vec_perm
(
ref0
,
ref1
,
permA
);
B
=
vec_perm
(
ref0
,
ref1
,
permB
);
avg0
=
vec_avg
(
A
,
B
);
xor0
=
vec_xor
(
A
,
B
);
ref0
=
vec_ld
(
0
,
ref
);
ref1
=
vec_ld
(
16
,
ref
);
ref
+=
stride
;
prev
=
vec_ld
(
0
,
dest
);
A
=
vec_perm
(
ref0
,
ref1
,
permA
);
B
=
vec_perm
(
ref0
,
ref1
,
permB
);
avg1
=
vec_avg
(
A
,
B
);
xor1
=
vec_xor
(
A
,
B
);
tmp
=
vec_avg
(
prev
,
vec_sub
(
vec_avg
(
avg0
,
avg1
),
vec_and
(
vec_and
(
ones
,
vec_or
(
xor0
,
xor1
)),
vec_xor
(
avg0
,
avg1
))));
rshift0
=
vec_lvsl
(
0
,
ref
);
one
=
(
vector
unsigned
char
)(
1
);
rshift1
=
vec_add
(
rshift0
,
one
);
refw0
=
vec_ld
(
0
,
ref
);
refw1
=
vec_ld
(
16
,
ref
);
t0
=
vec_perm
(
refw0
,
refw1
,
rshift0
);
t1
=
vec_perm
(
refw0
,
refw1
,
rshift1
);
r0
=
vec_avg
(
t0
,
t1
);
do
{
ref0
=
vec_ld
(
0
,
ref
);
ref1
=
vec_ld
(
16
,
ref
);
ref
+=
stride
;
prev
=
vec_ld
(
stride
,
dest
);
vec_st
(
tmp
,
0
,
dest
);
A
=
vec_perm
(
ref0
,
ref1
,
permA
);
B
=
vec_perm
(
ref0
,
ref1
,
permB
);
avg0
=
vec_avg
(
A
,
B
);
xor0
=
vec_xor
(
A
,
B
);
tmp
=
vec_avg
(
prev
,
vec_sub
(
vec_avg
(
avg0
,
avg1
),
vec_and
(
vec_and
(
ones
,
vec_or
(
xor0
,
xor1
)),
vec_xor
(
avg0
,
avg1
))));
ref0
=
vec_ld
(
0
,
ref
);
ref1
=
vec_ld
(
16
,
ref
);
ref
+=
stride
;
prev
=
vec_ld
(
2
*
stride
,
dest
);
vec_st
(
tmp
,
stride
,
dest
);
dest
+=
2
*
stride
;
A
=
vec_perm
(
ref0
,
ref1
,
permA
);
B
=
vec_perm
(
ref0
,
ref1
,
permB
);
avg1
=
vec_avg
(
A
,
B
);
xor1
=
vec_xor
(
A
,
B
);
tmp
=
vec_avg
(
prev
,
vec_sub
(
vec_avg
(
avg0
,
avg1
),
vec_and
(
vec_and
(
ones
,
vec_or
(
xor0
,
xor1
)),
vec_xor
(
avg0
,
avg1
))));
}
while
(
--
height
);
ref0
=
vec_ld
(
0
,
ref
);
ref1
=
vec_ld
(
16
,
ref
);
prev
=
vec_ld
(
stride
,
dest
);
vec_st
(
tmp
,
0
,
dest
);
A
=
vec_perm
(
ref0
,
ref1
,
permA
);
B
=
vec_perm
(
ref0
,
ref1
,
permB
);
avg0
=
vec_avg
(
A
,
B
);
xor0
=
vec_xor
(
A
,
B
);
tmp
=
vec_avg
(
prev
,
vec_sub
(
vec_avg
(
avg0
,
avg1
),
vec_and
(
vec_and
(
ones
,
vec_or
(
xor0
,
xor1
)),
vec_xor
(
avg0
,
avg1
))));
vec_st
(
tmp
,
stride
,
dest
);
}
void
MC_avg_xy_8_altivec
(
unsigned
char
*
dest
,
unsigned
char
*
ref
,
int
stride
,
int
height
)
{
vector_u8_t
perm0A
,
perm0B
,
perm1A
,
perm1B
,
ref0
,
ref1
,
A
,
B
;
vector_u8_t
avg0
,
avg1
,
xor0
,
xor1
,
tmp
,
ones
,
prev
;
ones
=
vec_splat_u8
(
1
);
perm0A
=
vec_lvsl
(
0
,
ref
);
perm0A
=
vec_mergeh
(
perm0A
,
perm0A
);
perm0A
=
vec_pack
((
vector_u16_t
)
perm0A
,
(
vector_u16_t
)
perm0A
);
perm0B
=
vec_add
(
perm0A
,
ones
);
perm1A
=
vec_lvsl
(
stride
,
ref
);
perm1A
=
vec_mergeh
(
perm1A
,
perm1A
);
perm1A
=
vec_pack
((
vector_u16_t
)
perm1A
,
(
vector_u16_t
)
perm1A
);
perm1B
=
vec_add
(
perm1A
,
ones
);
height
=
(
height
>>
1
)
-
1
;
ref0
=
vec_ld
(
0
,
ref
);
ref1
=
vec_ld
(
16
,
ref
);
ref
+=
stride
;
rshift0
=
vec_lvsl
(
0
,
ref
);
rshift1
=
vec_add
(
rshift0
,
one
);
refw0
=
vec_ld
(
0
,
ref
);
refw1
=
vec_ld
(
16
,
ref
);
t0
=
vec_perm
(
refw0
,
refw1
,
rshift0
);
t1
=
vec_perm
(
refw0
,
refw1
,
rshift1
);
r1
=
vec_avg
(
t0
,
t1
);
r
=
vec_avg
(
r0
,
r1
);
r0
=
r1
;
COPY_8
(
&
d
,
dest
);
d
=
vec_avg
(
d
,
r
);
COPY_8
(
dest
,
&
d
);
A
=
vec_perm
(
ref0
,
ref1
,
perm0A
);
B
=
vec_perm
(
ref0
,
ref1
,
perm0B
);
avg0
=
vec_avg
(
A
,
B
);
xor0
=
vec_xor
(
A
,
B
);
ref0
=
vec_ld
(
0
,
ref
);
ref1
=
vec_ld
(
16
,
ref
);
ref
+=
stride
;
prev
=
vec_ld
(
0
,
dest
);
A
=
vec_perm
(
ref0
,
ref1
,
perm1A
);
B
=
vec_perm
(
ref0
,
ref1
,
perm1B
);
avg1
=
vec_avg
(
A
,
B
);
xor1
=
vec_xor
(
A
,
B
);
tmp
=
vec_avg
(
prev
,
vec_sub
(
vec_avg
(
avg0
,
avg1
),
vec_and
(
vec_and
(
ones
,
vec_or
(
xor0
,
xor1
)),
vec_xor
(
avg0
,
avg1
))));
do
{
ref0
=
vec_ld
(
0
,
ref
);
ref1
=
vec_ld
(
16
,
ref
);
ref
+=
stride
;
prev
=
vec_ld
(
stride
,
dest
);
vec_ste
((
vector_u32_t
)
tmp
,
0
,
(
unsigned
int
*
)
dest
);
vec_ste
((
vector_u32_t
)
tmp
,
4
,
(
unsigned
int
*
)
dest
);
dest
+=
stride
;
A
=
vec_perm
(
ref0
,
ref1
,
perm0A
);
B
=
vec_perm
(
ref0
,
ref1
,
perm0B
);
avg0
=
vec_avg
(
A
,
B
);
xor0
=
vec_xor
(
A
,
B
);
tmp
=
vec_avg
(
prev
,
vec_sub
(
vec_avg
(
avg0
,
avg1
),
vec_and
(
vec_and
(
ones
,
vec_or
(
xor0
,
xor1
)),
vec_xor
(
avg0
,
avg1
))));
ref0
=
vec_ld
(
0
,
ref
);
ref1
=
vec_ld
(
16
,
ref
);
ref
+=
stride
;
prev
=
vec_ld
(
stride
,
dest
);
vec_ste
((
vector_u32_t
)
tmp
,
0
,
(
unsigned
int
*
)
dest
);
vec_ste
((
vector_u32_t
)
tmp
,
4
,
(
unsigned
int
*
)
dest
);
dest
+=
stride
;
A
=
vec_perm
(
ref0
,
ref1
,
perm1A
);
B
=
vec_perm
(
ref0
,
ref1
,
perm1B
);
avg1
=
vec_avg
(
A
,
B
);
xor1
=
vec_xor
(
A
,
B
);
tmp
=
vec_avg
(
prev
,
vec_sub
(
vec_avg
(
avg0
,
avg1
),
vec_and
(
vec_and
(
ones
,
vec_or
(
xor0
,
xor1
)),
vec_xor
(
avg0
,
avg1
))));
}
while
(
--
height
);
ref0
=
vec_ld
(
0
,
ref
);
ref1
=
vec_ld
(
16
,
ref
);
prev
=
vec_ld
(
stride
,
dest
);
vec_ste
((
vector_u32_t
)
tmp
,
0
,
(
unsigned
int
*
)
dest
);
vec_ste
((
vector_u32_t
)
tmp
,
4
,
(
unsigned
int
*
)
dest
);
dest
+=
stride
;
A
=
vec_perm
(
ref0
,
ref1
,
perm0A
);
B
=
vec_perm
(
ref0
,
ref1
,
perm0B
);
avg0
=
vec_avg
(
A
,
B
);
xor0
=
vec_xor
(
A
,
B
);
tmp
=
vec_avg
(
prev
,
vec_sub
(
vec_avg
(
avg0
,
avg1
),
vec_and
(
vec_and
(
ones
,
vec_or
(
xor0
,
xor1
)),
vec_xor
(
avg0
,
avg1
))));
vec_ste
((
vector_u32_t
)
tmp
,
0
,
(
unsigned
int
*
)
dest
);
vec_ste
((
vector_u32_t
)
tmp
,
4
,
(
unsigned
int
*
)
dest
);
}
#endif
/* __ALTIVEC__ */
#ifndef __ALTIVEC__
/*****************************************************************************
* Functions exported as capabilities. They are declared as static so that
* we don't pollute the namespace too much.
...
...
@@ -570,22 +2094,22 @@ static void motion_getfunctions( function_list_t * p_function_list )
/* Copying functions */
{
/* Width == 16 */
MC_put_
16_altivec
,
MC_put_x16_altivec
,
MC_put_y16_altivec
,
MC_put_xy
16_altivec
MC_put_
o_16_altivec
,
MC_put_x_16_altivec
,
MC_put_y_16_altivec
,
MC_put_xy_
16_altivec
},
{
/* Width == 8 */
MC_put_
8_altivec
,
MC_put_x8_altivec
,
MC_put_y8_altivec
,
MC_put_xy
8_altivec
MC_put_
o_8_altivec
,
MC_put_x_8_altivec
,
MC_put_y_8_altivec
,
MC_put_xy_
8_altivec
}
},
{
/* Averaging functions */
{
/* Width == 16 */
MC_avg_
16_altivec
,
MC_avg_x16_altivec
,
MC_avg_y16_altivec
,
MC_avg_xy
16_altivec
MC_avg_
o_16_altivec
,
MC_avg_x_16_altivec
,
MC_avg_y_16_altivec
,
MC_avg_xy_
16_altivec
},
{
/* Width == 8 */
MC_avg_
8_altivec
,
MC_avg_x8_altivec
,
MC_avg_y8_altivec
,
MC_avg_xy
8_altivec
MC_avg_
o_8_altivec
,
MC_avg_x_8_altivec
,
MC_avg_y_8_altivec
,
MC_avg_xy_
8_altivec
}
}
};
...
...
@@ -598,3 +2122,5 @@ static void motion_getfunctions( function_list_t * p_function_list )
return
;
}
#endif
/* __ALTIVEC__ */
src/interface/main.c
View file @
746e6074
...
...
@@ -4,7 +4,7 @@
* and spawn threads.
*****************************************************************************
* Copyright (C) 1998, 1999, 2000 VideoLAN
* $Id: main.c,v 1.11
3 2001/09/05 16:07:50
massiot Exp $
* $Id: main.c,v 1.11
4 2001/09/25 11:46:14
massiot Exp $
*
* Authors: Vincent Seguin <seguin@via.ecp.fr>
* Samuel Hocevar <sam@zoy.org>
...
...
@@ -1184,16 +1184,12 @@ static int CPUCapabilities( void )
return
(
i_capabilities
);
#elif defined( __powerpc__ )
# if defined( vector )
/* Test for Altivec */
signal
(
SIGILL
,
InstructionSignalHandler
);
i_illegal
=
0
;
if
(
setjmp
(
env
)
==
0
)
{
/* Set VSCR to 0 */
vec_mtvscr
(
(
vector
unsigned
int
)(
0
)
);
/* Set the VRSAVE register in case the kernel looks at it */
asm
volatile
(
"mtspr 256,%0"
:
:
"r"
(
-
1
));
}
...
...
@@ -1203,7 +1199,6 @@ static int CPUCapabilities( void )
}
signal
(
SIGILL
,
NULL
);
# endif
return
(
i_capabilities
);
...
...
src/video_decoder/vpar_pool.c
View file @
746e6074
...
...
@@ -2,7 +2,7 @@
* vpar_pool.c : management of the pool of decoder threads
*****************************************************************************
* Copyright (C) 1999, 2000, 2001 VideoLAN
* $Id: vpar_pool.c,v 1.
2 2001/08/22 17:21:46
massiot Exp $
* $Id: vpar_pool.c,v 1.
3 2001/09/25 11:46:14
massiot Exp $
*
* Authors: Christophe Massiot <massiot@via.ecp.fr>
*
...
...
@@ -64,6 +64,8 @@ static void DecodeMacroblockPool( vdec_pool_t * p_pool, macroblock_t * p_mb );
*****************************************************************************/
void
vpar_InitPool
(
vpar_thread_t
*
p_vpar
)
{
int
j
;
/* Initialize mutex and cond. */
vlc_mutex_init
(
&
p_vpar
->
pool
.
lock
);
vlc_cond_init
(
&
p_vpar
->
pool
.
wait_empty
);
...
...
@@ -89,6 +91,12 @@ void vpar_InitPool( vpar_thread_t * p_vpar )
p_vpar
->
pool
.
p_vdec
->
b_die
=
0
;
p_vpar
->
pool
.
p_vdec
->
p_pool
=
&
p_vpar
->
pool
;
vdec_InitThread
(
p_vpar
->
pool
.
p_vdec
);
for
(
j
=
0
;
j
<
6
;
j
++
)
{
p_vpar
->
pool
.
mb
.
p_idcts
[
j
].
pi_block
=
memalign
(
16
,
64
*
sizeof
(
dctelem_t
)
);
}
}
/*****************************************************************************
...
...
@@ -124,7 +132,14 @@ void vpar_SpawnPool( vpar_thread_t * p_vpar )
for
(
i
=
p_vpar
->
pool
.
i_smp
-
1
;
i
>=
i_new_smp
;
i
--
)
{
int
j
;
vdec_DestroyThread
(
p_vpar
->
pool
.
pp_vdec
[
i
]
);
for
(
j
=
0
;
j
<
6
;
j
++
)
{
free
(
p_vpar
->
pool
.
p_macroblocks
[
i
].
p_idcts
[
j
].
pi_block
);
}
}
p_vpar
->
pool
.
pp_vdec
=
realloc
(
p_vpar
->
pool
.
pp_vdec
,
...
...
@@ -155,6 +170,14 @@ void vpar_SpawnPool( vpar_thread_t * p_vpar )
for
(
i
=
p_vpar
->
pool
.
i_smp
;
i
<
i_new_smp
;
i
++
)
{
int
j
;
for
(
j
=
0
;
j
<
6
;
j
++
)
{
p_vpar
->
pool
.
p_macroblocks
[
i
].
p_idcts
[
j
].
pi_block
=
memalign
(
16
,
64
*
sizeof
(
dctelem_t
)
);
}
p_vpar
->
pool
.
pp_vdec
[
i
]
=
vdec_CreateThread
(
&
p_vpar
->
pool
);
}
...
...
@@ -203,7 +226,14 @@ void vpar_EndPool( vpar_thread_t * p_vpar )
for
(
i
=
0
;
i
<
p_vpar
->
pool
.
i_smp
;
i
++
)
{
int
j
;
vdec_DestroyThread
(
p_vpar
->
pool
.
pp_vdec
[
i
]
);
for
(
j
=
0
;
j
<
6
;
j
++
)
{
free
(
p_vpar
->
pool
.
p_macroblocks
[
i
].
p_idcts
[
j
].
pi_block
);
}
}
if
(
p_vpar
->
pool
.
i_smp
)
...
...
src/video_output/video_output.c
View file @
746e6074
...
...
@@ -5,7 +5,7 @@
* thread, and destroy a previously oppened video output thread.
*****************************************************************************
* Copyright (C) 2000 VideoLAN
* $Id: video_output.c,v 1.13
8 2001/08/22 21:18:43 gbazin
Exp $
* $Id: video_output.c,v 1.13
9 2001/09/25 11:46:14 massiot
Exp $
*
* Authors: Vincent Seguin <seguin@via.ecp.fr>
*
...
...
@@ -402,10 +402,10 @@ subpicture_t *vout_CreateSubPicture( vout_thread_t *p_vout, int i_type,
switch
(
i_type
)
{
case
TEXT_SUBPICTURE
:
/* text subpicture */
p_free_subpic
->
p_data
=
m
alloc
(
i_size
+
1
);
p_free_subpic
->
p_data
=
m
emalign
(
16
,
i_size
+
1
);
break
;
case
DVD_SUBPICTURE
:
/* DVD subpicture unit */
p_free_subpic
->
p_data
=
m
alloc
(
i_size
);
p_free_subpic
->
p_data
=
m
emalign
(
16
,
i_size
);
break
;
#ifdef DEBUG
default:
...
...
@@ -623,21 +623,24 @@ picture_t *vout_CreatePicture( vout_thread_t *p_vout, int i_type,
{
case
YUV_420_PICTURE
:
/* YUV 420: 1,1/4,1/4 samples per pixel */
i_chroma_width
=
i_width
/
2
;
p_free_picture
->
p_data
=
malloc
(
i_height
*
i_chroma_width
*
3
*
sizeof
(
yuv_data_t
)
);
p_free_picture
->
p_data
=
memalign
(
16
,
i_height
*
i_chroma_width
*
3
*
sizeof
(
yuv_data_t
)
);
p_free_picture
->
p_y
=
(
yuv_data_t
*
)
p_free_picture
->
p_data
;
p_free_picture
->
p_u
=
(
yuv_data_t
*
)
p_free_picture
->
p_data
+
i_height
*
i_chroma_width
*
4
/
2
;
p_free_picture
->
p_v
=
(
yuv_data_t
*
)
p_free_picture
->
p_data
+
i_height
*
i_chroma_width
*
5
/
2
;
break
;
case
YUV_422_PICTURE
:
/* YUV 422: 1,1/2,1/2 samples per pixel */
i_chroma_width
=
i_width
/
2
;
p_free_picture
->
p_data
=
malloc
(
i_height
*
i_chroma_width
*
4
*
sizeof
(
yuv_data_t
)
);
p_free_picture
->
p_data
=
memalign
(
16
,
i_height
*
i_chroma_width
*
4
*
sizeof
(
yuv_data_t
)
);
p_free_picture
->
p_y
=
(
yuv_data_t
*
)
p_free_picture
->
p_data
;
p_free_picture
->
p_u
=
(
yuv_data_t
*
)
p_free_picture
->
p_data
+
i_height
*
i_chroma_width
*
2
;
p_free_picture
->
p_v
=
(
yuv_data_t
*
)
p_free_picture
->
p_data
+
i_height
*
i_chroma_width
*
3
;
break
;
case
YUV_444_PICTURE
:
/* YUV 444: 1,1,1 samples per pixel */
i_chroma_width
=
i_width
;
p_free_picture
->
p_data
=
malloc
(
i_height
*
i_chroma_width
*
3
*
sizeof
(
yuv_data_t
)
);
p_free_picture
->
p_data
=
memalign
(
16
,
i_height
*
i_chroma_width
*
3
*
sizeof
(
yuv_data_t
)
);
p_free_picture
->
p_y
=
(
yuv_data_t
*
)
p_free_picture
->
p_data
;
p_free_picture
->
p_u
=
(
yuv_data_t
*
)
p_free_picture
->
p_data
+
i_height
*
i_chroma_width
;
p_free_picture
->
p_v
=
(
yuv_data_t
*
)
p_free_picture
->
p_data
+
i_height
*
i_chroma_width
*
2
;
...
...
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