-- This corresponds to src/Comp/PreIds.hs in bsc. module Language.Bluespec.Classic.AST.Builtin.Ids where import Language.Bluespec.Classic.AST.Builtin.FStrings import Language.Bluespec.Classic.AST.FString import Language.Bluespec.Classic.AST.Id import Language.Bluespec.Classic.AST.Position import Language.Bluespec.Prelude -- | Identifier without a position mk_no :: FString -> Id mk_no fs = mkId noPosition fs -- | Identifier in the Standard Prelude, with a position prelude_id :: Position -> FString -> Id prelude_id p fs = mkQId p fsPrelude fs -- | Identifier in the Standard Prelude, with no position prelude_id_no :: FString -> Id prelude_id_no fs = prelude_id noPosition fs -- | Identifier in the Standard Prelude, with a position prelude_bsv_id :: Position -> FString -> Id prelude_bsv_id p fs = mkQId p fsPreludeBSV fs -- | Identifier in the Standard Prelude, with no position prelude_bsv_id_no :: FString -> Id prelude_bsv_id_no fs = prelude_bsv_id noPosition fs -- | Add id properties to an already existing identifier prop_prelude_id_no :: FString -> [IdProp] -> Id prop_prelude_id_no fs props = addIdProps (prelude_id (updatePosStdlib noPosition True) fs) props idB, idR :: Id idB = prelude_id_no fsB idR = prelude_id_no fsR idArrow :: Position -> Id idArrow p = prelude_id p fsRArrow idPrimUnit, idBit, idInt, idUInt, idVReg, idReg, idRWire, idPulseWire :: Id idPrimUnit = prelude_id_no fsPrimUnit idBit = prelude_id_no fsBit idInt = prelude_id_no fsInt idUInt = prelude_id_no fsUInt idVReg = prelude_id_no fsVReg idReg = prelude_id_no fsReg idRWire = prelude_bsv_id_no fsRWire idPulseWire = prelude_bsv_id_no fsPulseWire idFIFO, idFIFOF, idSend, id_notFull, id_notEmpty, idEnq, idDeq, idFirst :: Id idFIFO = mkQId noPosition fsFIFO fsFIFO idFIFOF = mkQId noPosition fsFIFOF fsFIFOF idSend = prelude_bsv_id_no fsSend id_notFull = mk_no fsFIFO_notFull id_notEmpty = mk_no fsFIFO_notEmpty idEnq = mk_no fsFIFOEnq idDeq = mk_no fsFIFODeq idFirst = mk_no fsFIFOFirst idInteger, idReal :: Id idInteger = prelude_id_no fsInteger idReal = prelude_id_no fsReal idRealAt :: Position -> Id idRealAt pos = prelude_id pos fsReal idString, idChar, idHandle, idBufferMode, idNoBuffering, idLineBuffering :: Id idString = prelude_id_no fsString idChar = prelude_id_no fsChar idHandle = prelude_id_no fsHandle idBufferMode = prelude_id_no fsBufferMode idNoBuffering = prelude_id_no fsNoBuffering idLineBuffering = prelude_id_no fsLineBuffering idBlockBuffering, idFmt, idPrimFmtConcat, idPrimPriMux, idFormat, idFShow :: Id idBlockBuffering = prelude_id_no fsBlockBuffering idFmt = prelude_id_no fsFmt idPrimFmtConcat = prelude_id_no fsPrimFmtConcat idPrimPriMux = prelude_id_no fsPrimPriMux idFormat = prelude_id_no fsFormat idFShow = prelude_id_no fsFShow idfshow, idBool, idPrimFst, idPrimSnd, idPrimPair, idFalse, idTrue :: Id idfshow = prelude_id_no fsfshow idBool = prelude_id_no fsBool idPrimFst = prelude_id_no fsPrimFst idPrimSnd = prelude_id_no fsPrimSnd idPrimPair = prelude_id_no fsPrimPair idFalse = prelude_id_no fsFalse idTrue = prelude_id_no fsTrue idSizeOf, idTAdd, idTSub, idTMul, idTDiv, idTLog, idTExp, idTMax, idTMin :: Id idSizeOf = prelude_id_no fsSizeOf idTAdd = prelude_id_no fsTAdd idTSub = prelude_id_no fsTSub idTMul = prelude_id_no fsTMul idTDiv = prelude_id_no fsTDiv idTLog = prelude_id_no fsTLog idTExp = prelude_id_no fsTExp idTMax = prelude_id_no fsTMax idTMin = prelude_id_no fsTMin idAction, idPrimAction, idToPrimAction, idFromPrimAction :: Id idAction = prelude_id_no fsAction idPrimAction = prelude_id_no fsPrimAction idToPrimAction = prelude_id_no fsToPrimAction idFromPrimAction = prelude_id_no fsFromPrimAction idFromActionValue_, idToActionValue_, idRules, idSchedPragma, idValueOf, idStringOf, idStringProxy :: Id idFromActionValue_ = prelude_id_no fsFromActionValue_ idToActionValue_ = prelude_id_no fsToActionValue_ idRules = prelude_id_no fsRules idSchedPragma = prelude_id_no fsSchedPragma idValueOf = prelude_id_no fsPrimValueOf idStringOf = prelude_id_no fsPrimStringOf idStringProxy = prelude_id_no fsStringProxy idPrimIndex, idPrimSelectable, idPrimUpdateable, idPrimWriteable :: Id idPrimIndex = prelude_id_no fsPrimIndex idPrimSelectable = prelude_id_no fsPrimSelectable idPrimUpdateable = prelude_id_no fsPrimUpdateable idPrimWriteable = prelude_id_no fsPrimWriteable idChangeSpecialWires :: Position -> Id idChangeSpecialWires pos = prelude_id pos fsChangeSpecialWires idPrimSetSelPosition, idMaybe, idInvalid, idValid, idEmpty, idFile :: Id idPrimSetSelPosition = prelude_id_no fsPrimSetSelPosition idMaybe = prelude_id_no fsMaybe idInvalid = prelude_id_no fsInvalid idValid = prelude_id_no fsValid idEmpty = prelude_id_no fsEmptyIfc idFile = prelude_id_no fsFile idEither, idLeft, idRight :: Id idEither = prelude_id_no fsEither idLeft = prelude_id_no fsLeft idRight = prelude_id_no fsRight idActionValue :: Id idActionValue = prelude_id_no fsActionValue -- field names for the ActionValue interface idAVValue, idAVAction :: Id idAVValue = prelude_id_no fsAVValue idAVAction = prelude_id_no fsAVAction idActionValue_ :: Id idActionValue_ = prelude_id_no fsActionValue_ -- field names for the ActionValue_ interface idAVValue_, idAVAction_ :: Id idAVValue_ = prelude_id_no fsAVValue_ idAVAction_ = prelude_id_no fsAVAction_ -- names of the special selector functions in the Prelude id__value, id__action :: Id id__value = prelude_id_no fs__value id__action = prelude_id_no fs__action id__value_at, id__action_at :: Position -> Id id__value_at pos = prelude_id pos fs__value id__action_at pos = prelude_id pos fs__action idComma, idPlus, idMinus, idPrelude, idPreludeBSV :: Id idComma = mk_no fsComma idPlus = mk_no fsPlus idMinus = mk_no fsMinus idPrelude = mk_no fsPrelude idPreludeBSV = mk_no fsPreludeBSV idPreludePlus :: Id idPreludePlus = prelude_id_no fsPlus -- Used by deriving idEq, idBits, idLiteral, idRealLiteral, idSizedLiteral, idStringLiteral :: Id idEq = prelude_id_no fsEq idBits = prelude_id_no fsBits idLiteral = prelude_id_no fsLiteral idRealLiteral = prelude_id_no fsRealLiteral idSizedLiteral = prelude_id_no fsSizedLiteral idStringLiteral = prelude_id_no fsStringLiteral idPrimParam, idPrimPort, idBounded, idDefaultValue, id_defaultValue, idClsDeepSeqCond, idPrimDeepSeqCond :: Id idPrimParam = prelude_id_no fsPrimParam idPrimPort = prelude_id_no fsPrimPort idBounded = prelude_id_no fsBounded idDefaultValue = prelude_id_no fsDefaultValue id_defaultValue = prelude_id_no fs_defaultValue idClsDeepSeqCond = prelude_id_no fsClsDeepSeqCond idPrimDeepSeqCond = prelude_id_no fsPrimDeepSeqCond idPrimSeqCond, idUndefined, idEqual, idNotEqual, idPack, idUnpack, idFmap :: Id idPrimSeqCond = prelude_id_no fsPrimSeqCond idUndefined = prelude_id_no fsUndefined idEqual = prelude_id_no fsEqual idNotEqual = prelude_id_no fsNotEqual idPack = prelude_id_no fsPack idUnpack = prelude_id_no fsUnpack idFmap = prelude_id_no fsFmap idMaxBound, idMinBound, idBuildUndef, idMakeUndef, idRawUndef, idAdd :: Id idMaxBound = prelude_id_no fsMaxBound idMinBound = prelude_id_no fsMinBound idBuildUndef = prelude_id_no fsBuildUndef idMakeUndef = prelude_id_no fsMakeUndef idRawUndef = prelude_id_no fsRawUndef idAdd = prop_prelude_id_no fsAdd [IdPCommutativeTCon] idMax, idMin, idLog, idMul, idDiv, idNumEq, idAnd, idNot, idPrimSplit :: Id idMax = prop_prelude_id_no fsMax [IdPCommutativeTCon] idMin = prop_prelude_id_no fsMin [IdPCommutativeTCon] idLog = prelude_id_no fsLog idMul = prop_prelude_id_no fsMul [IdPCommutativeTCon] idDiv = prelude_id_no fsDiv idNumEq = prop_prelude_id_no fsNumEq [IdPCommutativeTCon] idAnd = prelude_id_no fsAnd idNot = prelude_id_no fsNot idPrimSplit = prelude_id_no fsPrimSplit idPrimConcat, idPrimMul, idPrimQuot, idPrimRem, idPrimTrunc, idPrimOrd :: Id idPrimConcat = prelude_id_no fsPrimConcat idPrimMul = prelude_id_no fsPrimMul idPrimQuot = prelude_id_no fsPrimQuot idPrimRem = prelude_id_no fsPrimRem idPrimTrunc = prelude_id_no fsPrimTrunc idPrimOrd = prelude_id_no fsPrimOrd idPrimChr, idLiftM, idPrimError :: Id idPrimChr = prelude_id_no fsPrimChr idLiftM = prelude_id_no fsLiftM idPrimError = prelude_id_no fsPrimError idGeneric, idFrom, idTo, idConc, idConcPrim, idConcPoly, idMeta :: Id idGeneric = prelude_id_no fsGeneric idFrom = prelude_id_no fsFrom idTo = prelude_id_no fsTo idConc = prelude_id_no fsConc idConcPrim = prelude_id_no fsConcPrim idConcPoly = prelude_id_no fsConcPoly idMeta = prelude_id_no fsMeta idMetaData, idStarArg, idNumArg, idStrArg, idConArg, idMetaConsNamed, idMetaConsAnon, idMetaField :: Id idMetaData = prelude_id_no fsMetaData idStarArg = prelude_id_no fsStarArg idNumArg = prelude_id_no fsNumArg idStrArg = prelude_id_no fsStrArg idConArg = prelude_id_no fsConArg idMetaConsNamed = prelude_id_no fsMetaConsNamed idMetaConsAnon = prelude_id_no fsMetaConsAnon idMetaField = prelude_id_no fsMetaField idPolyWrapField :: Id idPolyWrapField = mk_no fsPolyWrapField -- | Used by GenWrap for "polymorphic" modules idLiftModule :: Id idLiftModule = prelude_id_no fsLiftModule -- Used by desugaring id_lam, id_if, id_read, id_write :: Position -> Id id_lam pos = mkId pos fs_lam id_if pos = mkId pos fs_if id_read pos = mkId pos fs_read id_write pos = mkId pos fs_write idPreludeRead, idPreludeWrite, idAssign :: Id idPreludeRead = prelude_id_no fsRead idPreludeWrite = prelude_id_no fsRegWrite idAssign = mkId noPosition fsAssign idExtract, idFromInteger, idFromReal, idFromSizedInteger :: Position -> Id idExtract pos = prelude_id pos fsExtract idFromInteger pos = prelude_id pos fsFromInteger idFromReal pos = prelude_id pos fsFromReal idFromSizedInteger pos = prelude_id pos fsFromSizedInteger idFromString, idPrimCharToString, idPrimToParam, idPrimToPort :: Position -> Id idFromString pos = prelude_id pos fsFromString idPrimCharToString pos = prelude_id pos fsPrimCharToString idPrimToParam pos = prelude_id pos fsPrimToParam idPrimToPort pos = prelude_id pos fsPrimToPort id_case, idBind, idBind_, idReturn, idMonad :: Position -> Id id_case pos = mkId pos fs_case idBind pos = prelude_id pos fsBind idBind_ pos = prelude_id pos fsBind_ idReturn pos = prelude_id pos fsReturn idMonad pos = prelude_id pos fsMonad idIsModule, idModule, idId :: Id idIsModule = prelude_id_no fsIsModule idModule = prelude_id_no fsModule idId = prelude_id_no fsId idPrimModule :: Position -> Id idPrimModule pos = prelude_id pos fsPrimModule idPrimStringConcat :: Id idPrimStringConcat = prelude_id_no fsPrimStringConcat idAddRules, idMkRegU, idTheResult, idF, idM, idC :: Position -> Id idAddRules pos = prelude_id pos fsAddRules idMkRegU pos = prelude_id pos fsMkRegU idTheResult pos = addIdProp (mkId pos fsTheResult) IdPRenaming idF pos = mkId pos fsF idM pos = mkId pos fsM idC pos = mkId pos fsC idPrimSelectFn, idPrimUpdateFn, idPrimWriteFn, idPrimUpdateRangeFn :: Position -> Id idPrimSelectFn pos = mkId pos fsPrimSelectFn idPrimUpdateFn pos = mkId pos fsPrimUpdateFn idPrimWriteFn pos = mkId pos fsPrimWriteFn idPrimUpdateRangeFn pos = prelude_id pos fsPrimUpdateRangeFn idSAction, idSActionValue, idStmtify, idCallServer :: Position -> Id idSAction pos = mkId pos fsSAction idSActionValue pos = mkId pos fsSActionValue idStmtify pos = mkId pos fsStmtify idCallServer pos = mkId pos fsCallServer idSIf1, idSIf2, idSAbtIf1, idSAbtIf2, idSRepeat, idSWhile, idSFor :: Position -> Id idSIf1 pos = mkId pos fsSIf1 idSIf2 pos = mkId pos fsSIf2 idSAbtIf1 pos = mkId pos fsSAbtIf1 idSAbtIf2 pos = mkId pos fsSAbtIf2 idSRepeat pos = mkId pos fsSRepeat idSWhile pos = mkId pos fsSWhile idSFor pos = mkId pos fsSFor idSSeq, idSPar, idSLabel, idSJump, idSNamed, idS, idStmt :: Position -> Id idSSeq pos = mkId pos fsSSeq idSPar pos = mkId pos fsSPar idSLabel pos = mkId pos fsSLabel idSJump pos = mkId pos fsSJump idSNamed pos = mkId pos fsSNamed idS pos = mkId pos fsS idStmt pos = mkId pos fsStmt idSBreak, idSContinue, idSReturn, idCons, idConcat :: Position -> Id idSBreak pos = mkId pos fsSBreak idSContinue pos = mkId pos fsSContinue idSReturn pos = mkId pos fsSReturn idCons pos = mkId pos fsCons idConcat pos = mkId pos fsConcat idNil, idNothing, idSprime :: Position -> Id idNil pos = mkId pos fsNil idNothing pos = mkId pos fsNothing idSprime pos = mkId pos fsSprime -- | Used to prevent implicit read etc. idAsIfc, idAsReg :: Id idAsIfc = prelude_id_no fsAsIfc idAsReg = prelude_id_no fsAsReg -- used to inject state names idName, idPrimGetName :: Id idName = prelude_id_no fsName idPrimGetName = prelude_id_no fsPrimGetName idPrimGetNameAt :: Position -> Id idPrimGetNameAt pos = prelude_id pos fsPrimGetName idPrimGetParamName :: Id idPrimGetParamName = prelude_id_no fsPrimGetParamName idPrimGetParamNameAt, idPrimJoinNamesAt, idPrimExtNameIdxAt, idSetStateNameAt :: Position -> Id idPrimGetParamNameAt pos = prelude_id pos fsPrimGetParamName idPrimJoinNamesAt pos = prelude_id pos fsPrimJoinNames idPrimExtNameIdxAt pos = prelude_id pos fsPrimExtNameIdx idSetStateNameAt pos = prelude_id pos fsSetStateName idGetModuleName :: Id idGetModuleName = prelude_id_no fsGetModuleName -- | Used to force the monad in a "module" expression to be a module, -- so that we fail fast for good error positions idForceIsModuleAt :: Position -> Id idForceIsModuleAt pos = prelude_id pos fsForceIsModule -- | Use for communicating positions for errors, warnings and messages idPosition, idNoPosition, idPrimGetEvalPosition :: Id idPosition = prelude_id_no fsPosition idNoPosition = prelude_id_no fsNoPosition idPrimGetEvalPosition = prelude_id_no fsPrimGetEvalPosition -- | Used to carry attributes idAttributes :: Id idAttributes = prelude_id_no fsAttributes idSetStateAttribAt :: Position -> Id idSetStateAttribAt pos = prelude_id pos fsSetStateAttrib idType, idTypeOf, idSavePortType, idPrintType :: Id idType = prelude_id_no fsType idTypeOf = prelude_id_no fsTypeOf idSavePortType = prelude_id_no fsSavePortType idPrintType = prelude_id_no fsPrintType -- | Abstract type for implicit conditions idPred :: Id idPred = prelude_id_no fsPred -- Used by iConv idPrimBAnd, idPrimBOr, idPrimBNot, idPrimSL, idPrimSRL :: Id idPrimBAnd = prelude_id_no fsPrimBAnd idPrimBOr = prelude_id_no fsPrimBOr idPrimBNot = prelude_id_no fsPrimBNot idPrimSL = prelude_id_no fsPrimSL idPrimSRL = prelude_id_no fsPrimSRL idPrimInv, idPrimIf, idPrimCase, idPrimArrayDynSelect, idPrimBuildArray :: Id idPrimInv = prelude_id_no fsPrimInv idPrimIf = prelude_id_no fsPrimIf idPrimCase = prelude_id_no fsPrimCase idPrimArrayDynSelect = prelude_id_no fsPrimArrayDynSelect idPrimBuildArray = prelude_id_no fsPrimBuildArray idPrimWhen, idPrimSelect :: Id idPrimWhen = prelude_id_no fsPrimWhen idPrimSelect = prelude_id_no fsPrimSelect idPrimSelectAt :: Position -> Id idPrimSelectAt pos = prelude_id pos fsPrimSelect idPrimZeroExt, idPrimSignExt, idPrimJoinRules, idPrimNoRules, idPrimRule :: Id idPrimZeroExt = prelude_id_no fsPrimZeroExt idPrimSignExt = prelude_id_no fsPrimSignExt idPrimJoinRules = prelude_id_no fsPrimJoinRules idPrimNoRules = prelude_id_no fsPrimNoRules idPrimRule = prelude_id_no fsPrimRule idPrimJoinActions, idPrimAddSchedPragmas, idPrimNoActions, idPrimNoExpIf :: Id idPrimJoinActions = prelude_id_no fsPrimJoinActions idPrimAddSchedPragmas = prelude_id_no fsPrimAddSchedPragmas idPrimNoActions = prelude_id_no fsPrimNoActions idPrimNoExpIf = prelude_id_no fsPrimNoExpIf idPrimExpIf, idPrimNosplitDeep, idPrimSplitDeep, idSplitDeepAV :: Id idPrimExpIf = prelude_id_no fsPrimExpIf idPrimNosplitDeep = prelude_id_no fsPrimNosplitDeep idPrimSplitDeep = prelude_id_no fsPrimSplitDeep idSplitDeepAV = prelude_id_no fsSplitDeepAV idNosplitDeepAV, idMfix, idStaticAssert, idDynamicAssert :: Id idNosplitDeepAV = prelude_id_no fsNosplitDeepAV idPrimFix :: Position -> Id idPrimFix pos = prelude_id pos fsPrimFix idMfix = prelude_id_no fsMfix idStaticAssert = mk_no fsStaticAssert idDynamicAssert = mk_no fsDynamicAssert idContinuousAssert, id_staticAssert, id_dynamicAssert, id_continuousAssert :: Id idContinuousAssert = mk_no fsContinuousAssert id_staticAssert = mk_no fs_staticAssert id_dynamicAssert = mk_no fs_dynamicAssert id_continuousAssert = mk_no fs_continuousAssert idClsUninitialized, idPrimUninitialized :: Id idClsUninitialized = prelude_id_no fsClsUninitialized idPrimUninitialized = prelude_id_no fsPrimUninitialized idPrimUninitializedAt :: Position -> Id idPrimUninitializedAt pos = prelude_id pos fsPrimUninitialized idPrimMakeUninitialized, idPrimRawUninitialized, idPrimPoisonedDef :: Id idPrimMakeUninitialized = prelude_id_no fsPrimMakeUninitialized idPrimRawUninitialized = prelude_id_no fsPrimRawUninitialized idPrimPoisonedDef = prelude_id_no fsPrimPoisonedDef idStringAt, idFmtAt, idPrimStringConcatAt :: Position -> Id idStringAt pos = prelude_id pos fsString idFmtAt pos = prelude_id pos fsFmt idPrimStringConcatAt pos = prelude_id pos fsPrimStringConcat -- | Clock and reset identifiers idClock, idClockOsc, idClockGate, idReset, idInout, idInout_ :: Id idClock = prelude_id_no fsClock idClockOsc = prelude_id_no fsClockOsc idClockGate = prelude_id_no fsClockGate idReset = prelude_id_no fsReset idInout = prelude_id_no fsInout idInout_ = prelude_id_no fsInout_ idPrimInoutCast, idPrimInoutUncast, idPrimInoutCast0, idPrimInoutUncast0 :: Id idPrimInoutCast = prelude_id_no fsPrimInoutCast idPrimInoutUncast = prelude_id_no fsPrimInoutUncast idPrimInoutCast0 = prelude_id_no fsPrimInoutCast0 idPrimInoutUncast0 = prelude_id_no fsPrimInoutUncast0 idExposeCurrentClock, idExposeCurrentReset :: Id idExposeCurrentClock = prelude_id_no fsExposeCurrentClock idExposeCurrentReset = prelude_id_no fsExposeCurrentReset idNoClock, idNoReset, idPrimReplaceClockGate :: Id -- needed for noClock constant in ISyntax idNoClock = prelude_id_no fsNoClock -- needed for noReset constant in ISyntax idNoReset = prelude_id_no fsNoReset -- needed for GenWrap idPrimReplaceClockGate = prelude_id_no fsPrimReplaceClockGate idClk, idRst :: Id idClk = mk_no fsClk -- position? idRst = mk_no fsRst -- position? idCLK, idCLK_GATE :: Id idCLK = mk_no fsCLK idCLK_GATE = mk_no fsCLK_GATE -- idRSTN = mk_no fsRSTN idDefaultClock, idDefaultReset :: Id idDefaultClock = mk_no fsDefaultClock idDefaultReset = mk_no fsDefaultReset -- iConv junk idPrimSplitFst, idPrimSplitSnd :: Id idPrimSplitFst = prelude_id_no fsPrimSplitFst idPrimSplitSnd = prelude_id_no fsPrimSplitSnd id_x, id_y, id_fun, id_forallb :: Id id_x = setBadId $ mk_no fs_x id_y = setBadId $ mk_no fs_y id_fun = setBadId $ mk_no fs_fun id_forallb = setBadId $ mk_no fs_forallb tmpVarIds, tmpVarXIds, tmpVarYIds, tmpVarSIds :: [Id] tmpVarIds = map (enumId "a" noPosition) [1000..] tmpVarXIds = map (enumId "x" noPosition) [1000000..] tmpVarYIds = map (enumId "y" noPosition) [2000000..] tmpVarSIds = map (enumId "s" noPosition) [3000000..] tmpTyNumIds, tmpTyVarIds :: [Id] tmpTyNumIds = map (enumId "tnum" noPosition) [4000000..] tmpTyVarIds = map (enumId "v" noPosition) [100..] -- | Used by iExpand idPrimEQ, idPrimULE, idPrimULT, idPrimSLE, idPrimSLT :: Id idPrimEQ = prelude_id_no fsPrimEQ idPrimULE = prelude_id_no fsPrimULE idPrimULT = prelude_id_no fsPrimULT idPrimSLE = prelude_id_no fsPrimSLE idPrimSLT = prelude_id_no fsPrimSLT -- | Used by iTransform idPrimAdd, idPrimSub :: Id idPrimAdd = prelude_id_no fsPrimAdd idPrimSub = prelude_id_no fsPrimSub -- | Used by AddCFWire idVRWireN, idVmkRWire1, idWGet, idWSet, idWHas :: Id idVRWireN = prelude_bsv_id_no fsVRWireN idVmkRWire1 = prelude_bsv_id_no fsVmkRWire1 idWGet = prelude_bsv_id_no fsWGet idWSet = prelude_bsv_id_no fsWSet idWHas = prelude_bsv_id_no fsWHas -- versions parametrized on position idPrimConcatAt, idTrueAt, idAddRulesAt, idOrAt, idEqualAt :: Position -> Id idPrimConcatAt pos = prelude_id pos fsPrimConcat idTrueAt pos = prelude_id pos fsTrue idAddRulesAt pos = prelude_id pos fsAddRules idOrAt pos = prelude_id pos fsOr idEqualAt pos = prelude_id pos fsEqual idNotEqualAt, idPrimUnitAt, idErrorAt, idNegateAt, idIdentityAt :: Position -> Id idNotEqualAt pos = prelude_id pos fsNotEqual idPrimUnitAt pos = prelude_id pos fsPrimUnit idErrorAt pos = prelude_id pos fsError idNegateAt pos = prelude_id pos fsNegate idIdentityAt pos = prelude_id pos fsIdentity idNotAt, idInvertAt, idPercentAt, idModuleAt, idIsModuleAt :: Position -> Id idNotAt pos = prelude_id pos fsNot idInvertAt pos = prelude_id pos fsInvert idPercentAt pos = prelude_id pos fsPercent idModuleAt pos = prelude_id pos fsModule idIsModuleAt pos = prelude_id pos fsIsModule idActionAt, idActionValueAt, idActionValue_At, idIntAt :: Position -> Id idActionAt pos = prelude_id pos fsAction idActionValueAt pos = prelude_id pos fsActionValue idActionValue_At pos = prelude_id pos fsActionValue_ idIntAt pos = prelude_id pos fsInt idUnpackAt, idStarAt, idSlashAt, idStarStarAt, idPlusAt :: Position -> Id idUnpackAt pos = prelude_id pos fsUnpack idStarAt pos = prelude_id pos fsStar idSlashAt pos = prelude_id pos fsSlash idStarStarAt pos = prelude_id pos fsStarStar idPlusAt pos = prelude_id pos fsPlus idMinusAt, idLshAt, idRshAt, idLtAt, idGtAt, idLtEqAt :: Position -> Id idMinusAt pos = prelude_id pos fsMinus idLshAt pos = prelude_id pos fsLsh idRshAt pos = prelude_id pos fsRsh idLtAt pos = prelude_id pos fsLT idGtAt pos = prelude_id pos fsGT idLtEqAt pos = prelude_id pos fsLtEq idGtEqAt, idAndAt, idBitAndAt, idBitOrAt, idCaretAt :: Position -> Id idGtEqAt pos = prelude_id pos fsGtEq idAndAt pos = prelude_id pos fsAnd idBitAndAt pos = prelude_id pos fsBitAnd idBitOrAt pos = prelude_id pos fsBitOr idCaretAt pos = prelude_id pos fsCaret idTildeCaretAt, idCaretTildeAt, idReduceAndAt, idReduceOrAt :: Position -> Id idTildeCaretAt pos = prelude_id pos fsTildeCaret idCaretTildeAt pos = prelude_id pos fsCaretTilde idReduceAndAt pos = prelude_id pos fsReduceAnd idReduceOrAt pos = prelude_id pos fsReduceOr idReduceXorAt, idReduceNandAt, idReduceNorAt, idReduceXnorAt :: Position -> Id idReduceXorAt pos = prelude_id pos fsReduceXor idReduceNandAt pos = prelude_id pos fsReduceNand idReduceNorAt pos = prelude_id pos fsReduceNor idReduceXnorAt pos = prelude_id pos fsReduceXnor idRulesAt, idConstAllBitsSetAt, idConstAllBitsUnsetAt :: Position -> Id idRulesAt pos = prelude_id pos fsRules idConstAllBitsSetAt pos = prelude_id pos fsConstAllBitsSet idConstAllBitsUnsetAt pos = prelude_id pos fsConstAllBitsUnset -- | List declaration desugaring idListAt :: Position -> Id idListAt pos = prelude_id pos fsList -- array declaration desugaring idPrimArrayAt, idPrimArrayNewAt, idPrimArrayNewUAt :: Position -> Id idPrimArrayAt pos = prelude_id pos fsPrimArray idPrimArrayNewAt pos = prelude_id pos fsPrimArrayNew idPrimArrayNewUAt pos = prelude_id pos fsPrimArrayNewU idPrimArrayLengthAt, idPrimArrayInitializeAt, idPrimArrayCheckAt :: Position -> Id idPrimArrayLengthAt pos = prelude_id pos fsPrimArrayLength idPrimArrayInitializeAt pos = prelude_id pos fsPrimArrayInitialize idPrimArrayCheckAt pos = prelude_id pos fsPrimArrayCheck -- | List identifiers for catching type errors on lists idList, idListN, idVector, idToVector, idToListN, idPrimArray :: Id idList = prelude_id_no fsList -- there is no List::List idListN = mkQId noPosition fsListN fsListN -- not yet moved to Prelude idVector = mkQId noPosition fsVector fsVector -- but renamed to Vector idToVector = mkQId noPosition fsVector fsToVector idToListN = mkQId noPosition fsListN fsToListN idPrimArray = prelude_id_no fsPrimArray -- system task ids idFinish, idStop :: Id idFinish = prelude_id_no fsFinish idStop = prelude_id_no fsStop idDisplay, idDisplayh, idDisplayb, idDisplayo :: Id idDisplay = prelude_id_no fsDisplay idDisplayh = prelude_id_no fsDisplayh idDisplayb = prelude_id_no fsDisplayb idDisplayo = prelude_id_no fsDisplayo idWrite, idWriteh, idWriteb, idWriteo :: Id idWrite = prelude_id_no fsWrite idWriteh = prelude_id_no fsWriteh idWriteb = prelude_id_no fsWriteb idWriteo = prelude_id_no fsWriteo idFDisplay, idFDisplayh, idFDisplayb, idFDisplayo :: Id idFDisplay = prelude_id_no fsFDisplay idFDisplayh = prelude_id_no fsFDisplayh idFDisplayb = prelude_id_no fsFDisplayb idFDisplayo = prelude_id_no fsFDisplayo idFWrite, idFWriteh, idFWriteb, idFWriteo :: Id idFWrite = prelude_id_no fsFWrite idFWriteh = prelude_id_no fsFWriteh idFWriteb = prelude_id_no fsFWriteb idFWriteo = prelude_id_no fsFWriteo idSWriteAV, idSWrite, idSWritehAV, idSWriteh, idSWritebAV :: Id idSWriteAV = prelude_id_no fsSWriteAV idSWrite = prelude_id_no fsSWrite idSWritehAV = prelude_id_no fsSWritehAV idSWriteh = prelude_id_no fsSWriteh idSWritebAV = prelude_id_no fsSWritebAV idSWriteb, idSWriteoAV, idSWriteo, idSFormatAV, idSFormat :: Id idSWriteb = prelude_id_no fsSWriteb idSWriteoAV = prelude_id_no fsSWriteoAV idSWriteo = prelude_id_no fsSWriteo idSFormatAV = prelude_id_no fsSFormatAV idSFormat = prelude_id_no fsSFormat idErrorTask, idWarnTask, idInfoTask, idFatalTask :: Id idErrorTask = prelude_id_no fsErrorTask idWarnTask = prelude_id_no fsWarnTask idInfoTask = prelude_id_no fsInfoTask idFatalTask = prelude_id_no fsFatalTask idSVA, idSvaParam, idSvaBool, idSvaNumber :: Id idSVA = prelude_id_no fsSVA idSvaParam = prelude_id_no fsSvaParam idSvaBool = prelude_id_no fsSvaBool idSvaNumber = prelude_id_no fsSvaNumber idSVAsampled, idSVArose, idSVAfell, idSVAstable, idSVApast :: Id idSVAsampled = prelude_id_no fsSVAsampled idSVArose = prelude_id_no fsSVArose idSVAfell = prelude_id_no fsSVAfell idSVAstable = prelude_id_no fsSVAstable idSVApast = prelude_id_no fsSVApast idSVAonehot, idSVAonehot0, idSVAisunknown, idSVAcountones :: Id idSVAonehot = prelude_id_no fsSVAonehot idSVAonehot0 = prelude_id_no fsSVAonehot0 idSVAisunknown = prelude_id_no fsSVAisunknown idSVAcountones = prelude_id_no fsSVAcountones idRandom :: Id idRandom = prelude_id_no fsRandom idDumpon, idDumpoff, idDumpvars, idDumpall, idDumplimit, idDumpflush :: Id idDumpon = prelude_id_no fsDumpon idDumpoff = prelude_id_no fsDumpoff idDumpvars = prelude_id_no fsDumpvars idDumpall = prelude_id_no fsDumpall idDumplimit = prelude_id_no fsDumplimit idDumpflush = prelude_id_no fsDumpflush idDumpfile, idTime, idSTime, idFOpen, idFGetc, idUngetc, idFClose :: Id idDumpfile = prelude_id_no fsDumpfile idTime = prelude_id_no fsTime idSTime = prelude_id_no fsSTime idFOpen = prelude_id_no fsFOpen idFGetc = prelude_id_no fsFGetc idUngetc = prelude_id_no fsUngetc idFClose = prelude_id_no fsFClose idFFlush, idTestPlusargs, idRealToBits, idBitsToReal :: Id idFFlush = prelude_id_no fsFFlush idTestPlusargs = prelude_id_no fsTestPlusargs idRealToBits = prelude_id_no fsRealToBits idBitsToReal = prelude_id_no fsBitsToReal taskIds :: [Id] taskIds = [ idFinish, idStop, -- idDisplay, idDisplayh, idDisplayb, idDisplayo, idWrite, idWriteb, idWriteh, idWriteo, -- idErrorTask, idWarnTask, idInfoTask, idFatalTask, -- idRandom, -- idFDisplay, idFDisplayh, idFDisplayb, idFDisplayo, idFWrite, idFWriteb, idFWriteh, idFWriteo, -- idSFormatAV, idSFormat, idSWriteAV, idSWrite, idSWritehAV, idSWriteh, idSWritebAV, idSWriteb, idSWriteoAV, idSWriteo, idFormat, -- idSVA, -- idDumpon, idDumpoff, idDumpvars, idDumpflush, idDumpfile, idDumpall, idDumplimit, -- idTime, idSTime, -- idFOpen, idFGetc, idUngetc, idFClose, idFFlush, -- idTestPlusargs ] -- these are explicitly NOT supported in user code -- they are for internal use only (so not part of the taskids list) idSigned, idUnsigned :: Position -> Id idSigned pos = prelude_id pos fsSigned idUnsigned pos = prelude_id pos fsUnsigned -- | Classes hardcoded in the Prelude which were added for ContextErrors idBitwise, idBitReduce, idBitExtend, idArith, idOrd :: Id idBitwise = prelude_id_no fsBitwise idBitReduce = prelude_id_no fsBitReduce idBitExtend = prelude_id_no fsBitExtend idArith = prelude_id_no fsArith idOrd = prelude_id_no fsOrd -- | Names used for tuple fields internally? tupleIds :: [Id] tupleIds = map (\fs -> mkId noPosition fs) fsTuples -- | Names exposed to the BSV user idTuple2, idTuple3, idTuple4, idTuple5, idTuple6, idTuple7, idTuple8 :: Id idTuple2 = prelude_id_no fsTuple2 idTuple3 = prelude_id_no fsTuple3 idTuple4 = prelude_id_no fsTuple4 idTuple5 = prelude_id_no fsTuple5 idTuple6 = prelude_id_no fsTuple6 idTuple7 = prelude_id_no fsTuple7 idTuple8 = prelude_id_no fsTuple8 -- Classes that we always derive implicitly. -- Note that these are assumed to have a single parameter, or if multiple, -- the first is the one for which the instance is defined. autoderivedClasses :: [Id] autoderivedClasses = [idGeneric]