| 
						
						
							
								
							
						
						
					 | 
					 | 
					@ -584,12 +584,14 @@ typedef unsigned char validate_uint32[sizeof(stbi__uint32)==4 ? 1 : -1]; | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					#define STBI__X86_TARGET | 
					 | 
					 | 
					 | 
					#define STBI__X86_TARGET | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					#endif | 
					 | 
					 | 
					 | 
					#endif | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					
 | 
					 | 
					 | 
					 | 
					
 | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					#if defined(__GNUC__) && (defined(STBI__X86_TARGET) || defined(STBI__X64_TARGET)) && !defined(__SSE2__) && !defined(STBI_NO_SIMD) | 
					 | 
					 | 
					 | 
					#if defined(__GNUC__) && defined(STBI__X86_TARGET) && !defined(__SSE2__) && !defined(STBI_NO_SIMD) | 
				
			
			
				
				
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					// NOTE: not clear do we actually need this for the 64-bit path?
 | 
					 | 
					 | 
					 | 
					 | 
				
			
			
		
	
		
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					// gcc doesn't support sse2 intrinsics unless you compile with -msse2,
 | 
					 | 
					 | 
					 | 
					// gcc doesn't support sse2 intrinsics unless you compile with -msse2,
 | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					// (but compiling with -msse2 allows the compiler to use SSE2 everywhere;
 | 
					 | 
					 | 
					 | 
					// which in turn means it gets to use SSE2 everywhere. This is unfortunate,
 | 
				
			
			
				
				
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					// this is just broken and gcc are jerks for not fixing it properly
 | 
					 | 
					 | 
					 | 
					// but previous attempts to provide the SSE2 functions with runtime
 | 
				
			
			
				
				
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					// http://www.virtualdub.org/blog/pivot/entry.php?id=363 )
 | 
					 | 
					 | 
					 | 
					// detection caused numerous issues. The way architecture extensions are
 | 
				
			
			
				
				
			
		
	
		
		
	
		
		
	
		
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					 | 
					 | 
					 | 
					 | 
					// exposed in GCC/Clang is, sadly, not really suited for one-file libs.
 | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					 | 
					 | 
					 | 
					 | 
					// New behavior: if compiled with -msse2, we use SSE2 without any
 | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					 | 
					 | 
					 | 
					 | 
					// detection; if not, we don't use it at all.
 | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					#define STBI_NO_SIMD | 
					 | 
					 | 
					 | 
					#define STBI_NO_SIMD | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					#endif | 
					 | 
					 | 
					 | 
					#endif | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					
 | 
					 | 
					 | 
					 | 
					
 | 
				
			
			
		
	
	
		
		
			
				
					| 
						
							
								
							
						
						
							
								
							
						
						
					 | 
					 | 
					@ -647,14 +649,10 @@ static int stbi__sse2_available() | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					
 | 
					 | 
					 | 
					 | 
					
 | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					static int stbi__sse2_available() | 
					 | 
					 | 
					 | 
					static int stbi__sse2_available() | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					{ | 
					 | 
					 | 
					 | 
					{ | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					#if defined(__GNUC__) && (__GNUC__ * 100 + __GNUC_MINOR__) >= 408 // GCC 4.8 or later
 | 
					 | 
					 | 
					 | 
					   // If we're even attempting to compile this on GCC/Clang, that means
 | 
				
			
			
				
				
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					   // GCC 4.8+ has a nice way to do this
 | 
					 | 
					 | 
					 | 
					   // -msse2 is on, which means the compiler is allowed to use SSE2
 | 
				
			
			
				
				
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					   return __builtin_cpu_supports("sse2"); | 
					 | 
					 | 
					 | 
					   // instructions at will, and so are we.
 | 
				
			
			
				
				
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					#else | 
					 | 
					 | 
					 | 
					   return 1; | 
				
			
			
				
				
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					   // portable way to do this, preferably without using GCC inline ASM?
 | 
					 | 
					 | 
					 | 
					 | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					   // just bail for now.
 | 
					 | 
					 | 
					 | 
					 | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					   return 0; | 
					 | 
					 | 
					 | 
					 | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					#endif | 
					 | 
					 | 
					 | 
					 | 
				
			
			
		
	
		
		
	
		
		
	
		
		
	
		
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					} | 
					 | 
					 | 
					 | 
					} | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					#endif | 
					 | 
					 | 
					 | 
					#endif | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					#endif | 
					 | 
					 | 
					 | 
					#endif | 
				
			
			
		
	
	
		
		
			
				
					| 
						
							
								
							
						
						
						
					 | 
					 | 
					
  |