Replace asm NEON function by intrinsics implementation on ARMv7
Passed building isac_neon and modules_unittests on Android ARMv7.
Passed modules_unittests with following filters:
--gtest_filter=FiltersTest*
--gtest_filter=LpcMaskingModelTest*
--gtest_filter=TransformTest*
--gtest_filter=FilterBanksTest*
WebRtcIsacfix_CalculateResidualEnergyNeon is removed, refer more in
Issue 4224.
The old review url is at: https://webrtc-codereview.appspot.com/37259004/
BUG=4002
R=andrew@webrtc.org, jridges@masque.com, kjellander@webrtc.org
Review URL: https://webrtc-codereview.appspot.com/48319005
Patch from Zhongwei Yao <zhongwei.yao@arm.com>.
Change-Id: I4c16e15930f1b3449d67b67bf023fac28121dff8
Cr-Commit-Position: refs/heads/master@{#9140}
diff --git a/webrtc/modules/audio_coding/BUILD.gn b/webrtc/modules/audio_coding/BUILD.gn
index 9a2bf79..df565d0 100644
--- a/webrtc/modules/audio_coding/BUILD.gn
+++ b/webrtc/modules/audio_coding/BUILD.gn
@@ -591,17 +591,14 @@
if (rtc_build_armv7_neon || current_cpu == "arm64") {
source_set("isac_neon") {
- sources = [ "codecs/isac/fix/source/entropy_coding_neon.c" ]
+ sources = [
+ "codecs/isac/fix/source/entropy_coding_neon.c",
+ "codecs/isac/fix/source/filters_neon.c",
+ "codecs/isac/fix/source/lattice_neon.c",
+ "codecs/isac/fix/source/transform_neon.c",
+ ]
if (rtc_build_armv7_neon) {
- sources += [
- "codecs/isac/fix/source/filterbanks_neon.S",
- "codecs/isac/fix/source/filters_neon.S",
- "codecs/isac/fix/source/lattice_neon.S",
- "codecs/isac/fix/source/lpc_masking_model_neon.S",
- "codecs/isac/fix/source/transform_neon.S",
- ]
-
# Enable compilation for the ARM v7 Neon instruction set. This is needed
# since //build/config/arm.gni only enables Neon for iOS, not Android.
# This provides the same functionality as webrtc/build/arm_neon.gypi.
@@ -614,18 +611,11 @@
]
}
- if (current_cpu == "arm64") {
- sources += [
- "codecs/isac/fix/source/filters_neon.c",
- "codecs/isac/fix/source/lattice_neon.c",
- "codecs/isac/fix/source/transform_neon.c",
- ]
+ if (current_cpu != "arm64" || !is_clang) {
# Disable AllpassFilter2FixDec16Neon function due to a clang bug.
# Refer more details at:
# https://code.google.com/p/webrtc/issues/detail?id=4567
- if (!is_clang) {
sources += [ "codecs/isac/fix/source/filterbanks_neon.c", ]
- }
}
# Disable LTO in audio_processing_neon target due to compiler bug.