Skip to content
GitLab
Menu
Projects
Groups
Snippets
Loading...
Help
Help
Support
Community forum
Keyboard shortcuts
?
Submit feedback
Contribute to GitLab
Sign in / Register
Toggle navigation
Menu
Open sidebar
Xiph.Org
aom-rav1e
Commits
18366964
Commit
18366964
authored
Nov 10, 2014
by
Johann
Committed by
Gerrit Code Review
Nov 10, 2014
Browse files
Merge "Remove asm offset dependencies"
parents
d8362a38
6eec73a7
Changes
30
Hide whitespace changes
Inline
Side-by-side
build/arm-msvs/obj_int_extract.bat
deleted
100644 → 0
View file @
d8362a38
REM Copyright (c) 2013 The WebM project authors. All Rights Reserved.
REM
REM Use of this source code is governed by a BSD-style license
REM that can be found in the LICENSE file in the root of the source
REM tree. An additional intellectual property rights grant can be found
REM in the file PATENTS. All contributing project authors may
REM be found in the AUTHORS file in the root of the source tree.
echo
on
REM Arguments:
REM %1 - Relative path to the directory containing the vp8 and vpx_scale
REM source directories.
REM %2 - Path to obj_int_extract.exe.
cl
/I
.
/I
%
1
/nologo /c /DWINAPI
_FAMILY
=
WINAPI_FAMILY_PHONE_APP
"
%
~1/vp8/encoder/vp8_asm_enc_offsets.c"
%
2
\obj_int_extract.exe
rvds
"vp8_asm_enc_offsets.obj"
>
"vp8_asm_enc_offsets.asm"
cl
/I
.
/I
%
1
/nologo /c /DWINAPI
_FAMILY
=
WINAPI_FAMILY_PHONE_APP
"
%
~1/vpx_scale/vpx_scale_asm_offsets.c"
%
2
\obj_int_extract.exe
rvds
"vpx_scale_asm_offsets.obj"
>
"vpx_scale_asm_offsets.asm"
build/make/Android.mk
View file @
18366964
...
...
@@ -43,7 +43,7 @@
# will remove any NEON dependency.
# To change to building armeabi, run ./libvpx/configure again, but with
# --target=arm
5te
-android-gcc and modify the Application.mk file to
# --target=arm
v6
-android-gcc and modify the Application.mk file to
# set APP_ABI := armeabi
#
# Running ndk-build will build libvpx and include it in your project.
...
...
@@ -60,7 +60,7 @@ ifeq ($(TARGET_ARCH_ABI),armeabi-v7a)
include
$(CONFIG_DIR)libs-armv7-android-gcc.mk
LOCAL_ARM_MODE
:=
arm
else
ifeq
($(TARGET_ARCH_ABI),armeabi)
include
$(CONFIG_DIR)libs-armv
5te
-android-gcc.mk
include
$(CONFIG_DIR)libs-armv
6
-android-gcc.mk
LOCAL_ARM_MODE
:=
arm
else
ifeq
($(TARGET_ARCH_ABI),arm64-v8a)
include
$(CONFIG_DIR)libs-armv8-android-gcc.mk
...
...
@@ -91,51 +91,8 @@ LOCAL_CFLAGS := -O3
# like x86inc.asm and x86_abi_support.asm
LOCAL_ASMFLAGS
:=
-I
$(LIBVPX_PATH)
# -----------------------------------------------------------------------------
# Template : asm_offsets_template
# Arguments : 1: assembly offsets file to be created
# 2: c file to base assembly offsets on
# Returns : None
# Usage : $(eval $(call asm_offsets_template,<asmfile>, <srcfile>
# Rationale : Create offsets at compile time using for structures that are
# defined in c, but used in assembly functions.
# -----------------------------------------------------------------------------
define
asm_offsets_template
_SRC
:=
$(2)
_OBJ
:=
$(ASM_CNV_PATH)
/
$
$(
notdir
$(2)
)
.S
_FLAGS
=
$$
(
$
$(my)
CFLAGS
)
\
$
$(
call
get-src-file-target-cflags,
$(2)
)
\
$
$(
call
host-c-includes,
$
$(LOCAL_C_INCLUDES)
$
$(CONFIG_DIR)
)
\
$
$(LOCAL_CFLAGS)
\
$
$(NDK_APP_CFLAGS)
\
$
$(
call
host-c-includes,
$$
(
$(my)
C_INCLUDES
))
\
-DINLINE_ASM
\
-S
\
_TEXT
=
"Compile
$
$(
call
get-src-file-text,
$(2)
)
"
_CC
=
$
$(TARGET_CC)
$$(eval
$$(call
ev-build-file))
$(1)
:
$$(_OBJ) $(2)
@
mkdir
-p
$
$(
dir
$$
@
)
@
grep
$(OFFSET_PATTERN)
$$
< |
tr
-d
'\#'
|
$(CONFIG_DIR)$(ASM_CONVERSION)
>
$$
@
endef
# Use ads2gas script to convert from RVCT format to GAS format. This
# puts the processed file under $(ASM_CNV_PATH). Local clean rule
# to handle removing these
ifeq
($(CONFIG_VP8_ENCODER), yes)
ASM_CNV_OFFSETS_DEPEND
+=
$(ASM_CNV_PATH)
/vp8_asm_enc_offsets.asm
endif
ifeq
($(HAVE_NEON_ASM), yes)
ASM_CNV_OFFSETS_DEPEND
+=
$(ASM_CNV_PATH)
/vpx_scale_asm_offsets.asm
endif
.PRECIOUS
:
%.asm.s
$(ASM_CNV_PATH)/libvpx/%.asm.s
:
$(LIBVPX_PATH)/%.asm
$(ASM_CNV_OFFSETS_DEPEND)
$(ASM_CNV_PATH)/libvpx/%.asm.s
:
$(LIBVPX_PATH)/%.asm
@
mkdir
-p
$(
dir
$@
)
@
$(CONFIG_DIR)$(ASM_CONVERSION)
<
$<
>
$@
...
...
@@ -224,24 +181,11 @@ endif
clean
:
@
echo
"Clean: ads2gas files [
$(TARGET_ARCH_ABI)
]"
@
$(RM)
$(CODEC_SRCS_ASM_ADS2GAS)
$(CODEC_SRCS_ASM_NEON_ADS2GAS)
@
$(RM)
$(
patsubst
%.asm, %.
*
,
$(ASM_CNV_OFFSETS_DEPEND)
)
@
$(RM)
-r
$(ASM_CNV_PATH)
@
$(RM)
$
(
CLEAN-OBJS
)
include
$(BUILD_SHARED_LIBRARY)
ifeq
($(HAVE_NEON), yes)
$(eval
$(call
asm_offsets_template,\
$(ASM_CNV_PATH)/vpx_scale_asm_offsets.asm,
\
$(LIBVPX_PATH)/vpx_scale/vpx_scale_asm_offsets.c))
endif
ifeq
($(CONFIG_VP8_ENCODER), yes)
$(eval
$(call
asm_offsets_template,\
$(ASM_CNV_PATH)/vp8_asm_enc_offsets.asm,
\
$(LIBVPX_PATH)/vp8/encoder/vp8_asm_enc_offsets.c))
endif
ifeq
($(CONFIG_RUNTIME_CPU_DETECT),yes)
$(call
import-module,cpufeatures)
endif
build/make/Makefile
View file @
18366964
...
...
@@ -216,14 +216,6 @@ else
$(qexec)
cp
$<
$@
endif
#
# Rule to extract assembly constants from C sources
#
obj_int_extract
:
build/make/obj_int_extract.c
$(
if
$(quiet)
,@echo
" [HOSTCC]
$@
"
)
$(qexec)$(HOSTCC)
-I
.
-I
$(SRC_PATH_BARE)
-o
$@
$<
CLEAN-OBJS
+=
obj_int_extract
#
# Utility functions
#
...
...
@@ -424,11 +416,7 @@ ifneq ($(call enabled,DIST-SRCS),)
DIST-SRCS-$(CONFIG_MSVS)
+=
build/make/gen_msvs_sln.sh
DIST-SRCS-$(CONFIG_MSVS)
+=
build/make/gen_msvs_vcxproj.sh
DIST-SRCS-$(CONFIG_MSVS)
+=
build/make/msvs_common.sh
DIST-SRCS-$(CONFIG_MSVS)
+=
build/x86-msvs/obj_int_extract.bat
DIST-SRCS-$(CONFIG_MSVS)
+=
build/arm-msvs/obj_int_extract.bat
DIST-SRCS-$(CONFIG_RVCT)
+=
build/make/armlink_adapter.sh
# Include obj_int_extract if we use offsets from *_asm_*_offsets
DIST-SRCS-$(ARCH_ARM)$(ARCH_X86)$(ARCH_X86_64)
+=
build/make/obj_int_extract.c
DIST-SRCS-$(ARCH_ARM)
+=
build/make/ads2gas.pl
DIST-SRCS-$(ARCH_ARM)
+=
build/make/ads2gas_apple.pl
DIST-SRCS-$(ARCH_ARM)
+=
build/make/ads2armasm_ms.pl
...
...
build/make/configure.sh
View file @
18366964
...
...
@@ -822,18 +822,12 @@ process_common_toolchain() {
soft_enable neon
soft_enable neon_asm
soft_enable media
soft_enable edsp
soft_enable fast_unaligned
;;
armv6
)
soft_enable media
soft_enable edsp
soft_enable fast_unaligned
;;
armv5te
)
soft_enable edsp
disable_feature fast_unaligned
;;
esac
asm_conversion_cmd
=
"cat"
...
...
build/make/gen_msvs_proj.sh
View file @
18366964
...
...
@@ -295,22 +295,7 @@ generate_vcproj() {
case
"
$target
"
in
x86
*
)
case
"
$name
"
in
obj_int_extract
)
tag Tool
\
Name
=
"VCCLCompilerTool"
\
Optimization
=
"0"
\
AdditionalIncludeDirectories
=
"
$incs
"
\
PreprocessorDefinitions
=
"WIN32;DEBUG;_CONSOLE;_CRT_SECURE_NO_WARNINGS;_CRT_SECURE_NO_DEPRECATE"
\
RuntimeLibrary
=
"
$debug_runtime
"
\
WarningLevel
=
"3"
\
DebugInformationFormat
=
"1"
\
$warn_64bit
\
;;
vpx
)
tag Tool
\
Name
=
"VCPreBuildEventTool"
\
CommandLine
=
"call obj_int_extract.bat "
$src_path_bare
"
$plat_no_ws
\\\$
(ConfigurationName)"
\
tag Tool
\
Name
=
"VCCLCompilerTool"
\
Optimization
=
"0"
\
...
...
@@ -347,11 +332,6 @@ generate_vcproj() {
case
"
$target
"
in
x86
*
)
case
"
$name
"
in
obj_int_extract
)
tag Tool
\
Name
=
"VCLinkerTool"
\
GenerateDebugInformation
=
"true"
\
;;
*
)
tag Tool
\
Name
=
"VCLinkerTool"
\
...
...
@@ -400,24 +380,7 @@ generate_vcproj() {
case
"
$target
"
in
x86
*
)
case
"
$name
"
in
obj_int_extract
)
tag Tool
\
Name
=
"VCCLCompilerTool"
\
Optimization
=
"2"
\
FavorSizeorSpeed
=
"1"
\
AdditionalIncludeDirectories
=
"
$incs
"
\
PreprocessorDefinitions
=
"WIN32;NDEBUG;_CONSOLE;_CRT_SECURE_NO_WARNINGS;_CRT_SECURE_NO_DEPRECATE"
\
RuntimeLibrary
=
"
$release_runtime
"
\
UsePrecompiledHeader
=
"0"
\
WarningLevel
=
"3"
\
DebugInformationFormat
=
"0"
\
$warn_64bit
\
;;
vpx
)
tag Tool
\
Name
=
"VCPreBuildEventTool"
\
CommandLine
=
"call obj_int_extract.bat "
$src_path_bare
"
$plat_no_ws
\\\$
(ConfigurationName)"
\
tag Tool
\
Name
=
"VCCLCompilerTool"
\
Optimization
=
"2"
\
...
...
@@ -456,11 +419,6 @@ generate_vcproj() {
case
"
$target
"
in
x86
*
)
case
"
$name
"
in
obj_int_extract
)
tag Tool
\
Name
=
"VCLinkerTool"
\
GenerateDebugInformation
=
"true"
\
;;
*
)
tag Tool
\
Name
=
"VCLinkerTool"
\
...
...
build/make/gen_msvs_vcxproj.sh
View file @
18366964
...
...
@@ -262,15 +262,9 @@ case "$target" in
asm_Release_cmdline
=
"yasm -Xvc -f win32
${
yasmincs
}
"%(FullPath)""
;;
arm
*
)
platforms[0]
=
"ARM"
asm_Debug_cmdline
=
"armasm -nologo "%(FullPath)""
asm_Release_cmdline
=
"armasm -nologo "%(FullPath)""
if
[
"
$name
"
=
"obj_int_extract"
]
;
then
# We don't want to build this tool for the target architecture,
# but for an architecture we can run locally during the build.
platforms[0]
=
"Win32"
else
platforms[0]
=
"ARM"
fi
;;
*
)
die
"Unsupported target
$target
!"
;;
...
...
@@ -400,23 +394,13 @@ generate_vcxproj() {
if
[
"
$hostplat
"
==
"ARM"
]
;
then
hostplat
=
Win32
fi
open_tag PreBuildEvent
tag_content Command
"call obj_int_extract.bat "
$src_path_bare
"
$hostplat
\\\$
(Configuration)"
close_tag PreBuildEvent
fi
open_tag ClCompile
if
[
"
$config
"
=
"Debug"
]
;
then
opt
=
Disabled
runtime
=
$debug_runtime
curlibs
=
$debug_libs
case
"
$name
"
in
obj_int_extract
)
debug
=
DEBUG
;;
*
)
debug
=
_DEBUG
;;
esac
debug
=
_DEBUG
else
opt
=
MaxSpeed
runtime
=
$release_runtime
...
...
@@ -424,14 +408,7 @@ generate_vcxproj() {
tag_content FavorSizeOrSpeed Speed
debug
=
NDEBUG
fi
case
"
$name
"
in
obj_int_extract
)
extradefines
=
";_CONSOLE"
;;
*
)
extradefines
=
";
$defines
"
;;
esac
extradefines
=
";
$defines
"
tag_content Optimization
$opt
tag_content AdditionalIncludeDirectories
"
$incs
;%(AdditionalIncludeDirectories)"
tag_content PreprocessorDefinitions
"WIN32;
$debug
;_CRT_SECURE_NO_WARNINGS;_CRT_SECURE_NO_DEPRECATE
$extradefines
;%(PreprocessorDefinitions)"
...
...
@@ -451,10 +428,6 @@ generate_vcxproj() {
case
"
$proj_kind
"
in
exe
)
open_tag Link
if
[
"
$name
"
!=
"obj_int_extract"
]
;
then
tag_content AdditionalDependencies
"
$curlibs
;%(AdditionalDependencies)"
tag_content AdditionalLibraryDirectories
"
$libdirs
;%(AdditionalLibraryDirectories)"
fi
tag_content GenerateDebugInformation
true
# Console is the default normally, but if
# AppContainerApplication is set, we need to override it.
...
...
build/make/rtcd.pl
View file @
18366964
...
...
@@ -379,14 +379,11 @@ if ($opts{arch} eq 'x86') {
}
close
CONFIG_FILE
;
mips
;
}
elsif
(
$opts
{
arch
}
eq
'
armv5te
')
{
@ALL_ARCHS
=
filter
(
qw/edsp/
);
arm
;
}
elsif
(
$opts
{
arch
}
eq
'
armv6
')
{
@ALL_ARCHS
=
filter
(
qw/
edsp
media/
);
@ALL_ARCHS
=
filter
(
qw/media/
);
arm
;
}
elsif
(
$opts
{
arch
}
eq
'
armv7
')
{
@ALL_ARCHS
=
filter
(
qw/
edsp
media neon_asm neon/
);
@ALL_ARCHS
=
filter
(
qw/media neon_asm neon/
);
@REQUIRES
=
filter
(
keys
%required
?
keys
%required
:
qw/media/
);
&require
(
@REQUIRES
);
arm
;
...
...
build/x86-msvs/obj_int_extract.bat
deleted
100644 → 0
View file @
d8362a38
REM Copyright (c) 2011 The WebM project authors. All Rights Reserved.
REM
REM Use of this source code is governed by a BSD-style license
REM that can be found in the LICENSE file in the root of the source
REM tree. An additional intellectual property rights grant can be found
REM in the file PATENTS. All contributing project authors may
REM be found in the AUTHORS file in the root of the source tree.
echo
on
REM Arguments:
REM %1 - Relative path to the directory containing the vp8 source directory.
REM %2 - Path to obj_int_extract.exe.
cl
/I
.
/I
%
1
/nologo /c
"
%
~1/vp8/encoder/vp8_asm_enc_offsets.c"
%
2
\obj_int_extract.exe
rvds
"vp8_asm_enc_offsets.obj"
>
"vp8_asm_enc_offsets.asm"
configure
View file @
18366964
...
...
@@ -451,8 +451,6 @@ process_targets() {
enabled child
||
write_common_config_banner
enabled universal
||
write_common_target_config_h
${
BUILD_PFX
}
vpx_config.h
# TODO: add host tools target (obj_int_extract, etc)
# For fat binaries, call configure recursively to configure for each
# binary architecture to be included.
if
enabled universal
;
then
...
...
libs.mk
View file @
18366964
...
...
@@ -17,32 +17,6 @@ else
ASM
:=
.asm
endif
#
# Calculate platform- and compiler-specific offsets for hand coded assembly
#
ifeq
($(filter icc gcc,$(TGT_CC)), $(TGT_CC))
OFFSET_PATTERN
:=
'^[a-zA-Z0-9_]* EQU'
define
asm_offsets_template
$$(BUILD_PFX)$(1)
:
$$(BUILD_PFX)$(2).S
@
echo
" [CREATE]
$$
@"
$
$(qexec)LC_ALL
=
C
grep
$
$(OFFSET_PATTERN)
$$
< |
tr
-d
'$$$$\#'
$
$(ADS2GAS)
>
$$
@
$$(BUILD_PFX)$(2).S
:
$(2)
CLEAN-OBJS
+=
$
$(BUILD_PFX)$(1)
$(2)
.S
endef
else
ifeq
($(filter rvct,$(TGT_CC)), $(TGT_CC))
define
asm_offsets_template
$$(BUILD_PFX)$(1)
:
obj_int_extract
$$(BUILD_PFX)$(1)
:
$$(BUILD_PFX)$(2).o
@
echo
" [CREATE]
$$
@"
$
$(qexec)
./obj_int_extract rvds
$$
<
$
$(ADS2GAS)
>
$$
@
OBJS-yes
+=
$
$(BUILD_PFX)$(2)
.o
CLEAN-OBJS
+=
$
$(BUILD_PFX)$(1)
$$(filter %$$(ASM).o,$$(OBJS-yes))
:
$$(BUILD_PFX)$(1)
endef
endif
# rvct
endif
# !gcc
#
# Rule to generate runtime cpu detection files
#
...
...
@@ -212,26 +186,6 @@ CLEAN-OBJS += libvpx_srcs.txt
ifeq
($(CONFIG_EXTERNAL_BUILD),yes)
ifeq
($(CONFIG_MSVS),yes)
obj_int_extract.bat
:
$(SRC_PATH_BARE)/build/$(MSVS_ARCH_DIR)/obj_int_extract.bat
@
cp
$^
$@
obj_int_extract.$(VCPROJ_SFX)
:
obj_int_extract.bat
obj_int_extract.$(VCPROJ_SFX)
:
$(SRC_PATH_BARE)/build/make/obj_int_extract.c
@
echo
" [CREATE]
$@
"
$(qexec)$(GEN_VCPROJ)
\
--exe
\
--target
=
$(TOOLCHAIN)
\
--name
=
obj_int_extract
\
--ver
=
$(CONFIG_VS_VERSION)
\
--proj-guid
=
E1360C65-D375-4335-8057-7ED99CC3F9B2
\
--src-path-bare
=
"
$(SRC_PATH_BARE)
"
\
$(
if
$(CONFIG_STATIC_MSVCRT)
,--static-crt
)
\
--out
=
$@
$^
\
-I
.
\
-I
"
$(SRC_PATH_BARE)
"
\
PROJECTS-$(BUILD_LIBVPX)
+=
obj_int_extract.
$(VCPROJ_SFX)
vpx.def
:
$(call enabled
,
CODEC_EXPORTS)
@
echo
" [CREATE]
$@
"
$(qexec)$(SRC_PATH_BARE)
/build/make/gen_msvs_def.sh
\
...
...
@@ -246,7 +200,7 @@ ASM_INCLUDES := \
vpx_config.asm
\
vpx_ports/x86_abi_support.asm
\
vpx.$(VCPROJ_SFX)
:
$(CODEC_SRCS) vpx.def
obj_int_extract.$(VCPROJ_SFX)
vpx.$(VCPROJ_SFX)
:
$(CODEC_SRCS) vpx.def
@
echo
" [CREATE]
$@
"
$(qexec)$(GEN_VCPROJ)
\
$(
if
$(CONFIG_SHARED)
,--dll,--lib
)
\
...
...
@@ -377,7 +331,7 @@ CLEAN-OBJS += $(BUILD_PFX)vpx_config.asm
endif
#
# Add assembler dependencies for configuration
and offsets
# Add assembler dependencies for configuration
.
#
$(filter %.s.o,$(OBJS-yes))
:
$(BUILD_PFX)vpx_config.asm
$(filter %$(ASM).o,$(OBJS-yes))
:
$(BUILD_PFX)vpx_config.asm
...
...
solution.mk
View file @
18366964
...
...
@@ -9,7 +9,7 @@
##
# libvpx reverse dependencies (targets that depend on libvpx)
VPX_NONDEPS
=
$(
addsuffix
.
$(VCPROJ_SFX)
,vpx gtest
obj_int_extract
)
VPX_NONDEPS
=
$(
addsuffix
.
$(VCPROJ_SFX)
,vpx gtest
)
VPX_RDEPS
=
$(
foreach
vcp,
\
$(
filter-out
$(VPX_NONDEPS)
,
$^
)
,
--dep
=
$
(
vcp:.
$(VCPROJ_SFX)
=
)
:vpx
)
...
...
@@ -17,7 +17,6 @@ vpx.sln: $(wildcard *.$(VCPROJ_SFX))
@
echo
" [CREATE]
$@
"
$(SRC_PATH_BARE)
/build/make/gen_msvs_sln.sh
\
$(
if
$(
filter
vpx.
$(VCPROJ_SFX)
,
$^
)
,
$(VPX_RDEPS)
)
\
--dep
=
vpx:obj_int_extract
\
--dep
=
test_libvpx:gtest
\
--ver
=
$(CONFIG_VS_VERSION)
\
--out
=
$@
$^
...
...
test/quantize_test.cc
View file @
18366964
...
...
@@ -181,12 +181,6 @@ INSTANTIATE_TEST_CASE_P(
&
vp8_regular_quantize_b_c
)));
#endif // HAVE_SSE4_1
#if HAVE_MEDIA
INSTANTIATE_TEST_CASE_P
(
MEDIA
,
QuantizeTest
,
::
testing
::
Values
(
make_tuple
(
&
vp8_fast_quantize_b_armv6
,
&
vp8_fast_quantize_b_c
)));
#endif // HAVE_MEDIA
#if HAVE_NEON
INSTANTIATE_TEST_CASE_P
(
NEON
,
QuantizeTest
,
::
testing
::
Values
(
make_tuple
(
&
vp8_fast_quantize_b_neon
,
...
...
vp8/common/rtcd_defs.pl
View file @
18366964
...
...
@@ -454,8 +454,7 @@ add_proto qw/void vp8_regular_quantize_b/, "struct block *, struct blockd *";
specialize
qw/vp8_regular_quantize_b sse2 sse4_1/
;
add_proto
qw/void vp8_fast_quantize_b/
,
"
struct block *, struct blockd *
";
specialize
qw/vp8_fast_quantize_b sse2 ssse3 media neon/
;
$vp8_fast_quantize_b_media
=
vp8_fast_quantize_b_armv6
;
specialize
qw/vp8_fast_quantize_b sse2 ssse3 neon/
;
#
# Block subtraction
...
...
@@ -473,16 +472,13 @@ specialize qw/vp8_mbuverror mmx sse2/;
$vp8_mbuverror_sse2
=
vp8_mbuverror_xmm
;
add_proto
qw/void vp8_subtract_b/
,
"
struct block *be, struct blockd *bd, int pitch
";
specialize
qw/vp8_subtract_b mmx sse2 media neon/
;
$vp8_subtract_b_media
=
vp8_subtract_b_armv6
;
specialize
qw/vp8_subtract_b mmx sse2 neon/
;
add_proto
qw/void vp8_subtract_mby/
,
"
short *diff, unsigned char *src, int src_stride, unsigned char *pred, int pred_stride
";
specialize
qw/vp8_subtract_mby mmx sse2 media neon/
;
$vp8_subtract_mby_media
=
vp8_subtract_mby_armv6
;
specialize
qw/vp8_subtract_mby mmx sse2 neon/
;
add_proto
qw/void vp8_subtract_mbuv/
,
"
short *diff, unsigned char *usrc, unsigned char *vsrc, int src_stride, unsigned char *upred, unsigned char *vpred, int pred_stride
";
specialize
qw/vp8_subtract_mbuv mmx sse2 media neon/
;
$vp8_subtract_mbuv_media
=
vp8_subtract_mbuv_armv6
;
specialize
qw/vp8_subtract_mbuv mmx sse2 neon/
;
#
# Motion search
...
...
vp8/encoder/arm/armv5te/boolhuff_armv5te.asm
deleted
100644 → 0
View file @
d8362a38
;
; Copyright (c) 2010 The WebM project authors. All Rights Reserved.
;
; Use of this source code is governed by a BSD-style license
; that can be found in the LICENSE file in the root of the source
; tree. An additional intellectual property rights grant can be found
; in the file PATENTS. All contributing project authors may
; be found in the AUTHORS file in the root of the source tree.
;
EXPORT
|
vp8_start_encode
|
EXPORT
|
vp8_encode_bool
|
EXPORT
|
vp8_stop_encode
|
EXPORT
|
vp8_encode_value
|
IMPORT
|
vp8_validate_buffer_arm
|
INCLUDE
vp8_asm_enc_offsets.asm
ARM
REQUIRE8
PRESERVE8
AREA
|
.text
|
,
CODE
,
READONLY
; macro for validating write buffer position
; needs vp8_writer in r0
; start shall not be in r1
MACRO
VALIDATE_POS
$
start
,
$
pos
push
{
r0
-
r3
,
r12
,
lr
}
; rest of regs are preserved by subroutine call
ldr
r2
,
[
r0
,
#
vp8_writer_buffer_end
]
ldr
r3
,
[
r0
,
#
vp8_writer_error
]
mov
r1
,
$
pos
mov
r0
,
$
start
bl
vp8_validate_buffer_arm
pop
{
r0
-
r3
,
r12
,
lr
}
MEND
; r0 BOOL_CODER *br
; r1 unsigned char *source
; r2 unsigned char *source_end
|
vp8_start_encode
|
PROC
str
r2
,
[
r0
,
#
vp8_writer_buffer_end
]
mov
r12
,
#
0
mov
r3
,
#
255
mvn
r2
,
#
23
str
r12
,
[
r0
,
#
vp8_writer_lowvalue
]
str
r3
,
[
r0
,
#
vp8_writer_range
]
str
r2
,
[
r0
,
#
vp8_writer_count
]
str
r12
,
[
r0
,
#
vp8_writer_pos
]
str
r1
,
[
r0
,
#
vp8_writer_buffer
]
bx
lr
ENDP
; r0 BOOL_CODER *br
; r1 int bit
; r2 int probability
|
vp8_encode_bool
|
PROC
push
{
r4
-
r10
,
lr
}
mov
r4
,
r2
ldr
r2
,
[
r0
,
#
vp8_writer_lowvalue
]
ldr
r5
,
[
r0
,
#
vp8_writer_range
]
ldr
r3
,
[
r0
,
#
vp8_writer_count
]
sub
r7
,
r5
,
#
1
; range-1
cmp
r1
,
#
0
mul
r6
,
r4
,
r7
; ((range-1) * probability)
mov
r7
,
#
1
add
r4
,
r7
,
r6
,
lsr
#
8
; 1 + (((range-1) * probability) >> 8)
addne
r2
,
r2
,
r4
; if (bit) lowvalue += split
subne
r4
,
r5
,
r4
; if (bit) range = range-split
; Counting the leading zeros is used to normalize range.
clz
r6
,
r4
sub
r6
,
r6
,
#
24
; shift
; Flag is set on the sum of count. This flag is used later
; to determine if count >= 0
adds
r3
,
r3
,
r6
; count += shift
lsl
r5
,
r4
,
r6
; range <<= shift
bmi
token_count_lt_zero
; if(count >= 0)
sub
r6
,
r6
,
r3
; offset = shift - count
sub
r4
,
r6
,
#
1
; offset-1
lsls
r4
,
r2
,
r4
; if((lowvalue<<(offset-1)) & 0x80000000 )
bpl
token_high_bit_not_set
ldr
r4
,
[
r0
,
#
vp8_writer_pos
]
; x
sub
r4
,
r4
,
#
1
; x = w->pos-1
b
token_zero_while_start
token_zero_while_loop
mov
r9
,
#
0
strb
r9
,
[
r7
,
r4
]
; w->buffer[x] =(unsigned char)0
sub
r4
,
r4
,
#
1
; x--
token_zero_while_start
cmp
r4
,
#
0
ldrge
r7
,
[
r0
,
#
vp8_writer_buffer
]
ldrb
r1
,
[
r7
,
r4
]
cmpge
r1
,
#
0xff
beq
token_zero_while_loop
ldr
r7
,
[
r0
,
#
vp8_writer_buffer
]
ldrb
r9
,
[
r7
,
r4
]
; w->buffer[x]
add
r9
,
r9
,
#
1
strb
r9
,
[
r7
,
r4
]
; w->buffer[x] + 1
token_high_bit_not_set
rsb
r4
,
r6
,
#
24
; 24-offset
ldr
r9
,
[
r0
,
#
vp8_writer_buffer
]
lsr
r7
,
r2
,
r4
; lowvalue >> (24-offset)
ldr
r4
,
[
r0
,
#
vp8_writer_pos
]
; w->pos
lsl
r2
,
r2
,
r6
; lowvalue <<= offset
mov
r6
,
r3
; shift = count
add
r1
,
r4
,
#
1
; w->pos++
bic
r2
,
r2
,
#
0xff000000
; lowvalue &= 0xffffff
str
r1
,
[
r0
,
#
vp8_writer_pos
]
sub
r3
,
r3
,
#
8
; count -= 8
VALIDATE_POS
r9
,
r1
; validate_buffer at pos
strb
r7
,
[
r9
,
r4
]
; w->buffer[w->pos++]
token_count_lt_zero
lsl
r2
,
r2
,
r6
; lowvalue <<= shift
str
r2
,
[
r0
,
#
vp8_writer_lowvalue
]
str
r5
,
[
r0
,
#
vp8_writer_range
]
str
r3
,
[
r0
,
#
vp8_writer_count
]
pop
{
r4
-
r10
,
pc
}
ENDP
; r0 BOOL_CODER *br