{-# LANGUAGE CPP #-}
module Endian
( B.BE, B.LE, fromLE, toLE
) where
#include "MachDeps.h"
#if (defined(arm_HOST_ARCH) || defined(aarch64_HOST_ARCH)) \
&& !defined(WORDS_BIGENDIAN)
#define MLKEM_FORCE_LITTLE_ENDIAN_ARCH 1
#endif
#ifdef MLKEM_FORCE_LITTLE_ENDIAN_ARCH
#else
import Data.Memory.Endian (ByteSwap)
#endif
import qualified Data.Memory.Endian as B
#ifdef MLKEM_FORCE_LITTLE_ENDIAN_ARCH
fromLE :: B.LE a -> a
fromLE = B.unLE
#else
fromLE :: ByteSwap a => B.LE a -> a
fromLE :: forall a. ByteSwap a => LE a -> a
fromLE = LE a -> a
forall a. ByteSwap a => LE a -> a
B.fromLE
#endif
#ifdef MLKEM_FORCE_LITTLE_ENDIAN_ARCH
toLE :: a -> B.LE a
toLE = B.LE
#else
toLE :: ByteSwap a => a -> B.LE a
toLE :: forall a. ByteSwap a => a -> LE a
toLE = a -> LE a
forall a. ByteSwap a => a -> LE a
B.toLE
#endif