#include <stdio.h> // fprintf
#include <stdlib.h> // exit
#include <assert.h> // assert
-#if defined(__APPLE__)
-#include <machine/endian.h>
-#define __BYTE_ORDER BYTE_ORDER
-#define __LITTLE_ENDIAN LITTLE_ENDIAN
-#elif defined(__sun)
-#define __LITTLE_ENDIAN 1234
-#define __BIG_ENDIAN 4321
-# if defined(_LITTLE_ENDIAN)
-# define __BYTE_ORDER __LITTLE_ENDIAN
-# else
-# define __BYTE_ORDER __BIG_ENDIAN
-# endif
-#elif defined(__linux__)
-#include <endian.h>
-#else
-#define __BYTE_ORDER BYTE_ORDER
-#define __LITTLE_ENDIAN LITTLE_ENDIAN
-#include <sys/endian.h>
-#endif
#include <inttypes.h>
#include "vtest.h"
case 32: fprintf(fp, "%08x", val.u32); break;
case 64: fprintf(fp, "%016"PRIx64, val.u64); break;
case 128:
- if (__BYTE_ORDER == __LITTLE_ENDIAN) {
+ if (! host_is_big_endian()) {
fprintf(fp, "%016"PRIx64, val.u128[1]);
fprintf(fp, "%016"PRIx64, val.u128[0]);
} else {
}
break;
case 256:
- if (__BYTE_ORDER == __LITTLE_ENDIAN) {
+ if (! host_is_big_endian()) {
fprintf(fp, "%016"PRIx64, val.u256[3]);
fprintf(fp, "%016"PRIx64, val.u256[2]);
fprintf(fp, "%016"PRIx64, val.u256[1]);
#include <stdio.h> // fprintf
#include <assert.h> // assert
-#if defined(__APPLE__)
-#include <machine/endian.h>
-#define __BYTE_ORDER BYTE_ORDER
-#define __LITTLE_ENDIAN LITTLE_ENDIAN
-#elif defined(__sun)
-#define __LITTLE_ENDIAN 1234
-#define __BIG_ENDIAN 4321
-# if defined(_LITTLE_ENDIAN)
-# define __BYTE_ORDER __LITTLE_ENDIAN
-# else
-# define __BYTE_ORDER __BIG_ENDIAN
-# endif
-#elif defined(__linux__)
-#include <endian.h>
-#else
-#include <sys/endian.h>
-#define __BYTE_ORDER BYTE_ORDER
-#define __LITTLE_ENDIAN LITTLE_ENDIAN
-#endif
#include <inttypes.h>
#include "vbits.h"
#include "vtest.h"
case 32: fprintf(fp, "%08x", v.bits.u32); break;
case 64: fprintf(fp, "%016"PRIx64, v.bits.u64); break;
case 128:
- if (__BYTE_ORDER == __LITTLE_ENDIAN) {
+ if (! host_is_big_endian()) {
fprintf(fp, "%016"PRIx64, v.bits.u128[1]);
fprintf(fp, "%016"PRIx64, v.bits.u128[0]);
} else {
}
break;
case 256:
- if (__BYTE_ORDER == __LITTLE_ENDIAN) {
+ if (! host_is_big_endian()) {
fprintf(fp, "%016"PRIx64, v.bits.u256[3]);
fprintf(fp, "%016"PRIx64, v.bits.u256[2]);
fprintf(fp, "%016"PRIx64, v.bits.u256[1]);
}
}
}
- if (__BYTE_ORDER == __LITTLE_ENDIAN)
+ if (! host_is_big_endian())
new.bits.u128[1] = new_value;
else
/* Big endian, swap the upper and lower 32-bits of new_value */
}
}
}
- if (__BYTE_ORDER == __LITTLE_ENDIAN)
+ if (! host_is_big_endian())
new.bits.u128[0] = new_value;
else
/* Big endian, swap the upper and lower 32-bits of new_value */
if (v.num_bits <= 64)
bits = get_bits64(v);
else if (v.num_bits == 128)
- if (__BYTE_ORDER == __LITTLE_ENDIAN)
+ if (! host_is_big_endian())
bits = v.bits.u128[0];
else
bits = v.bits.u128[1];
else if (v.num_bits == 256)
- if (__BYTE_ORDER == __LITTLE_ENDIAN)
+ if (! host_is_big_endian())
bits = v.bits.u256[0];
else
bits = v.bits.u256[3];
if (num_bits == 128) {
assert(v.num_bits == 256);
/* From 256 bits to 128 */
- if (__BYTE_ORDER == __LITTLE_ENDIAN) {
+ if (! host_is_big_endian()) {
new.bits.u128[0] = v.bits.u256[0];
new.bits.u128[1] = v.bits.u256[1];
} else {
case 32: new.bits.u32 = bits & ~0u; break;
case 64: new.bits.u64 = bits & ~0ll; break;
case 128:
- if (__BYTE_ORDER == __LITTLE_ENDIAN) {
+ if (! host_is_big_endian()) {
new.bits.u128[0] = bits;
if (bits & (1ull << 63)) { // MSB is set
new.bits.u128[1] = ~0ull;
}
break;
case 256:
- if (__BYTE_ORDER == __LITTLE_ENDIAN) {
+ if (! host_is_big_endian()) {
new.bits.u256[0] = bits;
if (bits & (1ull << 63)) { // MSB is set
new.bits.u256[1] = ~0ull;
}
if (v.num_bits == 128) {
- if (__BYTE_ORDER == __LITTLE_ENDIAN) {
+ if (! host_is_big_endian()) {
if (v.bits.u128[1] != 0) {
new.bits.u128[0] = v.bits.u128[0];
new.bits.u128[1] = left64(v.bits.u128[1]);
assert(num_bits == 256);
- if (__BYTE_ORDER == __LITTLE_ENDIAN) {
+ if (! host_is_big_endian()) {
uint64_t b1 = new.bits.u128[1];
uint64_t b0 = new.bits.u128[0];
case 32: new.bits.u64 = v1.bits.u32;
new.bits.u64 = (new.bits.u64 << 32) | v2.bits.u32; break;
case 64:
- if (__BYTE_ORDER == __LITTLE_ENDIAN) {
+ if (! host_is_big_endian()) {
new.bits.u128[0] = v2.bits.u64;
new.bits.u128[1] = v1.bits.u64;
} else {
}
break;
case 128:
- if (__BYTE_ORDER == __LITTLE_ENDIAN) {
+ if (! host_is_big_endian()) {
new.bits.u256[0] = v2.bits.u128[0];
new.bits.u256[1] = v2.bits.u128[1];
new.bits.u256[2] = v1.bits.u128[0];
case 32: new.bits.u16 = v.bits.u32 >> 16; break;
case 64: new.bits.u32 = v.bits.u64 >> 32; break;
case 128:
- if (__BYTE_ORDER == __LITTLE_ENDIAN)
+ if (! host_is_big_endian())
new.bits.u64 = v.bits.u128[1];
else
new.bits.u64 = v.bits.u128[0];
break;
case 256:
- if (__BYTE_ORDER == __LITTLE_ENDIAN) {
+ if (! host_is_big_endian()) {
new.bits.u128[0] = v.bits.u256[2];
new.bits.u128[1] = v.bits.u256[3];
} else {
case 32: new.bits.u32 = bits; break;
case 64: new.bits.u64 = bits; break;
case 128:
- if (__BYTE_ORDER == __LITTLE_ENDIAN) {
+ if (! host_is_big_endian()) {
new.bits.u128[0] = bits;
new.bits.u128[1] = 0;
} else {
}
break;
case 256:
- if (__BYTE_ORDER == __LITTLE_ENDIAN) {
+ if (! host_is_big_endian()) {
new.bits.u256[0] = bits;
new.bits.u256[1] = 0;
new.bits.u256[2] = 0;
if (v.num_bits == 128) {
assert(num_bits == 256);
- if (__BYTE_ORDER == __LITTLE_ENDIAN) {
+ if (! host_is_big_endian()) {
new.bits.u256[0] = v.bits.u128[0];
new.bits.u256[1] = v.bits.u128[1];
new.bits.u256[2] = 0;
case 32: new.bits.u32 = 1u << bitno; break;
case 64: new.bits.u64 = 1ull << bitno; break;
case 128:
- if (__BYTE_ORDER == __LITTLE_ENDIAN) {
+ if (! host_is_big_endian()) {
if (bitno < 64) {
new.bits.u128[0] = 1ull << bitno;
new.bits.u128[1] = 0;
}
break;
case 256:
- if (__BYTE_ORDER == __LITTLE_ENDIAN) {
+ if (! host_is_big_endian()) {
if (bitno < 64) {
new.bits.u256[0] = 1ull << bitno;
new.bits.u256[1] = 0;