]> granicus.if.org Git - libjpeg-turbo/commitdiff
Add JSIMD_NOHUFFENC environment variable for ARM
authorDRC <information@libjpeg-turbo.org>
Fri, 15 Jan 2016 19:15:54 +0000 (13:15 -0600)
committerDRC <information@libjpeg-turbo.org>
Fri, 15 Jan 2016 19:15:54 +0000 (13:15 -0600)
Useful in regression/performance testing

ChangeLog.txt
simd/jsimd_arm.c

index 379cfbd8607dc2ee7f8c82d9bbbfc81cac3cace0..6f1660ab0697c97ec19b7bb8c4a629f959505353 100644 (file)
@@ -69,7 +69,9 @@ setting the JSIMD_NOHUFFENC environment variable to 1.
 
 [13] Added SIMD acceleration for Huffman encoding on NEON-capable ARM 32-bit
 platforms.  This speeds up the compression of full-color JPEGs by about 30% on
-average.
+average.  For the purposes of benchmarking or regression testing,
+SIMD-accelerated Huffman encoding can be disabled by setting the
+JSIMD_NOHUFFENC environment variable to 1.
 
 [14] Completed the ARM 64-bit (ARMv8) NEON SIMD implementation.  64-bit ARM
 now has SIMD coverage for all of the algorithms that are covered in the 32-bit
index 635cbd7064686905ee6072b522f5636a7667035a..0cf5ae5df18b3c16b8d9ad5e3b6a853c9a99ad28 100644 (file)
@@ -27,6 +27,7 @@
 #include <ctype.h>
 
 static unsigned int simd_support = ~0;
+static unsigned int simd_huffman = 1;
 
 #if defined(__linux__) || defined(ANDROID) || defined(__ANDROID__)
 
@@ -128,6 +129,9 @@ init_simd (void)
   env = getenv("JSIMD_FORCENONE");
   if ((env != NULL) && (strcmp(env, "1") == 0))
     simd_support = 0;
+  env = getenv("JSIMD_NOHUFFENC");
+  if ((env != NULL) && (strcmp(env, "1") == 0))
+    simd_huffman = 0;
 }
 
 GLOBAL(int)
@@ -707,7 +711,7 @@ jsimd_can_huff_encode_one_block (void)
   if (sizeof(JCOEF) != 2)
     return 0;
 
-  if (simd_support & JSIMD_ARM_NEON)
+  if (simd_support & JSIMD_ARM_NEON && simd_huffman)
     return 1;
 
   return 0;