Remove asm byteswap implementations
This commit is contained in:
		
							parent
							
								
									e2dffd97fe
								
							
						
					
					
						commit
						35acc782d9
					
				
							
								
								
									
										62
									
								
								c/flisp.c
								
								
								
								
							
							
						
						
									
										62
									
								
								c/flisp.c
								
								
								
								
							|  | @ -974,66 +974,6 @@ no_kw: | |||
|     return nargs; | ||||
| } | ||||
| 
 | ||||
| #if defined(__amd64__) || defined(_M_AMD64) | ||||
| #define ARCH_X86_64 | ||||
| #define __CPU__ 686 | ||||
| #elif defined(_M_IX86)  // msvs, intel, digital mars, watcom
 | ||||
| #if !defined(__386__) | ||||
| #error "unsupported target: 16-bit x86" | ||||
| #endif | ||||
| #define ARCH_X86 | ||||
| #define __CPU__ (_M_IX86 + 86) | ||||
| #elif defined(__i686__)  // gnu c
 | ||||
| #define ARCH_X86 | ||||
| #define __CPU__ 686 | ||||
| #elif defined(__i586__)  // gnu c
 | ||||
| #define ARCH_X86 | ||||
| #define __CPU__ 586 | ||||
| #elif defined(__i486__)  // gnu c
 | ||||
| #define ARCH_X86 | ||||
| #define __CPU__ 486 | ||||
| #elif defined(__i386__)  // gnu c
 | ||||
| #define ARCH_X86 | ||||
| #define __CPU__ 386 | ||||
| #else | ||||
| #error "unknown architecture" | ||||
| #endif | ||||
| 
 | ||||
| #ifdef ARCH_X86_64 | ||||
| #define LEGACY_REGS "=Q" | ||||
| #else | ||||
| #define LEGACY_REGS "=q" | ||||
| #endif | ||||
| 
 | ||||
| #if !defined(__INTEL_COMPILER) && (defined(ARCH_X86) || defined(ARCH_X86_64)) | ||||
| static uint16_t ByteSwap16(uint16_t x) | ||||
| { | ||||
|     __asm("xchgb %b0,%h0" : LEGACY_REGS(x) : "0"(x)); | ||||
|     return x; | ||||
| } | ||||
| #define bswap_16(x) ByteSwap16(x) | ||||
| 
 | ||||
| static uint32_t ByteSwap32(uint32_t x) | ||||
| { | ||||
| #if __CPU__ > 386 | ||||
|     __asm("bswap        %0" | ||||
|           : "=r"(x) | ||||
|           : | ||||
| #else | ||||
|     __asm("xchgb        %b0,%h0\n" | ||||
|           "     rorl    $16,%0\n" | ||||
|           "     xchgb   %b0,%h0" | ||||
|           : LEGACY_REGS(x) | ||||
|           : | ||||
| #endif | ||||
|           "0"(x)); | ||||
|     return x; | ||||
| } | ||||
| 
 | ||||
| #define bswap_32(x) ByteSwap32(x) | ||||
| 
 | ||||
| #else | ||||
| 
 | ||||
| #define bswap_16(x) (((x)&0x00ff) << 8 | ((x)&0xff00) >> 8) | ||||
| 
 | ||||
| #ifdef __INTEL_COMPILER | ||||
|  | @ -1044,8 +984,6 @@ static uint32_t ByteSwap32(uint32_t x) | |||
|      (((x)&0x0000ff00) << 8) | (((x)&0x000000ff) << 24)) | ||||
| #endif | ||||
| 
 | ||||
| #endif | ||||
| 
 | ||||
| #if __BYTE_ORDER__ == __ORDER_BIG_ENDIAN__ | ||||
| #define GET_INT32(a)                                             \ | ||||
|     ((int32_t)((((int32_t)a[0]) << 0) | (((int32_t)a[1]) << 8) | \ | ||||
|  |  | |||
		Loading…
	
		Reference in New Issue