crucible-llvm 0.7.1 → 0.8.0.0
raw patch · 22 files changed
+831/−48 lines, 22 filesdep ~basedep ~llvm-prettydep ~what4new-uploaderPVP ok
version bump matches the API change (PVP)
Dependency ranges changed: base, llvm-pretty, what4
API changes (from Hackage documentation)
+ Lang.Crucible.LLVM.Internal: assertionsEnabled :: IO Bool
+ Lang.Crucible.LLVM.Intrinsics: declare_overrides :: forall sym (wptr :: Natural) (arch :: LLVMArch) p. (IsSymInterface sym, HasLLVMAnn sym, HasPtrWidth wptr, wptr ~ ArchWidth arch, ?lc :: TypeContext, ?intrinsicsOpts :: IntrinsicsOptions, ?memOpts :: MemOptions) => [OverrideTemplate p sym LLVM arch]
+ Lang.Crucible.LLVM.Intrinsics.LLVM: callVectorMap :: forall sym (tp :: CrucibleType) p ext r (args :: Ctx CrucibleType) (ret :: CrucibleType). (RegValue sym tp -> RegValue sym tp -> IO (RegValue sym tp)) -> RegEntry sym (VectorType tp) -> RegEntry sym (VectorType tp) -> OverrideSim p sym ext r args ret (Vector (RegValue sym tp))
+ Lang.Crucible.LLVM.Intrinsics.LLVM: callVectorMapSmax :: forall sym (intSz :: Natural) p ext r (args :: Ctx CrucibleType) (ret :: CrucibleType). (IsSymInterface sym, 1 <= intSz) => RegEntry sym (VectorType (BVType intSz)) -> RegEntry sym (VectorType (BVType intSz)) -> OverrideSim p sym ext r args ret (Vector (SymBV sym intSz))
+ Lang.Crucible.LLVM.Intrinsics.LLVM: callVectorMapSmin :: forall sym (intSz :: Natural) p ext r (args :: Ctx CrucibleType) (ret :: CrucibleType). (IsSymInterface sym, 1 <= intSz) => RegEntry sym (VectorType (BVType intSz)) -> RegEntry sym (VectorType (BVType intSz)) -> OverrideSim p sym ext r args ret (Vector (SymBV sym intSz))
+ Lang.Crucible.LLVM.Intrinsics.LLVM: callVectorMapUmax :: forall sym (intSz :: Natural) p ext r (args :: Ctx CrucibleType) (ret :: CrucibleType). (IsSymInterface sym, 1 <= intSz) => RegEntry sym (VectorType (BVType intSz)) -> RegEntry sym (VectorType (BVType intSz)) -> OverrideSim p sym ext r args ret (Vector (SymBV sym intSz))
+ Lang.Crucible.LLVM.Intrinsics.LLVM: callVectorMapUmin :: forall sym (intSz :: Natural) p ext r (args :: Ctx CrucibleType) (ret :: CrucibleType). (IsSymInterface sym, 1 <= intSz) => RegEntry sym (VectorType (BVType intSz)) -> RegEntry sym (VectorType (BVType intSz)) -> OverrideSim p sym ext r args ret (Vector (SymBV sym intSz))
+ Lang.Crucible.LLVM.Intrinsics.LLVM: llvmSmaxVector :: forall (intSz :: Natural) (vecSz :: Nat) p sym ext. 1 <= intSz => NatRepr vecSz -> NatRepr intSz -> LLVMOverride p sym ext (((EmptyCtx :: Ctx CrucibleType) ::> VectorType (BVType intSz)) ::> VectorType (BVType intSz)) (VectorType (BVType intSz))
+ Lang.Crucible.LLVM.Intrinsics.LLVM: llvmSminVector :: forall (intSz :: Natural) (vecSz :: Nat) p sym ext. 1 <= intSz => NatRepr vecSz -> NatRepr intSz -> LLVMOverride p sym ext (((EmptyCtx :: Ctx CrucibleType) ::> VectorType (BVType intSz)) ::> VectorType (BVType intSz)) (VectorType (BVType intSz))
+ Lang.Crucible.LLVM.Intrinsics.LLVM: llvmUmaxVector :: forall (intSz :: Natural) (vecSz :: Nat) p sym ext. 1 <= intSz => NatRepr vecSz -> NatRepr intSz -> LLVMOverride p sym ext (((EmptyCtx :: Ctx CrucibleType) ::> VectorType (BVType intSz)) ::> VectorType (BVType intSz)) (VectorType (BVType intSz))
+ Lang.Crucible.LLVM.Intrinsics.LLVM: llvmUminVector :: forall (intSz :: Natural) (vecSz :: Nat) p sym ext. 1 <= intSz => NatRepr vecSz -> NatRepr intSz -> LLVMOverride p sym ext (((EmptyCtx :: Ctx CrucibleType) ::> VectorType (BVType intSz)) ::> VectorType (BVType intSz)) (VectorType (BVType intSz))
+ Lang.Crucible.LLVM.Intrinsics.LLVM: llvmVectorMap :: forall (intSz :: Natural) sym p ext (vecSz :: Nat). 1 <= intSz => String -> (forall r (args :: Ctx CrucibleType) (ret :: CrucibleType). IsSymInterface sym => RegEntry sym (VectorType (BVType intSz)) -> RegEntry sym (VectorType (BVType intSz)) -> OverrideSim p sym ext r args ret (Vector (SymBV sym intSz))) -> NatRepr vecSz -> NatRepr intSz -> LLVMOverride p sym ext (((EmptyCtx :: Ctx CrucibleType) ::> VectorType (BVType intSz)) ::> VectorType (BVType intSz)) (VectorType (BVType intSz))
+ Lang.Crucible.LLVM.MemModel.Strings: Break :: b -> ControlFlow a b
+ Lang.Crucible.LLVM.MemModel.Strings: ByteChecker :: (bak -> a -> LLVMPtr sym 8 -> m (ControlFlow a b)) -> ByteChecker (m :: Type -> Type) sym bak a b
+ Lang.Crucible.LLVM.MemModel.Strings: ByteLoader :: (bak -> LLVMPtr sym wptr -> m (LLVMPtr sym 8)) -> ByteLoader (m :: Type -> Type) sym bak (wptr :: Nat)
+ Lang.Crucible.LLVM.MemModel.Strings: Continue :: a -> ControlFlow a b
+ Lang.Crucible.LLVM.MemModel.Strings: [runByteChecker] :: ByteChecker (m :: Type -> Type) sym bak a b -> bak -> a -> LLVMPtr sym 8 -> m (ControlFlow a b)
+ Lang.Crucible.LLVM.MemModel.Strings: [runByteLoader] :: ByteLoader (m :: Type -> Type) sym bak (wptr :: Nat) -> bak -> LLVMPtr sym wptr -> m (LLVMPtr sym 8)
+ Lang.Crucible.LLVM.MemModel.Strings: concretelyNullTerminatedString :: forall (m :: Type -> Type) sym bak. (MonadIO m, HasCallStack, IsSymBackend sym bak) => ByteChecker m sym bak ([SymBV sym 8] -> [SymBV sym 8]) [SymBV sym 8]
+ Lang.Crucible.LLVM.MemModel.Strings: data ControlFlow a b
+ Lang.Crucible.LLVM.MemModel.Strings: fullyConcreteNullTerminatedString :: forall (m :: Type -> Type) sym bak. (MonadIO m, HasCallStack, IsSymBackend sym bak) => ByteChecker m sym bak ([Word8] -> [Word8]) [Word8]
+ Lang.Crucible.LLVM.MemModel.Strings: instance Data.Bifunctor.Bifunctor Lang.Crucible.LLVM.MemModel.Strings.ControlFlow
+ Lang.Crucible.LLVM.MemModel.Strings: instance GHC.Base.Functor (Lang.Crucible.LLVM.MemModel.Strings.ControlFlow a)
+ Lang.Crucible.LLVM.MemModel.Strings: llvmByteLoader :: forall sym bak (wptr :: Natural) (m :: Type -> Type). (IsSymBackend sym bak, HasPtrWidth wptr, HasLLVMAnn sym, ?memOpts :: MemOptions, HasCallStack, MonadIO m) => MemImpl sym -> ByteLoader m sym bak wptr
+ Lang.Crucible.LLVM.MemModel.Strings: loadBytes :: forall m a b sym bak (wptr :: Natural). (IsSymBackend sym bak, HasPtrWidth wptr, HasLLVMAnn sym, ?memOpts :: MemOptions, HasCallStack, MonadIO m) => bak -> MemImpl sym -> a -> LLVMPtr sym wptr -> ByteLoader m sym bak wptr -> ByteChecker m sym bak a b -> m b
+ Lang.Crucible.LLVM.MemModel.Strings: loadConcretelyNullTerminatedString :: forall sym bak (wptr :: Natural). (IsSymBackend sym bak, HasPtrWidth wptr, HasLLVMAnn sym, ?memOpts :: MemOptions, HasCallStack) => bak -> MemImpl sym -> LLVMPtr sym wptr -> Maybe Int -> IO [SymBV sym 8]
+ Lang.Crucible.LLVM.MemModel.Strings: loadMaybeString :: forall sym bak (wptr :: Natural). (IsSymBackend sym bak, HasPtrWidth wptr, HasLLVMAnn sym, ?memOpts :: MemOptions, HasCallStack) => bak -> MemImpl sym -> LLVMPtr sym wptr -> Maybe Int -> IO (Maybe [Word8])
+ Lang.Crucible.LLVM.MemModel.Strings: loadString :: forall sym bak (wptr :: Natural). (IsSymBackend sym bak, HasPtrWidth wptr, HasLLVMAnn sym, ?memOpts :: MemOptions, HasCallStack) => bak -> MemImpl sym -> LLVMPtr sym wptr -> Maybe Int -> IO [Word8]
+ Lang.Crucible.LLVM.MemModel.Strings: loadSymbolicString :: forall sym bak scope (st :: Type -> Type) fs solver (wptr :: Natural). (IsSymBackend sym bak, sym ~ ExprBuilder scope st fs, bak ~ OnlineBackend solver scope st fs, OnlineSolver solver, HasPtrWidth wptr, HasLLVMAnn sym, ?memOpts :: MemOptions, HasCallStack) => bak -> MemImpl sym -> LLVMPtr sym wptr -> Maybe Int -> IO [SymBV sym 8]
+ Lang.Crucible.LLVM.MemModel.Strings: newtype ByteChecker (m :: Type -> Type) sym bak a b
+ Lang.Crucible.LLVM.MemModel.Strings: newtype ByteLoader (m :: Type -> Type) sym bak (wptr :: Nat)
+ Lang.Crucible.LLVM.MemModel.Strings: nullTerminatedString :: forall (m :: Type -> Type) sym bak scope (st :: Type -> Type) fs solver. (MonadIO m, HasCallStack, IsSymBackend sym bak, sym ~ ExprBuilder scope st fs, bak ~ OnlineBackend solver scope st fs, OnlineSolver solver) => ByteChecker m sym bak ([SymBV sym 8] -> [SymBV sym 8]) [SymBV sym 8]
+ Lang.Crucible.LLVM.MemModel.Strings: storeString :: forall sym bak (w :: Natural). (IsSymBackend sym bak, IsExpr (SymExpr sym), HasPtrWidth w, HasLLVMAnn sym, ?memOpts :: MemOptions) => bak -> MemImpl sym -> LLVMPtr sym w -> Vector (SymBV sym 8) -> IO (MemImpl sym)
+ Lang.Crucible.LLVM.MemModel.Strings: strLen :: forall sym bak (wptr :: Natural). (IsSymBackend sym bak, HasPtrWidth wptr, HasLLVMAnn sym, ?memOpts :: MemOptions) => bak -> MemImpl sym -> LLVMPtr sym wptr -> IO (SymBV sym wptr)
+ Lang.Crucible.LLVM.MemModel.Strings: withMaxChars :: (HasCallStack, IsSymBackend sym bak, Functor m) => Int -> (a -> m b) -> ByteChecker m sym bak a b -> ByteChecker m sym bak (a, Int) b
+ Lang.Crucible.LLVM.Translation: [llvmUnnamedMd] :: LLVMContext (arch :: LLVMArch) -> IntMap ValMd
- Lang.Crucible.LLVM: llvmGlobalsToCtx :: LLVMContext arch -> MemImpl sym -> SymGlobalState sym
+ Lang.Crucible.LLVM: llvmGlobalsToCtx :: forall (arch :: LLVMArch) sym. LLVMContext arch -> MemImpl sym -> SymGlobalState sym
- Lang.Crucible.LLVM: registerLazyModule :: (1 <= ArchWidth arch, HasPtrWidth (ArchWidth arch), IsSymInterface sym) => (LLVMTranslationWarning -> IO ()) -> ModuleTranslation arch -> OverrideSim p sym LLVM rtp l a ()
+ Lang.Crucible.LLVM: registerLazyModule :: forall (arch :: LLVMArch) sym p rtp (l :: Ctx CrucibleType) (a :: CrucibleType). (1 <= ArchWidth arch, HasPtrWidth (ArchWidth arch), IsSymInterface sym) => (LLVMTranslationWarning -> IO ()) -> ModuleTranslation arch -> OverrideSim p sym LLVM rtp l a ()
- Lang.Crucible.LLVM: registerLazyModuleFn :: (1 <= ArchWidth arch, HasPtrWidth (ArchWidth arch), IsSymInterface sym) => (LLVMTranslationWarning -> IO ()) -> ModuleTranslation arch -> Symbol -> OverrideSim p sym LLVM rtp l a ()
+ Lang.Crucible.LLVM: registerLazyModuleFn :: forall (arch :: LLVMArch) sym p rtp (l :: Ctx CrucibleType) (a :: CrucibleType). (1 <= ArchWidth arch, HasPtrWidth (ArchWidth arch), IsSymInterface sym) => (LLVMTranslationWarning -> IO ()) -> ModuleTranslation arch -> Symbol -> OverrideSim p sym LLVM rtp l a ()
- Lang.Crucible.LLVM: registerModule :: (1 <= ArchWidth arch, HasPtrWidth (ArchWidth arch), IsSymInterface sym) => (LLVMTranslationWarning -> IO ()) -> ModuleTranslation arch -> OverrideSim p sym LLVM rtp l a ()
+ Lang.Crucible.LLVM: registerModule :: forall (arch :: LLVMArch) sym p rtp (l :: Ctx CrucibleType) (a :: CrucibleType). (1 <= ArchWidth arch, HasPtrWidth (ArchWidth arch), IsSymInterface sym) => (LLVMTranslationWarning -> IO ()) -> ModuleTranslation arch -> OverrideSim p sym LLVM rtp l a ()
- Lang.Crucible.LLVM: registerModuleFn :: (1 <= ArchWidth arch, HasPtrWidth (ArchWidth arch), IsSymInterface sym) => (LLVMTranslationWarning -> IO ()) -> ModuleTranslation arch -> Symbol -> OverrideSim p sym LLVM rtp l a ()
+ Lang.Crucible.LLVM: registerModuleFn :: forall (arch :: LLVMArch) sym p rtp (l :: Ctx CrucibleType) (a :: CrucibleType). (1 <= ArchWidth arch, HasPtrWidth (ArchWidth arch), IsSymInterface sym) => (LLVMTranslationWarning -> IO ()) -> ModuleTranslation arch -> Symbol -> OverrideSim p sym LLVM rtp l a ()
- Lang.Crucible.LLVM: register_llvm_overrides :: (IsSymInterface sym, HasLLVMAnn sym, HasPtrWidth wptr, wptr ~ ArchWidth arch, ?intrinsicsOpts :: IntrinsicsOptions, ?memOpts :: MemOptions) => Module -> [OverrideTemplate p sym LLVM arch] -> [OverrideTemplate p sym LLVM arch] -> LLVMContext arch -> OverrideSim p sym LLVM rtp l a ([SomeLLVMOverride p sym LLVM], [SomeLLVMOverride p sym LLVM])
+ Lang.Crucible.LLVM: register_llvm_overrides :: forall sym (wptr :: Natural) (arch :: LLVMArch) p rtp (l :: Ctx CrucibleType) (a :: CrucibleType). (IsSymInterface sym, HasLLVMAnn sym, HasPtrWidth wptr, wptr ~ ArchWidth arch, ?intrinsicsOpts :: IntrinsicsOptions, ?memOpts :: MemOptions) => Module -> [OverrideTemplate p sym LLVM arch] -> [OverrideTemplate p sym LLVM arch] -> LLVMContext arch -> OverrideSim p sym LLVM rtp l a ([SomeLLVMOverride p sym LLVM], [SomeLLVMOverride p sym LLVM])
- Lang.Crucible.LLVM.Arch.X86: [VOp1] :: 1 <= n => !NatRepr n -> !AVXOp1 -> !f (BVType n) -> ExtX86 f (BVType n)
+ Lang.Crucible.LLVM.Arch.X86: [VOp1] :: forall (n :: Natural) (a :: CrucibleType -> Type). 1 <= n => !NatRepr n -> !AVXOp1 -> !a (BVType n) -> ExtX86 a ('BaseToType (BaseBVType n))
- Lang.Crucible.LLVM.Arch.X86: data ExtX86 :: (CrucibleType -> Type) -> CrucibleType -> Type
+ Lang.Crucible.LLVM.Arch.X86: data ExtX86 (a :: CrucibleType -> Type) (b :: CrucibleType)
- Lang.Crucible.LLVM.Arch.X86: eval :: forall sym f tp. IsSymExprBuilder sym => sym -> (forall subT. f subT -> IO (RegValue sym subT)) -> ExtX86 f tp -> IO (RegValue sym tp)
+ Lang.Crucible.LLVM.Arch.X86: eval :: forall sym f (tp :: CrucibleType). IsSymExprBuilder sym => sym -> (forall (subT :: CrucibleType). () => f subT -> IO (RegValue sym subT)) -> ExtX86 f tp -> IO (RegValue sym tp)
- Lang.Crucible.LLVM.Arch.X86: vShiftL :: (IsSymExprBuilder sym, 1 <= w) => sym -> NatRepr w -> Word8 -> SymBV sym w -> IO (SymBV sym w)
+ Lang.Crucible.LLVM.Arch.X86: vShiftL :: forall sym (w :: Natural). (IsSymExprBuilder sym, 1 <= w) => sym -> NatRepr w -> Word8 -> SymBV sym w -> IO (SymBV sym w)
- Lang.Crucible.LLVM.Arch.X86: vShufD :: forall sym w. IsSymExprBuilder sym => sym -> NatRepr w -> Word8 -> SymBV sym w -> IO (SymBV sym w)
+ Lang.Crucible.LLVM.Arch.X86: vShufD :: forall sym (w :: Nat). IsSymExprBuilder sym => sym -> NatRepr w -> Word8 -> SymBV sym w -> IO (SymBV sym w)
- Lang.Crucible.LLVM.ArraySizeProfile: arraySizeProfile :: forall sym ext arch p rtp. (IsSymInterface sym, HasLLVMAnn sym, HasPtrWidth (ArchWidth arch), ?memOpts :: MemOptions) => LLVMContext arch -> IORef (Map Text [FunctionProfile]) -> IO (ExecutionFeature p sym ext rtp)
+ Lang.Crucible.LLVM.ArraySizeProfile: arraySizeProfile :: forall sym ext (arch :: LLVMArch) p rtp. (IsSymInterface sym, HasLLVMAnn sym, HasPtrWidth (ArchWidth arch), ?memOpts :: MemOptions) => LLVMContext arch -> IORef (Map Text [FunctionProfile]) -> IO (ExecutionFeature p sym ext rtp)
- Lang.Crucible.LLVM.Bytes: bytesToBV :: NatRepr w -> Bytes -> BV w
+ Lang.Crucible.LLVM.Bytes: bytesToBV :: forall (w :: Nat). NatRepr w -> Bytes -> BV w
- Lang.Crucible.LLVM.Ctors: callAllCtors :: Module -> LLVMGenerator s arch UnitType (Expr LLVM s UnitType)
+ Lang.Crucible.LLVM.Ctors: callAllCtors :: forall s (arch :: LLVMArch). Module -> LLVMGenerator s arch UnitType (Expr LLVM s UnitType)
- Lang.Crucible.LLVM.Ctors: callCtors :: (Ctor -> Bool) -> Module -> LLVMGenerator s arch UnitType (Expr LLVM s UnitType)
+ Lang.Crucible.LLVM.Ctors: callCtors :: forall s (arch :: LLVMArch). (Ctor -> Bool) -> Module -> LLVMGenerator s arch UnitType (Expr LLVM s UnitType)
- Lang.Crucible.LLVM.Ctors: callCtorsCFG :: forall arch wptr. (HasPtrWidth wptr, wptr ~ ArchWidth arch, 16 <= wptr) => (Ctor -> Bool) -> Module -> HandleAllocator -> LLVMContext arch -> IO (SomeCFG LLVM EmptyCtx UnitType)
+ Lang.Crucible.LLVM.Ctors: callCtorsCFG :: forall (arch :: LLVMArch) (wptr :: Natural). (HasPtrWidth wptr, wptr ~ ArchWidth arch, 16 <= wptr) => (Ctor -> Bool) -> Module -> HandleAllocator -> LLVMContext arch -> IO (SomeCFG LLVM (EmptyCtx :: Ctx CrucibleType) UnitType)
- Lang.Crucible.LLVM.Errors: [BBMemoryError] :: MemoryError sym -> BadBehavior sym
+ Lang.Crucible.LLVM.Errors: [BBMemoryError] :: forall sym. MemoryError sym -> BadBehavior sym
- Lang.Crucible.LLVM.Errors: [BBUndefinedBehavior] :: UndefinedBehavior (RegValue' sym) -> BadBehavior sym
+ Lang.Crucible.LLVM.Errors: [BBUndefinedBehavior] :: forall sym. UndefinedBehavior (RegValue' sym) -> BadBehavior sym
- Lang.Crucible.LLVM.Errors: classifier :: Simple Lens (LLVMSafetyAssertion sym) (BadBehavior sym)
+ Lang.Crucible.LLVM.Errors: classifier :: forall sym f. Functor f => (BadBehavior sym -> f (BadBehavior sym)) -> LLVMSafetyAssertion sym -> f (LLVMSafetyAssertion sym)
- Lang.Crucible.LLVM.Errors: concBadBehavior :: IsExprBuilder sym => sym -> (forall tp. SymExpr sym tp -> IO (GroundValue tp)) -> BadBehavior sym -> IO (BadBehavior sym)
+ Lang.Crucible.LLVM.Errors: concBadBehavior :: IsExprBuilder sym => sym -> (forall (tp :: BaseType). () => SymExpr sym tp -> IO (GroundValue tp)) -> BadBehavior sym -> IO (BadBehavior sym)
- Lang.Crucible.LLVM.Errors: extra :: Simple Lens (LLVMSafetyAssertion sym) (Maybe Text)
+ Lang.Crucible.LLVM.Errors: extra :: forall sym f. Functor f => (Maybe Text -> f (Maybe Text)) -> LLVMSafetyAssertion sym -> f (LLVMSafetyAssertion sym)
- Lang.Crucible.LLVM.Errors: memoryError :: 1 <= w => MemoryOp sym w -> MemoryErrorReason -> Pred sym -> LLVMSafetyAssertion sym
+ Lang.Crucible.LLVM.Errors: memoryError :: forall (w :: Natural) sym. 1 <= w => MemoryOp sym w -> MemoryErrorReason -> Pred sym -> LLVMSafetyAssertion sym
- Lang.Crucible.LLVM.Errors: predicate :: Simple Lens (LLVMSafetyAssertion sym) (Pred sym)
+ Lang.Crucible.LLVM.Errors: predicate :: forall sym f. Functor f => (Pred sym -> f (Pred sym)) -> LLVMSafetyAssertion sym -> f (LLVMSafetyAssertion sym)
- Lang.Crucible.LLVM.Errors.MemoryError: MemCopyOp :: (Maybe String, LLVMPtr sym w) -> (Maybe String, LLVMPtr sym w) -> SymBV sym wlen -> Mem sym -> MemoryOp sym w
+ Lang.Crucible.LLVM.Errors.MemoryError: MemCopyOp :: (Maybe String, LLVMPtr sym w) -> (Maybe String, LLVMPtr sym w) -> SymBV sym wlen -> Mem sym -> MemoryOp sym (w :: Nat)
- Lang.Crucible.LLVM.Errors.MemoryError: MemInvalidateOp :: Text -> Maybe String -> LLVMPtr sym w -> SymBV sym wlen -> Mem sym -> MemoryOp sym w
+ Lang.Crucible.LLVM.Errors.MemoryError: MemInvalidateOp :: Text -> Maybe String -> LLVMPtr sym w -> SymBV sym wlen -> Mem sym -> MemoryOp sym (w :: Nat)
- Lang.Crucible.LLVM.Errors.MemoryError: MemLoadHandleOp :: Maybe Type -> Maybe String -> LLVMPtr sym w -> Mem sym -> MemoryOp sym w
+ Lang.Crucible.LLVM.Errors.MemoryError: MemLoadHandleOp :: Maybe Type -> Maybe String -> LLVMPtr sym w -> Mem sym -> MemoryOp sym (w :: Nat)
- Lang.Crucible.LLVM.Errors.MemoryError: MemLoadOp :: StorageType -> Maybe String -> LLVMPtr sym w -> Mem sym -> MemoryOp sym w
+ Lang.Crucible.LLVM.Errors.MemoryError: MemLoadOp :: StorageType -> Maybe String -> LLVMPtr sym w -> Mem sym -> MemoryOp sym (w :: Nat)
- Lang.Crucible.LLVM.Errors.MemoryError: MemStoreBytesOp :: Maybe String -> LLVMPtr sym w -> Maybe (SymBV sym w) -> Mem sym -> MemoryOp sym w
+ Lang.Crucible.LLVM.Errors.MemoryError: MemStoreBytesOp :: Maybe String -> LLVMPtr sym w -> Maybe (SymBV sym w) -> Mem sym -> MemoryOp sym (w :: Nat)
- Lang.Crucible.LLVM.Errors.MemoryError: MemStoreOp :: StorageType -> Maybe String -> LLVMPtr sym w -> Mem sym -> MemoryOp sym w
+ Lang.Crucible.LLVM.Errors.MemoryError: MemStoreOp :: StorageType -> Maybe String -> LLVMPtr sym w -> Mem sym -> MemoryOp sym (w :: Nat)
- Lang.Crucible.LLVM.Errors.MemoryError: [MemoryError] :: 1 <= w => MemoryOp sym w -> MemoryErrorReason -> MemoryError sym
+ Lang.Crucible.LLVM.Errors.MemoryError: [MemoryError] :: forall (w :: Natural) sym. 1 <= w => MemoryOp sym w -> MemoryErrorReason -> MemoryError sym
- Lang.Crucible.LLVM.Errors.MemoryError: concMemoryError :: IsExprBuilder sym => sym -> (forall tp. SymExpr sym tp -> IO (GroundValue tp)) -> MemoryError sym -> IO (MemoryError sym)
+ Lang.Crucible.LLVM.Errors.MemoryError: concMemoryError :: IsExprBuilder sym => sym -> (forall (tp :: BaseType). () => SymExpr sym tp -> IO (GroundValue tp)) -> MemoryError sym -> IO (MemoryError sym)
- Lang.Crucible.LLVM.Errors.MemoryError: concMemoryOp :: (1 <= w, IsExprBuilder sym) => sym -> (forall tp. SymExpr sym tp -> IO (GroundValue tp)) -> MemoryOp sym w -> IO (MemoryOp sym w)
+ Lang.Crucible.LLVM.Errors.MemoryError: concMemoryOp :: forall (w :: Natural) sym. (1 <= w, IsExprBuilder sym) => sym -> (forall (tp :: BaseType). () => SymExpr sym tp -> IO (GroundValue tp)) -> MemoryOp sym w -> IO (MemoryOp sym w)
- Lang.Crucible.LLVM.Errors.MemoryError: data MemoryOp sym w
+ Lang.Crucible.LLVM.Errors.MemoryError: data MemoryOp sym (w :: Nat)
- Lang.Crucible.LLVM.Errors.MemoryError: memOpMem :: MemoryOp sym w -> Mem sym
+ Lang.Crucible.LLVM.Errors.MemoryError: memOpMem :: forall sym (w :: Nat). MemoryOp sym w -> Mem sym
- Lang.Crucible.LLVM.Errors.MemoryError: ppMemoryOp :: IsExpr (SymExpr sym) => MemoryOp sym w -> Doc ann
+ Lang.Crucible.LLVM.Errors.MemoryError: ppMemoryOp :: forall sym (w :: Nat) ann. IsExpr (SymExpr sym) => MemoryOp sym w -> Doc ann
- Lang.Crucible.LLVM.Errors.MemoryError: type MemErrContext sym w = MemoryOp sym w
+ Lang.Crucible.LLVM.Errors.MemoryError: type MemErrContext sym (w :: Nat) = MemoryOp sym w
- Lang.Crucible.LLVM.Errors.Poison: [AddNoSignedWrap] :: 1 <= w => e (BVType w) -> e (BVType w) -> Poison e
+ Lang.Crucible.LLVM.Errors.Poison: [AddNoSignedWrap] :: forall (w :: Natural) (e :: CrucibleType -> Type). 1 <= w => e (BVType w) -> e (BVType w) -> Poison e
- Lang.Crucible.LLVM.Errors.Poison: [AddNoUnsignedWrap] :: 1 <= w => e (BVType w) -> e (BVType w) -> Poison e
+ Lang.Crucible.LLVM.Errors.Poison: [AddNoUnsignedWrap] :: forall (w :: Natural) (e :: CrucibleType -> Type). 1 <= w => e (BVType w) -> e (BVType w) -> Poison e
- Lang.Crucible.LLVM.Errors.Poison: [AshrExact] :: 1 <= w => e (BVType w) -> e (BVType w) -> Poison e
+ Lang.Crucible.LLVM.Errors.Poison: [AshrExact] :: forall (w :: Natural) (e :: CrucibleType -> Type). 1 <= w => e (BVType w) -> e (BVType w) -> Poison e
- Lang.Crucible.LLVM.Errors.Poison: [AshrOp2Big] :: 1 <= w => e (BVType w) -> e (BVType w) -> Poison e
+ Lang.Crucible.LLVM.Errors.Poison: [AshrOp2Big] :: forall (w :: Natural) (e :: CrucibleType -> Type). 1 <= w => e (BVType w) -> e (BVType w) -> Poison e
- Lang.Crucible.LLVM.Errors.Poison: [ExtractElementIndex] :: 1 <= w => e (BVType w) -> Poison e
+ Lang.Crucible.LLVM.Errors.Poison: [ExtractElementIndex] :: forall (w :: Natural) (e :: CrucibleType -> Type). 1 <= w => e (BVType w) -> Poison e
- Lang.Crucible.LLVM.Errors.Poison: [GEPOutOfBounds] :: (1 <= w, 1 <= wptr) => e (LLVMPointerType wptr) -> e (BVType w) -> Poison e
+ Lang.Crucible.LLVM.Errors.Poison: [GEPOutOfBounds] :: forall (w :: Natural) (wptr :: Natural) (e :: CrucibleType -> Type). (1 <= w, 1 <= wptr) => e (LLVMPointerType wptr) -> e (BVType w) -> Poison e
- Lang.Crucible.LLVM.Errors.Poison: [InsertElementIndex] :: 1 <= w => e (BVType w) -> Poison e
+ Lang.Crucible.LLVM.Errors.Poison: [InsertElementIndex] :: forall (w :: Natural) (e :: CrucibleType -> Type). 1 <= w => e (BVType w) -> Poison e
- Lang.Crucible.LLVM.Errors.Poison: [LLVMAbsIntMin] :: 1 <= w => e (BVType w) -> Poison e
+ Lang.Crucible.LLVM.Errors.Poison: [LLVMAbsIntMin] :: forall (w :: Natural) (e :: CrucibleType -> Type). 1 <= w => e (BVType w) -> Poison e
- Lang.Crucible.LLVM.Errors.Poison: [LshrExact] :: 1 <= w => e (BVType w) -> e (BVType w) -> Poison e
+ Lang.Crucible.LLVM.Errors.Poison: [LshrExact] :: forall (w :: Natural) (e :: CrucibleType -> Type). 1 <= w => e (BVType w) -> e (BVType w) -> Poison e
- Lang.Crucible.LLVM.Errors.Poison: [LshrOp2Big] :: 1 <= w => e (BVType w) -> e (BVType w) -> Poison e
+ Lang.Crucible.LLVM.Errors.Poison: [LshrOp2Big] :: forall (w :: Natural) (e :: CrucibleType -> Type). 1 <= w => e (BVType w) -> e (BVType w) -> Poison e
- Lang.Crucible.LLVM.Errors.Poison: [MulNoSignedWrap] :: 1 <= w => e (BVType w) -> e (BVType w) -> Poison e
+ Lang.Crucible.LLVM.Errors.Poison: [MulNoSignedWrap] :: forall (w :: Natural) (e :: CrucibleType -> Type). 1 <= w => e (BVType w) -> e (BVType w) -> Poison e
- Lang.Crucible.LLVM.Errors.Poison: [MulNoUnsignedWrap] :: 1 <= w => e (BVType w) -> e (BVType w) -> Poison e
+ Lang.Crucible.LLVM.Errors.Poison: [MulNoUnsignedWrap] :: forall (w :: Natural) (e :: CrucibleType -> Type). 1 <= w => e (BVType w) -> e (BVType w) -> Poison e
- Lang.Crucible.LLVM.Errors.Poison: [SDivExact] :: 1 <= w => e (BVType w) -> e (BVType w) -> Poison e
+ Lang.Crucible.LLVM.Errors.Poison: [SDivExact] :: forall (w :: Natural) (e :: CrucibleType -> Type). 1 <= w => e (BVType w) -> e (BVType w) -> Poison e
- Lang.Crucible.LLVM.Errors.Poison: [ShlNoSignedWrap] :: 1 <= w => e (BVType w) -> e (BVType w) -> Poison e
+ Lang.Crucible.LLVM.Errors.Poison: [ShlNoSignedWrap] :: forall (w :: Natural) (e :: CrucibleType -> Type). 1 <= w => e (BVType w) -> e (BVType w) -> Poison e
- Lang.Crucible.LLVM.Errors.Poison: [ShlNoUnsignedWrap] :: 1 <= w => e (BVType w) -> e (BVType w) -> Poison e
+ Lang.Crucible.LLVM.Errors.Poison: [ShlNoUnsignedWrap] :: forall (w :: Natural) (e :: CrucibleType -> Type). 1 <= w => e (BVType w) -> e (BVType w) -> Poison e
- Lang.Crucible.LLVM.Errors.Poison: [ShlOp2Big] :: 1 <= w => e (BVType w) -> e (BVType w) -> Poison e
+ Lang.Crucible.LLVM.Errors.Poison: [ShlOp2Big] :: forall (w :: Natural) (e :: CrucibleType -> Type). 1 <= w => e (BVType w) -> e (BVType w) -> Poison e
- Lang.Crucible.LLVM.Errors.Poison: [SubNoSignedWrap] :: 1 <= w => e (BVType w) -> e (BVType w) -> Poison e
+ Lang.Crucible.LLVM.Errors.Poison: [SubNoSignedWrap] :: forall (w :: Natural) (e :: CrucibleType -> Type). 1 <= w => e (BVType w) -> e (BVType w) -> Poison e
- Lang.Crucible.LLVM.Errors.Poison: [SubNoUnsignedWrap] :: 1 <= w => e (BVType w) -> e (BVType w) -> Poison e
+ Lang.Crucible.LLVM.Errors.Poison: [SubNoUnsignedWrap] :: forall (w :: Natural) (e :: CrucibleType -> Type). 1 <= w => e (BVType w) -> e (BVType w) -> Poison e
- Lang.Crucible.LLVM.Errors.Poison: [UDivExact] :: 1 <= w => e (BVType w) -> e (BVType w) -> Poison e
+ Lang.Crucible.LLVM.Errors.Poison: [UDivExact] :: forall (w :: Natural) (e :: CrucibleType -> Type). 1 <= w => e (BVType w) -> e (BVType w) -> Poison e
- Lang.Crucible.LLVM.Errors.Poison: cite :: Poison e -> Doc ann
+ Lang.Crucible.LLVM.Errors.Poison: cite :: forall (e :: CrucibleType -> Type) ann. Poison e -> Doc ann
- Lang.Crucible.LLVM.Errors.Poison: concPoison :: forall sym. IsExprBuilder sym => sym -> (forall tp. SymExpr sym tp -> IO (GroundValue tp)) -> Poison (RegValue' sym) -> IO (Poison (RegValue' sym))
+ Lang.Crucible.LLVM.Errors.Poison: concPoison :: IsExprBuilder sym => sym -> (forall (tp :: BaseType). () => SymExpr sym tp -> IO (GroundValue tp)) -> Poison (RegValue' sym) -> IO (Poison (RegValue' sym))
- Lang.Crucible.LLVM.Errors.Poison: details :: forall sym ann. IsExpr (SymExpr sym) => Poison (RegValue' sym) -> [Doc ann]
+ Lang.Crucible.LLVM.Errors.Poison: details :: IsExpr (SymExpr sym) => Poison (RegValue' sym) -> [Doc ann]
- Lang.Crucible.LLVM.Errors.Poison: explain :: Poison e -> Doc ann
+ Lang.Crucible.LLVM.Errors.Poison: explain :: forall (e :: CrucibleType -> Type) ann. Poison e -> Doc ann
- Lang.Crucible.LLVM.Errors.Poison: pp :: (Poison e -> [Doc ann]) -> Poison e -> Doc ann
+ Lang.Crucible.LLVM.Errors.Poison: pp :: forall (e :: CrucibleType -> Type) ann. (Poison e -> [Doc ann]) -> Poison e -> Doc ann
- Lang.Crucible.LLVM.Errors.Poison: standard :: Poison e -> Standard
+ Lang.Crucible.LLVM.Errors.Poison: standard :: forall (e :: CrucibleType -> Type). Poison e -> Standard
- Lang.Crucible.LLVM.Errors.UndefinedBehavior: [AbsIntMin] :: 1 <= w => e (BVType w) -> UndefinedBehavior e
+ Lang.Crucible.LLVM.Errors.UndefinedBehavior: [AbsIntMin] :: forall (w :: Natural) (e :: CrucibleType -> Type). 1 <= w => e (BVType w) -> UndefinedBehavior e
- Lang.Crucible.LLVM.Errors.UndefinedBehavior: [CompareDifferentAllocs] :: 1 <= w => e (LLVMPointerType w) -> e (LLVMPointerType w) -> UndefinedBehavior e
+ Lang.Crucible.LLVM.Errors.UndefinedBehavior: [CompareDifferentAllocs] :: forall (w :: Natural) (e :: CrucibleType -> Type). 1 <= w => e (LLVMPointerType w) -> e (LLVMPointerType w) -> UndefinedBehavior e
- Lang.Crucible.LLVM.Errors.UndefinedBehavior: [CompareInvalidPointer] :: 1 <= w => PtrComparisonOperator -> e (LLVMPointerType w) -> e (LLVMPointerType w) -> UndefinedBehavior e
+ Lang.Crucible.LLVM.Errors.UndefinedBehavior: [CompareInvalidPointer] :: forall (w :: Natural) (e :: CrucibleType -> Type). 1 <= w => PtrComparisonOperator -> e (LLVMPointerType w) -> e (LLVMPointerType w) -> UndefinedBehavior e
- Lang.Crucible.LLVM.Errors.UndefinedBehavior: [ComparePointerToBV] :: 1 <= w => e (LLVMPointerType w) -> e (BVType w) -> UndefinedBehavior e
+ Lang.Crucible.LLVM.Errors.UndefinedBehavior: [ComparePointerToBV] :: forall (w :: Natural) (e :: CrucibleType -> Type). 1 <= w => e (LLVMPointerType w) -> e (BVType w) -> UndefinedBehavior e
- Lang.Crucible.LLVM.Errors.UndefinedBehavior: [DoubleFree] :: 1 <= w => e (LLVMPointerType w) -> UndefinedBehavior e
+ Lang.Crucible.LLVM.Errors.UndefinedBehavior: [DoubleFree] :: forall (w :: Natural) (e :: CrucibleType -> Type). 1 <= w => e (LLVMPointerType w) -> UndefinedBehavior e
- Lang.Crucible.LLVM.Errors.UndefinedBehavior: [FreeBadOffset] :: 1 <= w => e (LLVMPointerType w) -> UndefinedBehavior e
+ Lang.Crucible.LLVM.Errors.UndefinedBehavior: [FreeBadOffset] :: forall (w :: Natural) (e :: CrucibleType -> Type). 1 <= w => e (LLVMPointerType w) -> UndefinedBehavior e
- Lang.Crucible.LLVM.Errors.UndefinedBehavior: [FreeUnallocated] :: 1 <= w => e (LLVMPointerType w) -> UndefinedBehavior e
+ Lang.Crucible.LLVM.Errors.UndefinedBehavior: [FreeUnallocated] :: forall (w :: Natural) (e :: CrucibleType -> Type). 1 <= w => e (LLVMPointerType w) -> UndefinedBehavior e
- Lang.Crucible.LLVM.Errors.UndefinedBehavior: [MemsetInvalidRegion] :: (1 <= w, 1 <= v) => e (LLVMPointerType w) -> e (BVType 8) -> e (BVType v) -> UndefinedBehavior e
+ Lang.Crucible.LLVM.Errors.UndefinedBehavior: [MemsetInvalidRegion] :: forall (w :: Natural) (v :: Natural) (e :: CrucibleType -> Type). (1 <= w, 1 <= v) => e (LLVMPointerType w) -> e (BVType 8) -> e (BVType v) -> UndefinedBehavior e
- Lang.Crucible.LLVM.Errors.UndefinedBehavior: [PointerFloatCast] :: 1 <= w => e (LLVMPointerType w) -> StorageType -> UndefinedBehavior e
+ Lang.Crucible.LLVM.Errors.UndefinedBehavior: [PointerFloatCast] :: forall (w :: Natural) (e :: CrucibleType -> Type). 1 <= w => e (LLVMPointerType w) -> StorageType -> UndefinedBehavior e
- Lang.Crucible.LLVM.Errors.UndefinedBehavior: [PointerIntCast] :: 1 <= w => e (LLVMPointerType w) -> StorageType -> UndefinedBehavior e
+ Lang.Crucible.LLVM.Errors.UndefinedBehavior: [PointerIntCast] :: forall (w :: Natural) (e :: CrucibleType -> Type). 1 <= w => e (LLVMPointerType w) -> StorageType -> UndefinedBehavior e
- Lang.Crucible.LLVM.Errors.UndefinedBehavior: [PointerUnsupportedOp] :: 1 <= w => e (LLVMPointerType w) -> String -> UndefinedBehavior e
+ Lang.Crucible.LLVM.Errors.UndefinedBehavior: [PointerUnsupportedOp] :: forall (w :: Natural) (e :: CrucibleType -> Type). 1 <= w => e (LLVMPointerType w) -> String -> UndefinedBehavior e
- Lang.Crucible.LLVM.Errors.UndefinedBehavior: [PoisonValueCreated] :: Poison e -> UndefinedBehavior e
+ Lang.Crucible.LLVM.Errors.UndefinedBehavior: [PoisonValueCreated] :: forall (e :: CrucibleType -> Type). Poison e -> UndefinedBehavior e
- Lang.Crucible.LLVM.Errors.UndefinedBehavior: [PtrAddOffsetOutOfBounds] :: 1 <= w => e (LLVMPointerType w) -> e (BVType w) -> UndefinedBehavior e
+ Lang.Crucible.LLVM.Errors.UndefinedBehavior: [PtrAddOffsetOutOfBounds] :: forall (w :: Natural) (e :: CrucibleType -> Type). 1 <= w => e (LLVMPointerType w) -> e (BVType w) -> UndefinedBehavior e
- Lang.Crucible.LLVM.Errors.UndefinedBehavior: [PtrSubDifferentAllocs] :: 1 <= w => e (LLVMPointerType w) -> e (LLVMPointerType w) -> UndefinedBehavior e
+ Lang.Crucible.LLVM.Errors.UndefinedBehavior: [PtrSubDifferentAllocs] :: forall (w :: Natural) (e :: CrucibleType -> Type). 1 <= w => e (LLVMPointerType w) -> e (LLVMPointerType w) -> UndefinedBehavior e
- Lang.Crucible.LLVM.Errors.UndefinedBehavior: [ReadBadAlignment] :: 1 <= w => e (LLVMPointerType w) -> Alignment -> UndefinedBehavior e
+ Lang.Crucible.LLVM.Errors.UndefinedBehavior: [ReadBadAlignment] :: forall (w :: Natural) (e :: CrucibleType -> Type). 1 <= w => e (LLVMPointerType w) -> Alignment -> UndefinedBehavior e
- Lang.Crucible.LLVM.Errors.UndefinedBehavior: [SDivByZero] :: 1 <= w => e (BVType w) -> e (BVType w) -> UndefinedBehavior e
+ Lang.Crucible.LLVM.Errors.UndefinedBehavior: [SDivByZero] :: forall (w :: Natural) (e :: CrucibleType -> Type). 1 <= w => e (BVType w) -> e (BVType w) -> UndefinedBehavior e
- Lang.Crucible.LLVM.Errors.UndefinedBehavior: [SDivOverflow] :: 1 <= w => e (BVType w) -> e (BVType w) -> UndefinedBehavior e
+ Lang.Crucible.LLVM.Errors.UndefinedBehavior: [SDivOverflow] :: forall (w :: Natural) (e :: CrucibleType -> Type). 1 <= w => e (BVType w) -> e (BVType w) -> UndefinedBehavior e
- Lang.Crucible.LLVM.Errors.UndefinedBehavior: [SRemByZero] :: 1 <= w => e (BVType w) -> e (BVType w) -> UndefinedBehavior e
+ Lang.Crucible.LLVM.Errors.UndefinedBehavior: [SRemByZero] :: forall (w :: Natural) (e :: CrucibleType -> Type). 1 <= w => e (BVType w) -> e (BVType w) -> UndefinedBehavior e
- Lang.Crucible.LLVM.Errors.UndefinedBehavior: [SRemOverflow] :: 1 <= w => e (BVType w) -> e (BVType w) -> UndefinedBehavior e
+ Lang.Crucible.LLVM.Errors.UndefinedBehavior: [SRemOverflow] :: forall (w :: Natural) (e :: CrucibleType -> Type). 1 <= w => e (BVType w) -> e (BVType w) -> UndefinedBehavior e
- Lang.Crucible.LLVM.Errors.UndefinedBehavior: [UDivByZero] :: 1 <= w => e (BVType w) -> e (BVType w) -> UndefinedBehavior e
+ Lang.Crucible.LLVM.Errors.UndefinedBehavior: [UDivByZero] :: forall (w :: Natural) (e :: CrucibleType -> Type). 1 <= w => e (BVType w) -> e (BVType w) -> UndefinedBehavior e
- Lang.Crucible.LLVM.Errors.UndefinedBehavior: [URemByZero] :: 1 <= w => e (BVType w) -> e (BVType w) -> UndefinedBehavior e
+ Lang.Crucible.LLVM.Errors.UndefinedBehavior: [URemByZero] :: forall (w :: Natural) (e :: CrucibleType -> Type). 1 <= w => e (BVType w) -> e (BVType w) -> UndefinedBehavior e
- Lang.Crucible.LLVM.Errors.UndefinedBehavior: [WriteBadAlignment] :: 1 <= w => e (LLVMPointerType w) -> Alignment -> UndefinedBehavior e
+ Lang.Crucible.LLVM.Errors.UndefinedBehavior: [WriteBadAlignment] :: forall (w :: Natural) (e :: CrucibleType -> Type). 1 <= w => e (LLVMPointerType w) -> Alignment -> UndefinedBehavior e
- Lang.Crucible.LLVM.Errors.UndefinedBehavior: cite :: UndefinedBehavior e -> Doc ann
+ Lang.Crucible.LLVM.Errors.UndefinedBehavior: cite :: forall (e :: CrucibleType -> Type) ann. UndefinedBehavior e -> Doc ann
- Lang.Crucible.LLVM.Errors.UndefinedBehavior: concUB :: forall sym. IsExprBuilder sym => sym -> (forall tp. SymExpr sym tp -> IO (GroundValue tp)) -> UndefinedBehavior (RegValue' sym) -> IO (UndefinedBehavior (RegValue' sym))
+ Lang.Crucible.LLVM.Errors.UndefinedBehavior: concUB :: IsExprBuilder sym => sym -> (forall (tp :: BaseType). () => SymExpr sym tp -> IO (GroundValue tp)) -> UndefinedBehavior (RegValue' sym) -> IO (UndefinedBehavior (RegValue' sym))
- Lang.Crucible.LLVM.Errors.UndefinedBehavior: explain :: UndefinedBehavior e -> Doc ann
+ Lang.Crucible.LLVM.Errors.UndefinedBehavior: explain :: forall (e :: CrucibleType -> Type) ann. UndefinedBehavior e -> Doc ann
- Lang.Crucible.LLVM.Errors.UndefinedBehavior: pp :: (UndefinedBehavior e -> [Doc ann]) -> UndefinedBehavior e -> Doc ann
+ Lang.Crucible.LLVM.Errors.UndefinedBehavior: pp :: forall (e :: CrucibleType -> Type) ann. (UndefinedBehavior e -> [Doc ann]) -> UndefinedBehavior e -> Doc ann
- Lang.Crucible.LLVM.Errors.UndefinedBehavior: ppCitation :: UndefinedBehavior e -> [Doc ann]
+ Lang.Crucible.LLVM.Errors.UndefinedBehavior: ppCitation :: forall (e :: CrucibleType -> Type) ann. UndefinedBehavior e -> [Doc ann]
- Lang.Crucible.LLVM.Eval: callStackFromMemVar :: SimState p sym ext rtp lang args -> GlobalVar Mem -> CallStack
+ Lang.Crucible.LLVM.Eval: callStackFromMemVar :: forall p sym ext rtp lang (args :: Maybe (Ctx CrucibleType)). SimState p sym ext rtp lang args -> GlobalVar Mem -> CallStack
- Lang.Crucible.LLVM.Eval: llvmExtensionEval :: forall sym bak p ext rtp blocks r ctx. (HasLLVMAnn sym, IsSymBackend sym bak) => bak -> IntrinsicTypes sym -> (Int -> String -> IO ()) -> CrucibleState p sym ext rtp blocks r ctx -> EvalAppFunc sym LLVMExtensionExpr
+ Lang.Crucible.LLVM.Eval: llvmExtensionEval :: forall sym bak p ext rtp (blocks :: Ctx (Ctx CrucibleType)) (r :: CrucibleType) (ctx :: Ctx CrucibleType). (HasLLVMAnn sym, IsSymBackend sym bak) => bak -> IntrinsicTypes sym -> (Int -> String -> IO ()) -> CrucibleState p sym ext rtp blocks r ctx -> EvalAppFunc sym LLVMExtensionExpr
- Lang.Crucible.LLVM.Extension: [LLVM_Alloca] :: HasPtrWidth wptr => !NatRepr wptr -> !GlobalVar Mem -> !f (BVType wptr) -> !Alignment -> !String -> LLVMStmt f (LLVMPointerType wptr)
+ Lang.Crucible.LLVM.Extension: [LLVM_Alloca] :: forall (wptr :: Natural) (f :: CrucibleType -> Type). HasPtrWidth wptr => !NatRepr wptr -> !GlobalVar Mem -> !f (BVType wptr) -> !Alignment -> !String -> LLVMStmt f ('IntrinsicType "LLVM_pointer" ((EmptyCtx :: Ctx CrucibleType) ::> BVType wptr))
- Lang.Crucible.LLVM.Extension: [LLVM_Dbg_Addr] :: HasPtrWidth wptr => !f (LLVMPointerType wptr) -> DILocalVariable -> DIExpression -> LLVM_Dbg f (LLVMPointerType wptr)
+ Lang.Crucible.LLVM.Extension: [LLVM_Dbg_Addr] :: forall (wptr :: Natural) (f :: CrucibleType -> Type). HasPtrWidth wptr => !f (LLVMPointerType wptr) -> DILocalVariable -> DIExpression -> LLVM_Dbg f ('IntrinsicType "LLVM_pointer" ((EmptyCtx :: Ctx CrucibleType) ::> BVType wptr))
- Lang.Crucible.LLVM.Extension: [LLVM_Dbg_Declare] :: HasPtrWidth wptr => !f (LLVMPointerType wptr) -> DILocalVariable -> DIExpression -> LLVM_Dbg f (LLVMPointerType wptr)
+ Lang.Crucible.LLVM.Extension: [LLVM_Dbg_Declare] :: forall (wptr :: Natural) (f :: CrucibleType -> Type). HasPtrWidth wptr => !f (LLVMPointerType wptr) -> DILocalVariable -> DIExpression -> LLVM_Dbg f ('IntrinsicType "LLVM_pointer" ((EmptyCtx :: Ctx CrucibleType) ::> BVType wptr))
- Lang.Crucible.LLVM.Extension: [LLVM_Dbg_Value] :: !TypeRepr c -> !f c -> DILocalVariable -> DIExpression -> LLVM_Dbg f c
+ Lang.Crucible.LLVM.Extension: [LLVM_Dbg_Value] :: forall (c :: CrucibleType) (f :: CrucibleType -> Type). !TypeRepr c -> !f c -> DILocalVariable -> DIExpression -> LLVM_Dbg f c
- Lang.Crucible.LLVM.Extension: [LLVM_Debug] :: !LLVM_Dbg f c -> LLVMStmt f UnitType
+ Lang.Crucible.LLVM.Extension: [LLVM_Debug] :: forall (f :: CrucibleType -> Type) (c :: CrucibleType). !LLVM_Dbg f c -> LLVMStmt f 'UnitType
- Lang.Crucible.LLVM.Extension: [LLVM_LoadHandle] :: HasPtrWidth wptr => !GlobalVar Mem -> !Maybe Type -> !f (LLVMPointerType wptr) -> !CtxRepr args -> !TypeRepr ret -> LLVMStmt f (FunctionHandleType args ret)
+ Lang.Crucible.LLVM.Extension: [LLVM_LoadHandle] :: forall (wptr :: Natural) (f :: CrucibleType -> Type) (args :: Ctx CrucibleType) (ret :: CrucibleType). HasPtrWidth wptr => !GlobalVar Mem -> !Maybe Type -> !f (LLVMPointerType wptr) -> !CtxRepr args -> !TypeRepr ret -> LLVMStmt f ('FunctionHandleType args ret)
- Lang.Crucible.LLVM.Extension: [LLVM_Load] :: HasPtrWidth wptr => !GlobalVar Mem -> !f (LLVMPointerType wptr) -> !TypeRepr tp -> !StorageType -> !Alignment -> LLVMStmt f tp
+ Lang.Crucible.LLVM.Extension: [LLVM_Load] :: forall (wptr :: Natural) (f :: CrucibleType -> Type) (a :: CrucibleType). HasPtrWidth wptr => !GlobalVar Mem -> !f (LLVMPointerType wptr) -> !TypeRepr a -> !StorageType -> !Alignment -> LLVMStmt f a
- Lang.Crucible.LLVM.Extension: [LLVM_MemClear] :: HasPtrWidth wptr => !GlobalVar Mem -> !f (LLVMPointerType wptr) -> !Bytes -> LLVMStmt f UnitType
+ Lang.Crucible.LLVM.Extension: [LLVM_MemClear] :: forall (wptr :: Natural) (f :: CrucibleType -> Type). HasPtrWidth wptr => !GlobalVar Mem -> !f (LLVMPointerType wptr) -> !Bytes -> LLVMStmt f 'UnitType
- Lang.Crucible.LLVM.Extension: [LLVM_PointerBlock] :: 1 <= w => !NatRepr w -> !f (LLVMPointerType w) -> LLVMExtensionExpr f NatType
+ Lang.Crucible.LLVM.Extension: [LLVM_PointerBlock] :: forall (w :: Natural) (a :: CrucibleType -> Type). 1 <= w => !NatRepr w -> !a (LLVMPointerType w) -> LLVMExtensionExpr a 'NatType
- Lang.Crucible.LLVM.Extension: [LLVM_PointerExpr] :: 1 <= w => !NatRepr w -> !f NatType -> !f (BVType w) -> LLVMExtensionExpr f (LLVMPointerType w)
+ Lang.Crucible.LLVM.Extension: [LLVM_PointerExpr] :: forall (w :: Natural) (a :: CrucibleType -> Type). 1 <= w => !NatRepr w -> !a NatType -> !a (BVType w) -> LLVMExtensionExpr a ('IntrinsicType "LLVM_pointer" ((EmptyCtx :: Ctx CrucibleType) ::> BVType w))
- Lang.Crucible.LLVM.Extension: [LLVM_PointerIte] :: 1 <= w => !NatRepr w -> !f BoolType -> !f (LLVMPointerType w) -> !f (LLVMPointerType w) -> LLVMExtensionExpr f (LLVMPointerType w)
+ Lang.Crucible.LLVM.Extension: [LLVM_PointerIte] :: forall (w :: Natural) (a :: CrucibleType -> Type). 1 <= w => !NatRepr w -> !a BoolType -> !a (LLVMPointerType w) -> !a (LLVMPointerType w) -> LLVMExtensionExpr a ('IntrinsicType "LLVM_pointer" ((EmptyCtx :: Ctx CrucibleType) ::> BVType w))
- Lang.Crucible.LLVM.Extension: [LLVM_PointerOffset] :: 1 <= w => !NatRepr w -> !f (LLVMPointerType w) -> LLVMExtensionExpr f (BVType w)
+ Lang.Crucible.LLVM.Extension: [LLVM_PointerOffset] :: forall (w :: Natural) (a :: CrucibleType -> Type). 1 <= w => !NatRepr w -> !a (LLVMPointerType w) -> LLVMExtensionExpr a ('BaseToType (BaseBVType w))
- Lang.Crucible.LLVM.Extension: [LLVM_PopFrame] :: !GlobalVar Mem -> LLVMStmt f UnitType
+ Lang.Crucible.LLVM.Extension: [LLVM_PopFrame] :: forall (f :: CrucibleType -> Type). !GlobalVar Mem -> LLVMStmt f 'UnitType
- Lang.Crucible.LLVM.Extension: [LLVM_PtrAddOffset] :: HasPtrWidth wptr => !NatRepr wptr -> !GlobalVar Mem -> !f (LLVMPointerType wptr) -> !f (BVType wptr) -> LLVMStmt f (LLVMPointerType wptr)
+ Lang.Crucible.LLVM.Extension: [LLVM_PtrAddOffset] :: forall (wptr :: Natural) (f :: CrucibleType -> Type). HasPtrWidth wptr => !NatRepr wptr -> !GlobalVar Mem -> !f (LLVMPointerType wptr) -> !f (BVType wptr) -> LLVMStmt f ('IntrinsicType "LLVM_pointer" ((EmptyCtx :: Ctx CrucibleType) ::> BVType wptr))
- Lang.Crucible.LLVM.Extension: [LLVM_PtrEq] :: HasPtrWidth wptr => !GlobalVar Mem -> !f (LLVMPointerType wptr) -> !f (LLVMPointerType wptr) -> LLVMStmt f BoolType
+ Lang.Crucible.LLVM.Extension: [LLVM_PtrEq] :: forall (wptr :: Natural) (f :: CrucibleType -> Type). HasPtrWidth wptr => !GlobalVar Mem -> !f (LLVMPointerType wptr) -> !f (LLVMPointerType wptr) -> LLVMStmt f ('BaseToType BaseBoolType)
- Lang.Crucible.LLVM.Extension: [LLVM_PtrLe] :: HasPtrWidth wptr => !GlobalVar Mem -> !f (LLVMPointerType wptr) -> !f (LLVMPointerType wptr) -> LLVMStmt f BoolType
+ Lang.Crucible.LLVM.Extension: [LLVM_PtrLe] :: forall (wptr :: Natural) (f :: CrucibleType -> Type). HasPtrWidth wptr => !GlobalVar Mem -> !f (LLVMPointerType wptr) -> !f (LLVMPointerType wptr) -> LLVMStmt f ('BaseToType BaseBoolType)
- Lang.Crucible.LLVM.Extension: [LLVM_PtrSubtract] :: HasPtrWidth wptr => !NatRepr wptr -> !GlobalVar Mem -> !f (LLVMPointerType wptr) -> !f (LLVMPointerType wptr) -> LLVMStmt f (BVType wptr)
+ Lang.Crucible.LLVM.Extension: [LLVM_PtrSubtract] :: forall (wptr :: Natural) (f :: CrucibleType -> Type). HasPtrWidth wptr => !NatRepr wptr -> !GlobalVar Mem -> !f (LLVMPointerType wptr) -> !f (LLVMPointerType wptr) -> LLVMStmt f ('BaseToType (BaseBVType wptr))
- Lang.Crucible.LLVM.Extension: [LLVM_PushFrame] :: !Text -> !GlobalVar Mem -> LLVMStmt f UnitType
+ Lang.Crucible.LLVM.Extension: [LLVM_PushFrame] :: forall (f :: CrucibleType -> Type). !Text -> !GlobalVar Mem -> LLVMStmt f 'UnitType
- Lang.Crucible.LLVM.Extension: [LLVM_ResolveGlobal] :: HasPtrWidth wptr => !NatRepr wptr -> !GlobalVar Mem -> GlobalSymbol -> LLVMStmt f (LLVMPointerType wptr)
+ Lang.Crucible.LLVM.Extension: [LLVM_ResolveGlobal] :: forall (wptr :: Natural) (f :: CrucibleType -> Type). HasPtrWidth wptr => !NatRepr wptr -> !GlobalVar Mem -> GlobalSymbol -> LLVMStmt f ('IntrinsicType "LLVM_pointer" ((EmptyCtx :: Ctx CrucibleType) ::> BVType wptr))
- Lang.Crucible.LLVM.Extension: [LLVM_SideConditions] :: !GlobalVar Mem -> !TypeRepr tp -> !NonEmpty (LLVMSideCondition f) -> !f tp -> LLVMExtensionExpr f tp
+ Lang.Crucible.LLVM.Extension: [LLVM_SideConditions] :: forall (b :: CrucibleType) (a :: CrucibleType -> Type). !GlobalVar Mem -> !TypeRepr b -> !NonEmpty (LLVMSideCondition a) -> !a b -> LLVMExtensionExpr a b
- Lang.Crucible.LLVM.Extension: [LLVM_Store] :: HasPtrWidth wptr => !GlobalVar Mem -> !f (LLVMPointerType wptr) -> !TypeRepr tp -> !StorageType -> !Alignment -> !f tp -> LLVMStmt f UnitType
+ Lang.Crucible.LLVM.Extension: [LLVM_Store] :: forall (wptr :: Natural) (f :: CrucibleType -> Type) (tp :: CrucibleType). HasPtrWidth wptr => !GlobalVar Mem -> !f (LLVMPointerType wptr) -> !TypeRepr tp -> !StorageType -> !Alignment -> !f tp -> LLVMStmt f 'UnitType
- Lang.Crucible.LLVM.Extension: [X86Expr] :: !ExtX86 f t -> LLVMExtensionExpr f t
+ Lang.Crucible.LLVM.Extension: [X86Expr] :: forall (a :: CrucibleType -> Type) (b :: CrucibleType). !ExtX86 a b -> LLVMExtensionExpr a b
- Lang.Crucible.LLVM.Extension: [X86Repr] :: NatRepr w -> ArchRepr (X86 w)
+ Lang.Crucible.LLVM.Extension: [X86Repr] :: forall (w :: Nat). NatRepr w -> ArchRepr ('X86 w)
- Lang.Crucible.LLVM.Extension: data LLVMExtensionExpr :: (CrucibleType -> Type) -> (CrucibleType -> Type)
+ Lang.Crucible.LLVM.Extension: data LLVMExtensionExpr (a :: CrucibleType -> Type) (b :: CrucibleType)
- Lang.Crucible.LLVM.Extension: data LLVMStmt (f :: CrucibleType -> Type) :: CrucibleType -> Type
+ Lang.Crucible.LLVM.Extension: data LLVMStmt (f :: CrucibleType -> Type) (a :: CrucibleType)
- Lang.Crucible.LLVM.Extension: data LLVM_Dbg f c
+ Lang.Crucible.LLVM.Extension: data LLVM_Dbg (f :: CrucibleType -> Type) (c :: CrucibleType)
- Lang.Crucible.LLVM.Extension: traverseConds :: Applicative m => (forall s. f s -> m (g s)) -> NonEmpty (LLVMSideCondition f) -> m (NonEmpty (LLVMSideCondition g))
+ Lang.Crucible.LLVM.Extension: traverseConds :: Applicative m => (forall (s :: CrucibleType). () => f s -> m (g s)) -> NonEmpty (LLVMSideCondition f) -> m (NonEmpty (LLVMSideCondition g))
- Lang.Crucible.LLVM.Functions: allocFunPtr :: (IsSymBackend sym bak, HasPtrWidth wptr, HasLLVMAnn sym, ?memOpts :: MemOptions) => bak -> MemImpl sym -> String -> IO (LLVMPtr sym wptr, MemImpl sym)
+ Lang.Crucible.LLVM.Functions: allocFunPtr :: forall sym bak (wptr :: Natural). (IsSymBackend sym bak, HasPtrWidth wptr, HasLLVMAnn sym, ?memOpts :: MemOptions) => bak -> MemImpl sym -> String -> IO (LLVMPtr sym wptr, MemImpl sym)
- Lang.Crucible.LLVM.Functions: allocLLVMFunPtr :: (IsSymBackend sym bak, HasPtrWidth wptr, HasLLVMAnn sym, ?memOpts :: MemOptions) => bak -> LLVMContext arch -> MemImpl sym -> Either Declare Define -> IO (LLVMPtr sym wptr, MemImpl sym)
+ Lang.Crucible.LLVM.Functions: allocLLVMFunPtr :: forall sym bak (wptr :: Natural) (arch :: LLVMArch). (IsSymBackend sym bak, HasPtrWidth wptr, HasLLVMAnn sym, ?memOpts :: MemOptions) => bak -> LLVMContext arch -> MemImpl sym -> Either Declare Define -> IO (LLVMPtr sym wptr, MemImpl sym)
- Lang.Crucible.LLVM.Functions: allocLLVMFunPtrs :: (IsSymBackend sym bak, HasPtrWidth wptr, HasLLVMAnn sym, ?memOpts :: MemOptions) => bak -> LLVMContext arch -> MemImpl sym -> Module -> IO (MemImpl sym)
+ Lang.Crucible.LLVM.Functions: allocLLVMFunPtrs :: forall sym bak (wptr :: Natural) (arch :: LLVMArch). (IsSymBackend sym bak, HasPtrWidth wptr, HasLLVMAnn sym, ?memOpts :: MemOptions) => bak -> LLVMContext arch -> MemImpl sym -> Module -> IO (MemImpl sym)
- Lang.Crucible.LLVM.Functions: bindLLVMCFG :: (IsSymInterface sym, HasPtrWidth wptr) => GlobalVar Mem -> Symbol -> CFG LLVM blocks init ret -> OverrideSim p sym LLVM rtp l a ()
+ Lang.Crucible.LLVM.Functions: bindLLVMCFG :: forall sym (wptr :: Natural) (blocks :: Ctx (Ctx CrucibleType)) (init :: Ctx CrucibleType) (ret :: CrucibleType) p rtp (l :: Ctx CrucibleType) (a :: CrucibleType). (IsSymInterface sym, HasPtrWidth wptr) => GlobalVar Mem -> Symbol -> CFG LLVM blocks init ret -> OverrideSim p sym LLVM rtp l a ()
- Lang.Crucible.LLVM.Functions: bindLLVMFunPtr :: (IsSymBackend sym bak, HasPtrWidth wptr) => bak -> Symbol -> FnHandle args ret -> MemImpl sym -> IO (MemImpl sym)
+ Lang.Crucible.LLVM.Functions: bindLLVMFunPtr :: forall sym bak (wptr :: Natural) (args :: Ctx CrucibleType) (ret :: CrucibleType). (IsSymBackend sym bak, HasPtrWidth wptr) => bak -> Symbol -> FnHandle args ret -> MemImpl sym -> IO (MemImpl sym)
- Lang.Crucible.LLVM.Functions: bindLLVMFunc :: (IsSymInterface sym, HasPtrWidth wptr) => GlobalVar Mem -> Symbol -> Assignment TypeRepr args -> TypeRepr ret -> FnState p sym ext args ret -> OverrideSim p sym ext rtp l a ()
+ Lang.Crucible.LLVM.Functions: bindLLVMFunc :: forall sym (wptr :: Natural) (args :: Ctx CrucibleType) (ret :: CrucibleType) p ext rtp (l :: Ctx CrucibleType) (a :: CrucibleType). (IsSymInterface sym, HasPtrWidth wptr) => GlobalVar Mem -> Symbol -> Assignment TypeRepr args -> TypeRepr ret -> FnState p sym ext args ret -> OverrideSim p sym ext rtp l a ()
- Lang.Crucible.LLVM.Functions: bindLLVMHandle :: (IsSymInterface sym, HasPtrWidth wptr) => GlobalVar Mem -> Symbol -> FnHandle args ret -> FnState p sym ext args ret -> OverrideSim p sym ext rtp l a ()
+ Lang.Crucible.LLVM.Functions: bindLLVMHandle :: forall sym (wptr :: Natural) (args :: Ctx CrucibleType) (ret :: CrucibleType) p ext rtp (l :: Ctx CrucibleType) (a :: CrucibleType). (IsSymInterface sym, HasPtrWidth wptr) => GlobalVar Mem -> Symbol -> FnHandle args ret -> FnState p sym ext args ret -> OverrideSim p sym ext rtp l a ()
- Lang.Crucible.LLVM.Functions: registerFunPtr :: (IsSymBackend sym bak, HasPtrWidth wptr, HasLLVMAnn sym, ?memOpts :: MemOptions) => bak -> MemImpl sym -> String -> Symbol -> [Symbol] -> IO (LLVMPtr sym wptr, MemImpl sym)
+ Lang.Crucible.LLVM.Functions: registerFunPtr :: forall sym bak (wptr :: Natural). (IsSymBackend sym bak, HasPtrWidth wptr, HasLLVMAnn sym, ?memOpts :: MemOptions) => bak -> MemImpl sym -> String -> Symbol -> [Symbol] -> IO (LLVMPtr sym wptr, MemImpl sym)
- Lang.Crucible.LLVM.Globals: initializeAllMemory :: (IsSymBackend sym bak, HasPtrWidth wptr, HasLLVMAnn sym, ?memOpts :: MemOptions) => bak -> LLVMContext arch -> Module -> IO (MemImpl sym)
+ Lang.Crucible.LLVM.Globals: initializeAllMemory :: forall sym bak (wptr :: Natural) (arch :: LLVMArch). (IsSymBackend sym bak, HasPtrWidth wptr, HasLLVMAnn sym, ?memOpts :: MemOptions) => bak -> LLVMContext arch -> Module -> IO (MemImpl sym)
- Lang.Crucible.LLVM.Globals: initializeMemory :: (IsSymBackend sym bak, HasPtrWidth wptr, HasLLVMAnn sym, ?memOpts :: MemOptions) => (Global -> Bool) -> bak -> LLVMContext arch -> Module -> IO (MemImpl sym)
+ Lang.Crucible.LLVM.Globals: initializeMemory :: forall sym bak (wptr :: Natural) (arch :: LLVMArch). (IsSymBackend sym bak, HasPtrWidth wptr, HasLLVMAnn sym, ?memOpts :: MemOptions) => (Global -> Bool) -> bak -> LLVMContext arch -> Module -> IO (MemImpl sym)
- Lang.Crucible.LLVM.Globals: initializeMemoryConstGlobals :: (IsSymBackend sym bak, HasPtrWidth wptr, HasLLVMAnn sym, ?memOpts :: MemOptions) => bak -> LLVMContext arch -> Module -> IO (MemImpl sym)
+ Lang.Crucible.LLVM.Globals: initializeMemoryConstGlobals :: forall sym bak (wptr :: Natural) (arch :: LLVMArch). (IsSymBackend sym bak, HasPtrWidth wptr, HasLLVMAnn sym, ?memOpts :: MemOptions) => bak -> LLVMContext arch -> Module -> IO (MemImpl sym)
- Lang.Crucible.LLVM.Globals: makeGlobalMap :: forall arch wptr. (?lc :: TypeContext, HasPtrWidth wptr) => LLVMContext arch -> Module -> GlobalInitializerMap
+ Lang.Crucible.LLVM.Globals: makeGlobalMap :: forall (arch :: LLVMArch) (wptr :: Natural). (?lc :: TypeContext, HasPtrWidth wptr) => LLVMContext arch -> Module -> GlobalInitializerMap
- Lang.Crucible.LLVM.Globals: populateAllGlobals :: (?lc :: TypeContext, ?memOpts :: MemOptions, 16 <= wptr, HasPtrWidth wptr, HasLLVMAnn sym, IsSymBackend sym bak) => bak -> GlobalInitializerMap -> MemImpl sym -> IO (MemImpl sym)
+ Lang.Crucible.LLVM.Globals: populateAllGlobals :: forall (wptr :: Natural) sym bak. (?lc :: TypeContext, ?memOpts :: MemOptions, 16 <= wptr, HasPtrWidth wptr, HasLLVMAnn sym, IsSymBackend sym bak) => bak -> GlobalInitializerMap -> MemImpl sym -> IO (MemImpl sym)
- Lang.Crucible.LLVM.Globals: populateConstGlobals :: (?lc :: TypeContext, ?memOpts :: MemOptions, 16 <= wptr, HasPtrWidth wptr, HasLLVMAnn sym, IsSymBackend sym bak) => bak -> GlobalInitializerMap -> MemImpl sym -> IO (MemImpl sym)
+ Lang.Crucible.LLVM.Globals: populateConstGlobals :: forall (wptr :: Natural) sym bak. (?lc :: TypeContext, ?memOpts :: MemOptions, 16 <= wptr, HasPtrWidth wptr, HasLLVMAnn sym, IsSymBackend sym bak) => bak -> GlobalInitializerMap -> MemImpl sym -> IO (MemImpl sym)
- Lang.Crucible.LLVM.Globals: populateGlobal :: forall sym bak wptr. (?lc :: TypeContext, 16 <= wptr, HasPtrWidth wptr, IsSymBackend sym bak, HasLLVMAnn sym, ?memOpts :: MemOptions, HasCallStack) => bak -> Global -> MemType -> LLVMConst -> GlobalInitializerMap -> MemImpl sym -> IO (MemImpl sym)
+ Lang.Crucible.LLVM.Globals: populateGlobal :: forall sym bak (wptr :: Natural). (?lc :: TypeContext, 16 <= wptr, HasPtrWidth wptr, IsSymBackend sym bak, HasLLVMAnn sym, ?memOpts :: MemOptions, HasCallStack) => bak -> Global -> MemType -> LLVMConst -> GlobalInitializerMap -> MemImpl sym -> IO (MemImpl sym)
- Lang.Crucible.LLVM.Globals: populateGlobals :: (?lc :: TypeContext, ?memOpts :: MemOptions, 16 <= wptr, HasPtrWidth wptr, HasLLVMAnn sym, IsSymBackend sym bak) => (Global -> Bool) -> bak -> GlobalInitializerMap -> MemImpl sym -> IO (MemImpl sym)
+ Lang.Crucible.LLVM.Globals: populateGlobals :: forall (wptr :: Natural) sym bak. (?lc :: TypeContext, ?memOpts :: MemOptions, 16 <= wptr, HasPtrWidth wptr, HasLLVMAnn sym, IsSymBackend sym bak) => (Global -> Bool) -> bak -> GlobalInitializerMap -> MemImpl sym -> IO (MemImpl sym)
- Lang.Crucible.LLVM.Intrinsics: LLVMOverride :: Declare -> CtxRepr args -> TypeRepr ret -> (IsSymInterface sym => GlobalVar Mem -> Assignment (RegEntry sym) args -> forall rtp args' ret'. OverrideSim p sym ext rtp args' ret' (RegValue sym ret)) -> LLVMOverride p sym ext args ret
+ Lang.Crucible.LLVM.Intrinsics: LLVMOverride :: Declare -> CtxRepr args -> TypeRepr ret -> (IsSymInterface sym => GlobalVar Mem -> Assignment (RegEntry sym) args -> forall rtp (args' :: Ctx CrucibleType) (ret' :: CrucibleType). () => OverrideSim p sym ext rtp args' ret' (RegValue sym ret)) -> LLVMOverride p sym ext (args :: Ctx CrucibleType) (ret :: CrucibleType)
- Lang.Crucible.LLVM.Intrinsics: MakeOverride :: (Declare -> Maybe DecodedName -> LLVMContext arch -> Maybe (SomeLLVMOverride p sym ext)) -> MakeOverride p sym ext arch
+ Lang.Crucible.LLVM.Intrinsics: MakeOverride :: (Declare -> Maybe DecodedName -> LLVMContext arch -> Maybe (SomeLLVMOverride p sym ext)) -> MakeOverride p sym ext (arch :: LLVMArch)
- Lang.Crucible.LLVM.Intrinsics: OverrideTemplate :: TemplateMatcher -> MakeOverride p sym ext arch -> OverrideTemplate p sym ext arch
+ Lang.Crucible.LLVM.Intrinsics: OverrideTemplate :: TemplateMatcher -> MakeOverride p sym ext arch -> OverrideTemplate p sym ext (arch :: LLVMArch)
- Lang.Crucible.LLVM.Intrinsics: [llvmOverride_args] :: LLVMOverride p sym ext args ret -> CtxRepr args
+ Lang.Crucible.LLVM.Intrinsics: [llvmOverride_args] :: LLVMOverride p sym ext (args :: Ctx CrucibleType) (ret :: CrucibleType) -> CtxRepr args
- Lang.Crucible.LLVM.Intrinsics: [llvmOverride_declare] :: LLVMOverride p sym ext args ret -> Declare
+ Lang.Crucible.LLVM.Intrinsics: [llvmOverride_declare] :: LLVMOverride p sym ext (args :: Ctx CrucibleType) (ret :: CrucibleType) -> Declare
- Lang.Crucible.LLVM.Intrinsics: [llvmOverride_def] :: LLVMOverride p sym ext args ret -> IsSymInterface sym => GlobalVar Mem -> Assignment (RegEntry sym) args -> forall rtp args' ret'. OverrideSim p sym ext rtp args' ret' (RegValue sym ret)
+ Lang.Crucible.LLVM.Intrinsics: [llvmOverride_def] :: LLVMOverride p sym ext (args :: Ctx CrucibleType) (ret :: CrucibleType) -> IsSymInterface sym => GlobalVar Mem -> Assignment (RegEntry sym) args -> forall rtp (args' :: Ctx CrucibleType) (ret' :: CrucibleType). () => OverrideSim p sym ext rtp args' ret' (RegValue sym ret)
- Lang.Crucible.LLVM.Intrinsics: [llvmOverride_ret] :: LLVMOverride p sym ext args ret -> TypeRepr ret
+ Lang.Crucible.LLVM.Intrinsics: [llvmOverride_ret] :: LLVMOverride p sym ext (args :: Ctx CrucibleType) (ret :: CrucibleType) -> TypeRepr ret
- Lang.Crucible.LLVM.Intrinsics: [overrideTemplateAction] :: OverrideTemplate p sym ext arch -> MakeOverride p sym ext arch
+ Lang.Crucible.LLVM.Intrinsics: [overrideTemplateAction] :: OverrideTemplate p sym ext (arch :: LLVMArch) -> MakeOverride p sym ext arch
- Lang.Crucible.LLVM.Intrinsics: [overrideTemplateMatcher] :: OverrideTemplate p sym ext arch -> TemplateMatcher
+ Lang.Crucible.LLVM.Intrinsics: [overrideTemplateMatcher] :: OverrideTemplate p sym ext (arch :: LLVMArch) -> TemplateMatcher
- Lang.Crucible.LLVM.Intrinsics: [runMakeOverride] :: MakeOverride p sym ext arch -> Declare -> Maybe DecodedName -> LLVMContext arch -> Maybe (SomeLLVMOverride p sym ext)
+ Lang.Crucible.LLVM.Intrinsics: [runMakeOverride] :: MakeOverride p sym ext (arch :: LLVMArch) -> Declare -> Maybe DecodedName -> LLVMContext arch -> Maybe (SomeLLVMOverride p sym ext)
- Lang.Crucible.LLVM.Intrinsics: alloc_and_register_override :: (IsSymBackend sym bak, HasPtrWidth wptr, HasLLVMAnn sym, ?memOpts :: MemOptions) => bak -> LLVMContext arch -> LLVMOverride p sym LLVM args ret -> [Symbol] -> OverrideSim p sym LLVM rtp l a ()
+ Lang.Crucible.LLVM.Intrinsics: alloc_and_register_override :: forall sym bak (wptr :: Natural) (arch :: LLVMArch) p (args :: Ctx CrucibleType) (ret :: CrucibleType) rtp (l :: Ctx CrucibleType) (a :: CrucibleType). (IsSymBackend sym bak, HasPtrWidth wptr, HasLLVMAnn sym, ?memOpts :: MemOptions) => bak -> LLVMContext arch -> LLVMOverride p sym LLVM args ret -> [Symbol] -> OverrideSim p sym LLVM rtp l a ()
- Lang.Crucible.LLVM.Intrinsics: basic_llvm_override :: forall p args ret sym ext arch wptr. (IsSymInterface sym, HasLLVMAnn sym, HasPtrWidth wptr) => LLVMOverride p sym ext args ret -> OverrideTemplate p sym ext arch
+ Lang.Crucible.LLVM.Intrinsics: basic_llvm_override :: forall p (args :: Ctx CrucibleType) (ret :: CrucibleType) sym ext (arch :: LLVMArch) (wptr :: Natural). (IsSymInterface sym, HasLLVMAnn sym, HasPtrWidth wptr) => LLVMOverride p sym ext args ret -> OverrideTemplate p sym ext arch
- Lang.Crucible.LLVM.Intrinsics: build_llvm_override :: HasLLVMAnn sym => FunctionName -> CtxRepr args -> TypeRepr ret -> CtxRepr args' -> TypeRepr ret' -> (forall rtp' l' a'. IsSymInterface sym => Assignment (RegEntry sym) args -> OverrideSim p sym ext rtp' l' a' (RegValue sym ret)) -> OverrideSim p sym ext rtp l a (Override p sym ext args' ret')
+ Lang.Crucible.LLVM.Intrinsics: build_llvm_override :: forall sym (args :: Ctx CrucibleType) (ret :: CrucibleType) (args' :: Ctx CrucibleType) (ret' :: CrucibleType) p ext rtp (l :: Ctx CrucibleType) (a :: CrucibleType). HasLLVMAnn sym => FunctionName -> CtxRepr args -> TypeRepr ret -> CtxRepr args' -> TypeRepr ret' -> (forall rtp' (l' :: Ctx CrucibleType) (a' :: CrucibleType). IsSymInterface sym => Assignment (RegEntry sym) args -> OverrideSim p sym ext rtp' l' a' (RegValue sym ret)) -> OverrideSim p sym ext rtp l a (Override p sym ext args' ret')
- Lang.Crucible.LLVM.Intrinsics: callStackFromMemVar' :: GlobalVar Mem -> OverrideSim p sym ext r args ret CallStack
+ Lang.Crucible.LLVM.Intrinsics: callStackFromMemVar' :: forall p sym ext r (args :: Ctx CrucibleType) (ret :: CrucibleType). GlobalVar Mem -> OverrideSim p sym ext r args ret CallStack
- Lang.Crucible.LLVM.Intrinsics: data LLVMOverride p sym ext args ret
+ Lang.Crucible.LLVM.Intrinsics: data LLVMOverride p sym ext (args :: Ctx CrucibleType) (ret :: CrucibleType)
- Lang.Crucible.LLVM.Intrinsics: data OverrideTemplate p sym ext arch
+ Lang.Crucible.LLVM.Intrinsics: data OverrideTemplate p sym ext (arch :: LLVMArch)
- Lang.Crucible.LLVM.Intrinsics: do_register_llvm_override :: forall p args ret sym ext arch wptr l a rtp. (IsSymInterface sym, HasPtrWidth wptr, HasLLVMAnn sym) => LLVMContext arch -> LLVMOverride p sym ext args ret -> OverrideSim p sym ext rtp l a ()
+ Lang.Crucible.LLVM.Intrinsics: do_register_llvm_override :: forall p (args :: Ctx CrucibleType) (ret :: CrucibleType) sym ext (arch :: LLVMArch) (wptr :: Natural) (l :: Ctx CrucibleType) (a :: CrucibleType) rtp. (IsSymInterface sym, HasPtrWidth wptr, HasLLVMAnn sym) => LLVMContext arch -> LLVMOverride p sym ext args ret -> OverrideSim p sym ext rtp l a ()
- Lang.Crucible.LLVM.Intrinsics: llvmDeclToFunHandleRepr :: HasPtrWidth wptr => FunDecl -> (forall args ret. CtxRepr args -> TypeRepr ret -> a) -> a
+ Lang.Crucible.LLVM.Intrinsics: llvmDeclToFunHandleRepr :: forall (wptr :: Natural) a. HasPtrWidth wptr => FunDecl -> (forall (args :: Ctx CrucibleType) (ret :: CrucibleType). () => CtxRepr args -> TypeRepr ret -> a) -> a
- Lang.Crucible.LLVM.Intrinsics: llvmSSizeT :: HasPtrWidth wptr => Type
+ Lang.Crucible.LLVM.Intrinsics: llvmSSizeT :: forall (wptr :: Natural). HasPtrWidth wptr => Type
- Lang.Crucible.LLVM.Intrinsics: llvmSizeT :: HasPtrWidth wptr => Type
+ Lang.Crucible.LLVM.Intrinsics: llvmSizeT :: forall (wptr :: Natural). HasPtrWidth wptr => Type
- Lang.Crucible.LLVM.Intrinsics: newtype MakeOverride p sym ext arch
+ Lang.Crucible.LLVM.Intrinsics: newtype MakeOverride p sym ext (arch :: LLVMArch)
- Lang.Crucible.LLVM.Intrinsics: polymorphic1_llvm_override :: forall p sym ext arch wptr. (IsSymInterface sym, HasLLVMAnn sym, HasPtrWidth wptr) => String -> (forall w. 1 <= w => NatRepr w -> SomeLLVMOverride p sym ext) -> OverrideTemplate p sym ext arch
+ Lang.Crucible.LLVM.Intrinsics: polymorphic1_llvm_override :: forall p sym ext (arch :: LLVMArch) (wptr :: Natural). (IsSymInterface sym, HasLLVMAnn sym, HasPtrWidth wptr) => String -> (forall (w :: Natural). 1 <= w => NatRepr w -> SomeLLVMOverride p sym ext) -> OverrideTemplate p sym ext arch
- Lang.Crucible.LLVM.Intrinsics: polymorphic1_vec_llvm_override :: forall p sym ext arch wptr. (IsSymInterface sym, HasLLVMAnn sym, HasPtrWidth wptr) => String -> (forall vecSz intSz. 1 <= intSz => NatRepr vecSz -> NatRepr intSz -> SomeLLVMOverride p sym ext) -> OverrideTemplate p sym ext arch
+ Lang.Crucible.LLVM.Intrinsics: polymorphic1_vec_llvm_override :: forall p sym ext (arch :: LLVMArch) (wptr :: Natural). (IsSymInterface sym, HasLLVMAnn sym, HasPtrWidth wptr) => String -> (forall (vecSz :: Nat) (intSz :: Natural). 1 <= intSz => NatRepr vecSz -> NatRepr intSz -> SomeLLVMOverride p sym ext) -> OverrideTemplate p sym ext arch
- Lang.Crucible.LLVM.Intrinsics: register_1arg_polymorphic_override :: forall p sym ext arch wptr. (IsSymInterface sym, HasLLVMAnn sym, HasPtrWidth wptr) => String -> (forall w. 1 <= w => NatRepr w -> SomeLLVMOverride p sym ext) -> MakeOverride p sym ext arch
+ Lang.Crucible.LLVM.Intrinsics: register_1arg_polymorphic_override :: forall p sym ext (arch :: LLVMArch) (wptr :: Natural). (IsSymInterface sym, HasLLVMAnn sym, HasPtrWidth wptr) => String -> (forall (w :: Natural). 1 <= w => NatRepr w -> SomeLLVMOverride p sym ext) -> MakeOverride p sym ext arch
- Lang.Crucible.LLVM.Intrinsics: register_1arg_vec_polymorphic_override :: forall p sym ext arch wptr. (IsSymInterface sym, HasLLVMAnn sym, HasPtrWidth wptr) => String -> (forall vecSz intSz. 1 <= intSz => NatRepr vecSz -> NatRepr intSz -> SomeLLVMOverride p sym ext) -> MakeOverride p sym ext arch
+ Lang.Crucible.LLVM.Intrinsics: register_1arg_vec_polymorphic_override :: forall p sym ext (arch :: LLVMArch) (wptr :: Natural). (IsSymInterface sym, HasLLVMAnn sym, HasPtrWidth wptr) => String -> (forall (vecSz :: Nat) (intSz :: Natural). 1 <= intSz => NatRepr vecSz -> NatRepr intSz -> SomeLLVMOverride p sym ext) -> MakeOverride p sym ext arch
- Lang.Crucible.LLVM.Intrinsics: register_llvm_override :: forall p args ret sym ext arch wptr rtp l a. (IsSymInterface sym, HasPtrWidth wptr, HasLLVMAnn sym) => LLVMOverride p sym ext args ret -> Declare -> LLVMContext arch -> OverrideSim p sym ext rtp l a ()
+ Lang.Crucible.LLVM.Intrinsics: register_llvm_override :: forall p (args :: Ctx CrucibleType) (ret :: CrucibleType) sym ext (arch :: LLVMArch) (wptr :: Natural) rtp (l :: Ctx CrucibleType) (a :: CrucibleType). (IsSymInterface sym, HasPtrWidth wptr, HasLLVMAnn sym) => LLVMOverride p sym ext args ret -> Declare -> LLVMContext arch -> OverrideSim p sym ext rtp l a ()
- Lang.Crucible.LLVM.Intrinsics: register_llvm_overrides :: (IsSymInterface sym, HasLLVMAnn sym, HasPtrWidth wptr, wptr ~ ArchWidth arch, ?intrinsicsOpts :: IntrinsicsOptions, ?memOpts :: MemOptions) => Module -> [OverrideTemplate p sym LLVM arch] -> [OverrideTemplate p sym LLVM arch] -> LLVMContext arch -> OverrideSim p sym LLVM rtp l a ([SomeLLVMOverride p sym LLVM], [SomeLLVMOverride p sym LLVM])
+ Lang.Crucible.LLVM.Intrinsics: register_llvm_overrides :: forall sym (wptr :: Natural) (arch :: LLVMArch) p rtp (l :: Ctx CrucibleType) (a :: CrucibleType). (IsSymInterface sym, HasLLVMAnn sym, HasPtrWidth wptr, wptr ~ ArchWidth arch, ?intrinsicsOpts :: IntrinsicsOptions, ?memOpts :: MemOptions) => Module -> [OverrideTemplate p sym LLVM arch] -> [OverrideTemplate p sym LLVM arch] -> LLVMContext arch -> OverrideSim p sym LLVM rtp l a ([SomeLLVMOverride p sym LLVM], [SomeLLVMOverride p sym LLVM])
- Lang.Crucible.LLVM.Intrinsics: register_llvm_overrides_ :: (IsSymInterface sym, HasLLVMAnn sym) => LLVMContext arch -> [OverrideTemplate p sym ext arch] -> [Declare] -> OverrideSim p sym ext rtp l a [SomeLLVMOverride p sym ext]
+ Lang.Crucible.LLVM.Intrinsics: register_llvm_overrides_ :: forall sym (arch :: LLVMArch) p ext rtp (l :: Ctx CrucibleType) (a :: CrucibleType). (IsSymInterface sym, HasLLVMAnn sym) => LLVMContext arch -> [OverrideTemplate p sym ext arch] -> [Declare] -> OverrideSim p sym ext rtp l a [SomeLLVMOverride p sym ext]
- Lang.Crucible.LLVM.Intrinsics.Cast: castLLVMArgs :: forall p sym ext bak args args'. IsSymBackend sym bak => FunctionName -> bak -> CtxRepr args' -> CtxRepr args -> Either ValCastError (ArgCast p sym ext args args')
+ Lang.Crucible.LLVM.Intrinsics.Cast: castLLVMArgs :: forall p sym ext bak (args :: Ctx CrucibleType) (args' :: Ctx CrucibleType). IsSymBackend sym bak => FunctionName -> bak -> CtxRepr args' -> CtxRepr args -> Either ValCastError (ArgCast p sym ext args args')
- Lang.Crucible.LLVM.Intrinsics.Cast: castLLVMRet :: IsSymBackend sym bak => FunctionName -> bak -> TypeRepr ret -> TypeRepr ret' -> Either ValCastError (ValCast p sym ext ret ret')
+ Lang.Crucible.LLVM.Intrinsics.Cast: castLLVMRet :: forall sym bak (ret :: CrucibleType) (ret' :: CrucibleType) p ext. IsSymBackend sym bak => FunctionName -> bak -> TypeRepr ret -> TypeRepr ret' -> Either ValCastError (ValCast p sym ext ret ret')
- Lang.Crucible.LLVM.Intrinsics.Cast: data ArgCast p sym ext args args'
+ Lang.Crucible.LLVM.Intrinsics.Cast: data ArgCast p sym ext (args :: Ctx CrucibleType) (args' :: Ctx CrucibleType)
- Lang.Crucible.LLVM.Intrinsics.Cast: data ValCast p sym ext tp tp'
+ Lang.Crucible.LLVM.Intrinsics.Cast: data ValCast p sym ext (tp :: CrucibleType) (tp' :: CrucibleType)
- Lang.Crucible.LLVM.Intrinsics.LLVM: Poly1LLVMOverride :: (forall w. 1 <= w => NatRepr w -> SomeLLVMOverride p sym ext) -> Poly1LLVMOverride p sym ext
+ Lang.Crucible.LLVM.Intrinsics.LLVM: Poly1LLVMOverride :: (forall (w :: Natural). 1 <= w => NatRepr w -> SomeLLVMOverride p sym ext) -> Poly1LLVMOverride p sym ext
- Lang.Crucible.LLVM.Intrinsics.LLVM: Poly1VecLLVMOverride :: (forall vecSz intSz. 1 <= intSz => NatRepr vecSz -> NatRepr intSz -> SomeLLVMOverride p sym ext) -> Poly1VecLLVMOverride p sym ext
+ Lang.Crucible.LLVM.Intrinsics.LLVM: Poly1VecLLVMOverride :: (forall (vecSz :: Nat) (intSz :: Natural). 1 <= intSz => NatRepr vecSz -> NatRepr intSz -> SomeLLVMOverride p sym ext) -> Poly1VecLLVMOverride p sym ext
- Lang.Crucible.LLVM.Intrinsics.LLVM: basic_llvm_overrides :: (IsSymInterface sym, HasLLVMAnn sym, HasPtrWidth wptr, ?lc :: TypeContext, ?memOpts :: MemOptions) => [SomeLLVMOverride p sym ext]
+ Lang.Crucible.LLVM.Intrinsics.LLVM: basic_llvm_overrides :: forall sym (wptr :: Natural) p ext. (IsSymInterface sym, HasLLVMAnn sym, HasPtrWidth wptr, ?lc :: TypeContext, ?memOpts :: MemOptions) => [SomeLLVMOverride p sym ext]
- Lang.Crucible.LLVM.Intrinsics.LLVM: bvSmax :: (IsExprBuilder sym, 1 <= w) => sym -> SymBV sym w -> SymBV sym w -> IO (SymBV sym w)
+ Lang.Crucible.LLVM.Intrinsics.LLVM: bvSmax :: forall sym (w :: Natural). (IsExprBuilder sym, 1 <= w) => sym -> SymBV sym w -> SymBV sym w -> IO (SymBV sym w)
- Lang.Crucible.LLVM.Intrinsics.LLVM: bvSmin :: (IsExprBuilder sym, 1 <= w) => sym -> SymBV sym w -> SymBV sym w -> IO (SymBV sym w)
+ Lang.Crucible.LLVM.Intrinsics.LLVM: bvSmin :: forall sym (w :: Natural). (IsExprBuilder sym, 1 <= w) => sym -> SymBV sym w -> SymBV sym w -> IO (SymBV sym w)
- Lang.Crucible.LLVM.Intrinsics.LLVM: bvUmax :: (IsExprBuilder sym, 1 <= w) => sym -> SymBV sym w -> SymBV sym w -> IO (SymBV sym w)
+ Lang.Crucible.LLVM.Intrinsics.LLVM: bvUmax :: forall sym (w :: Natural). (IsExprBuilder sym, 1 <= w) => sym -> SymBV sym w -> SymBV sym w -> IO (SymBV sym w)
- Lang.Crucible.LLVM.Intrinsics.LLVM: bvUmin :: (IsExprBuilder sym, 1 <= w) => sym -> SymBV sym w -> SymBV sym w -> IO (SymBV sym w)
+ Lang.Crucible.LLVM.Intrinsics.LLVM: bvUmin :: forall sym (w :: Natural). (IsExprBuilder sym, 1 <= w) => sym -> SymBV sym w -> SymBV sym w -> IO (SymBV sym w)
- Lang.Crucible.LLVM.Intrinsics.LLVM: callBitreverse :: (1 <= w, IsSymInterface sym) => GlobalVar Mem -> RegEntry sym (BVType w) -> OverrideSim p sym ext r args ret (RegValue sym (BVType w))
+ Lang.Crucible.LLVM.Intrinsics.LLVM: callBitreverse :: forall (w :: Natural) sym p ext r (args :: Ctx CrucibleType) (ret :: CrucibleType). (1 <= w, IsSymInterface sym) => GlobalVar Mem -> RegEntry sym (BVType w) -> OverrideSim p sym ext r args ret (RegValue sym (BVType w))
- Lang.Crucible.LLVM.Intrinsics.LLVM: callCopysign :: forall fi p sym ext r args ret. IsSymInterface sym => RegEntry sym (FloatType fi) -> RegEntry sym (FloatType fi) -> OverrideSim p sym ext r args ret (RegValue sym (FloatType fi))
+ Lang.Crucible.LLVM.Intrinsics.LLVM: callCopysign :: forall (fi :: FloatInfo) p sym ext r (args :: Ctx CrucibleType) (ret :: CrucibleType). IsSymInterface sym => RegEntry sym (FloatType fi) -> RegEntry sym (FloatType fi) -> OverrideSim p sym ext r args ret (RegValue sym (FloatType fi))
- Lang.Crucible.LLVM.Intrinsics.LLVM: callCtlz :: (1 <= w, IsSymInterface sym) => GlobalVar Mem -> RegEntry sym (BVType w) -> RegEntry sym (BVType 1) -> OverrideSim p sym ext r args ret (RegValue sym (BVType w))
+ Lang.Crucible.LLVM.Intrinsics.LLVM: callCtlz :: forall (w :: Natural) sym p ext r (args :: Ctx CrucibleType) (ret :: CrucibleType). (1 <= w, IsSymInterface sym) => GlobalVar Mem -> RegEntry sym (BVType w) -> RegEntry sym (BVType 1) -> OverrideSim p sym ext r args ret (RegValue sym (BVType w))
- Lang.Crucible.LLVM.Intrinsics.LLVM: callCtpop :: (1 <= w, IsSymInterface sym) => GlobalVar Mem -> RegEntry sym (BVType w) -> OverrideSim p sym ext r args ret (RegValue sym (BVType w))
+ Lang.Crucible.LLVM.Intrinsics.LLVM: callCtpop :: forall (w :: Natural) sym p ext r (args :: Ctx CrucibleType) (ret :: CrucibleType). (1 <= w, IsSymInterface sym) => GlobalVar Mem -> RegEntry sym (BVType w) -> OverrideSim p sym ext r args ret (RegValue sym (BVType w))
- Lang.Crucible.LLVM.Intrinsics.LLVM: callCttz :: (1 <= w, IsSymInterface sym) => GlobalVar Mem -> RegEntry sym (BVType w) -> RegEntry sym (BVType 1) -> OverrideSim p sym ext r args ret (RegValue sym (BVType w))
+ Lang.Crucible.LLVM.Intrinsics.LLVM: callCttz :: forall (w :: Natural) sym p ext r (args :: Ctx CrucibleType) (ret :: CrucibleType). (1 <= w, IsSymInterface sym) => GlobalVar Mem -> RegEntry sym (BVType w) -> RegEntry sym (BVType 1) -> OverrideSim p sym ext r args ret (RegValue sym (BVType w))
- Lang.Crucible.LLVM.Intrinsics.LLVM: callFshl :: (1 <= w, IsSymInterface sym) => NatRepr w -> RegEntry sym (BVType w) -> RegEntry sym (BVType w) -> RegEntry sym (BVType w) -> OverrideSim p sym ext r args ret (RegValue sym (BVType w))
+ Lang.Crucible.LLVM.Intrinsics.LLVM: callFshl :: forall (w :: Natural) sym p ext r (args :: Ctx CrucibleType) (ret :: CrucibleType). (1 <= w, IsSymInterface sym) => NatRepr w -> RegEntry sym (BVType w) -> RegEntry sym (BVType w) -> RegEntry sym (BVType w) -> OverrideSim p sym ext r args ret (RegValue sym (BVType w))
- Lang.Crucible.LLVM.Intrinsics.LLVM: callFshr :: (1 <= w, IsSymInterface sym) => NatRepr w -> RegEntry sym (BVType w) -> RegEntry sym (BVType w) -> RegEntry sym (BVType w) -> OverrideSim p sym ext r args ret (RegValue sym (BVType w))
+ Lang.Crucible.LLVM.Intrinsics.LLVM: callFshr :: forall (w :: Natural) sym p ext r (args :: Ctx CrucibleType) (ret :: CrucibleType). (1 <= w, IsSymInterface sym) => NatRepr w -> RegEntry sym (BVType w) -> RegEntry sym (BVType w) -> RegEntry sym (BVType w) -> OverrideSim p sym ext r args ret (RegValue sym (BVType w))
- Lang.Crucible.LLVM.Intrinsics.LLVM: callIsFpclass :: forall fi p sym ext r args ret. IsSymInterface sym => RegEntry sym (FloatType fi) -> RegEntry sym (BVType 32) -> OverrideSim p sym ext r args ret (RegValue sym (BVType 1))
+ Lang.Crucible.LLVM.Intrinsics.LLVM: callIsFpclass :: forall (fi :: FloatInfo) p sym ext r (args :: Ctx CrucibleType) (ret :: CrucibleType). IsSymInterface sym => RegEntry sym (FloatType fi) -> RegEntry sym (BVType 32) -> OverrideSim p sym ext r args ret (RegValue sym (BVType 1))
- Lang.Crucible.LLVM.Intrinsics.LLVM: callLoadRelative :: (1 <= w, IsSymInterface sym, HasPtrWidth wptr, HasLLVMAnn sym, ?memOpts :: MemOptions) => GlobalVar Mem -> NatRepr w -> RegEntry sym (LLVMPointerType wptr) -> RegEntry sym (BVType w) -> OverrideSim p sym ext r args ret (LLVMPtr sym wptr)
+ Lang.Crucible.LLVM.Intrinsics.LLVM: callLoadRelative :: forall (w :: Natural) sym (wptr :: Natural) p ext r (args :: Ctx CrucibleType) (ret :: CrucibleType). (1 <= w, IsSymInterface sym, HasPtrWidth wptr, HasLLVMAnn sym, ?memOpts :: MemOptions) => GlobalVar Mem -> NatRepr w -> RegEntry sym (LLVMPointerType wptr) -> RegEntry sym (BVType w) -> OverrideSim p sym ext r args ret (LLVMPtr sym wptr)
- Lang.Crucible.LLVM.Intrinsics.LLVM: callObjectsize :: (1 <= w, IsSymInterface sym) => GlobalVar Mem -> NatRepr w -> RegEntry sym (LLVMPointerType wptr) -> RegEntry sym (BVType 1) -> OverrideSim p sym ext r args ret (RegValue sym (BVType w))
+ Lang.Crucible.LLVM.Intrinsics.LLVM: callObjectsize :: forall (w :: Natural) sym (wptr :: Nat) p ext r (args :: Ctx CrucibleType) (ret :: CrucibleType). (1 <= w, IsSymInterface sym) => GlobalVar Mem -> NatRepr w -> RegEntry sym (LLVMPointerType wptr) -> RegEntry sym (BVType 1) -> OverrideSim p sym ext r args ret (RegValue sym (BVType w))
- Lang.Crucible.LLVM.Intrinsics.LLVM: callObjectsize_null :: (1 <= w, IsSymInterface sym) => GlobalVar Mem -> NatRepr w -> RegEntry sym (LLVMPointerType wptr) -> RegEntry sym (BVType 1) -> RegEntry sym (BVType 1) -> OverrideSim p sym ext r args ret (RegValue sym (BVType w))
+ Lang.Crucible.LLVM.Intrinsics.LLVM: callObjectsize_null :: forall (w :: Natural) sym (wptr :: Nat) p ext r (args :: Ctx CrucibleType) (ret :: CrucibleType). (1 <= w, IsSymInterface sym) => GlobalVar Mem -> NatRepr w -> RegEntry sym (LLVMPointerType wptr) -> RegEntry sym (BVType 1) -> RegEntry sym (BVType 1) -> OverrideSim p sym ext r args ret (RegValue sym (BVType w))
- Lang.Crucible.LLVM.Intrinsics.LLVM: callObjectsize_null_dynamic :: (1 <= w, IsSymInterface sym) => GlobalVar Mem -> NatRepr w -> RegEntry sym (LLVMPointerType wptr) -> RegEntry sym (BVType 1) -> RegEntry sym (BVType 1) -> RegEntry sym (BVType 1) -> OverrideSim p sym ext r args ret (RegValue sym (BVType w))
+ Lang.Crucible.LLVM.Intrinsics.LLVM: callObjectsize_null_dynamic :: forall (w :: Natural) sym (wptr :: Nat) p ext r (args :: Ctx CrucibleType) (ret :: CrucibleType). (1 <= w, IsSymInterface sym) => GlobalVar Mem -> NatRepr w -> RegEntry sym (LLVMPointerType wptr) -> RegEntry sym (BVType 1) -> RegEntry sym (BVType 1) -> RegEntry sym (BVType 1) -> OverrideSim p sym ext r args ret (RegValue sym (BVType w))
- Lang.Crucible.LLVM.Intrinsics.LLVM: callSaddWithOverflow :: (1 <= w, IsSymInterface sym) => GlobalVar Mem -> RegEntry sym (BVType w) -> RegEntry sym (BVType w) -> OverrideSim p sym ext r args ret (RegValue sym (StructType ((EmptyCtx ::> BVType w) ::> BVType 1)))
+ Lang.Crucible.LLVM.Intrinsics.LLVM: callSaddWithOverflow :: forall (w :: Natural) sym p ext r (args :: Ctx CrucibleType) (ret :: CrucibleType). (1 <= w, IsSymInterface sym) => GlobalVar Mem -> RegEntry sym (BVType w) -> RegEntry sym (BVType w) -> OverrideSim p sym ext r args ret (RegValue sym (StructType (((EmptyCtx :: Ctx CrucibleType) ::> BVType w) ::> BVType 1)))
- Lang.Crucible.LLVM.Intrinsics.LLVM: callSmax :: (1 <= w, IsSymInterface sym) => GlobalVar Mem -> RegEntry sym (BVType w) -> RegEntry sym (BVType w) -> OverrideSim p sym ext r args ret (RegValue sym (BVType w))
+ Lang.Crucible.LLVM.Intrinsics.LLVM: callSmax :: forall (w :: Natural) sym p ext r (args :: Ctx CrucibleType) (ret :: CrucibleType). (1 <= w, IsSymInterface sym) => GlobalVar Mem -> RegEntry sym (BVType w) -> RegEntry sym (BVType w) -> OverrideSim p sym ext r args ret (RegValue sym (BVType w))
- Lang.Crucible.LLVM.Intrinsics.LLVM: callSmin :: (1 <= w, IsSymInterface sym) => GlobalVar Mem -> RegEntry sym (BVType w) -> RegEntry sym (BVType w) -> OverrideSim p sym ext r args ret (RegValue sym (BVType w))
+ Lang.Crucible.LLVM.Intrinsics.LLVM: callSmin :: forall (w :: Natural) sym p ext r (args :: Ctx CrucibleType) (ret :: CrucibleType). (1 <= w, IsSymInterface sym) => GlobalVar Mem -> RegEntry sym (BVType w) -> RegEntry sym (BVType w) -> OverrideSim p sym ext r args ret (RegValue sym (BVType w))
- Lang.Crucible.LLVM.Intrinsics.LLVM: callSmulWithOverflow :: (1 <= w, IsSymInterface sym) => GlobalVar Mem -> RegEntry sym (BVType w) -> RegEntry sym (BVType w) -> OverrideSim p sym ext r args ret (RegValue sym (StructType ((EmptyCtx ::> BVType w) ::> BVType 1)))
+ Lang.Crucible.LLVM.Intrinsics.LLVM: callSmulWithOverflow :: forall (w :: Natural) sym p ext r (args :: Ctx CrucibleType) (ret :: CrucibleType). (1 <= w, IsSymInterface sym) => GlobalVar Mem -> RegEntry sym (BVType w) -> RegEntry sym (BVType w) -> OverrideSim p sym ext r args ret (RegValue sym (StructType (((EmptyCtx :: Ctx CrucibleType) ::> BVType w) ::> BVType 1)))
- Lang.Crucible.LLVM.Intrinsics.LLVM: callSsubWithOverflow :: (1 <= w, IsSymInterface sym) => GlobalVar Mem -> RegEntry sym (BVType w) -> RegEntry sym (BVType w) -> OverrideSim p sym ext r args ret (RegValue sym (StructType ((EmptyCtx ::> BVType w) ::> BVType 1)))
+ Lang.Crucible.LLVM.Intrinsics.LLVM: callSsubWithOverflow :: forall (w :: Natural) sym p ext r (args :: Ctx CrucibleType) (ret :: CrucibleType). (1 <= w, IsSymInterface sym) => GlobalVar Mem -> RegEntry sym (BVType w) -> RegEntry sym (BVType w) -> OverrideSim p sym ext r args ret (RegValue sym (StructType (((EmptyCtx :: Ctx CrucibleType) ::> BVType w) ::> BVType 1)))
- Lang.Crucible.LLVM.Intrinsics.LLVM: callStoreudq :: (IsSymInterface sym, HasLLVMAnn sym, HasPtrWidth wptr, ?memOpts :: MemOptions) => GlobalVar Mem -> RegEntry sym (LLVMPointerType wptr) -> RegEntry sym (VectorType (BVType 8)) -> OverrideSim p sym ext r args ret ()
+ Lang.Crucible.LLVM.Intrinsics.LLVM: callStoreudq :: forall sym (wptr :: Natural) p ext r (args :: Ctx CrucibleType) (ret :: CrucibleType). (IsSymInterface sym, HasLLVMAnn sym, HasPtrWidth wptr, ?memOpts :: MemOptions) => GlobalVar Mem -> RegEntry sym (LLVMPointerType wptr) -> RegEntry sym (VectorType (BVType 8)) -> OverrideSim p sym ext r args ret ()
- Lang.Crucible.LLVM.Intrinsics.LLVM: callUaddWithOverflow :: (1 <= w, IsSymInterface sym) => GlobalVar Mem -> RegEntry sym (BVType w) -> RegEntry sym (BVType w) -> OverrideSim p sym ext r args ret (RegValue sym (StructType ((EmptyCtx ::> BVType w) ::> BVType 1)))
+ Lang.Crucible.LLVM.Intrinsics.LLVM: callUaddWithOverflow :: forall (w :: Natural) sym p ext r (args :: Ctx CrucibleType) (ret :: CrucibleType). (1 <= w, IsSymInterface sym) => GlobalVar Mem -> RegEntry sym (BVType w) -> RegEntry sym (BVType w) -> OverrideSim p sym ext r args ret (RegValue sym (StructType (((EmptyCtx :: Ctx CrucibleType) ::> BVType w) ::> BVType 1)))
- Lang.Crucible.LLVM.Intrinsics.LLVM: callUmax :: (1 <= w, IsSymInterface sym) => GlobalVar Mem -> RegEntry sym (BVType w) -> RegEntry sym (BVType w) -> OverrideSim p sym ext r args ret (RegValue sym (BVType w))
+ Lang.Crucible.LLVM.Intrinsics.LLVM: callUmax :: forall (w :: Natural) sym p ext r (args :: Ctx CrucibleType) (ret :: CrucibleType). (1 <= w, IsSymInterface sym) => GlobalVar Mem -> RegEntry sym (BVType w) -> RegEntry sym (BVType w) -> OverrideSim p sym ext r args ret (RegValue sym (BVType w))
- Lang.Crucible.LLVM.Intrinsics.LLVM: callUmin :: (1 <= w, IsSymInterface sym) => GlobalVar Mem -> RegEntry sym (BVType w) -> RegEntry sym (BVType w) -> OverrideSim p sym ext r args ret (RegValue sym (BVType w))
+ Lang.Crucible.LLVM.Intrinsics.LLVM: callUmin :: forall (w :: Natural) sym p ext r (args :: Ctx CrucibleType) (ret :: CrucibleType). (1 <= w, IsSymInterface sym) => GlobalVar Mem -> RegEntry sym (BVType w) -> RegEntry sym (BVType w) -> OverrideSim p sym ext r args ret (RegValue sym (BVType w))
- Lang.Crucible.LLVM.Intrinsics.LLVM: callUmulWithOverflow :: (1 <= w, IsSymInterface sym) => GlobalVar Mem -> RegEntry sym (BVType w) -> RegEntry sym (BVType w) -> OverrideSim p sym ext r args ret (RegValue sym (StructType ((EmptyCtx ::> BVType w) ::> BVType 1)))
+ Lang.Crucible.LLVM.Intrinsics.LLVM: callUmulWithOverflow :: forall (w :: Natural) sym p ext r (args :: Ctx CrucibleType) (ret :: CrucibleType). (1 <= w, IsSymInterface sym) => GlobalVar Mem -> RegEntry sym (BVType w) -> RegEntry sym (BVType w) -> OverrideSim p sym ext r args ret (RegValue sym (StructType (((EmptyCtx :: Ctx CrucibleType) ::> BVType w) ::> BVType 1)))
- Lang.Crucible.LLVM.Intrinsics.LLVM: callUsubWithOverflow :: (1 <= w, IsSymInterface sym) => GlobalVar Mem -> RegEntry sym (BVType w) -> RegEntry sym (BVType w) -> OverrideSim p sym ext r args ret (RegValue sym (StructType ((EmptyCtx ::> BVType w) ::> BVType 1)))
+ Lang.Crucible.LLVM.Intrinsics.LLVM: callUsubWithOverflow :: forall (w :: Natural) sym p ext r (args :: Ctx CrucibleType) (ret :: CrucibleType). (1 <= w, IsSymInterface sym) => GlobalVar Mem -> RegEntry sym (BVType w) -> RegEntry sym (BVType w) -> OverrideSim p sym ext r args ret (RegValue sym (StructType (((EmptyCtx :: Ctx CrucibleType) ::> BVType w) ::> BVType 1)))
- Lang.Crucible.LLVM.Intrinsics.LLVM: callVectorReduce :: (RegValue sym tp -> RegValue sym tp -> IO (RegValue sym tp)) -> RegValue sym tp -> RegEntry sym (VectorType tp) -> OverrideSim p sym ext r args ret (RegValue sym tp)
+ Lang.Crucible.LLVM.Intrinsics.LLVM: callVectorReduce :: forall sym (tp :: CrucibleType) p ext r (args :: Ctx CrucibleType) (ret :: CrucibleType). (RegValue sym tp -> RegValue sym tp -> IO (RegValue sym tp)) -> RegValue sym tp -> RegEntry sym (VectorType tp) -> OverrideSim p sym ext r args ret (RegValue sym tp)
- Lang.Crucible.LLVM.Intrinsics.LLVM: callVectorReduceAdd :: (IsSymInterface sym, 1 <= intSz) => NatRepr intSz -> RegEntry sym (VectorType (BVType intSz)) -> OverrideSim p sym ext r args ret (SymBV sym intSz)
+ Lang.Crucible.LLVM.Intrinsics.LLVM: callVectorReduceAdd :: forall sym (intSz :: Natural) p ext r (args :: Ctx CrucibleType) (ret :: CrucibleType). (IsSymInterface sym, 1 <= intSz) => NatRepr intSz -> RegEntry sym (VectorType (BVType intSz)) -> OverrideSim p sym ext r args ret (SymBV sym intSz)
- Lang.Crucible.LLVM.Intrinsics.LLVM: callVectorReduceAnd :: (IsSymInterface sym, 1 <= intSz) => NatRepr intSz -> RegEntry sym (VectorType (BVType intSz)) -> OverrideSim p sym ext r args ret (SymBV sym intSz)
+ Lang.Crucible.LLVM.Intrinsics.LLVM: callVectorReduceAnd :: forall sym (intSz :: Natural) p ext r (args :: Ctx CrucibleType) (ret :: CrucibleType). (IsSymInterface sym, 1 <= intSz) => NatRepr intSz -> RegEntry sym (VectorType (BVType intSz)) -> OverrideSim p sym ext r args ret (SymBV sym intSz)
- Lang.Crucible.LLVM.Intrinsics.LLVM: callVectorReduceMul :: (IsSymInterface sym, 1 <= intSz) => NatRepr intSz -> RegEntry sym (VectorType (BVType intSz)) -> OverrideSim p sym ext r args ret (SymBV sym intSz)
+ Lang.Crucible.LLVM.Intrinsics.LLVM: callVectorReduceMul :: forall sym (intSz :: Natural) p ext r (args :: Ctx CrucibleType) (ret :: CrucibleType). (IsSymInterface sym, 1 <= intSz) => NatRepr intSz -> RegEntry sym (VectorType (BVType intSz)) -> OverrideSim p sym ext r args ret (SymBV sym intSz)
- Lang.Crucible.LLVM.Intrinsics.LLVM: callVectorReduceOr :: (IsSymInterface sym, 1 <= intSz) => NatRepr intSz -> RegEntry sym (VectorType (BVType intSz)) -> OverrideSim p sym ext r args ret (SymBV sym intSz)
+ Lang.Crucible.LLVM.Intrinsics.LLVM: callVectorReduceOr :: forall sym (intSz :: Natural) p ext r (args :: Ctx CrucibleType) (ret :: CrucibleType). (IsSymInterface sym, 1 <= intSz) => NatRepr intSz -> RegEntry sym (VectorType (BVType intSz)) -> OverrideSim p sym ext r args ret (SymBV sym intSz)
- Lang.Crucible.LLVM.Intrinsics.LLVM: callVectorReduceSmax :: (IsSymInterface sym, 1 <= intSz) => NatRepr intSz -> RegEntry sym (VectorType (BVType intSz)) -> OverrideSim p sym ext r args ret (SymBV sym intSz)
+ Lang.Crucible.LLVM.Intrinsics.LLVM: callVectorReduceSmax :: forall sym (intSz :: Natural) p ext r (args :: Ctx CrucibleType) (ret :: CrucibleType). (IsSymInterface sym, 1 <= intSz) => NatRepr intSz -> RegEntry sym (VectorType (BVType intSz)) -> OverrideSim p sym ext r args ret (SymBV sym intSz)
- Lang.Crucible.LLVM.Intrinsics.LLVM: callVectorReduceSmin :: (IsSymInterface sym, 1 <= intSz) => NatRepr intSz -> RegEntry sym (VectorType (BVType intSz)) -> OverrideSim p sym ext r args ret (SymBV sym intSz)
+ Lang.Crucible.LLVM.Intrinsics.LLVM: callVectorReduceSmin :: forall sym (intSz :: Natural) p ext r (args :: Ctx CrucibleType) (ret :: CrucibleType). (IsSymInterface sym, 1 <= intSz) => NatRepr intSz -> RegEntry sym (VectorType (BVType intSz)) -> OverrideSim p sym ext r args ret (SymBV sym intSz)
- Lang.Crucible.LLVM.Intrinsics.LLVM: callVectorReduceUmax :: (IsSymInterface sym, 1 <= intSz) => NatRepr intSz -> RegEntry sym (VectorType (BVType intSz)) -> OverrideSim p sym ext r args ret (SymBV sym intSz)
+ Lang.Crucible.LLVM.Intrinsics.LLVM: callVectorReduceUmax :: forall sym (intSz :: Natural) p ext r (args :: Ctx CrucibleType) (ret :: CrucibleType). (IsSymInterface sym, 1 <= intSz) => NatRepr intSz -> RegEntry sym (VectorType (BVType intSz)) -> OverrideSim p sym ext r args ret (SymBV sym intSz)
- Lang.Crucible.LLVM.Intrinsics.LLVM: callVectorReduceUmin :: (IsSymInterface sym, 1 <= intSz) => NatRepr intSz -> RegEntry sym (VectorType (BVType intSz)) -> OverrideSim p sym ext r args ret (SymBV sym intSz)
+ Lang.Crucible.LLVM.Intrinsics.LLVM: callVectorReduceUmin :: forall sym (intSz :: Natural) p ext r (args :: Ctx CrucibleType) (ret :: CrucibleType). (IsSymInterface sym, 1 <= intSz) => NatRepr intSz -> RegEntry sym (VectorType (BVType intSz)) -> OverrideSim p sym ext r args ret (SymBV sym intSz)
- Lang.Crucible.LLVM.Intrinsics.LLVM: callVectorReduceXor :: (IsSymInterface sym, 1 <= intSz) => NatRepr intSz -> RegEntry sym (VectorType (BVType intSz)) -> OverrideSim p sym ext r args ret (SymBV sym intSz)
+ Lang.Crucible.LLVM.Intrinsics.LLVM: callVectorReduceXor :: forall sym (intSz :: Natural) p ext r (args :: Ctx CrucibleType) (ret :: CrucibleType). (IsSymInterface sym, 1 <= intSz) => NatRepr intSz -> RegEntry sym (VectorType (BVType intSz)) -> OverrideSim p sym ext r args ret (SymBV sym intSz)
- Lang.Crucible.LLVM.Intrinsics.LLVM: callX86_pclmulqdq :: forall p sym ext wptr r args ret. (IsSymInterface sym, HasPtrWidth wptr) => GlobalVar Mem -> RegEntry sym (VectorType (BVType 64)) -> RegEntry sym (VectorType (BVType 64)) -> RegEntry sym (BVType 8) -> OverrideSim p sym ext r args ret (RegValue sym (VectorType (BVType 64)))
+ Lang.Crucible.LLVM.Intrinsics.LLVM: callX86_pclmulqdq :: forall p sym ext (wptr :: Natural) r (args :: Ctx CrucibleType) (ret :: CrucibleType). (IsSymInterface sym, HasPtrWidth wptr) => GlobalVar Mem -> RegEntry sym (VectorType (BVType 64)) -> RegEntry sym (VectorType (BVType 64)) -> RegEntry sym (BVType 8) -> OverrideSim p sym ext r args ret (RegValue sym (VectorType (BVType 64)))
- Lang.Crucible.LLVM.Intrinsics.LLVM: llvmAbsOverride :: (1 <= w, IsSymInterface sym, HasLLVMAnn sym) => NatRepr w -> LLVMOverride p sym ext ((EmptyCtx ::> BVType w) ::> BVType 1) (BVType w)
+ Lang.Crucible.LLVM.Intrinsics.LLVM: llvmAbsOverride :: forall (w :: Natural) sym p ext. (1 <= w, IsSymInterface sym, HasLLVMAnn sym) => NatRepr w -> LLVMOverride p sym ext (((EmptyCtx :: Ctx CrucibleType) ::> BVType w) ::> BVType 1) (BVType w)
- Lang.Crucible.LLVM.Intrinsics.LLVM: llvmAssumeOverride :: IsSymInterface sym => LLVMOverride p sym ext (EmptyCtx ::> BVType 1) UnitType
+ Lang.Crucible.LLVM.Intrinsics.LLVM: llvmAssumeOverride :: IsSymInterface sym => LLVMOverride p sym ext ((EmptyCtx :: Ctx CrucibleType) ::> BVType 1) UnitType
- Lang.Crucible.LLVM.Intrinsics.LLVM: llvmBSwapOverride :: forall width sym p ext. (1 <= width, IsSymInterface sym) => NatRepr width -> LLVMOverride p sym ext (EmptyCtx ::> BVType (width * 8)) (BVType (width * 8))
+ Lang.Crucible.LLVM.Intrinsics.LLVM: llvmBSwapOverride :: forall (width :: Natural) sym p ext. (1 <= width, IsSymInterface sym) => NatRepr width -> LLVMOverride p sym ext ((EmptyCtx :: Ctx CrucibleType) ::> BVType (width * 8)) (BVType (width * 8))
- Lang.Crucible.LLVM.Intrinsics.LLVM: llvmBitreverse :: (1 <= w, IsSymInterface sym) => NatRepr w -> LLVMOverride p sym ext (EmptyCtx ::> BVType w) (BVType w)
+ Lang.Crucible.LLVM.Intrinsics.LLVM: llvmBitreverse :: forall (w :: Natural) sym p ext. (1 <= w, IsSymInterface sym) => NatRepr w -> LLVMOverride p sym ext ((EmptyCtx :: Ctx CrucibleType) ::> BVType w) (BVType w)
- Lang.Crucible.LLVM.Intrinsics.LLVM: llvmCeilOverride_F32 :: IsSymInterface sym => LLVMOverride p sym ext (EmptyCtx ::> FloatType SingleFloat) (FloatType SingleFloat)
+ Lang.Crucible.LLVM.Intrinsics.LLVM: llvmCeilOverride_F32 :: IsSymInterface sym => LLVMOverride p sym ext ((EmptyCtx :: Ctx CrucibleType) ::> FloatType SingleFloat) (FloatType SingleFloat)
- Lang.Crucible.LLVM.Intrinsics.LLVM: llvmCeilOverride_F64 :: IsSymInterface sym => LLVMOverride p sym ext (EmptyCtx ::> FloatType DoubleFloat) (FloatType DoubleFloat)
+ Lang.Crucible.LLVM.Intrinsics.LLVM: llvmCeilOverride_F64 :: IsSymInterface sym => LLVMOverride p sym ext ((EmptyCtx :: Ctx CrucibleType) ::> FloatType DoubleFloat) (FloatType DoubleFloat)
- Lang.Crucible.LLVM.Intrinsics.LLVM: llvmCopysignOverride_F32 :: IsSymInterface sym => LLVMOverride p sym ext ((EmptyCtx ::> FloatType SingleFloat) ::> FloatType SingleFloat) (FloatType SingleFloat)
+ Lang.Crucible.LLVM.Intrinsics.LLVM: llvmCopysignOverride_F32 :: IsSymInterface sym => LLVMOverride p sym ext (((EmptyCtx :: Ctx CrucibleType) ::> FloatType SingleFloat) ::> FloatType SingleFloat) (FloatType SingleFloat)
- Lang.Crucible.LLVM.Intrinsics.LLVM: llvmCopysignOverride_F64 :: IsSymInterface sym => LLVMOverride p sym ext ((EmptyCtx ::> FloatType DoubleFloat) ::> FloatType DoubleFloat) (FloatType DoubleFloat)
+ Lang.Crucible.LLVM.Intrinsics.LLVM: llvmCopysignOverride_F64 :: IsSymInterface sym => LLVMOverride p sym ext (((EmptyCtx :: Ctx CrucibleType) ::> FloatType DoubleFloat) ::> FloatType DoubleFloat) (FloatType DoubleFloat)
- Lang.Crucible.LLVM.Intrinsics.LLVM: llvmCosOverride_F32 :: IsSymInterface sym => LLVMOverride p sym ext (EmptyCtx ::> FloatType SingleFloat) (FloatType SingleFloat)
+ Lang.Crucible.LLVM.Intrinsics.LLVM: llvmCosOverride_F32 :: IsSymInterface sym => LLVMOverride p sym ext ((EmptyCtx :: Ctx CrucibleType) ::> FloatType SingleFloat) (FloatType SingleFloat)
- Lang.Crucible.LLVM.Intrinsics.LLVM: llvmCosOverride_F64 :: IsSymInterface sym => LLVMOverride p sym ext (EmptyCtx ::> FloatType DoubleFloat) (FloatType DoubleFloat)
+ Lang.Crucible.LLVM.Intrinsics.LLVM: llvmCosOverride_F64 :: IsSymInterface sym => LLVMOverride p sym ext ((EmptyCtx :: Ctx CrucibleType) ::> FloatType DoubleFloat) (FloatType DoubleFloat)
- Lang.Crucible.LLVM.Intrinsics.LLVM: llvmCtlz :: (1 <= w, IsSymInterface sym) => NatRepr w -> LLVMOverride p sym ext ((EmptyCtx ::> BVType w) ::> BVType 1) (BVType w)
+ Lang.Crucible.LLVM.Intrinsics.LLVM: llvmCtlz :: forall (w :: Natural) sym p ext. (1 <= w, IsSymInterface sym) => NatRepr w -> LLVMOverride p sym ext (((EmptyCtx :: Ctx CrucibleType) ::> BVType w) ::> BVType 1) (BVType w)
- Lang.Crucible.LLVM.Intrinsics.LLVM: llvmCtpop :: (1 <= w, IsSymInterface sym) => NatRepr w -> LLVMOverride p sym ext (EmptyCtx ::> BVType w) (BVType w)
+ Lang.Crucible.LLVM.Intrinsics.LLVM: llvmCtpop :: forall (w :: Natural) sym p ext. (1 <= w, IsSymInterface sym) => NatRepr w -> LLVMOverride p sym ext ((EmptyCtx :: Ctx CrucibleType) ::> BVType w) (BVType w)
- Lang.Crucible.LLVM.Intrinsics.LLVM: llvmCttz :: (1 <= w, IsSymInterface sym) => NatRepr w -> LLVMOverride p sym ext ((EmptyCtx ::> BVType w) ::> BVType 1) (BVType w)
+ Lang.Crucible.LLVM.Intrinsics.LLVM: llvmCttz :: forall (w :: Natural) sym p ext. (1 <= w, IsSymInterface sym) => NatRepr w -> LLVMOverride p sym ext (((EmptyCtx :: Ctx CrucibleType) ::> BVType w) ::> BVType 1) (BVType w)
- Lang.Crucible.LLVM.Intrinsics.LLVM: llvmExp2Override_F32 :: IsSymInterface sym => LLVMOverride p sym ext (EmptyCtx ::> FloatType SingleFloat) (FloatType SingleFloat)
+ Lang.Crucible.LLVM.Intrinsics.LLVM: llvmExp2Override_F32 :: IsSymInterface sym => LLVMOverride p sym ext ((EmptyCtx :: Ctx CrucibleType) ::> FloatType SingleFloat) (FloatType SingleFloat)
- Lang.Crucible.LLVM.Intrinsics.LLVM: llvmExp2Override_F64 :: IsSymInterface sym => LLVMOverride p sym ext (EmptyCtx ::> FloatType DoubleFloat) (FloatType DoubleFloat)
+ Lang.Crucible.LLVM.Intrinsics.LLVM: llvmExp2Override_F64 :: IsSymInterface sym => LLVMOverride p sym ext ((EmptyCtx :: Ctx CrucibleType) ::> FloatType DoubleFloat) (FloatType DoubleFloat)
- Lang.Crucible.LLVM.Intrinsics.LLVM: llvmExpOverride_F32 :: IsSymInterface sym => LLVMOverride p sym ext (EmptyCtx ::> FloatType SingleFloat) (FloatType SingleFloat)
+ Lang.Crucible.LLVM.Intrinsics.LLVM: llvmExpOverride_F32 :: IsSymInterface sym => LLVMOverride p sym ext ((EmptyCtx :: Ctx CrucibleType) ::> FloatType SingleFloat) (FloatType SingleFloat)
- Lang.Crucible.LLVM.Intrinsics.LLVM: llvmExpOverride_F64 :: IsSymInterface sym => LLVMOverride p sym ext (EmptyCtx ::> FloatType DoubleFloat) (FloatType DoubleFloat)
+ Lang.Crucible.LLVM.Intrinsics.LLVM: llvmExpOverride_F64 :: IsSymInterface sym => LLVMOverride p sym ext ((EmptyCtx :: Ctx CrucibleType) ::> FloatType DoubleFloat) (FloatType DoubleFloat)
- Lang.Crucible.LLVM.Intrinsics.LLVM: llvmExpectOverride :: (IsSymInterface sym, 1 <= width) => NatRepr width -> LLVMOverride p sym ext ((EmptyCtx ::> BVType width) ::> BVType width) (BVType width)
+ Lang.Crucible.LLVM.Intrinsics.LLVM: llvmExpectOverride :: forall sym (width :: Natural) p ext. (IsSymInterface sym, 1 <= width) => NatRepr width -> LLVMOverride p sym ext (((EmptyCtx :: Ctx CrucibleType) ::> BVType width) ::> BVType width) (BVType width)
- Lang.Crucible.LLVM.Intrinsics.LLVM: llvmFabsF32 :: forall sym p ext. IsSymInterface sym => LLVMOverride p sym ext (EmptyCtx ::> FloatType SingleFloat) (FloatType SingleFloat)
+ Lang.Crucible.LLVM.Intrinsics.LLVM: llvmFabsF32 :: IsSymInterface sym => LLVMOverride p sym ext ((EmptyCtx :: Ctx CrucibleType) ::> FloatType SingleFloat) (FloatType SingleFloat)
- Lang.Crucible.LLVM.Intrinsics.LLVM: llvmFabsF64 :: forall sym p ext. IsSymInterface sym => LLVMOverride p sym ext (EmptyCtx ::> FloatType DoubleFloat) (FloatType DoubleFloat)
+ Lang.Crucible.LLVM.Intrinsics.LLVM: llvmFabsF64 :: IsSymInterface sym => LLVMOverride p sym ext ((EmptyCtx :: Ctx CrucibleType) ::> FloatType DoubleFloat) (FloatType DoubleFloat)
- Lang.Crucible.LLVM.Intrinsics.LLVM: llvmFloorOverride_F32 :: IsSymInterface sym => LLVMOverride p sym ext (EmptyCtx ::> FloatType SingleFloat) (FloatType SingleFloat)
+ Lang.Crucible.LLVM.Intrinsics.LLVM: llvmFloorOverride_F32 :: IsSymInterface sym => LLVMOverride p sym ext ((EmptyCtx :: Ctx CrucibleType) ::> FloatType SingleFloat) (FloatType SingleFloat)
- Lang.Crucible.LLVM.Intrinsics.LLVM: llvmFloorOverride_F64 :: IsSymInterface sym => LLVMOverride p sym ext (EmptyCtx ::> FloatType DoubleFloat) (FloatType DoubleFloat)
+ Lang.Crucible.LLVM.Intrinsics.LLVM: llvmFloorOverride_F64 :: IsSymInterface sym => LLVMOverride p sym ext ((EmptyCtx :: Ctx CrucibleType) ::> FloatType DoubleFloat) (FloatType DoubleFloat)
- Lang.Crucible.LLVM.Intrinsics.LLVM: llvmFmaOverride_F32 :: forall sym p ext. IsSymInterface sym => LLVMOverride p sym ext (((EmptyCtx ::> FloatType SingleFloat) ::> FloatType SingleFloat) ::> FloatType SingleFloat) (FloatType SingleFloat)
+ Lang.Crucible.LLVM.Intrinsics.LLVM: llvmFmaOverride_F32 :: IsSymInterface sym => LLVMOverride p sym ext ((((EmptyCtx :: Ctx CrucibleType) ::> FloatType SingleFloat) ::> FloatType SingleFloat) ::> FloatType SingleFloat) (FloatType SingleFloat)
- Lang.Crucible.LLVM.Intrinsics.LLVM: llvmFmaOverride_F64 :: forall sym p ext. IsSymInterface sym => LLVMOverride p sym ext (((EmptyCtx ::> FloatType DoubleFloat) ::> FloatType DoubleFloat) ::> FloatType DoubleFloat) (FloatType DoubleFloat)
+ Lang.Crucible.LLVM.Intrinsics.LLVM: llvmFmaOverride_F64 :: IsSymInterface sym => LLVMOverride p sym ext ((((EmptyCtx :: Ctx CrucibleType) ::> FloatType DoubleFloat) ::> FloatType DoubleFloat) ::> FloatType DoubleFloat) (FloatType DoubleFloat)
- Lang.Crucible.LLVM.Intrinsics.LLVM: llvmFmuladdOverride_F32 :: forall sym p ext. IsSymInterface sym => LLVMOverride p sym ext (((EmptyCtx ::> FloatType SingleFloat) ::> FloatType SingleFloat) ::> FloatType SingleFloat) (FloatType SingleFloat)
+ Lang.Crucible.LLVM.Intrinsics.LLVM: llvmFmuladdOverride_F32 :: IsSymInterface sym => LLVMOverride p sym ext ((((EmptyCtx :: Ctx CrucibleType) ::> FloatType SingleFloat) ::> FloatType SingleFloat) ::> FloatType SingleFloat) (FloatType SingleFloat)
- Lang.Crucible.LLVM.Intrinsics.LLVM: llvmFmuladdOverride_F64 :: forall sym p ext. IsSymInterface sym => LLVMOverride p sym ext (((EmptyCtx ::> FloatType DoubleFloat) ::> FloatType DoubleFloat) ::> FloatType DoubleFloat) (FloatType DoubleFloat)
+ Lang.Crucible.LLVM.Intrinsics.LLVM: llvmFmuladdOverride_F64 :: IsSymInterface sym => LLVMOverride p sym ext ((((EmptyCtx :: Ctx CrucibleType) ::> FloatType DoubleFloat) ::> FloatType DoubleFloat) ::> FloatType DoubleFloat) (FloatType DoubleFloat)
- Lang.Crucible.LLVM.Intrinsics.LLVM: llvmFshl :: (1 <= w, IsSymInterface sym) => NatRepr w -> LLVMOverride p sym ext (((EmptyCtx ::> BVType w) ::> BVType w) ::> BVType w) (BVType w)
+ Lang.Crucible.LLVM.Intrinsics.LLVM: llvmFshl :: forall (w :: Natural) sym p ext. (1 <= w, IsSymInterface sym) => NatRepr w -> LLVMOverride p sym ext ((((EmptyCtx :: Ctx CrucibleType) ::> BVType w) ::> BVType w) ::> BVType w) (BVType w)
- Lang.Crucible.LLVM.Intrinsics.LLVM: llvmFshr :: (1 <= w, IsSymInterface sym) => NatRepr w -> LLVMOverride p sym ext (((EmptyCtx ::> BVType w) ::> BVType w) ::> BVType w) (BVType w)
+ Lang.Crucible.LLVM.Intrinsics.LLVM: llvmFshr :: forall (w :: Natural) sym p ext. (1 <= w, IsSymInterface sym) => NatRepr w -> LLVMOverride p sym ext ((((EmptyCtx :: Ctx CrucibleType) ::> BVType w) ::> BVType w) ::> BVType w) (BVType w)
- Lang.Crucible.LLVM.Intrinsics.LLVM: llvmInvariantEndOverride :: (IsSymInterface sym, HasPtrWidth wptr) => NatRepr width -> LLVMOverride p sym ext (((EmptyCtx ::> LLVMPointerType wptr) ::> BVType 64) ::> LLVMPointerType wptr) UnitType
+ Lang.Crucible.LLVM.Intrinsics.LLVM: llvmInvariantEndOverride :: forall sym (wptr :: Natural) (width :: Nat) p ext. (IsSymInterface sym, HasPtrWidth wptr) => NatRepr width -> LLVMOverride p sym ext ((((EmptyCtx :: Ctx CrucibleType) ::> LLVMPointerType wptr) ::> BVType 64) ::> LLVMPointerType wptr) UnitType
- Lang.Crucible.LLVM.Intrinsics.LLVM: llvmInvariantEndOverride_opaque :: (IsSymInterface sym, HasPtrWidth wptr) => LLVMOverride p sym ext (((EmptyCtx ::> LLVMPointerType wptr) ::> BVType 64) ::> LLVMPointerType wptr) UnitType
+ Lang.Crucible.LLVM.Intrinsics.LLVM: llvmInvariantEndOverride_opaque :: forall sym (wptr :: Natural) p ext. (IsSymInterface sym, HasPtrWidth wptr) => LLVMOverride p sym ext ((((EmptyCtx :: Ctx CrucibleType) ::> LLVMPointerType wptr) ::> BVType 64) ::> LLVMPointerType wptr) UnitType
- Lang.Crucible.LLVM.Intrinsics.LLVM: llvmInvariantStartOverride :: (IsSymInterface sym, HasPtrWidth wptr) => NatRepr width -> LLVMOverride p sym ext ((EmptyCtx ::> BVType 64) ::> LLVMPointerType wptr) (LLVMPointerType wptr)
+ Lang.Crucible.LLVM.Intrinsics.LLVM: llvmInvariantStartOverride :: forall sym (wptr :: Natural) (width :: Nat) p ext. (IsSymInterface sym, HasPtrWidth wptr) => NatRepr width -> LLVMOverride p sym ext (((EmptyCtx :: Ctx CrucibleType) ::> BVType 64) ::> LLVMPointerType wptr) (LLVMPointerType wptr)
- Lang.Crucible.LLVM.Intrinsics.LLVM: llvmInvariantStartOverride_opaque :: (IsSymInterface sym, HasPtrWidth wptr) => LLVMOverride p sym ext ((EmptyCtx ::> BVType 64) ::> LLVMPointerType wptr) (LLVMPointerType wptr)
+ Lang.Crucible.LLVM.Intrinsics.LLVM: llvmInvariantStartOverride_opaque :: forall sym (wptr :: Natural) p ext. (IsSymInterface sym, HasPtrWidth wptr) => LLVMOverride p sym ext (((EmptyCtx :: Ctx CrucibleType) ::> BVType 64) ::> LLVMPointerType wptr) (LLVMPointerType wptr)
- Lang.Crucible.LLVM.Intrinsics.LLVM: llvmIsFpclassOverride_F32 :: IsSymInterface sym => LLVMOverride p sym ext ((EmptyCtx ::> FloatType SingleFloat) ::> BVType 32) (BVType 1)
+ Lang.Crucible.LLVM.Intrinsics.LLVM: llvmIsFpclassOverride_F32 :: IsSymInterface sym => LLVMOverride p sym ext (((EmptyCtx :: Ctx CrucibleType) ::> FloatType SingleFloat) ::> BVType 32) (BVType 1)
- Lang.Crucible.LLVM.Intrinsics.LLVM: llvmIsFpclassOverride_F64 :: IsSymInterface sym => LLVMOverride p sym ext ((EmptyCtx ::> FloatType DoubleFloat) ::> BVType 32) (BVType 1)
+ Lang.Crucible.LLVM.Intrinsics.LLVM: llvmIsFpclassOverride_F64 :: IsSymInterface sym => LLVMOverride p sym ext (((EmptyCtx :: Ctx CrucibleType) ::> FloatType DoubleFloat) ::> BVType 32) (BVType 1)
- Lang.Crucible.LLVM.Intrinsics.LLVM: llvmLifetimeEndOverride :: (IsSymInterface sym, HasPtrWidth wptr) => LLVMOverride p sym ext ((EmptyCtx ::> BVType 64) ::> LLVMPointerType wptr) UnitType
+ Lang.Crucible.LLVM.Intrinsics.LLVM: llvmLifetimeEndOverride :: forall sym (wptr :: Natural) p ext. (IsSymInterface sym, HasPtrWidth wptr) => LLVMOverride p sym ext (((EmptyCtx :: Ctx CrucibleType) ::> BVType 64) ::> LLVMPointerType wptr) UnitType
- Lang.Crucible.LLVM.Intrinsics.LLVM: llvmLifetimeOverrideOverload :: forall width sym wptr p ext. (1 <= width, KnownNat width, IsSymInterface sym, HasPtrWidth wptr) => String -> NatRepr width -> LLVMOverride p sym ext ((EmptyCtx ::> BVType 64) ::> LLVMPointerType wptr) UnitType
+ Lang.Crucible.LLVM.Intrinsics.LLVM: llvmLifetimeOverrideOverload :: forall (width :: Natural) sym (wptr :: Natural) p ext. (1 <= width, KnownNat width, IsSymInterface sym, HasPtrWidth wptr) => String -> NatRepr width -> LLVMOverride p sym ext (((EmptyCtx :: Ctx CrucibleType) ::> BVType 64) ::> LLVMPointerType wptr) UnitType
- Lang.Crucible.LLVM.Intrinsics.LLVM: llvmLifetimeOverrideOverload_opaque :: forall sym wptr p ext. (IsSymInterface sym, HasPtrWidth wptr) => String -> LLVMOverride p sym ext ((EmptyCtx ::> BVType 64) ::> LLVMPointerType wptr) UnitType
+ Lang.Crucible.LLVM.Intrinsics.LLVM: llvmLifetimeOverrideOverload_opaque :: forall sym (wptr :: Natural) p ext. (IsSymInterface sym, HasPtrWidth wptr) => String -> LLVMOverride p sym ext (((EmptyCtx :: Ctx CrucibleType) ::> BVType 64) ::> LLVMPointerType wptr) UnitType
- Lang.Crucible.LLVM.Intrinsics.LLVM: llvmLifetimeStartOverride :: (IsSymInterface sym, HasPtrWidth wptr) => LLVMOverride p sym ext ((EmptyCtx ::> BVType 64) ::> LLVMPointerType wptr) UnitType
+ Lang.Crucible.LLVM.Intrinsics.LLVM: llvmLifetimeStartOverride :: forall sym (wptr :: Natural) p ext. (IsSymInterface sym, HasPtrWidth wptr) => LLVMOverride p sym ext (((EmptyCtx :: Ctx CrucibleType) ::> BVType 64) ::> LLVMPointerType wptr) UnitType
- Lang.Crucible.LLVM.Intrinsics.LLVM: llvmLoadRelative :: (1 <= w, HasPtrWidth wptr, HasLLVMAnn sym, ?memOpts :: MemOptions) => NatRepr w -> LLVMOverride p sym ext ((EmptyCtx ::> LLVMPointerType wptr) ::> BVType w) (LLVMPointerType wptr)
+ Lang.Crucible.LLVM.Intrinsics.LLVM: llvmLoadRelative :: forall (w :: Natural) (wptr :: Natural) sym p ext. (1 <= w, HasPtrWidth wptr, HasLLVMAnn sym, ?memOpts :: MemOptions) => NatRepr w -> LLVMOverride p sym ext (((EmptyCtx :: Ctx CrucibleType) ::> LLVMPointerType wptr) ::> BVType w) (LLVMPointerType wptr)
- Lang.Crucible.LLVM.Intrinsics.LLVM: llvmLog10Override_F32 :: IsSymInterface sym => LLVMOverride p sym ext (EmptyCtx ::> FloatType SingleFloat) (FloatType SingleFloat)
+ Lang.Crucible.LLVM.Intrinsics.LLVM: llvmLog10Override_F32 :: IsSymInterface sym => LLVMOverride p sym ext ((EmptyCtx :: Ctx CrucibleType) ::> FloatType SingleFloat) (FloatType SingleFloat)
- Lang.Crucible.LLVM.Intrinsics.LLVM: llvmLog10Override_F64 :: IsSymInterface sym => LLVMOverride p sym ext (EmptyCtx ::> FloatType DoubleFloat) (FloatType DoubleFloat)
+ Lang.Crucible.LLVM.Intrinsics.LLVM: llvmLog10Override_F64 :: IsSymInterface sym => LLVMOverride p sym ext ((EmptyCtx :: Ctx CrucibleType) ::> FloatType DoubleFloat) (FloatType DoubleFloat)
- Lang.Crucible.LLVM.Intrinsics.LLVM: llvmLog2Override_F32 :: IsSymInterface sym => LLVMOverride p sym ext (EmptyCtx ::> FloatType SingleFloat) (FloatType SingleFloat)
+ Lang.Crucible.LLVM.Intrinsics.LLVM: llvmLog2Override_F32 :: IsSymInterface sym => LLVMOverride p sym ext ((EmptyCtx :: Ctx CrucibleType) ::> FloatType SingleFloat) (FloatType SingleFloat)
- Lang.Crucible.LLVM.Intrinsics.LLVM: llvmLog2Override_F64 :: IsSymInterface sym => LLVMOverride p sym ext (EmptyCtx ::> FloatType DoubleFloat) (FloatType DoubleFloat)
+ Lang.Crucible.LLVM.Intrinsics.LLVM: llvmLog2Override_F64 :: IsSymInterface sym => LLVMOverride p sym ext ((EmptyCtx :: Ctx CrucibleType) ::> FloatType DoubleFloat) (FloatType DoubleFloat)
- Lang.Crucible.LLVM.Intrinsics.LLVM: llvmLogOverride_F32 :: IsSymInterface sym => LLVMOverride p sym ext (EmptyCtx ::> FloatType SingleFloat) (FloatType SingleFloat)
+ Lang.Crucible.LLVM.Intrinsics.LLVM: llvmLogOverride_F32 :: IsSymInterface sym => LLVMOverride p sym ext ((EmptyCtx :: Ctx CrucibleType) ::> FloatType SingleFloat) (FloatType SingleFloat)
- Lang.Crucible.LLVM.Intrinsics.LLVM: llvmLogOverride_F64 :: IsSymInterface sym => LLVMOverride p sym ext (EmptyCtx ::> FloatType DoubleFloat) (FloatType DoubleFloat)
+ Lang.Crucible.LLVM.Intrinsics.LLVM: llvmLogOverride_F64 :: IsSymInterface sym => LLVMOverride p sym ext ((EmptyCtx :: Ctx CrucibleType) ::> FloatType DoubleFloat) (FloatType DoubleFloat)
- Lang.Crucible.LLVM.Intrinsics.LLVM: llvmMemcpyOverride_8_8_32 :: (IsSymInterface sym, HasLLVMAnn sym, HasPtrWidth wptr, ?memOpts :: MemOptions) => LLVMOverride p sym ext (((((EmptyCtx ::> LLVMPointerType wptr) ::> LLVMPointerType wptr) ::> BVType 32) ::> BVType 32) ::> BVType 1) UnitType
+ Lang.Crucible.LLVM.Intrinsics.LLVM: llvmMemcpyOverride_8_8_32 :: forall sym (wptr :: Natural) p ext. (IsSymInterface sym, HasLLVMAnn sym, HasPtrWidth wptr, ?memOpts :: MemOptions) => LLVMOverride p sym ext ((((((EmptyCtx :: Ctx CrucibleType) ::> LLVMPointerType wptr) ::> LLVMPointerType wptr) ::> BVType 32) ::> BVType 32) ::> BVType 1) UnitType
- Lang.Crucible.LLVM.Intrinsics.LLVM: llvmMemcpyOverride_8_8_32_noalign :: (IsSymInterface sym, HasLLVMAnn sym, HasPtrWidth wptr, ?memOpts :: MemOptions) => LLVMOverride p sym ext ((((EmptyCtx ::> LLVMPointerType wptr) ::> LLVMPointerType wptr) ::> BVType 32) ::> BVType 1) UnitType
+ Lang.Crucible.LLVM.Intrinsics.LLVM: llvmMemcpyOverride_8_8_32_noalign :: forall sym (wptr :: Natural) p ext. (IsSymInterface sym, HasLLVMAnn sym, HasPtrWidth wptr, ?memOpts :: MemOptions) => LLVMOverride p sym ext (((((EmptyCtx :: Ctx CrucibleType) ::> LLVMPointerType wptr) ::> LLVMPointerType wptr) ::> BVType 32) ::> BVType 1) UnitType
- Lang.Crucible.LLVM.Intrinsics.LLVM: llvmMemcpyOverride_8_8_32_noalign_opaque :: (IsSymInterface sym, HasLLVMAnn sym, HasPtrWidth wptr, ?memOpts :: MemOptions) => LLVMOverride p sym ext ((((EmptyCtx ::> LLVMPointerType wptr) ::> LLVMPointerType wptr) ::> BVType 32) ::> BVType 1) UnitType
+ Lang.Crucible.LLVM.Intrinsics.LLVM: llvmMemcpyOverride_8_8_32_noalign_opaque :: forall sym (wptr :: Natural) p ext. (IsSymInterface sym, HasLLVMAnn sym, HasPtrWidth wptr, ?memOpts :: MemOptions) => LLVMOverride p sym ext (((((EmptyCtx :: Ctx CrucibleType) ::> LLVMPointerType wptr) ::> LLVMPointerType wptr) ::> BVType 32) ::> BVType 1) UnitType
- Lang.Crucible.LLVM.Intrinsics.LLVM: llvmMemcpyOverride_8_8_64 :: (IsSymInterface sym, HasLLVMAnn sym, HasPtrWidth wptr, ?memOpts :: MemOptions) => LLVMOverride p sym ext (((((EmptyCtx ::> LLVMPointerType wptr) ::> LLVMPointerType wptr) ::> BVType 64) ::> BVType 32) ::> BVType 1) UnitType
+ Lang.Crucible.LLVM.Intrinsics.LLVM: llvmMemcpyOverride_8_8_64 :: forall sym (wptr :: Natural) p ext. (IsSymInterface sym, HasLLVMAnn sym, HasPtrWidth wptr, ?memOpts :: MemOptions) => LLVMOverride p sym ext ((((((EmptyCtx :: Ctx CrucibleType) ::> LLVMPointerType wptr) ::> LLVMPointerType wptr) ::> BVType 64) ::> BVType 32) ::> BVType 1) UnitType
- Lang.Crucible.LLVM.Intrinsics.LLVM: llvmMemcpyOverride_8_8_64_noalign :: (IsSymInterface sym, HasLLVMAnn sym, HasPtrWidth wptr, ?memOpts :: MemOptions) => LLVMOverride p sym ext ((((EmptyCtx ::> LLVMPointerType wptr) ::> LLVMPointerType wptr) ::> BVType 64) ::> BVType 1) UnitType
+ Lang.Crucible.LLVM.Intrinsics.LLVM: llvmMemcpyOverride_8_8_64_noalign :: forall sym (wptr :: Natural) p ext. (IsSymInterface sym, HasLLVMAnn sym, HasPtrWidth wptr, ?memOpts :: MemOptions) => LLVMOverride p sym ext (((((EmptyCtx :: Ctx CrucibleType) ::> LLVMPointerType wptr) ::> LLVMPointerType wptr) ::> BVType 64) ::> BVType 1) UnitType
- Lang.Crucible.LLVM.Intrinsics.LLVM: llvmMemcpyOverride_8_8_64_noalign_opaque :: (IsSymInterface sym, HasLLVMAnn sym, HasPtrWidth wptr, ?memOpts :: MemOptions) => LLVMOverride p sym ext ((((EmptyCtx ::> LLVMPointerType wptr) ::> LLVMPointerType wptr) ::> BVType 64) ::> BVType 1) UnitType
+ Lang.Crucible.LLVM.Intrinsics.LLVM: llvmMemcpyOverride_8_8_64_noalign_opaque :: forall sym (wptr :: Natural) p ext. (IsSymInterface sym, HasLLVMAnn sym, HasPtrWidth wptr, ?memOpts :: MemOptions) => LLVMOverride p sym ext (((((EmptyCtx :: Ctx CrucibleType) ::> LLVMPointerType wptr) ::> LLVMPointerType wptr) ::> BVType 64) ::> BVType 1) UnitType
- Lang.Crucible.LLVM.Intrinsics.LLVM: llvmMemmoveOverride_8_8_32 :: (IsSymInterface sym, HasLLVMAnn sym, HasPtrWidth wptr, ?memOpts :: MemOptions) => LLVMOverride p sym ext (((((EmptyCtx ::> LLVMPointerType wptr) ::> LLVMPointerType wptr) ::> BVType 32) ::> BVType 32) ::> BVType 1) UnitType
+ Lang.Crucible.LLVM.Intrinsics.LLVM: llvmMemmoveOverride_8_8_32 :: forall sym (wptr :: Natural) p ext. (IsSymInterface sym, HasLLVMAnn sym, HasPtrWidth wptr, ?memOpts :: MemOptions) => LLVMOverride p sym ext ((((((EmptyCtx :: Ctx CrucibleType) ::> LLVMPointerType wptr) ::> LLVMPointerType wptr) ::> BVType 32) ::> BVType 32) ::> BVType 1) UnitType
- Lang.Crucible.LLVM.Intrinsics.LLVM: llvmMemmoveOverride_8_8_32_noalign :: (IsSymInterface sym, HasLLVMAnn sym, HasPtrWidth wptr, ?memOpts :: MemOptions) => LLVMOverride p sym ext ((((EmptyCtx ::> LLVMPointerType wptr) ::> LLVMPointerType wptr) ::> BVType 32) ::> BVType 1) UnitType
+ Lang.Crucible.LLVM.Intrinsics.LLVM: llvmMemmoveOverride_8_8_32_noalign :: forall sym (wptr :: Natural) p ext. (IsSymInterface sym, HasLLVMAnn sym, HasPtrWidth wptr, ?memOpts :: MemOptions) => LLVMOverride p sym ext (((((EmptyCtx :: Ctx CrucibleType) ::> LLVMPointerType wptr) ::> LLVMPointerType wptr) ::> BVType 32) ::> BVType 1) UnitType
- Lang.Crucible.LLVM.Intrinsics.LLVM: llvmMemmoveOverride_8_8_32_noalign_opaque :: (IsSymInterface sym, HasLLVMAnn sym, HasPtrWidth wptr, ?memOpts :: MemOptions) => LLVMOverride p sym ext ((((EmptyCtx ::> LLVMPointerType wptr) ::> LLVMPointerType wptr) ::> BVType 32) ::> BVType 1) UnitType
+ Lang.Crucible.LLVM.Intrinsics.LLVM: llvmMemmoveOverride_8_8_32_noalign_opaque :: forall sym (wptr :: Natural) p ext. (IsSymInterface sym, HasLLVMAnn sym, HasPtrWidth wptr, ?memOpts :: MemOptions) => LLVMOverride p sym ext (((((EmptyCtx :: Ctx CrucibleType) ::> LLVMPointerType wptr) ::> LLVMPointerType wptr) ::> BVType 32) ::> BVType 1) UnitType
- Lang.Crucible.LLVM.Intrinsics.LLVM: llvmMemmoveOverride_8_8_64 :: (IsSymInterface sym, HasLLVMAnn sym, HasPtrWidth wptr, ?memOpts :: MemOptions) => LLVMOverride p sym ext (((((EmptyCtx ::> LLVMPointerType wptr) ::> LLVMPointerType wptr) ::> BVType 64) ::> BVType 32) ::> BVType 1) UnitType
+ Lang.Crucible.LLVM.Intrinsics.LLVM: llvmMemmoveOverride_8_8_64 :: forall sym (wptr :: Natural) p ext. (IsSymInterface sym, HasLLVMAnn sym, HasPtrWidth wptr, ?memOpts :: MemOptions) => LLVMOverride p sym ext ((((((EmptyCtx :: Ctx CrucibleType) ::> LLVMPointerType wptr) ::> LLVMPointerType wptr) ::> BVType 64) ::> BVType 32) ::> BVType 1) UnitType
- Lang.Crucible.LLVM.Intrinsics.LLVM: llvmMemmoveOverride_8_8_64_noalign :: (IsSymInterface sym, HasLLVMAnn sym, HasPtrWidth wptr, ?memOpts :: MemOptions) => LLVMOverride p sym ext ((((EmptyCtx ::> LLVMPointerType wptr) ::> LLVMPointerType wptr) ::> BVType 64) ::> BVType 1) UnitType
+ Lang.Crucible.LLVM.Intrinsics.LLVM: llvmMemmoveOverride_8_8_64_noalign :: forall sym (wptr :: Natural) p ext. (IsSymInterface sym, HasLLVMAnn sym, HasPtrWidth wptr, ?memOpts :: MemOptions) => LLVMOverride p sym ext (((((EmptyCtx :: Ctx CrucibleType) ::> LLVMPointerType wptr) ::> LLVMPointerType wptr) ::> BVType 64) ::> BVType 1) UnitType
- Lang.Crucible.LLVM.Intrinsics.LLVM: llvmMemmoveOverride_8_8_64_noalign_opaque :: (IsSymInterface sym, HasLLVMAnn sym, HasPtrWidth wptr, ?memOpts :: MemOptions) => LLVMOverride p sym ext ((((EmptyCtx ::> LLVMPointerType wptr) ::> LLVMPointerType wptr) ::> BVType 64) ::> BVType 1) UnitType
+ Lang.Crucible.LLVM.Intrinsics.LLVM: llvmMemmoveOverride_8_8_64_noalign_opaque :: forall sym (wptr :: Natural) p ext. (IsSymInterface sym, HasLLVMAnn sym, HasPtrWidth wptr, ?memOpts :: MemOptions) => LLVMOverride p sym ext (((((EmptyCtx :: Ctx CrucibleType) ::> LLVMPointerType wptr) ::> LLVMPointerType wptr) ::> BVType 64) ::> BVType 1) UnitType
- Lang.Crucible.LLVM.Intrinsics.LLVM: llvmMemsetOverride_8_32 :: (IsSymInterface sym, HasLLVMAnn sym, HasPtrWidth wptr) => LLVMOverride p sym ext (((((EmptyCtx ::> LLVMPointerType wptr) ::> BVType 8) ::> BVType 32) ::> BVType 32) ::> BVType 1) UnitType
+ Lang.Crucible.LLVM.Intrinsics.LLVM: llvmMemsetOverride_8_32 :: forall sym (wptr :: Natural) p ext. (IsSymInterface sym, HasLLVMAnn sym, HasPtrWidth wptr) => LLVMOverride p sym ext ((((((EmptyCtx :: Ctx CrucibleType) ::> LLVMPointerType wptr) ::> BVType 8) ::> BVType 32) ::> BVType 32) ::> BVType 1) UnitType
- Lang.Crucible.LLVM.Intrinsics.LLVM: llvmMemsetOverride_8_32_noalign :: (IsSymInterface sym, HasLLVMAnn sym, HasPtrWidth wptr) => LLVMOverride p sym ext ((((EmptyCtx ::> LLVMPointerType wptr) ::> BVType 8) ::> BVType 32) ::> BVType 1) UnitType
+ Lang.Crucible.LLVM.Intrinsics.LLVM: llvmMemsetOverride_8_32_noalign :: forall sym (wptr :: Natural) p ext. (IsSymInterface sym, HasLLVMAnn sym, HasPtrWidth wptr) => LLVMOverride p sym ext (((((EmptyCtx :: Ctx CrucibleType) ::> LLVMPointerType wptr) ::> BVType 8) ::> BVType 32) ::> BVType 1) UnitType
- Lang.Crucible.LLVM.Intrinsics.LLVM: llvmMemsetOverride_8_32_noalign_opaque :: (IsSymInterface sym, HasLLVMAnn sym, HasPtrWidth wptr) => LLVMOverride p sym ext ((((EmptyCtx ::> LLVMPointerType wptr) ::> BVType 8) ::> BVType 32) ::> BVType 1) UnitType
+ Lang.Crucible.LLVM.Intrinsics.LLVM: llvmMemsetOverride_8_32_noalign_opaque :: forall sym (wptr :: Natural) p ext. (IsSymInterface sym, HasLLVMAnn sym, HasPtrWidth wptr) => LLVMOverride p sym ext (((((EmptyCtx :: Ctx CrucibleType) ::> LLVMPointerType wptr) ::> BVType 8) ::> BVType 32) ::> BVType 1) UnitType
- Lang.Crucible.LLVM.Intrinsics.LLVM: llvmMemsetOverride_8_64 :: (IsSymInterface sym, HasLLVMAnn sym, HasPtrWidth wptr) => LLVMOverride p sym ext (((((EmptyCtx ::> LLVMPointerType wptr) ::> BVType 8) ::> BVType 64) ::> BVType 32) ::> BVType 1) UnitType
+ Lang.Crucible.LLVM.Intrinsics.LLVM: llvmMemsetOverride_8_64 :: forall sym (wptr :: Natural) p ext. (IsSymInterface sym, HasLLVMAnn sym, HasPtrWidth wptr) => LLVMOverride p sym ext ((((((EmptyCtx :: Ctx CrucibleType) ::> LLVMPointerType wptr) ::> BVType 8) ::> BVType 64) ::> BVType 32) ::> BVType 1) UnitType
- Lang.Crucible.LLVM.Intrinsics.LLVM: llvmMemsetOverride_8_64_noalign :: (IsSymInterface sym, HasLLVMAnn sym, HasPtrWidth wptr) => LLVMOverride p sym ext ((((EmptyCtx ::> LLVMPointerType wptr) ::> BVType 8) ::> BVType 64) ::> BVType 1) UnitType
+ Lang.Crucible.LLVM.Intrinsics.LLVM: llvmMemsetOverride_8_64_noalign :: forall sym (wptr :: Natural) p ext. (IsSymInterface sym, HasLLVMAnn sym, HasPtrWidth wptr) => LLVMOverride p sym ext (((((EmptyCtx :: Ctx CrucibleType) ::> LLVMPointerType wptr) ::> BVType 8) ::> BVType 64) ::> BVType 1) UnitType
- Lang.Crucible.LLVM.Intrinsics.LLVM: llvmMemsetOverride_8_64_noalign_opaque :: (IsSymInterface sym, HasLLVMAnn sym, HasPtrWidth wptr) => LLVMOverride p sym ext ((((EmptyCtx ::> LLVMPointerType wptr) ::> BVType 8) ::> BVType 64) ::> BVType 1) UnitType
+ Lang.Crucible.LLVM.Intrinsics.LLVM: llvmMemsetOverride_8_64_noalign_opaque :: forall sym (wptr :: Natural) p ext. (IsSymInterface sym, HasLLVMAnn sym, HasPtrWidth wptr) => LLVMOverride p sym ext (((((EmptyCtx :: Ctx CrucibleType) ::> LLVMPointerType wptr) ::> BVType 8) ::> BVType 64) ::> BVType 1) UnitType
- Lang.Crucible.LLVM.Intrinsics.LLVM: llvmObjectsizeOverride_32 :: (IsSymInterface sym, HasPtrWidth wptr) => LLVMOverride p sym ext ((EmptyCtx ::> LLVMPointerType wptr) ::> BVType 1) (BVType 32)
+ Lang.Crucible.LLVM.Intrinsics.LLVM: llvmObjectsizeOverride_32 :: forall sym (wptr :: Natural) p ext. (IsSymInterface sym, HasPtrWidth wptr) => LLVMOverride p sym ext (((EmptyCtx :: Ctx CrucibleType) ::> LLVMPointerType wptr) ::> BVType 1) (BVType 32)
- Lang.Crucible.LLVM.Intrinsics.LLVM: llvmObjectsizeOverride_32_null :: (IsSymInterface sym, HasPtrWidth wptr) => LLVMOverride p sym ext (((EmptyCtx ::> LLVMPointerType wptr) ::> BVType 1) ::> BVType 1) (BVType 32)
+ Lang.Crucible.LLVM.Intrinsics.LLVM: llvmObjectsizeOverride_32_null :: forall sym (wptr :: Natural) p ext. (IsSymInterface sym, HasPtrWidth wptr) => LLVMOverride p sym ext ((((EmptyCtx :: Ctx CrucibleType) ::> LLVMPointerType wptr) ::> BVType 1) ::> BVType 1) (BVType 32)
- Lang.Crucible.LLVM.Intrinsics.LLVM: llvmObjectsizeOverride_32_null_dynamic :: (IsSymInterface sym, HasPtrWidth wptr) => LLVMOverride p sym ext ((((EmptyCtx ::> LLVMPointerType wptr) ::> BVType 1) ::> BVType 1) ::> BVType 1) (BVType 32)
+ Lang.Crucible.LLVM.Intrinsics.LLVM: llvmObjectsizeOverride_32_null_dynamic :: forall sym (wptr :: Natural) p ext. (IsSymInterface sym, HasPtrWidth wptr) => LLVMOverride p sym ext (((((EmptyCtx :: Ctx CrucibleType) ::> LLVMPointerType wptr) ::> BVType 1) ::> BVType 1) ::> BVType 1) (BVType 32)
- Lang.Crucible.LLVM.Intrinsics.LLVM: llvmObjectsizeOverride_32_null_dynamic_opaque :: (IsSymInterface sym, HasPtrWidth wptr) => LLVMOverride p sym ext ((((EmptyCtx ::> LLVMPointerType wptr) ::> BVType 1) ::> BVType 1) ::> BVType 1) (BVType 32)
+ Lang.Crucible.LLVM.Intrinsics.LLVM: llvmObjectsizeOverride_32_null_dynamic_opaque :: forall sym (wptr :: Natural) p ext. (IsSymInterface sym, HasPtrWidth wptr) => LLVMOverride p sym ext (((((EmptyCtx :: Ctx CrucibleType) ::> LLVMPointerType wptr) ::> BVType 1) ::> BVType 1) ::> BVType 1) (BVType 32)
- Lang.Crucible.LLVM.Intrinsics.LLVM: llvmObjectsizeOverride_64 :: (IsSymInterface sym, HasPtrWidth wptr) => LLVMOverride p sym ext ((EmptyCtx ::> LLVMPointerType wptr) ::> BVType 1) (BVType 64)
+ Lang.Crucible.LLVM.Intrinsics.LLVM: llvmObjectsizeOverride_64 :: forall sym (wptr :: Natural) p ext. (IsSymInterface sym, HasPtrWidth wptr) => LLVMOverride p sym ext (((EmptyCtx :: Ctx CrucibleType) ::> LLVMPointerType wptr) ::> BVType 1) (BVType 64)
- Lang.Crucible.LLVM.Intrinsics.LLVM: llvmObjectsizeOverride_64_null :: (IsSymInterface sym, HasPtrWidth wptr) => LLVMOverride p sym ext (((EmptyCtx ::> LLVMPointerType wptr) ::> BVType 1) ::> BVType 1) (BVType 64)
+ Lang.Crucible.LLVM.Intrinsics.LLVM: llvmObjectsizeOverride_64_null :: forall sym (wptr :: Natural) p ext. (IsSymInterface sym, HasPtrWidth wptr) => LLVMOverride p sym ext ((((EmptyCtx :: Ctx CrucibleType) ::> LLVMPointerType wptr) ::> BVType 1) ::> BVType 1) (BVType 64)
- Lang.Crucible.LLVM.Intrinsics.LLVM: llvmObjectsizeOverride_64_null_dynamic :: (IsSymInterface sym, HasPtrWidth wptr) => LLVMOverride p sym ext ((((EmptyCtx ::> LLVMPointerType wptr) ::> BVType 1) ::> BVType 1) ::> BVType 1) (BVType 64)
+ Lang.Crucible.LLVM.Intrinsics.LLVM: llvmObjectsizeOverride_64_null_dynamic :: forall sym (wptr :: Natural) p ext. (IsSymInterface sym, HasPtrWidth wptr) => LLVMOverride p sym ext (((((EmptyCtx :: Ctx CrucibleType) ::> LLVMPointerType wptr) ::> BVType 1) ::> BVType 1) ::> BVType 1) (BVType 64)
- Lang.Crucible.LLVM.Intrinsics.LLVM: llvmObjectsizeOverride_64_null_dynamic_opaque :: (IsSymInterface sym, HasPtrWidth wptr) => LLVMOverride p sym ext ((((EmptyCtx ::> LLVMPointerType wptr) ::> BVType 1) ::> BVType 1) ::> BVType 1) (BVType 64)
+ Lang.Crucible.LLVM.Intrinsics.LLVM: llvmObjectsizeOverride_64_null_dynamic_opaque :: forall sym (wptr :: Natural) p ext. (IsSymInterface sym, HasPtrWidth wptr) => LLVMOverride p sym ext (((((EmptyCtx :: Ctx CrucibleType) ::> LLVMPointerType wptr) ::> BVType 1) ::> BVType 1) ::> BVType 1) (BVType 64)
- Lang.Crucible.LLVM.Intrinsics.LLVM: llvmPowOverride_F32 :: IsSymInterface sym => LLVMOverride p sym ext ((EmptyCtx ::> FloatType SingleFloat) ::> FloatType SingleFloat) (FloatType SingleFloat)
+ Lang.Crucible.LLVM.Intrinsics.LLVM: llvmPowOverride_F32 :: IsSymInterface sym => LLVMOverride p sym ext (((EmptyCtx :: Ctx CrucibleType) ::> FloatType SingleFloat) ::> FloatType SingleFloat) (FloatType SingleFloat)
- Lang.Crucible.LLVM.Intrinsics.LLVM: llvmPowOverride_F64 :: IsSymInterface sym => LLVMOverride p sym ext ((EmptyCtx ::> FloatType DoubleFloat) ::> FloatType DoubleFloat) (FloatType DoubleFloat)
+ Lang.Crucible.LLVM.Intrinsics.LLVM: llvmPowOverride_F64 :: IsSymInterface sym => LLVMOverride p sym ext (((EmptyCtx :: Ctx CrucibleType) ::> FloatType DoubleFloat) ::> FloatType DoubleFloat) (FloatType DoubleFloat)
- Lang.Crucible.LLVM.Intrinsics.LLVM: llvmPrefetchOverride :: (IsSymInterface sym, HasPtrWidth wptr) => LLVMOverride p sym ext ((((EmptyCtx ::> LLVMPointerType wptr) ::> BVType 32) ::> BVType 32) ::> BVType 32) UnitType
+ Lang.Crucible.LLVM.Intrinsics.LLVM: llvmPrefetchOverride :: forall sym (wptr :: Natural) p ext. (IsSymInterface sym, HasPtrWidth wptr) => LLVMOverride p sym ext (((((EmptyCtx :: Ctx CrucibleType) ::> LLVMPointerType wptr) ::> BVType 32) ::> BVType 32) ::> BVType 32) UnitType
- Lang.Crucible.LLVM.Intrinsics.LLVM: llvmPrefetchOverride_opaque :: (IsSymInterface sym, HasPtrWidth wptr) => LLVMOverride p sym ext ((((EmptyCtx ::> LLVMPointerType wptr) ::> BVType 32) ::> BVType 32) ::> BVType 32) UnitType
+ Lang.Crucible.LLVM.Intrinsics.LLVM: llvmPrefetchOverride_opaque :: forall sym (wptr :: Natural) p ext. (IsSymInterface sym, HasPtrWidth wptr) => LLVMOverride p sym ext (((((EmptyCtx :: Ctx CrucibleType) ::> LLVMPointerType wptr) ::> BVType 32) ::> BVType 32) ::> BVType 32) UnitType
- Lang.Crucible.LLVM.Intrinsics.LLVM: llvmPrefetchOverride_preLLVM10 :: (IsSymInterface sym, HasPtrWidth wptr) => LLVMOverride p sym ext ((((EmptyCtx ::> LLVMPointerType wptr) ::> BVType 32) ::> BVType 32) ::> BVType 32) UnitType
+ Lang.Crucible.LLVM.Intrinsics.LLVM: llvmPrefetchOverride_preLLVM10 :: forall sym (wptr :: Natural) p ext. (IsSymInterface sym, HasPtrWidth wptr) => LLVMOverride p sym ext (((((EmptyCtx :: Ctx CrucibleType) ::> LLVMPointerType wptr) ::> BVType 32) ::> BVType 32) ::> BVType 32) UnitType
- Lang.Crucible.LLVM.Intrinsics.LLVM: llvmSaddWithOverflow :: (1 <= w, IsSymInterface sym) => NatRepr w -> LLVMOverride p sym ext ((EmptyCtx ::> BVType w) ::> BVType w) (StructType ((EmptyCtx ::> BVType w) ::> BVType 1))
+ Lang.Crucible.LLVM.Intrinsics.LLVM: llvmSaddWithOverflow :: forall (w :: Natural) sym p ext. (1 <= w, IsSymInterface sym) => NatRepr w -> LLVMOverride p sym ext (((EmptyCtx :: Ctx CrucibleType) ::> BVType w) ::> BVType w) (StructType (((EmptyCtx :: Ctx CrucibleType) ::> BVType w) ::> BVType 1))
- Lang.Crucible.LLVM.Intrinsics.LLVM: llvmSinOverride_F32 :: IsSymInterface sym => LLVMOverride p sym ext (EmptyCtx ::> FloatType SingleFloat) (FloatType SingleFloat)
+ Lang.Crucible.LLVM.Intrinsics.LLVM: llvmSinOverride_F32 :: IsSymInterface sym => LLVMOverride p sym ext ((EmptyCtx :: Ctx CrucibleType) ::> FloatType SingleFloat) (FloatType SingleFloat)
- Lang.Crucible.LLVM.Intrinsics.LLVM: llvmSinOverride_F64 :: IsSymInterface sym => LLVMOverride p sym ext (EmptyCtx ::> FloatType DoubleFloat) (FloatType DoubleFloat)
+ Lang.Crucible.LLVM.Intrinsics.LLVM: llvmSinOverride_F64 :: IsSymInterface sym => LLVMOverride p sym ext ((EmptyCtx :: Ctx CrucibleType) ::> FloatType DoubleFloat) (FloatType DoubleFloat)
- Lang.Crucible.LLVM.Intrinsics.LLVM: llvmSmax :: (1 <= w, IsSymInterface sym) => NatRepr w -> LLVMOverride p sym ext ((EmptyCtx ::> BVType w) ::> BVType w) (BVType w)
+ Lang.Crucible.LLVM.Intrinsics.LLVM: llvmSmax :: forall (w :: Natural) sym p ext. (1 <= w, IsSymInterface sym) => NatRepr w -> LLVMOverride p sym ext (((EmptyCtx :: Ctx CrucibleType) ::> BVType w) ::> BVType w) (BVType w)
- Lang.Crucible.LLVM.Intrinsics.LLVM: llvmSmin :: (1 <= w, IsSymInterface sym) => NatRepr w -> LLVMOverride p sym ext ((EmptyCtx ::> BVType w) ::> BVType w) (BVType w)
+ Lang.Crucible.LLVM.Intrinsics.LLVM: llvmSmin :: forall (w :: Natural) sym p ext. (1 <= w, IsSymInterface sym) => NatRepr w -> LLVMOverride p sym ext (((EmptyCtx :: Ctx CrucibleType) ::> BVType w) ::> BVType w) (BVType w)
- Lang.Crucible.LLVM.Intrinsics.LLVM: llvmSmulWithOverflow :: (1 <= w, IsSymInterface sym) => NatRepr w -> LLVMOverride p sym ext ((EmptyCtx ::> BVType w) ::> BVType w) (StructType ((EmptyCtx ::> BVType w) ::> BVType 1))
+ Lang.Crucible.LLVM.Intrinsics.LLVM: llvmSmulWithOverflow :: forall (w :: Natural) sym p ext. (1 <= w, IsSymInterface sym) => NatRepr w -> LLVMOverride p sym ext (((EmptyCtx :: Ctx CrucibleType) ::> BVType w) ::> BVType w) (StructType (((EmptyCtx :: Ctx CrucibleType) ::> BVType w) ::> BVType 1))
- Lang.Crucible.LLVM.Intrinsics.LLVM: llvmSqrtOverride_F32 :: IsSymInterface sym => LLVMOverride p sym ext (EmptyCtx ::> FloatType SingleFloat) (FloatType SingleFloat)
+ Lang.Crucible.LLVM.Intrinsics.LLVM: llvmSqrtOverride_F32 :: IsSymInterface sym => LLVMOverride p sym ext ((EmptyCtx :: Ctx CrucibleType) ::> FloatType SingleFloat) (FloatType SingleFloat)
- Lang.Crucible.LLVM.Intrinsics.LLVM: llvmSqrtOverride_F64 :: IsSymInterface sym => LLVMOverride p sym ext (EmptyCtx ::> FloatType DoubleFloat) (FloatType DoubleFloat)
+ Lang.Crucible.LLVM.Intrinsics.LLVM: llvmSqrtOverride_F64 :: IsSymInterface sym => LLVMOverride p sym ext ((EmptyCtx :: Ctx CrucibleType) ::> FloatType DoubleFloat) (FloatType DoubleFloat)
- Lang.Crucible.LLVM.Intrinsics.LLVM: llvmSsubWithOverflow :: (1 <= w, IsSymInterface sym) => NatRepr w -> LLVMOverride p sym ext ((EmptyCtx ::> BVType w) ::> BVType w) (StructType ((EmptyCtx ::> BVType w) ::> BVType 1))
+ Lang.Crucible.LLVM.Intrinsics.LLVM: llvmSsubWithOverflow :: forall (w :: Natural) sym p ext. (1 <= w, IsSymInterface sym) => NatRepr w -> LLVMOverride p sym ext (((EmptyCtx :: Ctx CrucibleType) ::> BVType w) ::> BVType w) (StructType (((EmptyCtx :: Ctx CrucibleType) ::> BVType w) ::> BVType 1))
- Lang.Crucible.LLVM.Intrinsics.LLVM: llvmStackrestore :: (IsSymInterface sym, HasPtrWidth wptr) => LLVMOverride p sym ext (EmptyCtx ::> LLVMPointerType wptr) UnitType
+ Lang.Crucible.LLVM.Intrinsics.LLVM: llvmStackrestore :: forall sym (wptr :: Natural) p ext. (IsSymInterface sym, HasPtrWidth wptr) => LLVMOverride p sym ext ((EmptyCtx :: Ctx CrucibleType) ::> LLVMPointerType wptr) UnitType
- Lang.Crucible.LLVM.Intrinsics.LLVM: llvmStacksave :: (IsSymInterface sym, HasPtrWidth wptr) => LLVMOverride p sym ext EmptyCtx (LLVMPointerType wptr)
+ Lang.Crucible.LLVM.Intrinsics.LLVM: llvmStacksave :: forall sym (wptr :: Natural) p ext. (IsSymInterface sym, HasPtrWidth wptr) => LLVMOverride p sym ext (EmptyCtx :: Ctx CrucibleType) (LLVMPointerType wptr)
- Lang.Crucible.LLVM.Intrinsics.LLVM: llvmTrapOverride :: IsSymInterface sym => LLVMOverride p sym ext EmptyCtx UnitType
+ Lang.Crucible.LLVM.Intrinsics.LLVM: llvmTrapOverride :: IsSymInterface sym => LLVMOverride p sym ext (EmptyCtx :: Ctx CrucibleType) UnitType
- Lang.Crucible.LLVM.Intrinsics.LLVM: llvmUBSanTrapOverride :: IsSymInterface sym => LLVMOverride p sym ext (EmptyCtx ::> BVType 8) UnitType
+ Lang.Crucible.LLVM.Intrinsics.LLVM: llvmUBSanTrapOverride :: IsSymInterface sym => LLVMOverride p sym ext ((EmptyCtx :: Ctx CrucibleType) ::> BVType 8) UnitType
- Lang.Crucible.LLVM.Intrinsics.LLVM: llvmUaddWithOverflow :: (1 <= w, IsSymInterface sym) => NatRepr w -> LLVMOverride p sym ext ((EmptyCtx ::> BVType w) ::> BVType w) (StructType ((EmptyCtx ::> BVType w) ::> BVType 1))
+ Lang.Crucible.LLVM.Intrinsics.LLVM: llvmUaddWithOverflow :: forall (w :: Natural) sym p ext. (1 <= w, IsSymInterface sym) => NatRepr w -> LLVMOverride p sym ext (((EmptyCtx :: Ctx CrucibleType) ::> BVType w) ::> BVType w) (StructType (((EmptyCtx :: Ctx CrucibleType) ::> BVType w) ::> BVType 1))
- Lang.Crucible.LLVM.Intrinsics.LLVM: llvmUmax :: (1 <= w, IsSymInterface sym) => NatRepr w -> LLVMOverride p sym ext ((EmptyCtx ::> BVType w) ::> BVType w) (BVType w)
+ Lang.Crucible.LLVM.Intrinsics.LLVM: llvmUmax :: forall (w :: Natural) sym p ext. (1 <= w, IsSymInterface sym) => NatRepr w -> LLVMOverride p sym ext (((EmptyCtx :: Ctx CrucibleType) ::> BVType w) ::> BVType w) (BVType w)
- Lang.Crucible.LLVM.Intrinsics.LLVM: llvmUmin :: (1 <= w, IsSymInterface sym) => NatRepr w -> LLVMOverride p sym ext ((EmptyCtx ::> BVType w) ::> BVType w) (BVType w)
+ Lang.Crucible.LLVM.Intrinsics.LLVM: llvmUmin :: forall (w :: Natural) sym p ext. (1 <= w, IsSymInterface sym) => NatRepr w -> LLVMOverride p sym ext (((EmptyCtx :: Ctx CrucibleType) ::> BVType w) ::> BVType w) (BVType w)
- Lang.Crucible.LLVM.Intrinsics.LLVM: llvmUmulWithOverflow :: (1 <= w, IsSymInterface sym) => NatRepr w -> LLVMOverride p sym ext ((EmptyCtx ::> BVType w) ::> BVType w) (StructType ((EmptyCtx ::> BVType w) ::> BVType 1))
+ Lang.Crucible.LLVM.Intrinsics.LLVM: llvmUmulWithOverflow :: forall (w :: Natural) sym p ext. (1 <= w, IsSymInterface sym) => NatRepr w -> LLVMOverride p sym ext (((EmptyCtx :: Ctx CrucibleType) ::> BVType w) ::> BVType w) (StructType (((EmptyCtx :: Ctx CrucibleType) ::> BVType w) ::> BVType 1))
- Lang.Crucible.LLVM.Intrinsics.LLVM: llvmUsubWithOverflow :: (1 <= w, IsSymInterface sym) => NatRepr w -> LLVMOverride p sym ext ((EmptyCtx ::> BVType w) ::> BVType w) (StructType ((EmptyCtx ::> BVType w) ::> BVType 1))
+ Lang.Crucible.LLVM.Intrinsics.LLVM: llvmUsubWithOverflow :: forall (w :: Natural) sym p ext. (1 <= w, IsSymInterface sym) => NatRepr w -> LLVMOverride p sym ext (((EmptyCtx :: Ctx CrucibleType) ::> BVType w) ::> BVType w) (StructType (((EmptyCtx :: Ctx CrucibleType) ::> BVType w) ::> BVType 1))
- Lang.Crucible.LLVM.Intrinsics.LLVM: llvmVectorReduce :: 1 <= intSz => String -> (forall r args ret. IsSymInterface sym => NatRepr intSz -> RegEntry sym (VectorType (BVType intSz)) -> OverrideSim p sym ext r args ret (SymBV sym intSz)) -> NatRepr vecSz -> NatRepr intSz -> LLVMOverride p sym ext (EmptyCtx ::> VectorType (BVType intSz)) (BVType intSz)
+ Lang.Crucible.LLVM.Intrinsics.LLVM: llvmVectorReduce :: forall (intSz :: Natural) sym p ext (vecSz :: Nat). 1 <= intSz => String -> (forall r (args :: Ctx CrucibleType) (ret :: CrucibleType). IsSymInterface sym => NatRepr intSz -> RegEntry sym (VectorType (BVType intSz)) -> OverrideSim p sym ext r args ret (SymBV sym intSz)) -> NatRepr vecSz -> NatRepr intSz -> LLVMOverride p sym ext ((EmptyCtx :: Ctx CrucibleType) ::> VectorType (BVType intSz)) (BVType intSz)
- Lang.Crucible.LLVM.Intrinsics.LLVM: llvmVectorReduceAdd :: 1 <= intSz => NatRepr vecSz -> NatRepr intSz -> LLVMOverride p sym ext (EmptyCtx ::> VectorType (BVType intSz)) (BVType intSz)
+ Lang.Crucible.LLVM.Intrinsics.LLVM: llvmVectorReduceAdd :: forall (intSz :: Natural) (vecSz :: Nat) p sym ext. 1 <= intSz => NatRepr vecSz -> NatRepr intSz -> LLVMOverride p sym ext ((EmptyCtx :: Ctx CrucibleType) ::> VectorType (BVType intSz)) (BVType intSz)
- Lang.Crucible.LLVM.Intrinsics.LLVM: llvmVectorReduceAnd :: 1 <= intSz => NatRepr vecSz -> NatRepr intSz -> LLVMOverride p sym ext (EmptyCtx ::> VectorType (BVType intSz)) (BVType intSz)
+ Lang.Crucible.LLVM.Intrinsics.LLVM: llvmVectorReduceAnd :: forall (intSz :: Natural) (vecSz :: Nat) p sym ext. 1 <= intSz => NatRepr vecSz -> NatRepr intSz -> LLVMOverride p sym ext ((EmptyCtx :: Ctx CrucibleType) ::> VectorType (BVType intSz)) (BVType intSz)
- Lang.Crucible.LLVM.Intrinsics.LLVM: llvmVectorReduceMul :: 1 <= intSz => NatRepr vecSz -> NatRepr intSz -> LLVMOverride p sym ext (EmptyCtx ::> VectorType (BVType intSz)) (BVType intSz)
+ Lang.Crucible.LLVM.Intrinsics.LLVM: llvmVectorReduceMul :: forall (intSz :: Natural) (vecSz :: Nat) p sym ext. 1 <= intSz => NatRepr vecSz -> NatRepr intSz -> LLVMOverride p sym ext ((EmptyCtx :: Ctx CrucibleType) ::> VectorType (BVType intSz)) (BVType intSz)
- Lang.Crucible.LLVM.Intrinsics.LLVM: llvmVectorReduceOr :: 1 <= intSz => NatRepr vecSz -> NatRepr intSz -> LLVMOverride p sym ext (EmptyCtx ::> VectorType (BVType intSz)) (BVType intSz)
+ Lang.Crucible.LLVM.Intrinsics.LLVM: llvmVectorReduceOr :: forall (intSz :: Natural) (vecSz :: Nat) p sym ext. 1 <= intSz => NatRepr vecSz -> NatRepr intSz -> LLVMOverride p sym ext ((EmptyCtx :: Ctx CrucibleType) ::> VectorType (BVType intSz)) (BVType intSz)
- Lang.Crucible.LLVM.Intrinsics.LLVM: llvmVectorReduceSmax :: 1 <= intSz => NatRepr vecSz -> NatRepr intSz -> LLVMOverride p sym ext (EmptyCtx ::> VectorType (BVType intSz)) (BVType intSz)
+ Lang.Crucible.LLVM.Intrinsics.LLVM: llvmVectorReduceSmax :: forall (intSz :: Natural) (vecSz :: Nat) p sym ext. 1 <= intSz => NatRepr vecSz -> NatRepr intSz -> LLVMOverride p sym ext ((EmptyCtx :: Ctx CrucibleType) ::> VectorType (BVType intSz)) (BVType intSz)
- Lang.Crucible.LLVM.Intrinsics.LLVM: llvmVectorReduceSmin :: 1 <= intSz => NatRepr vecSz -> NatRepr intSz -> LLVMOverride p sym ext (EmptyCtx ::> VectorType (BVType intSz)) (BVType intSz)
+ Lang.Crucible.LLVM.Intrinsics.LLVM: llvmVectorReduceSmin :: forall (intSz :: Natural) (vecSz :: Nat) p sym ext. 1 <= intSz => NatRepr vecSz -> NatRepr intSz -> LLVMOverride p sym ext ((EmptyCtx :: Ctx CrucibleType) ::> VectorType (BVType intSz)) (BVType intSz)
- Lang.Crucible.LLVM.Intrinsics.LLVM: llvmVectorReduceUmax :: 1 <= intSz => NatRepr vecSz -> NatRepr intSz -> LLVMOverride p sym ext (EmptyCtx ::> VectorType (BVType intSz)) (BVType intSz)
+ Lang.Crucible.LLVM.Intrinsics.LLVM: llvmVectorReduceUmax :: forall (intSz :: Natural) (vecSz :: Nat) p sym ext. 1 <= intSz => NatRepr vecSz -> NatRepr intSz -> LLVMOverride p sym ext ((EmptyCtx :: Ctx CrucibleType) ::> VectorType (BVType intSz)) (BVType intSz)
- Lang.Crucible.LLVM.Intrinsics.LLVM: llvmVectorReduceUmin :: 1 <= intSz => NatRepr vecSz -> NatRepr intSz -> LLVMOverride p sym ext (EmptyCtx ::> VectorType (BVType intSz)) (BVType intSz)
+ Lang.Crucible.LLVM.Intrinsics.LLVM: llvmVectorReduceUmin :: forall (intSz :: Natural) (vecSz :: Nat) p sym ext. 1 <= intSz => NatRepr vecSz -> NatRepr intSz -> LLVMOverride p sym ext ((EmptyCtx :: Ctx CrucibleType) ::> VectorType (BVType intSz)) (BVType intSz)
- Lang.Crucible.LLVM.Intrinsics.LLVM: llvmVectorReduceXor :: 1 <= intSz => NatRepr vecSz -> NatRepr intSz -> LLVMOverride p sym ext (EmptyCtx ::> VectorType (BVType intSz)) (BVType intSz)
+ Lang.Crucible.LLVM.Intrinsics.LLVM: llvmVectorReduceXor :: forall (intSz :: Natural) (vecSz :: Nat) p sym ext. 1 <= intSz => NatRepr vecSz -> NatRepr intSz -> LLVMOverride p sym ext ((EmptyCtx :: Ctx CrucibleType) ::> VectorType (BVType intSz)) (BVType intSz)
- Lang.Crucible.LLVM.Intrinsics.LLVM: llvmX86_SSE2_storeu_dq :: (IsSymInterface sym, HasLLVMAnn sym, HasPtrWidth wptr, ?memOpts :: MemOptions) => LLVMOverride p sym ext ((EmptyCtx ::> LLVMPointerType wptr) ::> VectorType (BVType 8)) UnitType
+ Lang.Crucible.LLVM.Intrinsics.LLVM: llvmX86_SSE2_storeu_dq :: forall sym (wptr :: Natural) p ext. (IsSymInterface sym, HasLLVMAnn sym, HasPtrWidth wptr, ?memOpts :: MemOptions) => LLVMOverride p sym ext (((EmptyCtx :: Ctx CrucibleType) ::> LLVMPointerType wptr) ::> VectorType (BVType 8)) UnitType
- Lang.Crucible.LLVM.Intrinsics.LLVM: llvmX86_pclmulqdq :: (IsSymInterface sym, HasPtrWidth wptr) => LLVMOverride p sym ext (((EmptyCtx ::> VectorType (BVType 64)) ::> VectorType (BVType 64)) ::> BVType 8) (VectorType (BVType 64))
+ Lang.Crucible.LLVM.Intrinsics.LLVM: llvmX86_pclmulqdq :: forall sym (wptr :: Natural) p ext. (IsSymInterface sym, HasPtrWidth wptr) => LLVMOverride p sym ext ((((EmptyCtx :: Ctx CrucibleType) ::> VectorType (BVType 64)) ::> VectorType (BVType 64)) ::> BVType 8) (VectorType (BVType 64))
- Lang.Crucible.LLVM.Intrinsics.LLVM: mkNull :: (IsSymInterface sym, HasPtrWidth wptr) => OverrideSim p sym ext rtp args ret (LLVMPtr sym wptr)
+ Lang.Crucible.LLVM.Intrinsics.LLVM: mkNull :: forall sym (wptr :: Natural) p ext rtp (args :: Ctx CrucibleType) (ret :: CrucibleType). (IsSymInterface sym, HasPtrWidth wptr) => OverrideSim p sym ext rtp args ret (LLVMPtr sym wptr)
- Lang.Crucible.LLVM.Intrinsics.LLVM: poly1_llvm_overrides :: (IsSymInterface sym, HasLLVMAnn sym, HasPtrWidth wptr, ?lc :: TypeContext, ?memOpts :: MemOptions) => [(String, Poly1LLVMOverride p sym ext)]
+ Lang.Crucible.LLVM.Intrinsics.LLVM: poly1_llvm_overrides :: forall sym (wptr :: Natural) p ext. (IsSymInterface sym, HasLLVMAnn sym, HasPtrWidth wptr, ?lc :: TypeContext, ?memOpts :: MemOptions) => [(String, Poly1LLVMOverride p sym ext)]
- Lang.Crucible.LLVM.Intrinsics.Libc: callAbs :: forall w p sym ext r args ret. (1 <= w, IsSymInterface sym, HasLLVMAnn sym) => CallStack -> CheckAbsIntMin -> NatRepr w -> RegEntry sym (BVType w) -> OverrideSim p sym ext r args ret (RegValue sym (BVType w))
+ Lang.Crucible.LLVM.Intrinsics.Libc: callAbs :: forall (w :: Natural) p sym ext r (args :: Ctx CrucibleType) (ret :: CrucibleType). (1 <= w, IsSymInterface sym, HasLLVMAnn sym) => CallStack -> CheckAbsIntMin -> NatRepr w -> RegEntry sym (BVType w) -> OverrideSim p sym ext r args ret (RegValue sym (BVType w))
- Lang.Crucible.LLVM.Intrinsics.Libc: callAssert :: (IsSymInterface sym, HasPtrWidth wptr, HasLLVMAnn sym, ?intrinsicsOpts :: IntrinsicsOptions, ?memOpts :: MemOptions) => GlobalVar Mem -> Assignment (RegEntry sym) ((((EmptyCtx ::> LLVMPointerType wptr) ::> LLVMPointerType wptr) ::> BVType 32) ::> LLVMPointerType wptr) -> forall r args reg. OverrideSim p sym ext r args reg (RegValue sym UnitType)
+ Lang.Crucible.LLVM.Intrinsics.Libc: callAssert :: forall sym (wptr :: Natural) p ext. (IsSymInterface sym, HasPtrWidth wptr, HasLLVMAnn sym, ?intrinsicsOpts :: IntrinsicsOptions, ?memOpts :: MemOptions) => GlobalVar Mem -> Assignment (RegEntry sym) (((((EmptyCtx :: Ctx CrucibleType) ::> LLVMPointerType wptr) ::> LLVMPointerType wptr) ::> BVType 32) ::> LLVMPointerType wptr) -> forall r (args :: Ctx CrucibleType) (reg :: CrucibleType). () => OverrideSim p sym ext r args reg (RegValue sym UnitType)
- Lang.Crucible.LLVM.Intrinsics.Libc: callBSwap :: (1 <= width, IsSymInterface sym) => NatRepr width -> RegEntry sym (BVType (width * 8)) -> OverrideSim p sym ext r args ret (RegValue sym (BVType (width * 8)))
+ Lang.Crucible.LLVM.Intrinsics.Libc: callBSwap :: forall (width :: Natural) sym p ext r (args :: Ctx CrucibleType) (ret :: CrucibleType). (1 <= width, IsSymInterface sym) => NatRepr width -> RegEntry sym (BVType (width * 8)) -> OverrideSim p sym ext r args ret (RegValue sym (BVType (width * 8)))
- Lang.Crucible.LLVM.Intrinsics.Libc: callBSwapIfLittleEndian :: (1 <= width, IsSymInterface sym, ?lc :: TypeContext) => NatRepr width -> RegEntry sym (BVType (width * 8)) -> OverrideSim p sym ext r args ret (RegValue sym (BVType (width * 8)))
+ Lang.Crucible.LLVM.Intrinsics.Libc: callBSwapIfLittleEndian :: forall (width :: Natural) sym p ext r (args :: Ctx CrucibleType) (ret :: CrucibleType). (1 <= width, IsSymInterface sym, ?lc :: TypeContext) => NatRepr width -> RegEntry sym (BVType (width * 8)) -> OverrideSim p sym ext r args ret (RegValue sym (BVType (width * 8)))
- Lang.Crucible.LLVM.Intrinsics.Libc: callCalloc :: (IsSymInterface sym, HasLLVMAnn sym, HasPtrWidth wptr, ?memOpts :: MemOptions) => GlobalVar Mem -> Alignment -> RegEntry sym (BVType wptr) -> RegEntry sym (BVType wptr) -> OverrideSim p sym ext r args ret (RegValue sym (LLVMPointerType wptr))
+ Lang.Crucible.LLVM.Intrinsics.Libc: callCalloc :: forall sym (wptr :: Natural) p ext r (args :: Ctx CrucibleType) (ret :: CrucibleType). (IsSymInterface sym, HasLLVMAnn sym, HasPtrWidth wptr, ?memOpts :: MemOptions) => GlobalVar Mem -> Alignment -> RegEntry sym (BVType wptr) -> RegEntry sym (BVType wptr) -> OverrideSim p sym ext r args ret (RegValue sym (LLVMPointerType wptr))
- Lang.Crucible.LLVM.Intrinsics.Libc: callCeil :: forall fi p sym ext r args ret. IsSymInterface sym => RegEntry sym (FloatType fi) -> OverrideSim p sym ext r args ret (RegValue sym (FloatType fi))
+ Lang.Crucible.LLVM.Intrinsics.Libc: callCeil :: forall (fi :: FloatInfo) p sym ext r (args :: Ctx CrucibleType) (ret :: CrucibleType). IsSymInterface sym => RegEntry sym (FloatType fi) -> OverrideSim p sym ext r args ret (RegValue sym (FloatType fi))
- Lang.Crucible.LLVM.Intrinsics.Libc: callExit :: (IsSymInterface sym, ?intrinsicsOpts :: IntrinsicsOptions) => RegEntry sym (BVType 32) -> OverrideSim p sym ext r args ret (RegValue sym UnitType)
+ Lang.Crucible.LLVM.Intrinsics.Libc: callExit :: forall sym p ext r (args :: Ctx CrucibleType) (ret :: CrucibleType). (IsSymInterface sym, ?intrinsicsOpts :: IntrinsicsOptions) => RegEntry sym (BVType 32) -> OverrideSim p sym ext r args ret (RegValue sym UnitType)
- Lang.Crucible.LLVM.Intrinsics.Libc: callFMA :: forall fi p sym ext r args ret. IsSymInterface sym => RegEntry sym (FloatType fi) -> RegEntry sym (FloatType fi) -> RegEntry sym (FloatType fi) -> OverrideSim p sym ext r args ret (RegValue sym (FloatType fi))
+ Lang.Crucible.LLVM.Intrinsics.Libc: callFMA :: forall (fi :: FloatInfo) p sym ext r (args :: Ctx CrucibleType) (ret :: CrucibleType). IsSymInterface sym => RegEntry sym (FloatType fi) -> RegEntry sym (FloatType fi) -> RegEntry sym (FloatType fi) -> OverrideSim p sym ext r args ret (RegValue sym (FloatType fi))
- Lang.Crucible.LLVM.Intrinsics.Libc: callFloor :: forall fi p sym ext r args ret. IsSymInterface sym => RegEntry sym (FloatType fi) -> OverrideSim p sym ext r args ret (RegValue sym (FloatType fi))
+ Lang.Crucible.LLVM.Intrinsics.Libc: callFloor :: forall (fi :: FloatInfo) p sym ext r (args :: Ctx CrucibleType) (ret :: CrucibleType). IsSymInterface sym => RegEntry sym (FloatType fi) -> OverrideSim p sym ext r args ret (RegValue sym (FloatType fi))
- Lang.Crucible.LLVM.Intrinsics.Libc: callFree :: (IsSymInterface sym, HasLLVMAnn sym, HasPtrWidth wptr) => GlobalVar Mem -> RegEntry sym (LLVMPointerType wptr) -> OverrideSim p sym ext r args ret ()
+ Lang.Crucible.LLVM.Intrinsics.Libc: callFree :: forall sym (wptr :: Natural) p ext r (args :: Ctx CrucibleType) (ret :: CrucibleType). (IsSymInterface sym, HasLLVMAnn sym, HasPtrWidth wptr) => GlobalVar Mem -> RegEntry sym (LLVMPointerType wptr) -> OverrideSim p sym ext r args ret ()
- Lang.Crucible.LLVM.Intrinsics.Libc: callIsinf :: forall fi w p sym ext r args ret. (IsSymInterface sym, 1 <= w) => NatRepr w -> RegEntry sym (FloatType fi) -> OverrideSim p sym ext r args ret (RegValue sym (BVType w))
+ Lang.Crucible.LLVM.Intrinsics.Libc: callIsinf :: forall (fi :: FloatInfo) (w :: Natural) p sym ext r (args :: Ctx CrucibleType) (ret :: CrucibleType). (IsSymInterface sym, 1 <= w) => NatRepr w -> RegEntry sym (FloatType fi) -> OverrideSim p sym ext r args ret (RegValue sym (BVType w))
- Lang.Crucible.LLVM.Intrinsics.Libc: callIsnan :: forall fi w p sym ext r args ret. (IsSymInterface sym, 1 <= w) => NatRepr w -> RegEntry sym (FloatType fi) -> OverrideSim p sym ext r args ret (RegValue sym (BVType w))
+ Lang.Crucible.LLVM.Intrinsics.Libc: callIsnan :: forall (fi :: FloatInfo) (w :: Natural) p sym ext r (args :: Ctx CrucibleType) (ret :: CrucibleType). (IsSymInterface sym, 1 <= w) => NatRepr w -> RegEntry sym (FloatType fi) -> OverrideSim p sym ext r args ret (RegValue sym (BVType w))
- Lang.Crucible.LLVM.Intrinsics.Libc: callLLVMAbs :: (1 <= w, IsSymInterface sym, HasLLVMAnn sym) => CallStack -> NatRepr w -> RegEntry sym (BVType w) -> RegEntry sym (BVType 1) -> OverrideSim p sym ext r args ret (RegValue sym (BVType w))
+ Lang.Crucible.LLVM.Intrinsics.Libc: callLLVMAbs :: forall (w :: Natural) sym p ext r (args :: Ctx CrucibleType) (ret :: CrucibleType). (1 <= w, IsSymInterface sym, HasLLVMAnn sym) => CallStack -> NatRepr w -> RegEntry sym (BVType w) -> RegEntry sym (BVType 1) -> OverrideSim p sym ext r args ret (RegValue sym (BVType w))
- Lang.Crucible.LLVM.Intrinsics.Libc: callLibcAbs :: (1 <= w, IsSymInterface sym, HasLLVMAnn sym) => CallStack -> NatRepr w -> RegEntry sym (BVType w) -> OverrideSim p sym ext r args ret (RegValue sym (BVType w))
+ Lang.Crucible.LLVM.Intrinsics.Libc: callLibcAbs :: forall (w :: Natural) sym p ext r (args :: Ctx CrucibleType) (ret :: CrucibleType). (1 <= w, IsSymInterface sym, HasLLVMAnn sym) => CallStack -> NatRepr w -> RegEntry sym (BVType w) -> OverrideSim p sym ext r args ret (RegValue sym (BVType w))
- Lang.Crucible.LLVM.Intrinsics.Libc: callMalloc :: (IsSymInterface sym, HasLLVMAnn sym, HasPtrWidth wptr, ?memOpts :: MemOptions) => GlobalVar Mem -> Alignment -> RegEntry sym (BVType wptr) -> OverrideSim p sym ext r args ret (RegValue sym (LLVMPointerType wptr))
+ Lang.Crucible.LLVM.Intrinsics.Libc: callMalloc :: forall sym (wptr :: Natural) p ext r (args :: Ctx CrucibleType) (ret :: CrucibleType). (IsSymInterface sym, HasLLVMAnn sym, HasPtrWidth wptr, ?memOpts :: MemOptions) => GlobalVar Mem -> Alignment -> RegEntry sym (BVType wptr) -> OverrideSim p sym ext r args ret (RegValue sym (LLVMPointerType wptr))
- Lang.Crucible.LLVM.Intrinsics.Libc: callMemcpy :: (IsSymInterface sym, HasLLVMAnn sym, HasPtrWidth wptr, ?memOpts :: MemOptions) => GlobalVar Mem -> RegEntry sym (LLVMPointerType wptr) -> RegEntry sym (LLVMPointerType wptr) -> RegEntry sym (BVType w) -> RegEntry sym (BVType 1) -> OverrideSim p sym ext r args ret ()
+ Lang.Crucible.LLVM.Intrinsics.Libc: callMemcpy :: forall sym (wptr :: Natural) (w :: Nat) p ext r (args :: Ctx CrucibleType) (ret :: CrucibleType). (IsSymInterface sym, HasLLVMAnn sym, HasPtrWidth wptr, ?memOpts :: MemOptions) => GlobalVar Mem -> RegEntry sym (LLVMPointerType wptr) -> RegEntry sym (LLVMPointerType wptr) -> RegEntry sym (BVType w) -> RegEntry sym (BVType 1) -> OverrideSim p sym ext r args ret ()
- Lang.Crucible.LLVM.Intrinsics.Libc: callMemmove :: (IsSymInterface sym, HasLLVMAnn sym, HasPtrWidth wptr, ?memOpts :: MemOptions) => GlobalVar Mem -> RegEntry sym (LLVMPointerType wptr) -> RegEntry sym (LLVMPointerType wptr) -> RegEntry sym (BVType w) -> RegEntry sym (BVType 1) -> OverrideSim p sym ext r args ret ()
+ Lang.Crucible.LLVM.Intrinsics.Libc: callMemmove :: forall sym (wptr :: Natural) (w :: Nat) p ext r (args :: Ctx CrucibleType) (ret :: CrucibleType). (IsSymInterface sym, HasLLVMAnn sym, HasPtrWidth wptr, ?memOpts :: MemOptions) => GlobalVar Mem -> RegEntry sym (LLVMPointerType wptr) -> RegEntry sym (LLVMPointerType wptr) -> RegEntry sym (BVType w) -> RegEntry sym (BVType 1) -> OverrideSim p sym ext r args ret ()
- Lang.Crucible.LLVM.Intrinsics.Libc: callMemset :: (IsSymInterface sym, HasLLVMAnn sym, HasPtrWidth wptr) => GlobalVar Mem -> RegEntry sym (LLVMPointerType wptr) -> RegEntry sym (BVType 8) -> RegEntry sym (BVType w) -> RegEntry sym (BVType 1) -> OverrideSim p sym ext r args ret ()
+ Lang.Crucible.LLVM.Intrinsics.Libc: callMemset :: forall sym (wptr :: Natural) (w :: Nat) p ext r (args :: Ctx CrucibleType) (ret :: CrucibleType). (IsSymInterface sym, HasLLVMAnn sym, HasPtrWidth wptr) => GlobalVar Mem -> RegEntry sym (LLVMPointerType wptr) -> RegEntry sym (BVType 8) -> RegEntry sym (BVType w) -> RegEntry sym (BVType 1) -> OverrideSim p sym ext r args ret ()
- Lang.Crucible.LLVM.Intrinsics.Libc: callPosixMemalign :: (IsSymInterface sym, HasLLVMAnn sym, HasPtrWidth wptr, ?lc :: TypeContext, ?memOpts :: MemOptions) => GlobalVar Mem -> RegEntry sym (LLVMPointerType wptr) -> RegEntry sym (BVType wptr) -> RegEntry sym (BVType wptr) -> OverrideSim p sym ext r args ret (RegValue sym (BVType 32))
+ Lang.Crucible.LLVM.Intrinsics.Libc: callPosixMemalign :: forall sym (wptr :: Natural) p ext r (args :: Ctx CrucibleType) (ret :: CrucibleType). (IsSymInterface sym, HasLLVMAnn sym, HasPtrWidth wptr, ?lc :: TypeContext, ?memOpts :: MemOptions) => GlobalVar Mem -> RegEntry sym (LLVMPointerType wptr) -> RegEntry sym (BVType wptr) -> RegEntry sym (BVType wptr) -> OverrideSim p sym ext r args ret (RegValue sym (BVType 32))
- Lang.Crucible.LLVM.Intrinsics.Libc: callPrintf :: (IsSymInterface sym, HasPtrWidth wptr, HasLLVMAnn sym, ?memOpts :: MemOptions) => GlobalVar Mem -> RegEntry sym (LLVMPointerType wptr) -> RegEntry sym (VectorType AnyType) -> OverrideSim p sym ext r args ret (RegValue sym (BVType 32))
+ Lang.Crucible.LLVM.Intrinsics.Libc: callPrintf :: forall sym (wptr :: Natural) p ext r (args :: Ctx CrucibleType) (ret :: CrucibleType). (IsSymInterface sym, HasPtrWidth wptr, HasLLVMAnn sym, ?memOpts :: MemOptions) => GlobalVar Mem -> RegEntry sym (LLVMPointerType wptr) -> RegEntry sym (VectorType AnyType) -> OverrideSim p sym ext r args ret (RegValue sym (BVType 32))
- Lang.Crucible.LLVM.Intrinsics.Libc: callPutChar :: IsSymInterface sym => GlobalVar Mem -> RegEntry sym (BVType 32) -> OverrideSim p sym ext r args ret (RegValue sym (BVType 32))
+ Lang.Crucible.LLVM.Intrinsics.Libc: callPutChar :: forall sym p ext r (args :: Ctx CrucibleType) (ret :: CrucibleType). IsSymInterface sym => GlobalVar Mem -> RegEntry sym (BVType 32) -> OverrideSim p sym ext r args ret (RegValue sym (BVType 32))
- Lang.Crucible.LLVM.Intrinsics.Libc: callPuts :: (IsSymInterface sym, HasPtrWidth wptr, HasLLVMAnn sym, ?memOpts :: MemOptions) => GlobalVar Mem -> RegEntry sym (LLVMPointerType wptr) -> OverrideSim p sym ext r args ret (RegValue sym (BVType 32))
+ Lang.Crucible.LLVM.Intrinsics.Libc: callPuts :: forall sym (wptr :: Natural) p ext r (args :: Ctx CrucibleType) (ret :: CrucibleType). (IsSymInterface sym, HasPtrWidth wptr, HasLLVMAnn sym, ?memOpts :: MemOptions) => GlobalVar Mem -> RegEntry sym (LLVMPointerType wptr) -> OverrideSim p sym ext r args ret (RegValue sym (BVType 32))
- Lang.Crucible.LLVM.Intrinsics.Libc: callRealloc :: (IsSymInterface sym, HasPtrWidth wptr, HasLLVMAnn sym, ?memOpts :: MemOptions) => GlobalVar Mem -> Alignment -> RegEntry sym (LLVMPointerType wptr) -> RegEntry sym (BVType wptr) -> OverrideSim p sym ext r args ret (RegValue sym (LLVMPointerType wptr))
+ Lang.Crucible.LLVM.Intrinsics.Libc: callRealloc :: forall sym (wptr :: Natural) p ext r (args :: Ctx CrucibleType) (ret :: CrucibleType). (IsSymInterface sym, HasPtrWidth wptr, HasLLVMAnn sym, ?memOpts :: MemOptions) => GlobalVar Mem -> Alignment -> RegEntry sym (LLVMPointerType wptr) -> RegEntry sym (BVType wptr) -> OverrideSim p sym ext r args ret (RegValue sym (LLVMPointerType wptr))
- Lang.Crucible.LLVM.Intrinsics.Libc: callSpecialFunction1 :: forall fi p sym ext r args ret. (IsSymInterface sym, KnownRepr FloatInfoRepr fi) => SpecialFunction (EmptyCtx ::> R) -> RegEntry sym (FloatType fi) -> OverrideSim p sym ext r args ret (RegValue sym (FloatType fi))
+ Lang.Crucible.LLVM.Intrinsics.Libc: callSpecialFunction1 :: forall (fi :: FloatInfo) p sym ext r (args :: Ctx CrucibleType) (ret :: CrucibleType). (IsSymInterface sym, KnownRepr FloatInfoRepr fi) => SpecialFunction ((EmptyCtx :: Ctx Type) ::> R) -> RegEntry sym (FloatType fi) -> OverrideSim p sym ext r args ret (RegValue sym (FloatType fi))
- Lang.Crucible.LLVM.Intrinsics.Libc: callSpecialFunction2 :: forall fi p sym ext r args ret. (IsSymInterface sym, KnownRepr FloatInfoRepr fi) => SpecialFunction ((EmptyCtx ::> R) ::> R) -> RegEntry sym (FloatType fi) -> RegEntry sym (FloatType fi) -> OverrideSim p sym ext r args ret (RegValue sym (FloatType fi))
+ Lang.Crucible.LLVM.Intrinsics.Libc: callSpecialFunction2 :: forall (fi :: FloatInfo) p sym ext r (args :: Ctx CrucibleType) (ret :: CrucibleType). (IsSymInterface sym, KnownRepr FloatInfoRepr fi) => SpecialFunction (((EmptyCtx :: Ctx Type) ::> R) ::> R) -> RegEntry sym (FloatType fi) -> RegEntry sym (FloatType fi) -> OverrideSim p sym ext r args ret (RegValue sym (FloatType fi))
- Lang.Crucible.LLVM.Intrinsics.Libc: callSqrt :: forall fi p sym ext r args ret. IsSymInterface sym => RegEntry sym (FloatType fi) -> OverrideSim p sym ext r args ret (RegValue sym (FloatType fi))
+ Lang.Crucible.LLVM.Intrinsics.Libc: callSqrt :: forall (fi :: FloatInfo) p sym ext r (args :: Ctx CrucibleType) (ret :: CrucibleType). IsSymInterface sym => RegEntry sym (FloatType fi) -> OverrideSim p sym ext r args ret (RegValue sym (FloatType fi))
- Lang.Crucible.LLVM.Intrinsics.Libc: callStrlen :: (IsSymInterface sym, HasPtrWidth wptr, HasLLVMAnn sym, ?memOpts :: MemOptions) => GlobalVar Mem -> RegEntry sym (LLVMPointerType wptr) -> OverrideSim p sym ext r args ret (RegValue sym (BVType wptr))
+ Lang.Crucible.LLVM.Intrinsics.Libc: callStrlen :: forall sym (wptr :: Natural) p ext r (args :: Ctx CrucibleType) (ret :: CrucibleType). (IsSymInterface sym, HasPtrWidth wptr, HasLLVMAnn sym, ?memOpts :: MemOptions) => GlobalVar Mem -> RegEntry sym (LLVMPointerType wptr) -> OverrideSim p sym ext r args ret (RegValue sym (BVType wptr))
- Lang.Crucible.LLVM.Intrinsics.Libc: cxa_atexitOverride :: (IsSymInterface sym, HasPtrWidth wptr) => LLVMOverride p sym ext (((EmptyCtx ::> LLVMPointerType wptr) ::> LLVMPointerType wptr) ::> LLVMPointerType wptr) (BVType 32)
+ Lang.Crucible.LLVM.Intrinsics.Libc: cxa_atexitOverride :: forall sym (wptr :: Natural) p ext. (IsSymInterface sym, HasPtrWidth wptr) => LLVMOverride p sym ext ((((EmptyCtx :: Ctx CrucibleType) ::> LLVMPointerType wptr) ::> LLVMPointerType wptr) ::> LLVMPointerType wptr) (BVType 32)
- Lang.Crucible.LLVM.Intrinsics.Libc: libc_overrides :: (IsSymInterface sym, HasLLVMAnn sym, HasPtrWidth wptr, ?lc :: TypeContext, ?intrinsicsOpts :: IntrinsicsOptions, ?memOpts :: MemOptions) => [SomeLLVMOverride p sym ext]
+ Lang.Crucible.LLVM.Intrinsics.Libc: libc_overrides :: forall sym (wptr :: Natural) p ext. (IsSymInterface sym, HasLLVMAnn sym, HasPtrWidth wptr, ?lc :: TypeContext, ?intrinsicsOpts :: IntrinsicsOptions, ?memOpts :: MemOptions) => [SomeLLVMOverride p sym ext]
- Lang.Crucible.LLVM.Intrinsics.Libc: llvmAbortOverride :: (IsSymInterface sym, ?intrinsicsOpts :: IntrinsicsOptions) => LLVMOverride p sym ext EmptyCtx UnitType
+ Lang.Crucible.LLVM.Intrinsics.Libc: llvmAbortOverride :: (IsSymInterface sym, ?intrinsicsOpts :: IntrinsicsOptions) => LLVMOverride p sym ext (EmptyCtx :: Ctx CrucibleType) UnitType
- Lang.Crucible.LLVM.Intrinsics.Libc: llvmAbsOverride :: (IsSymInterface sym, HasLLVMAnn sym) => LLVMOverride p sym ext (EmptyCtx ::> BVType 32) (BVType 32)
+ Lang.Crucible.LLVM.Intrinsics.Libc: llvmAbsOverride :: (IsSymInterface sym, HasLLVMAnn sym) => LLVMOverride p sym ext ((EmptyCtx :: Ctx CrucibleType) ::> BVType 32) (BVType 32)
- Lang.Crucible.LLVM.Intrinsics.Libc: llvmAcosOverride :: IsSymInterface sym => LLVMOverride p sym ext (EmptyCtx ::> FloatType DoubleFloat) (FloatType DoubleFloat)
+ Lang.Crucible.LLVM.Intrinsics.Libc: llvmAcosOverride :: IsSymInterface sym => LLVMOverride p sym ext ((EmptyCtx :: Ctx CrucibleType) ::> FloatType DoubleFloat) (FloatType DoubleFloat)
- Lang.Crucible.LLVM.Intrinsics.Libc: llvmAcosfOverride :: IsSymInterface sym => LLVMOverride p sym ext (EmptyCtx ::> FloatType SingleFloat) (FloatType SingleFloat)
+ Lang.Crucible.LLVM.Intrinsics.Libc: llvmAcosfOverride :: IsSymInterface sym => LLVMOverride p sym ext ((EmptyCtx :: Ctx CrucibleType) ::> FloatType SingleFloat) (FloatType SingleFloat)
- Lang.Crucible.LLVM.Intrinsics.Libc: llvmAcoshOverride :: IsSymInterface sym => LLVMOverride p sym ext (EmptyCtx ::> FloatType DoubleFloat) (FloatType DoubleFloat)
+ Lang.Crucible.LLVM.Intrinsics.Libc: llvmAcoshOverride :: IsSymInterface sym => LLVMOverride p sym ext ((EmptyCtx :: Ctx CrucibleType) ::> FloatType DoubleFloat) (FloatType DoubleFloat)
- Lang.Crucible.LLVM.Intrinsics.Libc: llvmAcoshfOverride :: IsSymInterface sym => LLVMOverride p sym ext (EmptyCtx ::> FloatType SingleFloat) (FloatType SingleFloat)
+ Lang.Crucible.LLVM.Intrinsics.Libc: llvmAcoshfOverride :: IsSymInterface sym => LLVMOverride p sym ext ((EmptyCtx :: Ctx CrucibleType) ::> FloatType SingleFloat) (FloatType SingleFloat)
- Lang.Crucible.LLVM.Intrinsics.Libc: llvmAsinOverride :: IsSymInterface sym => LLVMOverride p sym ext (EmptyCtx ::> FloatType DoubleFloat) (FloatType DoubleFloat)
+ Lang.Crucible.LLVM.Intrinsics.Libc: llvmAsinOverride :: IsSymInterface sym => LLVMOverride p sym ext ((EmptyCtx :: Ctx CrucibleType) ::> FloatType DoubleFloat) (FloatType DoubleFloat)
- Lang.Crucible.LLVM.Intrinsics.Libc: llvmAsinfOverride :: IsSymInterface sym => LLVMOverride p sym ext (EmptyCtx ::> FloatType SingleFloat) (FloatType SingleFloat)
+ Lang.Crucible.LLVM.Intrinsics.Libc: llvmAsinfOverride :: IsSymInterface sym => LLVMOverride p sym ext ((EmptyCtx :: Ctx CrucibleType) ::> FloatType SingleFloat) (FloatType SingleFloat)
- Lang.Crucible.LLVM.Intrinsics.Libc: llvmAsinhOverride :: IsSymInterface sym => LLVMOverride p sym ext (EmptyCtx ::> FloatType DoubleFloat) (FloatType DoubleFloat)
+ Lang.Crucible.LLVM.Intrinsics.Libc: llvmAsinhOverride :: IsSymInterface sym => LLVMOverride p sym ext ((EmptyCtx :: Ctx CrucibleType) ::> FloatType DoubleFloat) (FloatType DoubleFloat)
- Lang.Crucible.LLVM.Intrinsics.Libc: llvmAsinhfOverride :: IsSymInterface sym => LLVMOverride p sym ext (EmptyCtx ::> FloatType SingleFloat) (FloatType SingleFloat)
+ Lang.Crucible.LLVM.Intrinsics.Libc: llvmAsinhfOverride :: IsSymInterface sym => LLVMOverride p sym ext ((EmptyCtx :: Ctx CrucibleType) ::> FloatType SingleFloat) (FloatType SingleFloat)
- Lang.Crucible.LLVM.Intrinsics.Libc: llvmAssertFailOverride :: (IsSymInterface sym, HasPtrWidth wptr, HasLLVMAnn sym, ?intrinsicsOpts :: IntrinsicsOptions, ?memOpts :: MemOptions) => LLVMOverride p sym ext ((((EmptyCtx ::> LLVMPointerType wptr) ::> LLVMPointerType wptr) ::> BVType 32) ::> LLVMPointerType wptr) UnitType
+ Lang.Crucible.LLVM.Intrinsics.Libc: llvmAssertFailOverride :: forall sym (wptr :: Natural) p ext. (IsSymInterface sym, HasPtrWidth wptr, HasLLVMAnn sym, ?intrinsicsOpts :: IntrinsicsOptions, ?memOpts :: MemOptions) => LLVMOverride p sym ext (((((EmptyCtx :: Ctx CrucibleType) ::> LLVMPointerType wptr) ::> LLVMPointerType wptr) ::> BVType 32) ::> LLVMPointerType wptr) UnitType
- Lang.Crucible.LLVM.Intrinsics.Libc: llvmAssertRtnOverride :: (IsSymInterface sym, HasPtrWidth wptr, HasLLVMAnn sym, ?intrinsicsOpts :: IntrinsicsOptions, ?memOpts :: MemOptions) => LLVMOverride p sym ext ((((EmptyCtx ::> LLVMPointerType wptr) ::> LLVMPointerType wptr) ::> BVType 32) ::> LLVMPointerType wptr) UnitType
+ Lang.Crucible.LLVM.Intrinsics.Libc: llvmAssertRtnOverride :: forall sym (wptr :: Natural) p ext. (IsSymInterface sym, HasPtrWidth wptr, HasLLVMAnn sym, ?intrinsicsOpts :: IntrinsicsOptions, ?memOpts :: MemOptions) => LLVMOverride p sym ext (((((EmptyCtx :: Ctx CrucibleType) ::> LLVMPointerType wptr) ::> LLVMPointerType wptr) ::> BVType 32) ::> LLVMPointerType wptr) UnitType
- Lang.Crucible.LLVM.Intrinsics.Libc: llvmAtan2Override :: IsSymInterface sym => LLVMOverride p sym ext ((EmptyCtx ::> FloatType DoubleFloat) ::> FloatType DoubleFloat) (FloatType DoubleFloat)
+ Lang.Crucible.LLVM.Intrinsics.Libc: llvmAtan2Override :: IsSymInterface sym => LLVMOverride p sym ext (((EmptyCtx :: Ctx CrucibleType) ::> FloatType DoubleFloat) ::> FloatType DoubleFloat) (FloatType DoubleFloat)
- Lang.Crucible.LLVM.Intrinsics.Libc: llvmAtan2fOverride :: IsSymInterface sym => LLVMOverride p sym ext ((EmptyCtx ::> FloatType SingleFloat) ::> FloatType SingleFloat) (FloatType SingleFloat)
+ Lang.Crucible.LLVM.Intrinsics.Libc: llvmAtan2fOverride :: IsSymInterface sym => LLVMOverride p sym ext (((EmptyCtx :: Ctx CrucibleType) ::> FloatType SingleFloat) ::> FloatType SingleFloat) (FloatType SingleFloat)
- Lang.Crucible.LLVM.Intrinsics.Libc: llvmAtanOverride :: IsSymInterface sym => LLVMOverride p sym ext (EmptyCtx ::> FloatType DoubleFloat) (FloatType DoubleFloat)
+ Lang.Crucible.LLVM.Intrinsics.Libc: llvmAtanOverride :: IsSymInterface sym => LLVMOverride p sym ext ((EmptyCtx :: Ctx CrucibleType) ::> FloatType DoubleFloat) (FloatType DoubleFloat)
- Lang.Crucible.LLVM.Intrinsics.Libc: llvmAtanfOverride :: IsSymInterface sym => LLVMOverride p sym ext (EmptyCtx ::> FloatType SingleFloat) (FloatType SingleFloat)
+ Lang.Crucible.LLVM.Intrinsics.Libc: llvmAtanfOverride :: IsSymInterface sym => LLVMOverride p sym ext ((EmptyCtx :: Ctx CrucibleType) ::> FloatType SingleFloat) (FloatType SingleFloat)
- Lang.Crucible.LLVM.Intrinsics.Libc: llvmAtanhOverride :: IsSymInterface sym => LLVMOverride p sym ext (EmptyCtx ::> FloatType DoubleFloat) (FloatType DoubleFloat)
+ Lang.Crucible.LLVM.Intrinsics.Libc: llvmAtanhOverride :: IsSymInterface sym => LLVMOverride p sym ext ((EmptyCtx :: Ctx CrucibleType) ::> FloatType DoubleFloat) (FloatType DoubleFloat)
- Lang.Crucible.LLVM.Intrinsics.Libc: llvmAtanhfOverride :: IsSymInterface sym => LLVMOverride p sym ext (EmptyCtx ::> FloatType SingleFloat) (FloatType SingleFloat)
+ Lang.Crucible.LLVM.Intrinsics.Libc: llvmAtanhfOverride :: IsSymInterface sym => LLVMOverride p sym ext ((EmptyCtx :: Ctx CrucibleType) ::> FloatType SingleFloat) (FloatType SingleFloat)
- Lang.Crucible.LLVM.Intrinsics.Libc: llvmCallocOverride :: (IsSymInterface sym, HasLLVMAnn sym, HasPtrWidth wptr, ?lc :: TypeContext, ?memOpts :: MemOptions) => LLVMOverride p sym ext ((EmptyCtx ::> BVType wptr) ::> BVType wptr) (LLVMPointerType wptr)
+ Lang.Crucible.LLVM.Intrinsics.Libc: llvmCallocOverride :: forall sym (wptr :: Natural) p ext. (IsSymInterface sym, HasLLVMAnn sym, HasPtrWidth wptr, ?lc :: TypeContext, ?memOpts :: MemOptions) => LLVMOverride p sym ext (((EmptyCtx :: Ctx CrucibleType) ::> BVType wptr) ::> BVType wptr) (LLVMPointerType wptr)
- Lang.Crucible.LLVM.Intrinsics.Libc: llvmCeilOverride :: IsSymInterface sym => LLVMOverride p sym ext (EmptyCtx ::> FloatType DoubleFloat) (FloatType DoubleFloat)
+ Lang.Crucible.LLVM.Intrinsics.Libc: llvmCeilOverride :: IsSymInterface sym => LLVMOverride p sym ext ((EmptyCtx :: Ctx CrucibleType) ::> FloatType DoubleFloat) (FloatType DoubleFloat)
- Lang.Crucible.LLVM.Intrinsics.Libc: llvmCeilfOverride :: IsSymInterface sym => LLVMOverride p sym ext (EmptyCtx ::> FloatType SingleFloat) (FloatType SingleFloat)
+ Lang.Crucible.LLVM.Intrinsics.Libc: llvmCeilfOverride :: IsSymInterface sym => LLVMOverride p sym ext ((EmptyCtx :: Ctx CrucibleType) ::> FloatType SingleFloat) (FloatType SingleFloat)
- Lang.Crucible.LLVM.Intrinsics.Libc: llvmCosOverride :: IsSymInterface sym => LLVMOverride p sym ext (EmptyCtx ::> FloatType DoubleFloat) (FloatType DoubleFloat)
+ Lang.Crucible.LLVM.Intrinsics.Libc: llvmCosOverride :: IsSymInterface sym => LLVMOverride p sym ext ((EmptyCtx :: Ctx CrucibleType) ::> FloatType DoubleFloat) (FloatType DoubleFloat)
- Lang.Crucible.LLVM.Intrinsics.Libc: llvmCosfOverride :: IsSymInterface sym => LLVMOverride p sym ext (EmptyCtx ::> FloatType SingleFloat) (FloatType SingleFloat)
+ Lang.Crucible.LLVM.Intrinsics.Libc: llvmCosfOverride :: IsSymInterface sym => LLVMOverride p sym ext ((EmptyCtx :: Ctx CrucibleType) ::> FloatType SingleFloat) (FloatType SingleFloat)
- Lang.Crucible.LLVM.Intrinsics.Libc: llvmCoshOverride :: IsSymInterface sym => LLVMOverride p sym ext (EmptyCtx ::> FloatType DoubleFloat) (FloatType DoubleFloat)
+ Lang.Crucible.LLVM.Intrinsics.Libc: llvmCoshOverride :: IsSymInterface sym => LLVMOverride p sym ext ((EmptyCtx :: Ctx CrucibleType) ::> FloatType DoubleFloat) (FloatType DoubleFloat)
- Lang.Crucible.LLVM.Intrinsics.Libc: llvmCoshfOverride :: IsSymInterface sym => LLVMOverride p sym ext (EmptyCtx ::> FloatType SingleFloat) (FloatType SingleFloat)
+ Lang.Crucible.LLVM.Intrinsics.Libc: llvmCoshfOverride :: IsSymInterface sym => LLVMOverride p sym ext ((EmptyCtx :: Ctx CrucibleType) ::> FloatType SingleFloat) (FloatType SingleFloat)
- Lang.Crucible.LLVM.Intrinsics.Libc: llvmExitOverride :: forall sym p ext. (IsSymInterface sym, ?intrinsicsOpts :: IntrinsicsOptions) => LLVMOverride p sym ext (EmptyCtx ::> BVType 32) UnitType
+ Lang.Crucible.LLVM.Intrinsics.Libc: llvmExitOverride :: (IsSymInterface sym, ?intrinsicsOpts :: IntrinsicsOptions) => LLVMOverride p sym ext ((EmptyCtx :: Ctx CrucibleType) ::> BVType 32) UnitType
- Lang.Crucible.LLVM.Intrinsics.Libc: llvmExp10Override :: IsSymInterface sym => LLVMOverride p sym ext (EmptyCtx ::> FloatType DoubleFloat) (FloatType DoubleFloat)
+ Lang.Crucible.LLVM.Intrinsics.Libc: llvmExp10Override :: IsSymInterface sym => LLVMOverride p sym ext ((EmptyCtx :: Ctx CrucibleType) ::> FloatType DoubleFloat) (FloatType DoubleFloat)
- Lang.Crucible.LLVM.Intrinsics.Libc: llvmExp10fOverride :: IsSymInterface sym => LLVMOverride p sym ext (EmptyCtx ::> FloatType SingleFloat) (FloatType SingleFloat)
+ Lang.Crucible.LLVM.Intrinsics.Libc: llvmExp10fOverride :: IsSymInterface sym => LLVMOverride p sym ext ((EmptyCtx :: Ctx CrucibleType) ::> FloatType SingleFloat) (FloatType SingleFloat)
- Lang.Crucible.LLVM.Intrinsics.Libc: llvmExp2Override :: IsSymInterface sym => LLVMOverride p sym ext (EmptyCtx ::> FloatType DoubleFloat) (FloatType DoubleFloat)
+ Lang.Crucible.LLVM.Intrinsics.Libc: llvmExp2Override :: IsSymInterface sym => LLVMOverride p sym ext ((EmptyCtx :: Ctx CrucibleType) ::> FloatType DoubleFloat) (FloatType DoubleFloat)
- Lang.Crucible.LLVM.Intrinsics.Libc: llvmExp2fOverride :: IsSymInterface sym => LLVMOverride p sym ext (EmptyCtx ::> FloatType SingleFloat) (FloatType SingleFloat)
+ Lang.Crucible.LLVM.Intrinsics.Libc: llvmExp2fOverride :: IsSymInterface sym => LLVMOverride p sym ext ((EmptyCtx :: Ctx CrucibleType) ::> FloatType SingleFloat) (FloatType SingleFloat)
- Lang.Crucible.LLVM.Intrinsics.Libc: llvmExpOverride :: IsSymInterface sym => LLVMOverride p sym ext (EmptyCtx ::> FloatType DoubleFloat) (FloatType DoubleFloat)
+ Lang.Crucible.LLVM.Intrinsics.Libc: llvmExpOverride :: IsSymInterface sym => LLVMOverride p sym ext ((EmptyCtx :: Ctx CrucibleType) ::> FloatType DoubleFloat) (FloatType DoubleFloat)
- Lang.Crucible.LLVM.Intrinsics.Libc: llvmExpfOverride :: IsSymInterface sym => LLVMOverride p sym ext (EmptyCtx ::> FloatType SingleFloat) (FloatType SingleFloat)
+ Lang.Crucible.LLVM.Intrinsics.Libc: llvmExpfOverride :: IsSymInterface sym => LLVMOverride p sym ext ((EmptyCtx :: Ctx CrucibleType) ::> FloatType SingleFloat) (FloatType SingleFloat)
- Lang.Crucible.LLVM.Intrinsics.Libc: llvmExpm1Override :: IsSymInterface sym => LLVMOverride p sym ext (EmptyCtx ::> FloatType DoubleFloat) (FloatType DoubleFloat)
+ Lang.Crucible.LLVM.Intrinsics.Libc: llvmExpm1Override :: IsSymInterface sym => LLVMOverride p sym ext ((EmptyCtx :: Ctx CrucibleType) ::> FloatType DoubleFloat) (FloatType DoubleFloat)
- Lang.Crucible.LLVM.Intrinsics.Libc: llvmExpm1fOverride :: IsSymInterface sym => LLVMOverride p sym ext (EmptyCtx ::> FloatType SingleFloat) (FloatType SingleFloat)
+ Lang.Crucible.LLVM.Intrinsics.Libc: llvmExpm1fOverride :: IsSymInterface sym => LLVMOverride p sym ext ((EmptyCtx :: Ctx CrucibleType) ::> FloatType SingleFloat) (FloatType SingleFloat)
- Lang.Crucible.LLVM.Intrinsics.Libc: llvmFloorOverride :: IsSymInterface sym => LLVMOverride p sym ext (EmptyCtx ::> FloatType DoubleFloat) (FloatType DoubleFloat)
+ Lang.Crucible.LLVM.Intrinsics.Libc: llvmFloorOverride :: IsSymInterface sym => LLVMOverride p sym ext ((EmptyCtx :: Ctx CrucibleType) ::> FloatType DoubleFloat) (FloatType DoubleFloat)
- Lang.Crucible.LLVM.Intrinsics.Libc: llvmFloorfOverride :: IsSymInterface sym => LLVMOverride p sym ext (EmptyCtx ::> FloatType SingleFloat) (FloatType SingleFloat)
+ Lang.Crucible.LLVM.Intrinsics.Libc: llvmFloorfOverride :: IsSymInterface sym => LLVMOverride p sym ext ((EmptyCtx :: Ctx CrucibleType) ::> FloatType SingleFloat) (FloatType SingleFloat)
- Lang.Crucible.LLVM.Intrinsics.Libc: llvmFmaOverride :: forall sym p ext. IsSymInterface sym => LLVMOverride p sym ext (((EmptyCtx ::> FloatType DoubleFloat) ::> FloatType DoubleFloat) ::> FloatType DoubleFloat) (FloatType DoubleFloat)
+ Lang.Crucible.LLVM.Intrinsics.Libc: llvmFmaOverride :: IsSymInterface sym => LLVMOverride p sym ext ((((EmptyCtx :: Ctx CrucibleType) ::> FloatType DoubleFloat) ::> FloatType DoubleFloat) ::> FloatType DoubleFloat) (FloatType DoubleFloat)
- Lang.Crucible.LLVM.Intrinsics.Libc: llvmFmafOverride :: forall sym p ext. IsSymInterface sym => LLVMOverride p sym ext (((EmptyCtx ::> FloatType SingleFloat) ::> FloatType SingleFloat) ::> FloatType SingleFloat) (FloatType SingleFloat)
+ Lang.Crucible.LLVM.Intrinsics.Libc: llvmFmafOverride :: IsSymInterface sym => LLVMOverride p sym ext ((((EmptyCtx :: Ctx CrucibleType) ::> FloatType SingleFloat) ::> FloatType SingleFloat) ::> FloatType SingleFloat) (FloatType SingleFloat)
- Lang.Crucible.LLVM.Intrinsics.Libc: llvmFreeOverride :: (IsSymInterface sym, HasLLVMAnn sym, HasPtrWidth wptr) => LLVMOverride p sym ext (EmptyCtx ::> LLVMPointerType wptr) UnitType
+ Lang.Crucible.LLVM.Intrinsics.Libc: llvmFreeOverride :: forall sym (wptr :: Natural) p ext. (IsSymInterface sym, HasLLVMAnn sym, HasPtrWidth wptr) => LLVMOverride p sym ext ((EmptyCtx :: Ctx CrucibleType) ::> LLVMPointerType wptr) UnitType
- Lang.Crucible.LLVM.Intrinsics.Libc: llvmGetenvOverride :: (IsSymInterface sym, HasPtrWidth wptr) => LLVMOverride p sym ext (EmptyCtx ::> LLVMPointerType wptr) (LLVMPointerType wptr)
+ Lang.Crucible.LLVM.Intrinsics.Libc: llvmGetenvOverride :: forall sym (wptr :: Natural) p ext. (IsSymInterface sym, HasPtrWidth wptr) => LLVMOverride p sym ext ((EmptyCtx :: Ctx CrucibleType) ::> LLVMPointerType wptr) (LLVMPointerType wptr)
- Lang.Crucible.LLVM.Intrinsics.Libc: llvmHtonlOverride :: (IsSymInterface sym, ?lc :: TypeContext) => LLVMOverride p sym ext (EmptyCtx ::> BVType 32) (BVType 32)
+ Lang.Crucible.LLVM.Intrinsics.Libc: llvmHtonlOverride :: (IsSymInterface sym, ?lc :: TypeContext) => LLVMOverride p sym ext ((EmptyCtx :: Ctx CrucibleType) ::> BVType 32) (BVType 32)
- Lang.Crucible.LLVM.Intrinsics.Libc: llvmHtonsOverride :: (IsSymInterface sym, ?lc :: TypeContext) => LLVMOverride p sym ext (EmptyCtx ::> BVType 16) (BVType 16)
+ Lang.Crucible.LLVM.Intrinsics.Libc: llvmHtonsOverride :: (IsSymInterface sym, ?lc :: TypeContext) => LLVMOverride p sym ext ((EmptyCtx :: Ctx CrucibleType) ::> BVType 16) (BVType 16)
- Lang.Crucible.LLVM.Intrinsics.Libc: llvmHypotOverride :: IsSymInterface sym => LLVMOverride p sym ext ((EmptyCtx ::> FloatType DoubleFloat) ::> FloatType DoubleFloat) (FloatType DoubleFloat)
+ Lang.Crucible.LLVM.Intrinsics.Libc: llvmHypotOverride :: IsSymInterface sym => LLVMOverride p sym ext (((EmptyCtx :: Ctx CrucibleType) ::> FloatType DoubleFloat) ::> FloatType DoubleFloat) (FloatType DoubleFloat)
- Lang.Crucible.LLVM.Intrinsics.Libc: llvmHypotfOverride :: IsSymInterface sym => LLVMOverride p sym ext ((EmptyCtx ::> FloatType SingleFloat) ::> FloatType SingleFloat) (FloatType SingleFloat)
+ Lang.Crucible.LLVM.Intrinsics.Libc: llvmHypotfOverride :: IsSymInterface sym => LLVMOverride p sym ext (((EmptyCtx :: Ctx CrucibleType) ::> FloatType SingleFloat) ::> FloatType SingleFloat) (FloatType SingleFloat)
- Lang.Crucible.LLVM.Intrinsics.Libc: llvmIsinfOverride :: IsSymInterface sym => LLVMOverride p sym ext (EmptyCtx ::> FloatType DoubleFloat) (BVType 32)
+ Lang.Crucible.LLVM.Intrinsics.Libc: llvmIsinfOverride :: IsSymInterface sym => LLVMOverride p sym ext ((EmptyCtx :: Ctx CrucibleType) ::> FloatType DoubleFloat) (BVType 32)
- Lang.Crucible.LLVM.Intrinsics.Libc: llvmIsnanOverride :: IsSymInterface sym => LLVMOverride p sym ext (EmptyCtx ::> FloatType DoubleFloat) (BVType 32)
+ Lang.Crucible.LLVM.Intrinsics.Libc: llvmIsnanOverride :: IsSymInterface sym => LLVMOverride p sym ext ((EmptyCtx :: Ctx CrucibleType) ::> FloatType DoubleFloat) (BVType 32)
- Lang.Crucible.LLVM.Intrinsics.Libc: llvmLAbsOverride_32 :: (IsSymInterface sym, HasLLVMAnn sym) => LLVMOverride p sym ext (EmptyCtx ::> BVType 32) (BVType 32)
+ Lang.Crucible.LLVM.Intrinsics.Libc: llvmLAbsOverride_32 :: (IsSymInterface sym, HasLLVMAnn sym) => LLVMOverride p sym ext ((EmptyCtx :: Ctx CrucibleType) ::> BVType 32) (BVType 32)
- Lang.Crucible.LLVM.Intrinsics.Libc: llvmLAbsOverride_64 :: (IsSymInterface sym, HasLLVMAnn sym) => LLVMOverride p sym ext (EmptyCtx ::> BVType 64) (BVType 64)
+ Lang.Crucible.LLVM.Intrinsics.Libc: llvmLAbsOverride_64 :: (IsSymInterface sym, HasLLVMAnn sym) => LLVMOverride p sym ext ((EmptyCtx :: Ctx CrucibleType) ::> BVType 64) (BVType 64)
- Lang.Crucible.LLVM.Intrinsics.Libc: llvmLLAbsOverride :: (IsSymInterface sym, HasLLVMAnn sym) => LLVMOverride p sym ext (EmptyCtx ::> BVType 64) (BVType 64)
+ Lang.Crucible.LLVM.Intrinsics.Libc: llvmLLAbsOverride :: (IsSymInterface sym, HasLLVMAnn sym) => LLVMOverride p sym ext ((EmptyCtx :: Ctx CrucibleType) ::> BVType 64) (BVType 64)
- Lang.Crucible.LLVM.Intrinsics.Libc: llvmLog10Override :: IsSymInterface sym => LLVMOverride p sym ext (EmptyCtx ::> FloatType DoubleFloat) (FloatType DoubleFloat)
+ Lang.Crucible.LLVM.Intrinsics.Libc: llvmLog10Override :: IsSymInterface sym => LLVMOverride p sym ext ((EmptyCtx :: Ctx CrucibleType) ::> FloatType DoubleFloat) (FloatType DoubleFloat)
- Lang.Crucible.LLVM.Intrinsics.Libc: llvmLog10fOverride :: IsSymInterface sym => LLVMOverride p sym ext (EmptyCtx ::> FloatType SingleFloat) (FloatType SingleFloat)
+ Lang.Crucible.LLVM.Intrinsics.Libc: llvmLog10fOverride :: IsSymInterface sym => LLVMOverride p sym ext ((EmptyCtx :: Ctx CrucibleType) ::> FloatType SingleFloat) (FloatType SingleFloat)
- Lang.Crucible.LLVM.Intrinsics.Libc: llvmLog1pOverride :: IsSymInterface sym => LLVMOverride p sym ext (EmptyCtx ::> FloatType DoubleFloat) (FloatType DoubleFloat)
+ Lang.Crucible.LLVM.Intrinsics.Libc: llvmLog1pOverride :: IsSymInterface sym => LLVMOverride p sym ext ((EmptyCtx :: Ctx CrucibleType) ::> FloatType DoubleFloat) (FloatType DoubleFloat)
- Lang.Crucible.LLVM.Intrinsics.Libc: llvmLog1pfOverride :: IsSymInterface sym => LLVMOverride p sym ext (EmptyCtx ::> FloatType SingleFloat) (FloatType SingleFloat)
+ Lang.Crucible.LLVM.Intrinsics.Libc: llvmLog1pfOverride :: IsSymInterface sym => LLVMOverride p sym ext ((EmptyCtx :: Ctx CrucibleType) ::> FloatType SingleFloat) (FloatType SingleFloat)
- Lang.Crucible.LLVM.Intrinsics.Libc: llvmLog2Override :: IsSymInterface sym => LLVMOverride p sym ext (EmptyCtx ::> FloatType DoubleFloat) (FloatType DoubleFloat)
+ Lang.Crucible.LLVM.Intrinsics.Libc: llvmLog2Override :: IsSymInterface sym => LLVMOverride p sym ext ((EmptyCtx :: Ctx CrucibleType) ::> FloatType DoubleFloat) (FloatType DoubleFloat)
- Lang.Crucible.LLVM.Intrinsics.Libc: llvmLog2fOverride :: IsSymInterface sym => LLVMOverride p sym ext (EmptyCtx ::> FloatType SingleFloat) (FloatType SingleFloat)
+ Lang.Crucible.LLVM.Intrinsics.Libc: llvmLog2fOverride :: IsSymInterface sym => LLVMOverride p sym ext ((EmptyCtx :: Ctx CrucibleType) ::> FloatType SingleFloat) (FloatType SingleFloat)
- Lang.Crucible.LLVM.Intrinsics.Libc: llvmLogOverride :: IsSymInterface sym => LLVMOverride p sym ext (EmptyCtx ::> FloatType DoubleFloat) (FloatType DoubleFloat)
+ Lang.Crucible.LLVM.Intrinsics.Libc: llvmLogOverride :: IsSymInterface sym => LLVMOverride p sym ext ((EmptyCtx :: Ctx CrucibleType) ::> FloatType DoubleFloat) (FloatType DoubleFloat)
- Lang.Crucible.LLVM.Intrinsics.Libc: llvmLogfOverride :: IsSymInterface sym => LLVMOverride p sym ext (EmptyCtx ::> FloatType SingleFloat) (FloatType SingleFloat)
+ Lang.Crucible.LLVM.Intrinsics.Libc: llvmLogfOverride :: IsSymInterface sym => LLVMOverride p sym ext ((EmptyCtx :: Ctx CrucibleType) ::> FloatType SingleFloat) (FloatType SingleFloat)
- Lang.Crucible.LLVM.Intrinsics.Libc: llvmMallocOverride :: (IsSymInterface sym, HasLLVMAnn sym, HasPtrWidth wptr, ?lc :: TypeContext, ?memOpts :: MemOptions) => LLVMOverride p sym ext (EmptyCtx ::> BVType wptr) (LLVMPointerType wptr)
+ Lang.Crucible.LLVM.Intrinsics.Libc: llvmMallocOverride :: forall sym (wptr :: Natural) p ext. (IsSymInterface sym, HasLLVMAnn sym, HasPtrWidth wptr, ?lc :: TypeContext, ?memOpts :: MemOptions) => LLVMOverride p sym ext ((EmptyCtx :: Ctx CrucibleType) ::> BVType wptr) (LLVMPointerType wptr)
- Lang.Crucible.LLVM.Intrinsics.Libc: llvmMemcpyChkOverride :: (IsSymInterface sym, HasLLVMAnn sym, HasPtrWidth wptr, ?memOpts :: MemOptions) => LLVMOverride p sym ext ((((EmptyCtx ::> LLVMPointerType wptr) ::> LLVMPointerType wptr) ::> BVType wptr) ::> BVType wptr) (LLVMPointerType wptr)
+ Lang.Crucible.LLVM.Intrinsics.Libc: llvmMemcpyChkOverride :: forall sym (wptr :: Natural) p ext. (IsSymInterface sym, HasLLVMAnn sym, HasPtrWidth wptr, ?memOpts :: MemOptions) => LLVMOverride p sym ext (((((EmptyCtx :: Ctx CrucibleType) ::> LLVMPointerType wptr) ::> LLVMPointerType wptr) ::> BVType wptr) ::> BVType wptr) (LLVMPointerType wptr)
- Lang.Crucible.LLVM.Intrinsics.Libc: llvmMemcpyOverride :: (IsSymInterface sym, HasLLVMAnn sym, HasPtrWidth wptr, ?memOpts :: MemOptions) => LLVMOverride p sym ext (((EmptyCtx ::> LLVMPointerType wptr) ::> LLVMPointerType wptr) ::> BVType wptr) (LLVMPointerType wptr)
+ Lang.Crucible.LLVM.Intrinsics.Libc: llvmMemcpyOverride :: forall sym (wptr :: Natural) p ext. (IsSymInterface sym, HasLLVMAnn sym, HasPtrWidth wptr, ?memOpts :: MemOptions) => LLVMOverride p sym ext ((((EmptyCtx :: Ctx CrucibleType) ::> LLVMPointerType wptr) ::> LLVMPointerType wptr) ::> BVType wptr) (LLVMPointerType wptr)
- Lang.Crucible.LLVM.Intrinsics.Libc: llvmMemmoveOverride :: (IsSymInterface sym, HasLLVMAnn sym, HasPtrWidth wptr, ?memOpts :: MemOptions) => LLVMOverride p sym ext (((EmptyCtx ::> LLVMPointerType wptr) ::> LLVMPointerType wptr) ::> BVType wptr) (LLVMPointerType wptr)
+ Lang.Crucible.LLVM.Intrinsics.Libc: llvmMemmoveOverride :: forall sym (wptr :: Natural) p ext. (IsSymInterface sym, HasLLVMAnn sym, HasPtrWidth wptr, ?memOpts :: MemOptions) => LLVMOverride p sym ext ((((EmptyCtx :: Ctx CrucibleType) ::> LLVMPointerType wptr) ::> LLVMPointerType wptr) ::> BVType wptr) (LLVMPointerType wptr)
- Lang.Crucible.LLVM.Intrinsics.Libc: llvmMemsetChkOverride :: (IsSymInterface sym, HasLLVMAnn sym, HasPtrWidth wptr) => LLVMOverride p sym ext ((((EmptyCtx ::> LLVMPointerType wptr) ::> BVType 32) ::> BVType wptr) ::> BVType wptr) (LLVMPointerType wptr)
+ Lang.Crucible.LLVM.Intrinsics.Libc: llvmMemsetChkOverride :: forall sym (wptr :: Natural) p ext. (IsSymInterface sym, HasLLVMAnn sym, HasPtrWidth wptr) => LLVMOverride p sym ext (((((EmptyCtx :: Ctx CrucibleType) ::> LLVMPointerType wptr) ::> BVType 32) ::> BVType wptr) ::> BVType wptr) (LLVMPointerType wptr)
- Lang.Crucible.LLVM.Intrinsics.Libc: llvmMemsetOverride :: forall p sym ext wptr. (IsSymInterface sym, HasLLVMAnn sym, HasPtrWidth wptr) => LLVMOverride p sym ext (((EmptyCtx ::> LLVMPointerType wptr) ::> BVType 32) ::> BVType wptr) (LLVMPointerType wptr)
+ Lang.Crucible.LLVM.Intrinsics.Libc: llvmMemsetOverride :: forall p sym ext (wptr :: Natural). (IsSymInterface sym, HasLLVMAnn sym, HasPtrWidth wptr) => LLVMOverride p sym ext ((((EmptyCtx :: Ctx CrucibleType) ::> LLVMPointerType wptr) ::> BVType 32) ::> BVType wptr) (LLVMPointerType wptr)
- Lang.Crucible.LLVM.Intrinsics.Libc: llvmNtohlOverride :: (IsSymInterface sym, ?lc :: TypeContext) => LLVMOverride p sym ext (EmptyCtx ::> BVType 32) (BVType 32)
+ Lang.Crucible.LLVM.Intrinsics.Libc: llvmNtohlOverride :: (IsSymInterface sym, ?lc :: TypeContext) => LLVMOverride p sym ext ((EmptyCtx :: Ctx CrucibleType) ::> BVType 32) (BVType 32)
- Lang.Crucible.LLVM.Intrinsics.Libc: llvmNtohsOverride :: (IsSymInterface sym, ?lc :: TypeContext) => LLVMOverride p sym ext (EmptyCtx ::> BVType 16) (BVType 16)
+ Lang.Crucible.LLVM.Intrinsics.Libc: llvmNtohsOverride :: (IsSymInterface sym, ?lc :: TypeContext) => LLVMOverride p sym ext ((EmptyCtx :: Ctx CrucibleType) ::> BVType 16) (BVType 16)
- Lang.Crucible.LLVM.Intrinsics.Libc: llvmPowOverride :: IsSymInterface sym => LLVMOverride p sym ext ((EmptyCtx ::> FloatType DoubleFloat) ::> FloatType DoubleFloat) (FloatType DoubleFloat)
+ Lang.Crucible.LLVM.Intrinsics.Libc: llvmPowOverride :: IsSymInterface sym => LLVMOverride p sym ext (((EmptyCtx :: Ctx CrucibleType) ::> FloatType DoubleFloat) ::> FloatType DoubleFloat) (FloatType DoubleFloat)
- Lang.Crucible.LLVM.Intrinsics.Libc: llvmPowfOverride :: IsSymInterface sym => LLVMOverride p sym ext ((EmptyCtx ::> FloatType SingleFloat) ::> FloatType SingleFloat) (FloatType SingleFloat)
+ Lang.Crucible.LLVM.Intrinsics.Libc: llvmPowfOverride :: IsSymInterface sym => LLVMOverride p sym ext (((EmptyCtx :: Ctx CrucibleType) ::> FloatType SingleFloat) ::> FloatType SingleFloat) (FloatType SingleFloat)
- Lang.Crucible.LLVM.Intrinsics.Libc: llvmPrintfChkOverride :: (IsSymInterface sym, HasLLVMAnn sym, HasPtrWidth wptr, ?memOpts :: MemOptions) => LLVMOverride p sym ext (((EmptyCtx ::> BVType 32) ::> LLVMPointerType wptr) ::> VectorType AnyType) (BVType 32)
+ Lang.Crucible.LLVM.Intrinsics.Libc: llvmPrintfChkOverride :: forall sym (wptr :: Natural) p ext. (IsSymInterface sym, HasLLVMAnn sym, HasPtrWidth wptr, ?memOpts :: MemOptions) => LLVMOverride p sym ext ((((EmptyCtx :: Ctx CrucibleType) ::> BVType 32) ::> LLVMPointerType wptr) ::> VectorType AnyType) (BVType 32)
- Lang.Crucible.LLVM.Intrinsics.Libc: llvmPrintfOverride :: (IsSymInterface sym, HasPtrWidth wptr, HasLLVMAnn sym, ?memOpts :: MemOptions) => LLVMOverride p sym ext ((EmptyCtx ::> LLVMPointerType wptr) ::> VectorType AnyType) (BVType 32)
+ Lang.Crucible.LLVM.Intrinsics.Libc: llvmPrintfOverride :: forall sym (wptr :: Natural) p ext. (IsSymInterface sym, HasPtrWidth wptr, HasLLVMAnn sym, ?memOpts :: MemOptions) => LLVMOverride p sym ext (((EmptyCtx :: Ctx CrucibleType) ::> LLVMPointerType wptr) ::> VectorType AnyType) (BVType 32)
- Lang.Crucible.LLVM.Intrinsics.Libc: llvmPutCharOverride :: (IsSymInterface sym, HasPtrWidth wptr) => LLVMOverride p sym ext (EmptyCtx ::> BVType 32) (BVType 32)
+ Lang.Crucible.LLVM.Intrinsics.Libc: llvmPutCharOverride :: forall sym (wptr :: Natural) p ext. (IsSymInterface sym, HasPtrWidth wptr) => LLVMOverride p sym ext ((EmptyCtx :: Ctx CrucibleType) ::> BVType 32) (BVType 32)
- Lang.Crucible.LLVM.Intrinsics.Libc: llvmPutsOverride :: (IsSymInterface sym, HasLLVMAnn sym, HasPtrWidth wptr, ?memOpts :: MemOptions) => LLVMOverride p sym ext (EmptyCtx ::> LLVMPointerType wptr) (BVType 32)
+ Lang.Crucible.LLVM.Intrinsics.Libc: llvmPutsOverride :: forall sym (wptr :: Natural) p ext. (IsSymInterface sym, HasLLVMAnn sym, HasPtrWidth wptr, ?memOpts :: MemOptions) => LLVMOverride p sym ext ((EmptyCtx :: Ctx CrucibleType) ::> LLVMPointerType wptr) (BVType 32)
- Lang.Crucible.LLVM.Intrinsics.Libc: llvmReallocOverride :: (IsSymInterface sym, HasLLVMAnn sym, HasPtrWidth wptr, ?lc :: TypeContext, ?memOpts :: MemOptions) => LLVMOverride p sym ext ((EmptyCtx ::> LLVMPointerType wptr) ::> BVType wptr) (LLVMPointerType wptr)
+ Lang.Crucible.LLVM.Intrinsics.Libc: llvmReallocOverride :: forall sym (wptr :: Natural) p ext. (IsSymInterface sym, HasLLVMAnn sym, HasPtrWidth wptr, ?lc :: TypeContext, ?memOpts :: MemOptions) => LLVMOverride p sym ext (((EmptyCtx :: Ctx CrucibleType) ::> LLVMPointerType wptr) ::> BVType wptr) (LLVMPointerType wptr)
- Lang.Crucible.LLVM.Intrinsics.Libc: llvmSinOverride :: IsSymInterface sym => LLVMOverride p sym ext (EmptyCtx ::> FloatType DoubleFloat) (FloatType DoubleFloat)
+ Lang.Crucible.LLVM.Intrinsics.Libc: llvmSinOverride :: IsSymInterface sym => LLVMOverride p sym ext ((EmptyCtx :: Ctx CrucibleType) ::> FloatType DoubleFloat) (FloatType DoubleFloat)
- Lang.Crucible.LLVM.Intrinsics.Libc: llvmSinfOverride :: IsSymInterface sym => LLVMOverride p sym ext (EmptyCtx ::> FloatType SingleFloat) (FloatType SingleFloat)
+ Lang.Crucible.LLVM.Intrinsics.Libc: llvmSinfOverride :: IsSymInterface sym => LLVMOverride p sym ext ((EmptyCtx :: Ctx CrucibleType) ::> FloatType SingleFloat) (FloatType SingleFloat)
- Lang.Crucible.LLVM.Intrinsics.Libc: llvmSinhOverride :: IsSymInterface sym => LLVMOverride p sym ext (EmptyCtx ::> FloatType DoubleFloat) (FloatType DoubleFloat)
+ Lang.Crucible.LLVM.Intrinsics.Libc: llvmSinhOverride :: IsSymInterface sym => LLVMOverride p sym ext ((EmptyCtx :: Ctx CrucibleType) ::> FloatType DoubleFloat) (FloatType DoubleFloat)
- Lang.Crucible.LLVM.Intrinsics.Libc: llvmSinhfOverride :: IsSymInterface sym => LLVMOverride p sym ext (EmptyCtx ::> FloatType SingleFloat) (FloatType SingleFloat)
+ Lang.Crucible.LLVM.Intrinsics.Libc: llvmSinhfOverride :: IsSymInterface sym => LLVMOverride p sym ext ((EmptyCtx :: Ctx CrucibleType) ::> FloatType SingleFloat) (FloatType SingleFloat)
- Lang.Crucible.LLVM.Intrinsics.Libc: llvmSqrtOverride :: IsSymInterface sym => LLVMOverride p sym ext (EmptyCtx ::> FloatType DoubleFloat) (FloatType DoubleFloat)
+ Lang.Crucible.LLVM.Intrinsics.Libc: llvmSqrtOverride :: IsSymInterface sym => LLVMOverride p sym ext ((EmptyCtx :: Ctx CrucibleType) ::> FloatType DoubleFloat) (FloatType DoubleFloat)
- Lang.Crucible.LLVM.Intrinsics.Libc: llvmSqrtfOverride :: IsSymInterface sym => LLVMOverride p sym ext (EmptyCtx ::> FloatType SingleFloat) (FloatType SingleFloat)
+ Lang.Crucible.LLVM.Intrinsics.Libc: llvmSqrtfOverride :: IsSymInterface sym => LLVMOverride p sym ext ((EmptyCtx :: Ctx CrucibleType) ::> FloatType SingleFloat) (FloatType SingleFloat)
- Lang.Crucible.LLVM.Intrinsics.Libc: llvmStrlenOverride :: (IsSymInterface sym, HasLLVMAnn sym, HasPtrWidth wptr, ?memOpts :: MemOptions) => LLVMOverride p sym ext (EmptyCtx ::> LLVMPointerType wptr) (BVType wptr)
+ Lang.Crucible.LLVM.Intrinsics.Libc: llvmStrlenOverride :: forall sym (wptr :: Natural) p ext. (IsSymInterface sym, HasLLVMAnn sym, HasPtrWidth wptr, ?memOpts :: MemOptions) => LLVMOverride p sym ext ((EmptyCtx :: Ctx CrucibleType) ::> LLVMPointerType wptr) (BVType wptr)
- Lang.Crucible.LLVM.Intrinsics.Libc: llvmTanOverride :: IsSymInterface sym => LLVMOverride p sym ext (EmptyCtx ::> FloatType DoubleFloat) (FloatType DoubleFloat)
+ Lang.Crucible.LLVM.Intrinsics.Libc: llvmTanOverride :: IsSymInterface sym => LLVMOverride p sym ext ((EmptyCtx :: Ctx CrucibleType) ::> FloatType DoubleFloat) (FloatType DoubleFloat)
- Lang.Crucible.LLVM.Intrinsics.Libc: llvmTanfOverride :: IsSymInterface sym => LLVMOverride p sym ext (EmptyCtx ::> FloatType SingleFloat) (FloatType SingleFloat)
+ Lang.Crucible.LLVM.Intrinsics.Libc: llvmTanfOverride :: IsSymInterface sym => LLVMOverride p sym ext ((EmptyCtx :: Ctx CrucibleType) ::> FloatType SingleFloat) (FloatType SingleFloat)
- Lang.Crucible.LLVM.Intrinsics.Libc: llvmTanhOverride :: IsSymInterface sym => LLVMOverride p sym ext (EmptyCtx ::> FloatType DoubleFloat) (FloatType DoubleFloat)
+ Lang.Crucible.LLVM.Intrinsics.Libc: llvmTanhOverride :: IsSymInterface sym => LLVMOverride p sym ext ((EmptyCtx :: Ctx CrucibleType) ::> FloatType DoubleFloat) (FloatType DoubleFloat)
- Lang.Crucible.LLVM.Intrinsics.Libc: llvmTanhfOverride :: IsSymInterface sym => LLVMOverride p sym ext (EmptyCtx ::> FloatType SingleFloat) (FloatType SingleFloat)
+ Lang.Crucible.LLVM.Intrinsics.Libc: llvmTanhfOverride :: IsSymInterface sym => LLVMOverride p sym ext ((EmptyCtx :: Ctx CrucibleType) ::> FloatType SingleFloat) (FloatType SingleFloat)
- Lang.Crucible.LLVM.Intrinsics.Libc: llvm__exp10Override :: IsSymInterface sym => LLVMOverride p sym ext (EmptyCtx ::> FloatType DoubleFloat) (FloatType DoubleFloat)
+ Lang.Crucible.LLVM.Intrinsics.Libc: llvm__exp10Override :: IsSymInterface sym => LLVMOverride p sym ext ((EmptyCtx :: Ctx CrucibleType) ::> FloatType DoubleFloat) (FloatType DoubleFloat)
- Lang.Crucible.LLVM.Intrinsics.Libc: llvm__exp10fOverride :: IsSymInterface sym => LLVMOverride p sym ext (EmptyCtx ::> FloatType SingleFloat) (FloatType SingleFloat)
+ Lang.Crucible.LLVM.Intrinsics.Libc: llvm__exp10fOverride :: IsSymInterface sym => LLVMOverride p sym ext ((EmptyCtx :: Ctx CrucibleType) ::> FloatType SingleFloat) (FloatType SingleFloat)
- Lang.Crucible.LLVM.Intrinsics.Libc: llvm__isinfOverride :: IsSymInterface sym => LLVMOverride p sym ext (EmptyCtx ::> FloatType DoubleFloat) (BVType 32)
+ Lang.Crucible.LLVM.Intrinsics.Libc: llvm__isinfOverride :: IsSymInterface sym => LLVMOverride p sym ext ((EmptyCtx :: Ctx CrucibleType) ::> FloatType DoubleFloat) (BVType 32)
- Lang.Crucible.LLVM.Intrinsics.Libc: llvm__isinffOverride :: IsSymInterface sym => LLVMOverride p sym ext (EmptyCtx ::> FloatType SingleFloat) (BVType 32)
+ Lang.Crucible.LLVM.Intrinsics.Libc: llvm__isinffOverride :: IsSymInterface sym => LLVMOverride p sym ext ((EmptyCtx :: Ctx CrucibleType) ::> FloatType SingleFloat) (BVType 32)
- Lang.Crucible.LLVM.Intrinsics.Libc: llvm__isnanOverride :: IsSymInterface sym => LLVMOverride p sym ext (EmptyCtx ::> FloatType DoubleFloat) (BVType 32)
+ Lang.Crucible.LLVM.Intrinsics.Libc: llvm__isnanOverride :: IsSymInterface sym => LLVMOverride p sym ext ((EmptyCtx :: Ctx CrucibleType) ::> FloatType DoubleFloat) (BVType 32)
- Lang.Crucible.LLVM.Intrinsics.Libc: llvm__isnandOverride :: IsSymInterface sym => LLVMOverride p sym ext (EmptyCtx ::> FloatType DoubleFloat) (BVType 32)
+ Lang.Crucible.LLVM.Intrinsics.Libc: llvm__isnandOverride :: IsSymInterface sym => LLVMOverride p sym ext ((EmptyCtx :: Ctx CrucibleType) ::> FloatType DoubleFloat) (BVType 32)
- Lang.Crucible.LLVM.Intrinsics.Libc: llvm__isnanfOverride :: IsSymInterface sym => LLVMOverride p sym ext (EmptyCtx ::> FloatType SingleFloat) (BVType 32)
+ Lang.Crucible.LLVM.Intrinsics.Libc: llvm__isnanfOverride :: IsSymInterface sym => LLVMOverride p sym ext ((EmptyCtx :: Ctx CrucibleType) ::> FloatType SingleFloat) (BVType 32)
- Lang.Crucible.LLVM.Intrinsics.Libc: posixMemalignOverride :: (IsSymInterface sym, HasLLVMAnn sym, HasPtrWidth wptr, ?lc :: TypeContext, ?memOpts :: MemOptions) => LLVMOverride p sym ext (((EmptyCtx ::> LLVMPointerType wptr) ::> BVType wptr) ::> BVType wptr) (BVType 32)
+ Lang.Crucible.LLVM.Intrinsics.Libc: posixMemalignOverride :: forall sym (wptr :: Natural) p ext. (IsSymInterface sym, HasLLVMAnn sym, HasPtrWidth wptr, ?lc :: TypeContext, ?memOpts :: MemOptions) => LLVMOverride p sym ext ((((EmptyCtx :: Ctx CrucibleType) ::> LLVMPointerType wptr) ::> BVType wptr) ::> BVType wptr) (BVType 32)
- Lang.Crucible.LLVM.Intrinsics.Libc: printfOps :: (IsSymBackend sym bak, HasLLVMAnn sym, HasPtrWidth wptr, ?memOpts :: MemOptions) => bak -> Vector (AnyValue sym) -> PrintfOperations (StateT (MemImpl sym) IO)
+ Lang.Crucible.LLVM.Intrinsics.Libc: printfOps :: forall sym bak (wptr :: Natural). (IsSymBackend sym bak, HasLLVMAnn sym, HasPtrWidth wptr, ?memOpts :: MemOptions) => bak -> Vector (AnyValue sym) -> PrintfOperations (StateT (MemImpl sym) IO)
- Lang.Crucible.LLVM.MemModel: [DisjOfFailures] :: [(CallStack, BadBehavior sym)] -> CexExplanation sym BaseBoolType
+ Lang.Crucible.LLVM.MemModel: [DisjOfFailures] :: forall sym. [(CallStack, BadBehavior sym)] -> CexExplanation sym 'BaseBoolType
- Lang.Crucible.LLVM.MemModel: [DoubleSize] :: FloatSize DoubleFloat
+ Lang.Crucible.LLVM.MemModel: [DoubleSize] :: FloatSize 'DoubleFloat
- Lang.Crucible.LLVM.MemModel: [Err] :: Pred sym -> PartLLVMVal sym
+ Lang.Crucible.LLVM.MemModel: [Err] :: forall sym. Pred sym -> PartLLVMVal sym
- Lang.Crucible.LLVM.MemModel: [LLVMValArray] :: StorageType -> Vector (LLVMVal sym) -> LLVMVal sym
+ Lang.Crucible.LLVM.MemModel: [LLVMValArray] :: forall sym. StorageType -> Vector (LLVMVal sym) -> LLVMVal sym
- Lang.Crucible.LLVM.MemModel: [LLVMValFloat] :: FloatSize fi -> SymInterpretedFloat sym fi -> LLVMVal sym
+ Lang.Crucible.LLVM.MemModel: [LLVMValFloat] :: forall (fi :: FloatInfo) sym. FloatSize fi -> SymInterpretedFloat sym fi -> LLVMVal sym
- Lang.Crucible.LLVM.MemModel: [LLVMValInt] :: 1 <= w => SymNat sym -> SymBV sym w -> LLVMVal sym
+ Lang.Crucible.LLVM.MemModel: [LLVMValInt] :: forall (w :: Natural) sym. 1 <= w => SymNat sym -> SymBV sym w -> LLVMVal sym
- Lang.Crucible.LLVM.MemModel: [LLVMValString] :: ByteString -> LLVMVal sym
+ Lang.Crucible.LLVM.MemModel: [LLVMValString] :: forall sym. ByteString -> LLVMVal sym
- Lang.Crucible.LLVM.MemModel: [LLVMValStruct] :: Vector (Field StorageType, LLVMVal sym) -> LLVMVal sym
+ Lang.Crucible.LLVM.MemModel: [LLVMValStruct] :: forall sym. Vector (Field StorageType, LLVMVal sym) -> LLVMVal sym
- Lang.Crucible.LLVM.MemModel: [LLVMValUndef] :: StorageType -> LLVMVal sym
+ Lang.Crucible.LLVM.MemModel: [LLVMValUndef] :: forall sym. StorageType -> LLVMVal sym
- Lang.Crucible.LLVM.MemModel: [LLVMValZero] :: StorageType -> LLVMVal sym
+ Lang.Crucible.LLVM.MemModel: [LLVMValZero] :: forall sym. StorageType -> LLVMVal sym
- Lang.Crucible.LLVM.MemModel: [NoErr] :: Pred sym -> LLVMVal sym -> PartLLVMVal sym
+ Lang.Crucible.LLVM.MemModel: [NoErr] :: forall sym. Pred sym -> LLVMVal sym -> PartLLVMVal sym
- Lang.Crucible.LLVM.MemModel: [NoExplanation] :: CexExplanation sym tp
+ Lang.Crucible.LLVM.MemModel: [NoExplanation] :: forall sym (tp :: BaseType). CexExplanation sym tp
- Lang.Crucible.LLVM.MemModel: [SingleSize] :: FloatSize SingleFloat
+ Lang.Crucible.LLVM.MemModel: [SingleSize] :: FloatSize 'SingleFloat
- Lang.Crucible.LLVM.MemModel: [SomeFnHandle] :: FnHandle args ret -> SomeFnHandle
+ Lang.Crucible.LLVM.MemModel: [SomeFnHandle] :: forall (args :: Ctx CrucibleType) (ret :: CrucibleType). FnHandle args ret -> SomeFnHandle
- Lang.Crucible.LLVM.MemModel: [VarargsFnHandle] :: FnHandle (args ::> VectorType AnyType) ret -> SomeFnHandle
+ Lang.Crucible.LLVM.MemModel: [VarargsFnHandle] :: forall (args :: Ctx CrucibleType) (ret :: CrucibleType). FnHandle (args ::> VectorType AnyType) ret -> SomeFnHandle
- Lang.Crucible.LLVM.MemModel: [X86_FP80Size] :: FloatSize X86_80Float
+ Lang.Crucible.LLVM.MemModel: [X86_FP80Size] :: FloatSize 'X86_80Float
- Lang.Crucible.LLVM.MemModel: allocGlobal :: (IsSymBackend sym bak, HasPtrWidth wptr, HasLLVMAnn sym, ?memOpts :: MemOptions) => bak -> MemImpl sym -> (Global, [Symbol], Bytes, Alignment) -> IO (MemImpl sym)
+ Lang.Crucible.LLVM.MemModel: allocGlobal :: forall sym bak (wptr :: Natural). (IsSymBackend sym bak, HasPtrWidth wptr, HasLLVMAnn sym, ?memOpts :: MemOptions) => bak -> MemImpl sym -> (Global, [Symbol], Bytes, Alignment) -> IO (MemImpl sym)
- Lang.Crucible.LLVM.MemModel: allocGlobals :: (IsSymBackend sym bak, HasPtrWidth wptr, HasLLVMAnn sym, ?memOpts :: MemOptions) => bak -> [(Global, [Symbol], Bytes, Alignment)] -> MemImpl sym -> IO (MemImpl sym)
+ Lang.Crucible.LLVM.MemModel: allocGlobals :: forall sym bak (wptr :: Natural). (IsSymBackend sym bak, HasPtrWidth wptr, HasLLVMAnn sym, ?memOpts :: MemOptions) => bak -> [(Global, [Symbol], Bytes, Alignment)] -> MemImpl sym -> IO (MemImpl sym)
- Lang.Crucible.LLVM.MemModel: asMemAllocationArrayStore :: forall sym w. (IsSymInterface sym, 1 <= w) => sym -> NatRepr w -> LLVMPtr sym w -> Mem sym -> IO (Maybe (Pred sym, SymArray sym (SingleCtx (BaseBVType w)) (BaseBVType 8), SymBV sym w))
+ Lang.Crucible.LLVM.MemModel: asMemAllocationArrayStore :: forall sym (w :: Natural). (IsSymInterface sym, 1 <= w) => sym -> NatRepr w -> LLVMPtr sym w -> Mem sym -> IO (Maybe (Pred sym, SymArray sym (SingleCtx (BaseBVType w)) (BaseBVType 8), SymBV sym w))
- Lang.Crucible.LLVM.MemModel: asMemMatchingArrayStore :: (IsSymInterface sym, 1 <= w) => sym -> NatRepr w -> LLVMPtr sym w -> SymBV sym w -> Mem sym -> IO (Maybe (Pred sym, SymArray sym (SingleCtx (BaseBVType w)) (BaseBVType 8)))
+ Lang.Crucible.LLVM.MemModel: asMemMatchingArrayStore :: forall sym (w :: Natural). (IsSymInterface sym, 1 <= w) => sym -> NatRepr w -> LLVMPtr sym w -> SymBV sym w -> Mem sym -> IO (Maybe (Pred sym, SymArray sym (SingleCtx (BaseBVType w)) (BaseBVType 8)))
- Lang.Crucible.LLVM.MemModel: assertDisjointRegions :: (1 <= w, HasPtrWidth wptr, IsSymBackend sym bak, HasLLVMAnn sym) => bak -> MemoryOp sym wptr -> NatRepr w -> LLVMPtr sym wptr -> SymBV sym w -> LLVMPtr sym wptr -> SymBV sym w -> IO ()
+ Lang.Crucible.LLVM.MemModel: assertDisjointRegions :: forall (w :: Natural) (wptr :: Natural) sym bak. (1 <= w, HasPtrWidth wptr, IsSymBackend sym bak, HasLLVMAnn sym) => bak -> MemoryOp sym wptr -> NatRepr w -> LLVMPtr sym wptr -> SymBV sym w -> LLVMPtr sym wptr -> SymBV sym w -> IO ()
- Lang.Crucible.LLVM.MemModel: buildDisjointRegionsAssertion :: (1 <= w, HasPtrWidth wptr, IsSymInterface sym) => sym -> NatRepr w -> LLVMPtr sym wptr -> SymBV sym w -> LLVMPtr sym wptr -> SymBV sym w -> IO (Pred sym)
+ Lang.Crucible.LLVM.MemModel: buildDisjointRegionsAssertion :: forall (w :: Natural) (wptr :: Natural) sym. (1 <= w, HasPtrWidth wptr, IsSymInterface sym) => sym -> NatRepr w -> LLVMPtr sym wptr -> SymBV sym w -> LLVMPtr sym wptr -> SymBV sym w -> IO (Pred sym)
- Lang.Crucible.LLVM.MemModel: buildDisjointRegionsAssertionWithSub :: (HasPtrWidth wptr, IsSymInterface sym) => sym -> LLVMPtr sym wptr -> SymBV sym wptr -> LLVMPtr sym wptr -> SymBV sym wptr -> IO (Pred sym)
+ Lang.Crucible.LLVM.MemModel: buildDisjointRegionsAssertionWithSub :: forall (wptr :: Natural) sym. (HasPtrWidth wptr, IsSymInterface sym) => sym -> LLVMPtr sym wptr -> SymBV sym wptr -> LLVMPtr sym wptr -> SymBV sym wptr -> IO (Pred sym)
- Lang.Crucible.LLVM.MemModel: concLLVMVal :: IsExprBuilder sym => sym -> (forall tp. SymExpr sym tp -> IO (GroundValue tp)) -> LLVMVal sym -> IO (LLVMVal sym)
+ Lang.Crucible.LLVM.MemModel: concLLVMVal :: IsExprBuilder sym => sym -> (forall (tp :: BaseType). () => SymExpr sym tp -> IO (GroundValue tp)) -> LLVMVal sym -> IO (LLVMVal sym)
- Lang.Crucible.LLVM.MemModel: concMem :: IsExprBuilder sym => sym -> (forall tp. SymExpr sym tp -> IO (GroundValue tp)) -> Mem sym -> IO (Mem sym)
+ Lang.Crucible.LLVM.MemModel: concMem :: IsExprBuilder sym => sym -> (forall (tp :: BaseType). () => SymExpr sym tp -> IO (GroundValue tp)) -> Mem sym -> IO (Mem sym)
- Lang.Crucible.LLVM.MemModel: concMemImpl :: IsSymInterface sym => sym -> (forall tp. SymExpr sym tp -> IO (GroundValue tp)) -> MemImpl sym -> IO (MemImpl sym)
+ Lang.Crucible.LLVM.MemModel: concMemImpl :: IsSymInterface sym => sym -> (forall (tp :: BaseType). () => SymExpr sym tp -> IO (GroundValue tp)) -> MemImpl sym -> IO (MemImpl sym)
- Lang.Crucible.LLVM.MemModel: concPtr :: (IsExprBuilder sym, 1 <= w) => sym -> (forall tp. SymExpr sym tp -> IO (GroundValue tp)) -> RegValue sym (LLVMPointerType w) -> IO (RegValue sym (LLVMPointerType w))
+ Lang.Crucible.LLVM.MemModel: concPtr :: forall sym (w :: Natural). (IsExprBuilder sym, 1 <= w) => sym -> (forall (tp :: BaseType). () => SymExpr sym tp -> IO (GroundValue tp)) -> RegValue sym (LLVMPointerType w) -> IO (RegValue sym (LLVMPointerType w))
- Lang.Crucible.LLVM.MemModel: condStoreRaw :: (IsSymBackend sym bak, HasPtrWidth wptr, HasLLVMAnn sym, ?memOpts :: MemOptions) => bak -> MemImpl sym -> Pred sym -> LLVMPtr sym wptr -> StorageType -> Alignment -> LLVMVal sym -> IO (MemImpl sym)
+ Lang.Crucible.LLVM.MemModel: condStoreRaw :: forall sym bak (wptr :: Natural). (IsSymBackend sym bak, HasPtrWidth wptr, HasLLVMAnn sym, ?memOpts :: MemOptions) => bak -> MemImpl sym -> Pred sym -> LLVMPtr sym wptr -> StorageType -> Alignment -> LLVMVal sym -> IO (MemImpl sym)
- Lang.Crucible.LLVM.MemModel: constToLLVMVal :: forall wptr sym bak io. (MonadIO io, MonadFail io, HasPtrWidth wptr, IsSymBackend sym bak, HasCallStack) => bak -> MemImpl sym -> LLVMConst -> io (LLVMVal sym)
+ Lang.Crucible.LLVM.MemModel: constToLLVMVal :: forall (wptr :: Natural) sym bak io. (MonadIO io, MonadFail io, HasPtrWidth wptr, IsSymBackend sym bak, HasCallStack) => bak -> MemImpl sym -> LLVMConst -> io (LLVMVal sym)
- Lang.Crucible.LLVM.MemModel: constToLLVMValP :: forall wptr sym io. (MonadIO io, MonadFail io, HasPtrWidth wptr, IsSymInterface sym, HasCallStack) => sym -> (Symbol -> io (LLVMPtr sym wptr)) -> LLVMConst -> io (LLVMVal sym)
+ Lang.Crucible.LLVM.MemModel: constToLLVMValP :: forall (wptr :: Natural) sym io. (MonadIO io, MonadFail io, HasPtrWidth wptr, IsSymInterface sym, HasCallStack) => sym -> (Symbol -> io (LLVMPtr sym wptr)) -> LLVMConst -> io (LLVMVal sym)
- Lang.Crucible.LLVM.MemModel: doAlloca :: (IsSymBackend sym bak, HasPtrWidth wptr, HasLLVMAnn sym, ?memOpts :: MemOptions) => bak -> MemImpl sym -> SymBV sym wptr -> Alignment -> String -> IO (LLVMPtr sym wptr, MemImpl sym)
+ Lang.Crucible.LLVM.MemModel: doAlloca :: forall sym bak (wptr :: Natural). (IsSymBackend sym bak, HasPtrWidth wptr, HasLLVMAnn sym, ?memOpts :: MemOptions) => bak -> MemImpl sym -> SymBV sym wptr -> Alignment -> String -> IO (LLVMPtr sym wptr, MemImpl sym)
- Lang.Crucible.LLVM.MemModel: doArrayConstStore :: (IsSymBackend sym bak, HasPtrWidth w, HasLLVMAnn sym) => bak -> MemImpl sym -> LLVMPtr sym w -> Alignment -> SymArray sym (SingleCtx (BaseBVType w)) (BaseBVType 8) -> SymBV sym w -> IO (MemImpl sym)
+ Lang.Crucible.LLVM.MemModel: doArrayConstStore :: forall sym bak (w :: Natural). (IsSymBackend sym bak, HasPtrWidth w, HasLLVMAnn sym) => bak -> MemImpl sym -> LLVMPtr sym w -> Alignment -> SymArray sym (SingleCtx (BaseBVType w)) (BaseBVType 8) -> SymBV sym w -> IO (MemImpl sym)
- Lang.Crucible.LLVM.MemModel: doArrayConstStoreUnbounded :: (IsSymBackend sym bak, HasPtrWidth w, HasLLVMAnn sym) => bak -> MemImpl sym -> LLVMPtr sym w -> Alignment -> SymArray sym (SingleCtx (BaseBVType w)) (BaseBVType 8) -> IO (MemImpl sym)
+ Lang.Crucible.LLVM.MemModel: doArrayConstStoreUnbounded :: forall sym bak (w :: Natural). (IsSymBackend sym bak, HasPtrWidth w, HasLLVMAnn sym) => bak -> MemImpl sym -> LLVMPtr sym w -> Alignment -> SymArray sym (SingleCtx (BaseBVType w)) (BaseBVType 8) -> IO (MemImpl sym)
- Lang.Crucible.LLVM.MemModel: doArrayStore :: (IsSymBackend sym bak, HasPtrWidth w, HasLLVMAnn sym) => bak -> MemImpl sym -> LLVMPtr sym w -> Alignment -> SymArray sym (SingleCtx (BaseBVType w)) (BaseBVType 8) -> SymBV sym w -> IO (MemImpl sym)
+ Lang.Crucible.LLVM.MemModel: doArrayStore :: forall sym bak (w :: Natural). (IsSymBackend sym bak, HasPtrWidth w, HasLLVMAnn sym) => bak -> MemImpl sym -> LLVMPtr sym w -> Alignment -> SymArray sym (SingleCtx (BaseBVType w)) (BaseBVType 8) -> SymBV sym w -> IO (MemImpl sym)
- Lang.Crucible.LLVM.MemModel: doArrayStoreUnbounded :: (IsSymBackend sym bak, HasPtrWidth w, HasLLVMAnn sym) => bak -> MemImpl sym -> LLVMPtr sym w -> Alignment -> SymArray sym (SingleCtx (BaseBVType w)) (BaseBVType 8) -> IO (MemImpl sym)
+ Lang.Crucible.LLVM.MemModel: doArrayStoreUnbounded :: forall sym bak (w :: Natural). (IsSymBackend sym bak, HasPtrWidth w, HasLLVMAnn sym) => bak -> MemImpl sym -> LLVMPtr sym w -> Alignment -> SymArray sym (SingleCtx (BaseBVType w)) (BaseBVType 8) -> IO (MemImpl sym)
- Lang.Crucible.LLVM.MemModel: doCalloc :: (IsSymBackend sym bak, HasPtrWidth wptr, HasLLVMAnn sym, ?memOpts :: MemOptions) => bak -> MemImpl sym -> SymBV sym wptr -> SymBV sym wptr -> Alignment -> IO (LLVMPtr sym wptr, MemImpl sym)
+ Lang.Crucible.LLVM.MemModel: doCalloc :: forall sym bak (wptr :: Natural). (IsSymBackend sym bak, HasPtrWidth wptr, HasLLVMAnn sym, ?memOpts :: MemOptions) => bak -> MemImpl sym -> SymBV sym wptr -> SymBV sym wptr -> Alignment -> IO (LLVMPtr sym wptr, MemImpl sym)
- Lang.Crucible.LLVM.MemModel: doFree :: (IsSymBackend sym bak, HasPtrWidth wptr, HasLLVMAnn sym) => bak -> MemImpl sym -> LLVMPtr sym wptr -> IO (MemImpl sym)
+ Lang.Crucible.LLVM.MemModel: doFree :: forall sym bak (wptr :: Natural). (IsSymBackend sym bak, HasPtrWidth wptr, HasLLVMAnn sym) => bak -> MemImpl sym -> LLVMPtr sym wptr -> IO (MemImpl sym)
- Lang.Crucible.LLVM.MemModel: doInstallHandle :: (Typeable a, IsSymBackend sym bak) => bak -> LLVMPtr sym wptr -> a -> MemImpl sym -> IO (MemImpl sym)
+ Lang.Crucible.LLVM.MemModel: doInstallHandle :: forall a sym bak (wptr :: Nat). (Typeable a, IsSymBackend sym bak) => bak -> LLVMPtr sym wptr -> a -> MemImpl sym -> IO (MemImpl sym)
- Lang.Crucible.LLVM.MemModel: doInvalidate :: (1 <= w, IsSymBackend sym bak, HasPtrWidth wptr, HasLLVMAnn sym, ?memOpts :: MemOptions) => bak -> NatRepr w -> MemImpl sym -> LLVMPtr sym wptr -> Text -> SymBV sym w -> IO (MemImpl sym)
+ Lang.Crucible.LLVM.MemModel: doInvalidate :: forall (w :: Natural) sym bak (wptr :: Natural). (1 <= w, IsSymBackend sym bak, HasPtrWidth wptr, HasLLVMAnn sym, ?memOpts :: MemOptions) => bak -> NatRepr w -> MemImpl sym -> LLVMPtr sym wptr -> Text -> SymBV sym w -> IO (MemImpl sym)
- Lang.Crucible.LLVM.MemModel: doLoad :: (IsSymBackend sym bak, HasPtrWidth wptr, HasLLVMAnn sym, ?memOpts :: MemOptions) => bak -> MemImpl sym -> LLVMPtr sym wptr -> StorageType -> TypeRepr tp -> Alignment -> IO (RegValue sym tp)
+ Lang.Crucible.LLVM.MemModel: doLoad :: forall sym bak (wptr :: Natural) (tp :: CrucibleType). (IsSymBackend sym bak, HasPtrWidth wptr, HasLLVMAnn sym, ?memOpts :: MemOptions) => bak -> MemImpl sym -> LLVMPtr sym wptr -> StorageType -> TypeRepr tp -> Alignment -> IO (RegValue sym tp)
- Lang.Crucible.LLVM.MemModel: doLookupHandle :: (Typeable a, IsSymInterface sym) => sym -> MemImpl sym -> LLVMPtr sym wptr -> IO (Either FuncLookupError a)
+ Lang.Crucible.LLVM.MemModel: doLookupHandle :: forall a sym (wptr :: Nat). (Typeable a, IsSymInterface sym) => sym -> MemImpl sym -> LLVMPtr sym wptr -> IO (Either FuncLookupError a)
- Lang.Crucible.LLVM.MemModel: doMalloc :: (IsSymBackend sym bak, HasPtrWidth wptr, HasLLVMAnn sym, ?memOpts :: MemOptions) => bak -> AllocType -> Mutability -> String -> MemImpl sym -> SymBV sym wptr -> Alignment -> IO (LLVMPtr sym wptr, MemImpl sym)
+ Lang.Crucible.LLVM.MemModel: doMalloc :: forall sym bak (wptr :: Natural). (IsSymBackend sym bak, HasPtrWidth wptr, HasLLVMAnn sym, ?memOpts :: MemOptions) => bak -> AllocType -> Mutability -> String -> MemImpl sym -> SymBV sym wptr -> Alignment -> IO (LLVMPtr sym wptr, MemImpl sym)
- Lang.Crucible.LLVM.MemModel: doMallocUnbounded :: (IsSymBackend sym bak, HasPtrWidth wptr, HasLLVMAnn sym, ?memOpts :: MemOptions) => bak -> AllocType -> Mutability -> String -> MemImpl sym -> Alignment -> IO (LLVMPtr sym wptr, MemImpl sym)
+ Lang.Crucible.LLVM.MemModel: doMallocUnbounded :: forall sym bak (wptr :: Natural). (IsSymBackend sym bak, HasPtrWidth wptr, HasLLVMAnn sym, ?memOpts :: MemOptions) => bak -> AllocType -> Mutability -> String -> MemImpl sym -> Alignment -> IO (LLVMPtr sym wptr, MemImpl sym)
- Lang.Crucible.LLVM.MemModel: doMemcpy :: (1 <= w, IsSymBackend sym bak, HasPtrWidth wptr, HasLLVMAnn sym, ?memOpts :: MemOptions) => bak -> NatRepr w -> MemImpl sym -> Bool -> LLVMPtr sym wptr -> LLVMPtr sym wptr -> SymBV sym w -> IO (MemImpl sym)
+ Lang.Crucible.LLVM.MemModel: doMemcpy :: forall (w :: Natural) sym bak (wptr :: Natural). (1 <= w, IsSymBackend sym bak, HasPtrWidth wptr, HasLLVMAnn sym, ?memOpts :: MemOptions) => bak -> NatRepr w -> MemImpl sym -> Bool -> LLVMPtr sym wptr -> LLVMPtr sym wptr -> SymBV sym w -> IO (MemImpl sym)
- Lang.Crucible.LLVM.MemModel: doMemset :: (1 <= w, IsSymBackend sym bak, HasPtrWidth wptr, HasLLVMAnn sym) => bak -> NatRepr w -> MemImpl sym -> LLVMPtr sym wptr -> SymBV sym 8 -> SymBV sym w -> IO (MemImpl sym)
+ Lang.Crucible.LLVM.MemModel: doMemset :: forall (w :: Natural) sym bak (wptr :: Natural). (1 <= w, IsSymBackend sym bak, HasPtrWidth wptr, HasLLVMAnn sym) => bak -> NatRepr w -> MemImpl sym -> LLVMPtr sym wptr -> SymBV sym 8 -> SymBV sym w -> IO (MemImpl sym)
- Lang.Crucible.LLVM.MemModel: doPtrAddOffset :: (IsSymBackend sym bak, HasPtrWidth wptr, HasLLVMAnn sym, ?memOpts :: MemOptions) => bak -> MemImpl sym -> LLVMPtr sym wptr -> SymBV sym wptr -> IO (LLVMPtr sym wptr)
+ Lang.Crucible.LLVM.MemModel: doPtrAddOffset :: forall sym bak (wptr :: Natural). (IsSymBackend sym bak, HasPtrWidth wptr, HasLLVMAnn sym, ?memOpts :: MemOptions) => bak -> MemImpl sym -> LLVMPtr sym wptr -> SymBV sym wptr -> IO (LLVMPtr sym wptr)
- Lang.Crucible.LLVM.MemModel: doPtrSubtract :: (IsSymBackend sym bak, HasPtrWidth wptr, HasLLVMAnn sym) => bak -> MemImpl sym -> LLVMPtr sym wptr -> LLVMPtr sym wptr -> IO (SymBV sym wptr)
+ Lang.Crucible.LLVM.MemModel: doPtrSubtract :: forall sym bak (wptr :: Natural). (IsSymBackend sym bak, HasPtrWidth wptr, HasLLVMAnn sym) => bak -> MemImpl sym -> LLVMPtr sym wptr -> LLVMPtr sym wptr -> IO (SymBV sym wptr)
- Lang.Crucible.LLVM.MemModel: doResolveGlobal :: (IsSymBackend sym bak, HasPtrWidth wptr, HasCallStack) => bak -> MemImpl sym -> Symbol -> IO (LLVMPtr sym wptr)
+ Lang.Crucible.LLVM.MemModel: doResolveGlobal :: forall sym bak (wptr :: Natural). (IsSymBackend sym bak, HasPtrWidth wptr, HasCallStack) => bak -> MemImpl sym -> Symbol -> IO (LLVMPtr sym wptr)
- Lang.Crucible.LLVM.MemModel: doStore :: (IsSymBackend sym bak, HasPtrWidth wptr, HasLLVMAnn sym, ?memOpts :: MemOptions) => bak -> MemImpl sym -> LLVMPtr sym wptr -> TypeRepr tp -> StorageType -> Alignment -> RegValue sym tp -> IO (MemImpl sym)
+ Lang.Crucible.LLVM.MemModel: doStore :: forall sym bak (wptr :: Natural) (tp :: CrucibleType). (IsSymBackend sym bak, HasPtrWidth wptr, HasLLVMAnn sym, ?memOpts :: MemOptions) => bak -> MemImpl sym -> LLVMPtr sym wptr -> TypeRepr tp -> StorageType -> Alignment -> RegValue sym tp -> IO (MemImpl sym)
- Lang.Crucible.LLVM.MemModel: explainCex :: forall t st fs sym. (IsSymInterface sym, sym ~ ExprBuilder t st fs) => sym -> LLVMAnnMap sym -> Maybe (GroundEvalFn t) -> IO (Pred sym -> IO (CexExplanation sym BaseBoolType))
+ Lang.Crucible.LLVM.MemModel: explainCex :: forall t (st :: Type -> Type) fs sym. (IsSymInterface sym, sym ~ ExprBuilder t st fs) => sym -> LLVMAnnMap sym -> Maybe (GroundEvalFn t) -> IO (Pred sym -> IO (CexExplanation sym BaseBoolType))
- Lang.Crucible.LLVM.MemModel: explodeStringValue :: forall sym. (IsExprBuilder sym, IsInterpretedFloatExprBuilder sym) => sym -> ByteString -> IO (LLVMVal sym)
+ Lang.Crucible.LLVM.MemModel: explodeStringValue :: (IsExprBuilder sym, IsInterpretedFloatExprBuilder sym) => sym -> ByteString -> IO (LLVMVal sym)
- Lang.Crucible.LLVM.MemModel: fieldVal :: Lens (Field a) (Field b) a b
+ Lang.Crucible.LLVM.MemModel: fieldVal :: forall a b f. Functor f => (a -> f b) -> Field a -> f (Field b)
- Lang.Crucible.LLVM.MemModel: isAligned :: forall sym w. (1 <= w, IsSymInterface sym) => sym -> NatRepr w -> LLVMPtr sym w -> Alignment -> IO (Pred sym)
+ Lang.Crucible.LLVM.MemModel: isAligned :: forall sym (w :: Natural). (1 <= w, IsSymInterface sym) => sym -> NatRepr w -> LLVMPtr sym w -> Alignment -> IO (Pred sym)
- Lang.Crucible.LLVM.MemModel: isAllocatedAlignedPointer :: (1 <= w, IsSymInterface sym) => sym -> NatRepr w -> Alignment -> Mutability -> LLVMPtr sym w -> Maybe (SymBV sym w) -> MemImpl sym -> IO (Pred sym)
+ Lang.Crucible.LLVM.MemModel: isAllocatedAlignedPointer :: forall (w :: Natural) sym. (1 <= w, IsSymInterface sym) => sym -> NatRepr w -> Alignment -> Mutability -> LLVMPtr sym w -> Maybe (SymBV sym w) -> MemImpl sym -> IO (Pred sym)
- Lang.Crucible.LLVM.MemModel: isGlobalPointer :: forall sym w. IsSymInterface sym => Map Natural Symbol -> LLVMPtr sym w -> Maybe Symbol
+ Lang.Crucible.LLVM.MemModel: isGlobalPointer :: forall sym (w :: Nat). IsSymInterface sym => Map Natural Symbol -> LLVMPtr sym w -> Maybe Symbol
- Lang.Crucible.LLVM.MemModel: isValidPointer :: (IsSymInterface sym, HasPtrWidth wptr) => sym -> LLVMPtr sym wptr -> MemImpl sym -> IO (Pred sym)
+ Lang.Crucible.LLVM.MemModel: isValidPointer :: forall sym (wptr :: Natural). (IsSymInterface sym, HasPtrWidth wptr) => sym -> LLVMPtr sym wptr -> MemImpl sym -> IO (Pred sym)
- Lang.Crucible.LLVM.MemModel: isZero :: forall sym. (IsExprBuilder sym, IsInterpretedFloatExprBuilder sym) => sym -> LLVMVal sym -> IO (Maybe (Pred sym))
+ Lang.Crucible.LLVM.MemModel: isZero :: (IsExprBuilder sym, IsInterpretedFloatExprBuilder sym) => sym -> LLVMVal sym -> IO (Maybe (Pred sym))
- Lang.Crucible.LLVM.MemModel: llvmPointerView :: LLVMPtr sym w -> (SymNat sym, SymBV sym w)
+ Lang.Crucible.LLVM.MemModel: llvmPointerView :: forall sym (w :: Nat). LLVMPtr sym w -> (SymNat sym, SymBV sym w)
- Lang.Crucible.LLVM.MemModel: llvmPointer_bv :: IsSymInterface sym => sym -> SymBV sym w -> IO (LLVMPtr sym w)
+ Lang.Crucible.LLVM.MemModel: llvmPointer_bv :: forall sym (w :: Nat). IsSymInterface sym => sym -> SymBV sym w -> IO (LLVMPtr sym w)
- Lang.Crucible.LLVM.MemModel: llvmValStorableType :: IsExprBuilder sym => LLVMVal sym -> StorageType
+ Lang.Crucible.LLVM.MemModel: llvmValStorableType :: IsExpr (SymExpr sym) => LLVMVal sym -> StorageType
- Lang.Crucible.LLVM.MemModel: loadArrayConcreteSizeRaw :: forall sym wptr. (IsSymInterface sym, HasPtrWidth wptr, HasLLVMAnn sym, ?memOpts :: MemOptions) => sym -> MemImpl sym -> LLVMPtr sym wptr -> Natural -> Alignment -> IO (Either (Pred sym) (Pred sym, SymArray sym (SingleCtx (BaseBVType wptr)) (BaseBVType 8)))
+ Lang.Crucible.LLVM.MemModel: loadArrayConcreteSizeRaw :: forall sym (wptr :: Natural). (IsSymInterface sym, HasPtrWidth wptr, HasLLVMAnn sym, ?memOpts :: MemOptions) => sym -> MemImpl sym -> LLVMPtr sym wptr -> Natural -> Alignment -> IO (Either (Pred sym) (Pred sym, SymArray sym (SingleCtx (BaseBVType wptr)) (BaseBVType 8)))
- Lang.Crucible.LLVM.MemModel: loadMaybeString :: (IsSymBackend sym bak, HasPtrWidth wptr, HasLLVMAnn sym, ?memOpts :: MemOptions, HasCallStack) => bak -> MemImpl sym -> LLVMPtr sym wptr -> Maybe Int -> IO (Maybe [Word8])
+ Lang.Crucible.LLVM.MemModel: loadMaybeString :: forall sym bak (wptr :: Natural). (IsSymBackend sym bak, HasPtrWidth wptr, HasLLVMAnn sym, ?memOpts :: MemOptions, HasCallStack) => bak -> MemImpl sym -> LLVMPtr sym wptr -> Maybe Int -> IO (Maybe [Word8])
- Lang.Crucible.LLVM.MemModel: loadRaw :: (IsSymInterface sym, HasPtrWidth wptr, HasLLVMAnn sym, ?memOpts :: MemOptions) => sym -> MemImpl sym -> LLVMPtr sym wptr -> StorageType -> Alignment -> IO (PartLLVMVal sym)
+ Lang.Crucible.LLVM.MemModel: loadRaw :: forall sym (wptr :: Natural). (IsSymInterface sym, HasPtrWidth wptr, HasLLVMAnn sym, ?memOpts :: MemOptions) => sym -> MemImpl sym -> LLVMPtr sym wptr -> StorageType -> Alignment -> IO (PartLLVMVal sym)
- Lang.Crucible.LLVM.MemModel: loadString :: forall sym bak wptr. (IsSymBackend sym bak, HasPtrWidth wptr, HasLLVMAnn sym, ?memOpts :: MemOptions, HasCallStack) => bak -> MemImpl sym -> LLVMPtr sym wptr -> Maybe Int -> IO [Word8]
+ Lang.Crucible.LLVM.MemModel: loadString :: forall sym bak (wptr :: Natural). (IsSymBackend sym bak, HasPtrWidth wptr, HasLLVMAnn sym, ?memOpts :: MemOptions, HasCallStack) => bak -> MemImpl sym -> LLVMPtr sym wptr -> Maybe Int -> IO [Word8]
- Lang.Crucible.LLVM.MemModel: mallocConstRaw :: (IsSymBackend sym bak, HasPtrWidth wptr, HasLLVMAnn sym, ?memOpts :: MemOptions) => bak -> MemImpl sym -> SymBV sym wptr -> Alignment -> IO (LLVMPtr sym wptr, MemImpl sym)
+ Lang.Crucible.LLVM.MemModel: mallocConstRaw :: forall sym bak (wptr :: Natural). (IsSymBackend sym bak, HasPtrWidth wptr, HasLLVMAnn sym, ?memOpts :: MemOptions) => bak -> MemImpl sym -> SymBV sym wptr -> Alignment -> IO (LLVMPtr sym wptr, MemImpl sym)
- Lang.Crucible.LLVM.MemModel: mallocRaw :: (IsSymBackend sym bak, HasPtrWidth wptr, HasLLVMAnn sym, ?memOpts :: MemOptions) => bak -> MemImpl sym -> SymBV sym wptr -> Alignment -> IO (LLVMPtr sym wptr, MemImpl sym)
+ Lang.Crucible.LLVM.MemModel: mallocRaw :: forall sym bak (wptr :: Natural). (IsSymBackend sym bak, HasPtrWidth wptr, HasLLVMAnn sym, ?memOpts :: MemOptions) => bak -> MemImpl sym -> SymBV sym wptr -> Alignment -> IO (LLVMPtr sym wptr, MemImpl sym)
- Lang.Crucible.LLVM.MemModel: mkNullPointer :: (1 <= w, IsSymInterface sym) => sym -> NatRepr w -> IO (LLVMPtr sym w)
+ Lang.Crucible.LLVM.MemModel: mkNullPointer :: forall (w :: Natural) sym. (1 <= w, IsSymInterface sym) => sym -> NatRepr w -> IO (LLVMPtr sym w)
- Lang.Crucible.LLVM.MemModel: muxLLVMPtr :: 1 <= w => IsSymInterface sym => sym -> Pred sym -> LLVMPtr sym w -> LLVMPtr sym w -> IO (LLVMPtr sym w)
+ Lang.Crucible.LLVM.MemModel: muxLLVMPtr :: forall (w :: Natural) sym. (1 <= w, IsSymInterface sym) => sym -> Pred sym -> LLVMPtr sym w -> LLVMPtr sym w -> IO (LLVMPtr sym w)
- Lang.Crucible.LLVM.MemModel: packMemValue :: IsSymInterface sym => sym -> StorageType -> TypeRepr tp -> RegValue sym tp -> IO (LLVMVal sym)
+ Lang.Crucible.LLVM.MemModel: packMemValue :: forall sym (tp :: CrucibleType). IsSymInterface sym => sym -> StorageType -> TypeRepr tp -> RegValue sym tp -> IO (LLVMVal sym)
- Lang.Crucible.LLVM.MemModel: pattern PtrWidth :: HasPtrWidth w => w ~ w' => NatRepr w'
+ Lang.Crucible.LLVM.MemModel: pattern PtrWidth :: forall (w :: Natural) w'. HasPtrWidth w => w ~ w' => NatRepr w'
- Lang.Crucible.LLVM.MemModel: pattern SizeT :: HasPtrWidth wptr => ty ~ BVType wptr => TypeRepr ty
+ Lang.Crucible.LLVM.MemModel: pattern SizeT :: forall (wptr :: Natural) ty. HasPtrWidth wptr => ty ~ BVType wptr => TypeRepr ty
- Lang.Crucible.LLVM.MemModel: popStackFrameMem :: forall sym. Mem sym -> Mem sym
+ Lang.Crucible.LLVM.MemModel: popStackFrameMem :: Mem sym -> Mem sym
- Lang.Crucible.LLVM.MemModel: possibleAllocs :: forall sym. IsSymInterface sym => Natural -> Mem sym -> [SomeAlloc sym]
+ Lang.Crucible.LLVM.MemModel: possibleAllocs :: IsSymInterface sym => Natural -> Mem sym -> [SomeAlloc sym]
- Lang.Crucible.LLVM.MemModel: ppLLVMValWithGlobals :: forall sym ann. IsSymInterface sym => sym -> Map Natural Symbol -> LLVMVal sym -> Doc ann
+ Lang.Crucible.LLVM.MemModel: ppLLVMValWithGlobals :: IsSymInterface sym => sym -> Map Natural Symbol -> LLVMVal sym -> Doc ann
- Lang.Crucible.LLVM.MemModel: ppPtr :: IsExpr (SymExpr sym) => LLVMPtr sym wptr -> Doc ann
+ Lang.Crucible.LLVM.MemModel: ppPtr :: forall sym (wptr :: Nat) ann. IsExpr (SymExpr sym) => LLVMPtr sym wptr -> Doc ann
- Lang.Crucible.LLVM.MemModel: ppSomeAlloc :: forall sym ann. IsExprBuilder sym => SomeAlloc sym -> Doc ann
+ Lang.Crucible.LLVM.MemModel: ppSomeAlloc :: IsExprBuilder sym => SomeAlloc sym -> Doc ann
- Lang.Crucible.LLVM.MemModel: ppTermExpr :: forall sym ann. IsExpr (SymExpr sym) => LLVMVal sym -> Doc ann
+ Lang.Crucible.LLVM.MemModel: ppTermExpr :: IsExpr (SymExpr sym) => LLVMVal sym -> Doc ann
- Lang.Crucible.LLVM.MemModel: projectLLVM_bv :: IsSymBackend sym bak => bak -> LLVMPtr sym w -> IO (SymBV sym w)
+ Lang.Crucible.LLVM.MemModel: projectLLVM_bv :: forall sym bak (w :: Nat). IsSymBackend sym bak => bak -> LLVMPtr sym w -> IO (SymBV sym w)
- Lang.Crucible.LLVM.MemModel: ptrAdd :: (1 <= w, IsExprBuilder sym) => sym -> NatRepr w -> LLVMPtr sym w -> SymBV sym w -> IO (LLVMPtr sym w)
+ Lang.Crucible.LLVM.MemModel: ptrAdd :: forall (w :: Natural) sym. (1 <= w, IsExprBuilder sym) => sym -> NatRepr w -> LLVMPtr sym w -> SymBV sym w -> IO (LLVMPtr sym w)
- Lang.Crucible.LLVM.MemModel: ptrDiff :: (1 <= w, IsSymInterface sym) => sym -> NatRepr w -> LLVMPtr sym w -> LLVMPtr sym w -> IO (SymBV sym w, Pred sym)
+ Lang.Crucible.LLVM.MemModel: ptrDiff :: forall (w :: Natural) sym. (1 <= w, IsSymInterface sym) => sym -> NatRepr w -> LLVMPtr sym w -> LLVMPtr sym w -> IO (SymBV sym w, Pred sym)
- Lang.Crucible.LLVM.MemModel: ptrEq :: (1 <= w, IsSymInterface sym) => sym -> NatRepr w -> LLVMPtr sym w -> LLVMPtr sym w -> IO (Pred sym)
+ Lang.Crucible.LLVM.MemModel: ptrEq :: forall (w :: Natural) sym. (1 <= w, IsSymInterface sym) => sym -> NatRepr w -> LLVMPtr sym w -> LLVMPtr sym w -> IO (Pred sym)
- Lang.Crucible.LLVM.MemModel: ptrIsNull :: (1 <= w, IsSymInterface sym) => sym -> NatRepr w -> LLVMPtr sym w -> IO (Pred sym)
+ Lang.Crucible.LLVM.MemModel: ptrIsNull :: forall (w :: Natural) sym. (1 <= w, IsSymInterface sym) => sym -> NatRepr w -> LLVMPtr sym w -> IO (Pred sym)
- Lang.Crucible.LLVM.MemModel: ptrMessage :: IsSymInterface sym => String -> LLVMPtr sym wptr -> StorageType -> String
+ Lang.Crucible.LLVM.MemModel: ptrMessage :: forall sym (wptr :: Nat). IsSymInterface sym => String -> LLVMPtr sym wptr -> StorageType -> String
- Lang.Crucible.LLVM.MemModel: ptrSub :: (1 <= w, IsSymInterface sym) => sym -> NatRepr w -> LLVMPtr sym w -> SymBV sym w -> IO (LLVMPtr sym w)
+ Lang.Crucible.LLVM.MemModel: ptrSub :: forall (w :: Natural) sym. (1 <= w, IsSymInterface sym) => sym -> NatRepr w -> LLVMPtr sym w -> SymBV sym w -> IO (LLVMPtr sym w)
- Lang.Crucible.LLVM.MemModel: ptrToBv :: IsSymBackend sym bak => bak -> SimErrorReason -> LLVMPtr sym w -> IO (SymBV sym w)
+ Lang.Crucible.LLVM.MemModel: ptrToBv :: forall sym bak (w :: Nat). IsSymBackend sym bak => bak -> SimErrorReason -> LLVMPtr sym w -> IO (SymBV sym w)
- Lang.Crucible.LLVM.MemModel: ptrToPtrVal :: 1 <= w => LLVMPtr sym w -> LLVMVal sym
+ Lang.Crucible.LLVM.MemModel: ptrToPtrVal :: forall (w :: Natural) sym. 1 <= w => LLVMPtr sym w -> LLVMVal sym
- Lang.Crucible.LLVM.MemModel: ptrWidth :: IsExprBuilder sym => LLVMPtr sym w -> NatRepr w
+ Lang.Crucible.LLVM.MemModel: ptrWidth :: forall sym (w :: Nat). IsExprBuilder sym => LLVMPtr sym w -> NatRepr w
- Lang.Crucible.LLVM.MemModel: registerGlobal :: (IsExprBuilder sym, 1 <= wptr) => MemImpl sym -> [Symbol] -> LLVMPtr sym wptr -> MemImpl sym
+ Lang.Crucible.LLVM.MemModel: registerGlobal :: forall sym (wptr :: Natural). (IsExprBuilder sym, 1 <= wptr) => MemImpl sym -> [Symbol] -> LLVMPtr sym wptr -> MemImpl sym
- Lang.Crucible.LLVM.MemModel: storeConstRaw :: (IsSymBackend sym bak, HasPtrWidth wptr, HasLLVMAnn sym, ?memOpts :: MemOptions) => bak -> MemImpl sym -> LLVMPtr sym wptr -> StorageType -> Alignment -> LLVMVal sym -> IO (MemImpl sym)
+ Lang.Crucible.LLVM.MemModel: storeConstRaw :: forall sym bak (wptr :: Natural). (IsSymBackend sym bak, HasPtrWidth wptr, HasLLVMAnn sym, ?memOpts :: MemOptions) => bak -> MemImpl sym -> LLVMPtr sym wptr -> StorageType -> Alignment -> LLVMVal sym -> IO (MemImpl sym)
- Lang.Crucible.LLVM.MemModel: storeRaw :: (IsSymBackend sym bak, HasPtrWidth wptr, HasLLVMAnn sym, ?memOpts :: MemOptions) => bak -> MemImpl sym -> LLVMPtr sym wptr -> StorageType -> Alignment -> LLVMVal sym -> IO (MemImpl sym)
+ Lang.Crucible.LLVM.MemModel: storeRaw :: forall sym bak (wptr :: Natural). (IsSymBackend sym bak, HasPtrWidth wptr, HasLLVMAnn sym, ?memOpts :: MemOptions) => bak -> MemImpl sym -> LLVMPtr sym wptr -> StorageType -> Alignment -> LLVMVal sym -> IO (MemImpl sym)
- Lang.Crucible.LLVM.MemModel: strLen :: (IsSymBackend sym bak, HasPtrWidth wptr, HasLLVMAnn sym, ?memOpts :: MemOptions) => bak -> MemImpl sym -> LLVMPtr sym wptr -> IO (SymBV sym wptr)
+ Lang.Crucible.LLVM.MemModel: strLen :: forall sym bak (wptr :: Natural). (IsSymBackend sym bak, HasPtrWidth wptr, HasLLVMAnn sym, ?memOpts :: MemOptions) => bak -> MemImpl sym -> LLVMPtr sym wptr -> IO (SymBV sym wptr)
- Lang.Crucible.LLVM.MemModel: testEqual :: forall sym. (IsExprBuilder sym, IsInterpretedFloatExprBuilder sym) => sym -> LLVMVal sym -> LLVMVal sym -> IO (Maybe (Pred sym))
+ Lang.Crucible.LLVM.MemModel: testEqual :: (IsExprBuilder sym, IsInterpretedFloatExprBuilder sym) => sym -> LLVMVal sym -> LLVMVal sym -> IO (Maybe (Pred sym))
- Lang.Crucible.LLVM.MemModel: toStorableType :: (MonadFail m, HasPtrWidth wptr) => MemType -> m StorageType
+ Lang.Crucible.LLVM.MemModel: toStorableType :: forall m (wptr :: Natural). (MonadFail m, HasPtrWidth wptr) => MemType -> m StorageType
- Lang.Crucible.LLVM.MemModel: type GlobalMap sym = Map Symbol (SomePointer sym)
+ Lang.Crucible.LLVM.MemModel: type GlobalMap sym = Map Symbol SomePointer sym
- Lang.Crucible.LLVM.MemModel: type HasLLVMAnn sym = (?recordLLVMAnnotation :: CallStack -> BoolAnn sym -> BadBehavior sym -> IO ())
+ Lang.Crucible.LLVM.MemModel: type HasLLVMAnn sym = ?recordLLVMAnnotation :: CallStack -> BoolAnn sym -> BadBehavior sym -> IO ()
- Lang.Crucible.LLVM.MemModel: type HasPtrWidth w = (1 <= w, 16 <= w, ?ptrWidth :: NatRepr w)
+ Lang.Crucible.LLVM.MemModel: type HasPtrWidth (w :: Natural) = (1 <= w, 16 <= w, ?ptrWidth :: NatRepr w)
- Lang.Crucible.LLVM.MemModel: type LLVMAnnMap sym = Map (BoolAnn sym) (CallStack, BadBehavior sym)
+ Lang.Crucible.LLVM.MemModel: type LLVMAnnMap sym = Map BoolAnn sym (CallStack, BadBehavior sym)
- Lang.Crucible.LLVM.MemModel: type LLVMPointerType w = IntrinsicType "LLVM_pointer" (EmptyCtx ::> BVType w)
+ Lang.Crucible.LLVM.MemModel: type LLVMPointerType (w :: Nat) = IntrinsicType "LLVM_pointer" EmptyCtx :: Ctx CrucibleType ::> BVType w
- Lang.Crucible.LLVM.MemModel: type LLVMPtr sym w = RegValue sym (LLVMPointerType w)
+ Lang.Crucible.LLVM.MemModel: type LLVMPtr sym (w :: Nat) = RegValue sym LLVMPointerType w
- Lang.Crucible.LLVM.MemModel: type Mem = IntrinsicType "LLVM_memory" EmptyCtx
+ Lang.Crucible.LLVM.MemModel: type Mem = IntrinsicType "LLVM_memory" EmptyCtx :: Ctx CrucibleType
- Lang.Crucible.LLVM.MemModel: uncheckedMemcpy :: (IsSymInterface sym, HasPtrWidth wptr) => sym -> MemImpl sym -> LLVMPtr sym wptr -> LLVMPtr sym wptr -> SymBV sym wptr -> IO (MemImpl sym)
+ Lang.Crucible.LLVM.MemModel: uncheckedMemcpy :: forall sym (wptr :: Natural). (IsSymInterface sym, HasPtrWidth wptr) => sym -> MemImpl sym -> LLVMPtr sym wptr -> LLVMPtr sym wptr -> SymBV sym wptr -> IO (MemImpl sym)
- Lang.Crucible.LLVM.MemModel: unpackMemValue :: (HasCallStack, IsSymInterface sym) => sym -> TypeRepr tp -> LLVMVal sym -> IO (RegValue sym tp)
+ Lang.Crucible.LLVM.MemModel: unpackMemValue :: forall sym (tp :: CrucibleType). (HasCallStack, IsSymInterface sym) => sym -> TypeRepr tp -> LLVMVal sym -> IO (RegValue sym tp)
- Lang.Crucible.LLVM.MemModel: withPtrWidth :: forall w a. 16 <= w => NatRepr w -> (HasPtrWidth w => a) -> a
+ Lang.Crucible.LLVM.MemModel: withPtrWidth :: forall (w :: Natural) a. 16 <= w => NatRepr w -> (HasPtrWidth w => a) -> a
- Lang.Crucible.LLVM.MemModel.Generic: allocAndWriteMem :: (1 <= w, IsExprBuilder sym) => sym -> NatRepr w -> AllocType -> Natural -> StorageType -> Alignment -> Mutability -> String -> LLVMVal sym -> Mem sym -> IO (Mem sym)
+ Lang.Crucible.LLVM.MemModel.Generic: allocAndWriteMem :: forall (w :: Natural) sym. (1 <= w, IsExprBuilder sym) => sym -> NatRepr w -> AllocType -> Natural -> StorageType -> Alignment -> Mutability -> String -> LLVMVal sym -> Mem sym -> IO (Mem sym)
- Lang.Crucible.LLVM.MemModel.Generic: allocMem :: 1 <= w => AllocType -> Natural -> Maybe (SymBV sym w) -> Alignment -> Mutability -> String -> Mem sym -> Mem sym
+ Lang.Crucible.LLVM.MemModel.Generic: allocMem :: forall (w :: Natural) sym. 1 <= w => AllocType -> Natural -> Maybe (SymBV sym w) -> Alignment -> Mutability -> String -> Mem sym -> Mem sym
- Lang.Crucible.LLVM.MemModel.Generic: asMemAllocationArrayStore :: forall sym w. (IsSymInterface sym, 1 <= w) => sym -> NatRepr w -> LLVMPtr sym w -> Mem sym -> IO (Maybe (Pred sym, SymArray sym (SingleCtx (BaseBVType w)) (BaseBVType 8), SymBV sym w))
+ Lang.Crucible.LLVM.MemModel.Generic: asMemAllocationArrayStore :: forall sym (w :: Natural). (IsSymInterface sym, 1 <= w) => sym -> NatRepr w -> LLVMPtr sym w -> Mem sym -> IO (Maybe (Pred sym, SymArray sym (SingleCtx (BaseBVType w)) (BaseBVType 8), SymBV sym w))
- Lang.Crucible.LLVM.MemModel.Generic: asMemMatchingArrayStore :: (IsSymInterface sym, 1 <= w) => sym -> NatRepr w -> LLVMPtr sym w -> SymBV sym w -> Mem sym -> IO (Maybe (Pred sym, SymArray sym (SingleCtx (BaseBVType w)) (BaseBVType 8)))
+ Lang.Crucible.LLVM.MemModel.Generic: asMemMatchingArrayStore :: forall sym (w :: Natural). (IsSymInterface sym, 1 <= w) => sym -> NatRepr w -> LLVMPtr sym w -> SymBV sym w -> Mem sym -> IO (Maybe (Pred sym, SymArray sym (SingleCtx (BaseBVType w)) (BaseBVType 8)))
- Lang.Crucible.LLVM.MemModel.Generic: copyMem :: (1 <= w, IsSymInterface sym) => sym -> NatRepr w -> LLVMPtr sym w -> LLVMPtr sym w -> SymBV sym w -> Mem sym -> IO (Mem sym, Pred sym, Pred sym)
+ Lang.Crucible.LLVM.MemModel.Generic: copyMem :: forall (w :: Natural) sym. (1 <= w, IsSymInterface sym) => sym -> NatRepr w -> LLVMPtr sym w -> LLVMPtr sym w -> SymBV sym w -> Mem sym -> IO (Mem sym, Pred sym, Pred sym)
- Lang.Crucible.LLVM.MemModel.Generic: freeMem :: forall sym w. (1 <= w, IsSymInterface sym) => sym -> NatRepr w -> LLVMPtr sym w -> Mem sym -> String -> IO (Mem sym, Pred sym, Pred sym, Pred sym)
+ Lang.Crucible.LLVM.MemModel.Generic: freeMem :: forall sym (w :: Natural). (1 <= w, IsSymInterface sym) => sym -> NatRepr w -> LLVMPtr sym w -> Mem sym -> String -> IO (Mem sym, Pred sym, Pred sym, Pred sym)
- Lang.Crucible.LLVM.MemModel.Generic: invalidateMem :: (1 <= w, IsSymInterface sym) => sym -> NatRepr w -> LLVMPtr sym w -> Text -> SymBV sym w -> Mem sym -> IO (Mem sym, Pred sym)
+ Lang.Crucible.LLVM.MemModel.Generic: invalidateMem :: forall (w :: Natural) sym. (1 <= w, IsSymInterface sym) => sym -> NatRepr w -> LLVMPtr sym w -> Text -> SymBV sym w -> Mem sym -> IO (Mem sym, Pred sym)
- Lang.Crucible.LLVM.MemModel.Generic: isAligned :: forall sym w. (1 <= w, IsSymInterface sym) => sym -> NatRepr w -> LLVMPtr sym w -> Alignment -> IO (Pred sym)
+ Lang.Crucible.LLVM.MemModel.Generic: isAligned :: forall sym (w :: Natural). (1 <= w, IsSymInterface sym) => sym -> NatRepr w -> LLVMPtr sym w -> Alignment -> IO (Pred sym)
- Lang.Crucible.LLVM.MemModel.Generic: isAllocatedAlignedPointer :: (1 <= w, IsSymInterface sym) => sym -> NatRepr w -> Alignment -> Mutability -> LLVMPtr sym w -> Maybe (SymBV sym w) -> Mem sym -> IO (Pred sym)
+ Lang.Crucible.LLVM.MemModel.Generic: isAllocatedAlignedPointer :: forall (w :: Natural) sym. (1 <= w, IsSymInterface sym) => sym -> NatRepr w -> Alignment -> Mutability -> LLVMPtr sym w -> Maybe (SymBV sym w) -> Mem sym -> IO (Pred sym)
- Lang.Crucible.LLVM.MemModel.Generic: isAllocatedMutable :: (1 <= w, IsSymInterface sym) => sym -> NatRepr w -> Alignment -> LLVMPtr sym w -> Maybe (SymBV sym w) -> Mem sym -> IO (Pred sym)
+ Lang.Crucible.LLVM.MemModel.Generic: isAllocatedMutable :: forall (w :: Natural) sym. (1 <= w, IsSymInterface sym) => sym -> NatRepr w -> Alignment -> LLVMPtr sym w -> Maybe (SymBV sym w) -> Mem sym -> IO (Pred sym)
- Lang.Crucible.LLVM.MemModel.Generic: isValidPointer :: (1 <= w, IsSymInterface sym) => sym -> NatRepr w -> LLVMPtr sym w -> Mem sym -> IO (Pred sym)
+ Lang.Crucible.LLVM.MemModel.Generic: isValidPointer :: forall (w :: Natural) sym. (1 <= w, IsSymInterface sym) => sym -> NatRepr w -> LLVMPtr sym w -> Mem sym -> IO (Pred sym)
- Lang.Crucible.LLVM.MemModel.Generic: notAliasable :: forall sym w. IsSymInterface sym => sym -> LLVMPtr sym w -> LLVMPtr sym w -> Mem sym -> IO (Pred sym)
+ Lang.Crucible.LLVM.MemModel.Generic: notAliasable :: forall sym (w :: Nat). IsSymInterface sym => sym -> LLVMPtr sym w -> LLVMPtr sym w -> Mem sym -> IO (Pred sym)
- Lang.Crucible.LLVM.MemModel.Generic: popStackFrameMem :: forall sym. Mem sym -> Mem sym
+ Lang.Crucible.LLVM.MemModel.Generic: popStackFrameMem :: Mem sym -> Mem sym
- Lang.Crucible.LLVM.MemModel.Generic: possibleAllocInfo :: forall sym. IsExpr (SymExpr sym) => Natural -> MemAllocs sym -> Maybe (AllocInfo sym)
+ Lang.Crucible.LLVM.MemModel.Generic: possibleAllocInfo :: IsExpr (SymExpr sym) => Natural -> MemAllocs sym -> Maybe (AllocInfo sym)
- Lang.Crucible.LLVM.MemModel.Generic: possibleAllocs :: forall sym. IsSymInterface sym => Natural -> Mem sym -> [SomeAlloc sym]
+ Lang.Crucible.LLVM.MemModel.Generic: possibleAllocs :: IsSymInterface sym => Natural -> Mem sym -> [SomeAlloc sym]
- Lang.Crucible.LLVM.MemModel.Generic: ppPtr :: IsExpr (SymExpr sym) => LLVMPtr sym wptr -> Doc ann
+ Lang.Crucible.LLVM.MemModel.Generic: ppPtr :: forall sym (wptr :: Nat) ann. IsExpr (SymExpr sym) => LLVMPtr sym wptr -> Doc ann
- Lang.Crucible.LLVM.MemModel.Generic: ppSomeAlloc :: forall sym ann. IsExprBuilder sym => SomeAlloc sym -> Doc ann
+ Lang.Crucible.LLVM.MemModel.Generic: ppSomeAlloc :: IsExprBuilder sym => SomeAlloc sym -> Doc ann
- Lang.Crucible.LLVM.MemModel.Generic: ppTermExpr :: forall sym ann. IsExpr (SymExpr sym) => LLVMVal sym -> Doc ann
+ Lang.Crucible.LLVM.MemModel.Generic: ppTermExpr :: IsExpr (SymExpr sym) => LLVMVal sym -> Doc ann
- Lang.Crucible.LLVM.MemModel.Generic: readMem :: forall sym w. (1 <= w, IsSymInterface sym, HasLLVMAnn sym, ?memOpts :: MemOptions) => sym -> NatRepr w -> Maybe String -> LLVMPtr sym w -> StorageType -> Alignment -> Mem sym -> IO (PartLLVMVal sym)
+ Lang.Crucible.LLVM.MemModel.Generic: readMem :: forall sym (w :: Natural). (1 <= w, IsSymInterface sym, HasLLVMAnn sym, ?memOpts :: MemOptions) => sym -> NatRepr w -> Maybe String -> LLVMPtr sym w -> StorageType -> Alignment -> Mem sym -> IO (PartLLVMVal sym)
- Lang.Crucible.LLVM.MemModel.Generic: setMem :: (1 <= w, IsSymInterface sym) => sym -> NatRepr w -> LLVMPtr sym w -> SymBV sym 8 -> SymBV sym w -> Mem sym -> IO (Mem sym, Pred sym)
+ Lang.Crucible.LLVM.MemModel.Generic: setMem :: forall (w :: Natural) sym. (1 <= w, IsSymInterface sym) => sym -> NatRepr w -> LLVMPtr sym w -> SymBV sym 8 -> SymBV sym w -> Mem sym -> IO (Mem sym, Pred sym)
- Lang.Crucible.LLVM.MemModel.Generic: writeArrayConstMem :: (IsSymInterface sym, 1 <= w) => sym -> NatRepr w -> LLVMPtr sym w -> Alignment -> SymArray sym (SingleCtx (BaseBVType w)) (BaseBVType 8) -> Maybe (SymBV sym w) -> Mem sym -> IO (Mem sym, Pred sym, Pred sym)
+ Lang.Crucible.LLVM.MemModel.Generic: writeArrayConstMem :: forall sym (w :: Natural). (IsSymInterface sym, 1 <= w) => sym -> NatRepr w -> LLVMPtr sym w -> Alignment -> SymArray sym (SingleCtx (BaseBVType w)) (BaseBVType 8) -> Maybe (SymBV sym w) -> Mem sym -> IO (Mem sym, Pred sym, Pred sym)
- Lang.Crucible.LLVM.MemModel.Generic: writeArrayMem :: (IsSymInterface sym, 1 <= w) => sym -> NatRepr w -> LLVMPtr sym w -> Alignment -> SymArray sym (SingleCtx (BaseBVType w)) (BaseBVType 8) -> Maybe (SymBV sym w) -> Mem sym -> IO (Mem sym, Pred sym, Pred sym)
+ Lang.Crucible.LLVM.MemModel.Generic: writeArrayMem :: forall sym (w :: Natural). (IsSymInterface sym, 1 <= w) => sym -> NatRepr w -> LLVMPtr sym w -> Alignment -> SymArray sym (SingleCtx (BaseBVType w)) (BaseBVType 8) -> Maybe (SymBV sym w) -> Mem sym -> IO (Mem sym, Pred sym, Pred sym)
- Lang.Crucible.LLVM.MemModel.Generic: writeConstMem :: (1 <= w, IsSymInterface sym, HasLLVMAnn sym, ?memOpts :: MemOptions) => sym -> NatRepr w -> Maybe String -> LLVMPtr sym w -> StorageType -> Alignment -> LLVMVal sym -> Mem sym -> IO (Mem sym, Pred sym, Pred sym)
+ Lang.Crucible.LLVM.MemModel.Generic: writeConstMem :: forall (w :: Natural) sym. (1 <= w, IsSymInterface sym, HasLLVMAnn sym, ?memOpts :: MemOptions) => sym -> NatRepr w -> Maybe String -> LLVMPtr sym w -> StorageType -> Alignment -> LLVMVal sym -> Mem sym -> IO (Mem sym, Pred sym, Pred sym)
- Lang.Crucible.LLVM.MemModel.Generic: writeMem :: (1 <= w, IsSymInterface sym, HasLLVMAnn sym, ?memOpts :: MemOptions) => sym -> NatRepr w -> Maybe String -> LLVMPtr sym w -> StorageType -> Alignment -> LLVMVal sym -> Mem sym -> IO (Mem sym, Pred sym, Pred sym)
+ Lang.Crucible.LLVM.MemModel.Generic: writeMem :: forall (w :: Natural) sym. (1 <= w, IsSymInterface sym, HasLLVMAnn sym, ?memOpts :: MemOptions) => sym -> NatRepr w -> Maybe String -> LLVMPtr sym w -> StorageType -> Alignment -> LLVMVal sym -> Mem sym -> IO (Mem sym, Pred sym, Pred sym)
- Lang.Crucible.LLVM.MemModel.MemLog: MemArrayStore :: SymArray sym (SingleCtx (BaseBVType w)) (BaseBVType 8) -> Maybe (SymBV sym w) -> WriteSource sym w
+ Lang.Crucible.LLVM.MemModel.MemLog: MemArrayStore :: SymArray sym (SingleCtx (BaseBVType w)) (BaseBVType 8) -> Maybe (SymBV sym w) -> WriteSource sym (w :: Nat)
- Lang.Crucible.LLVM.MemModel.MemLog: MemCopy :: LLVMPtr sym w -> SymBV sym w -> WriteSource sym w
+ Lang.Crucible.LLVM.MemModel.MemLog: MemCopy :: LLVMPtr sym w -> SymBV sym w -> WriteSource sym (w :: Nat)
- Lang.Crucible.LLVM.MemModel.MemLog: MemInvalidate :: Text -> SymBV sym w -> WriteSource sym w
+ Lang.Crucible.LLVM.MemModel.MemLog: MemInvalidate :: Text -> SymBV sym w -> WriteSource sym (w :: Nat)
- Lang.Crucible.LLVM.MemModel.MemLog: MemSet :: SymBV sym 8 -> SymBV sym w -> WriteSource sym w
+ Lang.Crucible.LLVM.MemModel.MemLog: MemSet :: SymBV sym 8 -> SymBV sym w -> WriteSource sym (w :: Nat)
- Lang.Crucible.LLVM.MemModel.MemLog: MemStore :: LLVMVal sym -> StorageType -> Alignment -> WriteSource sym w
+ Lang.Crucible.LLVM.MemModel.MemLog: MemStore :: LLVMVal sym -> StorageType -> Alignment -> WriteSource sym (w :: Nat)
- Lang.Crucible.LLVM.MemModel.MemLog: concLLVMVal :: IsExprBuilder sym => sym -> (forall tp. SymExpr sym tp -> IO (GroundValue tp)) -> LLVMVal sym -> IO (LLVMVal sym)
+ Lang.Crucible.LLVM.MemModel.MemLog: concLLVMVal :: IsExprBuilder sym => sym -> (forall (tp :: BaseType). () => SymExpr sym tp -> IO (GroundValue tp)) -> LLVMVal sym -> IO (LLVMVal sym)
- Lang.Crucible.LLVM.MemModel.MemLog: concMem :: IsExprBuilder sym => sym -> (forall tp. SymExpr sym tp -> IO (GroundValue tp)) -> Mem sym -> IO (Mem sym)
+ Lang.Crucible.LLVM.MemModel.MemLog: concMem :: IsExprBuilder sym => sym -> (forall (tp :: BaseType). () => SymExpr sym tp -> IO (GroundValue tp)) -> Mem sym -> IO (Mem sym)
- Lang.Crucible.LLVM.MemModel.MemLog: concPtr :: (IsExprBuilder sym, 1 <= w) => sym -> (forall tp. SymExpr sym tp -> IO (GroundValue tp)) -> RegValue sym (LLVMPointerType w) -> IO (RegValue sym (LLVMPointerType w))
+ Lang.Crucible.LLVM.MemModel.MemLog: concPtr :: forall sym (w :: Natural). (IsExprBuilder sym, 1 <= w) => sym -> (forall (tp :: BaseType). () => SymExpr sym tp -> IO (GroundValue tp)) -> RegValue sym (LLVMPointerType w) -> IO (RegValue sym (LLVMPointerType w))
- Lang.Crucible.LLVM.MemModel.MemLog: data WriteSource sym w
+ Lang.Crucible.LLVM.MemModel.MemLog: data WriteSource sym (w :: Nat)
- Lang.Crucible.LLVM.MemModel.MemLog: isAllocatedGeneric :: forall sym. (IsExpr (SymExpr sym), IsExprBuilder sym) => sym -> (AllocInfo sym -> IO (Pred sym)) -> SymNat sym -> MemAllocs sym -> IO (Pred sym, Pred sym)
+ Lang.Crucible.LLVM.MemModel.MemLog: isAllocatedGeneric :: (IsExpr (SymExpr sym), IsExprBuilder sym) => sym -> (AllocInfo sym -> IO (Pred sym)) -> SymNat sym -> MemAllocs sym -> IO (Pred sym, Pred sym)
- Lang.Crucible.LLVM.MemModel.MemLog: memState :: Lens' (Mem sym) (MemState sym)
+ Lang.Crucible.LLVM.MemModel.MemLog: memState :: forall sym f. Functor f => (MemState sym -> f (MemState sym)) -> Mem sym -> f (Mem sym)
- Lang.Crucible.LLVM.MemModel.MemLog: memWritesSingleton :: (IsExprBuilder sym, 1 <= w) => LLVMPtr sym w -> WriteSource sym w -> MemWrites sym
+ Lang.Crucible.LLVM.MemModel.MemLog: memWritesSingleton :: forall sym (w :: Natural). (IsExprBuilder sym, 1 <= w) => LLVMPtr sym w -> WriteSource sym w -> MemWrites sym
- Lang.Crucible.LLVM.MemModel.MemLog: popMemAllocs :: forall sym. MemAllocs sym -> MemAllocs sym
+ Lang.Crucible.LLVM.MemModel.MemLog: popMemAllocs :: MemAllocs sym -> MemAllocs sym
- Lang.Crucible.LLVM.MemModel.MemLog: possibleAllocInfo :: forall sym. IsExpr (SymExpr sym) => Natural -> MemAllocs sym -> Maybe (AllocInfo sym)
+ Lang.Crucible.LLVM.MemModel.MemLog: possibleAllocInfo :: IsExpr (SymExpr sym) => Natural -> MemAllocs sym -> Maybe (AllocInfo sym)
- Lang.Crucible.LLVM.MemModel.MemLog: ppPtr :: IsExpr (SymExpr sym) => LLVMPtr sym wptr -> Doc ann
+ Lang.Crucible.LLVM.MemModel.MemLog: ppPtr :: forall sym (wptr :: Nat) ann. IsExpr (SymExpr sym) => LLVMPtr sym wptr -> Doc ann
- Lang.Crucible.LLVM.MemModel.MemLog: writeRangesMem :: (IsExprBuilder sym, HasPtrWidth w) => sym -> Mem sym -> MaybeT IO (Map Natural [(SymBV sym w, SymBV sym w)])
+ Lang.Crucible.LLVM.MemModel.MemLog: writeRangesMem :: forall sym (w :: Natural). (IsExprBuilder sym, HasPtrWidth w) => sym -> Mem sym -> MaybeT IO (Map Natural [(SymBV sym w, SymBV sym w)])
- Lang.Crucible.LLVM.MemModel.MemLog: writeSourceSize :: (IsExprBuilder sym, 1 <= w) => sym -> NatRepr w -> WriteSource sym w -> MaybeT IO (SymBV sym w)
+ Lang.Crucible.LLVM.MemModel.MemLog: writeSourceSize :: forall sym (w :: Natural). (IsExprBuilder sym, 1 <= w) => sym -> NatRepr w -> WriteSource sym w -> MaybeT IO (SymBV sym w)
- Lang.Crucible.LLVM.MemModel.Partial: [DisjOfFailures] :: [(CallStack, BadBehavior sym)] -> CexExplanation sym BaseBoolType
+ Lang.Crucible.LLVM.MemModel.Partial: [DisjOfFailures] :: forall sym. [(CallStack, BadBehavior sym)] -> CexExplanation sym 'BaseBoolType
- Lang.Crucible.LLVM.MemModel.Partial: [Err] :: Pred sym -> PartLLVMVal sym
+ Lang.Crucible.LLVM.MemModel.Partial: [Err] :: forall sym. Pred sym -> PartLLVMVal sym
- Lang.Crucible.LLVM.MemModel.Partial: [MemoryError] :: 1 <= w => MemoryOp sym w -> MemoryErrorReason -> MemoryError sym
+ Lang.Crucible.LLVM.MemModel.Partial: [MemoryError] :: forall (w :: Natural) sym. 1 <= w => MemoryOp sym w -> MemoryErrorReason -> MemoryError sym
- Lang.Crucible.LLVM.MemModel.Partial: [NoErr] :: Pred sym -> LLVMVal sym -> PartLLVMVal sym
+ Lang.Crucible.LLVM.MemModel.Partial: [NoErr] :: forall sym. Pred sym -> LLVMVal sym -> PartLLVMVal sym
- Lang.Crucible.LLVM.MemModel.Partial: [NoExplanation] :: CexExplanation sym tp
+ Lang.Crucible.LLVM.MemModel.Partial: [NoExplanation] :: forall sym (tp :: BaseType). CexExplanation sym tp
- Lang.Crucible.LLVM.MemModel.Partial: annotateME :: (IsSymInterface sym, HasLLVMAnn sym, 1 <= w) => sym -> MemoryOp sym w -> MemoryErrorReason -> Pred sym -> IO (Pred sym)
+ Lang.Crucible.LLVM.MemModel.Partial: annotateME :: forall sym (w :: Natural). (IsSymInterface sym, HasLLVMAnn sym, 1 <= w) => sym -> MemoryOp sym w -> MemoryErrorReason -> Pred sym -> IO (Pred sym)
- Lang.Crucible.LLVM.MemModel.Partial: appendArray :: (IsSymInterface sym, HasLLVMAnn sym, 1 <= w) => sym -> MemoryOp sym w -> PartLLVMVal sym -> PartLLVMVal sym -> IO (PartLLVMVal sym)
+ Lang.Crucible.LLVM.MemModel.Partial: appendArray :: forall sym (w :: Natural). (IsSymInterface sym, HasLLVMAnn sym, 1 <= w) => sym -> MemoryOp sym w -> PartLLVMVal sym -> PartLLVMVal sym -> IO (PartLLVMVal sym)
- Lang.Crucible.LLVM.MemModel.Partial: arrayElt :: (IsSymInterface sym, HasLLVMAnn sym, 1 <= w) => sym -> MemoryOp sym w -> Natural -> StorageType -> Natural -> PartLLVMVal sym -> IO (PartLLVMVal sym)
+ Lang.Crucible.LLVM.MemModel.Partial: arrayElt :: forall sym (w :: Natural). (IsSymInterface sym, HasLLVMAnn sym, 1 <= w) => sym -> MemoryOp sym w -> Natural -> StorageType -> Natural -> PartLLVMVal sym -> IO (PartLLVMVal sym)
- Lang.Crucible.LLVM.MemModel.Partial: attachMemoryError :: (1 <= w, IsSymInterface sym, HasLLVMAnn sym) => sym -> Pred sym -> MemoryOp sym w -> MemoryErrorReason -> PartLLVMVal sym -> IO (PartLLVMVal sym)
+ Lang.Crucible.LLVM.MemModel.Partial: attachMemoryError :: forall (w :: Natural) sym. (1 <= w, IsSymInterface sym, HasLLVMAnn sym) => sym -> Pred sym -> MemoryOp sym w -> MemoryErrorReason -> PartLLVMVal sym -> IO (PartLLVMVal sym)
- Lang.Crucible.LLVM.MemModel.Partial: bvConcat :: forall sym w. (IsSymInterface sym, HasLLVMAnn sym, 1 <= w) => sym -> MemoryOp sym w -> PartLLVMVal sym -> PartLLVMVal sym -> IO (PartLLVMVal sym)
+ Lang.Crucible.LLVM.MemModel.Partial: bvConcat :: forall sym (w :: Natural). (IsSymInterface sym, HasLLVMAnn sym, 1 <= w) => sym -> MemoryOp sym w -> PartLLVMVal sym -> PartLLVMVal sym -> IO (PartLLVMVal sym)
- Lang.Crucible.LLVM.MemModel.Partial: bvToDouble :: (IsSymInterface sym, HasLLVMAnn sym, 1 <= w) => sym -> MemoryOp sym w -> PartLLVMVal sym -> IO (PartLLVMVal sym)
+ Lang.Crucible.LLVM.MemModel.Partial: bvToDouble :: forall sym (w :: Natural). (IsSymInterface sym, HasLLVMAnn sym, 1 <= w) => sym -> MemoryOp sym w -> PartLLVMVal sym -> IO (PartLLVMVal sym)
- Lang.Crucible.LLVM.MemModel.Partial: bvToFloat :: forall sym w. (IsSymInterface sym, HasLLVMAnn sym, 1 <= w) => sym -> MemoryOp sym w -> PartLLVMVal sym -> IO (PartLLVMVal sym)
+ Lang.Crucible.LLVM.MemModel.Partial: bvToFloat :: forall sym (w :: Natural). (IsSymInterface sym, HasLLVMAnn sym, 1 <= w) => sym -> MemoryOp sym w -> PartLLVMVal sym -> IO (PartLLVMVal sym)
- Lang.Crucible.LLVM.MemModel.Partial: bvToX86_FP80 :: (IsSymInterface sym, HasLLVMAnn sym, 1 <= w) => sym -> MemoryOp sym w -> PartLLVMVal sym -> IO (PartLLVMVal sym)
+ Lang.Crucible.LLVM.MemModel.Partial: bvToX86_FP80 :: forall sym (w :: Natural). (IsSymInterface sym, HasLLVMAnn sym, 1 <= w) => sym -> MemoryOp sym w -> PartLLVMVal sym -> IO (PartLLVMVal sym)
- Lang.Crucible.LLVM.MemModel.Partial: consArray :: (IsSymInterface sym, HasLLVMAnn sym, 1 <= w) => sym -> MemoryOp sym w -> PartLLVMVal sym -> PartLLVMVal sym -> IO (PartLLVMVal sym)
+ Lang.Crucible.LLVM.MemModel.Partial: consArray :: forall sym (w :: Natural). (IsSymInterface sym, HasLLVMAnn sym, 1 <= w) => sym -> MemoryOp sym w -> PartLLVMVal sym -> PartLLVMVal sym -> IO (PartLLVMVal sym)
- Lang.Crucible.LLVM.MemModel.Partial: doubleToBV :: (IsSymInterface sym, HasLLVMAnn sym, 1 <= w) => sym -> MemoryOp sym w -> PartLLVMVal sym -> IO (PartLLVMVal sym)
+ Lang.Crucible.LLVM.MemModel.Partial: doubleToBV :: forall sym (w :: Natural). (IsSymInterface sym, HasLLVMAnn sym, 1 <= w) => sym -> MemoryOp sym w -> PartLLVMVal sym -> IO (PartLLVMVal sym)
- Lang.Crucible.LLVM.MemModel.Partial: explainCex :: forall t st fs sym. (IsSymInterface sym, sym ~ ExprBuilder t st fs) => sym -> LLVMAnnMap sym -> Maybe (GroundEvalFn t) -> IO (Pred sym -> IO (CexExplanation sym BaseBoolType))
+ Lang.Crucible.LLVM.MemModel.Partial: explainCex :: forall t (st :: Type -> Type) fs sym. (IsSymInterface sym, sym ~ ExprBuilder t st fs) => sym -> LLVMAnnMap sym -> Maybe (GroundEvalFn t) -> IO (Pred sym -> IO (CexExplanation sym BaseBoolType))
- Lang.Crucible.LLVM.MemModel.Partial: fieldVal :: (IsSymInterface sym, HasLLVMAnn sym, 1 <= w) => sym -> MemoryOp sym w -> Vector (Field StorageType) -> Int -> PartLLVMVal sym -> IO (PartLLVMVal sym)
+ Lang.Crucible.LLVM.MemModel.Partial: fieldVal :: forall sym (w :: Natural). (IsSymInterface sym, HasLLVMAnn sym, 1 <= w) => sym -> MemoryOp sym w -> Vector (Field StorageType) -> Int -> PartLLVMVal sym -> IO (PartLLVMVal sym)
- Lang.Crucible.LLVM.MemModel.Partial: floatToBV :: (IsSymInterface sym, HasLLVMAnn sym, 1 <= w) => sym -> MemoryOp sym w -> PartLLVMVal sym -> IO (PartLLVMVal sym)
+ Lang.Crucible.LLVM.MemModel.Partial: floatToBV :: forall sym (w :: Natural). (IsSymInterface sym, HasLLVMAnn sym, 1 <= w) => sym -> MemoryOp sym w -> PartLLVMVal sym -> IO (PartLLVMVal sym)
- Lang.Crucible.LLVM.MemModel.Partial: fp80ToBV :: (IsSymInterface sym, HasLLVMAnn sym, 1 <= w) => sym -> MemoryOp sym w -> PartLLVMVal sym -> IO (PartLLVMVal sym)
+ Lang.Crucible.LLVM.MemModel.Partial: fp80ToBV :: forall sym (w :: Natural). (IsSymInterface sym, HasLLVMAnn sym, 1 <= w) => sym -> MemoryOp sym w -> PartLLVMVal sym -> IO (PartLLVMVal sym)
- Lang.Crucible.LLVM.MemModel.Partial: mkArray :: forall sym. (IsExprBuilder sym, IsSymInterface sym) => sym -> StorageType -> Vector (PartLLVMVal sym) -> IO (PartLLVMVal sym)
+ Lang.Crucible.LLVM.MemModel.Partial: mkArray :: (IsExprBuilder sym, IsSymInterface sym) => sym -> StorageType -> Vector (PartLLVMVal sym) -> IO (PartLLVMVal sym)
- Lang.Crucible.LLVM.MemModel.Partial: mkStruct :: forall sym. IsExprBuilder sym => sym -> Vector (Field StorageType, PartLLVMVal sym) -> IO (PartLLVMVal sym)
+ Lang.Crucible.LLVM.MemModel.Partial: mkStruct :: IsExprBuilder sym => sym -> Vector (Field StorageType, PartLLVMVal sym) -> IO (PartLLVMVal sym)
- Lang.Crucible.LLVM.MemModel.Partial: muxLLVMVal :: forall sym. (IsSymInterface sym, HasLLVMAnn sym) => sym -> Pred sym -> PartLLVMVal sym -> PartLLVMVal sym -> IO (PartLLVMVal sym)
+ Lang.Crucible.LLVM.MemModel.Partial: muxLLVMVal :: (IsSymInterface sym, HasLLVMAnn sym) => sym -> Pred sym -> PartLLVMVal sym -> PartLLVMVal sym -> IO (PartLLVMVal sym)
- Lang.Crucible.LLVM.MemModel.Partial: partErr :: (IsSymInterface sym, HasLLVMAnn sym, 1 <= w) => sym -> MemoryOp sym w -> MemoryErrorReason -> IO (PartLLVMVal sym)
+ Lang.Crucible.LLVM.MemModel.Partial: partErr :: forall sym (w :: Natural). (IsSymInterface sym, HasLLVMAnn sym, 1 <= w) => sym -> MemoryOp sym w -> MemoryErrorReason -> IO (PartLLVMVal sym)
- Lang.Crucible.LLVM.MemModel.Partial: projectLLVM_bv :: IsSymBackend sym bak => bak -> LLVMPtr sym w -> IO (SymBV sym w)
+ Lang.Crucible.LLVM.MemModel.Partial: projectLLVM_bv :: forall sym bak (w :: Nat). IsSymBackend sym bak => bak -> LLVMPtr sym w -> IO (SymBV sym w)
- Lang.Crucible.LLVM.MemModel.Partial: ptrToBv :: IsSymBackend sym bak => bak -> SimErrorReason -> LLVMPtr sym w -> IO (SymBV sym w)
+ Lang.Crucible.LLVM.MemModel.Partial: ptrToBv :: forall sym bak (w :: Nat). IsSymBackend sym bak => bak -> SimErrorReason -> LLVMPtr sym w -> IO (SymBV sym w)
- Lang.Crucible.LLVM.MemModel.Partial: selectHighBv :: (IsSymInterface sym, HasLLVMAnn sym, 1 <= w) => sym -> MemoryOp sym w -> Bytes -> Bytes -> PartLLVMVal sym -> IO (PartLLVMVal sym)
+ Lang.Crucible.LLVM.MemModel.Partial: selectHighBv :: forall sym (w :: Natural). (IsSymInterface sym, HasLLVMAnn sym, 1 <= w) => sym -> MemoryOp sym w -> Bytes -> Bytes -> PartLLVMVal sym -> IO (PartLLVMVal sym)
- Lang.Crucible.LLVM.MemModel.Partial: selectLowBv :: (IsSymInterface sym, HasLLVMAnn sym, 1 <= w) => sym -> MemoryOp sym w -> Bytes -> Bytes -> PartLLVMVal sym -> IO (PartLLVMVal sym)
+ Lang.Crucible.LLVM.MemModel.Partial: selectLowBv :: forall sym (w :: Natural). (IsSymInterface sym, HasLLVMAnn sym, 1 <= w) => sym -> MemoryOp sym w -> Bytes -> Bytes -> PartLLVMVal sym -> IO (PartLLVMVal sym)
- Lang.Crucible.LLVM.MemModel.Partial: type HasLLVMAnn sym = (?recordLLVMAnnotation :: CallStack -> BoolAnn sym -> BadBehavior sym -> IO ())
+ Lang.Crucible.LLVM.MemModel.Partial: type HasLLVMAnn sym = ?recordLLVMAnnotation :: CallStack -> BoolAnn sym -> BadBehavior sym -> IO ()
- Lang.Crucible.LLVM.MemModel.Partial: type LLVMAnnMap sym = Map (BoolAnn sym) (CallStack, BadBehavior sym)
+ Lang.Crucible.LLVM.MemModel.Partial: type LLVMAnnMap sym = Map BoolAnn sym (CallStack, BadBehavior sym)
- Lang.Crucible.LLVM.MemModel.Pointer: ConcLLVMPtr :: Integer -> BV w -> NatRepr w -> ConcLLVMPtr w
+ Lang.Crucible.LLVM.MemModel.Pointer: ConcLLVMPtr :: Integer -> BV w -> NatRepr w -> ConcLLVMPtr (w :: Nat)
- Lang.Crucible.LLVM.MemModel.Pointer: [concBlock] :: ConcLLVMPtr w -> Integer
+ Lang.Crucible.LLVM.MemModel.Pointer: [concBlock] :: ConcLLVMPtr (w :: Nat) -> Integer
- Lang.Crucible.LLVM.MemModel.Pointer: [concOffset] :: ConcLLVMPtr w -> BV w
+ Lang.Crucible.LLVM.MemModel.Pointer: [concOffset] :: ConcLLVMPtr (w :: Nat) -> BV w
- Lang.Crucible.LLVM.MemModel.Pointer: [concWidth] :: ConcLLVMPtr w -> NatRepr w
+ Lang.Crucible.LLVM.MemModel.Pointer: [concWidth] :: ConcLLVMPtr (w :: Nat) -> NatRepr w
- Lang.Crucible.LLVM.MemModel.Pointer: annotatePointerBlock :: forall sym w. IsSymInterface sym => sym -> LLVMPtr sym w -> IO (SymAnnotation sym BaseIntegerType, LLVMPointer sym w)
+ Lang.Crucible.LLVM.MemModel.Pointer: annotatePointerBlock :: forall sym (w :: Nat). IsSymInterface sym => sym -> LLVMPtr sym w -> IO (SymAnnotation sym BaseIntegerType, LLVMPointer sym w)
- Lang.Crucible.LLVM.MemModel.Pointer: annotatePointerOffset :: forall sym w. IsSymInterface sym => sym -> LLVMPtr sym w -> IO (SymAnnotation sym (BaseBVType w), LLVMPointer sym w)
+ Lang.Crucible.LLVM.MemModel.Pointer: annotatePointerOffset :: forall sym (w :: Nat). IsSymInterface sym => sym -> LLVMPtr sym w -> IO (SymAnnotation sym (BaseBVType w), LLVMPointer sym w)
- Lang.Crucible.LLVM.MemModel.Pointer: concBV :: (IsExprBuilder sym, 1 <= w) => sym -> (forall tp. SymExpr sym tp -> IO (GroundValue tp)) -> SymBV sym w -> IO (SymBV sym w)
+ Lang.Crucible.LLVM.MemModel.Pointer: concBV :: forall sym (w :: Natural). (IsExprBuilder sym, 1 <= w) => sym -> (forall (tp :: BaseType). () => SymExpr sym tp -> IO (GroundValue tp)) -> SymBV sym w -> IO (SymBV sym w)
- Lang.Crucible.LLVM.MemModel.Pointer: concLLVMPtr :: IsExprBuilder sym => (forall tp. SymExpr sym tp -> IO (GroundValue tp)) -> RegValue sym (LLVMPointerType w) -> IO (ConcLLVMPtr w)
+ Lang.Crucible.LLVM.MemModel.Pointer: concLLVMPtr :: forall sym (w :: Nat). IsExprBuilder sym => (forall (tp :: BaseType). () => SymExpr sym tp -> IO (GroundValue tp)) -> RegValue sym (LLVMPointerType w) -> IO (ConcLLVMPtr w)
- Lang.Crucible.LLVM.MemModel.Pointer: concLLVMPtrToSymbolic :: (IsExprBuilder sym, 1 <= w) => sym -> ConcLLVMPtr w -> IO (RegValue sym (LLVMPointerType w))
+ Lang.Crucible.LLVM.MemModel.Pointer: concLLVMPtrToSymbolic :: forall sym (w :: Natural). (IsExprBuilder sym, 1 <= w) => sym -> ConcLLVMPtr w -> IO (RegValue sym (LLVMPointerType w))
- Lang.Crucible.LLVM.MemModel.Pointer: concPtr :: (IsExprBuilder sym, 1 <= w) => sym -> (forall tp. SymExpr sym tp -> IO (GroundValue tp)) -> RegValue sym (LLVMPointerType w) -> IO (RegValue sym (LLVMPointerType w))
+ Lang.Crucible.LLVM.MemModel.Pointer: concPtr :: forall sym (w :: Natural). (IsExprBuilder sym, 1 <= w) => sym -> (forall (tp :: BaseType). () => SymExpr sym tp -> IO (GroundValue tp)) -> RegValue sym (LLVMPointerType w) -> IO (RegValue sym (LLVMPointerType w))
- Lang.Crucible.LLVM.MemModel.Pointer: concPtr' :: (IsExprBuilder sym, 1 <= w) => sym -> (forall tp. SymExpr sym tp -> IO (GroundValue tp)) -> RegValue' sym (LLVMPointerType w) -> IO (RegValue' sym (LLVMPointerType w))
+ Lang.Crucible.LLVM.MemModel.Pointer: concPtr' :: forall sym (w :: Natural). (IsExprBuilder sym, 1 <= w) => sym -> (forall (tp :: BaseType). () => SymExpr sym tp -> IO (GroundValue tp)) -> RegValue' sym (LLVMPointerType w) -> IO (RegValue' sym (LLVMPointerType w))
- Lang.Crucible.LLVM.MemModel.Pointer: constOffset :: (1 <= w, IsExprBuilder sym) => sym -> NatRepr w -> Addr -> IO (SymBV sym w)
+ Lang.Crucible.LLVM.MemModel.Pointer: constOffset :: forall (w :: Natural) sym. (1 <= w, IsExprBuilder sym) => sym -> NatRepr w -> Addr -> IO (SymBV sym w)
- Lang.Crucible.LLVM.MemModel.Pointer: data ConcLLVMPtr w
+ Lang.Crucible.LLVM.MemModel.Pointer: data ConcLLVMPtr (w :: Nat)
- Lang.Crucible.LLVM.MemModel.Pointer: isGlobalPointer :: forall sym w. IsSymInterface sym => Map Natural Symbol -> LLVMPtr sym w -> Maybe Symbol
+ Lang.Crucible.LLVM.MemModel.Pointer: isGlobalPointer :: forall sym (w :: Nat). IsSymInterface sym => Map Natural Symbol -> LLVMPtr sym w -> Maybe Symbol
- Lang.Crucible.LLVM.MemModel.Pointer: isGlobalPointer' :: forall sym w. IsSymInterface sym => Map Natural Symbol -> LLVMPtr sym w -> Maybe Symbol
+ Lang.Crucible.LLVM.MemModel.Pointer: isGlobalPointer' :: forall sym (w :: Nat). IsSymInterface sym => Map Natural Symbol -> LLVMPtr sym w -> Maybe Symbol
- Lang.Crucible.LLVM.MemModel.Pointer: llvmPointerBlock :: LLVMPtr sym w -> SymNat sym
+ Lang.Crucible.LLVM.MemModel.Pointer: llvmPointerBlock :: forall sym (w :: Nat). LLVMPtr sym w -> SymNat sym
- Lang.Crucible.LLVM.MemModel.Pointer: llvmPointerOffset :: LLVMPtr sym w -> SymBV sym w
+ Lang.Crucible.LLVM.MemModel.Pointer: llvmPointerOffset :: forall sym (w :: Nat). LLVMPtr sym w -> SymBV sym w
- Lang.Crucible.LLVM.MemModel.Pointer: llvmPointerType :: IsExpr (SymExpr sym) => LLVMPtr sym w -> TypeRepr (LLVMPointerType w)
+ Lang.Crucible.LLVM.MemModel.Pointer: llvmPointerType :: forall sym (w :: Nat). IsExpr (SymExpr sym) => LLVMPtr sym w -> TypeRepr (LLVMPointerType w)
- Lang.Crucible.LLVM.MemModel.Pointer: llvmPointerView :: LLVMPtr sym w -> (SymNat sym, SymBV sym w)
+ Lang.Crucible.LLVM.MemModel.Pointer: llvmPointerView :: forall sym (w :: Nat). LLVMPtr sym w -> (SymNat sym, SymBV sym w)
- Lang.Crucible.LLVM.MemModel.Pointer: llvmPointer_bv :: IsSymInterface sym => sym -> SymBV sym w -> IO (LLVMPtr sym w)
+ Lang.Crucible.LLVM.MemModel.Pointer: llvmPointer_bv :: forall sym (w :: Nat). IsSymInterface sym => sym -> SymBV sym w -> IO (LLVMPtr sym w)
- Lang.Crucible.LLVM.MemModel.Pointer: mkNullPointer :: (1 <= w, IsSymInterface sym) => sym -> NatRepr w -> IO (LLVMPtr sym w)
+ Lang.Crucible.LLVM.MemModel.Pointer: mkNullPointer :: forall (w :: Natural) sym. (1 <= w, IsSymInterface sym) => sym -> NatRepr w -> IO (LLVMPtr sym w)
- Lang.Crucible.LLVM.MemModel.Pointer: muxLLVMPtr :: 1 <= w => IsSymInterface sym => sym -> Pred sym -> LLVMPtr sym w -> LLVMPtr sym w -> IO (LLVMPtr sym w)
+ Lang.Crucible.LLVM.MemModel.Pointer: muxLLVMPtr :: forall (w :: Natural) sym. (1 <= w, IsSymInterface sym) => sym -> Pred sym -> LLVMPtr sym w -> LLVMPtr sym w -> IO (LLVMPtr sym w)
- Lang.Crucible.LLVM.MemModel.Pointer: pattern LLVMPointerRepr :: () => (1 <= w, ty ~ LLVMPointerType w) => NatRepr w -> TypeRepr ty
+ Lang.Crucible.LLVM.MemModel.Pointer: pattern LLVMPointerRepr :: forall ty (w :: Natural). () => (1 <= w, ty ~ LLVMPointerType w) => NatRepr w -> TypeRepr ty
- Lang.Crucible.LLVM.MemModel.Pointer: pattern SizeT :: HasPtrWidth wptr => ty ~ BVType wptr => TypeRepr ty
+ Lang.Crucible.LLVM.MemModel.Pointer: pattern SizeT :: forall (wptr :: Natural) ty. HasPtrWidth wptr => ty ~ BVType wptr => TypeRepr ty
- Lang.Crucible.LLVM.MemModel.Pointer: ppPtr :: IsExpr (SymExpr sym) => LLVMPtr sym wptr -> Doc ann
+ Lang.Crucible.LLVM.MemModel.Pointer: ppPtr :: forall sym (wptr :: Nat) ann. IsExpr (SymExpr sym) => LLVMPtr sym wptr -> Doc ann
- Lang.Crucible.LLVM.MemModel.Pointer: ptrAdd :: (1 <= w, IsExprBuilder sym) => sym -> NatRepr w -> LLVMPtr sym w -> SymBV sym w -> IO (LLVMPtr sym w)
+ Lang.Crucible.LLVM.MemModel.Pointer: ptrAdd :: forall (w :: Natural) sym. (1 <= w, IsExprBuilder sym) => sym -> NatRepr w -> LLVMPtr sym w -> SymBV sym w -> IO (LLVMPtr sym w)
- Lang.Crucible.LLVM.MemModel.Pointer: ptrDiff :: (1 <= w, IsSymInterface sym) => sym -> NatRepr w -> LLVMPtr sym w -> LLVMPtr sym w -> IO (SymBV sym w, Pred sym)
+ Lang.Crucible.LLVM.MemModel.Pointer: ptrDiff :: forall (w :: Natural) sym. (1 <= w, IsSymInterface sym) => sym -> NatRepr w -> LLVMPtr sym w -> LLVMPtr sym w -> IO (SymBV sym w, Pred sym)
- Lang.Crucible.LLVM.MemModel.Pointer: ptrEq :: (1 <= w, IsSymInterface sym) => sym -> NatRepr w -> LLVMPtr sym w -> LLVMPtr sym w -> IO (Pred sym)
+ Lang.Crucible.LLVM.MemModel.Pointer: ptrEq :: forall (w :: Natural) sym. (1 <= w, IsSymInterface sym) => sym -> NatRepr w -> LLVMPtr sym w -> LLVMPtr sym w -> IO (Pred sym)
- Lang.Crucible.LLVM.MemModel.Pointer: ptrIsBv :: IsSymInterface sym => sym -> LLVMPtr sym w -> IO (Pred sym)
+ Lang.Crucible.LLVM.MemModel.Pointer: ptrIsBv :: forall sym (w :: Nat). IsSymInterface sym => sym -> LLVMPtr sym w -> IO (Pred sym)
- Lang.Crucible.LLVM.MemModel.Pointer: ptrIsNull :: (1 <= w, IsSymInterface sym) => sym -> NatRepr w -> LLVMPtr sym w -> IO (Pred sym)
+ Lang.Crucible.LLVM.MemModel.Pointer: ptrIsNull :: forall (w :: Natural) sym. (1 <= w, IsSymInterface sym) => sym -> NatRepr w -> LLVMPtr sym w -> IO (Pred sym)
- Lang.Crucible.LLVM.MemModel.Pointer: ptrLe :: (1 <= w, IsSymInterface sym, ?memOpts :: MemOptions) => sym -> NatRepr w -> LLVMPtr sym w -> LLVMPtr sym w -> IO (Pred sym, Pred sym)
+ Lang.Crucible.LLVM.MemModel.Pointer: ptrLe :: forall (w :: Natural) sym. (1 <= w, IsSymInterface sym, ?memOpts :: MemOptions) => sym -> NatRepr w -> LLVMPtr sym w -> LLVMPtr sym w -> IO (Pred sym, Pred sym)
- Lang.Crucible.LLVM.MemModel.Pointer: ptrSameAlloc :: (1 <= w, IsSymInterface sym) => sym -> LLVMPtr sym w -> LLVMPtr sym w -> IO (Pred sym)
+ Lang.Crucible.LLVM.MemModel.Pointer: ptrSameAlloc :: forall (w :: Natural) sym. (1 <= w, IsSymInterface sym) => sym -> LLVMPtr sym w -> LLVMPtr sym w -> IO (Pred sym)
- Lang.Crucible.LLVM.MemModel.Pointer: ptrSub :: (1 <= w, IsSymInterface sym) => sym -> NatRepr w -> LLVMPtr sym w -> SymBV sym w -> IO (LLVMPtr sym w)
+ Lang.Crucible.LLVM.MemModel.Pointer: ptrSub :: forall (w :: Natural) sym. (1 <= w, IsSymInterface sym) => sym -> NatRepr w -> LLVMPtr sym w -> SymBV sym w -> IO (LLVMPtr sym w)
- Lang.Crucible.LLVM.MemModel.Pointer: ptrWidth :: IsExprBuilder sym => LLVMPtr sym w -> NatRepr w
+ Lang.Crucible.LLVM.MemModel.Pointer: ptrWidth :: forall sym (w :: Nat). IsExprBuilder sym => LLVMPtr sym w -> NatRepr w
- Lang.Crucible.LLVM.MemModel.Pointer: type HasPtrWidth w = (1 <= w, 16 <= w, ?ptrWidth :: NatRepr w)
+ Lang.Crucible.LLVM.MemModel.Pointer: type HasPtrWidth (w :: Natural) = (1 <= w, 16 <= w, ?ptrWidth :: NatRepr w)
- Lang.Crucible.LLVM.MemModel.Pointer: type LLVMPointerType w = IntrinsicType "LLVM_pointer" (EmptyCtx ::> BVType w)
+ Lang.Crucible.LLVM.MemModel.Pointer: type LLVMPointerType (w :: Nat) = IntrinsicType "LLVM_pointer" EmptyCtx :: Ctx CrucibleType ::> BVType w
- Lang.Crucible.LLVM.MemModel.Pointer: type LLVMPtr sym w = RegValue sym (LLVMPointerType w)
+ Lang.Crucible.LLVM.MemModel.Pointer: type LLVMPtr sym (w :: Nat) = RegValue sym LLVMPointerType w
- Lang.Crucible.LLVM.MemModel.Pointer: withPtrWidth :: forall w a. 16 <= w => NatRepr w -> (HasPtrWidth w => a) -> a
+ Lang.Crucible.LLVM.MemModel.Pointer: withPtrWidth :: forall (w :: Natural) a. 16 <= w => NatRepr w -> (HasPtrWidth w => a) -> a
- Lang.Crucible.LLVM.MemType: newtype () => Ident
+ Lang.Crucible.LLVM.MemType: newtype Ident
- Lang.Crucible.LLVM.Printf: PrintfOperations :: (Int -> Bool -> PrintfLengthModifier -> m (Maybe Integer)) -> (Int -> PrintfLengthModifier -> m (Maybe Rational)) -> (Int -> m String) -> (Int -> Maybe Int -> m [Word8]) -> (Int -> PrintfLengthModifier -> Int -> m ()) -> !forall a. HasCallStack => String -> m a -> PrintfOperations m
+ Lang.Crucible.LLVM.Printf: PrintfOperations :: (Int -> Bool -> PrintfLengthModifier -> m (Maybe Integer)) -> (Int -> PrintfLengthModifier -> m (Maybe Rational)) -> (Int -> m String) -> (Int -> Maybe Int -> m [Word8]) -> (Int -> PrintfLengthModifier -> Int -> m ()) -> !forall a. HasCallStack => String -> m a -> PrintfOperations (m :: Type -> Type)
- Lang.Crucible.LLVM.Printf: [printfGetFloat] :: PrintfOperations m -> Int -> PrintfLengthModifier -> m (Maybe Rational)
+ Lang.Crucible.LLVM.Printf: [printfGetFloat] :: PrintfOperations (m :: Type -> Type) -> Int -> PrintfLengthModifier -> m (Maybe Rational)
- Lang.Crucible.LLVM.Printf: [printfGetInteger] :: PrintfOperations m -> Int -> Bool -> PrintfLengthModifier -> m (Maybe Integer)
+ Lang.Crucible.LLVM.Printf: [printfGetInteger] :: PrintfOperations (m :: Type -> Type) -> Int -> Bool -> PrintfLengthModifier -> m (Maybe Integer)
- Lang.Crucible.LLVM.Printf: [printfGetPointer] :: PrintfOperations m -> Int -> m String
+ Lang.Crucible.LLVM.Printf: [printfGetPointer] :: PrintfOperations (m :: Type -> Type) -> Int -> m String
- Lang.Crucible.LLVM.Printf: [printfGetString] :: PrintfOperations m -> Int -> Maybe Int -> m [Word8]
+ Lang.Crucible.LLVM.Printf: [printfGetString] :: PrintfOperations (m :: Type -> Type) -> Int -> Maybe Int -> m [Word8]
- Lang.Crucible.LLVM.Printf: [printfSetInteger] :: PrintfOperations m -> Int -> PrintfLengthModifier -> Int -> m ()
+ Lang.Crucible.LLVM.Printf: [printfSetInteger] :: PrintfOperations (m :: Type -> Type) -> Int -> PrintfLengthModifier -> Int -> m ()
- Lang.Crucible.LLVM.Printf: [printfUnsupported] :: PrintfOperations m -> !forall a. HasCallStack => String -> m a
+ Lang.Crucible.LLVM.Printf: [printfUnsupported] :: PrintfOperations (m :: Type -> Type) -> !forall a. HasCallStack => String -> m a
- Lang.Crucible.LLVM.Printf: data PrintfOperations m
+ Lang.Crucible.LLVM.Printf: data PrintfOperations (m :: Type -> Type)
- Lang.Crucible.LLVM.Printf: executeDirectives :: forall m. Monad m => PrintfOperations m -> [PrintfDirective] -> m (ByteString, Int)
+ Lang.Crucible.LLVM.Printf: executeDirectives :: Monad m => PrintfOperations m -> [PrintfDirective] -> m (ByteString, Int)
- Lang.Crucible.LLVM.SimpleLoopFixpoint: FixpointEntry :: SymExpr sym tp -> SymExpr sym tp -> FixpointEntry sym tp
+ Lang.Crucible.LLVM.SimpleLoopFixpoint: FixpointEntry :: SymExpr sym tp -> SymExpr sym tp -> FixpointEntry sym (tp :: BaseType)
- Lang.Crucible.LLVM.SimpleLoopFixpoint: [bodyValue] :: FixpointEntry sym tp -> SymExpr sym tp
+ Lang.Crucible.LLVM.SimpleLoopFixpoint: [bodyValue] :: FixpointEntry sym (tp :: BaseType) -> SymExpr sym tp
- Lang.Crucible.LLVM.SimpleLoopFixpoint: [headerValue] :: FixpointEntry sym tp -> SymExpr sym tp
+ Lang.Crucible.LLVM.SimpleLoopFixpoint: [headerValue] :: FixpointEntry sym (tp :: BaseType) -> SymExpr sym tp
- Lang.Crucible.LLVM.SimpleLoopFixpoint: data FixpointEntry sym tp
+ Lang.Crucible.LLVM.SimpleLoopFixpoint: data FixpointEntry sym (tp :: BaseType)
- Lang.Crucible.LLVM.SimpleLoopFixpoint: simpleLoopFixpoint :: forall sym ext p rtp blocks init ret. (IsSymInterface sym, HasLLVMAnn sym, ?memOpts :: MemOptions) => sym -> CFG ext blocks init ret -> GlobalVar Mem -> (MapF (SymExpr sym) (FixpointEntry sym) -> Pred sym -> IO (MapF (SymExpr sym) (SymExpr sym), Pred sym)) -> IO (ExecutionFeature p sym ext rtp)
+ Lang.Crucible.LLVM.SimpleLoopFixpoint: simpleLoopFixpoint :: forall sym ext p rtp (blocks :: Ctx (Ctx CrucibleType)) (init :: Ctx CrucibleType) (ret :: CrucibleType). (IsSymInterface sym, HasLLVMAnn sym, ?memOpts :: MemOptions) => sym -> CFG ext blocks init ret -> GlobalVar Mem -> (MapF (SymExpr sym) (FixpointEntry sym) -> Pred sym -> IO (MapF (SymExpr sym) (SymExpr sym), Pred sym)) -> IO (ExecutionFeature p sym ext rtp)
- Lang.Crucible.LLVM.SimpleLoopFixpointCHC: AfterFixpoint :: FixpointRecord sym wptr blocks args -> FixpointState sym wptr blocks args
+ Lang.Crucible.LLVM.SimpleLoopFixpointCHC: AfterFixpoint :: FixpointRecord sym wptr blocks args -> FixpointState sym (wptr :: Nat) (blocks :: Ctx (Ctx CrucibleType)) (args :: Ctx CrucibleType)
- Lang.Crucible.LLVM.SimpleLoopFixpointCHC: BeforeFixpoint :: FixpointState sym wptr blocks args
+ Lang.Crucible.LLVM.SimpleLoopFixpointCHC: BeforeFixpoint :: FixpointState sym (wptr :: Nat) (blocks :: Ctx (Ctx CrucibleType)) (args :: Ctx CrucibleType)
- Lang.Crucible.LLVM.SimpleLoopFixpointCHC: CallFrameContext :: MapF (BlockID blocks) (FixpointState sym wptr blocks) -> [Some (BlockID blocks)] -> CFG ext blocks init ret -> Map (Some (BlockID blocks)) (Some (BlockID blocks)) -> Set (Some (BlockID blocks)) -> CallFrameContext sym wptr ext init ret blocks
+ Lang.Crucible.LLVM.SimpleLoopFixpointCHC: CallFrameContext :: MapF (BlockID blocks) (FixpointState sym wptr blocks) -> [Some (BlockID blocks)] -> CFG ext blocks init ret -> Map (Some (BlockID blocks)) (Some (BlockID blocks)) -> Set (Some (BlockID blocks)) -> CallFrameContext sym (wptr :: Nat) ext (init :: Ctx CrucibleType) (ret :: CrucibleType) (blocks :: Ctx (Ctx CrucibleType))
- Lang.Crucible.LLVM.SimpleLoopFixpointCHC: CheckFixpoint :: FixpointRecord sym wptr blocks args -> SomeSymFn sym -> Some (Assignment (SymExpr sym)) -> Pred sym -> FixpointState sym wptr blocks args
+ Lang.Crucible.LLVM.SimpleLoopFixpointCHC: CheckFixpoint :: FixpointRecord sym wptr blocks args -> SomeSymFn sym -> Some (Assignment (SymExpr sym)) -> Pred sym -> FixpointState sym (wptr :: Nat) (blocks :: Ctx (Ctx CrucibleType)) (args :: Ctx CrucibleType)
- Lang.Crucible.LLVM.SimpleLoopFixpointCHC: ComputeFixpoint :: FixpointRecord sym wptr blocks args -> FixpointState sym wptr blocks args
+ Lang.Crucible.LLVM.SimpleLoopFixpointCHC: ComputeFixpoint :: FixpointRecord sym wptr blocks args -> FixpointState sym (wptr :: Nat) (blocks :: Ctx (Ctx CrucibleType)) (args :: Ctx CrucibleType)
- Lang.Crucible.LLVM.SimpleLoopFixpointCHC: ExecutionFeatureContext :: FnHandleMap (SomeCallFrameContext sym wptr ext) -> [SomeSymFn sym] -> [Pred sym] -> ExecutionFeatureContext sym wptr ext
+ Lang.Crucible.LLVM.SimpleLoopFixpointCHC: ExecutionFeatureContext :: FnHandleMap (SomeCallFrameContext sym wptr ext) -> [SomeSymFn sym] -> [Pred sym] -> ExecutionFeatureContext sym (wptr :: Nat) ext
- Lang.Crucible.LLVM.SimpleLoopFixpointCHC: FixpointEntry :: SymExpr sym tp -> SymExpr sym tp -> FixpointEntry sym tp
+ Lang.Crucible.LLVM.SimpleLoopFixpointCHC: FixpointEntry :: SymExpr sym tp -> SymExpr sym tp -> FixpointEntry sym (tp :: BaseType)
- Lang.Crucible.LLVM.SimpleLoopFixpointCHC: SomeCallFrameContext :: CallFrameContext sym wptr ext init ret blocks -> SomeCallFrameContext sym wptr ext init ret
+ Lang.Crucible.LLVM.SimpleLoopFixpointCHC: SomeCallFrameContext :: CallFrameContext sym wptr ext init ret blocks -> SomeCallFrameContext sym (wptr :: Nat) ext (init :: Ctx CrucibleType) (ret :: CrucibleType)
- Lang.Crucible.LLVM.SimpleLoopFixpointCHC: [bodyValue] :: FixpointEntry sym tp -> SymExpr sym tp
+ Lang.Crucible.LLVM.SimpleLoopFixpointCHC: [bodyValue] :: FixpointEntry sym (tp :: BaseType) -> SymExpr sym tp
- Lang.Crucible.LLVM.SimpleLoopFixpointCHC: [callFrameContextCFG] :: CallFrameContext sym wptr ext init ret blocks -> CFG ext blocks init ret
+ Lang.Crucible.LLVM.SimpleLoopFixpointCHC: [callFrameContextCFG] :: CallFrameContext sym (wptr :: Nat) ext (init :: Ctx CrucibleType) (ret :: CrucibleType) (blocks :: Ctx (Ctx CrucibleType)) -> CFG ext blocks init ret
- Lang.Crucible.LLVM.SimpleLoopFixpointCHC: [callFrameContextFixpointStates] :: CallFrameContext sym wptr ext init ret blocks -> MapF (BlockID blocks) (FixpointState sym wptr blocks)
+ Lang.Crucible.LLVM.SimpleLoopFixpointCHC: [callFrameContextFixpointStates] :: CallFrameContext sym (wptr :: Nat) ext (init :: Ctx CrucibleType) (ret :: CrucibleType) (blocks :: Ctx (Ctx CrucibleType)) -> MapF (BlockID blocks) (FixpointState sym wptr blocks)
- Lang.Crucible.LLVM.SimpleLoopFixpointCHC: [callFrameContextLoopHeaderBlockIds] :: CallFrameContext sym wptr ext init ret blocks -> Set (Some (BlockID blocks))
+ Lang.Crucible.LLVM.SimpleLoopFixpointCHC: [callFrameContextLoopHeaderBlockIds] :: CallFrameContext sym (wptr :: Nat) ext (init :: Ctx CrucibleType) (ret :: CrucibleType) (blocks :: Ctx (Ctx CrucibleType)) -> Set (Some (BlockID blocks))
- Lang.Crucible.LLVM.SimpleLoopFixpointCHC: [callFrameContextLoopHeaders] :: CallFrameContext sym wptr ext init ret blocks -> [Some (BlockID blocks)]
+ Lang.Crucible.LLVM.SimpleLoopFixpointCHC: [callFrameContextLoopHeaders] :: CallFrameContext sym (wptr :: Nat) ext (init :: Ctx CrucibleType) (ret :: CrucibleType) (blocks :: Ctx (Ctx CrucibleType)) -> [Some (BlockID blocks)]
- Lang.Crucible.LLVM.SimpleLoopFixpointCHC: [callFrameContextParentLoop] :: CallFrameContext sym wptr ext init ret blocks -> Map (Some (BlockID blocks)) (Some (BlockID blocks))
+ Lang.Crucible.LLVM.SimpleLoopFixpointCHC: [callFrameContextParentLoop] :: CallFrameContext sym (wptr :: Nat) ext (init :: Ctx CrucibleType) (ret :: CrucibleType) (blocks :: Ctx (Ctx CrucibleType)) -> Map (Some (BlockID blocks)) (Some (BlockID blocks))
- Lang.Crucible.LLVM.SimpleLoopFixpointCHC: [executionFeatureContextFixpointStates] :: ExecutionFeatureContext sym wptr ext -> FnHandleMap (SomeCallFrameContext sym wptr ext)
+ Lang.Crucible.LLVM.SimpleLoopFixpointCHC: [executionFeatureContextFixpointStates] :: ExecutionFeatureContext sym (wptr :: Nat) ext -> FnHandleMap (SomeCallFrameContext sym wptr ext)
- Lang.Crucible.LLVM.SimpleLoopFixpointCHC: [executionFeatureContextInvPreds] :: ExecutionFeatureContext sym wptr ext -> [SomeSymFn sym]
+ Lang.Crucible.LLVM.SimpleLoopFixpointCHC: [executionFeatureContextInvPreds] :: ExecutionFeatureContext sym (wptr :: Nat) ext -> [SomeSymFn sym]
- Lang.Crucible.LLVM.SimpleLoopFixpointCHC: [executionFeatureContextLoopFunEquivConds] :: ExecutionFeatureContext sym wptr ext -> [Pred sym]
+ Lang.Crucible.LLVM.SimpleLoopFixpointCHC: [executionFeatureContextLoopFunEquivConds] :: ExecutionFeatureContext sym (wptr :: Nat) ext -> [Pred sym]
- Lang.Crucible.LLVM.SimpleLoopFixpointCHC: [headerValue] :: FixpointEntry sym tp -> SymExpr sym tp
+ Lang.Crucible.LLVM.SimpleLoopFixpointCHC: [headerValue] :: FixpointEntry sym (tp :: BaseType) -> SymExpr sym tp
- Lang.Crucible.LLVM.SimpleLoopFixpointCHC: data CallFrameContext sym wptr ext init ret blocks
+ Lang.Crucible.LLVM.SimpleLoopFixpointCHC: data CallFrameContext sym (wptr :: Nat) ext (init :: Ctx CrucibleType) (ret :: CrucibleType) (blocks :: Ctx Ctx CrucibleType)
- Lang.Crucible.LLVM.SimpleLoopFixpointCHC: data ExecutionFeatureContext sym wptr ext
+ Lang.Crucible.LLVM.SimpleLoopFixpointCHC: data ExecutionFeatureContext sym (wptr :: Nat) ext
- Lang.Crucible.LLVM.SimpleLoopFixpointCHC: data FixpointEntry sym tp
+ Lang.Crucible.LLVM.SimpleLoopFixpointCHC: data FixpointEntry sym (tp :: BaseType)
- Lang.Crucible.LLVM.SimpleLoopFixpointCHC: data FixpointState sym wptr blocks args
+ Lang.Crucible.LLVM.SimpleLoopFixpointCHC: data FixpointState sym (wptr :: Nat) (blocks :: Ctx Ctx CrucibleType) (args :: Ctx CrucibleType)
- Lang.Crucible.LLVM.SimpleLoopFixpointCHC: data SomeCallFrameContext sym wptr ext init ret
+ Lang.Crucible.LLVM.SimpleLoopFixpointCHC: data SomeCallFrameContext sym (wptr :: Nat) ext (init :: Ctx CrucibleType) (ret :: CrucibleType)
- Lang.Crucible.LLVM.SimpleLoopFixpointCHC: simpleLoopFixpoint :: (IsSymInterface sym, sym ~ ExprBuilder t st fs, HasPtrWidth wptr, KnownNat wptr, HasLLVMAnn sym, ?memOpts :: MemOptions) => sym -> CFG ext blocks init ret -> GlobalVar Mem -> Maybe (MapF (SymExpr sym) (FixpointEntry sym) -> Pred sym -> IO (MapF (SymExpr sym) (SymExpr sym), Maybe (Pred sym))) -> IO (ExecutionFeature p sym ext rtp, IORef (ExecutionFeatureContext sym wptr ext))
+ Lang.Crucible.LLVM.SimpleLoopFixpointCHC: simpleLoopFixpoint :: forall sym t (st :: Type -> Type) fs (wptr :: Natural) ext (blocks :: Ctx (Ctx CrucibleType)) (init :: Ctx CrucibleType) (ret :: CrucibleType) p rtp. (IsSymInterface sym, sym ~ ExprBuilder t st fs, HasPtrWidth wptr, KnownNat wptr, HasLLVMAnn sym, ?memOpts :: MemOptions) => sym -> CFG ext blocks init ret -> GlobalVar Mem -> Maybe (MapF (SymExpr sym) (FixpointEntry sym) -> Pred sym -> IO (MapF (SymExpr sym) (SymExpr sym), Maybe (Pred sym))) -> IO (ExecutionFeature p sym ext rtp, IORef (ExecutionFeatureContext sym wptr ext))
- Lang.Crucible.LLVM.SimpleLoopInvariant: InvariantEntry :: SymExpr sym tp -> SymExpr sym tp -> InvariantEntry sym tp
+ Lang.Crucible.LLVM.SimpleLoopInvariant: InvariantEntry :: SymExpr sym tp -> SymExpr sym tp -> InvariantEntry sym (tp :: BaseType)
- Lang.Crucible.LLVM.SimpleLoopInvariant: [bodyValue] :: InvariantEntry sym tp -> SymExpr sym tp
+ Lang.Crucible.LLVM.SimpleLoopInvariant: [bodyValue] :: InvariantEntry sym (tp :: BaseType) -> SymExpr sym tp
- Lang.Crucible.LLVM.SimpleLoopInvariant: [headerValue] :: InvariantEntry sym tp -> SymExpr sym tp
+ Lang.Crucible.LLVM.SimpleLoopInvariant: [headerValue] :: InvariantEntry sym (tp :: BaseType) -> SymExpr sym tp
- Lang.Crucible.LLVM.SimpleLoopInvariant: data InvariantEntry sym tp
+ Lang.Crucible.LLVM.SimpleLoopInvariant: data InvariantEntry sym (tp :: BaseType)
- Lang.Crucible.LLVM.SimpleLoopInvariant: simpleLoopInvariant :: forall sym ext p rtp blocks init ret. (IsSymInterface sym, IsSyntaxExtension ext, HasLLVMAnn sym, ?memOpts :: MemOptions) => sym -> Integer -> CFG ext blocks init ret -> GlobalVar Mem -> (InvariantPhase -> [Some (SymExpr sym)] -> MapF (SymExpr sym) (InvariantEntry sym) -> IO (Pred sym)) -> IO (ExecutionFeature p sym ext rtp)
+ Lang.Crucible.LLVM.SimpleLoopInvariant: simpleLoopInvariant :: forall sym ext p rtp (blocks :: Ctx (Ctx CrucibleType)) (init :: Ctx CrucibleType) (ret :: CrucibleType). (IsSymInterface sym, IsSyntaxExtension ext, HasLLVMAnn sym, ?memOpts :: MemOptions) => sym -> Integer -> CFG ext blocks init ret -> GlobalVar Mem -> (InvariantPhase -> [Some (SymExpr sym)] -> MapF (SymExpr sym) (InvariantEntry sym) -> IO (Pred sym)) -> IO (ExecutionFeature p sym ext rtp)
- Lang.Crucible.LLVM.SymIO: LLVMFileSystem :: GlobalVar (FileSystemType ptrW) -> GlobalVar (FDescMapType ptrW) -> Map Natural Handle -> NatRepr ptrW -> LLVMFileSystem ptrW
+ Lang.Crucible.LLVM.SymIO: LLVMFileSystem :: GlobalVar (FileSystemType ptrW) -> GlobalVar (FDescMapType ptrW) -> Map Natural Handle -> NatRepr ptrW -> LLVMFileSystem (ptrW :: Nat)
- Lang.Crucible.LLVM.SymIO: [SomeOverrideSim] :: (forall p ext rtp args ret. OverrideSim p sym ext rtp args ret a) -> SomeOverrideSim sym a
+ Lang.Crucible.LLVM.SymIO: [SomeOverrideSim] :: forall sym a. (forall p ext rtp (args :: Ctx CrucibleType) (ret :: CrucibleType). () => OverrideSim p sym ext rtp args ret a) -> SomeOverrideSim sym a
- Lang.Crucible.LLVM.SymIO: [llvmFileDescMap] :: LLVMFileSystem ptrW -> GlobalVar (FDescMapType ptrW)
+ Lang.Crucible.LLVM.SymIO: [llvmFileDescMap] :: LLVMFileSystem (ptrW :: Nat) -> GlobalVar (FDescMapType ptrW)
- Lang.Crucible.LLVM.SymIO: [llvmFilePointerRepr] :: LLVMFileSystem ptrW -> NatRepr ptrW
+ Lang.Crucible.LLVM.SymIO: [llvmFilePointerRepr] :: LLVMFileSystem (ptrW :: Nat) -> NatRepr ptrW
- Lang.Crucible.LLVM.SymIO: [llvmFileSystem] :: LLVMFileSystem ptrW -> GlobalVar (FileSystemType ptrW)
+ Lang.Crucible.LLVM.SymIO: [llvmFileSystem] :: LLVMFileSystem (ptrW :: Nat) -> GlobalVar (FileSystemType ptrW)
- Lang.Crucible.LLVM.SymIO: [llvmHandles] :: LLVMFileSystem ptrW -> Map Natural Handle
+ Lang.Crucible.LLVM.SymIO: [llvmHandles] :: LLVMFileSystem (ptrW :: Nat) -> Map Natural Handle
- Lang.Crucible.LLVM.SymIO: allocateFileDescriptor :: (IsSymInterface sym, HasPtrWidth wptr) => LLVMFileSystem wptr -> FileHandle sym wptr -> OverrideSim p sym ext r args ret (SymBV sym 32)
+ Lang.Crucible.LLVM.SymIO: allocateFileDescriptor :: forall sym (wptr :: Natural) p ext r (args :: Ctx CrucibleType) (ret :: CrucibleType). (IsSymInterface sym, HasPtrWidth wptr) => LLVMFileSystem wptr -> FileHandle sym wptr -> OverrideSim p sym ext r args ret (SymBV sym 32)
- Lang.Crucible.LLVM.SymIO: callCloseFile :: (IsSymInterface sym, HasLLVMAnn sym, HasPtrWidth wptr) => GlobalVar Mem -> LLVMFileSystem wptr -> RegEntry sym (BVType 32) -> OverrideSim p sym ext rtp args ret (RegValue sym (BVType 32))
+ Lang.Crucible.LLVM.SymIO: callCloseFile :: forall sym (wptr :: Natural) p ext rtp (args :: Ctx CrucibleType) (ret :: CrucibleType). (IsSymInterface sym, HasLLVMAnn sym, HasPtrWidth wptr) => GlobalVar Mem -> LLVMFileSystem wptr -> RegEntry sym (BVType 32) -> OverrideSim p sym ext rtp args ret (RegValue sym (BVType 32))
- Lang.Crucible.LLVM.SymIO: callOpenFile :: (IsSymInterface sym, HasLLVMAnn sym, HasPtrWidth wptr, ?memOpts :: MemOptions) => GlobalVar Mem -> LLVMFileSystem wptr -> RegEntry sym (LLVMPointerType wptr) -> RegEntry sym (BVType 32) -> OverrideSim p sym ext rtp args ret (RegValue sym (BVType 32))
+ Lang.Crucible.LLVM.SymIO: callOpenFile :: forall sym (wptr :: Natural) p ext rtp (args :: Ctx CrucibleType) (ret :: CrucibleType). (IsSymInterface sym, HasLLVMAnn sym, HasPtrWidth wptr, ?memOpts :: MemOptions) => GlobalVar Mem -> LLVMFileSystem wptr -> RegEntry sym (LLVMPointerType wptr) -> RegEntry sym (BVType 32) -> OverrideSim p sym ext rtp args ret (RegValue sym (BVType 32))
- Lang.Crucible.LLVM.SymIO: callReadFileHandle :: (IsSymInterface sym, HasLLVMAnn sym, HasPtrWidth wptr) => GlobalVar Mem -> LLVMFileSystem wptr -> RegEntry sym (BVType 32) -> RegEntry sym (LLVMPointerType wptr) -> RegEntry sym (BVType wptr) -> OverrideSim p sym ext rtp args ret (RegValue sym (BVType wptr))
+ Lang.Crucible.LLVM.SymIO: callReadFileHandle :: forall sym (wptr :: Natural) p ext rtp (args :: Ctx CrucibleType) (ret :: CrucibleType). (IsSymInterface sym, HasLLVMAnn sym, HasPtrWidth wptr) => GlobalVar Mem -> LLVMFileSystem wptr -> RegEntry sym (BVType 32) -> RegEntry sym (LLVMPointerType wptr) -> RegEntry sym (BVType wptr) -> OverrideSim p sym ext rtp args ret (RegValue sym (BVType wptr))
- Lang.Crucible.LLVM.SymIO: callWriteFileHandle :: (IsSymInterface sym, HasLLVMAnn sym, HasPtrWidth wptr, ?memOpts :: MemOptions) => GlobalVar Mem -> LLVMFileSystem wptr -> RegEntry sym (BVType 32) -> RegEntry sym (LLVMPointerType wptr) -> RegEntry sym (BVType wptr) -> OverrideSim p sym ext rtp args ret (RegValue sym (BVType wptr))
+ Lang.Crucible.LLVM.SymIO: callWriteFileHandle :: forall sym (wptr :: Natural) p ext rtp (args :: Ctx CrucibleType) (ret :: CrucibleType). (IsSymInterface sym, HasLLVMAnn sym, HasPtrWidth wptr, ?memOpts :: MemOptions) => GlobalVar Mem -> LLVMFileSystem wptr -> RegEntry sym (BVType 32) -> RegEntry sym (LLVMPointerType wptr) -> RegEntry sym (BVType wptr) -> OverrideSim p sym ext rtp args ret (RegValue sym (BVType wptr))
- Lang.Crucible.LLVM.SymIO: closeFile :: (IsSymInterface sym, HasLLVMAnn sym, HasPtrWidth wptr) => LLVMFileSystem wptr -> LLVMOverride p sym ext (EmptyCtx ::> BVType 32) (BVType 32)
+ Lang.Crucible.LLVM.SymIO: closeFile :: forall sym (wptr :: Natural) p ext. (IsSymInterface sym, HasLLVMAnn sym, HasPtrWidth wptr) => LLVMFileSystem wptr -> LLVMOverride p sym ext ((EmptyCtx :: Ctx CrucibleType) ::> BVType 32) (BVType 32)
- Lang.Crucible.LLVM.SymIO: data LLVMFileSystem ptrW
+ Lang.Crucible.LLVM.SymIO: data LLVMFileSystem (ptrW :: Nat)
- Lang.Crucible.LLVM.SymIO: initialLLVMFileSystem :: forall sym ptrW. (HasPtrWidth ptrW, IsSymInterface sym) => HandleAllocator -> sym -> NatRepr ptrW -> InitialFileSystemContents sym -> [(FDTarget Out, Handle)] -> SymGlobalState sym -> IO (LLVMFileSystem ptrW, SymGlobalState sym, SomeOverrideSim sym ())
+ Lang.Crucible.LLVM.SymIO: initialLLVMFileSystem :: forall sym (ptrW :: Natural). (HasPtrWidth ptrW, IsSymInterface sym) => HandleAllocator -> sym -> NatRepr ptrW -> InitialFileSystemContents sym -> [(FDTarget Out, Handle)] -> SymGlobalState sym -> IO (LLVMFileSystem ptrW, SymGlobalState sym, SomeOverrideSim sym ())
- Lang.Crucible.LLVM.SymIO: lookupFileHandle :: IsSymInterface sym => LLVMFileSystem wptr -> SymBV sym 32 -> RegMap sym args'' -> (forall args'. Maybe (FileHandle sym wptr) -> RegMap sym args'' -> OverrideSim p sym ext r args' ret a) -> OverrideSim p sym ext r args ret a
+ Lang.Crucible.LLVM.SymIO: lookupFileHandle :: forall sym (wptr :: Nat) (args'' :: Ctx CrucibleType) p ext r (ret :: CrucibleType) a (args :: Ctx CrucibleType). IsSymInterface sym => LLVMFileSystem wptr -> SymBV sym 32 -> RegMap sym args'' -> (forall (args' :: Ctx CrucibleType). () => Maybe (FileHandle sym wptr) -> RegMap sym args'' -> OverrideSim p sym ext r args' ret a) -> OverrideSim p sym ext r args ret a
- Lang.Crucible.LLVM.SymIO: openFile :: (IsSymInterface sym, HasLLVMAnn sym, HasPtrWidth wptr, ?memOpts :: MemOptions) => LLVMFileSystem wptr -> LLVMOverride p sym ext ((EmptyCtx ::> LLVMPointerType wptr) ::> BVType 32) (BVType 32)
+ Lang.Crucible.LLVM.SymIO: openFile :: forall sym (wptr :: Natural) p ext. (IsSymInterface sym, HasLLVMAnn sym, HasPtrWidth wptr, ?memOpts :: MemOptions) => LLVMFileSystem wptr -> LLVMOverride p sym ext (((EmptyCtx :: Ctx CrucibleType) ::> LLVMPointerType wptr) ::> BVType 32) (BVType 32)
- Lang.Crucible.LLVM.SymIO: readFileHandle :: (IsSymInterface sym, HasLLVMAnn sym, HasPtrWidth wptr) => LLVMFileSystem wptr -> LLVMOverride p sym ext (((EmptyCtx ::> BVType 32) ::> LLVMPointerType wptr) ::> BVType wptr) (BVType wptr)
+ Lang.Crucible.LLVM.SymIO: readFileHandle :: forall sym (wptr :: Natural) p ext. (IsSymInterface sym, HasLLVMAnn sym, HasPtrWidth wptr) => LLVMFileSystem wptr -> LLVMOverride p sym ext ((((EmptyCtx :: Ctx CrucibleType) ::> BVType 32) ::> LLVMPointerType wptr) ::> BVType wptr) (BVType wptr)
- Lang.Crucible.LLVM.SymIO: symio_overrides :: (IsSymInterface sym, HasLLVMAnn sym, HasPtrWidth wptr, wptr ~ ArchWidth arch, ?memOpts :: MemOptions) => LLVMFileSystem wptr -> [OverrideTemplate p sym ext arch]
+ Lang.Crucible.LLVM.SymIO: symio_overrides :: forall sym (wptr :: Natural) (arch :: LLVMArch) p ext. (IsSymInterface sym, HasLLVMAnn sym, HasPtrWidth wptr, wptr ~ ArchWidth arch, ?memOpts :: MemOptions) => LLVMFileSystem wptr -> [OverrideTemplate p sym ext arch]
- Lang.Crucible.LLVM.SymIO: writeFileHandle :: (IsSymInterface sym, HasLLVMAnn sym, HasPtrWidth wptr, ?memOpts :: MemOptions) => LLVMFileSystem wptr -> LLVMOverride p sym ext (((EmptyCtx ::> BVType 32) ::> LLVMPointerType wptr) ::> BVType wptr) (BVType wptr)
+ Lang.Crucible.LLVM.SymIO: writeFileHandle :: forall sym (wptr :: Natural) p ext. (IsSymInterface sym, HasLLVMAnn sym, HasPtrWidth wptr, ?memOpts :: MemOptions) => LLVMFileSystem wptr -> LLVMOverride p sym ext ((((EmptyCtx :: Ctx CrucibleType) ::> BVType 32) ::> LLVMPointerType wptr) ::> BVType wptr) (BVType wptr)
- Lang.Crucible.LLVM.Translation: LLVMContext :: ArchRepr arch -> (forall a. (16 <= ArchWidth arch => NatRepr (ArchWidth arch) -> a) -> a) -> GlobalVar Mem -> TypeContext -> Map Symbol (Set GlobalAlias) -> Map Symbol (Set GlobalAlias) -> LLVMContext arch
+ Lang.Crucible.LLVM.Translation: LLVMContext :: ArchRepr arch -> (forall a. () => (16 <= ArchWidth arch => NatRepr (ArchWidth arch) -> a) -> a) -> GlobalVar Mem -> TypeContext -> Map Symbol (Set GlobalAlias) -> Map Symbol (Set GlobalAlias) -> IntMap ValMd -> LLVMContext (arch :: LLVMArch)
- Lang.Crucible.LLVM.Translation: [GEPResult] :: 1 <= n => NatRepr n -> MemType -> GEP n expr -> GEPResult expr
+ Lang.Crucible.LLVM.Translation: [GEPResult] :: forall (n :: Natural) expr. 1 <= n => NatRepr n -> MemType -> GEP n expr -> GEPResult expr
- Lang.Crucible.LLVM.Translation: [GEP_field] :: FieldInfo -> GEP n expr -> GEP n expr
+ Lang.Crucible.LLVM.Translation: [GEP_field] :: forall (n :: Nat) expr. FieldInfo -> GEP n expr -> GEP n expr
- Lang.Crucible.LLVM.Translation: [GEP_index_each] :: MemType -> GEP n expr -> expr -> GEP n expr
+ Lang.Crucible.LLVM.Translation: [GEP_index_each] :: forall (n :: Nat) expr. MemType -> GEP n expr -> expr -> GEP n expr
- Lang.Crucible.LLVM.Translation: [GEP_index_vector] :: MemType -> GEP n expr -> expr -> GEP n expr
+ Lang.Crucible.LLVM.Translation: [GEP_index_vector] :: forall (n :: Nat) expr. MemType -> GEP n expr -> expr -> GEP n expr
- Lang.Crucible.LLVM.Translation: [GEP_scalar_base] :: expr -> GEP 1 expr
+ Lang.Crucible.LLVM.Translation: [GEP_scalar_base] :: forall expr. expr -> GEP 1 expr
- Lang.Crucible.LLVM.Translation: [GEP_scatter] :: NatRepr n -> GEP 1 expr -> GEP n expr
+ Lang.Crucible.LLVM.Translation: [GEP_scatter] :: forall (n :: Nat) expr. NatRepr n -> GEP 1 expr -> GEP n expr
- Lang.Crucible.LLVM.Translation: [GEP_vector_base] :: NatRepr n -> expr -> GEP n expr
+ Lang.Crucible.LLVM.Translation: [GEP_vector_base] :: forall (n :: Nat) expr. NatRepr n -> expr -> GEP n expr
- Lang.Crucible.LLVM.Translation: [IntConst] :: 1 <= w => !NatRepr w -> !BV w -> LLVMConst
+ Lang.Crucible.LLVM.Translation: [IntConst] :: forall (w :: Natural). 1 <= w => !NatRepr w -> !BV w -> LLVMConst
- Lang.Crucible.LLVM.Translation: [_llvmTypeCtx] :: LLVMContext arch -> TypeContext
+ Lang.Crucible.LLVM.Translation: [_llvmTypeCtx] :: LLVMContext (arch :: LLVMArch) -> TypeContext
- Lang.Crucible.LLVM.Translation: [llvmArch] :: LLVMContext arch -> ArchRepr arch
+ Lang.Crucible.LLVM.Translation: [llvmArch] :: LLVMContext (arch :: LLVMArch) -> ArchRepr arch
- Lang.Crucible.LLVM.Translation: [llvmFunctionAliases] :: LLVMContext arch -> Map Symbol (Set GlobalAlias)
+ Lang.Crucible.LLVM.Translation: [llvmFunctionAliases] :: LLVMContext (arch :: LLVMArch) -> Map Symbol (Set GlobalAlias)
- Lang.Crucible.LLVM.Translation: [llvmGlobalAliases] :: LLVMContext arch -> Map Symbol (Set GlobalAlias)
+ Lang.Crucible.LLVM.Translation: [llvmGlobalAliases] :: LLVMContext (arch :: LLVMArch) -> Map Symbol (Set GlobalAlias)
- Lang.Crucible.LLVM.Translation: [llvmMemVar] :: LLVMContext arch -> GlobalVar Mem
+ Lang.Crucible.LLVM.Translation: [llvmMemVar] :: LLVMContext (arch :: LLVMArch) -> GlobalVar Mem
- Lang.Crucible.LLVM.Translation: [llvmPtrWidth] :: LLVMContext arch -> forall a. (16 <= ArchWidth arch => NatRepr (ArchWidth arch) -> a) -> a
+ Lang.Crucible.LLVM.Translation: [llvmPtrWidth] :: LLVMContext (arch :: LLVMArch) -> forall a. () => (16 <= ArchWidth arch => NatRepr (ArchWidth arch) -> a) -> a
- Lang.Crucible.LLVM.Translation: data GEP (n :: Nat) (expr :: Type)
+ Lang.Crucible.LLVM.Translation: data GEP (n :: Nat) expr
- Lang.Crucible.LLVM.Translation: data LLVMContext arch
+ Lang.Crucible.LLVM.Translation: data LLVMContext (arch :: LLVMArch)
- Lang.Crucible.LLVM.Translation: data ModuleTranslation arch
+ Lang.Crucible.LLVM.Translation: data ModuleTranslation (arch :: LLVMArch)
- Lang.Crucible.LLVM.Translation: getTranslatedCFG :: ModuleTranslation arch -> Symbol -> IO (Maybe (Declare, AnyCFG LLVM, [LLVMTranslationWarning]))
+ Lang.Crucible.LLVM.Translation: getTranslatedCFG :: forall (arch :: LLVMArch). ModuleTranslation arch -> Symbol -> IO (Maybe (Declare, AnyCFG LLVM, [LLVMTranslationWarning]))
- Lang.Crucible.LLVM.Translation: getTranslatedFnHandle :: ModuleTranslation arch -> Symbol -> IO (Maybe (Declare, SomeHandle))
+ Lang.Crucible.LLVM.Translation: getTranslatedFnHandle :: forall (arch :: LLVMArch). ModuleTranslation arch -> Symbol -> IO (Maybe (Declare, SomeHandle))
- Lang.Crucible.LLVM.Translation: globalInitMap :: Getter (ModuleTranslation arch) GlobalInitializerMap
+ Lang.Crucible.LLVM.Translation: globalInitMap :: forall (arch :: LLVMArch) f. (Contravariant f, Functor f) => (GlobalInitializerMap -> f GlobalInitializerMap) -> ModuleTranslation arch -> f (ModuleTranslation arch)
- Lang.Crucible.LLVM.Translation: llvmDeclToFunHandleRepr :: HasPtrWidth wptr => FunDecl -> (forall args ret. CtxRepr args -> TypeRepr ret -> a) -> a
+ Lang.Crucible.LLVM.Translation: llvmDeclToFunHandleRepr :: forall (wptr :: Natural) a. HasPtrWidth wptr => FunDecl -> (forall (args :: Ctx CrucibleType) (ret :: CrucibleType). () => CtxRepr args -> TypeRepr ret -> a) -> a
- Lang.Crucible.LLVM.Translation: llvmDeclToFunHandleRepr' :: (?lc :: TypeContext, HasPtrWidth wptr, MonadFail m) => Declare -> (forall args ret. CtxRepr args -> TypeRepr ret -> m a) -> m a
+ Lang.Crucible.LLVM.Translation: llvmDeclToFunHandleRepr' :: forall (wptr :: Natural) m a. (?lc :: TypeContext, HasPtrWidth wptr, MonadFail m) => Declare -> (forall (args :: Ctx CrucibleType) (ret :: CrucibleType). () => CtxRepr args -> TypeRepr ret -> m a) -> m a
- Lang.Crucible.LLVM.Translation: llvmRetTypeAsRepr :: forall a wptr. HasPtrWidth wptr => Maybe MemType -> (forall tp. TypeRepr tp -> a) -> a
+ Lang.Crucible.LLVM.Translation: llvmRetTypeAsRepr :: forall a (wptr :: Natural). HasPtrWidth wptr => Maybe MemType -> (forall (tp :: CrucibleType). () => TypeRepr tp -> a) -> a
- Lang.Crucible.LLVM.Translation: llvmTypeAsRepr :: forall a wptr. HasPtrWidth wptr => MemType -> (forall tp. TypeRepr tp -> a) -> a
+ Lang.Crucible.LLVM.Translation: llvmTypeAsRepr :: forall a (wptr :: Natural). HasPtrWidth wptr => MemType -> (forall (tp :: CrucibleType). () => TypeRepr tp -> a) -> a
- Lang.Crucible.LLVM.Translation: llvmTypeCtx :: Simple Lens (LLVMContext arch) TypeContext
+ Lang.Crucible.LLVM.Translation: llvmTypeCtx :: forall (arch :: LLVMArch) f. Functor f => (TypeContext -> f TypeContext) -> LLVMContext arch -> f (LLVMContext arch)
- Lang.Crucible.LLVM.Translation: llvmTypesAsCtx :: forall a wptr. HasPtrWidth wptr => [MemType] -> (forall ctx. CtxRepr ctx -> a) -> a
+ Lang.Crucible.LLVM.Translation: llvmTypesAsCtx :: forall a (wptr :: Natural). HasPtrWidth wptr => [MemType] -> (forall (ctx :: Ctx CrucibleType). () => CtxRepr ctx -> a) -> a
- Lang.Crucible.LLVM.Translation: modTransDefs :: Getter (ModuleTranslation arch) [(Declare, SomeHandle)]
+ Lang.Crucible.LLVM.Translation: modTransDefs :: forall (arch :: LLVMArch) f. (Contravariant f, Functor f) => ([(Declare, SomeHandle)] -> f [(Declare, SomeHandle)]) -> ModuleTranslation arch -> f (ModuleTranslation arch)
- Lang.Crucible.LLVM.Translation: modTransHalloc :: Getter (ModuleTranslation arch) HandleAllocator
+ Lang.Crucible.LLVM.Translation: modTransHalloc :: forall (arch :: LLVMArch) f. (Contravariant f, Functor f) => (HandleAllocator -> f HandleAllocator) -> ModuleTranslation arch -> f (ModuleTranslation arch)
- Lang.Crucible.LLVM.Translation: modTransModule :: Getter (ModuleTranslation arch) Module
+ Lang.Crucible.LLVM.Translation: modTransModule :: forall (arch :: LLVMArch) f. (Contravariant f, Functor f) => (Module -> f Module) -> ModuleTranslation arch -> f (ModuleTranslation arch)
- Lang.Crucible.LLVM.Translation: pattern LLVMPointerRepr :: () => (1 <= w, ty ~ LLVMPointerType w) => NatRepr w -> TypeRepr ty
+ Lang.Crucible.LLVM.Translation: pattern PtrWidth :: forall (w :: Natural) w'. HasPtrWidth w => w ~ w' => NatRepr w'
- Lang.Crucible.LLVM.Translation: transConstant :: (?lc :: TypeContext, MonadError String m, HasPtrWidth wptr) => Typed Value -> m LLVMConst
+ Lang.Crucible.LLVM.Translation: transConstant :: forall m (wptr :: Natural). (?lc :: TypeContext, MonadError String m, HasPtrWidth wptr) => Typed Value -> m LLVMConst
- Lang.Crucible.LLVM.Translation: transConstant' :: (?lc :: TypeContext, MonadError String m, HasPtrWidth wptr) => MemType -> Value -> m LLVMConst
+ Lang.Crucible.LLVM.Translation: transConstant' :: forall m (wptr :: Natural). (?lc :: TypeContext, MonadError String m, HasPtrWidth wptr) => MemType -> Value -> m LLVMConst
- Lang.Crucible.LLVM.Translation: transConstantExpr :: forall m wptr. (?lc :: TypeContext, MonadError String m, HasPtrWidth wptr) => ConstExpr -> m LLVMConst
+ Lang.Crucible.LLVM.Translation: transConstantExpr :: forall m (wptr :: Natural). (?lc :: TypeContext, MonadError String m, HasPtrWidth wptr) => ConstExpr -> m LLVMConst
- Lang.Crucible.LLVM.Translation: transConstantWithType :: (?lc :: TypeContext, MonadError String m, HasPtrWidth wptr) => Typed Value -> m (MemType, LLVMConst)
+ Lang.Crucible.LLVM.Translation: transConstantWithType :: forall m (wptr :: Natural). (?lc :: TypeContext, MonadError String m, HasPtrWidth wptr) => Typed Value -> m (MemType, LLVMConst)
- Lang.Crucible.LLVM.Translation: transContext :: Getter (ModuleTranslation arch) (LLVMContext arch)
+ Lang.Crucible.LLVM.Translation: transContext :: forall (arch :: LLVMArch) f. (Contravariant f, Functor f) => (LLVMContext arch -> f (LLVMContext arch)) -> ModuleTranslation arch -> f (ModuleTranslation arch)
- Lang.Crucible.LLVM.Translation: translateGEP :: forall wptr m. (?lc :: TypeContext, MonadError String m, HasPtrWidth wptr) => Bool -> Type -> Typed Value -> [Typed Value] -> m (GEPResult (Typed Value))
+ Lang.Crucible.LLVM.Translation: translateGEP :: forall (wptr :: Natural) m. (?lc :: TypeContext, MonadError String m, HasPtrWidth wptr) => Bool -> Type -> Typed Value -> [Typed Value] -> m (GEPResult (Typed Value))
- Lang.Crucible.LLVM.Translation: type LLVMPointerType w = IntrinsicType "LLVM_pointer" (EmptyCtx ::> BVType w)
+ Lang.Crucible.LLVM.Translation: type LLVMPointerType (w :: Nat) = IntrinsicType "LLVM_pointer" EmptyCtx :: Ctx CrucibleType ::> BVType w
- Lang.Crucible.LLVM.Translation.Aliases: functionAliases :: (?lc :: TypeContext, HasPtrWidth wptr) => Module -> Map Symbol (Set GlobalAlias)
+ Lang.Crucible.LLVM.Translation.Aliases: functionAliases :: forall (wptr :: Natural). (?lc :: TypeContext, HasPtrWidth wptr) => Module -> Map Symbol (Set GlobalAlias)
- Lang.Crucible.LLVM.Translation.Aliases: globalAliases :: (?lc :: TypeContext, HasPtrWidth wptr) => Module -> Map Symbol (Set GlobalAlias)
+ Lang.Crucible.LLVM.Translation.Aliases: globalAliases :: forall (wptr :: Natural). (?lc :: TypeContext, HasPtrWidth wptr) => Module -> Map Symbol (Set GlobalAlias)
Files
- CHANGELOG.md +18/−0
- crucible-llvm.cabal +96/−3
- src/Lang/Crucible/LLVM/DataLayout.hs +14/−0
- src/Lang/Crucible/LLVM/Errors/MemoryError.hs +1/−0
- src/Lang/Crucible/LLVM/Errors/UndefinedBehavior.hs +2/−0
- src/Lang/Crucible/LLVM/Globals.hs +3/−2
- src/Lang/Crucible/LLVM/Internal.hs +25/−0
- src/Lang/Crucible/LLVM/Intrinsics.hs +1/−0
- src/Lang/Crucible/LLVM/Intrinsics/LLVM.hs +129/−2
- src/Lang/Crucible/LLVM/Intrinsics/Libc.hs +5/−4
- src/Lang/Crucible/LLVM/MemModel.hs +9/−3
- src/Lang/Crucible/LLVM/MemModel/Common.hs +8/−3
- src/Lang/Crucible/LLVM/MemModel/Generic.hs +48/−3
- src/Lang/Crucible/LLVM/MemModel/MemLog.hs +4/−0
- src/Lang/Crucible/LLVM/MemModel/Strings.hs +367/−0
- src/Lang/Crucible/LLVM/MemModel/Value.hs +1/−1
- src/Lang/Crucible/LLVM/SymIO.hs +2/−1
- src/Lang/Crucible/LLVM/Translation/BlockInfo.hs +2/−2
- src/Lang/Crucible/LLVM/Translation/Instruction.hs +72/−20
- src/Lang/Crucible/LLVM/Translation/Monad.hs +8/−0
- test/TestMemory.hs +2/−2
- test/Tests.hs +14/−2
CHANGELOG.md view
@@ -1,3 +1,21 @@+# 0.8.0 -- 2025-11-09++* `Lang.Crucible.LLVM.MemModel.{loadString,loadMaybeString,strLen}`+ should now be imported from `Lang.Crucible.LLVM.MemModel.Strings`.+* Two new functions for loading C-style null-terminated strings from+ LLVM memory were added to `Lang.Crucible.LLVM.MemModel.Strings`:+ `loadConcretelyNullTerminatedString` and `loadSymbolicString`.+* Add a new "low-level" API for loading strings to+ `Lang.Crucible.LLVM.MemModel.Strings`: `ByteLoader`, `ByteChecker`, and+ `loadBytes`.+* Support simulating LLVM bitcode files whose data layout strings specify+ function pointer alignment.+* Fix a bug that would cause the simuator to compute incorrect results for the+ `llvm.is.fpclass` intrinsic. (Among other things, this is used to power the+ `isnan` function in Clang 17 or later.)+* Support vectorized versions of the `llvm.u{min,max}` and `llvm.s{min,max}`+ intrinsics.+ # 0.7.1 -- 2025-03-21 * Fix a bug in which the memory model would panic when attempting to unpack
crucible-llvm.cabal view
@@ -1,6 +1,6 @@ Cabal-version: 2.2 Name: crucible-llvm-Version: 0.7.1+Version: 0.8.0.0 Author: Galois Inc. Copyright: (c) Galois, Inc 2014-2022 Maintainer: rscott@galois.com, kquick@galois.com, langston@galois.com@@ -29,18 +29,108 @@ ghc-prof-options: -O2 -fprof-auto-exported default-language: Haskell2010 +common warns+ -- Specifying -Wall and -Werror can cause the project to fail to build on+ -- newer versions of GHC simply due to new warnings being added to -Wall. To+ -- prevent this from happening we manually list which warnings should be+ -- considered errors. We also list some warnings that are not in -Wall, though+ -- try to avoid "opinionated" warnings (though this judgement is clearly+ -- subjective).+ --+ -- Warnings are grouped by the GHC version that introduced them, and then+ -- alphabetically.+ --+ -- A list of warnings and the GHC version in which they were introduced is+ -- available here:+ -- https://ghc.gitlab.haskell.org/ghc/doc/users_guide/using-warnings.html + -- Since GHC 9.6 or earlier:+ ghc-options:+ -Wall+ -Werror=ambiguous-fields+ -Werror=compat-unqualified-imports+ -Werror=deferred-type-errors+ -Werror=deprecated-flags+ -Werror=deprecations+ -Werror=deriving-defaults+ -Werror=deriving-typeable+ -Werror=dodgy-foreign-imports+ -Werror=duplicate-exports+ -Werror=empty-enumerations+ -Werror=gadt-mono-local-binds+ -Werror=identities+ -Werror=inaccessible-code+ -Werror=incomplete-patterns+ -Werror=incomplete-record-updates+ -Werror=incomplete-uni-patterns+ -Werror=inline-rule-shadowing+ -Werror=misplaced-pragmas+ -Werror=missed-extra-shared-lib+ -Werror=missing-exported-signatures+ -Werror=missing-fields+ -Werror=missing-home-modules+ -Werror=missing-methods+ -Werror=missing-pattern-synonym-signatures+ -Werror=missing-signatures+ -Werror=name-shadowing+ -Werror=noncanonical-monad-instances+ -Werror=noncanonical-monoid-instances+ -Werror=operator-whitespace+ -Werror=operator-whitespace-ext-conflict+ -Werror=orphans+ -Werror=overflowed-literals+ -Werror=overlapping-patterns+ -Werror=partial-fields+ -Werror=partial-type-signatures+ -Werror=redundant-bang-patterns+ -Werror=redundant-record-wildcards+ -Werror=redundant-strictness-flags+ -Werror=simplifiable-class-constraints+ -Werror=star-binder+ -Werror=star-is-type+ -Werror=tabs+ -Werror=type-defaults+ -Werror=typed-holes+ -Werror=type-equality-out-of-scope+ -Werror=type-equality-requires-operators+ -Werror=unicode-bidirectional-format-characters+ -Werror=unrecognised-pragmas+ -Werror=unrecognised-warning-flags+ -Werror=unsupported-calling-conventions+ -Werror=unsupported-llvm-version+ -Werror=unused-do-bind+ -Werror=unused-imports+ -Werror=unused-record-wildcards+ -Werror=warnings-deprecations+ -Werror=wrong-do-bind++ if impl(ghc < 9.8)+ ghc-options:+ -Werror=forall-identifier++ if impl(ghc >= 9.8)+ ghc-options:+ -Werror=incomplete-export-warnings+ -Werror=inconsistent-flags++ if impl(ghc >= 9.10)+ ghc-options:+ -Werror=badly-staged-types+ -Werror=data-kinds-tc+ -Werror=deprecated-type-abstractions+ -Werror=incomplete-record-selectors+ library import: bldflags build-depends:- base >= 4.13 && < 4.20,+ base >= 4.13 && < 4.21, attoparsec, bv-sized >= 1.0.0, bytestring, containers >= 0.5.8.0, crucible >= 0.5, crucible-symio,- what4 >= 0.4.1,+ what4 >= 0.5, extra, lens, itanium-abi >= 0.1.1.1 && < 0.2,@@ -73,6 +163,7 @@ Lang.Crucible.LLVM.Extension Lang.Crucible.LLVM.Functions Lang.Crucible.LLVM.Globals+ Lang.Crucible.LLVM.Internal Lang.Crucible.LLVM.Intrinsics Lang.Crucible.LLVM.Intrinsics.Cast Lang.Crucible.LLVM.Intrinsics.Libc@@ -85,6 +176,7 @@ Lang.Crucible.LLVM.MemModel.MemLog Lang.Crucible.LLVM.MemModel.Partial Lang.Crucible.LLVM.MemModel.Pointer+ Lang.Crucible.LLVM.MemModel.Strings Lang.Crucible.LLVM.MemType Lang.Crucible.LLVM.PrettyPrint Lang.Crucible.LLVM.Printf@@ -124,6 +216,7 @@ test-suite crucible-llvm-tests import: bldflags+ import: warns type: exitcode-stdio-1.0 main-is: Tests.hs hs-source-dirs: test
src/Lang/Crucible/LLVM/DataLayout.hs view
@@ -164,6 +164,7 @@ data DataLayout = DL { _intLayout :: EndianForm , _stackAlignment :: !Alignment+ , _functionPtrAlignment :: !Alignment , _ptrSize :: !Bytes , _ptrAlign :: !Alignment , _integerInfo :: !AlignInfo@@ -184,6 +185,10 @@ stackAlignment :: Lens' DataLayout Alignment stackAlignment = lens _stackAlignment (\s v -> s { _stackAlignment = v}) +functionPtrAlignment :: Lens' DataLayout Alignment+functionPtrAlignment =+ lens _functionPtrAlignment (\s v -> s { _functionPtrAlignment = v})+ -- | Size of pointers in bytes. ptrSize :: Lens' DataLayout Bytes ptrSize = lens _ptrSize (\s v -> s { _ptrSize = v})@@ -238,6 +243,7 @@ defaultDataLayout = execState defaults dl where dl = DL { _intLayout = BigEndian , _stackAlignment = noAlignment+ , _functionPtrAlignment = noAlignment , _ptrSize = 8 -- 64 bit pointers = 8 bytes , _ptrAlign = Alignment 3 -- 64 bit alignment: 2^3=8 byte boundaries , _integerInfo = emptyAlignInfo@@ -269,6 +275,7 @@ maxAlignment :: DataLayout -> Alignment maxAlignment dl = maximum [ dl^.stackAlignment+ , dl^.functionPtrAlignment , dl^.ptrAlign , maxAlignmentInTree (dl^.integerInfo) , maxAlignmentInTree (dl^.vectorInfo)@@ -322,6 +329,13 @@ L.StackObjSize sz a _ -> setAtBits stackInfo ls sz a L.NativeIntSize _ -> return () L.StackAlign a -> setBits stackAlignment ls a+ -- TODO: For now, we ignore the FunctionPointerAlignType field. This tells+ -- us whether the function pointer alignment is related to the alignment+ -- of functions, but llvm-pretty currently does not track the alignment of+ -- individual functions, so we have no use for this info just yet. When+ -- https://github.com/GaloisInc/llvm-pretty/issues/164 is implemented, we+ -- should revisit this.+ L.FunctionPointerAlign _ a -> setBits functionPtrAlignment ls a L.Mangling _ -> return () -- | Create parsed data layout from layout spec AST.
src/Lang/Crucible/LLVM/Errors/MemoryError.hs view
@@ -6,6 +6,7 @@ -- Maintainer : Langston Barrett <lbarrett@galois.com> -- Stability : provisional --+-- See @crucible-llvm-cli/test-data/ub@ for tests demonstrating some of these. -------------------------------------------------------------------------- {-# LANGUAGE DataKinds #-}
src/Lang/Crucible/LLVM/Errors/UndefinedBehavior.hs view
@@ -20,6 +20,8 @@ -- code essentially have an additional hypothesis: that the LLVM -- compiler/hardware platform behave identically to Crucible's simulator when -- encountering such behavior.+--+-- See @crucible-llvm-cli/test-data/ub@ for tests demonstrating some of these. -------------------------------------------------------------------------- {-# LANGUAGE DataKinds #-}
src/Lang/Crucible/LLVM/Globals.hs view
@@ -46,7 +46,8 @@ import Control.Monad.IO.Class (MonadIO(..)) import Control.Monad.Except (MonadError(..)) import Control.Lens hiding (op, (:>) )-import Data.List (foldl', genericLength, isPrefixOf)+import qualified Data.Foldable as Foldable+import Data.List (genericLength, isPrefixOf) import Data.Map.Strict (Map) import qualified Data.Map.Strict as Map import qualified Data.Set as Set@@ -107,7 +108,7 @@ => LLVMContext arch -> L.Module -> GlobalInitializerMap-makeGlobalMap ctx m = foldl' addAliases globalMap1 (Map.toList (llvmGlobalAliases ctx))+makeGlobalMap ctx m = Foldable.foldl' addAliases globalMap1 (Map.toList (llvmGlobalAliases ctx)) where addAliases mp (glob, aliases) =
+ src/Lang/Crucible/LLVM/Internal.hs view
@@ -0,0 +1,25 @@+{-# LANGUAGE LambdaCase #-}+{-# LANGUAGE TypeApplications #-}++-- | Items in this module should /not/ be considered part of Crucible-LLVM's+-- API, they are exported only for the sake of the test suite.+module Lang.Crucible.LLVM.Internal+ ( assertionsEnabled+ ) where++import qualified Control.Exception as X+import Data.Functor ((<&>))++-- | Check if assertions are enabled.+--+-- Note [Asserts]: When optimizations are enabled, GHC compiles 'X.assert' to+-- a no-op. However, Cabal enables @-O1@ by default. Therefore, if we want our+-- assertions to be checked by our test suite, we must carefully ensure that we+-- pass the correct flags to GHC for the @lib:crucible-llvm@ target. We verify+-- that we have done so by asserting as much in the test suite.+assertionsEnabled :: IO Bool+assertionsEnabled = do+ X.try @X.AssertionFailed (X.assert False (pure ())) <&>+ \case+ Left _ -> True+ Right () -> False
src/Lang/Crucible/LLVM/Intrinsics.hs view
@@ -26,6 +26,7 @@ , register_llvm_overrides , register_llvm_overrides_ , llvmDeclToFunHandleRepr+, declare_overrides , module Lang.Crucible.LLVM.Intrinsics.Common , module Lang.Crucible.LLVM.Intrinsics.Options
src/Lang/Crucible/LLVM/Intrinsics/LLVM.hs view
@@ -307,6 +307,23 @@ , Poly1VecLLVMOverride $ \vecSz intSz -> SomeLLVMOverride (llvmVectorReduceUmin vecSz intSz) )++ , ("llvm.smax"+ , Poly1VecLLVMOverride $ \vecSz intSz ->+ SomeLLVMOverride (llvmSmaxVector vecSz intSz)+ )+ , ("llvm.smin"+ , Poly1VecLLVMOverride $ \vecSz intSz ->+ SomeLLVMOverride (llvmSminVector vecSz intSz)+ )+ , ("llvm.umax"+ , Poly1VecLLVMOverride $ \vecSz intSz ->+ SomeLLVMOverride (llvmUmaxVector vecSz intSz)+ )+ , ("llvm.umin"+ , Poly1VecLLVMOverride $ \vecSz intSz ->+ SomeLLVMOverride (llvmUminVector vecSz intSz)+ ) ] ------------------------------------------------------------------------@@ -1469,6 +1486,67 @@ (BVType intSz) llvmVectorReduceUmin = llvmVectorReduce "umin" callVectorReduceUmin +-- | Build an 'LLVMOverride' for a vector map intrinsic.+llvmVectorMap ::+ (1 <= intSz) =>+ -- | The name of the operation to map (@umin@, @smin@, etc.).+ String ->+ -- | The semantics of the override.+ (forall r args ret.+ IsSymInterface sym =>+ RegEntry sym (VectorType (BVType intSz)) ->+ RegEntry sym (VectorType (BVType intSz)) ->+ OverrideSim p sym ext r args ret (V.Vector (SymBV sym intSz))) ->+ -- | The size of the vector type.+ NatRepr vecSz ->+ -- | The size of the integer type.+ NatRepr intSz ->+ LLVMOverride p sym ext+ (EmptyCtx ::> VectorType (BVType intSz) ::> VectorType (BVType intSz))+ (VectorType (BVType intSz))+llvmVectorMap opName callMap vecSz intSz =+ let nm = L.Symbol ("llvm." ++ opName +++ ".v" ++ show (natValue vecSz) +++ "i" ++ show (natValue intSz)) in+ [llvmOvr| <#vecSz x #intSz> $nm( <#vecSz x #intSz>, <#vecSz x #intSz> ) |]+ (\_memOps args -> Ctx.uncurryAssignment callMap args)++llvmSmaxVector ::+ (1 <= intSz) =>+ NatRepr vecSz ->+ NatRepr intSz ->+ LLVMOverride p sym ext+ (EmptyCtx ::> VectorType (BVType intSz) ::> VectorType (BVType intSz))+ (VectorType (BVType intSz))+llvmSmaxVector = llvmVectorMap "smax" callVectorMapSmax++llvmSminVector ::+ (1 <= intSz) =>+ NatRepr vecSz ->+ NatRepr intSz ->+ LLVMOverride p sym ext+ (EmptyCtx ::> VectorType (BVType intSz) ::> VectorType (BVType intSz))+ (VectorType (BVType intSz))+llvmSminVector = llvmVectorMap "smin" callVectorMapSmin++llvmUmaxVector ::+ (1 <= intSz) =>+ NatRepr vecSz ->+ NatRepr intSz ->+ LLVMOverride p sym ext+ (EmptyCtx ::> VectorType (BVType intSz) ::> VectorType (BVType intSz))+ (VectorType (BVType intSz))+llvmUmaxVector = llvmVectorMap "umax" callVectorMapUmax++llvmUminVector ::+ (1 <= intSz) =>+ NatRepr vecSz ->+ NatRepr intSz ->+ LLVMOverride p sym ext+ (EmptyCtx ::> VectorType (BVType intSz) ::> VectorType (BVType intSz))+ (VectorType (BVType intSz))+llvmUminVector = llvmVectorMap "umin" callVectorMapUmin+ ------------------------------------------------------------------------ -- ** Implementations @@ -1933,8 +2011,8 @@ callIsFpclass regOp@(regValue -> op) (regValue -> test) = do sym <- getSymInterface let w1 = knownNat @1- bv1 <- liftIO $ bvZero sym w1- bv0 <- liftIO $ bvOne sym w1+ bv1 <- liftIO $ bvOne sym w1+ bv0 <- liftIO $ bvZero sym w1 let negative bit = liftIO $ do isNeg <- iFloatIsNeg @_ @fi sym op@@ -2140,3 +2218,52 @@ sym <- getSymInterface umax <- liftIO $ maxUnsignedBV sym intSz callVectorReduce (bvUmin sym) umax vec++-- | The semantics of an LLVM vector map intrinsic.+callVectorMap ::+ -- | The operation to apply when mapping (e.g., @umin@, @smin@, etc.)+ (RegValue sym tp -> RegValue sym tp -> IO (RegValue sym tp)) ->+ -- | The first vector to map over.+ RegEntry sym (VectorType tp) ->+ -- | The second vector to map over.+ RegEntry sym (VectorType tp) ->+ -- | The result of mapping over the vectors.+ OverrideSim p sym ext r args ret (V.Vector (RegValue sym tp))+callVectorMap mapOp (regValue -> vec1) (regValue -> vec2) =+ liftIO $ V.zipWithM mapOp vec1 vec2++callVectorMapSmax ::+ (IsSymInterface sym, 1 <= intSz) =>+ RegEntry sym (VectorType (BVType intSz)) ->+ RegEntry sym (VectorType (BVType intSz)) ->+ OverrideSim p sym ext r args ret (V.Vector (SymBV sym intSz))+callVectorMapSmax vec1 vec2 = do+ sym <- getSymInterface+ callVectorMap (bvSmax sym) vec1 vec2++callVectorMapSmin ::+ (IsSymInterface sym, 1 <= intSz) =>+ RegEntry sym (VectorType (BVType intSz)) ->+ RegEntry sym (VectorType (BVType intSz)) ->+ OverrideSim p sym ext r args ret (V.Vector (SymBV sym intSz))+callVectorMapSmin vec1 vec2 = do+ sym <- getSymInterface+ callVectorMap (bvSmin sym) vec1 vec2++callVectorMapUmax ::+ (IsSymInterface sym, 1 <= intSz) =>+ RegEntry sym (VectorType (BVType intSz)) ->+ RegEntry sym (VectorType (BVType intSz)) ->+ OverrideSim p sym ext r args ret (V.Vector (SymBV sym intSz))+callVectorMapUmax vec1 vec2 = do+ sym <- getSymInterface+ callVectorMap (bvUmax sym) vec1 vec2++callVectorMapUmin ::+ (IsSymInterface sym, 1 <= intSz) =>+ RegEntry sym (VectorType (BVType intSz)) ->+ RegEntry sym (VectorType (BVType intSz)) ->+ OverrideSim p sym ext r args ret (V.Vector (SymBV sym intSz))+callVectorMapUmin vec1 vec2 = do+ sym <- getSymInterface+ callVectorMap (bvUmin sym) vec1 vec2
src/Lang/Crucible/LLVM/Intrinsics/Libc.hs view
@@ -65,6 +65,7 @@ import qualified Lang.Crucible.LLVM.MemModel.Generic as G import Lang.Crucible.LLVM.MemModel.Partial import qualified Lang.Crucible.LLVM.MemModel.Pointer as Ptr+import Lang.Crucible.LLVM.MemModel.Strings as CStr import Lang.Crucible.LLVM.Printf import Lang.Crucible.LLVM.QQ( llvmOvr ) import Lang.Crucible.LLVM.TypeContext@@ -596,7 +597,7 @@ (regValue -> strPtr) = ovrWithBackend $ \bak -> do mem <- readGlobal mvar- str <- liftIO $ loadString bak mem strPtr Nothing+ str <- liftIO $ CStr.loadString bak mem strPtr Nothing h <- printHandle <$> getContext liftIO $ hPutStrLn h (UTF8.toString str) -- return non-negative value on success@@ -629,7 +630,7 @@ let sym = backendGetSym bak when failUponExit $ do mem <- readGlobal mvar- txt <- liftIO $ loadString bak mem (regValue ptxt) Nothing+ txt <- liftIO $ CStr.loadString bak mem (regValue ptxt) Nothing let err = AssertFailureSimError "Call to assert()" (UTF8.toString txt) liftIO $ addFailedAssertion bak err liftIO $@@ -667,7 +668,7 @@ (regValue -> valist) = ovrWithBackend $ \bak -> do mem <- readGlobal mvar- formatStr <- liftIO $ loadString bak mem strPtr Nothing+ formatStr <- liftIO $ CStr.loadString bak mem strPtr Nothing case parseDirectives formatStr of Left err -> overrideError $ AssertFailureSimError "Format string parsing failed" err Right ds -> do@@ -731,7 +732,7 @@ case valist V.!? (i-1) of Just (AnyValue PtrRepr ptr) -> do mem <- get- liftIO $ loadString bak mem ptr numchars+ liftIO $ CStr.loadString bak mem ptr numchars Just (AnyValue tpr _) -> lift $ addFailedAssertion bak $ AssertFailureSimError
src/Lang/Crucible/LLVM/MemModel.hs view
@@ -83,9 +83,15 @@ , doArrayStoreUnbounded , doArrayConstStore , doArrayConstStoreUnbounded- , loadString- , loadMaybeString- , strLen+ -- TODO(#1308): When GHC 9.6 support is dropped, deprecate these imports+ -- TOOD(#1406): After they have been deprecated for a while, move the+ -- implementations to `Strings` and remove these exports.+ , -- {-# DEPRECATED "Exported from Crucible.LLVM.MemModel.Strings instead" #-}+ loadString+ , -- {-# DEPRECATED "Exported from Crucible.LLVM.MemModel.Strings instead" #-}+ loadMaybeString+ , -- {-# DEPRECATED "Exported from Crucible.LLVM.MemModel.Strings instead" #-}+ strLen , uncheckedMemcpy -- * \"Raw\" operations with LLVMVal
src/Lang/Crucible/LLVM/MemModel/Common.hs view
@@ -467,8 +467,10 @@ let d = lo - so -- Store is before load. valueLoad lo ltp lo (SelectSuffixBV d (sw - d) v)- | otherwise -> assert (lo == so && lw < sw) $+ | otherwise ->+ -- TODO(#1560): This assertion can fail. -- Load ends before store ends.+ -- assert (lo == so && lw < sw) $ valueLoad lo ltp so (SelectPrefixBV lw (sw - lw) v) Float -> valueLoad lo ltp so (FloatToBV v) Double -> valueLoad lo ltp so (DoubleToBV v)@@ -511,8 +513,10 @@ ValueView {- ^ view of stored value -} -> ValueCtor (ValueLoad Addr) valueLoad lo ltp so v- | le <= so = ValueCtorVar (OldMemory lo ltp) -- Load ends before store- | se <= lo = ValueCtorVar (OldMemory lo ltp) -- Store ends before load+ -- The non-zero test ensures that 0-byte loads are always overlapping+ -- with the most recent store so that they're not spuriously rejected.+ | le <= so && nonZeroLoad = ValueCtorVar (OldMemory lo ltp) -- Load ends before store+ | se <= lo && nonZeroLoad = ValueCtorVar (OldMemory lo ltp) -- Store ends before load -- Load is before store. | lo < so = splitTypeValue ltp (so - lo) (\o tp -> valueLoad (lo+o) tp so v) -- Load ends after store ends.@@ -534,6 +538,7 @@ where stp = fromMaybe (error ("Coerce value given bad view " ++ show v)) (viewType v) le = typeEnd lo ltp se = so + storageTypeSize stp+ nonZeroLoad = le - lo > 0 -- | @LinearLoadStoreOffsetDiff stride delta@ represents the fact that -- the difference between the load offset and the store offset is
src/Lang/Crucible/LLVM/MemModel/Generic.hs view
@@ -76,6 +76,7 @@ import Prelude hiding (pred) +import qualified Control.Exception as X import Control.Lens import Control.Monad import Control.Monad.State.Strict@@ -91,6 +92,7 @@ import Numeric.Natural import Prettyprinter import Lang.Crucible.Panic (panic)+import qualified Data.Vector as V import Data.BitVector.Sized (BV) import qualified Data.BitVector.Sized as BV@@ -695,6 +697,21 @@ | otherwise = liftIO (Partial.partErr sym mop $ Invalidated msg) +-- | Construct a value of a type that has no in-memory representation at all+buildEmptyVal :: StorageType -> Maybe (LLVMVal sym)+buildEmptyVal t =+ case storageTypeF t of+ Struct fields -> LLVMValStruct <$> traverse emptyStorageField fields+ Array n eltTy+ | n == 0 -> Just (LLVMValArray eltTy V.empty)+ | otherwise -> LLVMValArray eltTy . V.replicate (fromIntegral n) <$> buildEmptyVal eltTy+ X86_FP80 -> Nothing+ Float -> Nothing+ Double -> Nothing+ Bitvector {} -> Nothing -- Bitvectors can't be empty; they have a non-zero size invariant+ where+ emptyStorageField field = (,) field <$> buildEmptyVal (field ^. fieldVal)+ -- | Read a value from memory. readMem :: forall sym w. ( 1 <= w, IsSymInterface sym, HasLLVMAnn sym@@ -707,6 +724,12 @@ Alignment -> Mem sym -> IO (PartLLVMVal sym)+readMem sym _ _ _ tp _ _+ -- no actual memory read happens when reading a value with+ -- no memory representation. This check comes up in+ -- particular when evaluating llvm_points_to statements+ -- in SAW script.+ | Just v <- buildEmptyVal tp = pure (Partial.totalLLVMVal sym v) readMem sym w gsym l tp alignment m = do sz <- bvLit sym w (bytesToBV w (typeEnd 0 tp)) p1 <- isAllocated sym w alignment l (Just sz) m@@ -1584,21 +1607,43 @@ isHeapMutable (AllocInfo HeapAlloc _ Mutable _ _) = pure (truePred sym) isHeapMutable _ = pure (falsePred sym) +-- | Prepare memory so that it can later be merged via 'mergeMem'.+--+-- This is primarily intended for use in the implementation of+-- 'Lang.Crucible.Simulator.Intrinsics.pushBranchIntrinsic' for LLVM memory.+-- It would be nice to remove this someday, see #890.+--+-- For more information about branching and merging, see the comment on 'Mem'. branchMem :: Mem sym -> Mem sym branchMem = memState %~ \s -> BranchFrame (memStateAllocCount s) (memStateWriteCount s) emptyChanges s +-- | Remove the top 'BranchFrame', adding changes to the underlying memory.+--+-- This is primarily intended for use in the implementation of+-- 'Lang.Crucible.Simulator.Intrinsics.abortBranchIntrinsic' for LLVM memory. branchAbortMem :: Mem sym -> Mem sym branchAbortMem = memState %~ popf where popf (BranchFrame _ _ c s) = s & memStateAddChanges c popf _ = error "branchAbortMem given unexpected memory" +-- | Merge memory that was previously prepared via 'branchMem'.+--+-- This is primarily intended for use in the implementation of+-- 'Lang.Crucible.Simulator.Intrinsics.muxIntrinsic' for LLVM memory.+--+-- For more information about branching and merging, see the comment on 'Mem'. mergeMem :: IsExpr (SymExpr sym) => Pred sym -> Mem sym -> Mem sym -> Mem sym mergeMem c x y = case (x^.memState, y^.memState) of- (BranchFrame _ _ a s, BranchFrame _ _ b _) ->- let s' = s & memStateAddChanges (muxChanges c a b)- in x & memState .~ s'+ (BranchFrame _ _ a s, BranchFrame _ _ b s') ->+ -- The memories to be merged must have originated from the same memory,+ -- and in particular, should have matching alloc/write counts.+ let allocsEq = memStateAllocCount s == memStateAllocCount s' in+ let writesEq = memStateWriteCount s == memStateWriteCount s' in+ X.assert (allocsEq && writesEq) $+ let s' = s & memStateAddChanges (muxChanges c a b)+ in x & memState .~ s' _ -> error "mergeMem given unexpected memories" --------------------------------------------------------------------------------
src/Lang/Crucible/LLVM/MemModel/MemLog.hs view
@@ -344,8 +344,12 @@ -- of the list. | StackFrame !Int !Int Text (MemChanges sym) (MemState sym) -- | Represents a push of a branch frame, and changes since that branch.+ -- -- Changes are stored in order, with more recent changes closer to the head -- of the list.+ --+ -- For more information about branching and merging, see the comment on+ -- 'Mem'. | BranchFrame !Int !Int (MemChanges sym) (MemState sym) type MemChanges sym = (MemAllocs sym, MemWrites sym)
+ src/Lang/Crucible/LLVM/MemModel/Strings.hs view
@@ -0,0 +1,367 @@+-- TODO(#1406): Move the definitions of the deprecated imports into this module,+-- and remove the exports from MemModel.+{-# OPTIONS_GHC -Wno-warnings-deprecations #-}++{-# LANGUAGE DataKinds #-}+{-# LANGUAGE DeriveFunctor #-}+{-# LANGUAGE FlexibleContexts #-}+{-# LANGUAGE ImplicitParams #-}+{-# LANGUAGE LambdaCase #-}+{-# LANGUAGE OverloadedStrings #-}+{-# LANGUAGE ScopedTypeVariables #-}+{-# LANGUAGE TupleSections #-}+{-# LANGUAGE TypeApplications #-}+{-# LANGUAGE TypeOperators #-}++-- | Manipulating C-style null-terminated strings+module Lang.Crucible.LLVM.MemModel.Strings+ ( Mem.loadString+ , Mem.loadMaybeString+ , Mem.strLen+ , loadConcretelyNullTerminatedString+ , loadSymbolicString+ , storeString+ -- * Low-level string loading primitives+ -- ** 'ByteChecker'+ , ControlFlow(..)+ , ByteChecker(..)+ , fullyConcreteNullTerminatedString+ , concretelyNullTerminatedString+ , nullTerminatedString+ , withMaxChars+ -- ** 'ByteLoader'+ , ByteLoader(..)+ , llvmByteLoader+ -- ** 'loadBytes'+ , loadBytes+ ) where++import Data.Bifunctor (Bifunctor(bimap, first))+import Control.Monad.IO.Class (MonadIO, liftIO)+import qualified Data.BitVector.Sized as BV+import Data.Functor ((<&>))+import qualified Data.Parameterized.NatRepr as DPN+import Data.Word (Word8)+import qualified Data.Vector as Vec+import qualified GHC.Stack as GHC+import qualified Lang.Crucible.Backend as LCB+import qualified Lang.Crucible.Backend.Online as LCBO+import qualified Lang.Crucible.Simulator as LCS+import qualified Lang.Crucible.LLVM.DataLayout as CLD+import qualified Lang.Crucible.LLVM.MemModel as LCLM+import qualified Lang.Crucible.LLVM.MemModel as Mem+import qualified Lang.Crucible.LLVM.MemModel.Partial as Partial+import qualified What4.Expr.Builder as WEB+import qualified What4.Interface as WI+import qualified What4.Protocol.Online as WPO+import qualified What4.SatResult as WS++-- | Load a null-terminated string (with a concrete null terminator) from memory.+--+-- The string must contain a concrete null terminator. If a maximum number of+-- characters is provided, no more than that number of characters will be read.+-- In either case, 'loadConcretelyNullTerminatedString' will stop reading if it+-- encounters a (concretely) null terminator.+--+-- Note that the loaded string may actually be smaller than the returned list if+-- any of the symbolic bytes are equal to 0.+loadConcretelyNullTerminatedString ::+ ( LCB.IsSymBackend sym bak+ , Mem.HasPtrWidth wptr+ , Mem.HasLLVMAnn sym+ , ?memOpts :: Mem.MemOptions+ , GHC.HasCallStack+ ) =>+ bak ->+ Mem.MemImpl sym ->+ Mem.LLVMPtr sym wptr ->+ -- | Maximum number of characters to read+ Maybe Int ->+ IO [WI.SymBV sym 8]+loadConcretelyNullTerminatedString bak mem ptr limit =+ let loader = llvmByteLoader mem in+ case limit of+ Nothing -> loadBytes bak mem id ptr loader concretelyNullTerminatedString+ Just l ->+ let byteChecker = withMaxChars l (\f -> pure (f [])) concretelyNullTerminatedString in+ loadBytes bak mem (id, 0) ptr loader byteChecker++-- | Load a null-terminated string from memory.+--+-- Consults an SMT solver to check if any of the loaded bytes are known to be+-- null (0). If a maximum number of characters is provided, no more than that+-- number of charcters will be read. In either case, 'loadSymbolicString' will+-- stop reading if it encounters a null terminator.+--+-- Note that the loaded string may actually be smaller than the returned list if+-- any of the symbolic bytes are equal to 0.+loadSymbolicString ::+ ( LCB.IsSymBackend sym bak+ , sym ~ WEB.ExprBuilder scope st fs+ , bak ~ LCBO.OnlineBackend solver scope st fs+ , WPO.OnlineSolver solver+ , Mem.HasPtrWidth wptr+ , Mem.HasLLVMAnn sym+ , ?memOpts :: Mem.MemOptions+ , GHC.HasCallStack+ ) =>+ bak ->+ Mem.MemImpl sym ->+ Mem.LLVMPtr sym wptr ->+ -- | Maximum number of characters to read+ Maybe Int ->+ IO [WI.SymBV sym 8]+loadSymbolicString bak mem ptr limit =+ let loader = llvmByteLoader mem in+ case limit of+ Nothing -> loadBytes bak mem id ptr loader nullTerminatedString+ Just l ->+ let byteChecker = withMaxChars l (\f -> pure (f [])) nullTerminatedString in+ loadBytes bak mem (id, 0) ptr loader byteChecker++-- | Store a string to memory, adding a null terminator at the end.+storeString ::+ forall sym bak w.+ ( LCB.IsSymBackend sym bak+ , WI.IsExpr (WI.SymExpr sym)+ , LCLM.HasPtrWidth w+ , LCLM.HasLLVMAnn sym+ , ?memOpts :: LCLM.MemOptions+ ) =>+ bak ->+ LCLM.MemImpl sym ->+ -- | Pointer to write string to+ LCLM.LLVMPtr sym w ->+ -- | The bytes of the string to write (null terminator not included)+ Vec.Vector (WI.SymBV sym 8) ->+ IO (LCLM.MemImpl sym)+storeString bak mem ptr bytesBvs = do+ let sym = LCB.backendGetSym bak+ zeroNat <- WI.natLit sym 0+ let bytes = Vec.map (Mem.LLVMValInt zeroNat) bytesBvs+ zeroByte <- Mem.LLVMValInt zeroNat <$> WI.bvZero sym (DPN.knownNat @8)+ let nullTerminatedBytes = Vec.snoc bytes zeroByte+ let val = Mem.LLVMValArray (Mem.bitvectorType 1) nullTerminatedBytes+ let storTy = Mem.llvmValStorableType @sym val+ Mem.storeRaw bak mem ptr storTy CLD.noAlignment val++---------------------------------------------------------------------+-- * Low-level string loading primitives++---------------------------------------------------------------------+-- ** 'ByteChecker'++-- | Whether to stop or keep going+--+-- Like Rust's @std::ops::ControlFlow@.+data ControlFlow a b+ = Continue a+ | Break b+ deriving Functor++-- NB: 'first' is used in this module+instance Bifunctor ControlFlow where+ bimap l r =+ \case+ Continue x -> Continue (l x)+ Break x -> Break (r x)++-- | Compute a result from a symbolic byte, and check if the load should+-- continue to the next byte.+--+-- Used to:+--+-- * Check if the byte is concrete ('fullyConcreteNullTerminatedString')+-- * Check if the byte is concretely a null terminator+-- ('concretelyNullTerminatedString')+-- * Check if a byte is known by a solver to be a null terminator ('nullTerminatedString')+-- * Check if we have surpassed a length limit ('withMaxChars')+--+-- Note that it is relatively common for @a@ to be a function @[b] -> [b]@. This+-- is used to build up a snoc-list.+newtype ByteChecker m sym bak a b+ = ByteChecker { runByteChecker :: bak -> a -> Mem.LLVMPtr sym 8 -> m (ControlFlow a b) }++-- Helper, not exported+ptrToBv8 ::+ LCB.IsSymBackend sym bak =>+ bak ->+ Mem.LLVMPtr sym 8 ->+ IO (WI.SymBV sym 8)+ptrToBv8 bak bytePtr = do+ let err = LCS.AssertFailureSimError "Found pointer instead of byte when loading string" ""+ Partial.ptrToBv bak err bytePtr++-- | 'ByteChecker' for loading concrete strings.+--+-- Currently unused internally, but analogous with+-- 'Lang.Crucible.LLVM.MemModel.loadString'. In fact, it would be good to define+-- that function in terms of this one. However, this is blocked on TODO(#1406).+fullyConcreteNullTerminatedString ::+ MonadIO m =>+ GHC.HasCallStack =>+ LCB.IsSymBackend sym bak =>+ ByteChecker m sym bak ([Word8] -> [Word8]) [Word8]+fullyConcreteNullTerminatedString =+ ByteChecker $ \bak acc bytePtr -> do+ byte <- liftIO (ptrToBv8 bak bytePtr)+ case BV.asUnsigned <$> WI.asBV byte of+ Just 0 -> pure (Break (acc []))+ Just c -> do+ let c' = toEnum @Word8 (fromInteger c)+ pure (Continue (\l -> acc (c' : l)))+ Nothing -> do+ let msg = "Symbolic value encountered when loading a string"+ liftIO (LCB.addFailedAssertion bak (LCS.Unsupported GHC.callStack msg))++-- | 'ByteChecker' for loading symbolic strings with a concrete null terminator.+--+-- Used in 'loadConcretelyNullTerminatedString'.+concretelyNullTerminatedString ::+ MonadIO m =>+ GHC.HasCallStack =>+ LCB.IsSymBackend sym bak =>+ ByteChecker m sym bak ([WI.SymBV sym 8] -> [WI.SymBV sym 8]) [WI.SymBV sym 8]+concretelyNullTerminatedString =+ ByteChecker $ \bak acc bytePtr -> do+ byte <- liftIO (ptrToBv8 bak bytePtr)+ if isConcreteNullTerminator byte+ then pure (Break (acc []))+ else pure (Continue (\l -> acc (byte : l)))+ where+ isConcreteNullTerminator symByte =+ case BV.asUnsigned <$> WI.asBV symByte of+ Just 0 -> True+ _ -> False++-- | 'ByteChecker' for loading symbolic strings with a null terminator.+--+-- Used in 'loadSymbolicString'.+nullTerminatedString ::+ MonadIO m =>+ GHC.HasCallStack =>+ LCB.IsSymBackend sym bak =>+ sym ~ WEB.ExprBuilder scope st fs =>+ bak ~ LCBO.OnlineBackend solver scope st fs =>+ WPO.OnlineSolver solver =>+ ByteChecker m sym bak ([WI.SymBV sym 8] -> [WI.SymBV sym 8]) [WI.SymBV sym 8]+nullTerminatedString =+ ByteChecker $ \bak acc bytePtr -> do+ byte <- liftIO (ptrToBv8 bak bytePtr)+ let sym = LCB.backendGetSym bak+ isNullTerm <- liftIO (isNullTerminator bak sym byte)+ if isNullTerm+ then pure (Break (acc []))+ else pure (Continue (\l -> acc (byte : l)))+ where+ isNullTerminator bak sym symByte =+ case BV.asUnsigned <$> WI.asBV symByte of+ Just 0 -> pure True+ Just _ -> pure False+ _ ->+ LCBO.withSolverProcess bak (pure False) $ \proc -> do+ z <- WI.bvZero sym (WI.knownNat @8)+ p <- WI.notPred sym =<< WI.bvEq sym z symByte+ WPO.checkSatisfiable proc "nullTerminatedString" p <&>+ \case+ WS.Unsat () -> True+ WS.Sat () -> False+ WS.Unknown -> False++-- | 'ByteChecker' for adding a maximum character length.+withMaxChars ::+ GHC.HasCallStack =>+ LCB.IsSymBackend sym bak =>+ Functor m =>+ -- | Maximum number of bytes to load+ Int ->+ -- | What to do when the maximum is reached+ (a -> m b) ->+ ByteChecker m sym bak a b ->+ ByteChecker m sym bak (a, Int) b+withMaxChars limit done checker =+ ByteChecker $ \bak (acc, i) bytePtr ->+ if i > limit+ then Break <$> done acc+ else first (, i + 1) <$> runByteChecker checker bak acc bytePtr++---------------------------------------------------------------------+-- ** 'ByteLoader'++-- | Load a byte from memory.+--+-- The only 'ByteLoader' defined here is 'llvmByteLoader', but Macaw users will+-- most often want one based on @doReadMemModel@.+newtype ByteLoader m sym bak wptr+ = ByteLoader { runByteLoader :: bak -> Mem.LLVMPtr sym wptr -> m (Mem.LLVMPtr sym 8) }++-- | A 'ByteLoader' for LLVM memory based on 'Mem.doLoad'.+llvmByteLoader ::+ ( LCB.IsSymBackend sym bak+ , Mem.HasPtrWidth wptr+ , Mem.HasLLVMAnn sym+ , ?memOpts :: Mem.MemOptions+ , GHC.HasCallStack+ , MonadIO m+ ) =>+ Mem.MemImpl sym ->+ ByteLoader m sym bak wptr+llvmByteLoader mem =+ ByteLoader $ \bak ptr -> do+ let i1 = Mem.bitvectorType 1+ let p8 = Mem.LLVMPointerRepr (DPN.knownNat @8)+ liftIO (Mem.doLoad bak mem ptr i1 p8 CLD.noAlignment)++---------------------------------------------------------------------+-- * 'loadBytes'++-- | Load a sequence of bytes, one at a time.+--+-- Used to implement 'loadConcretelyNullTerminatedString' and+-- 'loadSymbolicString'. Highly customizable via 'ByteLoader' and 'ByteChecker'.+loadBytes ::+ forall m a b sym bak wptr.+ ( LCB.IsSymBackend sym bak+ , Mem.HasPtrWidth wptr+ , Mem.HasLLVMAnn sym+ , ?memOpts :: Mem.MemOptions+ , GHC.HasCallStack+ , MonadIO m+ ) =>+ bak ->+ Mem.MemImpl sym ->+ -- | Initial accumulator+ a ->+ -- | Pointer to load from+ Mem.LLVMPtr sym wptr ->+ -- | How to load a byte from memory+ ByteLoader m sym bak wptr ->+ -- | How to check if we should continue loading the next byte+ ByteChecker m sym bak a b ->+ m b+loadBytes bak mem = go+ where+ sym = LCB.backendGetSym bak+ go ::+ a ->+ Mem.LLVMPtr sym wptr ->+ ByteLoader m sym bak wptr ->+ ByteChecker m sym bak a b ->+ m b+ go acc ptr loader checker = do+ byte <- runByteLoader loader bak ptr+ runByteChecker checker bak acc byte >>=+ \case+ Break result -> pure result+ Continue acc' -> do+ -- It is important that safety assertions for later loads can use+ -- the assumption that earlier bytes were nonzero, see #1463 or+ -- `crucible-llvm-cli/test-data/T1463-read-bytes.cbl` for details.+ prevByteWasNonNull <-+ liftIO (WI.notPred sym =<< Mem.ptrIsNull sym (WI.knownNat @8) byte)+ loc <- liftIO (WI.getCurrentProgramLoc sym)+ let assump = LCB.BranchCondition loc Nothing prevByteWasNonNull+ liftIO (LCB.addAssumption bak assump)++ ptr' <- liftIO (Mem.doPtrAddOffset bak mem ptr =<< WI.bvOne sym Mem.PtrWidth)+ go acc' ptr' loader checker
src/Lang/Crucible/LLVM/MemModel/Value.hs view
@@ -108,7 +108,7 @@ LLVMValUndef :: StorageType -> LLVMVal sym -llvmValStorableType :: IsExprBuilder sym => LLVMVal sym -> StorageType+llvmValStorableType :: IsExpr (SymExpr sym) => LLVMVal sym -> StorageType llvmValStorableType v = case v of LLVMValInt _ bv -> bitvectorType (bitsToBytes (natValue (bvWidth bv)))
src/Lang/Crucible/LLVM/SymIO.hs view
@@ -102,6 +102,7 @@ import Lang.Crucible.LLVM.Bytes (toBytes) import Lang.Crucible.LLVM.MemModel+import qualified Lang.Crucible.LLVM.MemModel.Strings as CStr import Lang.Crucible.LLVM.Extension ( ArchWidth ) import Lang.Crucible.LLVM.DataLayout ( noAlignment ) import Lang.Crucible.LLVM.Intrinsics@@ -380,7 +381,7 @@ loadFileIdent memOps filename_ptr = ovrWithBackend $ \bak -> do mem <- readGlobal memOps- filename_bytes <- liftIO $ loadString bak mem filename_ptr Nothing+ filename_bytes <- liftIO $ CStr.loadString bak mem filename_ptr Nothing liftIO $ W4.stringLit (backendGetSym bak) (W4.Char8Literal (BS.pack filename_bytes)) returnIOError32
src/Lang/Crucible/LLVM/Translation/BlockInfo.hs view
@@ -25,7 +25,7 @@ ) where import Data.Foldable (toList)-import Data.List (foldl')+import qualified Data.Foldable as Foldable import Data.Maybe import Data.Map.Strict (Map) import qualified Data.Map.Strict as Map@@ -131,7 +131,7 @@ -- | Compute predecessor sets from the successor sets already computed in @buildBlockInfo@ updatePredSets :: LLVMBlockInfoMap s -> LLVMBlockInfoMap s-updatePredSets bim0 = foldl' upd bim0 predEdges+updatePredSets bim0 = Foldable.foldl' upd bim0 predEdges where upd bim (to,from) = Map.adjust (\bi -> bi{ block_pred_set = Set.insert from (block_pred_set bi) }) to bim
src/Lang/Crucible/LLVM/Translation/Instruction.hs view
@@ -41,12 +41,14 @@ import Control.Lens hiding (op, (:>) ) import Control.Monad (MonadPlus(..), forM, unless) import Control.Monad.Except (MonadError(..), runExceptT)-import Control.Monad.State.Strict (MonadState(..))+import Control.Monad.State.Strict (MonadState(..), gets) import Control.Monad.Trans.Class (MonadTrans(..)) import Control.Monad.Trans.Maybe import Data.Foldable (for_, toList) import Data.Functor (void) import Data.Int+import Data.IntMap.Strict (IntMap)+import qualified Data.IntMap.Strict as IntMap import qualified Data.List as List import Data.List.NonEmpty (NonEmpty((:|))) import qualified Data.Map.Strict as Map@@ -2079,31 +2081,81 @@ | otherwise = callOrdinaryFunction (Just instr) tailCall_ fnTy fn args assign_f -- | Match the arguments used by @dbg.addr@, @dbg.declare@, and @dbg.value@.+-- For more information on how these work, see+-- <https://llvm.org/docs/SourceLevelDebugging.html>.++-- This function assumes that each argument should either be a particular kind+-- of metadata value or a reference that resolves to a particular kind of+-- metadata value (see @resolveArg{1,2,3}@ below). If we encounter other types+-- of LLVM metadata that breaks this assumption, then we will need to update+-- this function's implementation accordingly. dbgArgs :: Set L.Ident {- ^ Set of usable identifiers -} -> [L.Typed L.Value] {- ^ debug call arguments -} -> LLVMGenerator s arch ret (Either String (LLVMExpr s arch, L.DILocalVariable, L.DIExpression))-dbgArgs defSet args =+dbgArgs defSet args = do+ unnamedMd <- gets (llvmUnnamedMd . llvmContext) case args of- [valArg, lvArg, diArg] ->- case valArg of- L.Typed _ (L.ValMd (L.ValMdValue val)) ->- case lvArg of- L.Typed _ (L.ValMd (L.ValMdDebugInfo (L.DebugInfoLocalVariable lv))) ->- case diArg of- L.Typed _ (L.ValMd (L.ValMdDebugInfo (L.DebugInfoExpression di))) ->- let unusableIdents = Set.difference (useTypedVal val) defSet- in if Set.null unusableIdents then- do v <- transTypedValue val- pure (Right (v, lv, di))- else- do let msg = unwords (["dbg intrinsic def/use violation for:"] ++- map (show . LPP.ppIdent) (Set.toList unusableIdents))- pure (Left msg)- _ -> pure (Left ("dbg: argument 3 expected DIExpression, got: " ++ show diArg))- _ -> pure (Left ("dbg: argument 2 expected local variable metadata, got: " ++ show lvArg))- _ -> pure (Left ("dbg: argument 1 expected value metadata, got: " ++ show valArg))+ [valArg, lvArg, diArg] -> do+ let resolveRes = do -- Either String+ val <- resolveArg1 unnamedMd $ L.typedValue valArg+ lv <- resolveArg2 unnamedMd $ L.typedValue lvArg+ di <- resolveArg3 unnamedMd $ L.typedValue diArg+ Right (val, lv, di)+ case resolveRes of+ Left err -> pure (Left err)+ Right (val, lv, di) ->+ let unusableIdents = Set.difference (useTypedVal val) defSet+ in if Set.null unusableIdents then+ do v <- transTypedValue val+ pure (Right (v, lv, di))+ else+ do let msg = unwords (["dbg intrinsic def/use violation for:"] +++ map (show . LPP.ppIdent) (Set.toList unusableIdents))+ pure (Left msg) _ -> pure (Left ("dbg: expected 3 arguments, got: " ++ show (length args)))+ where+ resolveArg1 ::+ IntMap L.ValMd ->+ L.Value ->+ Either String (L.Typed L.Value)+ resolveArg1 unnamedMd = go+ where+ go (L.ValMd (L.ValMdRef ref))+ | Just valMd <- IntMap.lookup ref unnamedMd+ = go (L.ValMd valMd)+ go (L.ValMd (L.ValMdValue val)) =+ Right val+ go valArg =+ Left ("dbg: argument 1 expected value metadata, got: " ++ show valArg)++ resolveArg2 ::+ IntMap L.ValMd ->+ L.Value ->+ Either String L.DILocalVariable+ resolveArg2 unnamedMd = go+ where+ go (L.ValMd (L.ValMdRef ref))+ | Just valMd <- IntMap.lookup ref unnamedMd+ = go (L.ValMd valMd)+ go (L.ValMd (L.ValMdDebugInfo (L.DebugInfoLocalVariable lv))) =+ Right lv+ go lvArg =+ Left ("dbg: argument 2 expected local variable metadata, got: " ++ show lvArg)++ resolveArg3 ::+ IntMap L.ValMd ->+ L.Value ->+ Either String L.DIExpression+ resolveArg3 unnamedMd = go+ where+ go (L.ValMd (L.ValMdRef ref))+ | Just valMd <- IntMap.lookup ref unnamedMd+ = go (L.ValMd valMd)+ go (L.ValMd (L.ValMdDebugInfo (L.DebugInfoExpression di))) =+ Right di+ go diArg =+ Left ("dbg: argument 3 expected DIExpression, got: " ++ show diArg) typedValueAsCrucibleValue :: L.Typed L.Value ->
src/Lang/Crucible/LLVM/Translation/Monad.hs view
@@ -53,6 +53,8 @@ import Control.Monad.IO.Class (MonadIO(..)) import Control.Monad.State.Strict (MonadState(..)) import Data.IORef (IORef, modifyIORef)+import Data.IntMap.Strict (IntMap)+import qualified Data.IntMap.Strict as IntMap import Data.Map.Strict (Map) import qualified Data.Map.Strict as Map import Data.Set (Set)@@ -95,6 +97,9 @@ -- | For each function symbol, compute the set of -- aliases to that symbol , llvmFunctionAliases :: Map L.Symbol (Set L.GlobalAlias)+ -- | Map the index of each piece of unnamed LLVM metadata to its value.+ -- This information is used to resolve the arguments to debug intrinsics.+ , llvmUnnamedMd :: IntMap L.ValMd } llvmTypeCtx :: Simple Lens (LLVMContext arch) TypeContext@@ -108,6 +113,8 @@ unless (null errs) $ malformedLLVMModule "Failed to construct LLVM type context" errs let dl = llvmDataLayout typeCtx+ let unnamedMd =+ IntMap.fromList [(L.umIndex um, L.umValues um) | um <- L.modUnnamedMd m] case mkNatRepr (ptrBitwidth dl) of Some (wptr :: NatRepr wptr) | Just LeqProof <- testLeq (knownNat @16) wptr ->@@ -123,6 +130,7 @@ , _llvmTypeCtx = typeCtx , llvmGlobalAliases = mempty -- these are computed later , llvmFunctionAliases = mempty -- these are computed later+ , llvmUnnamedMd = unnamedMd } return (Some ctx) _ ->
test/TestMemory.hs view
@@ -592,8 +592,8 @@ checkField bak' expectedBV actualPtrRV = do actualSymBV <- projectLLVM_bv bak' $ CS.unRV actualPtrRV Just expectedBV @=? What4.asBV actualSymBV- checkField bak struct_bv1 (struct_val'^._1)- checkField bak struct_bv2 (struct_val'^._2)+ checkField bak struct_bv1 (struct_val' ^. _1)+ checkField bak struct_bv2 (struct_val' ^. _2) testWithOpts (?memOpts{ LLVMMem.laxLoadsAndStores = False }) testWithOpts (?memOpts{ LLVMMem.laxLoadsAndStores = True
test/Tests.hs view
@@ -9,7 +9,7 @@ {-# LANGUAGE ScopedTypeVariables #-} {-# LANGUAGE TypeApplications #-} -module Main where+module Main (main) where -- Crucible import Lang.Crucible.FunctionHandle ( newHandleAllocator )@@ -46,7 +46,11 @@ import qualified System.IO as IO import qualified System.Process as Proc ++import qualified What4.Internal as WInt+ -- Modules being tested+import Lang.Crucible.LLVM.Internal (assertionsEnabled) import Lang.Crucible.LLVM.MemModel ( mkMemVar ) import Lang.Crucible.LLVM.MemType import Lang.Crucible.LLVM.Translation@@ -157,7 +161,15 @@ defaultMainWithIngredients llvmTestIngredients $ testGroup "Tests"- [ functionTests+ [ -- See Note [Asserts] in crucible-llvm+ testCase "assertions enabled" $ do+ assertsEnabled <- assertionsEnabled+ assertBool "assertions should be enabled" assertsEnabled+ , -- See Note [Asserts] in what4+ testCase "What4 assertions enabled" $ do+ assertsEnabled <- WInt.assertionsEnabled+ assertBool "What4 assertions should be enabled" assertsEnabled+ , functionTests , globalTests , memoryTests , translationTests