Neon detection for RS SDK compat lib.
Change-Id: I3887158c7ec97ba116c28dc7b1d0c789b81fae60
diff --git a/cpu_ref/rsCpuIntrinsicYuvToRGB.cpp b/cpu_ref/rsCpuIntrinsicYuvToRGB.cpp
index 94fce1c..7b2a579 100644
--- a/cpu_ref/rsCpuIntrinsicYuvToRGB.cpp
+++ b/cpu_ref/rsCpuIntrinsicYuvToRGB.cpp
@@ -151,15 +151,17 @@
}
if(x2 > x1) {
- #if defined(ARCH_ARM_HAVE_NEON)
- int32_t len = (x2 - x1 - 1) >> 3;
- if(len > 0) {
- // ALOGE("%p, %p, %p, %d, %p", out, Y, uv, len, YuvCoeff);
- rsdIntrinsicYuv_K(out, Y, uv, len, YuvCoeff);
- x1 += len << 3;
- out += len << 3;
+ if (gArchUseSIMD) {
+ #if defined(ARCH_ARM_HAVE_VFP)
+ int32_t len = (x2 - x1 - 1) >> 3;
+ if(len > 0) {
+ // ALOGE("%p, %p, %p, %d, %p", out, Y, uv, len, YuvCoeff);
+ rsdIntrinsicYuv_K(out, Y, uv, len, YuvCoeff);
+ x1 += len << 3;
+ out += len << 3;
+ }
+ #endif
}
- #endif
// ALOGE("y %i %i %i", p->y, x1, x2);
while(x1 < x2) {
@@ -188,12 +190,14 @@
const uchar *v = pinV + ((p->y >> 1) * strideV);
if(x2 > x1) {
- #if defined(ARCH_ARM_HAVE_NEON)
- int32_t len = (x2 - x1 - 1) >> 3;
- if(len > 0) {
- rsdIntrinsicYuv2_K(out, Y, u, v, len, YuvCoeff);
- x1 += len << 3;
- out += len << 3;
+ #if defined(ARCH_ARM_HAVE_VFP)
+ if (gArchUseSIMD) {
+ int32_t len = (x2 - x1 - 1) >> 3;
+ if(len > 0) {
+ rsdIntrinsicYuv2_K(out, Y, u, v, len, YuvCoeff);
+ x1 += len << 3;
+ out += len << 3;
+ }
}
#endif