mirror of
				https://github.com/facebook/zstd.git
				synced 2025-11-03 20:33:11 +03:00 
			
		
		
		
	Improved speed of Intel Compiler for Windows
This commit is contained in:
		@@ -110,7 +110,7 @@ MEM_STATIC void MEM_check(void) { MEM_STATIC_ASSERT((sizeof(size_t)==4) || (size
 | 
			
		||||
#ifndef MEM_FORCE_MEMORY_ACCESS   /* can be defined externally, on command line for example */
 | 
			
		||||
#  if defined(__GNUC__) && ( defined(__ARM_ARCH_6__) || defined(__ARM_ARCH_6J__) || defined(__ARM_ARCH_6K__) || defined(__ARM_ARCH_6Z__) || defined(__ARM_ARCH_6ZK__) || defined(__ARM_ARCH_6T2__) )
 | 
			
		||||
#    define MEM_FORCE_MEMORY_ACCESS 2
 | 
			
		||||
#  elif (defined(__INTEL_COMPILER) && !defined(WIN32)) || \
 | 
			
		||||
#  elif defined(__INTEL_COMPILER) /*|| defined(_MSC_VER)*/ || \
 | 
			
		||||
  (defined(__GNUC__) && ( defined(__ARM_ARCH_7__) || defined(__ARM_ARCH_7A__) || defined(__ARM_ARCH_7R__) || defined(__ARM_ARCH_7M__) || defined(__ARM_ARCH_7S__) ))
 | 
			
		||||
#    define MEM_FORCE_MEMORY_ACCESS 1
 | 
			
		||||
#  endif
 | 
			
		||||
@@ -142,7 +142,13 @@ MEM_STATIC void MEM_write64(void* memPtr, U64 value) { *(U64*)memPtr = value; }
 | 
			
		||||
 | 
			
		||||
/* __pack instructions are safer, but compiler specific, hence potentially problematic for some compilers */
 | 
			
		||||
/* currently only defined for gcc and icc */
 | 
			
		||||
typedef union { U16 u16; U32 u32; U64 u64; size_t st; } __attribute__((packed)) unalign;
 | 
			
		||||
#if defined(_MSC_VER) || (defined(__INTEL_COMPILER) && defined(WIN32))
 | 
			
		||||
	__pragma( pack(push, 1) )
 | 
			
		||||
    typedef union { U16 u16; U32 u32; U64 u64; size_t st; } unalign;
 | 
			
		||||
    __pragma( pack(pop) )
 | 
			
		||||
#else
 | 
			
		||||
    typedef union { U16 u16; U32 u32; U64 u64; size_t st; } __attribute__((packed)) unalign;
 | 
			
		||||
#endif
 | 
			
		||||
 | 
			
		||||
MEM_STATIC U16 MEM_read16(const void* ptr) { return ((const unalign*)ptr)->u16; }
 | 
			
		||||
MEM_STATIC U32 MEM_read32(const void* ptr) { return ((const unalign*)ptr)->u32; }
 | 
			
		||||
 
 | 
			
		||||
		Reference in New Issue
	
	Block a user