INLINE_SIM_ENDIAN(void*) offset_8(unsigned_8 *x, unsigned ws, unsigned w);
INLINE_SIM_ENDIAN(void*) offset_16(unsigned_16 *x, unsigned ws, unsigned w);
+INLINE_SIM_ENDIAN(unsigned_16) sim_endian_join_16 (unsigned_8 h, unsigned_8 l);
+INLINE_SIM_ENDIAN(unsigned_8) sim_endian_split_16 (unsigned_16 word, int w);
+
/* SWAP */
#define VH4_8(X) ((unsigned_4)((unsigned_8)(X) >> 32))
#define VL4_8(X) ((unsigned_4)(X))
-#define VH8_16(X) ((unsigned_8)((unsigned_16)(X) >> 64))
-#define VL8_16(X) ((unsigned_8)(X))
+#define VH8_16(X) (sim_endian_split_16 ((X), 0))
+#define VL8_16(X) (sim_endian_split_16 ((X), 1))
#if (WITH_TARGET_WORD_BITSIZE == 64)
#define VH_word(X) VH4_8(X)
#define U8_4(I0,I1) (V8_4(I0,0) | V8_4(I1,1))
#define U16_4(I0,I1,I2,I3) (V16_4(I0,0) | V16_4(I1,1) | V16_4(I2,2) | V16_4(I3,3))
-#define U16_8(I0,I1) (V16_8(I0,0) | V16_8(I1,1))
+#define U16_8(I0,I1) (sim_endian_join_16 (I0, I1))
#if (WITH_TARGET_WORD_BITSIZE == 64)
-#if (SIM_ENDIAN_INLINE & INCLUDE_MODULE)
-# include "sim-endian.c"
+#if H_REVEALS_MODULE_P (SIM_ENDIAN_INLINE)
+#include "sim-endian.c"
#endif
#endif /* _SIM_ENDIAN_H_ */