#include #include "haskell2c.h" /* primIntAnd :: Int -> Int -> Int */ C_HEADER(primIntAnd) { unsigned x,y; NodePtr n = C_GETARG1(1); IND_REMOVE(n); x = (unsigned)GET_INT_VALUE(n); n = C_GETARG1(2); IND_REMOVE(n); y = (unsigned)GET_INT_VALUE(n); C_RETURN(nhc_mkInt(x&y)); } /* primIntOr :: Int -> Int -> Int */ C_HEADER(primIntOr) { unsigned x,y; NodePtr n = C_GETARG1(1); IND_REMOVE(n); x = (unsigned)GET_INT_VALUE(n); n = C_GETARG1(2); IND_REMOVE(n); y = (unsigned)GET_INT_VALUE(n); C_RETURN(nhc_mkInt(x|y)); } /* primIntXor :: Int -> Int -> Int */ C_HEADER(primIntXor) { unsigned x,y; NodePtr n = C_GETARG1(1); IND_REMOVE(n); x = (unsigned)GET_INT_VALUE(n); n = C_GETARG1(2); IND_REMOVE(n); y = (unsigned)GET_INT_VALUE(n); C_RETURN(nhc_mkInt(x^y)); } /* primIntCompl :: Int -> Int */ C_HEADER(primIntCompl) { unsigned x; NodePtr n = C_GETARG1(1); IND_REMOVE(n); x = (unsigned)GET_INT_VALUE(n); C_RETURN(nhc_mkInt(~x)); } /* primIntLsh :: Int -> Int -> Int */ C_HEADER(primIntLsh) { int s; unsigned i; NodePtr n = C_GETARG1(1); IND_REMOVE(n); i = (unsigned)GET_INT_VALUE(n); n = C_GETARG1(2); IND_REMOVE(n); s = GET_INT_VALUE(n); C_RETURN(nhc_mkInt(i< Int -> Int */ C_HEADER(primIntRsh) { int s; unsigned i; NodePtr n = C_GETARG1(1); IND_REMOVE(n); i = (unsigned)GET_INT_VALUE(n); n = C_GETARG1(2); IND_REMOVE(n); s = GET_INT_VALUE(n); C_RETURN(nhc_mkInt(i>>s)); } unsigned int nhc_primIntAnd (unsigned int a, unsigned int b) { return (a&b); } unsigned int nhc_primIntOr (unsigned int a, unsigned int b) { return (a|b); } unsigned int nhc_primIntXor (unsigned int a, unsigned int b) { return (a^b); } unsigned int nhc_primIntLsh (unsigned int a, unsigned int b) { return (a<>b); } unsigned int nhc_primIntCompl (unsigned int a) { return (~a); } char nhc_primInt8And (char a, char b) { return (a&b); } char nhc_primInt8Or (char a, char b) { return (a|b); } char nhc_primInt8Xor (char a, char b) { return (a^b); } char nhc_primInt8Lsh (char a, int b) { return (a<>b); } char nhc_primInt8Compl (char a) { return (~a); } short nhc_primInt16And (short a, short b) { return (a&b); } short nhc_primInt16Or (short a, short b) { return (a|b); } short nhc_primInt16Xor (short a, short b) { return (a^b); } short nhc_primInt16Lsh (short a, int b) { return (a<>b); } short nhc_primInt16Compl (short a) { return (~a); } long nhc_primInt32And (long a, long b) { return (a&b); } long nhc_primInt32Or (long a, long b) { return (a|b); } long nhc_primInt32Xor (long a, long b) { return (a^b); } long nhc_primInt32Lsh (long a, int b) { return (a<>b); } long nhc_primInt32Compl (long a) { return (~a); } long long nhc_primInt64And (long long a, long long b) { return (a&b); } long long nhc_primInt64Or (long long a, long long b) { return (a|b); } long long nhc_primInt64Xor (long long a, long long b) { return (a^b); } long long nhc_primInt64Lsh (long long a, int b) { return (a<>b); } long long nhc_primInt64Compl (long long a) { return (~a); } unsigned char nhc_primWord8And (unsigned char a, unsigned char b) { return (a&b); } unsigned char nhc_primWord8Or (unsigned char a, unsigned char b) { return (a|b); } unsigned char nhc_primWord8Xor (unsigned char a, unsigned char b) { return (a^b); } unsigned char nhc_primWord8Lsh (unsigned char a, int b) { return (a<>b); } unsigned char nhc_primWord8Compl (unsigned char a) { return (~a); } unsigned short nhc_primWord16And (unsigned short a, unsigned short b) { return (a&b); } unsigned short nhc_primWord16Or (unsigned short a, unsigned short b) { return (a|b); } unsigned short nhc_primWord16Xor (unsigned short a, unsigned short b) { return (a^b); } unsigned short nhc_primWord16Lsh (unsigned short a, int b) { return (a<>b); } unsigned short nhc_primWord16Compl (unsigned short a) { return (~a); } unsigned long nhc_primWord32And (unsigned long a, unsigned long b) { return (a&b); } unsigned long nhc_primWord32Or (unsigned long a, unsigned long b) { return (a|b); } unsigned long nhc_primWord32Xor (unsigned long a, unsigned long b) { return (a^b); } unsigned long nhc_primWord32Lsh (unsigned long a, int b) { return (a<>b); } unsigned long nhc_primWord32Compl (unsigned long a) { return (~a); } unsigned long long nhc_primWord64And (unsigned long long a, unsigned long long b) { return (a&b); } unsigned long long nhc_primWord64Or (unsigned long long a, unsigned long long b) { return (a|b); } unsigned long long nhc_primWord64Xor (unsigned long long a, unsigned long long b) { return (a^b); } unsigned long long nhc_primWord64Lsh (unsigned long long a, int b) { return (a<>b); } unsigned long long nhc_primWord64Compl (unsigned long long a) { return (~a); }