-- Table of Hugs primitives mapped into Yhc Core normal primitives.
-- Primitives initially in Hugs.Peelude are expected to have been mapped
-- to Prelude before.

module Yhc.Core.FrontEnd.Hugs.PrimTable (hugsPrimTable) where

import Yhc.Core.Extra

-- |Table of Hugs primitives mapped to the Normal Set of primitives.

hugsPrimTable :: [(CoreFuncName, CoreFuncName)]

hugsPrimTable = normPrims

normPrims = [
  ("Prelude;primPlusInt", "ADD_W")
 ,("Prelude;primPlusInteger", "ADD_L")
 ,("Prelude;primPlusFloat", "ADD_F")
 ,("Prelude;primPlusDouble", "ADD_D")
 ,("Prelude;primMinusInt", "SUB_W")
 ,("Prelude;primMinusInteger", "SUB_L")
 ,("Prelude;primMinusFloat", "SUB_F")
 ,("Prelude;primMinusDouble", "SUB_D")
 ,("Prelude;primMulInt", "MUL_W")
 ,("Prelude;primMulInteger", "MUL_L")
 ,("Prelude;primMulFloat", "MUL_F")
 ,("Prelude;primMulDouble", "MUL_D")
 ,("Prelude;primNegInt", "NEG_W")
 ,("Prelude;primNegInteger", "NEG_L")
 ,("Prelude;primNegFloat", "NEG_F")
 ,("Prelude;primNegDouble", "NEG_D")
 ,("Prelude;primCmpInt", "CMP_W")
 ,("Prelude;primCmpInteger", "CMP_L")
 ,("Prelude;primCmpChar", "CMP_C")
 ,("Prelude;primCmpFloat", "CMP_F")
 ,("Prelude;primCmpDouble", "CMP_D")
 ,("Prelude;primEqInt", "EQ_W")
 ,("Prelude;primEqInteger", "EQ_L") 
 ,("Prelude;primEqFloat", "EQ_F")
 ,("Prelude;primEqChar", "EQ_C")
 ,("Prelude;primEqDouble", "EQ_D")
 ,("Prelude;primDivFloat", "DIV_F")
 ,("Prelude;primDivDouble", "DIV_D")
 ,("Prelude;primIntToInteger", "CAST_WL")
 ,("Prelude;primIntegerToInt", "CAST_LW")
 ,("Prelude;primIntToDouble", "CAST_WD")
 ,("Prelude;primIntToFloat", "CAST_WF")
 ,("Prelude;primIntegerToDouble", "CAST_LD")
 ,("Prelude;primIntegerToFloat", "CAST_LF")
 ,("Prelude;primDoubleToFloat", "CAST_DF")
 ,("Prelude;primRationalToDouble", "CAST_RD")
 ,("Prelude;primRationalToFloat", "CAST_RF")
 ,("Prelude;primCharToInt", "CAST_CW")
 ,("Prelude;primIntToChar", "CAST_WC")
 ,("Prelude;primQuotInt", "QUOT_W")
 ,("Prelude;primRemInt", "REM_W")
 ,("Prelude;primDivInt", "DIV_W")
 ,("Prelude;primModInt", "MOD_W")
 ,("Prelude;primQuotInteger", "QUOT_L")
 ,("Prelude;primRemInteger", "REM_L")
 ,("Prelude;primDivInteger", "DIV_L")
 ,("Prelude;primModInteger", "MOD_L")
 ,("Prelude;primMaxInt", "MAX_W")
 ,("Prelude;primMinInt", "MIN_W")
 ,("Prelude;primMaxChar", "MAX_C")
 ,("Prelude;primIsUpper", "ISUPR_C")
 ,("Prelude;primIsLower", "ISLOW_C")
 ,("Prelude;primIsAlpha", "ISALP_C")
 ,("Prelude;primIsAlphaNum", "ISALN_C")
 ,("Prelude;primIsPrint", "ISPRT_C")
 ,("Prelude;toUpper", "TOUPR_C")
 ,("Prelude;toLower", "TOLOW_C")
 ,("Prelude;isUpper", "ISUPR_C")
 ,("Prelude;isLower", "ISLOW_C")
 ,("Prelude;isAlpha", "ISALP_C")
 ,("Prelude;isAlphaNum", "ISALN_C")
 ,("Prelude;isPrint", "ISPRT_C")
 ,("Hugs.Char;toUpper", "TOUPR_C")
 ,("Hugs.Char;toLower", "TOLOW_C")
 ,("Hugs.Char;toTitle", "TOTIT_C")
 ,("Hugs.Char;primUniGenCat", "UCAT_C")
 ,("Prelude;primSinFloat", "SIN_F")
 ,("Prelude;primCosFloat", "COS_F")
 ,("Prelude;primTanFloat", "TAN_F")
 ,("Prelude;primAsinFloat", "ASIN_F")
 ,("Prelude;primAcosFloat", "ACOS_F")
 ,("Prelude;primAtanFloat", "ATAN_F")
 ,("Prelude;primLogFloat", "LOG_F")
 ,("Prelude;primExpFloat", "EXP_F")
 ,("Prelude;primSqrtFloat", "SQRT_F")
 ,("Prelude;primSinDouble", "SIN_D")
 ,("Prelude;primCosDouble", "COS_D")
 ,("Prelude;primTanDouble", "TAN_D")
 ,("Prelude;primAsinDouble", "ASIN_D")
 ,("Prelude;primAcosDouble", "ACOS_D")
 ,("Prelude;primAtanDouble", "ATAN_D")
 ,("Prelude;primLogDouble", "LOG_D")
 ,("Prelude;primExpDouble", "EXP_D")
 ,("Prelude;primSqrtDouble", "SQRT_D")
 ,("Prelude;primFloatRadix", "RADIX_F")
 ,("Prelude;primFloatDigits", "DIGITS_F")
 ,("Prelude;primFloatMinExp", "MINEXP_F")
 ,("Prelude;primFloatMaxExp", "MAXEXP_F")
 ,("Prelude;primFloatEncode", "ENC_F")
 ,("Prelude;primFloatDecode", "DEC_F")
 ,("Prelude;primDoubleRadix", "RADIX_F")
 ,("Prelude;primDoubleDigits", "DIGITS_D")
 ,("Prelude;primDoubleMinExp", "MINEXP_D")
 ,("Prelude;primDoubleMaxExp", "MAXEXP_D")
 ,("Prelude;primDoubleEncode", "ENC_D")
 ,("Prelude;primDoubleDecode", "DEC_D")
 ,("Prelude;primQrmInt", "QRM_W")
 ,("Prelude;primQrmInteger", "QRM_L")
 ,("Prelude;$!", "STRICT_APP")
 ,("Prelude;_SEL", "SEL_ELEM")
 ,("Prelude;primShowsInt", "SHOWS_W")
 ,("Prelude;primShowsInteger", "SHOWS_L")
 ,("Prelude;primShowsDouble", "SHOWS_D")
 ,("Prelude;primShowsFloat", "SHOWS_F")
 ,("Prelude;seq", "SEQ")
 ,("Prelude;throw", "THROW_E")
 ,("Prelude;_concmp", "CMP_T")]