Revert 8632 "Enable isac NEON building on Aarch64"

Breaks Chromium audio tests on Nexus 9.
http://build.chromium.org/p/chromium.webrtc.fyi/builders/Android%20Tests%20%28dbg%29%20%28L%20Nexus9%29/builds/1152/steps/content_browsertests/logs/stdio

It also actually broke already on our android_arm64 trybot in the CL:
http://build.chromium.org/p/tryserver.webrtc/builders/android_arm64/builds/3282
but I failed to double-check that (I guess I assumed it was flakiness since
that bot has been flaking a lot lately).

> Enable isac NEON building on Aarch64
> 
> Passed building isac_neon and modules_unittests on Android ARM64 and ARMv7.
> Passed modules_unittests with following filters:
>   --gtest_filter=FiltersTest*
>   --gtest_filter=LpcMaskingModelTest*
>   --gtest_filter=TransformTest*
>   --gtest_filter=FilterBanksTest*
> 
> WebRtcIsacfix_CalculateResidualEnergyNeon is not enabled due to Issue 4224.
> 
> BUG=4002
> R=andrew@webrtc.org, jridges@masque.com, kjellander@webrtc.org
> 
> Review URL: https://webrtc-codereview.appspot.com/39979004
> 
> Patch from Zhongwei Yao <zhongwei.yao@arm.com>.

TBR=zhongwei.yao@arm.com, andrew@webrtc.org

Review URL: https://webrtc-codereview.appspot.com/45559004

Cr-Commit-Position: refs/heads/master@{#8649}
git-svn-id: http://webrtc.googlecode.com/svn/trunk@8649 4adac7df-926f-26a2-2b94-8c16560cd09d
This commit is contained in:
kjellander@webrtc.org 2015-03-09 11:08:02 +00:00
parent 385b56666a
commit 6b56d0793e
6 changed files with 27 additions and 68 deletions

View File

@ -532,10 +532,6 @@ source_set("isacfix") {
"../../system_wrappers", "../../system_wrappers",
] ]
if (cpu_arch == "arm64") {
deps += [ ":isac_neon" ]
}
if (rtc_build_armv7_neon) { if (rtc_build_armv7_neon) {
deps += [ ":isac_neon" ] deps += [ ":isac_neon" ]
@ -586,12 +582,10 @@ source_set("isacfix") {
} }
} }
if (rtc_build_armv7_neon || cpu_arch == "arm64") {
source_set("isac_neon") {
sources = [ "codecs/isac/fix/source/entropy_coding_neon.c" ]
if (rtc_build_armv7_neon) { if (rtc_build_armv7_neon) {
sources += [ source_set("isac_neon") {
sources = [
"codecs/isac/fix/source/entropy_coding_neon.c",
"codecs/isac/fix/source/filterbanks_neon.S", "codecs/isac/fix/source/filterbanks_neon.S",
"codecs/isac/fix/source/filters_neon.S", "codecs/isac/fix/source/filters_neon.S",
"codecs/isac/fix/source/lattice_neon.S", "codecs/isac/fix/source/lattice_neon.S",
@ -599,27 +593,6 @@ if (rtc_build_armv7_neon || cpu_arch == "arm64") {
"codecs/isac/fix/source/transform_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.
# TODO(kjellander): Investigate if this can be moved into webrtc.gni or
# //build/config/arm.gni instead, to reduce code duplication.
# Remove the -mfpu=vfpv3-d16 cflag.
configs -= [ "//build/config/compiler:compiler_arm_fpu" ]
cflags = [
"-mfpu=neon",
]
}
if (cpu_arch == "arm64") {
sources += [
"codecs/isac/fix/source/filterbanks_neon.c",
"codecs/isac/fix/source/filters_neon.c",
"codecs/isac/fix/source/lattice_neon.c",
"codecs/isac/fix/source/transform_neon.c",
]
}
include_dirs = [ include_dirs = [
"../../..", "../../..",
] ]
@ -632,6 +605,17 @@ if (rtc_build_armv7_neon || cpu_arch == "arm64") {
] ]
} }
# 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.
# TODO(kjellander): Investigate if this can be moved into webrtc.gni or
# //build/config/arm.gni instead, to reduce code duplication.
# Remove the -mfpu=vfpv3-d16 cflag.
configs -= [ "//build/config/compiler:compiler_arm_fpu" ]
cflags = [
"-mfpu=neon",
]
configs += [ "../..:common_config" ] configs += [ "../..:common_config" ]
public_configs = [ "../..:common_inherited_config" ] public_configs = [ "../..:common_inherited_config" ]

View File

@ -90,8 +90,7 @@ void WebRtcIsacfix_Spec2TimeC(int16_t* inreQ7,
int32_t* outre1Q16, int32_t* outre1Q16,
int32_t* outre2Q16); int32_t* outre2Q16);
#if (defined WEBRTC_DETECT_ARM_NEON) || (defined WEBRTC_ARCH_ARM_NEON) || \ #if (defined WEBRTC_DETECT_ARM_NEON) || (defined WEBRTC_ARCH_ARM_NEON)
(defined WEBRTC_ARCH_ARM64_NEON)
void WebRtcIsacfix_Time2SpecNeon(int16_t* inre1Q9, void WebRtcIsacfix_Time2SpecNeon(int16_t* inre1Q9,
int16_t* inre2Q9, int16_t* inre2Q9,
int16_t* outre, int16_t* outre,
@ -175,8 +174,7 @@ void WebRtcIsacfix_FilterMaLoopC(int16_t input0,
int32_t* ptr1, int32_t* ptr1,
int32_t* ptr2); int32_t* ptr2);
#if (defined WEBRTC_DETECT_ARM_NEON) || (defined WEBRTC_ARCH_ARM_NEON) || \ #if (defined WEBRTC_DETECT_ARM_NEON) || (defined WEBRTC_ARCH_ARM_NEON)
(defined WEBRTC_ARCH_ARM64_NEON)
int WebRtcIsacfix_AutocorrNeon(int32_t* __restrict r, int WebRtcIsacfix_AutocorrNeon(int32_t* __restrict r,
const int16_t* __restrict x, const int16_t* __restrict x,
int16_t N, int16_t N,

View File

@ -147,8 +147,7 @@ void WebRtcIsacfix_MatrixProduct2C(const int16_t matrix0[],
const int matrix0_index_factor, const int matrix0_index_factor,
const int matrix0_index_step); const int matrix0_index_step);
#if (defined WEBRTC_DETECT_ARM_NEON) || (defined WEBRTC_ARCH_ARM_NEON) || \ #if (defined WEBRTC_DETECT_ARM_NEON) || (defined WEBRTC_ARCH_ARM_NEON)
(defined WEBRTC_ARCH_ARM64_NEON)
void WebRtcIsacfix_MatrixProduct1Neon(const int16_t matrix0[], void WebRtcIsacfix_MatrixProduct1Neon(const int16_t matrix0[],
const int32_t matrix1[], const int32_t matrix1[],
int32_t matrix_product[], int32_t matrix_product[],

View File

@ -60,8 +60,7 @@ void WebRtcIsacfix_AllpassFilter2FixDec16C(
int32_t *filter_state_ch1, int32_t *filter_state_ch1,
int32_t *filter_state_ch2); int32_t *filter_state_ch2);
#if (defined WEBRTC_DETECT_ARM_NEON) || (defined WEBRTC_ARCH_ARM_NEON) || \ #if (defined WEBRTC_DETECT_ARM_NEON) || (defined WEBRTC_ARCH_ARM_NEON)
(defined WEBRTC_ARCH_ARM64_NEON)
void WebRtcIsacfix_AllpassFilter2FixDec16Neon( void WebRtcIsacfix_AllpassFilter2FixDec16Neon(
int16_t *data_ch1, int16_t *data_ch1,
int16_t *data_ch2, int16_t *data_ch2,

View File

@ -198,17 +198,14 @@ int16_t WebRtcIsacfix_FreeInternal(ISACFIX_MainStruct *ISAC_main_inst)
* This function initializes function pointers for ARM Neon platform. * This function initializes function pointers for ARM Neon platform.
*/ */
#if (defined WEBRTC_DETECT_ARM_NEON || defined WEBRTC_ARCH_ARM_NEON) || \ #if (defined WEBRTC_DETECT_ARM_NEON || defined WEBRTC_ARCH_ARM_NEON)
(defined WEBRTC_ARCH_ARM64_NEON)
static void WebRtcIsacfix_InitNeon(void) { static void WebRtcIsacfix_InitNeon(void) {
WebRtcIsacfix_AutocorrFix = WebRtcIsacfix_AutocorrNeon; WebRtcIsacfix_AutocorrFix = WebRtcIsacfix_AutocorrNeon;
WebRtcIsacfix_FilterMaLoopFix = WebRtcIsacfix_FilterMaLoopNeon; WebRtcIsacfix_FilterMaLoopFix = WebRtcIsacfix_FilterMaLoopNeon;
WebRtcIsacfix_Spec2Time = WebRtcIsacfix_Spec2TimeNeon; WebRtcIsacfix_Spec2Time = WebRtcIsacfix_Spec2TimeNeon;
WebRtcIsacfix_Time2Spec = WebRtcIsacfix_Time2SpecNeon; WebRtcIsacfix_Time2Spec = WebRtcIsacfix_Time2SpecNeon;
#if !(defined WEBRTC_ARCH_ARM64_NEON)
WebRtcIsacfix_CalculateResidualEnergy = WebRtcIsacfix_CalculateResidualEnergy =
WebRtcIsacfix_CalculateResidualEnergyNeon; WebRtcIsacfix_CalculateResidualEnergyNeon;
#endif
WebRtcIsacfix_AllpassFilter2FixDec16 = WebRtcIsacfix_AllpassFilter2FixDec16 =
WebRtcIsacfix_AllpassFilter2FixDec16Neon; WebRtcIsacfix_AllpassFilter2FixDec16Neon;
WebRtcIsacfix_MatrixProduct1 = WebRtcIsacfix_MatrixProduct1Neon; WebRtcIsacfix_MatrixProduct1 = WebRtcIsacfix_MatrixProduct1Neon;
@ -337,7 +334,7 @@ int16_t WebRtcIsacfix_EncoderInit(ISACFIX_MainStruct *ISAC_main_inst,
if ((WebRtc_GetCPUFeaturesARM() & kCPUFeatureNEON) != 0) { if ((WebRtc_GetCPUFeaturesARM() & kCPUFeatureNEON) != 0) {
WebRtcIsacfix_InitNeon(); WebRtcIsacfix_InitNeon();
} }
#elif defined(WEBRTC_ARCH_ARM_NEON) || defined(WEBRTC_ARCH_ARM64_NEON) #elif defined(WEBRTC_ARCH_ARM_NEON)
WebRtcIsacfix_InitNeon(); WebRtcIsacfix_InitNeon();
#endif #endif

View File

@ -95,9 +95,6 @@
}], }],
], ],
}], }],
['target_arch=="arm64"', {
'dependencies': ['isac_neon', ],
}],
['target_arch=="mipsel" and mips_arch_variant!="r6" and android_webview_build==0', { ['target_arch=="mipsel" and mips_arch_variant!="r6" and android_webview_build==0', {
'sources': [ 'sources': [
'fix/source/entropy_coding_mips.c', 'fix/source/entropy_coding_mips.c',
@ -131,7 +128,7 @@
}, },
], ],
'conditions': [ 'conditions': [
['target_arch=="arm" and arm_version>=7 or target_arch=="arm64"', { ['target_arch=="arm" and arm_version>=7', {
'targets': [ 'targets': [
{ {
'target_name': 'isac_neon', 'target_name': 'isac_neon',
@ -159,21 +156,6 @@
'-ffat-lto-objects', '-ffat-lto-objects',
], ],
}], }],
['target_arch=="arm64"', {
'sources!': [
'fix/source/filterbanks_neon.S',
'fix/source/filters_neon.S',
'fix/source/lattice_neon.S',
'fix/source/lpc_masking_model_neon.S',
'fix/source/transform_neon.S',
],
'sources': [
'fix/source/filterbanks_neon.c',
'fix/source/filters_neon.c',
'fix/source/lattice_neon.c',
'fix/source/transform_neon.c',
],
}]
], ],
}, },
], ],