Merge "Add support for x86 to hello-neon sample"
This commit is contained in:
@@ -6,8 +6,11 @@ LOCAL_MODULE := helloneon
|
|||||||
|
|
||||||
LOCAL_SRC_FILES := helloneon.c
|
LOCAL_SRC_FILES := helloneon.c
|
||||||
|
|
||||||
ifeq ($(TARGET_ARCH_ABI),armeabi-v7a)
|
ifeq ($(TARGET_ARCH_ABI),$(filter $(TARGET_ARCH_ABI), armeabi-v7a x86))
|
||||||
LOCAL_CFLAGS := -DHAVE_NEON=1
|
LOCAL_CFLAGS := -DHAVE_NEON=1
|
||||||
|
ifeq ($(TARGET_ARCH_ABI),x86)
|
||||||
|
LOCAL_CFLAGS += -mssse3
|
||||||
|
endif
|
||||||
LOCAL_SRC_FILES += helloneon-intrinsics.c.neon
|
LOCAL_SRC_FILES += helloneon-intrinsics.c.neon
|
||||||
endif
|
endif
|
||||||
|
|
||||||
|
|||||||
@@ -1,2 +1 @@
|
|||||||
# Build both ARMv5TE and ARMv7-A machine code.
|
APP_ABI := armeabi armeabi-v7a arm64-v8a x86
|
||||||
APP_ABI := armeabi armeabi-v7a arm64-v8a
|
|
||||||
|
|||||||
@@ -81,6 +81,7 @@ Java_com_example_neon_HelloNeon_stringFromJNI( JNIEnv* env,
|
|||||||
jobject thiz )
|
jobject thiz )
|
||||||
{
|
{
|
||||||
char* str;
|
char* str;
|
||||||
|
AndroidCpuFamily family;
|
||||||
uint64_t features;
|
uint64_t features;
|
||||||
char buffer[512];
|
char buffer[512];
|
||||||
char tryNeon = 0;
|
char tryNeon = 0;
|
||||||
@@ -112,20 +113,27 @@ Java_com_example_neon_HelloNeon_stringFromJNI( JNIEnv* env,
|
|||||||
|
|
||||||
strlcat(buffer, "Neon version : ", sizeof buffer);
|
strlcat(buffer, "Neon version : ", sizeof buffer);
|
||||||
|
|
||||||
if (android_getCpuFamily() != ANDROID_CPU_FAMILY_ARM) {
|
family = android_getCpuFamily();
|
||||||
strlcat(buffer, "Not an ARM CPU !\n", sizeof buffer);
|
if ((family != ANDROID_CPU_FAMILY_ARM) &&
|
||||||
|
(family != ANDROID_CPU_FAMILY_X86))
|
||||||
|
{
|
||||||
|
strlcat(buffer, "Not an ARM and not an X86 CPU !\n", sizeof buffer);
|
||||||
goto EXIT;
|
goto EXIT;
|
||||||
}
|
}
|
||||||
|
|
||||||
features = android_getCpuFeatures();
|
features = android_getCpuFeatures();
|
||||||
if ((features & ANDROID_CPU_ARM_FEATURE_ARMv7) == 0) {
|
if (((features & ANDROID_CPU_ARM_FEATURE_ARMv7) == 0) &&
|
||||||
strlcat(buffer, "Not an ARMv7 CPU !\n", sizeof buffer);
|
((features & ANDROID_CPU_X86_FEATURE_SSSE3) == 0))
|
||||||
|
{
|
||||||
|
strlcat(buffer, "Not an ARMv7 and not an X86 SSSE3 CPU !\n", sizeof buffer);
|
||||||
goto EXIT;
|
goto EXIT;
|
||||||
}
|
}
|
||||||
|
|
||||||
/* HAVE_NEON is defined in Android.mk ! */
|
/* HAVE_NEON is defined in Android.mk ! */
|
||||||
#ifdef HAVE_NEON
|
#ifdef HAVE_NEON
|
||||||
if ((features & ANDROID_CPU_ARM_FEATURE_NEON) == 0) {
|
if (((features & ANDROID_CPU_ARM_FEATURE_NEON) == 0) &&
|
||||||
|
((features & ANDROID_CPU_X86_FEATURE_SSSE3) == 0))
|
||||||
|
{
|
||||||
strlcat(buffer, "CPU doesn't support NEON !\n", sizeof buffer);
|
strlcat(buffer, "CPU doesn't support NEON !\n", sizeof buffer);
|
||||||
goto EXIT;
|
goto EXIT;
|
||||||
}
|
}
|
||||||
|
|||||||
Reference in New Issue
Block a user