-- |
-- Module           : Lang.Crucible.LLVM.Intrinsics
-- Description      : Override definitions for LLVM intrinsic and basic
--                    library functions
-- Copyright        : (c) Galois, Inc 2015-2016
-- License          : BSD3
-- Maintainer       : Rob Dockins <rdockins@galois.com>
-- Stability        : provisional
------------------------------------------------------------------------

{-# LANGUAGE DataKinds #-}
{-# LANGUAGE FlexibleContexts #-}
{-# LANGUAGE GADTs #-}
{-# LANGUAGE ImplicitParams #-}
{-# LANGUAGE RankNTypes #-}
{-# LANGUAGE ScopedTypeVariables #-}
{-# LANGUAGE TypeApplications #-}
{-# LANGUAGE TypeOperators #-}
{-# LANGUAGE TypeFamilies #-}

module Lang.Crucible.LLVM.Intrinsics
( LLVM
, llvmIntrinsicTypes
, LLVMOverride(..)

, register_llvm_overrides
, register_llvm_overrides_
, llvmDeclToFunHandleRepr

, module Lang.Crucible.LLVM.Intrinsics.Common
, module Lang.Crucible.LLVM.Intrinsics.Options
) where

import           Control.Lens hiding (op, (:>), Empty)
import           Control.Monad (forM_)
import           Control.Monad.Reader (ReaderT(..))
import           Control.Monad.Trans.Maybe
import           Data.Foldable (asum)
import           Data.List (stripPrefix, tails, isPrefixOf)
import qualified Text.LLVM.AST as L

import qualified ABI.Itanium as ABI
import qualified Data.Parameterized.Map as MapF

import           What4.Interface

import           Lang.Crucible.Backend
import           Lang.Crucible.Types
import           Lang.Crucible.Simulator.Intrinsics
import           Lang.Crucible.Simulator.OverrideSim

import           Lang.Crucible.LLVM.Extension (ArchWidth, LLVM)
import           Lang.Crucible.LLVM.MemModel
import           Lang.Crucible.LLVM.Translation.Monad
import           Lang.Crucible.LLVM.Translation.Types
import           Lang.Crucible.LLVM.TypeContext (TypeContext)

import           Lang.Crucible.LLVM.Intrinsics.Common
import qualified Lang.Crucible.LLVM.Intrinsics.LLVM as LLVM
import qualified Lang.Crucible.LLVM.Intrinsics.Libc as Libc
import qualified Lang.Crucible.LLVM.Intrinsics.Libcxx as Libcxx
import           Lang.Crucible.LLVM.Intrinsics.Options

llvmIntrinsicTypes :: IsSymInterface sym => IntrinsicTypes sym
llvmIntrinsicTypes :: forall sym. IsSymInterface sym => IntrinsicTypes sym
llvmIntrinsicTypes =
   SymbolRepr "LLVM_memory"
-> IntrinsicMuxFn sym "LLVM_memory"
-> MapF SymbolRepr (IntrinsicMuxFn sym)
-> MapF SymbolRepr (IntrinsicMuxFn sym)
forall {v} (k :: v -> Type) (tp :: v) (a :: v -> Type).
OrdF k =>
k tp -> a tp -> MapF k a -> MapF k a
MapF.insert (SymbolRepr "LLVM_memory"
forall (s :: Symbol). KnownSymbol s => SymbolRepr s
knownSymbol :: SymbolRepr "LLVM_memory") IntrinsicMuxFn sym "LLVM_memory"
forall sym (nm :: Symbol).
IntrinsicClass sym nm =>
IntrinsicMuxFn sym nm
IntrinsicMuxFn (MapF SymbolRepr (IntrinsicMuxFn sym)
 -> MapF SymbolRepr (IntrinsicMuxFn sym))
-> MapF SymbolRepr (IntrinsicMuxFn sym)
-> MapF SymbolRepr (IntrinsicMuxFn sym)
forall a b. (a -> b) -> a -> b
$
   SymbolRepr "LLVM_pointer"
-> IntrinsicMuxFn sym "LLVM_pointer"
-> MapF SymbolRepr (IntrinsicMuxFn sym)
-> MapF SymbolRepr (IntrinsicMuxFn sym)
forall {v} (k :: v -> Type) (tp :: v) (a :: v -> Type).
OrdF k =>
k tp -> a tp -> MapF k a -> MapF k a
MapF.insert (SymbolRepr "LLVM_pointer"
forall (s :: Symbol). KnownSymbol s => SymbolRepr s
knownSymbol :: SymbolRepr "LLVM_pointer") IntrinsicMuxFn sym "LLVM_pointer"
forall sym (nm :: Symbol).
IntrinsicClass sym nm =>
IntrinsicMuxFn sym nm
IntrinsicMuxFn (MapF SymbolRepr (IntrinsicMuxFn sym)
 -> MapF SymbolRepr (IntrinsicMuxFn sym))
-> MapF SymbolRepr (IntrinsicMuxFn sym)
-> MapF SymbolRepr (IntrinsicMuxFn sym)
forall a b. (a -> b) -> a -> b
$
   MapF SymbolRepr (IntrinsicMuxFn sym)
forall {v} (k :: v -> Type) (a :: v -> Type). MapF k a
MapF.empty

-- | Register all declare and define overrides
register_llvm_overrides ::
  ( IsSymInterface sym, HasLLVMAnn sym, HasPtrWidth wptr, wptr ~ ArchWidth arch
  , ?intrinsicsOpts :: IntrinsicsOptions, ?memOpts :: MemOptions ) =>
  L.Module ->
  [OverrideTemplate p sym arch rtp l a] {- ^ Additional "define" overrides -} ->
  [OverrideTemplate p sym arch rtp l a] {- ^ Additional "declare" overrides -} ->
  LLVMContext arch ->
  OverrideSim p sym LLVM rtp l a ()
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 arch rtp l a]
-> [OverrideTemplate p sym arch rtp l a]
-> LLVMContext arch
-> OverrideSim p sym LLVM rtp l a ()
register_llvm_overrides Module
llvmModule [OverrideTemplate p sym arch rtp l a]
defineOvrs [OverrideTemplate p sym arch rtp l a]
declareOvrs LLVMContext arch
llvmctx =
  do Module
-> [OverrideTemplate p sym arch rtp l a]
-> LLVMContext arch
-> OverrideSim p sym LLVM rtp l a ()
forall sym (wptr :: Natural) (arch :: LLVMArch) p rtp
       (l :: Ctx CrucibleType) (a :: CrucibleType).
(IsSymInterface sym, HasLLVMAnn sym, HasPtrWidth wptr,
 wptr ~ ArchWidth arch) =>
Module
-> [OverrideTemplate p sym arch rtp l a]
-> LLVMContext arch
-> OverrideSim p sym LLVM rtp l a ()
register_llvm_define_overrides Module
llvmModule [OverrideTemplate p sym arch rtp l a]
defineOvrs LLVMContext arch
llvmctx
     Module
-> [OverrideTemplate p sym arch rtp l a]
-> LLVMContext arch
-> OverrideSim p sym LLVM rtp l a ()
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 arch rtp l a]
-> LLVMContext arch
-> OverrideSim p sym LLVM rtp l a ()
register_llvm_declare_overrides Module
llvmModule [OverrideTemplate p sym arch rtp l a]
declareOvrs LLVMContext arch
llvmctx

-- | Filter the initial list of templates to only those that could
-- possibly match the given declaration based on straightforward,
-- relatively cheap string tests on the name of the declaration.
--
-- Any remaining templates will then examine the declaration in
-- more detail, including examining function arguments
-- and the structure of C++ demangled names to extract more information.
filterTemplates ::
  [OverrideTemplate p sym arch rtp l a] ->
  L.Declare ->
  [OverrideTemplate p sym arch rtp l a]
filterTemplates :: forall p sym (arch :: LLVMArch) rtp (l :: Ctx CrucibleType)
       (a :: CrucibleType).
[OverrideTemplate p sym arch rtp l a]
-> Declare -> [OverrideTemplate p sym arch rtp l a]
filterTemplates [OverrideTemplate p sym arch rtp l a]
ts Declare
decl = (OverrideTemplate p sym arch rtp l a -> Bool)
-> [OverrideTemplate p sym arch rtp l a]
-> [OverrideTemplate p sym arch rtp l a]
forall a. (a -> Bool) -> [a] -> [a]
filter (TemplateMatcher -> Bool
f (TemplateMatcher -> Bool)
-> (OverrideTemplate p sym arch rtp l a -> TemplateMatcher)
-> OverrideTemplate p sym arch rtp l a
-> Bool
forall b c a. (b -> c) -> (a -> b) -> a -> c
. OverrideTemplate p sym arch rtp l a -> TemplateMatcher
forall p sym (arch :: LLVMArch) rtp (l :: Ctx CrucibleType)
       (a :: CrucibleType).
OverrideTemplate p sym arch rtp l a -> TemplateMatcher
overrideTemplateMatcher) [OverrideTemplate p sym arch rtp l a]
ts
 where
 L.Symbol String
nm = Declare -> Symbol
L.decName Declare
decl

 f :: TemplateMatcher -> Bool
f (ExactMatch String
x)       = String
x String -> String -> Bool
forall a. Eq a => a -> a -> Bool
== String
nm
 f (PrefixMatch String
pfx)    = String
pfx String -> String -> Bool
forall a. Eq a => [a] -> [a] -> Bool
`isPrefixOf` String
nm
 f (SubstringsMatch [String]
as) = [String] -> String -> Bool
filterSubstrings [String]
as String
nm

 filterSubstrings :: [String] -> String -> Bool
filterSubstrings [] String
_ = Bool
True
 filterSubstrings (String
a:[String]
as) String
xs =
   case String -> String -> Maybe String
restAfterSubstring String
a String
xs of
     Maybe String
Nothing   -> Bool
False
     Just String
rest -> [String] -> String -> Bool
filterSubstrings [String]
as String
rest

 restAfterSubstring :: String -> String -> Maybe String
 restAfterSubstring :: String -> String -> Maybe String
restAfterSubstring String
sub String
xs = [Maybe String] -> Maybe String
forall (t :: Type -> Type) (f :: Type -> Type) a.
(Foldable t, Alternative f) =>
t (f a) -> f a
asum [ String -> String -> Maybe String
forall a. Eq a => [a] -> [a] -> Maybe [a]
stripPrefix String
sub String
tl | String
tl <- String -> [String]
forall a. [a] -> [[a]]
tails String
xs ]


-- | Helper function for registering overrides
register_llvm_overrides_ ::
  LLVMContext arch ->
  [OverrideTemplate p sym arch rtp l a] ->
  [L.Declare] ->
  OverrideSim p sym LLVM rtp l a ()
register_llvm_overrides_ :: forall (arch :: LLVMArch) p sym rtp (l :: Ctx CrucibleType)
       (a :: CrucibleType).
LLVMContext arch
-> [OverrideTemplate p sym arch rtp l a]
-> [Declare]
-> OverrideSim p sym LLVM rtp l a ()
register_llvm_overrides_ LLVMContext arch
llvmctx [OverrideTemplate p sym arch rtp l a]
acts [Declare]
decls =
    [Declare]
-> (Declare -> OverrideSim p sym LLVM rtp l a (Maybe ()))
-> OverrideSim p sym LLVM rtp l a ()
forall (t :: Type -> Type) (m :: Type -> Type) a b.
(Foldable t, Monad m) =>
t a -> (a -> m b) -> m ()
forM_ [Declare]
decls ((Declare -> OverrideSim p sym LLVM rtp l a (Maybe ()))
 -> OverrideSim p sym LLVM rtp l a ())
-> (Declare -> OverrideSim p sym LLVM rtp l a (Maybe ()))
-> OverrideSim p sym LLVM rtp l a ()
forall a b. (a -> b) -> a -> b
$ \Declare
decl ->
      do let acts' :: [OverrideTemplate p sym arch rtp l a]
acts' = [OverrideTemplate p sym arch rtp l a]
-> Declare -> [OverrideTemplate p sym arch rtp l a]
forall p sym (arch :: LLVMArch) rtp (l :: Ctx CrucibleType)
       (a :: CrucibleType).
[OverrideTemplate p sym arch rtp l a]
-> Declare -> [OverrideTemplate p sym arch rtp l a]
filterTemplates [OverrideTemplate p sym arch rtp l a]
acts Declare
decl
         let L.Symbol String
nm = Declare -> Symbol
L.decName Declare
decl
         let declnm :: Maybe DecodedName
declnm = (String -> Maybe DecodedName)
-> (DecodedName -> Maybe DecodedName)
-> Either String DecodedName
-> Maybe DecodedName
forall a c b. (a -> c) -> (b -> c) -> Either a b -> c
either (Maybe DecodedName -> String -> Maybe DecodedName
forall a b. a -> b -> a
const Maybe DecodedName
forall a. Maybe a
Nothing) DecodedName -> Maybe DecodedName
forall a. a -> Maybe a
Just (Either String DecodedName -> Maybe DecodedName)
-> Either String DecodedName -> Maybe DecodedName
forall a b. (a -> b) -> a -> b
$ String -> Either String DecodedName
ABI.demangleName String
nm
         MaybeT (OverrideSim p sym LLVM rtp l a) ()
-> OverrideSim p sym LLVM rtp l a (Maybe ())
forall (m :: Type -> Type) a. MaybeT m a -> m (Maybe a)
runMaybeT ((ReaderT
   (Declare, Maybe DecodedName, LLVMContext arch)
   (MaybeT (OverrideSim p sym LLVM rtp l a))
   ()
 -> (Declare, Maybe DecodedName, LLVMContext arch)
 -> MaybeT (OverrideSim p sym LLVM rtp l a) ())
-> (Declare, Maybe DecodedName, LLVMContext arch)
-> ReaderT
     (Declare, Maybe DecodedName, LLVMContext arch)
     (MaybeT (OverrideSim p sym LLVM rtp l a))
     ()
-> MaybeT (OverrideSim p sym LLVM rtp l a) ()
forall a b c. (a -> b -> c) -> b -> a -> c
flip ReaderT
  (Declare, Maybe DecodedName, LLVMContext arch)
  (MaybeT (OverrideSim p sym LLVM rtp l a))
  ()
-> (Declare, Maybe DecodedName, LLVMContext arch)
-> MaybeT (OverrideSim p sym LLVM rtp l a) ()
forall r (m :: Type -> Type) a. ReaderT r m a -> r -> m a
runReaderT (Declare
decl,Maybe DecodedName
declnm,LLVMContext arch
llvmctx) (ReaderT
   (Declare, Maybe DecodedName, LLVMContext arch)
   (MaybeT (OverrideSim p sym LLVM rtp l a))
   ()
 -> MaybeT (OverrideSim p sym LLVM rtp l a) ())
-> ReaderT
     (Declare, Maybe DecodedName, LLVMContext arch)
     (MaybeT (OverrideSim p sym LLVM rtp l a))
     ()
-> MaybeT (OverrideSim p sym LLVM rtp l a) ()
forall a b. (a -> b) -> a -> b
$ [ReaderT
   (Declare, Maybe DecodedName, LLVMContext arch)
   (MaybeT (OverrideSim p sym LLVM rtp l a))
   ()]
-> ReaderT
     (Declare, Maybe DecodedName, LLVMContext arch)
     (MaybeT (OverrideSim p sym LLVM rtp l a))
     ()
forall (t :: Type -> Type) (f :: Type -> Type) a.
(Foldable t, Alternative f) =>
t (f a) -> f a
asum ((OverrideTemplate p sym arch rtp l a
 -> ReaderT
      (Declare, Maybe DecodedName, LLVMContext arch)
      (MaybeT (OverrideSim p sym LLVM rtp l a))
      ())
-> [OverrideTemplate p sym arch rtp l a]
-> [ReaderT
      (Declare, Maybe DecodedName, LLVMContext arch)
      (MaybeT (OverrideSim p sym LLVM rtp l a))
      ()]
forall a b. (a -> b) -> [a] -> [b]
map OverrideTemplate p sym arch rtp l a
-> ReaderT
     (Declare, Maybe DecodedName, LLVMContext arch)
     (MaybeT (OverrideSim p sym LLVM rtp l a))
     ()
forall p sym (arch :: LLVMArch) rtp (l :: Ctx CrucibleType)
       (a :: CrucibleType).
OverrideTemplate p sym arch rtp l a
-> RegOverrideM p sym arch rtp l a ()
overrideTemplateAction [OverrideTemplate p sym arch rtp l a]
acts'))

register_llvm_define_overrides ::
  (IsSymInterface sym, HasLLVMAnn sym, HasPtrWidth wptr, wptr ~ ArchWidth arch) =>
  L.Module ->
  [OverrideTemplate p sym arch rtp l a] ->
  LLVMContext arch ->
  OverrideSim p sym LLVM rtp l a ()
register_llvm_define_overrides :: forall sym (wptr :: Natural) (arch :: LLVMArch) p rtp
       (l :: Ctx CrucibleType) (a :: CrucibleType).
(IsSymInterface sym, HasLLVMAnn sym, HasPtrWidth wptr,
 wptr ~ ArchWidth arch) =>
Module
-> [OverrideTemplate p sym arch rtp l a]
-> LLVMContext arch
-> OverrideSim p sym LLVM rtp l a ()
register_llvm_define_overrides Module
llvmModule [OverrideTemplate p sym arch rtp l a]
addlOvrs LLVMContext arch
llvmctx =
  let ?lc = LLVMContext arch
llvmctxLLVMContext arch
-> Getting TypeContext (LLVMContext arch) TypeContext
-> TypeContext
forall s a. s -> Getting a s a -> a
^.Getting TypeContext (LLVMContext arch) TypeContext
forall (arch :: LLVMArch) (f :: Type -> Type).
Functor f =>
(TypeContext -> f TypeContext)
-> LLVMContext arch -> f (LLVMContext arch)
llvmTypeCtx in
  LLVMContext arch
-> [OverrideTemplate p sym arch rtp l a]
-> [Declare]
-> OverrideSim p sym LLVM rtp l a ()
forall (arch :: LLVMArch) p sym rtp (l :: Ctx CrucibleType)
       (a :: CrucibleType).
LLVMContext arch
-> [OverrideTemplate p sym arch rtp l a]
-> [Declare]
-> OverrideSim p sym LLVM rtp l a ()
register_llvm_overrides_ LLVMContext arch
llvmctx ([OverrideTemplate p sym arch rtp l a]
addlOvrs [OverrideTemplate p sym arch rtp l a]
-> [OverrideTemplate p sym arch rtp l a]
-> [OverrideTemplate p sym arch rtp l a]
forall a. [a] -> [a] -> [a]
++ [OverrideTemplate p sym arch rtp l a]
forall sym (wptr :: Natural) (arch :: LLVMArch) p rtp
       (l :: Ctx CrucibleType) (a :: CrucibleType).
(IsSymInterface sym, HasLLVMAnn sym, HasPtrWidth wptr,
 wptr ~ ArchWidth arch, ?lc::TypeContext) =>
[OverrideTemplate p sym arch rtp l a]
define_overrides) ([Declare] -> OverrideSim p sym LLVM rtp l a ())
-> [Declare] -> OverrideSim p sym LLVM rtp l a ()
forall a b. (a -> b) -> a -> b
$
     (Module -> [Declare]
allModuleDeclares Module
llvmModule)

register_llvm_declare_overrides ::
  ( IsSymInterface sym, HasLLVMAnn sym, HasPtrWidth wptr, wptr ~ ArchWidth arch
  , ?intrinsicsOpts :: IntrinsicsOptions, ?memOpts :: MemOptions ) =>
  L.Module ->
  [OverrideTemplate p sym arch rtp l a] ->
  LLVMContext arch ->
  OverrideSim p sym LLVM rtp l a ()
register_llvm_declare_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 arch rtp l a]
-> LLVMContext arch
-> OverrideSim p sym LLVM rtp l a ()
register_llvm_declare_overrides Module
llvmModule [OverrideTemplate p sym arch rtp l a]
addlOvrs LLVMContext arch
llvmctx =
  let ?lc = LLVMContext arch
llvmctxLLVMContext arch
-> Getting TypeContext (LLVMContext arch) TypeContext
-> TypeContext
forall s a. s -> Getting a s a -> a
^.Getting TypeContext (LLVMContext arch) TypeContext
forall (arch :: LLVMArch) (f :: Type -> Type).
Functor f =>
(TypeContext -> f TypeContext)
-> LLVMContext arch -> f (LLVMContext arch)
llvmTypeCtx
  in LLVMContext arch
-> [OverrideTemplate p sym arch rtp l a]
-> [Declare]
-> OverrideSim p sym LLVM rtp l a ()
forall (arch :: LLVMArch) p sym rtp (l :: Ctx CrucibleType)
       (a :: CrucibleType).
LLVMContext arch
-> [OverrideTemplate p sym arch rtp l a]
-> [Declare]
-> OverrideSim p sym LLVM rtp l a ()
register_llvm_overrides_ LLVMContext arch
llvmctx ([OverrideTemplate p sym arch rtp l a]
addlOvrs [OverrideTemplate p sym arch rtp l a]
-> [OverrideTemplate p sym arch rtp l a]
-> [OverrideTemplate p sym arch rtp l a]
forall a. [a] -> [a] -> [a]
++ [OverrideTemplate p sym arch rtp l a]
forall sym (wptr :: Natural) (arch :: LLVMArch) p rtp
       (l :: Ctx CrucibleType) (a :: CrucibleType).
(IsSymInterface sym, HasLLVMAnn sym, HasPtrWidth wptr,
 wptr ~ ArchWidth arch, ?lc::TypeContext,
 ?intrinsicsOpts::IntrinsicsOptions, ?memOpts::MemOptions) =>
[OverrideTemplate p sym arch rtp l a]
declare_overrides) ([Declare] -> OverrideSim p sym LLVM rtp l a ())
-> [Declare] -> OverrideSim p sym LLVM rtp l a ()
forall a b. (a -> b) -> a -> b
$
       Module -> [Declare]
L.modDeclares Module
llvmModule


-- | Register overrides for declared-but-not-defined functions
declare_overrides ::
  ( IsSymInterface sym, HasLLVMAnn sym, HasPtrWidth wptr, wptr ~ ArchWidth arch
  , ?lc :: TypeContext, ?intrinsicsOpts :: IntrinsicsOptions, ?memOpts :: MemOptions ) =>
  [OverrideTemplate p sym arch rtp l a]
declare_overrides :: forall sym (wptr :: Natural) (arch :: LLVMArch) p rtp
       (l :: Ctx CrucibleType) (a :: CrucibleType).
(IsSymInterface sym, HasLLVMAnn sym, HasPtrWidth wptr,
 wptr ~ ArchWidth arch, ?lc::TypeContext,
 ?intrinsicsOpts::IntrinsicsOptions, ?memOpts::MemOptions) =>
[OverrideTemplate p sym arch rtp l a]
declare_overrides =
  [ LLVMOverride
  p sym ((EmptyCtx ::> BVType 64) ::> LLVMPointerType wptr) UnitType
-> OverrideTemplate p sym arch rtp l a
forall p (args :: Ctx CrucibleType) (ret :: CrucibleType) sym
       (arch :: LLVMArch) (wptr :: Natural) (l :: Ctx CrucibleType)
       (a :: CrucibleType) rtp.
(IsSymInterface sym, HasLLVMAnn sym, HasPtrWidth wptr) =>
LLVMOverride p sym args ret -> OverrideTemplate p sym arch rtp l a
basic_llvm_override LLVMOverride
  p sym ((EmptyCtx ::> BVType 64) ::> LLVMPointerType wptr) UnitType
forall sym (wptr :: Natural) p.
(IsSymInterface sym, HasPtrWidth wptr) =>
LLVMOverride
  p sym ((EmptyCtx ::> BVType 64) ::> LLVMPointerType wptr) UnitType
LLVM.llvmLifetimeStartOverride
  , LLVMOverride
  p sym ((EmptyCtx ::> BVType 64) ::> LLVMPointerType wptr) UnitType
-> OverrideTemplate p sym arch rtp l a
forall p (args :: Ctx CrucibleType) (ret :: CrucibleType) sym
       (arch :: LLVMArch) (wptr :: Natural) (l :: Ctx CrucibleType)
       (a :: CrucibleType) rtp.
(IsSymInterface sym, HasLLVMAnn sym, HasPtrWidth wptr) =>
LLVMOverride p sym args ret -> OverrideTemplate p sym arch rtp l a
basic_llvm_override LLVMOverride
  p sym ((EmptyCtx ::> BVType 64) ::> LLVMPointerType wptr) UnitType
forall sym (wptr :: Natural) p.
(IsSymInterface sym, HasPtrWidth wptr) =>
LLVMOverride
  p sym ((EmptyCtx ::> BVType 64) ::> LLVMPointerType wptr) UnitType
LLVM.llvmLifetimeEndOverride
  , LLVMOverride
  p sym ((EmptyCtx ::> BVType 64) ::> LLVMPointerType wptr) UnitType
-> OverrideTemplate p sym arch rtp l a
forall p (args :: Ctx CrucibleType) (ret :: CrucibleType) sym
       (arch :: LLVMArch) (wptr :: Natural) (l :: Ctx CrucibleType)
       (a :: CrucibleType) rtp.
(IsSymInterface sym, HasLLVMAnn sym, HasPtrWidth wptr) =>
LLVMOverride p sym args ret -> OverrideTemplate p sym arch rtp l a
basic_llvm_override (String
-> NatRepr 8
-> LLVMOverride
     p sym ((EmptyCtx ::> BVType 64) ::> LLVMPointerType wptr) UnitType
forall (width :: Natural) sym (wptr :: Natural) p.
(1 <= width, KnownNat width, IsSymInterface sym,
 HasPtrWidth wptr) =>
String
-> NatRepr width
-> LLVMOverride
     p sym ((EmptyCtx ::> BVType 64) ::> LLVMPointerType wptr) UnitType
LLVM.llvmLifetimeOverrideOverload String
"start" (forall (n :: Natural). KnownNat n => NatRepr n
knownNat @8))
  , LLVMOverride
  p sym ((EmptyCtx ::> BVType 64) ::> LLVMPointerType wptr) UnitType
-> OverrideTemplate p sym arch rtp l a
forall p (args :: Ctx CrucibleType) (ret :: CrucibleType) sym
       (arch :: LLVMArch) (wptr :: Natural) (l :: Ctx CrucibleType)
       (a :: CrucibleType) rtp.
(IsSymInterface sym, HasLLVMAnn sym, HasPtrWidth wptr) =>
LLVMOverride p sym args ret -> OverrideTemplate p sym arch rtp l a
basic_llvm_override (String
-> NatRepr 8
-> LLVMOverride
     p sym ((EmptyCtx ::> BVType 64) ::> LLVMPointerType wptr) UnitType
forall (width :: Natural) sym (wptr :: Natural) p.
(1 <= width, KnownNat width, IsSymInterface sym,
 HasPtrWidth wptr) =>
String
-> NatRepr width
-> LLVMOverride
     p sym ((EmptyCtx ::> BVType 64) ::> LLVMPointerType wptr) UnitType
LLVM.llvmLifetimeOverrideOverload String
"end" (forall (n :: Natural). KnownNat n => NatRepr n
knownNat @8))
  , LLVMOverride
  p sym ((EmptyCtx ::> BVType 64) ::> LLVMPointerType wptr) UnitType
-> OverrideTemplate p sym arch rtp l a
forall p (args :: Ctx CrucibleType) (ret :: CrucibleType) sym
       (arch :: LLVMArch) (wptr :: Natural) (l :: Ctx CrucibleType)
       (a :: CrucibleType) rtp.
(IsSymInterface sym, HasLLVMAnn sym, HasPtrWidth wptr) =>
LLVMOverride p sym args ret -> OverrideTemplate p sym arch rtp l a
basic_llvm_override (String
-> LLVMOverride
     p sym ((EmptyCtx ::> BVType 64) ::> LLVMPointerType wptr) UnitType
forall sym (wptr :: Natural) p.
(IsSymInterface sym, HasPtrWidth wptr) =>
String
-> LLVMOverride
     p sym ((EmptyCtx ::> BVType 64) ::> LLVMPointerType wptr) UnitType
LLVM.llvmLifetimeOverrideOverload_opaque String
"start")
  , LLVMOverride
  p sym ((EmptyCtx ::> BVType 64) ::> LLVMPointerType wptr) UnitType
-> OverrideTemplate p sym arch rtp l a
forall p (args :: Ctx CrucibleType) (ret :: CrucibleType) sym
       (arch :: LLVMArch) (wptr :: Natural) (l :: Ctx CrucibleType)
       (a :: CrucibleType) rtp.
(IsSymInterface sym, HasLLVMAnn sym, HasPtrWidth wptr) =>
LLVMOverride p sym args ret -> OverrideTemplate p sym arch rtp l a
basic_llvm_override (String
-> LLVMOverride
     p sym ((EmptyCtx ::> BVType 64) ::> LLVMPointerType wptr) UnitType
forall sym (wptr :: Natural) p.
(IsSymInterface sym, HasPtrWidth wptr) =>
String
-> LLVMOverride
     p sym ((EmptyCtx ::> BVType 64) ::> LLVMPointerType wptr) UnitType
LLVM.llvmLifetimeOverrideOverload_opaque String
"end")
  , LLVMOverride
  p
  sym
  ((EmptyCtx ::> BVType 64) ::> LLVMPointerType wptr)
  (LLVMPointerType wptr)
-> OverrideTemplate p sym arch rtp l a
forall p (args :: Ctx CrucibleType) (ret :: CrucibleType) sym
       (arch :: LLVMArch) (wptr :: Natural) (l :: Ctx CrucibleType)
       (a :: CrucibleType) rtp.
(IsSymInterface sym, HasLLVMAnn sym, HasPtrWidth wptr) =>
LLVMOverride p sym args ret -> OverrideTemplate p sym arch rtp l a
basic_llvm_override (NatRepr 8
-> LLVMOverride
     p
     sym
     ((EmptyCtx ::> BVType 64) ::> LLVMPointerType wptr)
     (LLVMPointerType wptr)
forall sym (wptr :: Natural) (width :: Natural) p.
(IsSymInterface sym, HasPtrWidth wptr) =>
NatRepr width
-> LLVMOverride
     p
     sym
     ((EmptyCtx ::> BVType 64) ::> LLVMPointerType wptr)
     (LLVMPointerType wptr)
LLVM.llvmInvariantStartOverride (forall (n :: Natural). KnownNat n => NatRepr n
knownNat @8))
  , LLVMOverride
  p
  sym
  ((EmptyCtx ::> BVType 64) ::> LLVMPointerType wptr)
  (LLVMPointerType wptr)
-> OverrideTemplate p sym arch rtp l a
forall p (args :: Ctx CrucibleType) (ret :: CrucibleType) sym
       (arch :: LLVMArch) (wptr :: Natural) (l :: Ctx CrucibleType)
       (a :: CrucibleType) rtp.
(IsSymInterface sym, HasLLVMAnn sym, HasPtrWidth wptr) =>
LLVMOverride p sym args ret -> OverrideTemplate p sym arch rtp l a
basic_llvm_override LLVMOverride
  p
  sym
  ((EmptyCtx ::> BVType 64) ::> LLVMPointerType wptr)
  (LLVMPointerType wptr)
forall sym (wptr :: Natural) p.
(IsSymInterface sym, HasPtrWidth wptr) =>
LLVMOverride
  p
  sym
  ((EmptyCtx ::> BVType 64) ::> LLVMPointerType wptr)
  (LLVMPointerType wptr)
LLVM.llvmInvariantStartOverride_opaque
  , LLVMOverride
  p
  sym
  (((EmptyCtx ::> LLVMPointerType wptr) ::> BVType 64)
   ::> LLVMPointerType wptr)
  UnitType
-> OverrideTemplate p sym arch rtp l a
forall p (args :: Ctx CrucibleType) (ret :: CrucibleType) sym
       (arch :: LLVMArch) (wptr :: Natural) (l :: Ctx CrucibleType)
       (a :: CrucibleType) rtp.
(IsSymInterface sym, HasLLVMAnn sym, HasPtrWidth wptr) =>
LLVMOverride p sym args ret -> OverrideTemplate p sym arch rtp l a
basic_llvm_override (NatRepr 8
-> LLVMOverride
     p
     sym
     (((EmptyCtx ::> LLVMPointerType wptr) ::> BVType 64)
      ::> LLVMPointerType wptr)
     UnitType
forall sym (wptr :: Natural) (width :: Natural) p.
(IsSymInterface sym, HasPtrWidth wptr) =>
NatRepr width
-> LLVMOverride
     p
     sym
     (((EmptyCtx ::> LLVMPointerType wptr) ::> BVType 64)
      ::> LLVMPointerType wptr)
     UnitType
LLVM.llvmInvariantEndOverride (forall (n :: Natural). KnownNat n => NatRepr n
knownNat @8))
  , LLVMOverride
  p
  sym
  (((EmptyCtx ::> LLVMPointerType wptr) ::> BVType 64)
   ::> LLVMPointerType wptr)
  UnitType
-> OverrideTemplate p sym arch rtp l a
forall p (args :: Ctx CrucibleType) (ret :: CrucibleType) sym
       (arch :: LLVMArch) (wptr :: Natural) (l :: Ctx CrucibleType)
       (a :: CrucibleType) rtp.
(IsSymInterface sym, HasLLVMAnn sym, HasPtrWidth wptr) =>
LLVMOverride p sym args ret -> OverrideTemplate p sym arch rtp l a
basic_llvm_override LLVMOverride
  p
  sym
  (((EmptyCtx ::> LLVMPointerType wptr) ::> BVType 64)
   ::> LLVMPointerType wptr)
  UnitType
forall sym (wptr :: Natural) p.
(IsSymInterface sym, HasPtrWidth wptr) =>
LLVMOverride
  p
  sym
  (((EmptyCtx ::> LLVMPointerType wptr) ::> BVType 64)
   ::> LLVMPointerType wptr)
  UnitType
LLVM.llvmInvariantEndOverride_opaque

  , LLVMOverride p sym (EmptyCtx ::> BVType 1) UnitType
-> OverrideTemplate p sym arch rtp l a
forall p (args :: Ctx CrucibleType) (ret :: CrucibleType) sym
       (arch :: LLVMArch) (wptr :: Natural) (l :: Ctx CrucibleType)
       (a :: CrucibleType) rtp.
(IsSymInterface sym, HasLLVMAnn sym, HasPtrWidth wptr) =>
LLVMOverride p sym args ret -> OverrideTemplate p sym arch rtp l a
basic_llvm_override LLVMOverride p sym (EmptyCtx ::> BVType 1) UnitType
forall sym p.
IsSymInterface sym =>
LLVMOverride p sym (EmptyCtx ::> BVType 1) UnitType
LLVM.llvmAssumeOverride
  , LLVMOverride p sym EmptyCtx UnitType
-> OverrideTemplate p sym arch rtp l a
forall p (args :: Ctx CrucibleType) (ret :: CrucibleType) sym
       (arch :: LLVMArch) (wptr :: Natural) (l :: Ctx CrucibleType)
       (a :: CrucibleType) rtp.
(IsSymInterface sym, HasLLVMAnn sym, HasPtrWidth wptr) =>
LLVMOverride p sym args ret -> OverrideTemplate p sym arch rtp l a
basic_llvm_override LLVMOverride p sym EmptyCtx UnitType
forall sym p.
IsSymInterface sym =>
LLVMOverride p sym EmptyCtx UnitType
LLVM.llvmTrapOverride
  , LLVMOverride p sym (EmptyCtx ::> BVType 8) UnitType
-> OverrideTemplate p sym arch rtp l a
forall p (args :: Ctx CrucibleType) (ret :: CrucibleType) sym
       (arch :: LLVMArch) (wptr :: Natural) (l :: Ctx CrucibleType)
       (a :: CrucibleType) rtp.
(IsSymInterface sym, HasLLVMAnn sym, HasPtrWidth wptr) =>
LLVMOverride p sym args ret -> OverrideTemplate p sym arch rtp l a
basic_llvm_override LLVMOverride p sym (EmptyCtx ::> BVType 8) UnitType
forall sym p.
IsSymInterface sym =>
LLVMOverride p sym (EmptyCtx ::> BVType 8) UnitType
LLVM.llvmUBSanTrapOverride

  , LLVMOverride
  p
  sym
  (((((EmptyCtx ::> LLVMPointerType wptr) ::> LLVMPointerType wptr)
     ::> BVType 32)
    ::> BVType 32)
   ::> BVType 1)
  UnitType
-> OverrideTemplate p sym arch rtp l a
forall p (args :: Ctx CrucibleType) (ret :: CrucibleType) sym
       (arch :: LLVMArch) (wptr :: Natural) (l :: Ctx CrucibleType)
       (a :: CrucibleType) rtp.
(IsSymInterface sym, HasLLVMAnn sym, HasPtrWidth wptr) =>
LLVMOverride p sym args ret -> OverrideTemplate p sym arch rtp l a
basic_llvm_override LLVMOverride
  p
  sym
  (((((EmptyCtx ::> LLVMPointerType wptr) ::> LLVMPointerType wptr)
     ::> BVType 32)
    ::> BVType 32)
   ::> BVType 1)
  UnitType
forall sym (wptr :: Natural) p.
(IsSymInterface sym, HasLLVMAnn sym, HasPtrWidth wptr,
 ?memOpts::MemOptions) =>
LLVMOverride
  p
  sym
  (((((EmptyCtx ::> LLVMPointerType wptr) ::> LLVMPointerType wptr)
     ::> BVType 32)
    ::> BVType 32)
   ::> BVType 1)
  UnitType
LLVM.llvmMemcpyOverride_8_8_32
  , LLVMOverride
  p
  sym
  ((((EmptyCtx ::> LLVMPointerType wptr) ::> LLVMPointerType wptr)
    ::> BVType 32)
   ::> BVType 1)
  UnitType
-> OverrideTemplate p sym arch rtp l a
forall p (args :: Ctx CrucibleType) (ret :: CrucibleType) sym
       (arch :: LLVMArch) (wptr :: Natural) (l :: Ctx CrucibleType)
       (a :: CrucibleType) rtp.
(IsSymInterface sym, HasLLVMAnn sym, HasPtrWidth wptr) =>
LLVMOverride p sym args ret -> OverrideTemplate p sym arch rtp l a
basic_llvm_override LLVMOverride
  p
  sym
  ((((EmptyCtx ::> LLVMPointerType wptr) ::> LLVMPointerType wptr)
    ::> BVType 32)
   ::> BVType 1)
  UnitType
forall sym (wptr :: Natural) p.
(IsSymInterface sym, HasLLVMAnn sym, HasPtrWidth wptr,
 ?memOpts::MemOptions) =>
LLVMOverride
  p
  sym
  ((((EmptyCtx ::> LLVMPointerType wptr) ::> LLVMPointerType wptr)
    ::> BVType 32)
   ::> BVType 1)
  UnitType
LLVM.llvmMemcpyOverride_8_8_32_noalign
  , LLVMOverride
  p
  sym
  ((((EmptyCtx ::> LLVMPointerType wptr) ::> LLVMPointerType wptr)
    ::> BVType 32)
   ::> BVType 1)
  UnitType
-> OverrideTemplate p sym arch rtp l a
forall p (args :: Ctx CrucibleType) (ret :: CrucibleType) sym
       (arch :: LLVMArch) (wptr :: Natural) (l :: Ctx CrucibleType)
       (a :: CrucibleType) rtp.
(IsSymInterface sym, HasLLVMAnn sym, HasPtrWidth wptr) =>
LLVMOverride p sym args ret -> OverrideTemplate p sym arch rtp l a
basic_llvm_override LLVMOverride
  p
  sym
  ((((EmptyCtx ::> LLVMPointerType wptr) ::> LLVMPointerType wptr)
    ::> BVType 32)
   ::> BVType 1)
  UnitType
forall sym (wptr :: Natural) p.
(IsSymInterface sym, HasLLVMAnn sym, HasPtrWidth wptr,
 ?memOpts::MemOptions) =>
LLVMOverride
  p
  sym
  ((((EmptyCtx ::> LLVMPointerType wptr) ::> LLVMPointerType wptr)
    ::> BVType 32)
   ::> BVType 1)
  UnitType
LLVM.llvmMemcpyOverride_8_8_32_noalign_opaque
  , LLVMOverride
  p
  sym
  (((((EmptyCtx ::> LLVMPointerType wptr) ::> LLVMPointerType wptr)
     ::> BVType 64)
    ::> BVType 32)
   ::> BVType 1)
  UnitType
-> OverrideTemplate p sym arch rtp l a
forall p (args :: Ctx CrucibleType) (ret :: CrucibleType) sym
       (arch :: LLVMArch) (wptr :: Natural) (l :: Ctx CrucibleType)
       (a :: CrucibleType) rtp.
(IsSymInterface sym, HasLLVMAnn sym, HasPtrWidth wptr) =>
LLVMOverride p sym args ret -> OverrideTemplate p sym arch rtp l a
basic_llvm_override LLVMOverride
  p
  sym
  (((((EmptyCtx ::> LLVMPointerType wptr) ::> LLVMPointerType wptr)
     ::> BVType 64)
    ::> BVType 32)
   ::> BVType 1)
  UnitType
forall sym (wptr :: Natural) p.
(IsSymInterface sym, HasLLVMAnn sym, HasPtrWidth wptr,
 ?memOpts::MemOptions) =>
LLVMOverride
  p
  sym
  (((((EmptyCtx ::> LLVMPointerType wptr) ::> LLVMPointerType wptr)
     ::> BVType 64)
    ::> BVType 32)
   ::> BVType 1)
  UnitType
LLVM.llvmMemcpyOverride_8_8_64
  , LLVMOverride
  p
  sym
  ((((EmptyCtx ::> LLVMPointerType wptr) ::> LLVMPointerType wptr)
    ::> BVType 64)
   ::> BVType 1)
  UnitType
-> OverrideTemplate p sym arch rtp l a
forall p (args :: Ctx CrucibleType) (ret :: CrucibleType) sym
       (arch :: LLVMArch) (wptr :: Natural) (l :: Ctx CrucibleType)
       (a :: CrucibleType) rtp.
(IsSymInterface sym, HasLLVMAnn sym, HasPtrWidth wptr) =>
LLVMOverride p sym args ret -> OverrideTemplate p sym arch rtp l a
basic_llvm_override LLVMOverride
  p
  sym
  ((((EmptyCtx ::> LLVMPointerType wptr) ::> LLVMPointerType wptr)
    ::> BVType 64)
   ::> BVType 1)
  UnitType
forall sym (wptr :: Natural) p.
(IsSymInterface sym, HasLLVMAnn sym, HasPtrWidth wptr,
 ?memOpts::MemOptions) =>
LLVMOverride
  p
  sym
  ((((EmptyCtx ::> LLVMPointerType wptr) ::> LLVMPointerType wptr)
    ::> BVType 64)
   ::> BVType 1)
  UnitType
LLVM.llvmMemcpyOverride_8_8_64_noalign
  , LLVMOverride
  p
  sym
  ((((EmptyCtx ::> LLVMPointerType wptr) ::> LLVMPointerType wptr)
    ::> BVType 64)
   ::> BVType 1)
  UnitType
-> OverrideTemplate p sym arch rtp l a
forall p (args :: Ctx CrucibleType) (ret :: CrucibleType) sym
       (arch :: LLVMArch) (wptr :: Natural) (l :: Ctx CrucibleType)
       (a :: CrucibleType) rtp.
(IsSymInterface sym, HasLLVMAnn sym, HasPtrWidth wptr) =>
LLVMOverride p sym args ret -> OverrideTemplate p sym arch rtp l a
basic_llvm_override LLVMOverride
  p
  sym
  ((((EmptyCtx ::> LLVMPointerType wptr) ::> LLVMPointerType wptr)
    ::> BVType 64)
   ::> BVType 1)
  UnitType
forall sym (wptr :: Natural) p.
(IsSymInterface sym, HasLLVMAnn sym, HasPtrWidth wptr,
 ?memOpts::MemOptions) =>
LLVMOverride
  p
  sym
  ((((EmptyCtx ::> LLVMPointerType wptr) ::> LLVMPointerType wptr)
    ::> BVType 64)
   ::> BVType 1)
  UnitType
LLVM.llvmMemcpyOverride_8_8_64_noalign_opaque

  , LLVMOverride
  p
  sym
  (((((EmptyCtx ::> LLVMPointerType wptr) ::> LLVMPointerType wptr)
     ::> BVType 32)
    ::> BVType 32)
   ::> BVType 1)
  UnitType
-> OverrideTemplate p sym arch rtp l a
forall p (args :: Ctx CrucibleType) (ret :: CrucibleType) sym
       (arch :: LLVMArch) (wptr :: Natural) (l :: Ctx CrucibleType)
       (a :: CrucibleType) rtp.
(IsSymInterface sym, HasLLVMAnn sym, HasPtrWidth wptr) =>
LLVMOverride p sym args ret -> OverrideTemplate p sym arch rtp l a
basic_llvm_override LLVMOverride
  p
  sym
  (((((EmptyCtx ::> LLVMPointerType wptr) ::> LLVMPointerType wptr)
     ::> BVType 32)
    ::> BVType 32)
   ::> BVType 1)
  UnitType
forall sym (wptr :: Natural) p.
(IsSymInterface sym, HasLLVMAnn sym, HasPtrWidth wptr,
 ?memOpts::MemOptions) =>
LLVMOverride
  p
  sym
  (((((EmptyCtx ::> LLVMPointerType wptr) ::> LLVMPointerType wptr)
     ::> BVType 32)
    ::> BVType 32)
   ::> BVType 1)
  UnitType
LLVM.llvmMemmoveOverride_8_8_32
  , LLVMOverride
  p
  sym
  ((((EmptyCtx ::> LLVMPointerType wptr) ::> LLVMPointerType wptr)
    ::> BVType 32)
   ::> BVType 1)
  UnitType
-> OverrideTemplate p sym arch rtp l a
forall p (args :: Ctx CrucibleType) (ret :: CrucibleType) sym
       (arch :: LLVMArch) (wptr :: Natural) (l :: Ctx CrucibleType)
       (a :: CrucibleType) rtp.
(IsSymInterface sym, HasLLVMAnn sym, HasPtrWidth wptr) =>
LLVMOverride p sym args ret -> OverrideTemplate p sym arch rtp l a
basic_llvm_override LLVMOverride
  p
  sym
  ((((EmptyCtx ::> LLVMPointerType wptr) ::> LLVMPointerType wptr)
    ::> BVType 32)
   ::> BVType 1)
  UnitType
forall sym (wptr :: Natural) p.
(IsSymInterface sym, HasLLVMAnn sym, HasPtrWidth wptr,
 ?memOpts::MemOptions) =>
LLVMOverride
  p
  sym
  ((((EmptyCtx ::> LLVMPointerType wptr) ::> LLVMPointerType wptr)
    ::> BVType 32)
   ::> BVType 1)
  UnitType
LLVM.llvmMemmoveOverride_8_8_32_noalign
  , LLVMOverride
  p
  sym
  ((((EmptyCtx ::> LLVMPointerType wptr) ::> LLVMPointerType wptr)
    ::> BVType 32)
   ::> BVType 1)
  UnitType
-> OverrideTemplate p sym arch rtp l a
forall p (args :: Ctx CrucibleType) (ret :: CrucibleType) sym
       (arch :: LLVMArch) (wptr :: Natural) (l :: Ctx CrucibleType)
       (a :: CrucibleType) rtp.
(IsSymInterface sym, HasLLVMAnn sym, HasPtrWidth wptr) =>
LLVMOverride p sym args ret -> OverrideTemplate p sym arch rtp l a
basic_llvm_override LLVMOverride
  p
  sym
  ((((EmptyCtx ::> LLVMPointerType wptr) ::> LLVMPointerType wptr)
    ::> BVType 32)
   ::> BVType 1)
  UnitType
forall sym (wptr :: Natural) p.
(IsSymInterface sym, HasLLVMAnn sym, HasPtrWidth wptr,
 ?memOpts::MemOptions) =>
LLVMOverride
  p
  sym
  ((((EmptyCtx ::> LLVMPointerType wptr) ::> LLVMPointerType wptr)
    ::> BVType 32)
   ::> BVType 1)
  UnitType
LLVM.llvmMemmoveOverride_8_8_32_noalign_opaque
  , LLVMOverride
  p
  sym
  (((((EmptyCtx ::> LLVMPointerType wptr) ::> LLVMPointerType wptr)
     ::> BVType 64)
    ::> BVType 32)
   ::> BVType 1)
  UnitType
-> OverrideTemplate p sym arch rtp l a
forall p (args :: Ctx CrucibleType) (ret :: CrucibleType) sym
       (arch :: LLVMArch) (wptr :: Natural) (l :: Ctx CrucibleType)
       (a :: CrucibleType) rtp.
(IsSymInterface sym, HasLLVMAnn sym, HasPtrWidth wptr) =>
LLVMOverride p sym args ret -> OverrideTemplate p sym arch rtp l a
basic_llvm_override LLVMOverride
  p
  sym
  (((((EmptyCtx ::> LLVMPointerType wptr) ::> LLVMPointerType wptr)
     ::> BVType 64)
    ::> BVType 32)
   ::> BVType 1)
  UnitType
forall sym (wptr :: Natural) p.
(IsSymInterface sym, HasLLVMAnn sym, HasPtrWidth wptr,
 ?memOpts::MemOptions) =>
LLVMOverride
  p
  sym
  (((((EmptyCtx ::> LLVMPointerType wptr) ::> LLVMPointerType wptr)
     ::> BVType 64)
    ::> BVType 32)
   ::> BVType 1)
  UnitType
LLVM.llvmMemmoveOverride_8_8_64
  , LLVMOverride
  p
  sym
  ((((EmptyCtx ::> LLVMPointerType wptr) ::> LLVMPointerType wptr)
    ::> BVType 64)
   ::> BVType 1)
  UnitType
-> OverrideTemplate p sym arch rtp l a
forall p (args :: Ctx CrucibleType) (ret :: CrucibleType) sym
       (arch :: LLVMArch) (wptr :: Natural) (l :: Ctx CrucibleType)
       (a :: CrucibleType) rtp.
(IsSymInterface sym, HasLLVMAnn sym, HasPtrWidth wptr) =>
LLVMOverride p sym args ret -> OverrideTemplate p sym arch rtp l a
basic_llvm_override LLVMOverride
  p
  sym
  ((((EmptyCtx ::> LLVMPointerType wptr) ::> LLVMPointerType wptr)
    ::> BVType 64)
   ::> BVType 1)
  UnitType
forall sym (wptr :: Natural) p.
(IsSymInterface sym, HasLLVMAnn sym, HasPtrWidth wptr,
 ?memOpts::MemOptions) =>
LLVMOverride
  p
  sym
  ((((EmptyCtx ::> LLVMPointerType wptr) ::> LLVMPointerType wptr)
    ::> BVType 64)
   ::> BVType 1)
  UnitType
LLVM.llvmMemmoveOverride_8_8_64_noalign
  , LLVMOverride
  p
  sym
  ((((EmptyCtx ::> LLVMPointerType wptr) ::> LLVMPointerType wptr)
    ::> BVType 64)
   ::> BVType 1)
  UnitType
-> OverrideTemplate p sym arch rtp l a
forall p (args :: Ctx CrucibleType) (ret :: CrucibleType) sym
       (arch :: LLVMArch) (wptr :: Natural) (l :: Ctx CrucibleType)
       (a :: CrucibleType) rtp.
(IsSymInterface sym, HasLLVMAnn sym, HasPtrWidth wptr) =>
LLVMOverride p sym args ret -> OverrideTemplate p sym arch rtp l a
basic_llvm_override LLVMOverride
  p
  sym
  ((((EmptyCtx ::> LLVMPointerType wptr) ::> LLVMPointerType wptr)
    ::> BVType 64)
   ::> BVType 1)
  UnitType
forall sym (wptr :: Natural) p.
(IsSymInterface sym, HasLLVMAnn sym, HasPtrWidth wptr,
 ?memOpts::MemOptions) =>
LLVMOverride
  p
  sym
  ((((EmptyCtx ::> LLVMPointerType wptr) ::> LLVMPointerType wptr)
    ::> BVType 64)
   ::> BVType 1)
  UnitType
LLVM.llvmMemmoveOverride_8_8_64_noalign_opaque

  , LLVMOverride
  p
  sym
  (((((EmptyCtx ::> LLVMPointerType wptr) ::> BVType 8)
     ::> BVType 32)
    ::> BVType 32)
   ::> BVType 1)
  UnitType
-> OverrideTemplate p sym arch rtp l a
forall p (args :: Ctx CrucibleType) (ret :: CrucibleType) sym
       (arch :: LLVMArch) (wptr :: Natural) (l :: Ctx CrucibleType)
       (a :: CrucibleType) rtp.
(IsSymInterface sym, HasLLVMAnn sym, HasPtrWidth wptr) =>
LLVMOverride p sym args ret -> OverrideTemplate p sym arch rtp l a
basic_llvm_override LLVMOverride
  p
  sym
  (((((EmptyCtx ::> LLVMPointerType wptr) ::> BVType 8)
     ::> BVType 32)
    ::> BVType 32)
   ::> BVType 1)
  UnitType
forall sym (wptr :: Natural) p.
(IsSymInterface sym, HasLLVMAnn sym, HasPtrWidth wptr) =>
LLVMOverride
  p
  sym
  (((((EmptyCtx ::> LLVMPointerType wptr) ::> BVType 8)
     ::> BVType 32)
    ::> BVType 32)
   ::> BVType 1)
  UnitType
LLVM.llvmMemsetOverride_8_32
  , LLVMOverride
  p
  sym
  ((((EmptyCtx ::> LLVMPointerType wptr) ::> BVType 8) ::> BVType 32)
   ::> BVType 1)
  UnitType
-> OverrideTemplate p sym arch rtp l a
forall p (args :: Ctx CrucibleType) (ret :: CrucibleType) sym
       (arch :: LLVMArch) (wptr :: Natural) (l :: Ctx CrucibleType)
       (a :: CrucibleType) rtp.
(IsSymInterface sym, HasLLVMAnn sym, HasPtrWidth wptr) =>
LLVMOverride p sym args ret -> OverrideTemplate p sym arch rtp l a
basic_llvm_override LLVMOverride
  p
  sym
  ((((EmptyCtx ::> LLVMPointerType wptr) ::> BVType 8) ::> BVType 32)
   ::> BVType 1)
  UnitType
forall sym (wptr :: Natural) p.
(IsSymInterface sym, HasLLVMAnn sym, HasPtrWidth wptr) =>
LLVMOverride
  p
  sym
  ((((EmptyCtx ::> LLVMPointerType wptr) ::> BVType 8) ::> BVType 32)
   ::> BVType 1)
  UnitType
LLVM.llvmMemsetOverride_8_32_noalign
  , LLVMOverride
  p
  sym
  ((((EmptyCtx ::> LLVMPointerType wptr) ::> BVType 8) ::> BVType 32)
   ::> BVType 1)
  UnitType
-> OverrideTemplate p sym arch rtp l a
forall p (args :: Ctx CrucibleType) (ret :: CrucibleType) sym
       (arch :: LLVMArch) (wptr :: Natural) (l :: Ctx CrucibleType)
       (a :: CrucibleType) rtp.
(IsSymInterface sym, HasLLVMAnn sym, HasPtrWidth wptr) =>
LLVMOverride p sym args ret -> OverrideTemplate p sym arch rtp l a
basic_llvm_override LLVMOverride
  p
  sym
  ((((EmptyCtx ::> LLVMPointerType wptr) ::> BVType 8) ::> BVType 32)
   ::> BVType 1)
  UnitType
forall sym (wptr :: Natural) p.
(IsSymInterface sym, HasLLVMAnn sym, HasPtrWidth wptr) =>
LLVMOverride
  p
  sym
  ((((EmptyCtx ::> LLVMPointerType wptr) ::> BVType 8) ::> BVType 32)
   ::> BVType 1)
  UnitType
LLVM.llvmMemsetOverride_8_32_noalign_opaque
  , LLVMOverride
  p
  sym
  (((((EmptyCtx ::> LLVMPointerType wptr) ::> BVType 8)
     ::> BVType 64)
    ::> BVType 32)
   ::> BVType 1)
  UnitType
-> OverrideTemplate p sym arch rtp l a
forall p (args :: Ctx CrucibleType) (ret :: CrucibleType) sym
       (arch :: LLVMArch) (wptr :: Natural) (l :: Ctx CrucibleType)
       (a :: CrucibleType) rtp.
(IsSymInterface sym, HasLLVMAnn sym, HasPtrWidth wptr) =>
LLVMOverride p sym args ret -> OverrideTemplate p sym arch rtp l a
basic_llvm_override LLVMOverride
  p
  sym
  (((((EmptyCtx ::> LLVMPointerType wptr) ::> BVType 8)
     ::> BVType 64)
    ::> BVType 32)
   ::> BVType 1)
  UnitType
forall sym (wptr :: Natural) p.
(IsSymInterface sym, HasLLVMAnn sym, HasPtrWidth wptr) =>
LLVMOverride
  p
  sym
  (((((EmptyCtx ::> LLVMPointerType wptr) ::> BVType 8)
     ::> BVType 64)
    ::> BVType 32)
   ::> BVType 1)
  UnitType
LLVM.llvmMemsetOverride_8_64
  , LLVMOverride
  p
  sym
  ((((EmptyCtx ::> LLVMPointerType wptr) ::> BVType 8) ::> BVType 64)
   ::> BVType 1)
  UnitType
-> OverrideTemplate p sym arch rtp l a
forall p (args :: Ctx CrucibleType) (ret :: CrucibleType) sym
       (arch :: LLVMArch) (wptr :: Natural) (l :: Ctx CrucibleType)
       (a :: CrucibleType) rtp.
(IsSymInterface sym, HasLLVMAnn sym, HasPtrWidth wptr) =>
LLVMOverride p sym args ret -> OverrideTemplate p sym arch rtp l a
basic_llvm_override LLVMOverride
  p
  sym
  ((((EmptyCtx ::> LLVMPointerType wptr) ::> BVType 8) ::> BVType 64)
   ::> BVType 1)
  UnitType
forall sym (wptr :: Natural) p.
(IsSymInterface sym, HasLLVMAnn sym, HasPtrWidth wptr) =>
LLVMOverride
  p
  sym
  ((((EmptyCtx ::> LLVMPointerType wptr) ::> BVType 8) ::> BVType 64)
   ::> BVType 1)
  UnitType
LLVM.llvmMemsetOverride_8_64_noalign
  , LLVMOverride
  p
  sym
  ((((EmptyCtx ::> LLVMPointerType wptr) ::> BVType 8) ::> BVType 64)
   ::> BVType 1)
  UnitType
-> OverrideTemplate p sym arch rtp l a
forall p (args :: Ctx CrucibleType) (ret :: CrucibleType) sym
       (arch :: LLVMArch) (wptr :: Natural) (l :: Ctx CrucibleType)
       (a :: CrucibleType) rtp.
(IsSymInterface sym, HasLLVMAnn sym, HasPtrWidth wptr) =>
LLVMOverride p sym args ret -> OverrideTemplate p sym arch rtp l a
basic_llvm_override LLVMOverride
  p
  sym
  ((((EmptyCtx ::> LLVMPointerType wptr) ::> BVType 8) ::> BVType 64)
   ::> BVType 1)
  UnitType
forall sym (wptr :: Natural) p.
(IsSymInterface sym, HasLLVMAnn sym, HasPtrWidth wptr) =>
LLVMOverride
  p
  sym
  ((((EmptyCtx ::> LLVMPointerType wptr) ::> BVType 8) ::> BVType 64)
   ::> BVType 1)
  UnitType
LLVM.llvmMemsetOverride_8_64_noalign_opaque

  , LLVMOverride
  p
  sym
  ((EmptyCtx ::> LLVMPointerType wptr) ::> BVType 1)
  (BVType 32)
-> OverrideTemplate p sym arch rtp l a
forall p (args :: Ctx CrucibleType) (ret :: CrucibleType) sym
       (arch :: LLVMArch) (wptr :: Natural) (l :: Ctx CrucibleType)
       (a :: CrucibleType) rtp.
(IsSymInterface sym, HasLLVMAnn sym, HasPtrWidth wptr) =>
LLVMOverride p sym args ret -> OverrideTemplate p sym arch rtp l a
basic_llvm_override LLVMOverride
  p
  sym
  ((EmptyCtx ::> LLVMPointerType wptr) ::> BVType 1)
  (BVType 32)
forall sym (wptr :: Natural) p.
(IsSymInterface sym, HasPtrWidth wptr) =>
LLVMOverride
  p
  sym
  ((EmptyCtx ::> LLVMPointerType wptr) ::> BVType 1)
  (BVType 32)
LLVM.llvmObjectsizeOverride_32
  , LLVMOverride
  p
  sym
  ((EmptyCtx ::> LLVMPointerType wptr) ::> BVType 1)
  (BVType 64)
-> OverrideTemplate p sym arch rtp l a
forall p (args :: Ctx CrucibleType) (ret :: CrucibleType) sym
       (arch :: LLVMArch) (wptr :: Natural) (l :: Ctx CrucibleType)
       (a :: CrucibleType) rtp.
(IsSymInterface sym, HasLLVMAnn sym, HasPtrWidth wptr) =>
LLVMOverride p sym args ret -> OverrideTemplate p sym arch rtp l a
basic_llvm_override LLVMOverride
  p
  sym
  ((EmptyCtx ::> LLVMPointerType wptr) ::> BVType 1)
  (BVType 64)
forall sym (wptr :: Natural) p.
(IsSymInterface sym, HasPtrWidth wptr) =>
LLVMOverride
  p
  sym
  ((EmptyCtx ::> LLVMPointerType wptr) ::> BVType 1)
  (BVType 64)
LLVM.llvmObjectsizeOverride_64

  , LLVMOverride
  p
  sym
  (((EmptyCtx ::> LLVMPointerType wptr) ::> BVType 1) ::> BVType 1)
  (BVType 32)
-> OverrideTemplate p sym arch rtp l a
forall p (args :: Ctx CrucibleType) (ret :: CrucibleType) sym
       (arch :: LLVMArch) (wptr :: Natural) (l :: Ctx CrucibleType)
       (a :: CrucibleType) rtp.
(IsSymInterface sym, HasLLVMAnn sym, HasPtrWidth wptr) =>
LLVMOverride p sym args ret -> OverrideTemplate p sym arch rtp l a
basic_llvm_override LLVMOverride
  p
  sym
  (((EmptyCtx ::> LLVMPointerType wptr) ::> BVType 1) ::> BVType 1)
  (BVType 32)
forall sym (wptr :: Natural) p.
(IsSymInterface sym, HasPtrWidth wptr) =>
LLVMOverride
  p
  sym
  (((EmptyCtx ::> LLVMPointerType wptr) ::> BVType 1) ::> BVType 1)
  (BVType 32)
LLVM.llvmObjectsizeOverride_32_null
  , LLVMOverride
  p
  sym
  (((EmptyCtx ::> LLVMPointerType wptr) ::> BVType 1) ::> BVType 1)
  (BVType 64)
-> OverrideTemplate p sym arch rtp l a
forall p (args :: Ctx CrucibleType) (ret :: CrucibleType) sym
       (arch :: LLVMArch) (wptr :: Natural) (l :: Ctx CrucibleType)
       (a :: CrucibleType) rtp.
(IsSymInterface sym, HasLLVMAnn sym, HasPtrWidth wptr) =>
LLVMOverride p sym args ret -> OverrideTemplate p sym arch rtp l a
basic_llvm_override LLVMOverride
  p
  sym
  (((EmptyCtx ::> LLVMPointerType wptr) ::> BVType 1) ::> BVType 1)
  (BVType 64)
forall sym (wptr :: Natural) p.
(IsSymInterface sym, HasPtrWidth wptr) =>
LLVMOverride
  p
  sym
  (((EmptyCtx ::> LLVMPointerType wptr) ::> BVType 1) ::> BVType 1)
  (BVType 64)
LLVM.llvmObjectsizeOverride_64_null

  , LLVMOverride
  p
  sym
  ((((EmptyCtx ::> LLVMPointerType wptr) ::> BVType 1) ::> BVType 1)
   ::> BVType 1)
  (BVType 32)
-> OverrideTemplate p sym arch rtp l a
forall p (args :: Ctx CrucibleType) (ret :: CrucibleType) sym
       (arch :: LLVMArch) (wptr :: Natural) (l :: Ctx CrucibleType)
       (a :: CrucibleType) rtp.
(IsSymInterface sym, HasLLVMAnn sym, HasPtrWidth wptr) =>
LLVMOverride p sym args ret -> OverrideTemplate p sym arch rtp l a
basic_llvm_override LLVMOverride
  p
  sym
  ((((EmptyCtx ::> LLVMPointerType wptr) ::> BVType 1) ::> BVType 1)
   ::> BVType 1)
  (BVType 32)
forall sym (wptr :: Natural) p.
(IsSymInterface sym, HasPtrWidth wptr) =>
LLVMOverride
  p
  sym
  ((((EmptyCtx ::> LLVMPointerType wptr) ::> BVType 1) ::> BVType 1)
   ::> BVType 1)
  (BVType 32)
LLVM.llvmObjectsizeOverride_32_null_dynamic
  , LLVMOverride
  p
  sym
  ((((EmptyCtx ::> LLVMPointerType wptr) ::> BVType 1) ::> BVType 1)
   ::> BVType 1)
  (BVType 64)
-> OverrideTemplate p sym arch rtp l a
forall p (args :: Ctx CrucibleType) (ret :: CrucibleType) sym
       (arch :: LLVMArch) (wptr :: Natural) (l :: Ctx CrucibleType)
       (a :: CrucibleType) rtp.
(IsSymInterface sym, HasLLVMAnn sym, HasPtrWidth wptr) =>
LLVMOverride p sym args ret -> OverrideTemplate p sym arch rtp l a
basic_llvm_override LLVMOverride
  p
  sym
  ((((EmptyCtx ::> LLVMPointerType wptr) ::> BVType 1) ::> BVType 1)
   ::> BVType 1)
  (BVType 64)
forall sym (wptr :: Natural) p.
(IsSymInterface sym, HasPtrWidth wptr) =>
LLVMOverride
  p
  sym
  ((((EmptyCtx ::> LLVMPointerType wptr) ::> BVType 1) ::> BVType 1)
   ::> BVType 1)
  (BVType 64)
LLVM.llvmObjectsizeOverride_64_null_dynamic

  , LLVMOverride
  p
  sym
  ((((EmptyCtx ::> LLVMPointerType wptr) ::> BVType 1) ::> BVType 1)
   ::> BVType 1)
  (BVType 32)
-> OverrideTemplate p sym arch rtp l a
forall p (args :: Ctx CrucibleType) (ret :: CrucibleType) sym
       (arch :: LLVMArch) (wptr :: Natural) (l :: Ctx CrucibleType)
       (a :: CrucibleType) rtp.
(IsSymInterface sym, HasLLVMAnn sym, HasPtrWidth wptr) =>
LLVMOverride p sym args ret -> OverrideTemplate p sym arch rtp l a
basic_llvm_override LLVMOverride
  p
  sym
  ((((EmptyCtx ::> LLVMPointerType wptr) ::> BVType 1) ::> BVType 1)
   ::> BVType 1)
  (BVType 32)
forall sym (wptr :: Natural) p.
(IsSymInterface sym, HasPtrWidth wptr) =>
LLVMOverride
  p
  sym
  ((((EmptyCtx ::> LLVMPointerType wptr) ::> BVType 1) ::> BVType 1)
   ::> BVType 1)
  (BVType 32)
LLVM.llvmObjectsizeOverride_32_null_dynamic_opaque
  , LLVMOverride
  p
  sym
  ((((EmptyCtx ::> LLVMPointerType wptr) ::> BVType 1) ::> BVType 1)
   ::> BVType 1)
  (BVType 64)
-> OverrideTemplate p sym arch rtp l a
forall p (args :: Ctx CrucibleType) (ret :: CrucibleType) sym
       (arch :: LLVMArch) (wptr :: Natural) (l :: Ctx CrucibleType)
       (a :: CrucibleType) rtp.
(IsSymInterface sym, HasLLVMAnn sym, HasPtrWidth wptr) =>
LLVMOverride p sym args ret -> OverrideTemplate p sym arch rtp l a
basic_llvm_override LLVMOverride
  p
  sym
  ((((EmptyCtx ::> LLVMPointerType wptr) ::> BVType 1) ::> BVType 1)
   ::> BVType 1)
  (BVType 64)
forall sym (wptr :: Natural) p.
(IsSymInterface sym, HasPtrWidth wptr) =>
LLVMOverride
  p
  sym
  ((((EmptyCtx ::> LLVMPointerType wptr) ::> BVType 1) ::> BVType 1)
   ::> BVType 1)
  (BVType 64)
LLVM.llvmObjectsizeOverride_64_null_dynamic_opaque

  , LLVMOverride
  p
  sym
  ((((EmptyCtx ::> LLVMPointerType wptr) ::> BVType 32)
    ::> BVType 32)
   ::> BVType 32)
  UnitType
-> OverrideTemplate p sym arch rtp l a
forall p (args :: Ctx CrucibleType) (ret :: CrucibleType) sym
       (arch :: LLVMArch) (wptr :: Natural) (l :: Ctx CrucibleType)
       (a :: CrucibleType) rtp.
(IsSymInterface sym, HasLLVMAnn sym, HasPtrWidth wptr) =>
LLVMOverride p sym args ret -> OverrideTemplate p sym arch rtp l a
basic_llvm_override LLVMOverride
  p
  sym
  ((((EmptyCtx ::> LLVMPointerType wptr) ::> BVType 32)
    ::> BVType 32)
   ::> BVType 32)
  UnitType
forall sym (wptr :: Natural) p.
(IsSymInterface sym, HasPtrWidth wptr) =>
LLVMOverride
  p
  sym
  ((((EmptyCtx ::> LLVMPointerType wptr) ::> BVType 32)
    ::> BVType 32)
   ::> BVType 32)
  UnitType
LLVM.llvmPrefetchOverride
  , LLVMOverride
  p
  sym
  ((((EmptyCtx ::> LLVMPointerType wptr) ::> BVType 32)
    ::> BVType 32)
   ::> BVType 32)
  UnitType
-> OverrideTemplate p sym arch rtp l a
forall p (args :: Ctx CrucibleType) (ret :: CrucibleType) sym
       (arch :: LLVMArch) (wptr :: Natural) (l :: Ctx CrucibleType)
       (a :: CrucibleType) rtp.
(IsSymInterface sym, HasLLVMAnn sym, HasPtrWidth wptr) =>
LLVMOverride p sym args ret -> OverrideTemplate p sym arch rtp l a
basic_llvm_override LLVMOverride
  p
  sym
  ((((EmptyCtx ::> LLVMPointerType wptr) ::> BVType 32)
    ::> BVType 32)
   ::> BVType 32)
  UnitType
forall sym (wptr :: Natural) p.
(IsSymInterface sym, HasPtrWidth wptr) =>
LLVMOverride
  p
  sym
  ((((EmptyCtx ::> LLVMPointerType wptr) ::> BVType 32)
    ::> BVType 32)
   ::> BVType 32)
  UnitType
LLVM.llvmPrefetchOverride_opaque
  , LLVMOverride
  p
  sym
  ((((EmptyCtx ::> LLVMPointerType wptr) ::> BVType 32)
    ::> BVType 32)
   ::> BVType 32)
  UnitType
-> OverrideTemplate p sym arch rtp l a
forall p (args :: Ctx CrucibleType) (ret :: CrucibleType) sym
       (arch :: LLVMArch) (wptr :: Natural) (l :: Ctx CrucibleType)
       (a :: CrucibleType) rtp.
(IsSymInterface sym, HasLLVMAnn sym, HasPtrWidth wptr) =>
LLVMOverride p sym args ret -> OverrideTemplate p sym arch rtp l a
basic_llvm_override LLVMOverride
  p
  sym
  ((((EmptyCtx ::> LLVMPointerType wptr) ::> BVType 32)
    ::> BVType 32)
   ::> BVType 32)
  UnitType
forall sym (wptr :: Natural) p.
(IsSymInterface sym, HasPtrWidth wptr) =>
LLVMOverride
  p
  sym
  ((((EmptyCtx ::> LLVMPointerType wptr) ::> BVType 32)
    ::> BVType 32)
   ::> BVType 32)
  UnitType
LLVM.llvmPrefetchOverride_preLLVM10

  , LLVMOverride p sym EmptyCtx (LLVMPointerType wptr)
-> OverrideTemplate p sym arch rtp l a
forall p (args :: Ctx CrucibleType) (ret :: CrucibleType) sym
       (arch :: LLVMArch) (wptr :: Natural) (l :: Ctx CrucibleType)
       (a :: CrucibleType) rtp.
(IsSymInterface sym, HasLLVMAnn sym, HasPtrWidth wptr) =>
LLVMOverride p sym args ret -> OverrideTemplate p sym arch rtp l a
basic_llvm_override LLVMOverride p sym EmptyCtx (LLVMPointerType wptr)
forall sym (wptr :: Natural) p.
(IsSymInterface sym, HasPtrWidth wptr) =>
LLVMOverride p sym EmptyCtx (LLVMPointerType wptr)
LLVM.llvmStacksave
  , LLVMOverride p sym (EmptyCtx ::> LLVMPointerType wptr) UnitType
-> OverrideTemplate p sym arch rtp l a
forall p (args :: Ctx CrucibleType) (ret :: CrucibleType) sym
       (arch :: LLVMArch) (wptr :: Natural) (l :: Ctx CrucibleType)
       (a :: CrucibleType) rtp.
(IsSymInterface sym, HasLLVMAnn sym, HasPtrWidth wptr) =>
LLVMOverride p sym args ret -> OverrideTemplate p sym arch rtp l a
basic_llvm_override LLVMOverride p sym (EmptyCtx ::> LLVMPointerType wptr) UnitType
forall sym (wptr :: Natural) p.
(IsSymInterface sym, HasPtrWidth wptr) =>
LLVMOverride p sym (EmptyCtx ::> LLVMPointerType wptr) UnitType
LLVM.llvmStackrestore

  , String
-> (forall (w :: Natural).
    (1 <= w) =>
    NatRepr w -> SomeLLVMOverride p sym)
-> OverrideTemplate p sym arch rtp l a
forall p sym (arch :: LLVMArch) (wptr :: Natural)
       (l :: Ctx CrucibleType) (a :: CrucibleType) rtp.
(IsSymInterface sym, HasLLVMAnn sym, HasPtrWidth wptr) =>
String
-> (forall (w :: Natural).
    (1 <= w) =>
    NatRepr w -> SomeLLVMOverride p sym)
-> OverrideTemplate p sym arch rtp l a
polymorphic1_llvm_override String
"llvm.ctlz"
      (\NatRepr w
w -> LLVMOverride
  p sym ((EmptyCtx ::> BVType w) ::> BVType 1) (BVType w)
-> SomeLLVMOverride p sym
forall p sym (args :: Ctx CrucibleType) (ret :: CrucibleType).
LLVMOverride p sym args ret -> SomeLLVMOverride p sym
SomeLLVMOverride (NatRepr w
-> LLVMOverride
     p sym ((EmptyCtx ::> BVType w) ::> BVType 1) (BVType w)
forall (w :: Natural) sym p.
(1 <= w, IsSymInterface sym) =>
NatRepr w
-> LLVMOverride
     p sym ((EmptyCtx ::> BVType w) ::> BVType 1) (BVType w)
LLVM.llvmCtlz NatRepr w
w))
  , String
-> (forall (w :: Natural).
    (1 <= w) =>
    NatRepr w -> SomeLLVMOverride p sym)
-> OverrideTemplate p sym arch rtp l a
forall p sym (arch :: LLVMArch) (wptr :: Natural)
       (l :: Ctx CrucibleType) (a :: CrucibleType) rtp.
(IsSymInterface sym, HasLLVMAnn sym, HasPtrWidth wptr) =>
String
-> (forall (w :: Natural).
    (1 <= w) =>
    NatRepr w -> SomeLLVMOverride p sym)
-> OverrideTemplate p sym arch rtp l a
polymorphic1_llvm_override String
"llvm.cttz"
      (\NatRepr w
w -> LLVMOverride
  p sym ((EmptyCtx ::> BVType w) ::> BVType 1) (BVType w)
-> SomeLLVMOverride p sym
forall p sym (args :: Ctx CrucibleType) (ret :: CrucibleType).
LLVMOverride p sym args ret -> SomeLLVMOverride p sym
SomeLLVMOverride (NatRepr w
-> LLVMOverride
     p sym ((EmptyCtx ::> BVType w) ::> BVType 1) (BVType w)
forall (w :: Natural) sym p.
(1 <= w, IsSymInterface sym) =>
NatRepr w
-> LLVMOverride
     p sym ((EmptyCtx ::> BVType w) ::> BVType 1) (BVType w)
LLVM.llvmCttz NatRepr w
w))
  , String
-> (forall (w :: Natural).
    (1 <= w) =>
    NatRepr w -> SomeLLVMOverride p sym)
-> OverrideTemplate p sym arch rtp l a
forall p sym (arch :: LLVMArch) (wptr :: Natural)
       (l :: Ctx CrucibleType) (a :: CrucibleType) rtp.
(IsSymInterface sym, HasLLVMAnn sym, HasPtrWidth wptr) =>
String
-> (forall (w :: Natural).
    (1 <= w) =>
    NatRepr w -> SomeLLVMOverride p sym)
-> OverrideTemplate p sym arch rtp l a
polymorphic1_llvm_override String
"llvm.ctpop"
      (\NatRepr w
w -> LLVMOverride p sym (EmptyCtx ::> BVType w) (BVType w)
-> SomeLLVMOverride p sym
forall p sym (args :: Ctx CrucibleType) (ret :: CrucibleType).
LLVMOverride p sym args ret -> SomeLLVMOverride p sym
SomeLLVMOverride (NatRepr w -> LLVMOverride p sym (EmptyCtx ::> BVType w) (BVType w)
forall (w :: Natural) sym p.
(1 <= w, IsSymInterface sym) =>
NatRepr w -> LLVMOverride p sym (EmptyCtx ::> BVType w) (BVType w)
LLVM.llvmCtpop NatRepr w
w))
  , String
-> (forall (w :: Natural).
    (1 <= w) =>
    NatRepr w -> SomeLLVMOverride p sym)
-> OverrideTemplate p sym arch rtp l a
forall p sym (arch :: LLVMArch) (wptr :: Natural)
       (l :: Ctx CrucibleType) (a :: CrucibleType) rtp.
(IsSymInterface sym, HasLLVMAnn sym, HasPtrWidth wptr) =>
String
-> (forall (w :: Natural).
    (1 <= w) =>
    NatRepr w -> SomeLLVMOverride p sym)
-> OverrideTemplate p sym arch rtp l a
polymorphic1_llvm_override String
"llvm.bitreverse"
      (\NatRepr w
w -> LLVMOverride p sym (EmptyCtx ::> BVType w) (BVType w)
-> SomeLLVMOverride p sym
forall p sym (args :: Ctx CrucibleType) (ret :: CrucibleType).
LLVMOverride p sym args ret -> SomeLLVMOverride p sym
SomeLLVMOverride (NatRepr w -> LLVMOverride p sym (EmptyCtx ::> BVType w) (BVType w)
forall (w :: Natural) sym p.
(1 <= w, IsSymInterface sym) =>
NatRepr w -> LLVMOverride p sym (EmptyCtx ::> BVType w) (BVType w)
LLVM.llvmBitreverse NatRepr w
w))
  , String
-> (forall (w :: Natural).
    (1 <= w) =>
    NatRepr w -> SomeLLVMOverride p sym)
-> OverrideTemplate p sym arch rtp l a
forall p sym (arch :: LLVMArch) (wptr :: Natural)
       (l :: Ctx CrucibleType) (a :: CrucibleType) rtp.
(IsSymInterface sym, HasLLVMAnn sym, HasPtrWidth wptr) =>
String
-> (forall (w :: Natural).
    (1 <= w) =>
    NatRepr w -> SomeLLVMOverride p sym)
-> OverrideTemplate p sym arch rtp l a
polymorphic1_llvm_override String
"llvm.abs"
      (\NatRepr w
w -> LLVMOverride
  p sym ((EmptyCtx ::> BVType w) ::> BVType 1) (BVType w)
-> SomeLLVMOverride p sym
forall p sym (args :: Ctx CrucibleType) (ret :: CrucibleType).
LLVMOverride p sym args ret -> SomeLLVMOverride p sym
SomeLLVMOverride (NatRepr w
-> LLVMOverride
     p sym ((EmptyCtx ::> BVType w) ::> BVType 1) (BVType w)
forall (w :: Natural) sym p.
(1 <= w, IsSymInterface sym, HasLLVMAnn sym) =>
NatRepr w
-> LLVMOverride
     p sym ((EmptyCtx ::> BVType w) ::> BVType 1) (BVType w)
LLVM.llvmAbsOverride NatRepr w
w))

  , LLVMOverride p sym (EmptyCtx ::> BVType 16) (BVType 16)
-> OverrideTemplate p sym arch rtp l a
forall p (args :: Ctx CrucibleType) (ret :: CrucibleType) sym
       (arch :: LLVMArch) (wptr :: Natural) (l :: Ctx CrucibleType)
       (a :: CrucibleType) rtp.
(IsSymInterface sym, HasLLVMAnn sym, HasPtrWidth wptr) =>
LLVMOverride p sym args ret -> OverrideTemplate p sym arch rtp l a
basic_llvm_override (NatRepr 2
-> LLVMOverride
     p sym (EmptyCtx ::> BVType (2 * 8)) (BVType (2 * 8))
forall (width :: Natural) sym p.
(1 <= width, IsSymInterface sym) =>
NatRepr width
-> LLVMOverride
     p sym (EmptyCtx ::> BVType (width * 8)) (BVType (width * 8))
LLVM.llvmBSwapOverride (forall (n :: Natural). KnownNat n => NatRepr n
knownNat @2))  -- 16 = 2 * 8
  , LLVMOverride p sym (EmptyCtx ::> BVType 32) (BVType 32)
-> OverrideTemplate p sym arch rtp l a
forall p (args :: Ctx CrucibleType) (ret :: CrucibleType) sym
       (arch :: LLVMArch) (wptr :: Natural) (l :: Ctx CrucibleType)
       (a :: CrucibleType) rtp.
(IsSymInterface sym, HasLLVMAnn sym, HasPtrWidth wptr) =>
LLVMOverride p sym args ret -> OverrideTemplate p sym arch rtp l a
basic_llvm_override (NatRepr 4
-> LLVMOverride
     p sym (EmptyCtx ::> BVType (4 * 8)) (BVType (4 * 8))
forall (width :: Natural) sym p.
(1 <= width, IsSymInterface sym) =>
NatRepr width
-> LLVMOverride
     p sym (EmptyCtx ::> BVType (width * 8)) (BVType (width * 8))
LLVM.llvmBSwapOverride (forall (n :: Natural). KnownNat n => NatRepr n
knownNat @4))  -- 32 = 4 * 8
  , LLVMOverride p sym (EmptyCtx ::> BVType 48) (BVType 48)
-> OverrideTemplate p sym arch rtp l a
forall p (args :: Ctx CrucibleType) (ret :: CrucibleType) sym
       (arch :: LLVMArch) (wptr :: Natural) (l :: Ctx CrucibleType)
       (a :: CrucibleType) rtp.
(IsSymInterface sym, HasLLVMAnn sym, HasPtrWidth wptr) =>
LLVMOverride p sym args ret -> OverrideTemplate p sym arch rtp l a
basic_llvm_override (NatRepr 6
-> LLVMOverride
     p sym (EmptyCtx ::> BVType (6 * 8)) (BVType (6 * 8))
forall (width :: Natural) sym p.
(1 <= width, IsSymInterface sym) =>
NatRepr width
-> LLVMOverride
     p sym (EmptyCtx ::> BVType (width * 8)) (BVType (width * 8))
LLVM.llvmBSwapOverride (forall (n :: Natural). KnownNat n => NatRepr n
knownNat @6))  -- 48 = 6 * 8
  , LLVMOverride p sym (EmptyCtx ::> BVType 64) (BVType 64)
-> OverrideTemplate p sym arch rtp l a
forall p (args :: Ctx CrucibleType) (ret :: CrucibleType) sym
       (arch :: LLVMArch) (wptr :: Natural) (l :: Ctx CrucibleType)
       (a :: CrucibleType) rtp.
(IsSymInterface sym, HasLLVMAnn sym, HasPtrWidth wptr) =>
LLVMOverride p sym args ret -> OverrideTemplate p sym arch rtp l a
basic_llvm_override (NatRepr 8
-> LLVMOverride
     p sym (EmptyCtx ::> BVType (8 * 8)) (BVType (8 * 8))
forall (width :: Natural) sym p.
(1 <= width, IsSymInterface sym) =>
NatRepr width
-> LLVMOverride
     p sym (EmptyCtx ::> BVType (width * 8)) (BVType (width * 8))
LLVM.llvmBSwapOverride (forall (n :: Natural). KnownNat n => NatRepr n
knownNat @8))  -- 64 = 8 * 8
  , LLVMOverride p sym (EmptyCtx ::> BVType 80) (BVType 80)
-> OverrideTemplate p sym arch rtp l a
forall p (args :: Ctx CrucibleType) (ret :: CrucibleType) sym
       (arch :: LLVMArch) (wptr :: Natural) (l :: Ctx CrucibleType)
       (a :: CrucibleType) rtp.
(IsSymInterface sym, HasLLVMAnn sym, HasPtrWidth wptr) =>
LLVMOverride p sym args ret -> OverrideTemplate p sym arch rtp l a
basic_llvm_override (NatRepr 10
-> LLVMOverride
     p sym (EmptyCtx ::> BVType (10 * 8)) (BVType (10 * 8))
forall (width :: Natural) sym p.
(1 <= width, IsSymInterface sym) =>
NatRepr width
-> LLVMOverride
     p sym (EmptyCtx ::> BVType (width * 8)) (BVType (width * 8))
LLVM.llvmBSwapOverride (forall (n :: Natural). KnownNat n => NatRepr n
knownNat @10)) -- 80 = 10 * 8
  , LLVMOverride p sym (EmptyCtx ::> BVType 96) (BVType 96)
-> OverrideTemplate p sym arch rtp l a
forall p (args :: Ctx CrucibleType) (ret :: CrucibleType) sym
       (arch :: LLVMArch) (wptr :: Natural) (l :: Ctx CrucibleType)
       (a :: CrucibleType) rtp.
(IsSymInterface sym, HasLLVMAnn sym, HasPtrWidth wptr) =>
LLVMOverride p sym args ret -> OverrideTemplate p sym arch rtp l a
basic_llvm_override (NatRepr 12
-> LLVMOverride
     p sym (EmptyCtx ::> BVType (12 * 8)) (BVType (12 * 8))
forall (width :: Natural) sym p.
(1 <= width, IsSymInterface sym) =>
NatRepr width
-> LLVMOverride
     p sym (EmptyCtx ::> BVType (width * 8)) (BVType (width * 8))
LLVM.llvmBSwapOverride (forall (n :: Natural). KnownNat n => NatRepr n
knownNat @12)) -- 96 = 12 * 8
  , LLVMOverride p sym (EmptyCtx ::> BVType 112) (BVType 112)
-> OverrideTemplate p sym arch rtp l a
forall p (args :: Ctx CrucibleType) (ret :: CrucibleType) sym
       (arch :: LLVMArch) (wptr :: Natural) (l :: Ctx CrucibleType)
       (a :: CrucibleType) rtp.
(IsSymInterface sym, HasLLVMAnn sym, HasPtrWidth wptr) =>
LLVMOverride p sym args ret -> OverrideTemplate p sym arch rtp l a
basic_llvm_override (NatRepr 14
-> LLVMOverride
     p sym (EmptyCtx ::> BVType (14 * 8)) (BVType (14 * 8))
forall (width :: Natural) sym p.
(1 <= width, IsSymInterface sym) =>
NatRepr width
-> LLVMOverride
     p sym (EmptyCtx ::> BVType (width * 8)) (BVType (width * 8))
LLVM.llvmBSwapOverride (forall (n :: Natural). KnownNat n => NatRepr n
knownNat @14)) -- 112 = 14 * 8
  , LLVMOverride p sym (EmptyCtx ::> BVType 128) (BVType 128)
-> OverrideTemplate p sym arch rtp l a
forall p (args :: Ctx CrucibleType) (ret :: CrucibleType) sym
       (arch :: LLVMArch) (wptr :: Natural) (l :: Ctx CrucibleType)
       (a :: CrucibleType) rtp.
(IsSymInterface sym, HasLLVMAnn sym, HasPtrWidth wptr) =>
LLVMOverride p sym args ret -> OverrideTemplate p sym arch rtp l a
basic_llvm_override (NatRepr 16
-> LLVMOverride
     p sym (EmptyCtx ::> BVType (16 * 8)) (BVType (16 * 8))
forall (width :: Natural) sym p.
(1 <= width, IsSymInterface sym) =>
NatRepr width
-> LLVMOverride
     p sym (EmptyCtx ::> BVType (width * 8)) (BVType (width * 8))
LLVM.llvmBSwapOverride (forall (n :: Natural). KnownNat n => NatRepr n
knownNat @16)) -- 128 = 16 * 8

  , String
-> (forall (w :: Natural).
    (1 <= w) =>
    NatRepr w -> SomeLLVMOverride p sym)
-> OverrideTemplate p sym arch rtp l a
forall p sym (arch :: LLVMArch) (wptr :: Natural)
       (l :: Ctx CrucibleType) (a :: CrucibleType) rtp.
(IsSymInterface sym, HasLLVMAnn sym, HasPtrWidth wptr) =>
String
-> (forall (w :: Natural).
    (1 <= w) =>
    NatRepr w -> SomeLLVMOverride p sym)
-> OverrideTemplate p sym arch rtp l a
polymorphic1_llvm_override String
"llvm.fshl"
      (\NatRepr w
w -> LLVMOverride
  p
  sym
  (((EmptyCtx ::> BVType w) ::> BVType w) ::> BVType w)
  (BVType w)
-> SomeLLVMOverride p sym
forall p sym (args :: Ctx CrucibleType) (ret :: CrucibleType).
LLVMOverride p sym args ret -> SomeLLVMOverride p sym
SomeLLVMOverride (NatRepr w
-> LLVMOverride
     p
     sym
     (((EmptyCtx ::> BVType w) ::> BVType w) ::> BVType w)
     (BVType w)
forall (w :: Natural) sym p.
(1 <= w, IsSymInterface sym) =>
NatRepr w
-> LLVMOverride
     p
     sym
     (((EmptyCtx ::> BVType w) ::> BVType w) ::> BVType w)
     (BVType w)
LLVM.llvmFshl NatRepr w
w))
  , String
-> (forall (w :: Natural).
    (1 <= w) =>
    NatRepr w -> SomeLLVMOverride p sym)
-> OverrideTemplate p sym arch rtp l a
forall p sym (arch :: LLVMArch) (wptr :: Natural)
       (l :: Ctx CrucibleType) (a :: CrucibleType) rtp.
(IsSymInterface sym, HasLLVMAnn sym, HasPtrWidth wptr) =>
String
-> (forall (w :: Natural).
    (1 <= w) =>
    NatRepr w -> SomeLLVMOverride p sym)
-> OverrideTemplate p sym arch rtp l a
polymorphic1_llvm_override String
"llvm.fshr"
      (\NatRepr w
w -> LLVMOverride
  p
  sym
  (((EmptyCtx ::> BVType w) ::> BVType w) ::> BVType w)
  (BVType w)
-> SomeLLVMOverride p sym
forall p sym (args :: Ctx CrucibleType) (ret :: CrucibleType).
LLVMOverride p sym args ret -> SomeLLVMOverride p sym
SomeLLVMOverride (NatRepr w
-> LLVMOverride
     p
     sym
     (((EmptyCtx ::> BVType w) ::> BVType w) ::> BVType w)
     (BVType w)
forall (w :: Natural) sym p.
(1 <= w, IsSymInterface sym) =>
NatRepr w
-> LLVMOverride
     p
     sym
     (((EmptyCtx ::> BVType w) ::> BVType w) ::> BVType w)
     (BVType w)
LLVM.llvmFshr NatRepr w
w))

  , String
-> (forall (w :: Natural).
    (1 <= w) =>
    NatRepr w -> SomeLLVMOverride p sym)
-> OverrideTemplate p sym arch rtp l a
forall p sym (arch :: LLVMArch) (wptr :: Natural)
       (l :: Ctx CrucibleType) (a :: CrucibleType) rtp.
(IsSymInterface sym, HasLLVMAnn sym, HasPtrWidth wptr) =>
String
-> (forall (w :: Natural).
    (1 <= w) =>
    NatRepr w -> SomeLLVMOverride p sym)
-> OverrideTemplate p sym arch rtp l a
polymorphic1_llvm_override String
"llvm.expect"
      (\NatRepr w
w -> LLVMOverride
  p sym ((EmptyCtx ::> BVType w) ::> BVType w) (BVType w)
-> SomeLLVMOverride p sym
forall p sym (args :: Ctx CrucibleType) (ret :: CrucibleType).
LLVMOverride p sym args ret -> SomeLLVMOverride p sym
SomeLLVMOverride (NatRepr w
-> LLVMOverride
     p sym ((EmptyCtx ::> BVType w) ::> BVType w) (BVType w)
forall sym (width :: Natural) p.
(IsSymInterface sym, 1 <= width) =>
NatRepr width
-> LLVMOverride
     p sym ((EmptyCtx ::> BVType width) ::> BVType width) (BVType width)
LLVM.llvmExpectOverride NatRepr w
w))
  , String
-> (forall (w :: Natural).
    (1 <= w) =>
    NatRepr w -> SomeLLVMOverride p sym)
-> OverrideTemplate p sym arch rtp l a
forall p sym (arch :: LLVMArch) (wptr :: Natural)
       (l :: Ctx CrucibleType) (a :: CrucibleType) rtp.
(IsSymInterface sym, HasLLVMAnn sym, HasPtrWidth wptr) =>
String
-> (forall (w :: Natural).
    (1 <= w) =>
    NatRepr w -> SomeLLVMOverride p sym)
-> OverrideTemplate p sym arch rtp l a
polymorphic1_llvm_override String
"llvm.sadd.with.overflow"
      (\NatRepr w
w -> LLVMOverride
  p
  sym
  ((EmptyCtx ::> BVType w) ::> BVType w)
  (StructType ((EmptyCtx ::> BVType w) ::> BVType 1))
-> SomeLLVMOverride p sym
forall p sym (args :: Ctx CrucibleType) (ret :: CrucibleType).
LLVMOverride p sym args ret -> SomeLLVMOverride p sym
SomeLLVMOverride (NatRepr w
-> LLVMOverride
     p
     sym
     ((EmptyCtx ::> BVType w) ::> BVType w)
     (StructType ((EmptyCtx ::> BVType w) ::> BVType 1))
forall (w :: Natural) sym p.
(1 <= w, IsSymInterface sym) =>
NatRepr w
-> LLVMOverride
     p
     sym
     ((EmptyCtx ::> BVType w) ::> BVType w)
     (StructType ((EmptyCtx ::> BVType w) ::> BVType 1))
LLVM.llvmSaddWithOverflow NatRepr w
w))
  , String
-> (forall (w :: Natural).
    (1 <= w) =>
    NatRepr w -> SomeLLVMOverride p sym)
-> OverrideTemplate p sym arch rtp l a
forall p sym (arch :: LLVMArch) (wptr :: Natural)
       (l :: Ctx CrucibleType) (a :: CrucibleType) rtp.
(IsSymInterface sym, HasLLVMAnn sym, HasPtrWidth wptr) =>
String
-> (forall (w :: Natural).
    (1 <= w) =>
    NatRepr w -> SomeLLVMOverride p sym)
-> OverrideTemplate p sym arch rtp l a
polymorphic1_llvm_override String
"llvm.uadd.with.overflow"
      (\NatRepr w
w -> LLVMOverride
  p
  sym
  ((EmptyCtx ::> BVType w) ::> BVType w)
  (StructType ((EmptyCtx ::> BVType w) ::> BVType 1))
-> SomeLLVMOverride p sym
forall p sym (args :: Ctx CrucibleType) (ret :: CrucibleType).
LLVMOverride p sym args ret -> SomeLLVMOverride p sym
SomeLLVMOverride (NatRepr w
-> LLVMOverride
     p
     sym
     ((EmptyCtx ::> BVType w) ::> BVType w)
     (StructType ((EmptyCtx ::> BVType w) ::> BVType 1))
forall (w :: Natural) sym p.
(1 <= w, IsSymInterface sym) =>
NatRepr w
-> LLVMOverride
     p
     sym
     ((EmptyCtx ::> BVType w) ::> BVType w)
     (StructType ((EmptyCtx ::> BVType w) ::> BVType 1))
LLVM.llvmUaddWithOverflow NatRepr w
w))
  , String
-> (forall (w :: Natural).
    (1 <= w) =>
    NatRepr w -> SomeLLVMOverride p sym)
-> OverrideTemplate p sym arch rtp l a
forall p sym (arch :: LLVMArch) (wptr :: Natural)
       (l :: Ctx CrucibleType) (a :: CrucibleType) rtp.
(IsSymInterface sym, HasLLVMAnn sym, HasPtrWidth wptr) =>
String
-> (forall (w :: Natural).
    (1 <= w) =>
    NatRepr w -> SomeLLVMOverride p sym)
-> OverrideTemplate p sym arch rtp l a
polymorphic1_llvm_override String
"llvm.ssub.with.overflow"
      (\NatRepr w
w -> LLVMOverride
  p
  sym
  ((EmptyCtx ::> BVType w) ::> BVType w)
  (StructType ((EmptyCtx ::> BVType w) ::> BVType 1))
-> SomeLLVMOverride p sym
forall p sym (args :: Ctx CrucibleType) (ret :: CrucibleType).
LLVMOverride p sym args ret -> SomeLLVMOverride p sym
SomeLLVMOverride (NatRepr w
-> LLVMOverride
     p
     sym
     ((EmptyCtx ::> BVType w) ::> BVType w)
     (StructType ((EmptyCtx ::> BVType w) ::> BVType 1))
forall (w :: Natural) sym p.
(1 <= w, IsSymInterface sym) =>
NatRepr w
-> LLVMOverride
     p
     sym
     ((EmptyCtx ::> BVType w) ::> BVType w)
     (StructType ((EmptyCtx ::> BVType w) ::> BVType 1))
LLVM.llvmSsubWithOverflow NatRepr w
w))
  , String
-> (forall (w :: Natural).
    (1 <= w) =>
    NatRepr w -> SomeLLVMOverride p sym)
-> OverrideTemplate p sym arch rtp l a
forall p sym (arch :: LLVMArch) (wptr :: Natural)
       (l :: Ctx CrucibleType) (a :: CrucibleType) rtp.
(IsSymInterface sym, HasLLVMAnn sym, HasPtrWidth wptr) =>
String
-> (forall (w :: Natural).
    (1 <= w) =>
    NatRepr w -> SomeLLVMOverride p sym)
-> OverrideTemplate p sym arch rtp l a
polymorphic1_llvm_override String
"llvm.usub.with.overflow"
      (\NatRepr w
w -> LLVMOverride
  p
  sym
  ((EmptyCtx ::> BVType w) ::> BVType w)
  (StructType ((EmptyCtx ::> BVType w) ::> BVType 1))
-> SomeLLVMOverride p sym
forall p sym (args :: Ctx CrucibleType) (ret :: CrucibleType).
LLVMOverride p sym args ret -> SomeLLVMOverride p sym
SomeLLVMOverride (NatRepr w
-> LLVMOverride
     p
     sym
     ((EmptyCtx ::> BVType w) ::> BVType w)
     (StructType ((EmptyCtx ::> BVType w) ::> BVType 1))
forall (w :: Natural) sym p.
(1 <= w, IsSymInterface sym) =>
NatRepr w
-> LLVMOverride
     p
     sym
     ((EmptyCtx ::> BVType w) ::> BVType w)
     (StructType ((EmptyCtx ::> BVType w) ::> BVType 1))
LLVM.llvmUsubWithOverflow NatRepr w
w))
  , String
-> (forall (w :: Natural).
    (1 <= w) =>
    NatRepr w -> SomeLLVMOverride p sym)
-> OverrideTemplate p sym arch rtp l a
forall p sym (arch :: LLVMArch) (wptr :: Natural)
       (l :: Ctx CrucibleType) (a :: CrucibleType) rtp.
(IsSymInterface sym, HasLLVMAnn sym, HasPtrWidth wptr) =>
String
-> (forall (w :: Natural).
    (1 <= w) =>
    NatRepr w -> SomeLLVMOverride p sym)
-> OverrideTemplate p sym arch rtp l a
polymorphic1_llvm_override String
"llvm.smul.with.overflow"
      (\NatRepr w
w -> LLVMOverride
  p
  sym
  ((EmptyCtx ::> BVType w) ::> BVType w)
  (StructType ((EmptyCtx ::> BVType w) ::> BVType 1))
-> SomeLLVMOverride p sym
forall p sym (args :: Ctx CrucibleType) (ret :: CrucibleType).
LLVMOverride p sym args ret -> SomeLLVMOverride p sym
SomeLLVMOverride (NatRepr w
-> LLVMOverride
     p
     sym
     ((EmptyCtx ::> BVType w) ::> BVType w)
     (StructType ((EmptyCtx ::> BVType w) ::> BVType 1))
forall (w :: Natural) sym p.
(1 <= w, IsSymInterface sym) =>
NatRepr w
-> LLVMOverride
     p
     sym
     ((EmptyCtx ::> BVType w) ::> BVType w)
     (StructType ((EmptyCtx ::> BVType w) ::> BVType 1))
LLVM.llvmSmulWithOverflow NatRepr w
w))
  , String
-> (forall (w :: Natural).
    (1 <= w) =>
    NatRepr w -> SomeLLVMOverride p sym)
-> OverrideTemplate p sym arch rtp l a
forall p sym (arch :: LLVMArch) (wptr :: Natural)
       (l :: Ctx CrucibleType) (a :: CrucibleType) rtp.
(IsSymInterface sym, HasLLVMAnn sym, HasPtrWidth wptr) =>
String
-> (forall (w :: Natural).
    (1 <= w) =>
    NatRepr w -> SomeLLVMOverride p sym)
-> OverrideTemplate p sym arch rtp l a
polymorphic1_llvm_override String
"llvm.umul.with.overflow"
      (\NatRepr w
w -> LLVMOverride
  p
  sym
  ((EmptyCtx ::> BVType w) ::> BVType w)
  (StructType ((EmptyCtx ::> BVType w) ::> BVType 1))
-> SomeLLVMOverride p sym
forall p sym (args :: Ctx CrucibleType) (ret :: CrucibleType).
LLVMOverride p sym args ret -> SomeLLVMOverride p sym
SomeLLVMOverride (NatRepr w
-> LLVMOverride
     p
     sym
     ((EmptyCtx ::> BVType w) ::> BVType w)
     (StructType ((EmptyCtx ::> BVType w) ::> BVType 1))
forall (w :: Natural) sym p.
(1 <= w, IsSymInterface sym) =>
NatRepr w
-> LLVMOverride
     p
     sym
     ((EmptyCtx ::> BVType w) ::> BVType w)
     (StructType ((EmptyCtx ::> BVType w) ::> BVType 1))
LLVM.llvmUmulWithOverflow NatRepr w
w))

  , String
-> (forall (w :: Natural).
    (1 <= w) =>
    NatRepr w -> SomeLLVMOverride p sym)
-> OverrideTemplate p sym arch rtp l a
forall p sym (arch :: LLVMArch) (wptr :: Natural)
       (l :: Ctx CrucibleType) (a :: CrucibleType) rtp.
(IsSymInterface sym, HasLLVMAnn sym, HasPtrWidth wptr) =>
String
-> (forall (w :: Natural).
    (1 <= w) =>
    NatRepr w -> SomeLLVMOverride p sym)
-> OverrideTemplate p sym arch rtp l a
polymorphic1_llvm_override String
"llvm.smax"
      (\NatRepr w
w -> LLVMOverride
  p sym ((EmptyCtx ::> BVType w) ::> BVType w) (BVType w)
-> SomeLLVMOverride p sym
forall p sym (args :: Ctx CrucibleType) (ret :: CrucibleType).
LLVMOverride p sym args ret -> SomeLLVMOverride p sym
SomeLLVMOverride (NatRepr w
-> LLVMOverride
     p sym ((EmptyCtx ::> BVType w) ::> BVType w) (BVType w)
forall (w :: Natural) sym p.
(1 <= w, IsSymInterface sym) =>
NatRepr w
-> LLVMOverride
     p sym ((EmptyCtx ::> BVType w) ::> BVType w) (BVType w)
LLVM.llvmSmax NatRepr w
w))
  , String
-> (forall (w :: Natural).
    (1 <= w) =>
    NatRepr w -> SomeLLVMOverride p sym)
-> OverrideTemplate p sym arch rtp l a
forall p sym (arch :: LLVMArch) (wptr :: Natural)
       (l :: Ctx CrucibleType) (a :: CrucibleType) rtp.
(IsSymInterface sym, HasLLVMAnn sym, HasPtrWidth wptr) =>
String
-> (forall (w :: Natural).
    (1 <= w) =>
    NatRepr w -> SomeLLVMOverride p sym)
-> OverrideTemplate p sym arch rtp l a
polymorphic1_llvm_override String
"llvm.smin"
      (\NatRepr w
w -> LLVMOverride
  p sym ((EmptyCtx ::> BVType w) ::> BVType w) (BVType w)
-> SomeLLVMOverride p sym
forall p sym (args :: Ctx CrucibleType) (ret :: CrucibleType).
LLVMOverride p sym args ret -> SomeLLVMOverride p sym
SomeLLVMOverride (NatRepr w
-> LLVMOverride
     p sym ((EmptyCtx ::> BVType w) ::> BVType w) (BVType w)
forall (w :: Natural) sym p.
(1 <= w, IsSymInterface sym) =>
NatRepr w
-> LLVMOverride
     p sym ((EmptyCtx ::> BVType w) ::> BVType w) (BVType w)
LLVM.llvmSmin NatRepr w
w))
  , String
-> (forall (w :: Natural).
    (1 <= w) =>
    NatRepr w -> SomeLLVMOverride p sym)
-> OverrideTemplate p sym arch rtp l a
forall p sym (arch :: LLVMArch) (wptr :: Natural)
       (l :: Ctx CrucibleType) (a :: CrucibleType) rtp.
(IsSymInterface sym, HasLLVMAnn sym, HasPtrWidth wptr) =>
String
-> (forall (w :: Natural).
    (1 <= w) =>
    NatRepr w -> SomeLLVMOverride p sym)
-> OverrideTemplate p sym arch rtp l a
polymorphic1_llvm_override String
"llvm.umax"
      (\NatRepr w
w -> LLVMOverride
  p sym ((EmptyCtx ::> BVType w) ::> BVType w) (BVType w)
-> SomeLLVMOverride p sym
forall p sym (args :: Ctx CrucibleType) (ret :: CrucibleType).
LLVMOverride p sym args ret -> SomeLLVMOverride p sym
SomeLLVMOverride (NatRepr w
-> LLVMOverride
     p sym ((EmptyCtx ::> BVType w) ::> BVType w) (BVType w)
forall (w :: Natural) sym p.
(1 <= w, IsSymInterface sym) =>
NatRepr w
-> LLVMOverride
     p sym ((EmptyCtx ::> BVType w) ::> BVType w) (BVType w)
LLVM.llvmUmax NatRepr w
w))
  , String
-> (forall (w :: Natural).
    (1 <= w) =>
    NatRepr w -> SomeLLVMOverride p sym)
-> OverrideTemplate p sym arch rtp l a
forall p sym (arch :: LLVMArch) (wptr :: Natural)
       (l :: Ctx CrucibleType) (a :: CrucibleType) rtp.
(IsSymInterface sym, HasLLVMAnn sym, HasPtrWidth wptr) =>
String
-> (forall (w :: Natural).
    (1 <= w) =>
    NatRepr w -> SomeLLVMOverride p sym)
-> OverrideTemplate p sym arch rtp l a
polymorphic1_llvm_override String
"llvm.umin"
      (\NatRepr w
w -> LLVMOverride
  p sym ((EmptyCtx ::> BVType w) ::> BVType w) (BVType w)
-> SomeLLVMOverride p sym
forall p sym (args :: Ctx CrucibleType) (ret :: CrucibleType).
LLVMOverride p sym args ret -> SomeLLVMOverride p sym
SomeLLVMOverride (NatRepr w
-> LLVMOverride
     p sym ((EmptyCtx ::> BVType w) ::> BVType w) (BVType w)
forall (w :: Natural) sym p.
(1 <= w, IsSymInterface sym) =>
NatRepr w
-> LLVMOverride
     p sym ((EmptyCtx ::> BVType w) ::> BVType w) (BVType w)
LLVM.llvmUmin NatRepr w
w))

  , LLVMOverride
  p
  sym
  ((EmptyCtx ::> FloatType SingleFloat) ::> FloatType SingleFloat)
  (FloatType SingleFloat)
-> OverrideTemplate p sym arch rtp l a
forall p (args :: Ctx CrucibleType) (ret :: CrucibleType) sym
       (arch :: LLVMArch) (wptr :: Natural) (l :: Ctx CrucibleType)
       (a :: CrucibleType) rtp.
(IsSymInterface sym, HasLLVMAnn sym, HasPtrWidth wptr) =>
LLVMOverride p sym args ret -> OverrideTemplate p sym arch rtp l a
basic_llvm_override LLVMOverride
  p
  sym
  ((EmptyCtx ::> FloatType SingleFloat) ::> FloatType SingleFloat)
  (FloatType SingleFloat)
forall sym p.
IsSymInterface sym =>
LLVMOverride
  p
  sym
  ((EmptyCtx ::> FloatType SingleFloat) ::> FloatType SingleFloat)
  (FloatType SingleFloat)
LLVM.llvmCopysignOverride_F32
  , LLVMOverride
  p
  sym
  ((EmptyCtx ::> FloatType DoubleFloat) ::> FloatType DoubleFloat)
  (FloatType DoubleFloat)
-> OverrideTemplate p sym arch rtp l a
forall p (args :: Ctx CrucibleType) (ret :: CrucibleType) sym
       (arch :: LLVMArch) (wptr :: Natural) (l :: Ctx CrucibleType)
       (a :: CrucibleType) rtp.
(IsSymInterface sym, HasLLVMAnn sym, HasPtrWidth wptr) =>
LLVMOverride p sym args ret -> OverrideTemplate p sym arch rtp l a
basic_llvm_override LLVMOverride
  p
  sym
  ((EmptyCtx ::> FloatType DoubleFloat) ::> FloatType DoubleFloat)
  (FloatType DoubleFloat)
forall sym p.
IsSymInterface sym =>
LLVMOverride
  p
  sym
  ((EmptyCtx ::> FloatType DoubleFloat) ::> FloatType DoubleFloat)
  (FloatType DoubleFloat)
LLVM.llvmCopysignOverride_F64
  , LLVMOverride
  p sym (EmptyCtx ::> FloatType SingleFloat) (FloatType SingleFloat)
-> OverrideTemplate p sym arch rtp l a
forall p (args :: Ctx CrucibleType) (ret :: CrucibleType) sym
       (arch :: LLVMArch) (wptr :: Natural) (l :: Ctx CrucibleType)
       (a :: CrucibleType) rtp.
(IsSymInterface sym, HasLLVMAnn sym, HasPtrWidth wptr) =>
LLVMOverride p sym args ret -> OverrideTemplate p sym arch rtp l a
basic_llvm_override LLVMOverride
  p sym (EmptyCtx ::> FloatType SingleFloat) (FloatType SingleFloat)
forall sym p.
IsSymInterface sym =>
LLVMOverride
  p sym (EmptyCtx ::> FloatType SingleFloat) (FloatType SingleFloat)
LLVM.llvmFabsF32
  , LLVMOverride
  p sym (EmptyCtx ::> FloatType DoubleFloat) (FloatType DoubleFloat)
-> OverrideTemplate p sym arch rtp l a
forall p (args :: Ctx CrucibleType) (ret :: CrucibleType) sym
       (arch :: LLVMArch) (wptr :: Natural) (l :: Ctx CrucibleType)
       (a :: CrucibleType) rtp.
(IsSymInterface sym, HasLLVMAnn sym, HasPtrWidth wptr) =>
LLVMOverride p sym args ret -> OverrideTemplate p sym arch rtp l a
basic_llvm_override LLVMOverride
  p sym (EmptyCtx ::> FloatType DoubleFloat) (FloatType DoubleFloat)
forall sym p.
IsSymInterface sym =>
LLVMOverride
  p sym (EmptyCtx ::> FloatType DoubleFloat) (FloatType DoubleFloat)
LLVM.llvmFabsF64

  , LLVMOverride
  p sym (EmptyCtx ::> FloatType SingleFloat) (FloatType SingleFloat)
-> OverrideTemplate p sym arch rtp l a
forall p (args :: Ctx CrucibleType) (ret :: CrucibleType) sym
       (arch :: LLVMArch) (wptr :: Natural) (l :: Ctx CrucibleType)
       (a :: CrucibleType) rtp.
(IsSymInterface sym, HasLLVMAnn sym, HasPtrWidth wptr) =>
LLVMOverride p sym args ret -> OverrideTemplate p sym arch rtp l a
basic_llvm_override LLVMOverride
  p sym (EmptyCtx ::> FloatType SingleFloat) (FloatType SingleFloat)
forall sym p.
IsSymInterface sym =>
LLVMOverride
  p sym (EmptyCtx ::> FloatType SingleFloat) (FloatType SingleFloat)
LLVM.llvmCeilOverride_F32
  , LLVMOverride
  p sym (EmptyCtx ::> FloatType DoubleFloat) (FloatType DoubleFloat)
-> OverrideTemplate p sym arch rtp l a
forall p (args :: Ctx CrucibleType) (ret :: CrucibleType) sym
       (arch :: LLVMArch) (wptr :: Natural) (l :: Ctx CrucibleType)
       (a :: CrucibleType) rtp.
(IsSymInterface sym, HasLLVMAnn sym, HasPtrWidth wptr) =>
LLVMOverride p sym args ret -> OverrideTemplate p sym arch rtp l a
basic_llvm_override LLVMOverride
  p sym (EmptyCtx ::> FloatType DoubleFloat) (FloatType DoubleFloat)
forall sym p.
IsSymInterface sym =>
LLVMOverride
  p sym (EmptyCtx ::> FloatType DoubleFloat) (FloatType DoubleFloat)
LLVM.llvmCeilOverride_F64
  , LLVMOverride
  p sym (EmptyCtx ::> FloatType SingleFloat) (FloatType SingleFloat)
-> OverrideTemplate p sym arch rtp l a
forall p (args :: Ctx CrucibleType) (ret :: CrucibleType) sym
       (arch :: LLVMArch) (wptr :: Natural) (l :: Ctx CrucibleType)
       (a :: CrucibleType) rtp.
(IsSymInterface sym, HasLLVMAnn sym, HasPtrWidth wptr) =>
LLVMOverride p sym args ret -> OverrideTemplate p sym arch rtp l a
basic_llvm_override LLVMOverride
  p sym (EmptyCtx ::> FloatType SingleFloat) (FloatType SingleFloat)
forall sym p.
IsSymInterface sym =>
LLVMOverride
  p sym (EmptyCtx ::> FloatType SingleFloat) (FloatType SingleFloat)
LLVM.llvmFloorOverride_F32
  , LLVMOverride
  p sym (EmptyCtx ::> FloatType DoubleFloat) (FloatType DoubleFloat)
-> OverrideTemplate p sym arch rtp l a
forall p (args :: Ctx CrucibleType) (ret :: CrucibleType) sym
       (arch :: LLVMArch) (wptr :: Natural) (l :: Ctx CrucibleType)
       (a :: CrucibleType) rtp.
(IsSymInterface sym, HasLLVMAnn sym, HasPtrWidth wptr) =>
LLVMOverride p sym args ret -> OverrideTemplate p sym arch rtp l a
basic_llvm_override LLVMOverride
  p sym (EmptyCtx ::> FloatType DoubleFloat) (FloatType DoubleFloat)
forall sym p.
IsSymInterface sym =>
LLVMOverride
  p sym (EmptyCtx ::> FloatType DoubleFloat) (FloatType DoubleFloat)
LLVM.llvmFloorOverride_F64
  , LLVMOverride
  p sym (EmptyCtx ::> FloatType SingleFloat) (FloatType SingleFloat)
-> OverrideTemplate p sym arch rtp l a
forall p (args :: Ctx CrucibleType) (ret :: CrucibleType) sym
       (arch :: LLVMArch) (wptr :: Natural) (l :: Ctx CrucibleType)
       (a :: CrucibleType) rtp.
(IsSymInterface sym, HasLLVMAnn sym, HasPtrWidth wptr) =>
LLVMOverride p sym args ret -> OverrideTemplate p sym arch rtp l a
basic_llvm_override LLVMOverride
  p sym (EmptyCtx ::> FloatType SingleFloat) (FloatType SingleFloat)
forall sym p.
IsSymInterface sym =>
LLVMOverride
  p sym (EmptyCtx ::> FloatType SingleFloat) (FloatType SingleFloat)
LLVM.llvmSqrtOverride_F32
  , LLVMOverride
  p sym (EmptyCtx ::> FloatType DoubleFloat) (FloatType DoubleFloat)
-> OverrideTemplate p sym arch rtp l a
forall p (args :: Ctx CrucibleType) (ret :: CrucibleType) sym
       (arch :: LLVMArch) (wptr :: Natural) (l :: Ctx CrucibleType)
       (a :: CrucibleType) rtp.
(IsSymInterface sym, HasLLVMAnn sym, HasPtrWidth wptr) =>
LLVMOverride p sym args ret -> OverrideTemplate p sym arch rtp l a
basic_llvm_override LLVMOverride
  p sym (EmptyCtx ::> FloatType DoubleFloat) (FloatType DoubleFloat)
forall sym p.
IsSymInterface sym =>
LLVMOverride
  p sym (EmptyCtx ::> FloatType DoubleFloat) (FloatType DoubleFloat)
LLVM.llvmSqrtOverride_F64
  , LLVMOverride
  p sym (EmptyCtx ::> FloatType SingleFloat) (FloatType SingleFloat)
-> OverrideTemplate p sym arch rtp l a
forall p (args :: Ctx CrucibleType) (ret :: CrucibleType) sym
       (arch :: LLVMArch) (wptr :: Natural) (l :: Ctx CrucibleType)
       (a :: CrucibleType) rtp.
(IsSymInterface sym, HasLLVMAnn sym, HasPtrWidth wptr) =>
LLVMOverride p sym args ret -> OverrideTemplate p sym arch rtp l a
basic_llvm_override LLVMOverride
  p sym (EmptyCtx ::> FloatType SingleFloat) (FloatType SingleFloat)
forall sym p.
IsSymInterface sym =>
LLVMOverride
  p sym (EmptyCtx ::> FloatType SingleFloat) (FloatType SingleFloat)
LLVM.llvmSinOverride_F32
  , LLVMOverride
  p sym (EmptyCtx ::> FloatType DoubleFloat) (FloatType DoubleFloat)
-> OverrideTemplate p sym arch rtp l a
forall p (args :: Ctx CrucibleType) (ret :: CrucibleType) sym
       (arch :: LLVMArch) (wptr :: Natural) (l :: Ctx CrucibleType)
       (a :: CrucibleType) rtp.
(IsSymInterface sym, HasLLVMAnn sym, HasPtrWidth wptr) =>
LLVMOverride p sym args ret -> OverrideTemplate p sym arch rtp l a
basic_llvm_override LLVMOverride
  p sym (EmptyCtx ::> FloatType DoubleFloat) (FloatType DoubleFloat)
forall sym p.
IsSymInterface sym =>
LLVMOverride
  p sym (EmptyCtx ::> FloatType DoubleFloat) (FloatType DoubleFloat)
LLVM.llvmSinOverride_F64
  , LLVMOverride
  p sym (EmptyCtx ::> FloatType SingleFloat) (FloatType SingleFloat)
-> OverrideTemplate p sym arch rtp l a
forall p (args :: Ctx CrucibleType) (ret :: CrucibleType) sym
       (arch :: LLVMArch) (wptr :: Natural) (l :: Ctx CrucibleType)
       (a :: CrucibleType) rtp.
(IsSymInterface sym, HasLLVMAnn sym, HasPtrWidth wptr) =>
LLVMOverride p sym args ret -> OverrideTemplate p sym arch rtp l a
basic_llvm_override LLVMOverride
  p sym (EmptyCtx ::> FloatType SingleFloat) (FloatType SingleFloat)
forall sym p.
IsSymInterface sym =>
LLVMOverride
  p sym (EmptyCtx ::> FloatType SingleFloat) (FloatType SingleFloat)
LLVM.llvmCosOverride_F32
  , LLVMOverride
  p sym (EmptyCtx ::> FloatType DoubleFloat) (FloatType DoubleFloat)
-> OverrideTemplate p sym arch rtp l a
forall p (args :: Ctx CrucibleType) (ret :: CrucibleType) sym
       (arch :: LLVMArch) (wptr :: Natural) (l :: Ctx CrucibleType)
       (a :: CrucibleType) rtp.
(IsSymInterface sym, HasLLVMAnn sym, HasPtrWidth wptr) =>
LLVMOverride p sym args ret -> OverrideTemplate p sym arch rtp l a
basic_llvm_override LLVMOverride
  p sym (EmptyCtx ::> FloatType DoubleFloat) (FloatType DoubleFloat)
forall sym p.
IsSymInterface sym =>
LLVMOverride
  p sym (EmptyCtx ::> FloatType DoubleFloat) (FloatType DoubleFloat)
LLVM.llvmCosOverride_F64
  , LLVMOverride
  p
  sym
  ((EmptyCtx ::> FloatType SingleFloat) ::> FloatType SingleFloat)
  (FloatType SingleFloat)
-> OverrideTemplate p sym arch rtp l a
forall p (args :: Ctx CrucibleType) (ret :: CrucibleType) sym
       (arch :: LLVMArch) (wptr :: Natural) (l :: Ctx CrucibleType)
       (a :: CrucibleType) rtp.
(IsSymInterface sym, HasLLVMAnn sym, HasPtrWidth wptr) =>
LLVMOverride p sym args ret -> OverrideTemplate p sym arch rtp l a
basic_llvm_override LLVMOverride
  p
  sym
  ((EmptyCtx ::> FloatType SingleFloat) ::> FloatType SingleFloat)
  (FloatType SingleFloat)
forall sym p.
IsSymInterface sym =>
LLVMOverride
  p
  sym
  ((EmptyCtx ::> FloatType SingleFloat) ::> FloatType SingleFloat)
  (FloatType SingleFloat)
LLVM.llvmPowOverride_F32
  , LLVMOverride
  p
  sym
  ((EmptyCtx ::> FloatType DoubleFloat) ::> FloatType DoubleFloat)
  (FloatType DoubleFloat)
-> OverrideTemplate p sym arch rtp l a
forall p (args :: Ctx CrucibleType) (ret :: CrucibleType) sym
       (arch :: LLVMArch) (wptr :: Natural) (l :: Ctx CrucibleType)
       (a :: CrucibleType) rtp.
(IsSymInterface sym, HasLLVMAnn sym, HasPtrWidth wptr) =>
LLVMOverride p sym args ret -> OverrideTemplate p sym arch rtp l a
basic_llvm_override LLVMOverride
  p
  sym
  ((EmptyCtx ::> FloatType DoubleFloat) ::> FloatType DoubleFloat)
  (FloatType DoubleFloat)
forall sym p.
IsSymInterface sym =>
LLVMOverride
  p
  sym
  ((EmptyCtx ::> FloatType DoubleFloat) ::> FloatType DoubleFloat)
  (FloatType DoubleFloat)
LLVM.llvmPowOverride_F64
  , LLVMOverride
  p sym (EmptyCtx ::> FloatType SingleFloat) (FloatType SingleFloat)
-> OverrideTemplate p sym arch rtp l a
forall p (args :: Ctx CrucibleType) (ret :: CrucibleType) sym
       (arch :: LLVMArch) (wptr :: Natural) (l :: Ctx CrucibleType)
       (a :: CrucibleType) rtp.
(IsSymInterface sym, HasLLVMAnn sym, HasPtrWidth wptr) =>
LLVMOverride p sym args ret -> OverrideTemplate p sym arch rtp l a
basic_llvm_override LLVMOverride
  p sym (EmptyCtx ::> FloatType SingleFloat) (FloatType SingleFloat)
forall sym p.
IsSymInterface sym =>
LLVMOverride
  p sym (EmptyCtx ::> FloatType SingleFloat) (FloatType SingleFloat)
LLVM.llvmExpOverride_F32
  , LLVMOverride
  p sym (EmptyCtx ::> FloatType DoubleFloat) (FloatType DoubleFloat)
-> OverrideTemplate p sym arch rtp l a
forall p (args :: Ctx CrucibleType) (ret :: CrucibleType) sym
       (arch :: LLVMArch) (wptr :: Natural) (l :: Ctx CrucibleType)
       (a :: CrucibleType) rtp.
(IsSymInterface sym, HasLLVMAnn sym, HasPtrWidth wptr) =>
LLVMOverride p sym args ret -> OverrideTemplate p sym arch rtp l a
basic_llvm_override LLVMOverride
  p sym (EmptyCtx ::> FloatType DoubleFloat) (FloatType DoubleFloat)
forall sym p.
IsSymInterface sym =>
LLVMOverride
  p sym (EmptyCtx ::> FloatType DoubleFloat) (FloatType DoubleFloat)
LLVM.llvmExpOverride_F64
  , LLVMOverride
  p sym (EmptyCtx ::> FloatType SingleFloat) (FloatType SingleFloat)
-> OverrideTemplate p sym arch rtp l a
forall p (args :: Ctx CrucibleType) (ret :: CrucibleType) sym
       (arch :: LLVMArch) (wptr :: Natural) (l :: Ctx CrucibleType)
       (a :: CrucibleType) rtp.
(IsSymInterface sym, HasLLVMAnn sym, HasPtrWidth wptr) =>
LLVMOverride p sym args ret -> OverrideTemplate p sym arch rtp l a
basic_llvm_override LLVMOverride
  p sym (EmptyCtx ::> FloatType SingleFloat) (FloatType SingleFloat)
forall sym p.
IsSymInterface sym =>
LLVMOverride
  p sym (EmptyCtx ::> FloatType SingleFloat) (FloatType SingleFloat)
LLVM.llvmLogOverride_F32
  , LLVMOverride
  p sym (EmptyCtx ::> FloatType DoubleFloat) (FloatType DoubleFloat)
-> OverrideTemplate p sym arch rtp l a
forall p (args :: Ctx CrucibleType) (ret :: CrucibleType) sym
       (arch :: LLVMArch) (wptr :: Natural) (l :: Ctx CrucibleType)
       (a :: CrucibleType) rtp.
(IsSymInterface sym, HasLLVMAnn sym, HasPtrWidth wptr) =>
LLVMOverride p sym args ret -> OverrideTemplate p sym arch rtp l a
basic_llvm_override LLVMOverride
  p sym (EmptyCtx ::> FloatType DoubleFloat) (FloatType DoubleFloat)
forall sym p.
IsSymInterface sym =>
LLVMOverride
  p sym (EmptyCtx ::> FloatType DoubleFloat) (FloatType DoubleFloat)
LLVM.llvmLogOverride_F64
  , LLVMOverride
  p sym (EmptyCtx ::> FloatType SingleFloat) (FloatType SingleFloat)
-> OverrideTemplate p sym arch rtp l a
forall p (args :: Ctx CrucibleType) (ret :: CrucibleType) sym
       (arch :: LLVMArch) (wptr :: Natural) (l :: Ctx CrucibleType)
       (a :: CrucibleType) rtp.
(IsSymInterface sym, HasLLVMAnn sym, HasPtrWidth wptr) =>
LLVMOverride p sym args ret -> OverrideTemplate p sym arch rtp l a
basic_llvm_override LLVMOverride
  p sym (EmptyCtx ::> FloatType SingleFloat) (FloatType SingleFloat)
forall sym p.
IsSymInterface sym =>
LLVMOverride
  p sym (EmptyCtx ::> FloatType SingleFloat) (FloatType SingleFloat)
LLVM.llvmExp2Override_F32
  , LLVMOverride
  p sym (EmptyCtx ::> FloatType DoubleFloat) (FloatType DoubleFloat)
-> OverrideTemplate p sym arch rtp l a
forall p (args :: Ctx CrucibleType) (ret :: CrucibleType) sym
       (arch :: LLVMArch) (wptr :: Natural) (l :: Ctx CrucibleType)
       (a :: CrucibleType) rtp.
(IsSymInterface sym, HasLLVMAnn sym, HasPtrWidth wptr) =>
LLVMOverride p sym args ret -> OverrideTemplate p sym arch rtp l a
basic_llvm_override LLVMOverride
  p sym (EmptyCtx ::> FloatType DoubleFloat) (FloatType DoubleFloat)
forall sym p.
IsSymInterface sym =>
LLVMOverride
  p sym (EmptyCtx ::> FloatType DoubleFloat) (FloatType DoubleFloat)
LLVM.llvmExp2Override_F64
  , LLVMOverride
  p sym (EmptyCtx ::> FloatType SingleFloat) (FloatType SingleFloat)
-> OverrideTemplate p sym arch rtp l a
forall p (args :: Ctx CrucibleType) (ret :: CrucibleType) sym
       (arch :: LLVMArch) (wptr :: Natural) (l :: Ctx CrucibleType)
       (a :: CrucibleType) rtp.
(IsSymInterface sym, HasLLVMAnn sym, HasPtrWidth wptr) =>
LLVMOverride p sym args ret -> OverrideTemplate p sym arch rtp l a
basic_llvm_override LLVMOverride
  p sym (EmptyCtx ::> FloatType SingleFloat) (FloatType SingleFloat)
forall sym p.
IsSymInterface sym =>
LLVMOverride
  p sym (EmptyCtx ::> FloatType SingleFloat) (FloatType SingleFloat)
LLVM.llvmLog2Override_F32
  , LLVMOverride
  p sym (EmptyCtx ::> FloatType DoubleFloat) (FloatType DoubleFloat)
-> OverrideTemplate p sym arch rtp l a
forall p (args :: Ctx CrucibleType) (ret :: CrucibleType) sym
       (arch :: LLVMArch) (wptr :: Natural) (l :: Ctx CrucibleType)
       (a :: CrucibleType) rtp.
(IsSymInterface sym, HasLLVMAnn sym, HasPtrWidth wptr) =>
LLVMOverride p sym args ret -> OverrideTemplate p sym arch rtp l a
basic_llvm_override LLVMOverride
  p sym (EmptyCtx ::> FloatType DoubleFloat) (FloatType DoubleFloat)
forall sym p.
IsSymInterface sym =>
LLVMOverride
  p sym (EmptyCtx ::> FloatType DoubleFloat) (FloatType DoubleFloat)
LLVM.llvmLog2Override_F64
  , LLVMOverride
  p sym (EmptyCtx ::> FloatType SingleFloat) (FloatType SingleFloat)
-> OverrideTemplate p sym arch rtp l a
forall p (args :: Ctx CrucibleType) (ret :: CrucibleType) sym
       (arch :: LLVMArch) (wptr :: Natural) (l :: Ctx CrucibleType)
       (a :: CrucibleType) rtp.
(IsSymInterface sym, HasLLVMAnn sym, HasPtrWidth wptr) =>
LLVMOverride p sym args ret -> OverrideTemplate p sym arch rtp l a
basic_llvm_override LLVMOverride
  p sym (EmptyCtx ::> FloatType SingleFloat) (FloatType SingleFloat)
forall sym p.
IsSymInterface sym =>
LLVMOverride
  p sym (EmptyCtx ::> FloatType SingleFloat) (FloatType SingleFloat)
LLVM.llvmLog10Override_F32
  , LLVMOverride
  p sym (EmptyCtx ::> FloatType DoubleFloat) (FloatType DoubleFloat)
-> OverrideTemplate p sym arch rtp l a
forall p (args :: Ctx CrucibleType) (ret :: CrucibleType) sym
       (arch :: LLVMArch) (wptr :: Natural) (l :: Ctx CrucibleType)
       (a :: CrucibleType) rtp.
(IsSymInterface sym, HasLLVMAnn sym, HasPtrWidth wptr) =>
LLVMOverride p sym args ret -> OverrideTemplate p sym arch rtp l a
basic_llvm_override LLVMOverride
  p sym (EmptyCtx ::> FloatType DoubleFloat) (FloatType DoubleFloat)
forall sym p.
IsSymInterface sym =>
LLVMOverride
  p sym (EmptyCtx ::> FloatType DoubleFloat) (FloatType DoubleFloat)
LLVM.llvmLog10Override_F64
  , LLVMOverride
  p
  sym
  (((EmptyCtx ::> FloatType SingleFloat) ::> FloatType SingleFloat)
   ::> FloatType SingleFloat)
  (FloatType SingleFloat)
-> OverrideTemplate p sym arch rtp l a
forall p (args :: Ctx CrucibleType) (ret :: CrucibleType) sym
       (arch :: LLVMArch) (wptr :: Natural) (l :: Ctx CrucibleType)
       (a :: CrucibleType) rtp.
(IsSymInterface sym, HasLLVMAnn sym, HasPtrWidth wptr) =>
LLVMOverride p sym args ret -> OverrideTemplate p sym arch rtp l a
basic_llvm_override LLVMOverride
  p
  sym
  (((EmptyCtx ::> FloatType SingleFloat) ::> FloatType SingleFloat)
   ::> FloatType SingleFloat)
  (FloatType SingleFloat)
forall sym p.
IsSymInterface sym =>
LLVMOverride
  p
  sym
  (((EmptyCtx ::> FloatType SingleFloat) ::> FloatType SingleFloat)
   ::> FloatType SingleFloat)
  (FloatType SingleFloat)
LLVM.llvmFmaOverride_F32
  , LLVMOverride
  p
  sym
  (((EmptyCtx ::> FloatType DoubleFloat) ::> FloatType DoubleFloat)
   ::> FloatType DoubleFloat)
  (FloatType DoubleFloat)
-> OverrideTemplate p sym arch rtp l a
forall p (args :: Ctx CrucibleType) (ret :: CrucibleType) sym
       (arch :: LLVMArch) (wptr :: Natural) (l :: Ctx CrucibleType)
       (a :: CrucibleType) rtp.
(IsSymInterface sym, HasLLVMAnn sym, HasPtrWidth wptr) =>
LLVMOverride p sym args ret -> OverrideTemplate p sym arch rtp l a
basic_llvm_override LLVMOverride
  p
  sym
  (((EmptyCtx ::> FloatType DoubleFloat) ::> FloatType DoubleFloat)
   ::> FloatType DoubleFloat)
  (FloatType DoubleFloat)
forall sym p.
IsSymInterface sym =>
LLVMOverride
  p
  sym
  (((EmptyCtx ::> FloatType DoubleFloat) ::> FloatType DoubleFloat)
   ::> FloatType DoubleFloat)
  (FloatType DoubleFloat)
LLVM.llvmFmaOverride_F64
  , LLVMOverride
  p
  sym
  (((EmptyCtx ::> FloatType SingleFloat) ::> FloatType SingleFloat)
   ::> FloatType SingleFloat)
  (FloatType SingleFloat)
-> OverrideTemplate p sym arch rtp l a
forall p (args :: Ctx CrucibleType) (ret :: CrucibleType) sym
       (arch :: LLVMArch) (wptr :: Natural) (l :: Ctx CrucibleType)
       (a :: CrucibleType) rtp.
(IsSymInterface sym, HasLLVMAnn sym, HasPtrWidth wptr) =>
LLVMOverride p sym args ret -> OverrideTemplate p sym arch rtp l a
basic_llvm_override LLVMOverride
  p
  sym
  (((EmptyCtx ::> FloatType SingleFloat) ::> FloatType SingleFloat)
   ::> FloatType SingleFloat)
  (FloatType SingleFloat)
forall sym p.
IsSymInterface sym =>
LLVMOverride
  p
  sym
  (((EmptyCtx ::> FloatType SingleFloat) ::> FloatType SingleFloat)
   ::> FloatType SingleFloat)
  (FloatType SingleFloat)
LLVM.llvmFmuladdOverride_F32
  , LLVMOverride
  p
  sym
  (((EmptyCtx ::> FloatType DoubleFloat) ::> FloatType DoubleFloat)
   ::> FloatType DoubleFloat)
  (FloatType DoubleFloat)
-> OverrideTemplate p sym arch rtp l a
forall p (args :: Ctx CrucibleType) (ret :: CrucibleType) sym
       (arch :: LLVMArch) (wptr :: Natural) (l :: Ctx CrucibleType)
       (a :: CrucibleType) rtp.
(IsSymInterface sym, HasLLVMAnn sym, HasPtrWidth wptr) =>
LLVMOverride p sym args ret -> OverrideTemplate p sym arch rtp l a
basic_llvm_override LLVMOverride
  p
  sym
  (((EmptyCtx ::> FloatType DoubleFloat) ::> FloatType DoubleFloat)
   ::> FloatType DoubleFloat)
  (FloatType DoubleFloat)
forall sym p.
IsSymInterface sym =>
LLVMOverride
  p
  sym
  (((EmptyCtx ::> FloatType DoubleFloat) ::> FloatType DoubleFloat)
   ::> FloatType DoubleFloat)
  (FloatType DoubleFloat)
LLVM.llvmFmuladdOverride_F64
  , LLVMOverride
  p
  sym
  ((EmptyCtx ::> FloatType SingleFloat) ::> BVType 32)
  (BVType 1)
-> OverrideTemplate p sym arch rtp l a
forall p (args :: Ctx CrucibleType) (ret :: CrucibleType) sym
       (arch :: LLVMArch) (wptr :: Natural) (l :: Ctx CrucibleType)
       (a :: CrucibleType) rtp.
(IsSymInterface sym, HasLLVMAnn sym, HasPtrWidth wptr) =>
LLVMOverride p sym args ret -> OverrideTemplate p sym arch rtp l a
basic_llvm_override LLVMOverride
  p
  sym
  ((EmptyCtx ::> FloatType SingleFloat) ::> BVType 32)
  (BVType 1)
forall sym p.
IsSymInterface sym =>
LLVMOverride
  p
  sym
  ((EmptyCtx ::> FloatType SingleFloat) ::> BVType 32)
  (BVType 1)
LLVM.llvmIsFpclassOverride_F32
  , LLVMOverride
  p
  sym
  ((EmptyCtx ::> FloatType DoubleFloat) ::> BVType 32)
  (BVType 1)
-> OverrideTemplate p sym arch rtp l a
forall p (args :: Ctx CrucibleType) (ret :: CrucibleType) sym
       (arch :: LLVMArch) (wptr :: Natural) (l :: Ctx CrucibleType)
       (a :: CrucibleType) rtp.
(IsSymInterface sym, HasLLVMAnn sym, HasPtrWidth wptr) =>
LLVMOverride p sym args ret -> OverrideTemplate p sym arch rtp l a
basic_llvm_override LLVMOverride
  p
  sym
  ((EmptyCtx ::> FloatType DoubleFloat) ::> BVType 32)
  (BVType 1)
forall sym p.
IsSymInterface sym =>
LLVMOverride
  p
  sym
  ((EmptyCtx ::> FloatType DoubleFloat) ::> BVType 32)
  (BVType 1)
LLVM.llvmIsFpclassOverride_F64

  -- C standard library functions
  , LLVMOverride p sym EmptyCtx UnitType
-> OverrideTemplate p sym arch rtp l a
forall p (args :: Ctx CrucibleType) (ret :: CrucibleType) sym
       (arch :: LLVMArch) (wptr :: Natural) (l :: Ctx CrucibleType)
       (a :: CrucibleType) rtp.
(IsSymInterface sym, HasLLVMAnn sym, HasPtrWidth wptr) =>
LLVMOverride p sym args ret -> OverrideTemplate p sym arch rtp l a
basic_llvm_override LLVMOverride p sym EmptyCtx UnitType
forall sym p.
(IsSymInterface sym, ?intrinsicsOpts::IntrinsicsOptions) =>
LLVMOverride p sym EmptyCtx UnitType
Libc.llvmAbortOverride
  , LLVMOverride
  p
  sym
  ((((EmptyCtx ::> LLVMPointerType wptr) ::> LLVMPointerType wptr)
    ::> BVType 32)
   ::> LLVMPointerType wptr)
  UnitType
-> OverrideTemplate p sym arch rtp l a
forall p (args :: Ctx CrucibleType) (ret :: CrucibleType) sym
       (arch :: LLVMArch) (wptr :: Natural) (l :: Ctx CrucibleType)
       (a :: CrucibleType) rtp.
(IsSymInterface sym, HasLLVMAnn sym, HasPtrWidth wptr) =>
LLVMOverride p sym args ret -> OverrideTemplate p sym arch rtp l a
basic_llvm_override LLVMOverride
  p
  sym
  ((((EmptyCtx ::> LLVMPointerType wptr) ::> LLVMPointerType wptr)
    ::> BVType 32)
   ::> LLVMPointerType wptr)
  UnitType
forall sym (wptr :: Natural) p.
(IsSymInterface sym, HasPtrWidth wptr, HasLLVMAnn sym,
 ?intrinsicsOpts::IntrinsicsOptions, ?memOpts::MemOptions) =>
LLVMOverride
  p
  sym
  ((((EmptyCtx ::> LLVMPointerType wptr) ::> LLVMPointerType wptr)
    ::> BVType 32)
   ::> LLVMPointerType wptr)
  UnitType
Libc.llvmAssertRtnOverride
  , LLVMOverride
  p
  sym
  ((((EmptyCtx ::> LLVMPointerType wptr) ::> LLVMPointerType wptr)
    ::> BVType 32)
   ::> LLVMPointerType wptr)
  UnitType
-> OverrideTemplate p sym arch rtp l a
forall p (args :: Ctx CrucibleType) (ret :: CrucibleType) sym
       (arch :: LLVMArch) (wptr :: Natural) (l :: Ctx CrucibleType)
       (a :: CrucibleType) rtp.
(IsSymInterface sym, HasLLVMAnn sym, HasPtrWidth wptr) =>
LLVMOverride p sym args ret -> OverrideTemplate p sym arch rtp l a
basic_llvm_override LLVMOverride
  p
  sym
  ((((EmptyCtx ::> LLVMPointerType wptr) ::> LLVMPointerType wptr)
    ::> BVType 32)
   ::> LLVMPointerType wptr)
  UnitType
forall sym (wptr :: Natural) p.
(IsSymInterface sym, HasPtrWidth wptr, HasLLVMAnn sym,
 ?intrinsicsOpts::IntrinsicsOptions, ?memOpts::MemOptions) =>
LLVMOverride
  p
  sym
  ((((EmptyCtx ::> LLVMPointerType wptr) ::> LLVMPointerType wptr)
    ::> BVType 32)
   ::> LLVMPointerType wptr)
  UnitType
Libc.llvmAssertFailOverride
  , LLVMOverride
  p
  sym
  (((EmptyCtx ::> LLVMPointerType wptr) ::> LLVMPointerType wptr)
   ::> BVType wptr)
  (LLVMPointerType wptr)
-> OverrideTemplate p sym arch rtp l a
forall p (args :: Ctx CrucibleType) (ret :: CrucibleType) sym
       (arch :: LLVMArch) (wptr :: Natural) (l :: Ctx CrucibleType)
       (a :: CrucibleType) rtp.
(IsSymInterface sym, HasLLVMAnn sym, HasPtrWidth wptr) =>
LLVMOverride p sym args ret -> OverrideTemplate p sym arch rtp l a
basic_llvm_override LLVMOverride
  p
  sym
  (((EmptyCtx ::> LLVMPointerType wptr) ::> LLVMPointerType wptr)
   ::> BVType wptr)
  (LLVMPointerType wptr)
forall sym (wptr :: Natural) p.
(IsSymInterface sym, HasLLVMAnn sym, HasPtrWidth wptr,
 ?memOpts::MemOptions) =>
LLVMOverride
  p
  sym
  (((EmptyCtx ::> LLVMPointerType wptr) ::> LLVMPointerType wptr)
   ::> BVType wptr)
  (LLVMPointerType wptr)
Libc.llvmMemcpyOverride
  , LLVMOverride
  p
  sym
  ((((EmptyCtx ::> LLVMPointerType wptr) ::> LLVMPointerType wptr)
    ::> BVType wptr)
   ::> BVType wptr)
  (LLVMPointerType wptr)
-> OverrideTemplate p sym arch rtp l a
forall p (args :: Ctx CrucibleType) (ret :: CrucibleType) sym
       (arch :: LLVMArch) (wptr :: Natural) (l :: Ctx CrucibleType)
       (a :: CrucibleType) rtp.
(IsSymInterface sym, HasLLVMAnn sym, HasPtrWidth wptr) =>
LLVMOverride p sym args ret -> OverrideTemplate p sym arch rtp l a
basic_llvm_override LLVMOverride
  p
  sym
  ((((EmptyCtx ::> LLVMPointerType wptr) ::> LLVMPointerType wptr)
    ::> BVType wptr)
   ::> BVType wptr)
  (LLVMPointerType wptr)
forall sym (wptr :: Natural) p.
(IsSymInterface sym, HasLLVMAnn sym, HasPtrWidth wptr,
 ?memOpts::MemOptions) =>
LLVMOverride
  p
  sym
  ((((EmptyCtx ::> LLVMPointerType wptr) ::> LLVMPointerType wptr)
    ::> BVType wptr)
   ::> BVType wptr)
  (LLVMPointerType wptr)
Libc.llvmMemcpyChkOverride
  , LLVMOverride
  p
  sym
  (((EmptyCtx ::> LLVMPointerType wptr) ::> LLVMPointerType wptr)
   ::> BVType wptr)
  (LLVMPointerType wptr)
-> OverrideTemplate p sym arch rtp l a
forall p (args :: Ctx CrucibleType) (ret :: CrucibleType) sym
       (arch :: LLVMArch) (wptr :: Natural) (l :: Ctx CrucibleType)
       (a :: CrucibleType) rtp.
(IsSymInterface sym, HasLLVMAnn sym, HasPtrWidth wptr) =>
LLVMOverride p sym args ret -> OverrideTemplate p sym arch rtp l a
basic_llvm_override LLVMOverride
  p
  sym
  (((EmptyCtx ::> LLVMPointerType wptr) ::> LLVMPointerType wptr)
   ::> BVType wptr)
  (LLVMPointerType wptr)
forall sym (wptr :: Natural) p.
(IsSymInterface sym, HasLLVMAnn sym, HasPtrWidth wptr,
 ?memOpts::MemOptions) =>
LLVMOverride
  p
  sym
  (((EmptyCtx ::> LLVMPointerType wptr) ::> LLVMPointerType wptr)
   ::> BVType wptr)
  (LLVMPointerType wptr)
Libc.llvmMemmoveOverride
  , LLVMOverride
  p
  sym
  (((EmptyCtx ::> LLVMPointerType wptr) ::> BVType 32)
   ::> BVType wptr)
  (LLVMPointerType wptr)
-> OverrideTemplate p sym arch rtp l a
forall p (args :: Ctx CrucibleType) (ret :: CrucibleType) sym
       (arch :: LLVMArch) (wptr :: Natural) (l :: Ctx CrucibleType)
       (a :: CrucibleType) rtp.
(IsSymInterface sym, HasLLVMAnn sym, HasPtrWidth wptr) =>
LLVMOverride p sym args ret -> OverrideTemplate p sym arch rtp l a
basic_llvm_override LLVMOverride
  p
  sym
  (((EmptyCtx ::> LLVMPointerType wptr) ::> BVType 32)
   ::> BVType wptr)
  (LLVMPointerType wptr)
forall p sym (wptr :: Natural).
(IsSymInterface sym, HasLLVMAnn sym, HasPtrWidth wptr) =>
LLVMOverride
  p
  sym
  (((EmptyCtx ::> LLVMPointerType wptr) ::> BVType 32)
   ::> BVType wptr)
  (LLVMPointerType wptr)
Libc.llvmMemsetOverride
  , LLVMOverride
  p
  sym
  ((((EmptyCtx ::> LLVMPointerType wptr) ::> BVType 32)
    ::> BVType wptr)
   ::> BVType wptr)
  (LLVMPointerType wptr)
-> OverrideTemplate p sym arch rtp l a
forall p (args :: Ctx CrucibleType) (ret :: CrucibleType) sym
       (arch :: LLVMArch) (wptr :: Natural) (l :: Ctx CrucibleType)
       (a :: CrucibleType) rtp.
(IsSymInterface sym, HasLLVMAnn sym, HasPtrWidth wptr) =>
LLVMOverride p sym args ret -> OverrideTemplate p sym arch rtp l a
basic_llvm_override LLVMOverride
  p
  sym
  ((((EmptyCtx ::> LLVMPointerType wptr) ::> BVType 32)
    ::> BVType wptr)
   ::> BVType wptr)
  (LLVMPointerType wptr)
forall sym (wptr :: Natural) p.
(IsSymInterface sym, HasLLVMAnn sym, HasPtrWidth wptr) =>
LLVMOverride
  p
  sym
  ((((EmptyCtx ::> LLVMPointerType wptr) ::> BVType 32)
    ::> BVType wptr)
   ::> BVType wptr)
  (LLVMPointerType wptr)
Libc.llvmMemsetChkOverride
  , LLVMOverride
  p sym (EmptyCtx ::> BVType wptr) (LLVMPointerType wptr)
-> OverrideTemplate p sym arch rtp l a
forall p (args :: Ctx CrucibleType) (ret :: CrucibleType) sym
       (arch :: LLVMArch) (wptr :: Natural) (l :: Ctx CrucibleType)
       (a :: CrucibleType) rtp.
(IsSymInterface sym, HasLLVMAnn sym, HasPtrWidth wptr) =>
LLVMOverride p sym args ret -> OverrideTemplate p sym arch rtp l a
basic_llvm_override LLVMOverride
  p sym (EmptyCtx ::> BVType wptr) (LLVMPointerType wptr)
forall sym (wptr :: Natural) p.
(IsSymInterface sym, HasLLVMAnn sym, HasPtrWidth wptr,
 ?lc::TypeContext, ?memOpts::MemOptions) =>
LLVMOverride
  p sym (EmptyCtx ::> BVType wptr) (LLVMPointerType wptr)
Libc.llvmMallocOverride
  , LLVMOverride
  p
  sym
  ((EmptyCtx ::> BVType wptr) ::> BVType wptr)
  (LLVMPointerType wptr)
-> OverrideTemplate p sym arch rtp l a
forall p (args :: Ctx CrucibleType) (ret :: CrucibleType) sym
       (arch :: LLVMArch) (wptr :: Natural) (l :: Ctx CrucibleType)
       (a :: CrucibleType) rtp.
(IsSymInterface sym, HasLLVMAnn sym, HasPtrWidth wptr) =>
LLVMOverride p sym args ret -> OverrideTemplate p sym arch rtp l a
basic_llvm_override LLVMOverride
  p
  sym
  ((EmptyCtx ::> BVType wptr) ::> BVType wptr)
  (LLVMPointerType wptr)
forall sym (wptr :: Natural) p.
(IsSymInterface sym, HasLLVMAnn sym, HasPtrWidth wptr,
 ?lc::TypeContext, ?memOpts::MemOptions) =>
LLVMOverride
  p
  sym
  ((EmptyCtx ::> BVType wptr) ::> BVType wptr)
  (LLVMPointerType wptr)
Libc.llvmCallocOverride
  , LLVMOverride p sym (EmptyCtx ::> LLVMPointerType wptr) UnitType
-> OverrideTemplate p sym arch rtp l a
forall p (args :: Ctx CrucibleType) (ret :: CrucibleType) sym
       (arch :: LLVMArch) (wptr :: Natural) (l :: Ctx CrucibleType)
       (a :: CrucibleType) rtp.
(IsSymInterface sym, HasLLVMAnn sym, HasPtrWidth wptr) =>
LLVMOverride p sym args ret -> OverrideTemplate p sym arch rtp l a
basic_llvm_override LLVMOverride p sym (EmptyCtx ::> LLVMPointerType wptr) UnitType
forall sym (wptr :: Natural) p.
(IsSymInterface sym, HasLLVMAnn sym, HasPtrWidth wptr) =>
LLVMOverride p sym (EmptyCtx ::> LLVMPointerType wptr) UnitType
Libc.llvmFreeOverride
  , LLVMOverride
  p
  sym
  ((EmptyCtx ::> LLVMPointerType wptr) ::> BVType wptr)
  (LLVMPointerType wptr)
-> OverrideTemplate p sym arch rtp l a
forall p (args :: Ctx CrucibleType) (ret :: CrucibleType) sym
       (arch :: LLVMArch) (wptr :: Natural) (l :: Ctx CrucibleType)
       (a :: CrucibleType) rtp.
(IsSymInterface sym, HasLLVMAnn sym, HasPtrWidth wptr) =>
LLVMOverride p sym args ret -> OverrideTemplate p sym arch rtp l a
basic_llvm_override LLVMOverride
  p
  sym
  ((EmptyCtx ::> LLVMPointerType wptr) ::> BVType wptr)
  (LLVMPointerType wptr)
forall sym (wptr :: Natural) p.
(IsSymInterface sym, HasLLVMAnn sym, HasPtrWidth wptr,
 ?lc::TypeContext, ?memOpts::MemOptions) =>
LLVMOverride
  p
  sym
  ((EmptyCtx ::> LLVMPointerType wptr) ::> BVType wptr)
  (LLVMPointerType wptr)
Libc.llvmReallocOverride
  , LLVMOverride
  p sym (EmptyCtx ::> LLVMPointerType wptr) (BVType wptr)
-> OverrideTemplate p sym arch rtp l a
forall p (args :: Ctx CrucibleType) (ret :: CrucibleType) sym
       (arch :: LLVMArch) (wptr :: Natural) (l :: Ctx CrucibleType)
       (a :: CrucibleType) rtp.
(IsSymInterface sym, HasLLVMAnn sym, HasPtrWidth wptr) =>
LLVMOverride p sym args ret -> OverrideTemplate p sym arch rtp l a
basic_llvm_override LLVMOverride
  p sym (EmptyCtx ::> LLVMPointerType wptr) (BVType wptr)
forall sym (wptr :: Natural) p.
(IsSymInterface sym, HasLLVMAnn sym, HasPtrWidth wptr,
 ?memOpts::MemOptions) =>
LLVMOverride
  p sym (EmptyCtx ::> LLVMPointerType wptr) (BVType wptr)
Libc.llvmStrlenOverride
  , LLVMOverride
  p
  sym
  ((EmptyCtx ::> LLVMPointerType wptr) ::> VectorType AnyType)
  (BVType 32)
-> OverrideTemplate p sym arch rtp l a
forall p (args :: Ctx CrucibleType) (ret :: CrucibleType) sym
       (arch :: LLVMArch) (wptr :: Natural) (l :: Ctx CrucibleType)
       (a :: CrucibleType) rtp.
(IsSymInterface sym, HasLLVMAnn sym, HasPtrWidth wptr) =>
LLVMOverride p sym args ret -> OverrideTemplate p sym arch rtp l a
basic_llvm_override LLVMOverride
  p
  sym
  ((EmptyCtx ::> LLVMPointerType wptr) ::> VectorType AnyType)
  (BVType 32)
forall sym (wptr :: Natural) p.
(IsSymInterface sym, HasPtrWidth wptr, HasLLVMAnn sym,
 ?memOpts::MemOptions) =>
LLVMOverride
  p
  sym
  ((EmptyCtx ::> LLVMPointerType wptr) ::> VectorType AnyType)
  (BVType 32)
Libc.llvmPrintfOverride
  , LLVMOverride
  p
  sym
  (((EmptyCtx ::> BVType 32) ::> LLVMPointerType wptr)
   ::> VectorType AnyType)
  (BVType 32)
-> OverrideTemplate p sym arch rtp l a
forall p (args :: Ctx CrucibleType) (ret :: CrucibleType) sym
       (arch :: LLVMArch) (wptr :: Natural) (l :: Ctx CrucibleType)
       (a :: CrucibleType) rtp.
(IsSymInterface sym, HasLLVMAnn sym, HasPtrWidth wptr) =>
LLVMOverride p sym args ret -> OverrideTemplate p sym arch rtp l a
basic_llvm_override LLVMOverride
  p
  sym
  (((EmptyCtx ::> BVType 32) ::> LLVMPointerType wptr)
   ::> VectorType AnyType)
  (BVType 32)
forall sym (wptr :: Natural) p.
(IsSymInterface sym, HasLLVMAnn sym, HasPtrWidth wptr,
 ?memOpts::MemOptions) =>
LLVMOverride
  p
  sym
  (((EmptyCtx ::> BVType 32) ::> LLVMPointerType wptr)
   ::> VectorType AnyType)
  (BVType 32)
Libc.llvmPrintfChkOverride
  , LLVMOverride p sym (EmptyCtx ::> LLVMPointerType wptr) (BVType 32)
-> OverrideTemplate p sym arch rtp l a
forall p (args :: Ctx CrucibleType) (ret :: CrucibleType) sym
       (arch :: LLVMArch) (wptr :: Natural) (l :: Ctx CrucibleType)
       (a :: CrucibleType) rtp.
(IsSymInterface sym, HasLLVMAnn sym, HasPtrWidth wptr) =>
LLVMOverride p sym args ret -> OverrideTemplate p sym arch rtp l a
basic_llvm_override LLVMOverride p sym (EmptyCtx ::> LLVMPointerType wptr) (BVType 32)
forall sym (wptr :: Natural) p.
(IsSymInterface sym, HasLLVMAnn sym, HasPtrWidth wptr,
 ?memOpts::MemOptions) =>
LLVMOverride p sym (EmptyCtx ::> LLVMPointerType wptr) (BVType 32)
Libc.llvmPutsOverride
  , LLVMOverride p sym (EmptyCtx ::> BVType 32) (BVType 32)
-> OverrideTemplate p sym arch rtp l a
forall p (args :: Ctx CrucibleType) (ret :: CrucibleType) sym
       (arch :: LLVMArch) (wptr :: Natural) (l :: Ctx CrucibleType)
       (a :: CrucibleType) rtp.
(IsSymInterface sym, HasLLVMAnn sym, HasPtrWidth wptr) =>
LLVMOverride p sym args ret -> OverrideTemplate p sym arch rtp l a
basic_llvm_override LLVMOverride p sym (EmptyCtx ::> BVType 32) (BVType 32)
forall sym (wptr :: Natural) p.
(IsSymInterface sym, HasPtrWidth wptr) =>
LLVMOverride p sym (EmptyCtx ::> BVType 32) (BVType 32)
Libc.llvmPutCharOverride
  , LLVMOverride p sym (EmptyCtx ::> BVType 32) UnitType
-> OverrideTemplate p sym arch rtp l a
forall p (args :: Ctx CrucibleType) (ret :: CrucibleType) sym
       (arch :: LLVMArch) (wptr :: Natural) (l :: Ctx CrucibleType)
       (a :: CrucibleType) rtp.
(IsSymInterface sym, HasLLVMAnn sym, HasPtrWidth wptr) =>
LLVMOverride p sym args ret -> OverrideTemplate p sym arch rtp l a
basic_llvm_override LLVMOverride p sym (EmptyCtx ::> BVType 32) UnitType
forall sym p.
(IsSymInterface sym, ?intrinsicsOpts::IntrinsicsOptions) =>
LLVMOverride p sym (EmptyCtx ::> BVType 32) UnitType
Libc.llvmExitOverride
  , LLVMOverride
  p sym (EmptyCtx ::> LLVMPointerType wptr) (LLVMPointerType wptr)
-> OverrideTemplate p sym arch rtp l a
forall p (args :: Ctx CrucibleType) (ret :: CrucibleType) sym
       (arch :: LLVMArch) (wptr :: Natural) (l :: Ctx CrucibleType)
       (a :: CrucibleType) rtp.
(IsSymInterface sym, HasLLVMAnn sym, HasPtrWidth wptr) =>
LLVMOverride p sym args ret -> OverrideTemplate p sym arch rtp l a
basic_llvm_override LLVMOverride
  p sym (EmptyCtx ::> LLVMPointerType wptr) (LLVMPointerType wptr)
forall sym (wptr :: Natural) p.
(IsSymInterface sym, HasPtrWidth wptr) =>
LLVMOverride
  p sym (EmptyCtx ::> LLVMPointerType wptr) (LLVMPointerType wptr)
Libc.llvmGetenvOverride
  , LLVMOverride p sym (EmptyCtx ::> BVType 32) (BVType 32)
-> OverrideTemplate p sym arch rtp l a
forall p (args :: Ctx CrucibleType) (ret :: CrucibleType) sym
       (arch :: LLVMArch) (wptr :: Natural) (l :: Ctx CrucibleType)
       (a :: CrucibleType) rtp.
(IsSymInterface sym, HasLLVMAnn sym, HasPtrWidth wptr) =>
LLVMOverride p sym args ret -> OverrideTemplate p sym arch rtp l a
basic_llvm_override LLVMOverride p sym (EmptyCtx ::> BVType 32) (BVType 32)
forall sym p.
(IsSymInterface sym, ?lc::TypeContext) =>
LLVMOverride p sym (EmptyCtx ::> BVType 32) (BVType 32)
Libc.llvmHtonlOverride
  , LLVMOverride p sym (EmptyCtx ::> BVType 16) (BVType 16)
-> OverrideTemplate p sym arch rtp l a
forall p (args :: Ctx CrucibleType) (ret :: CrucibleType) sym
       (arch :: LLVMArch) (wptr :: Natural) (l :: Ctx CrucibleType)
       (a :: CrucibleType) rtp.
(IsSymInterface sym, HasLLVMAnn sym, HasPtrWidth wptr) =>
LLVMOverride p sym args ret -> OverrideTemplate p sym arch rtp l a
basic_llvm_override LLVMOverride p sym (EmptyCtx ::> BVType 16) (BVType 16)
forall sym p.
(IsSymInterface sym, ?lc::TypeContext) =>
LLVMOverride p sym (EmptyCtx ::> BVType 16) (BVType 16)
Libc.llvmHtonsOverride
  , LLVMOverride p sym (EmptyCtx ::> BVType 32) (BVType 32)
-> OverrideTemplate p sym arch rtp l a
forall p (args :: Ctx CrucibleType) (ret :: CrucibleType) sym
       (arch :: LLVMArch) (wptr :: Natural) (l :: Ctx CrucibleType)
       (a :: CrucibleType) rtp.
(IsSymInterface sym, HasLLVMAnn sym, HasPtrWidth wptr) =>
LLVMOverride p sym args ret -> OverrideTemplate p sym arch rtp l a
basic_llvm_override LLVMOverride p sym (EmptyCtx ::> BVType 32) (BVType 32)
forall sym p.
(IsSymInterface sym, ?lc::TypeContext) =>
LLVMOverride p sym (EmptyCtx ::> BVType 32) (BVType 32)
Libc.llvmNtohlOverride
  , LLVMOverride p sym (EmptyCtx ::> BVType 16) (BVType 16)
-> OverrideTemplate p sym arch rtp l a
forall p (args :: Ctx CrucibleType) (ret :: CrucibleType) sym
       (arch :: LLVMArch) (wptr :: Natural) (l :: Ctx CrucibleType)
       (a :: CrucibleType) rtp.
(IsSymInterface sym, HasLLVMAnn sym, HasPtrWidth wptr) =>
LLVMOverride p sym args ret -> OverrideTemplate p sym arch rtp l a
basic_llvm_override LLVMOverride p sym (EmptyCtx ::> BVType 16) (BVType 16)
forall sym p.
(IsSymInterface sym, ?lc::TypeContext) =>
LLVMOverride p sym (EmptyCtx ::> BVType 16) (BVType 16)
Libc.llvmNtohsOverride
  , LLVMOverride p sym (EmptyCtx ::> BVType 32) (BVType 32)
-> OverrideTemplate p sym arch rtp l a
forall p (args :: Ctx CrucibleType) (ret :: CrucibleType) sym
       (arch :: LLVMArch) (wptr :: Natural) (l :: Ctx CrucibleType)
       (a :: CrucibleType) rtp.
(IsSymInterface sym, HasLLVMAnn sym, HasPtrWidth wptr) =>
LLVMOverride p sym args ret -> OverrideTemplate p sym arch rtp l a
basic_llvm_override LLVMOverride p sym (EmptyCtx ::> BVType 32) (BVType 32)
forall sym p.
(IsSymInterface sym, HasLLVMAnn sym) =>
LLVMOverride p sym (EmptyCtx ::> BVType 32) (BVType 32)
Libc.llvmAbsOverride
  , LLVMOverride p sym (EmptyCtx ::> BVType 32) (BVType 32)
-> OverrideTemplate p sym arch rtp l a
forall p (args :: Ctx CrucibleType) (ret :: CrucibleType) sym
       (arch :: LLVMArch) (wptr :: Natural) (l :: Ctx CrucibleType)
       (a :: CrucibleType) rtp.
(IsSymInterface sym, HasLLVMAnn sym, HasPtrWidth wptr) =>
LLVMOverride p sym args ret -> OverrideTemplate p sym arch rtp l a
basic_llvm_override LLVMOverride p sym (EmptyCtx ::> BVType 32) (BVType 32)
forall sym p.
(IsSymInterface sym, HasLLVMAnn sym) =>
LLVMOverride p sym (EmptyCtx ::> BVType 32) (BVType 32)
Libc.llvmLAbsOverride_32
  , LLVMOverride p sym (EmptyCtx ::> BVType 64) (BVType 64)
-> OverrideTemplate p sym arch rtp l a
forall p (args :: Ctx CrucibleType) (ret :: CrucibleType) sym
       (arch :: LLVMArch) (wptr :: Natural) (l :: Ctx CrucibleType)
       (a :: CrucibleType) rtp.
(IsSymInterface sym, HasLLVMAnn sym, HasPtrWidth wptr) =>
LLVMOverride p sym args ret -> OverrideTemplate p sym arch rtp l a
basic_llvm_override LLVMOverride p sym (EmptyCtx ::> BVType 64) (BVType 64)
forall sym p.
(IsSymInterface sym, HasLLVMAnn sym) =>
LLVMOverride p sym (EmptyCtx ::> BVType 64) (BVType 64)
Libc.llvmLAbsOverride_64
  , LLVMOverride p sym (EmptyCtx ::> BVType 64) (BVType 64)
-> OverrideTemplate p sym arch rtp l a
forall p (args :: Ctx CrucibleType) (ret :: CrucibleType) sym
       (arch :: LLVMArch) (wptr :: Natural) (l :: Ctx CrucibleType)
       (a :: CrucibleType) rtp.
(IsSymInterface sym, HasLLVMAnn sym, HasPtrWidth wptr) =>
LLVMOverride p sym args ret -> OverrideTemplate p sym arch rtp l a
basic_llvm_override LLVMOverride p sym (EmptyCtx ::> BVType 64) (BVType 64)
forall sym p.
(IsSymInterface sym, HasLLVMAnn sym) =>
LLVMOverride p sym (EmptyCtx ::> BVType 64) (BVType 64)
Libc.llvmLLAbsOverride

  , LLVMOverride
  p sym (EmptyCtx ::> FloatType DoubleFloat) (FloatType DoubleFloat)
-> OverrideTemplate p sym arch rtp l a
forall p (args :: Ctx CrucibleType) (ret :: CrucibleType) sym
       (arch :: LLVMArch) (wptr :: Natural) (l :: Ctx CrucibleType)
       (a :: CrucibleType) rtp.
(IsSymInterface sym, HasLLVMAnn sym, HasPtrWidth wptr) =>
LLVMOverride p sym args ret -> OverrideTemplate p sym arch rtp l a
basic_llvm_override LLVMOverride
  p sym (EmptyCtx ::> FloatType DoubleFloat) (FloatType DoubleFloat)
forall sym p.
IsSymInterface sym =>
LLVMOverride
  p sym (EmptyCtx ::> FloatType DoubleFloat) (FloatType DoubleFloat)
Libc.llvmCeilOverride
  , LLVMOverride
  p sym (EmptyCtx ::> FloatType SingleFloat) (FloatType SingleFloat)
-> OverrideTemplate p sym arch rtp l a
forall p (args :: Ctx CrucibleType) (ret :: CrucibleType) sym
       (arch :: LLVMArch) (wptr :: Natural) (l :: Ctx CrucibleType)
       (a :: CrucibleType) rtp.
(IsSymInterface sym, HasLLVMAnn sym, HasPtrWidth wptr) =>
LLVMOverride p sym args ret -> OverrideTemplate p sym arch rtp l a
basic_llvm_override LLVMOverride
  p sym (EmptyCtx ::> FloatType SingleFloat) (FloatType SingleFloat)
forall sym p.
IsSymInterface sym =>
LLVMOverride
  p sym (EmptyCtx ::> FloatType SingleFloat) (FloatType SingleFloat)
Libc.llvmCeilfOverride
  , LLVMOverride
  p sym (EmptyCtx ::> FloatType DoubleFloat) (FloatType DoubleFloat)
-> OverrideTemplate p sym arch rtp l a
forall p (args :: Ctx CrucibleType) (ret :: CrucibleType) sym
       (arch :: LLVMArch) (wptr :: Natural) (l :: Ctx CrucibleType)
       (a :: CrucibleType) rtp.
(IsSymInterface sym, HasLLVMAnn sym, HasPtrWidth wptr) =>
LLVMOverride p sym args ret -> OverrideTemplate p sym arch rtp l a
basic_llvm_override LLVMOverride
  p sym (EmptyCtx ::> FloatType DoubleFloat) (FloatType DoubleFloat)
forall sym p.
IsSymInterface sym =>
LLVMOverride
  p sym (EmptyCtx ::> FloatType DoubleFloat) (FloatType DoubleFloat)
Libc.llvmFloorOverride
  , LLVMOverride
  p sym (EmptyCtx ::> FloatType SingleFloat) (FloatType SingleFloat)
-> OverrideTemplate p sym arch rtp l a
forall p (args :: Ctx CrucibleType) (ret :: CrucibleType) sym
       (arch :: LLVMArch) (wptr :: Natural) (l :: Ctx CrucibleType)
       (a :: CrucibleType) rtp.
(IsSymInterface sym, HasLLVMAnn sym, HasPtrWidth wptr) =>
LLVMOverride p sym args ret -> OverrideTemplate p sym arch rtp l a
basic_llvm_override LLVMOverride
  p sym (EmptyCtx ::> FloatType SingleFloat) (FloatType SingleFloat)
forall sym p.
IsSymInterface sym =>
LLVMOverride
  p sym (EmptyCtx ::> FloatType SingleFloat) (FloatType SingleFloat)
Libc.llvmFloorfOverride
  , LLVMOverride
  p
  sym
  (((EmptyCtx ::> FloatType DoubleFloat) ::> FloatType DoubleFloat)
   ::> FloatType DoubleFloat)
  (FloatType DoubleFloat)
-> OverrideTemplate p sym arch rtp l a
forall p (args :: Ctx CrucibleType) (ret :: CrucibleType) sym
       (arch :: LLVMArch) (wptr :: Natural) (l :: Ctx CrucibleType)
       (a :: CrucibleType) rtp.
(IsSymInterface sym, HasLLVMAnn sym, HasPtrWidth wptr) =>
LLVMOverride p sym args ret -> OverrideTemplate p sym arch rtp l a
basic_llvm_override LLVMOverride
  p
  sym
  (((EmptyCtx ::> FloatType DoubleFloat) ::> FloatType DoubleFloat)
   ::> FloatType DoubleFloat)
  (FloatType DoubleFloat)
forall sym p.
IsSymInterface sym =>
LLVMOverride
  p
  sym
  (((EmptyCtx ::> FloatType DoubleFloat) ::> FloatType DoubleFloat)
   ::> FloatType DoubleFloat)
  (FloatType DoubleFloat)
Libc.llvmFmaOverride
  , LLVMOverride
  p
  sym
  (((EmptyCtx ::> FloatType SingleFloat) ::> FloatType SingleFloat)
   ::> FloatType SingleFloat)
  (FloatType SingleFloat)
-> OverrideTemplate p sym arch rtp l a
forall p (args :: Ctx CrucibleType) (ret :: CrucibleType) sym
       (arch :: LLVMArch) (wptr :: Natural) (l :: Ctx CrucibleType)
       (a :: CrucibleType) rtp.
(IsSymInterface sym, HasLLVMAnn sym, HasPtrWidth wptr) =>
LLVMOverride p sym args ret -> OverrideTemplate p sym arch rtp l a
basic_llvm_override LLVMOverride
  p
  sym
  (((EmptyCtx ::> FloatType SingleFloat) ::> FloatType SingleFloat)
   ::> FloatType SingleFloat)
  (FloatType SingleFloat)
forall sym p.
IsSymInterface sym =>
LLVMOverride
  p
  sym
  (((EmptyCtx ::> FloatType SingleFloat) ::> FloatType SingleFloat)
   ::> FloatType SingleFloat)
  (FloatType SingleFloat)
Libc.llvmFmafOverride
  , LLVMOverride p sym (EmptyCtx ::> FloatType DoubleFloat) (BVType 32)
-> OverrideTemplate p sym arch rtp l a
forall p (args :: Ctx CrucibleType) (ret :: CrucibleType) sym
       (arch :: LLVMArch) (wptr :: Natural) (l :: Ctx CrucibleType)
       (a :: CrucibleType) rtp.
(IsSymInterface sym, HasLLVMAnn sym, HasPtrWidth wptr) =>
LLVMOverride p sym args ret -> OverrideTemplate p sym arch rtp l a
basic_llvm_override LLVMOverride p sym (EmptyCtx ::> FloatType DoubleFloat) (BVType 32)
forall sym p.
IsSymInterface sym =>
LLVMOverride p sym (EmptyCtx ::> FloatType DoubleFloat) (BVType 32)
Libc.llvmIsinfOverride
  , LLVMOverride p sym (EmptyCtx ::> FloatType DoubleFloat) (BVType 32)
-> OverrideTemplate p sym arch rtp l a
forall p (args :: Ctx CrucibleType) (ret :: CrucibleType) sym
       (arch :: LLVMArch) (wptr :: Natural) (l :: Ctx CrucibleType)
       (a :: CrucibleType) rtp.
(IsSymInterface sym, HasLLVMAnn sym, HasPtrWidth wptr) =>
LLVMOverride p sym args ret -> OverrideTemplate p sym arch rtp l a
basic_llvm_override LLVMOverride p sym (EmptyCtx ::> FloatType DoubleFloat) (BVType 32)
forall sym p.
IsSymInterface sym =>
LLVMOverride p sym (EmptyCtx ::> FloatType DoubleFloat) (BVType 32)
Libc.llvm__isinfOverride
  , LLVMOverride p sym (EmptyCtx ::> FloatType SingleFloat) (BVType 32)
-> OverrideTemplate p sym arch rtp l a
forall p (args :: Ctx CrucibleType) (ret :: CrucibleType) sym
       (arch :: LLVMArch) (wptr :: Natural) (l :: Ctx CrucibleType)
       (a :: CrucibleType) rtp.
(IsSymInterface sym, HasLLVMAnn sym, HasPtrWidth wptr) =>
LLVMOverride p sym args ret -> OverrideTemplate p sym arch rtp l a
basic_llvm_override LLVMOverride p sym (EmptyCtx ::> FloatType SingleFloat) (BVType 32)
forall sym p.
IsSymInterface sym =>
LLVMOverride p sym (EmptyCtx ::> FloatType SingleFloat) (BVType 32)
Libc.llvm__isinffOverride
  , LLVMOverride p sym (EmptyCtx ::> FloatType DoubleFloat) (BVType 32)
-> OverrideTemplate p sym arch rtp l a
forall p (args :: Ctx CrucibleType) (ret :: CrucibleType) sym
       (arch :: LLVMArch) (wptr :: Natural) (l :: Ctx CrucibleType)
       (a :: CrucibleType) rtp.
(IsSymInterface sym, HasLLVMAnn sym, HasPtrWidth wptr) =>
LLVMOverride p sym args ret -> OverrideTemplate p sym arch rtp l a
basic_llvm_override LLVMOverride p sym (EmptyCtx ::> FloatType DoubleFloat) (BVType 32)
forall sym p.
IsSymInterface sym =>
LLVMOverride p sym (EmptyCtx ::> FloatType DoubleFloat) (BVType 32)
Libc.llvmIsnanOverride
  , LLVMOverride p sym (EmptyCtx ::> FloatType DoubleFloat) (BVType 32)
-> OverrideTemplate p sym arch rtp l a
forall p (args :: Ctx CrucibleType) (ret :: CrucibleType) sym
       (arch :: LLVMArch) (wptr :: Natural) (l :: Ctx CrucibleType)
       (a :: CrucibleType) rtp.
(IsSymInterface sym, HasLLVMAnn sym, HasPtrWidth wptr) =>
LLVMOverride p sym args ret -> OverrideTemplate p sym arch rtp l a
basic_llvm_override LLVMOverride p sym (EmptyCtx ::> FloatType DoubleFloat) (BVType 32)
forall sym p.
IsSymInterface sym =>
LLVMOverride p sym (EmptyCtx ::> FloatType DoubleFloat) (BVType 32)
Libc.llvm__isnanOverride
  , LLVMOverride p sym (EmptyCtx ::> FloatType SingleFloat) (BVType 32)
-> OverrideTemplate p sym arch rtp l a
forall p (args :: Ctx CrucibleType) (ret :: CrucibleType) sym
       (arch :: LLVMArch) (wptr :: Natural) (l :: Ctx CrucibleType)
       (a :: CrucibleType) rtp.
(IsSymInterface sym, HasLLVMAnn sym, HasPtrWidth wptr) =>
LLVMOverride p sym args ret -> OverrideTemplate p sym arch rtp l a
basic_llvm_override LLVMOverride p sym (EmptyCtx ::> FloatType SingleFloat) (BVType 32)
forall sym p.
IsSymInterface sym =>
LLVMOverride p sym (EmptyCtx ::> FloatType SingleFloat) (BVType 32)
Libc.llvm__isnanfOverride
  , LLVMOverride
  p sym (EmptyCtx ::> FloatType DoubleFloat) (FloatType DoubleFloat)
-> OverrideTemplate p sym arch rtp l a
forall p (args :: Ctx CrucibleType) (ret :: CrucibleType) sym
       (arch :: LLVMArch) (wptr :: Natural) (l :: Ctx CrucibleType)
       (a :: CrucibleType) rtp.
(IsSymInterface sym, HasLLVMAnn sym, HasPtrWidth wptr) =>
LLVMOverride p sym args ret -> OverrideTemplate p sym arch rtp l a
basic_llvm_override LLVMOverride
  p sym (EmptyCtx ::> FloatType DoubleFloat) (FloatType DoubleFloat)
forall sym p.
IsSymInterface sym =>
LLVMOverride
  p sym (EmptyCtx ::> FloatType DoubleFloat) (FloatType DoubleFloat)
Libc.llvmSqrtOverride
  , LLVMOverride
  p sym (EmptyCtx ::> FloatType SingleFloat) (FloatType SingleFloat)
-> OverrideTemplate p sym arch rtp l a
forall p (args :: Ctx CrucibleType) (ret :: CrucibleType) sym
       (arch :: LLVMArch) (wptr :: Natural) (l :: Ctx CrucibleType)
       (a :: CrucibleType) rtp.
(IsSymInterface sym, HasLLVMAnn sym, HasPtrWidth wptr) =>
LLVMOverride p sym args ret -> OverrideTemplate p sym arch rtp l a
basic_llvm_override LLVMOverride
  p sym (EmptyCtx ::> FloatType SingleFloat) (FloatType SingleFloat)
forall sym p.
IsSymInterface sym =>
LLVMOverride
  p sym (EmptyCtx ::> FloatType SingleFloat) (FloatType SingleFloat)
Libc.llvmSqrtfOverride
  , LLVMOverride
  p sym (EmptyCtx ::> FloatType DoubleFloat) (FloatType DoubleFloat)
-> OverrideTemplate p sym arch rtp l a
forall p (args :: Ctx CrucibleType) (ret :: CrucibleType) sym
       (arch :: LLVMArch) (wptr :: Natural) (l :: Ctx CrucibleType)
       (a :: CrucibleType) rtp.
(IsSymInterface sym, HasLLVMAnn sym, HasPtrWidth wptr) =>
LLVMOverride p sym args ret -> OverrideTemplate p sym arch rtp l a
basic_llvm_override LLVMOverride
  p sym (EmptyCtx ::> FloatType DoubleFloat) (FloatType DoubleFloat)
forall sym p.
IsSymInterface sym =>
LLVMOverride
  p sym (EmptyCtx ::> FloatType DoubleFloat) (FloatType DoubleFloat)
Libc.llvmSinOverride
  , LLVMOverride
  p sym (EmptyCtx ::> FloatType SingleFloat) (FloatType SingleFloat)
-> OverrideTemplate p sym arch rtp l a
forall p (args :: Ctx CrucibleType) (ret :: CrucibleType) sym
       (arch :: LLVMArch) (wptr :: Natural) (l :: Ctx CrucibleType)
       (a :: CrucibleType) rtp.
(IsSymInterface sym, HasLLVMAnn sym, HasPtrWidth wptr) =>
LLVMOverride p sym args ret -> OverrideTemplate p sym arch rtp l a
basic_llvm_override LLVMOverride
  p sym (EmptyCtx ::> FloatType SingleFloat) (FloatType SingleFloat)
forall sym p.
IsSymInterface sym =>
LLVMOverride
  p sym (EmptyCtx ::> FloatType SingleFloat) (FloatType SingleFloat)
Libc.llvmSinfOverride
  , LLVMOverride
  p sym (EmptyCtx ::> FloatType DoubleFloat) (FloatType DoubleFloat)
-> OverrideTemplate p sym arch rtp l a
forall p (args :: Ctx CrucibleType) (ret :: CrucibleType) sym
       (arch :: LLVMArch) (wptr :: Natural) (l :: Ctx CrucibleType)
       (a :: CrucibleType) rtp.
(IsSymInterface sym, HasLLVMAnn sym, HasPtrWidth wptr) =>
LLVMOverride p sym args ret -> OverrideTemplate p sym arch rtp l a
basic_llvm_override LLVMOverride
  p sym (EmptyCtx ::> FloatType DoubleFloat) (FloatType DoubleFloat)
forall sym p.
IsSymInterface sym =>
LLVMOverride
  p sym (EmptyCtx ::> FloatType DoubleFloat) (FloatType DoubleFloat)
Libc.llvmCosOverride
  , LLVMOverride
  p sym (EmptyCtx ::> FloatType SingleFloat) (FloatType SingleFloat)
-> OverrideTemplate p sym arch rtp l a
forall p (args :: Ctx CrucibleType) (ret :: CrucibleType) sym
       (arch :: LLVMArch) (wptr :: Natural) (l :: Ctx CrucibleType)
       (a :: CrucibleType) rtp.
(IsSymInterface sym, HasLLVMAnn sym, HasPtrWidth wptr) =>
LLVMOverride p sym args ret -> OverrideTemplate p sym arch rtp l a
basic_llvm_override LLVMOverride
  p sym (EmptyCtx ::> FloatType SingleFloat) (FloatType SingleFloat)
forall sym p.
IsSymInterface sym =>
LLVMOverride
  p sym (EmptyCtx ::> FloatType SingleFloat) (FloatType SingleFloat)
Libc.llvmCosfOverride
  , LLVMOverride
  p sym (EmptyCtx ::> FloatType DoubleFloat) (FloatType DoubleFloat)
-> OverrideTemplate p sym arch rtp l a
forall p (args :: Ctx CrucibleType) (ret :: CrucibleType) sym
       (arch :: LLVMArch) (wptr :: Natural) (l :: Ctx CrucibleType)
       (a :: CrucibleType) rtp.
(IsSymInterface sym, HasLLVMAnn sym, HasPtrWidth wptr) =>
LLVMOverride p sym args ret -> OverrideTemplate p sym arch rtp l a
basic_llvm_override LLVMOverride
  p sym (EmptyCtx ::> FloatType DoubleFloat) (FloatType DoubleFloat)
forall sym p.
IsSymInterface sym =>
LLVMOverride
  p sym (EmptyCtx ::> FloatType DoubleFloat) (FloatType DoubleFloat)
Libc.llvmTanOverride
  , LLVMOverride
  p sym (EmptyCtx ::> FloatType SingleFloat) (FloatType SingleFloat)
-> OverrideTemplate p sym arch rtp l a
forall p (args :: Ctx CrucibleType) (ret :: CrucibleType) sym
       (arch :: LLVMArch) (wptr :: Natural) (l :: Ctx CrucibleType)
       (a :: CrucibleType) rtp.
(IsSymInterface sym, HasLLVMAnn sym, HasPtrWidth wptr) =>
LLVMOverride p sym args ret -> OverrideTemplate p sym arch rtp l a
basic_llvm_override LLVMOverride
  p sym (EmptyCtx ::> FloatType SingleFloat) (FloatType SingleFloat)
forall sym p.
IsSymInterface sym =>
LLVMOverride
  p sym (EmptyCtx ::> FloatType SingleFloat) (FloatType SingleFloat)
Libc.llvmTanfOverride
  , LLVMOverride
  p sym (EmptyCtx ::> FloatType DoubleFloat) (FloatType DoubleFloat)
-> OverrideTemplate p sym arch rtp l a
forall p (args :: Ctx CrucibleType) (ret :: CrucibleType) sym
       (arch :: LLVMArch) (wptr :: Natural) (l :: Ctx CrucibleType)
       (a :: CrucibleType) rtp.
(IsSymInterface sym, HasLLVMAnn sym, HasPtrWidth wptr) =>
LLVMOverride p sym args ret -> OverrideTemplate p sym arch rtp l a
basic_llvm_override LLVMOverride
  p sym (EmptyCtx ::> FloatType DoubleFloat) (FloatType DoubleFloat)
forall sym p.
IsSymInterface sym =>
LLVMOverride
  p sym (EmptyCtx ::> FloatType DoubleFloat) (FloatType DoubleFloat)
Libc.llvmAsinOverride
  , LLVMOverride
  p sym (EmptyCtx ::> FloatType SingleFloat) (FloatType SingleFloat)
-> OverrideTemplate p sym arch rtp l a
forall p (args :: Ctx CrucibleType) (ret :: CrucibleType) sym
       (arch :: LLVMArch) (wptr :: Natural) (l :: Ctx CrucibleType)
       (a :: CrucibleType) rtp.
(IsSymInterface sym, HasLLVMAnn sym, HasPtrWidth wptr) =>
LLVMOverride p sym args ret -> OverrideTemplate p sym arch rtp l a
basic_llvm_override LLVMOverride
  p sym (EmptyCtx ::> FloatType SingleFloat) (FloatType SingleFloat)
forall sym p.
IsSymInterface sym =>
LLVMOverride
  p sym (EmptyCtx ::> FloatType SingleFloat) (FloatType SingleFloat)
Libc.llvmAsinfOverride
  , LLVMOverride
  p sym (EmptyCtx ::> FloatType DoubleFloat) (FloatType DoubleFloat)
-> OverrideTemplate p sym arch rtp l a
forall p (args :: Ctx CrucibleType) (ret :: CrucibleType) sym
       (arch :: LLVMArch) (wptr :: Natural) (l :: Ctx CrucibleType)
       (a :: CrucibleType) rtp.
(IsSymInterface sym, HasLLVMAnn sym, HasPtrWidth wptr) =>
LLVMOverride p sym args ret -> OverrideTemplate p sym arch rtp l a
basic_llvm_override LLVMOverride
  p sym (EmptyCtx ::> FloatType DoubleFloat) (FloatType DoubleFloat)
forall sym p.
IsSymInterface sym =>
LLVMOverride
  p sym (EmptyCtx ::> FloatType DoubleFloat) (FloatType DoubleFloat)
Libc.llvmAcosOverride
  , LLVMOverride
  p sym (EmptyCtx ::> FloatType SingleFloat) (FloatType SingleFloat)
-> OverrideTemplate p sym arch rtp l a
forall p (args :: Ctx CrucibleType) (ret :: CrucibleType) sym
       (arch :: LLVMArch) (wptr :: Natural) (l :: Ctx CrucibleType)
       (a :: CrucibleType) rtp.
(IsSymInterface sym, HasLLVMAnn sym, HasPtrWidth wptr) =>
LLVMOverride p sym args ret -> OverrideTemplate p sym arch rtp l a
basic_llvm_override LLVMOverride
  p sym (EmptyCtx ::> FloatType SingleFloat) (FloatType SingleFloat)
forall sym p.
IsSymInterface sym =>
LLVMOverride
  p sym (EmptyCtx ::> FloatType SingleFloat) (FloatType SingleFloat)
Libc.llvmAcosfOverride
  , LLVMOverride
  p sym (EmptyCtx ::> FloatType DoubleFloat) (FloatType DoubleFloat)
-> OverrideTemplate p sym arch rtp l a
forall p (args :: Ctx CrucibleType) (ret :: CrucibleType) sym
       (arch :: LLVMArch) (wptr :: Natural) (l :: Ctx CrucibleType)
       (a :: CrucibleType) rtp.
(IsSymInterface sym, HasLLVMAnn sym, HasPtrWidth wptr) =>
LLVMOverride p sym args ret -> OverrideTemplate p sym arch rtp l a
basic_llvm_override LLVMOverride
  p sym (EmptyCtx ::> FloatType DoubleFloat) (FloatType DoubleFloat)
forall sym p.
IsSymInterface sym =>
LLVMOverride
  p sym (EmptyCtx ::> FloatType DoubleFloat) (FloatType DoubleFloat)
Libc.llvmAtanOverride
  , LLVMOverride
  p sym (EmptyCtx ::> FloatType SingleFloat) (FloatType SingleFloat)
-> OverrideTemplate p sym arch rtp l a
forall p (args :: Ctx CrucibleType) (ret :: CrucibleType) sym
       (arch :: LLVMArch) (wptr :: Natural) (l :: Ctx CrucibleType)
       (a :: CrucibleType) rtp.
(IsSymInterface sym, HasLLVMAnn sym, HasPtrWidth wptr) =>
LLVMOverride p sym args ret -> OverrideTemplate p sym arch rtp l a
basic_llvm_override LLVMOverride
  p sym (EmptyCtx ::> FloatType SingleFloat) (FloatType SingleFloat)
forall sym p.
IsSymInterface sym =>
LLVMOverride
  p sym (EmptyCtx ::> FloatType SingleFloat) (FloatType SingleFloat)
Libc.llvmAtanfOverride
  , LLVMOverride
  p sym (EmptyCtx ::> FloatType DoubleFloat) (FloatType DoubleFloat)
-> OverrideTemplate p sym arch rtp l a
forall p (args :: Ctx CrucibleType) (ret :: CrucibleType) sym
       (arch :: LLVMArch) (wptr :: Natural) (l :: Ctx CrucibleType)
       (a :: CrucibleType) rtp.
(IsSymInterface sym, HasLLVMAnn sym, HasPtrWidth wptr) =>
LLVMOverride p sym args ret -> OverrideTemplate p sym arch rtp l a
basic_llvm_override LLVMOverride
  p sym (EmptyCtx ::> FloatType DoubleFloat) (FloatType DoubleFloat)
forall sym p.
IsSymInterface sym =>
LLVMOverride
  p sym (EmptyCtx ::> FloatType DoubleFloat) (FloatType DoubleFloat)
Libc.llvmSinhOverride
  , LLVMOverride
  p sym (EmptyCtx ::> FloatType SingleFloat) (FloatType SingleFloat)
-> OverrideTemplate p sym arch rtp l a
forall p (args :: Ctx CrucibleType) (ret :: CrucibleType) sym
       (arch :: LLVMArch) (wptr :: Natural) (l :: Ctx CrucibleType)
       (a :: CrucibleType) rtp.
(IsSymInterface sym, HasLLVMAnn sym, HasPtrWidth wptr) =>
LLVMOverride p sym args ret -> OverrideTemplate p sym arch rtp l a
basic_llvm_override LLVMOverride
  p sym (EmptyCtx ::> FloatType SingleFloat) (FloatType SingleFloat)
forall sym p.
IsSymInterface sym =>
LLVMOverride
  p sym (EmptyCtx ::> FloatType SingleFloat) (FloatType SingleFloat)
Libc.llvmSinhfOverride
  , LLVMOverride
  p sym (EmptyCtx ::> FloatType DoubleFloat) (FloatType DoubleFloat)
-> OverrideTemplate p sym arch rtp l a
forall p (args :: Ctx CrucibleType) (ret :: CrucibleType) sym
       (arch :: LLVMArch) (wptr :: Natural) (l :: Ctx CrucibleType)
       (a :: CrucibleType) rtp.
(IsSymInterface sym, HasLLVMAnn sym, HasPtrWidth wptr) =>
LLVMOverride p sym args ret -> OverrideTemplate p sym arch rtp l a
basic_llvm_override LLVMOverride
  p sym (EmptyCtx ::> FloatType DoubleFloat) (FloatType DoubleFloat)
forall sym p.
IsSymInterface sym =>
LLVMOverride
  p sym (EmptyCtx ::> FloatType DoubleFloat) (FloatType DoubleFloat)
Libc.llvmCoshOverride
  , LLVMOverride
  p sym (EmptyCtx ::> FloatType SingleFloat) (FloatType SingleFloat)
-> OverrideTemplate p sym arch rtp l a
forall p (args :: Ctx CrucibleType) (ret :: CrucibleType) sym
       (arch :: LLVMArch) (wptr :: Natural) (l :: Ctx CrucibleType)
       (a :: CrucibleType) rtp.
(IsSymInterface sym, HasLLVMAnn sym, HasPtrWidth wptr) =>
LLVMOverride p sym args ret -> OverrideTemplate p sym arch rtp l a
basic_llvm_override LLVMOverride
  p sym (EmptyCtx ::> FloatType SingleFloat) (FloatType SingleFloat)
forall sym p.
IsSymInterface sym =>
LLVMOverride
  p sym (EmptyCtx ::> FloatType SingleFloat) (FloatType SingleFloat)
Libc.llvmCoshfOverride
  , LLVMOverride
  p sym (EmptyCtx ::> FloatType DoubleFloat) (FloatType DoubleFloat)
-> OverrideTemplate p sym arch rtp l a
forall p (args :: Ctx CrucibleType) (ret :: CrucibleType) sym
       (arch :: LLVMArch) (wptr :: Natural) (l :: Ctx CrucibleType)
       (a :: CrucibleType) rtp.
(IsSymInterface sym, HasLLVMAnn sym, HasPtrWidth wptr) =>
LLVMOverride p sym args ret -> OverrideTemplate p sym arch rtp l a
basic_llvm_override LLVMOverride
  p sym (EmptyCtx ::> FloatType DoubleFloat) (FloatType DoubleFloat)
forall sym p.
IsSymInterface sym =>
LLVMOverride
  p sym (EmptyCtx ::> FloatType DoubleFloat) (FloatType DoubleFloat)
Libc.llvmTanhOverride
  , LLVMOverride
  p sym (EmptyCtx ::> FloatType SingleFloat) (FloatType SingleFloat)
-> OverrideTemplate p sym arch rtp l a
forall p (args :: Ctx CrucibleType) (ret :: CrucibleType) sym
       (arch :: LLVMArch) (wptr :: Natural) (l :: Ctx CrucibleType)
       (a :: CrucibleType) rtp.
(IsSymInterface sym, HasLLVMAnn sym, HasPtrWidth wptr) =>
LLVMOverride p sym args ret -> OverrideTemplate p sym arch rtp l a
basic_llvm_override LLVMOverride
  p sym (EmptyCtx ::> FloatType SingleFloat) (FloatType SingleFloat)
forall sym p.
IsSymInterface sym =>
LLVMOverride
  p sym (EmptyCtx ::> FloatType SingleFloat) (FloatType SingleFloat)
Libc.llvmTanhfOverride
  , LLVMOverride
  p sym (EmptyCtx ::> FloatType DoubleFloat) (FloatType DoubleFloat)
-> OverrideTemplate p sym arch rtp l a
forall p (args :: Ctx CrucibleType) (ret :: CrucibleType) sym
       (arch :: LLVMArch) (wptr :: Natural) (l :: Ctx CrucibleType)
       (a :: CrucibleType) rtp.
(IsSymInterface sym, HasLLVMAnn sym, HasPtrWidth wptr) =>
LLVMOverride p sym args ret -> OverrideTemplate p sym arch rtp l a
basic_llvm_override LLVMOverride
  p sym (EmptyCtx ::> FloatType DoubleFloat) (FloatType DoubleFloat)
forall sym p.
IsSymInterface sym =>
LLVMOverride
  p sym (EmptyCtx ::> FloatType DoubleFloat) (FloatType DoubleFloat)
Libc.llvmAsinhOverride
  , LLVMOverride
  p sym (EmptyCtx ::> FloatType SingleFloat) (FloatType SingleFloat)
-> OverrideTemplate p sym arch rtp l a
forall p (args :: Ctx CrucibleType) (ret :: CrucibleType) sym
       (arch :: LLVMArch) (wptr :: Natural) (l :: Ctx CrucibleType)
       (a :: CrucibleType) rtp.
(IsSymInterface sym, HasLLVMAnn sym, HasPtrWidth wptr) =>
LLVMOverride p sym args ret -> OverrideTemplate p sym arch rtp l a
basic_llvm_override LLVMOverride
  p sym (EmptyCtx ::> FloatType SingleFloat) (FloatType SingleFloat)
forall sym p.
IsSymInterface sym =>
LLVMOverride
  p sym (EmptyCtx ::> FloatType SingleFloat) (FloatType SingleFloat)
Libc.llvmAsinhfOverride
  , LLVMOverride
  p sym (EmptyCtx ::> FloatType DoubleFloat) (FloatType DoubleFloat)
-> OverrideTemplate p sym arch rtp l a
forall p (args :: Ctx CrucibleType) (ret :: CrucibleType) sym
       (arch :: LLVMArch) (wptr :: Natural) (l :: Ctx CrucibleType)
       (a :: CrucibleType) rtp.
(IsSymInterface sym, HasLLVMAnn sym, HasPtrWidth wptr) =>
LLVMOverride p sym args ret -> OverrideTemplate p sym arch rtp l a
basic_llvm_override LLVMOverride
  p sym (EmptyCtx ::> FloatType DoubleFloat) (FloatType DoubleFloat)
forall sym p.
IsSymInterface sym =>
LLVMOverride
  p sym (EmptyCtx ::> FloatType DoubleFloat) (FloatType DoubleFloat)
Libc.llvmAcoshOverride
  , LLVMOverride
  p sym (EmptyCtx ::> FloatType SingleFloat) (FloatType SingleFloat)
-> OverrideTemplate p sym arch rtp l a
forall p (args :: Ctx CrucibleType) (ret :: CrucibleType) sym
       (arch :: LLVMArch) (wptr :: Natural) (l :: Ctx CrucibleType)
       (a :: CrucibleType) rtp.
(IsSymInterface sym, HasLLVMAnn sym, HasPtrWidth wptr) =>
LLVMOverride p sym args ret -> OverrideTemplate p sym arch rtp l a
basic_llvm_override LLVMOverride
  p sym (EmptyCtx ::> FloatType SingleFloat) (FloatType SingleFloat)
forall sym p.
IsSymInterface sym =>
LLVMOverride
  p sym (EmptyCtx ::> FloatType SingleFloat) (FloatType SingleFloat)
Libc.llvmAcoshfOverride
  , LLVMOverride
  p sym (EmptyCtx ::> FloatType DoubleFloat) (FloatType DoubleFloat)
-> OverrideTemplate p sym arch rtp l a
forall p (args :: Ctx CrucibleType) (ret :: CrucibleType) sym
       (arch :: LLVMArch) (wptr :: Natural) (l :: Ctx CrucibleType)
       (a :: CrucibleType) rtp.
(IsSymInterface sym, HasLLVMAnn sym, HasPtrWidth wptr) =>
LLVMOverride p sym args ret -> OverrideTemplate p sym arch rtp l a
basic_llvm_override LLVMOverride
  p sym (EmptyCtx ::> FloatType DoubleFloat) (FloatType DoubleFloat)
forall sym p.
IsSymInterface sym =>
LLVMOverride
  p sym (EmptyCtx ::> FloatType DoubleFloat) (FloatType DoubleFloat)
Libc.llvmAtanhOverride
  , LLVMOverride
  p sym (EmptyCtx ::> FloatType SingleFloat) (FloatType SingleFloat)
-> OverrideTemplate p sym arch rtp l a
forall p (args :: Ctx CrucibleType) (ret :: CrucibleType) sym
       (arch :: LLVMArch) (wptr :: Natural) (l :: Ctx CrucibleType)
       (a :: CrucibleType) rtp.
(IsSymInterface sym, HasLLVMAnn sym, HasPtrWidth wptr) =>
LLVMOverride p sym args ret -> OverrideTemplate p sym arch rtp l a
basic_llvm_override LLVMOverride
  p sym (EmptyCtx ::> FloatType SingleFloat) (FloatType SingleFloat)
forall sym p.
IsSymInterface sym =>
LLVMOverride
  p sym (EmptyCtx ::> FloatType SingleFloat) (FloatType SingleFloat)
Libc.llvmAtanhfOverride
  , LLVMOverride
  p
  sym
  ((EmptyCtx ::> FloatType DoubleFloat) ::> FloatType DoubleFloat)
  (FloatType DoubleFloat)
-> OverrideTemplate p sym arch rtp l a
forall p (args :: Ctx CrucibleType) (ret :: CrucibleType) sym
       (arch :: LLVMArch) (wptr :: Natural) (l :: Ctx CrucibleType)
       (a :: CrucibleType) rtp.
(IsSymInterface sym, HasLLVMAnn sym, HasPtrWidth wptr) =>
LLVMOverride p sym args ret -> OverrideTemplate p sym arch rtp l a
basic_llvm_override LLVMOverride
  p
  sym
  ((EmptyCtx ::> FloatType DoubleFloat) ::> FloatType DoubleFloat)
  (FloatType DoubleFloat)
forall sym p.
IsSymInterface sym =>
LLVMOverride
  p
  sym
  ((EmptyCtx ::> FloatType DoubleFloat) ::> FloatType DoubleFloat)
  (FloatType DoubleFloat)
Libc.llvmHypotOverride
  , LLVMOverride
  p
  sym
  ((EmptyCtx ::> FloatType SingleFloat) ::> FloatType SingleFloat)
  (FloatType SingleFloat)
-> OverrideTemplate p sym arch rtp l a
forall p (args :: Ctx CrucibleType) (ret :: CrucibleType) sym
       (arch :: LLVMArch) (wptr :: Natural) (l :: Ctx CrucibleType)
       (a :: CrucibleType) rtp.
(IsSymInterface sym, HasLLVMAnn sym, HasPtrWidth wptr) =>
LLVMOverride p sym args ret -> OverrideTemplate p sym arch rtp l a
basic_llvm_override LLVMOverride
  p
  sym
  ((EmptyCtx ::> FloatType SingleFloat) ::> FloatType SingleFloat)
  (FloatType SingleFloat)
forall sym p.
IsSymInterface sym =>
LLVMOverride
  p
  sym
  ((EmptyCtx ::> FloatType SingleFloat) ::> FloatType SingleFloat)
  (FloatType SingleFloat)
Libc.llvmHypotfOverride
  , LLVMOverride
  p
  sym
  ((EmptyCtx ::> FloatType DoubleFloat) ::> FloatType DoubleFloat)
  (FloatType DoubleFloat)
-> OverrideTemplate p sym arch rtp l a
forall p (args :: Ctx CrucibleType) (ret :: CrucibleType) sym
       (arch :: LLVMArch) (wptr :: Natural) (l :: Ctx CrucibleType)
       (a :: CrucibleType) rtp.
(IsSymInterface sym, HasLLVMAnn sym, HasPtrWidth wptr) =>
LLVMOverride p sym args ret -> OverrideTemplate p sym arch rtp l a
basic_llvm_override LLVMOverride
  p
  sym
  ((EmptyCtx ::> FloatType DoubleFloat) ::> FloatType DoubleFloat)
  (FloatType DoubleFloat)
forall sym p.
IsSymInterface sym =>
LLVMOverride
  p
  sym
  ((EmptyCtx ::> FloatType DoubleFloat) ::> FloatType DoubleFloat)
  (FloatType DoubleFloat)
Libc.llvmAtan2Override
  , LLVMOverride
  p
  sym
  ((EmptyCtx ::> FloatType SingleFloat) ::> FloatType SingleFloat)
  (FloatType SingleFloat)
-> OverrideTemplate p sym arch rtp l a
forall p (args :: Ctx CrucibleType) (ret :: CrucibleType) sym
       (arch :: LLVMArch) (wptr :: Natural) (l :: Ctx CrucibleType)
       (a :: CrucibleType) rtp.
(IsSymInterface sym, HasLLVMAnn sym, HasPtrWidth wptr) =>
LLVMOverride p sym args ret -> OverrideTemplate p sym arch rtp l a
basic_llvm_override LLVMOverride
  p
  sym
  ((EmptyCtx ::> FloatType SingleFloat) ::> FloatType SingleFloat)
  (FloatType SingleFloat)
forall sym p.
IsSymInterface sym =>
LLVMOverride
  p
  sym
  ((EmptyCtx ::> FloatType SingleFloat) ::> FloatType SingleFloat)
  (FloatType SingleFloat)
Libc.llvmAtan2fOverride
  , LLVMOverride
  p
  sym
  ((EmptyCtx ::> FloatType SingleFloat) ::> FloatType SingleFloat)
  (FloatType SingleFloat)
-> OverrideTemplate p sym arch rtp l a
forall p (args :: Ctx CrucibleType) (ret :: CrucibleType) sym
       (arch :: LLVMArch) (wptr :: Natural) (l :: Ctx CrucibleType)
       (a :: CrucibleType) rtp.
(IsSymInterface sym, HasLLVMAnn sym, HasPtrWidth wptr) =>
LLVMOverride p sym args ret -> OverrideTemplate p sym arch rtp l a
basic_llvm_override LLVMOverride
  p
  sym
  ((EmptyCtx ::> FloatType SingleFloat) ::> FloatType SingleFloat)
  (FloatType SingleFloat)
forall sym p.
IsSymInterface sym =>
LLVMOverride
  p
  sym
  ((EmptyCtx ::> FloatType SingleFloat) ::> FloatType SingleFloat)
  (FloatType SingleFloat)
Libc.llvmPowfOverride
  , LLVMOverride
  p
  sym
  ((EmptyCtx ::> FloatType DoubleFloat) ::> FloatType DoubleFloat)
  (FloatType DoubleFloat)
-> OverrideTemplate p sym arch rtp l a
forall p (args :: Ctx CrucibleType) (ret :: CrucibleType) sym
       (arch :: LLVMArch) (wptr :: Natural) (l :: Ctx CrucibleType)
       (a :: CrucibleType) rtp.
(IsSymInterface sym, HasLLVMAnn sym, HasPtrWidth wptr) =>
LLVMOverride p sym args ret -> OverrideTemplate p sym arch rtp l a
basic_llvm_override LLVMOverride
  p
  sym
  ((EmptyCtx ::> FloatType DoubleFloat) ::> FloatType DoubleFloat)
  (FloatType DoubleFloat)
forall sym p.
IsSymInterface sym =>
LLVMOverride
  p
  sym
  ((EmptyCtx ::> FloatType DoubleFloat) ::> FloatType DoubleFloat)
  (FloatType DoubleFloat)
Libc.llvmPowOverride
  , LLVMOverride
  p sym (EmptyCtx ::> FloatType DoubleFloat) (FloatType DoubleFloat)
-> OverrideTemplate p sym arch rtp l a
forall p (args :: Ctx CrucibleType) (ret :: CrucibleType) sym
       (arch :: LLVMArch) (wptr :: Natural) (l :: Ctx CrucibleType)
       (a :: CrucibleType) rtp.
(IsSymInterface sym, HasLLVMAnn sym, HasPtrWidth wptr) =>
LLVMOverride p sym args ret -> OverrideTemplate p sym arch rtp l a
basic_llvm_override LLVMOverride
  p sym (EmptyCtx ::> FloatType DoubleFloat) (FloatType DoubleFloat)
forall sym p.
IsSymInterface sym =>
LLVMOverride
  p sym (EmptyCtx ::> FloatType DoubleFloat) (FloatType DoubleFloat)
Libc.llvmExpOverride
  , LLVMOverride
  p sym (EmptyCtx ::> FloatType SingleFloat) (FloatType SingleFloat)
-> OverrideTemplate p sym arch rtp l a
forall p (args :: Ctx CrucibleType) (ret :: CrucibleType) sym
       (arch :: LLVMArch) (wptr :: Natural) (l :: Ctx CrucibleType)
       (a :: CrucibleType) rtp.
(IsSymInterface sym, HasLLVMAnn sym, HasPtrWidth wptr) =>
LLVMOverride p sym args ret -> OverrideTemplate p sym arch rtp l a
basic_llvm_override LLVMOverride
  p sym (EmptyCtx ::> FloatType SingleFloat) (FloatType SingleFloat)
forall sym p.
IsSymInterface sym =>
LLVMOverride
  p sym (EmptyCtx ::> FloatType SingleFloat) (FloatType SingleFloat)
Libc.llvmExpfOverride
  , LLVMOverride
  p sym (EmptyCtx ::> FloatType DoubleFloat) (FloatType DoubleFloat)
-> OverrideTemplate p sym arch rtp l a
forall p (args :: Ctx CrucibleType) (ret :: CrucibleType) sym
       (arch :: LLVMArch) (wptr :: Natural) (l :: Ctx CrucibleType)
       (a :: CrucibleType) rtp.
(IsSymInterface sym, HasLLVMAnn sym, HasPtrWidth wptr) =>
LLVMOverride p sym args ret -> OverrideTemplate p sym arch rtp l a
basic_llvm_override LLVMOverride
  p sym (EmptyCtx ::> FloatType DoubleFloat) (FloatType DoubleFloat)
forall sym p.
IsSymInterface sym =>
LLVMOverride
  p sym (EmptyCtx ::> FloatType DoubleFloat) (FloatType DoubleFloat)
Libc.llvmLogOverride
  , LLVMOverride
  p sym (EmptyCtx ::> FloatType SingleFloat) (FloatType SingleFloat)
-> OverrideTemplate p sym arch rtp l a
forall p (args :: Ctx CrucibleType) (ret :: CrucibleType) sym
       (arch :: LLVMArch) (wptr :: Natural) (l :: Ctx CrucibleType)
       (a :: CrucibleType) rtp.
(IsSymInterface sym, HasLLVMAnn sym, HasPtrWidth wptr) =>
LLVMOverride p sym args ret -> OverrideTemplate p sym arch rtp l a
basic_llvm_override LLVMOverride
  p sym (EmptyCtx ::> FloatType SingleFloat) (FloatType SingleFloat)
forall sym p.
IsSymInterface sym =>
LLVMOverride
  p sym (EmptyCtx ::> FloatType SingleFloat) (FloatType SingleFloat)
Libc.llvmLogfOverride
  , LLVMOverride
  p sym (EmptyCtx ::> FloatType DoubleFloat) (FloatType DoubleFloat)
-> OverrideTemplate p sym arch rtp l a
forall p (args :: Ctx CrucibleType) (ret :: CrucibleType) sym
       (arch :: LLVMArch) (wptr :: Natural) (l :: Ctx CrucibleType)
       (a :: CrucibleType) rtp.
(IsSymInterface sym, HasLLVMAnn sym, HasPtrWidth wptr) =>
LLVMOverride p sym args ret -> OverrideTemplate p sym arch rtp l a
basic_llvm_override LLVMOverride
  p sym (EmptyCtx ::> FloatType DoubleFloat) (FloatType DoubleFloat)
forall sym p.
IsSymInterface sym =>
LLVMOverride
  p sym (EmptyCtx ::> FloatType DoubleFloat) (FloatType DoubleFloat)
Libc.llvmExpm1Override
  , LLVMOverride
  p sym (EmptyCtx ::> FloatType SingleFloat) (FloatType SingleFloat)
-> OverrideTemplate p sym arch rtp l a
forall p (args :: Ctx CrucibleType) (ret :: CrucibleType) sym
       (arch :: LLVMArch) (wptr :: Natural) (l :: Ctx CrucibleType)
       (a :: CrucibleType) rtp.
(IsSymInterface sym, HasLLVMAnn sym, HasPtrWidth wptr) =>
LLVMOverride p sym args ret -> OverrideTemplate p sym arch rtp l a
basic_llvm_override LLVMOverride
  p sym (EmptyCtx ::> FloatType SingleFloat) (FloatType SingleFloat)
forall sym p.
IsSymInterface sym =>
LLVMOverride
  p sym (EmptyCtx ::> FloatType SingleFloat) (FloatType SingleFloat)
Libc.llvmExpm1fOverride
  , LLVMOverride
  p sym (EmptyCtx ::> FloatType DoubleFloat) (FloatType DoubleFloat)
-> OverrideTemplate p sym arch rtp l a
forall p (args :: Ctx CrucibleType) (ret :: CrucibleType) sym
       (arch :: LLVMArch) (wptr :: Natural) (l :: Ctx CrucibleType)
       (a :: CrucibleType) rtp.
(IsSymInterface sym, HasLLVMAnn sym, HasPtrWidth wptr) =>
LLVMOverride p sym args ret -> OverrideTemplate p sym arch rtp l a
basic_llvm_override LLVMOverride
  p sym (EmptyCtx ::> FloatType DoubleFloat) (FloatType DoubleFloat)
forall sym p.
IsSymInterface sym =>
LLVMOverride
  p sym (EmptyCtx ::> FloatType DoubleFloat) (FloatType DoubleFloat)
Libc.llvmLog1pOverride
  , LLVMOverride
  p sym (EmptyCtx ::> FloatType SingleFloat) (FloatType SingleFloat)
-> OverrideTemplate p sym arch rtp l a
forall p (args :: Ctx CrucibleType) (ret :: CrucibleType) sym
       (arch :: LLVMArch) (wptr :: Natural) (l :: Ctx CrucibleType)
       (a :: CrucibleType) rtp.
(IsSymInterface sym, HasLLVMAnn sym, HasPtrWidth wptr) =>
LLVMOverride p sym args ret -> OverrideTemplate p sym arch rtp l a
basic_llvm_override LLVMOverride
  p sym (EmptyCtx ::> FloatType SingleFloat) (FloatType SingleFloat)
forall sym p.
IsSymInterface sym =>
LLVMOverride
  p sym (EmptyCtx ::> FloatType SingleFloat) (FloatType SingleFloat)
Libc.llvmLog1pfOverride
  , LLVMOverride
  p sym (EmptyCtx ::> FloatType DoubleFloat) (FloatType DoubleFloat)
-> OverrideTemplate p sym arch rtp l a
forall p (args :: Ctx CrucibleType) (ret :: CrucibleType) sym
       (arch :: LLVMArch) (wptr :: Natural) (l :: Ctx CrucibleType)
       (a :: CrucibleType) rtp.
(IsSymInterface sym, HasLLVMAnn sym, HasPtrWidth wptr) =>
LLVMOverride p sym args ret -> OverrideTemplate p sym arch rtp l a
basic_llvm_override LLVMOverride
  p sym (EmptyCtx ::> FloatType DoubleFloat) (FloatType DoubleFloat)
forall sym p.
IsSymInterface sym =>
LLVMOverride
  p sym (EmptyCtx ::> FloatType DoubleFloat) (FloatType DoubleFloat)
Libc.llvmExp2Override
  , LLVMOverride
  p sym (EmptyCtx ::> FloatType SingleFloat) (FloatType SingleFloat)
-> OverrideTemplate p sym arch rtp l a
forall p (args :: Ctx CrucibleType) (ret :: CrucibleType) sym
       (arch :: LLVMArch) (wptr :: Natural) (l :: Ctx CrucibleType)
       (a :: CrucibleType) rtp.
(IsSymInterface sym, HasLLVMAnn sym, HasPtrWidth wptr) =>
LLVMOverride p sym args ret -> OverrideTemplate p sym arch rtp l a
basic_llvm_override LLVMOverride
  p sym (EmptyCtx ::> FloatType SingleFloat) (FloatType SingleFloat)
forall sym p.
IsSymInterface sym =>
LLVMOverride
  p sym (EmptyCtx ::> FloatType SingleFloat) (FloatType SingleFloat)
Libc.llvmExp2fOverride
  , LLVMOverride
  p sym (EmptyCtx ::> FloatType DoubleFloat) (FloatType DoubleFloat)
-> OverrideTemplate p sym arch rtp l a
forall p (args :: Ctx CrucibleType) (ret :: CrucibleType) sym
       (arch :: LLVMArch) (wptr :: Natural) (l :: Ctx CrucibleType)
       (a :: CrucibleType) rtp.
(IsSymInterface sym, HasLLVMAnn sym, HasPtrWidth wptr) =>
LLVMOverride p sym args ret -> OverrideTemplate p sym arch rtp l a
basic_llvm_override LLVMOverride
  p sym (EmptyCtx ::> FloatType DoubleFloat) (FloatType DoubleFloat)
forall sym p.
IsSymInterface sym =>
LLVMOverride
  p sym (EmptyCtx ::> FloatType DoubleFloat) (FloatType DoubleFloat)
Libc.llvmLog2Override
  , LLVMOverride
  p sym (EmptyCtx ::> FloatType SingleFloat) (FloatType SingleFloat)
-> OverrideTemplate p sym arch rtp l a
forall p (args :: Ctx CrucibleType) (ret :: CrucibleType) sym
       (arch :: LLVMArch) (wptr :: Natural) (l :: Ctx CrucibleType)
       (a :: CrucibleType) rtp.
(IsSymInterface sym, HasLLVMAnn sym, HasPtrWidth wptr) =>
LLVMOverride p sym args ret -> OverrideTemplate p sym arch rtp l a
basic_llvm_override LLVMOverride
  p sym (EmptyCtx ::> FloatType SingleFloat) (FloatType SingleFloat)
forall sym p.
IsSymInterface sym =>
LLVMOverride
  p sym (EmptyCtx ::> FloatType SingleFloat) (FloatType SingleFloat)
Libc.llvmLog2fOverride
  , LLVMOverride
  p sym (EmptyCtx ::> FloatType DoubleFloat) (FloatType DoubleFloat)
-> OverrideTemplate p sym arch rtp l a
forall p (args :: Ctx CrucibleType) (ret :: CrucibleType) sym
       (arch :: LLVMArch) (wptr :: Natural) (l :: Ctx CrucibleType)
       (a :: CrucibleType) rtp.
(IsSymInterface sym, HasLLVMAnn sym, HasPtrWidth wptr) =>
LLVMOverride p sym args ret -> OverrideTemplate p sym arch rtp l a
basic_llvm_override LLVMOverride
  p sym (EmptyCtx ::> FloatType DoubleFloat) (FloatType DoubleFloat)
forall sym p.
IsSymInterface sym =>
LLVMOverride
  p sym (EmptyCtx ::> FloatType DoubleFloat) (FloatType DoubleFloat)
Libc.llvmExp10Override
  , LLVMOverride
  p sym (EmptyCtx ::> FloatType SingleFloat) (FloatType SingleFloat)
-> OverrideTemplate p sym arch rtp l a
forall p (args :: Ctx CrucibleType) (ret :: CrucibleType) sym
       (arch :: LLVMArch) (wptr :: Natural) (l :: Ctx CrucibleType)
       (a :: CrucibleType) rtp.
(IsSymInterface sym, HasLLVMAnn sym, HasPtrWidth wptr) =>
LLVMOverride p sym args ret -> OverrideTemplate p sym arch rtp l a
basic_llvm_override LLVMOverride
  p sym (EmptyCtx ::> FloatType SingleFloat) (FloatType SingleFloat)
forall sym p.
IsSymInterface sym =>
LLVMOverride
  p sym (EmptyCtx ::> FloatType SingleFloat) (FloatType SingleFloat)
Libc.llvmExp10fOverride
  , LLVMOverride
  p sym (EmptyCtx ::> FloatType DoubleFloat) (FloatType DoubleFloat)
-> OverrideTemplate p sym arch rtp l a
forall p (args :: Ctx CrucibleType) (ret :: CrucibleType) sym
       (arch :: LLVMArch) (wptr :: Natural) (l :: Ctx CrucibleType)
       (a :: CrucibleType) rtp.
(IsSymInterface sym, HasLLVMAnn sym, HasPtrWidth wptr) =>
LLVMOverride p sym args ret -> OverrideTemplate p sym arch rtp l a
basic_llvm_override LLVMOverride
  p sym (EmptyCtx ::> FloatType DoubleFloat) (FloatType DoubleFloat)
forall sym p.
IsSymInterface sym =>
LLVMOverride
  p sym (EmptyCtx ::> FloatType DoubleFloat) (FloatType DoubleFloat)
Libc.llvmLog10Override
  , LLVMOverride
  p sym (EmptyCtx ::> FloatType SingleFloat) (FloatType SingleFloat)
-> OverrideTemplate p sym arch rtp l a
forall p (args :: Ctx CrucibleType) (ret :: CrucibleType) sym
       (arch :: LLVMArch) (wptr :: Natural) (l :: Ctx CrucibleType)
       (a :: CrucibleType) rtp.
(IsSymInterface sym, HasLLVMAnn sym, HasPtrWidth wptr) =>
LLVMOverride p sym args ret -> OverrideTemplate p sym arch rtp l a
basic_llvm_override LLVMOverride
  p sym (EmptyCtx ::> FloatType SingleFloat) (FloatType SingleFloat)
forall sym p.
IsSymInterface sym =>
LLVMOverride
  p sym (EmptyCtx ::> FloatType SingleFloat) (FloatType SingleFloat)
Libc.llvmLog10fOverride

  , LLVMOverride
  p
  sym
  (((EmptyCtx ::> LLVMPointerType wptr) ::> LLVMPointerType wptr)
   ::> LLVMPointerType wptr)
  (BVType 32)
-> OverrideTemplate p sym arch rtp l a
forall p (args :: Ctx CrucibleType) (ret :: CrucibleType) sym
       (arch :: LLVMArch) (wptr :: Natural) (l :: Ctx CrucibleType)
       (a :: CrucibleType) rtp.
(IsSymInterface sym, HasLLVMAnn sym, HasPtrWidth wptr) =>
LLVMOverride p sym args ret -> OverrideTemplate p sym arch rtp l a
basic_llvm_override LLVMOverride
  p
  sym
  (((EmptyCtx ::> LLVMPointerType wptr) ::> LLVMPointerType wptr)
   ::> LLVMPointerType wptr)
  (BVType 32)
forall sym (wptr :: Natural) p.
(IsSymInterface sym, HasPtrWidth wptr) =>
LLVMOverride
  p
  sym
  (((EmptyCtx ::> LLVMPointerType wptr) ::> LLVMPointerType wptr)
   ::> LLVMPointerType wptr)
  (BVType 32)
Libc.cxa_atexitOverride
  , LLVMOverride
  p
  sym
  (((EmptyCtx ::> LLVMPointerType wptr) ::> BVType wptr)
   ::> BVType wptr)
  (BVType 32)
-> OverrideTemplate p sym arch rtp l a
forall p (args :: Ctx CrucibleType) (ret :: CrucibleType) sym
       (arch :: LLVMArch) (wptr :: Natural) (l :: Ctx CrucibleType)
       (a :: CrucibleType) rtp.
(IsSymInterface sym, HasLLVMAnn sym, HasPtrWidth wptr) =>
LLVMOverride p sym args ret -> OverrideTemplate p sym arch rtp l a
basic_llvm_override LLVMOverride
  p
  sym
  (((EmptyCtx ::> LLVMPointerType wptr) ::> BVType wptr)
   ::> BVType wptr)
  (BVType 32)
forall sym (wptr :: Natural) p.
(IsSymInterface sym, HasLLVMAnn sym, HasPtrWidth wptr,
 ?lc::TypeContext, ?memOpts::MemOptions) =>
LLVMOverride
  p
  sym
  (((EmptyCtx ::> LLVMPointerType wptr) ::> BVType wptr)
   ::> BVType wptr)
  (BVType 32)
Libc.posixMemalignOverride

  -- C++ standard library functions
  , SomeCPPOverride p sym arch -> OverrideTemplate p sym arch rtp l a
forall sym (wptr :: Natural) p (arch :: LLVMArch) rtp
       (l :: Ctx CrucibleType) (a :: CrucibleType).
(IsSymInterface sym, HasLLVMAnn sym, HasPtrWidth wptr) =>
SomeCPPOverride p sym arch -> OverrideTemplate p sym arch rtp l a
Libcxx.register_cpp_override SomeCPPOverride p sym arch
forall sym (wptr :: Natural) (arch :: LLVMArch) p.
(IsSymInterface sym, HasPtrWidth wptr, wptr ~ ArchWidth arch) =>
SomeCPPOverride p sym arch
Libcxx.endlOverride

  -- Some architecture-dependent intrinsics
  , LLVMOverride
  p
  sym
  ((EmptyCtx ::> LLVMPointerType wptr) ::> VectorType (BVType 8))
  UnitType
-> OverrideTemplate p sym arch rtp l a
forall p (args :: Ctx CrucibleType) (ret :: CrucibleType) sym
       (arch :: LLVMArch) (wptr :: Natural) (l :: Ctx CrucibleType)
       (a :: CrucibleType) rtp.
(IsSymInterface sym, HasLLVMAnn sym, HasPtrWidth wptr) =>
LLVMOverride p sym args ret -> OverrideTemplate p sym arch rtp l a
basic_llvm_override LLVMOverride
  p
  sym
  ((EmptyCtx ::> LLVMPointerType wptr) ::> VectorType (BVType 8))
  UnitType
forall sym (wptr :: Natural) p.
(IsSymInterface sym, HasLLVMAnn sym, HasPtrWidth wptr,
 ?memOpts::MemOptions) =>
LLVMOverride
  p
  sym
  ((EmptyCtx ::> LLVMPointerType wptr) ::> VectorType (BVType 8))
  UnitType
LLVM.llvmX86_SSE2_storeu_dq
  , LLVMOverride
  p
  sym
  (((EmptyCtx ::> VectorType (BVType 64)) ::> VectorType (BVType 64))
   ::> BVType 8)
  (VectorType (BVType 64))
-> OverrideTemplate p sym arch rtp l a
forall p (args :: Ctx CrucibleType) (ret :: CrucibleType) sym
       (arch :: LLVMArch) (wptr :: Natural) (l :: Ctx CrucibleType)
       (a :: CrucibleType) rtp.
(IsSymInterface sym, HasLLVMAnn sym, HasPtrWidth wptr) =>
LLVMOverride p sym args ret -> OverrideTemplate p sym arch rtp l a
basic_llvm_override LLVMOverride
  p
  sym
  (((EmptyCtx ::> VectorType (BVType 64)) ::> VectorType (BVType 64))
   ::> BVType 8)
  (VectorType (BVType 64))
forall sym (wptr :: Natural) p.
(IsSymInterface sym, HasPtrWidth wptr) =>
LLVMOverride
  p
  sym
  (((EmptyCtx ::> VectorType (BVType 64)) ::> VectorType (BVType 64))
   ::> BVType 8)
  (VectorType (BVType 64))
LLVM.llvmX86_pclmulqdq
  ]


-- | Register those overrides that should apply even when the corresponding
-- function has a definition
define_overrides ::
  (IsSymInterface sym, HasLLVMAnn sym, HasPtrWidth wptr, wptr ~ ArchWidth arch, ?lc :: TypeContext) =>
  [OverrideTemplate p sym arch rtp l a]
define_overrides :: forall sym (wptr :: Natural) (arch :: LLVMArch) p rtp
       (l :: Ctx CrucibleType) (a :: CrucibleType).
(IsSymInterface sym, HasLLVMAnn sym, HasPtrWidth wptr,
 wptr ~ ArchWidth arch, ?lc::TypeContext) =>
[OverrideTemplate p sym arch rtp l a]
define_overrides =
  [ SomeCPPOverride p sym arch -> OverrideTemplate p sym arch rtp l a
forall sym (wptr :: Natural) p (arch :: LLVMArch) rtp
       (l :: Ctx CrucibleType) (a :: CrucibleType).
(IsSymInterface sym, HasLLVMAnn sym, HasPtrWidth wptr) =>
SomeCPPOverride p sym arch -> OverrideTemplate p sym arch rtp l a
Libcxx.register_cpp_override SomeCPPOverride p sym arch
forall sym (wptr :: Natural) (arch :: LLVMArch) p.
(IsSymInterface sym, HasPtrWidth wptr, wptr ~ ArchWidth arch) =>
SomeCPPOverride p sym arch
Libcxx.putToOverride12
  , SomeCPPOverride p sym arch -> OverrideTemplate p sym arch rtp l a
forall sym (wptr :: Natural) p (arch :: LLVMArch) rtp
       (l :: Ctx CrucibleType) (a :: CrucibleType).
(IsSymInterface sym, HasLLVMAnn sym, HasPtrWidth wptr) =>
SomeCPPOverride p sym arch -> OverrideTemplate p sym arch rtp l a
Libcxx.register_cpp_override SomeCPPOverride p sym arch
forall sym (wptr :: Natural) (arch :: LLVMArch) p.
(IsSymInterface sym, HasPtrWidth wptr, wptr ~ ArchWidth arch) =>
SomeCPPOverride p sym arch
Libcxx.putToOverride9
  , SomeCPPOverride p sym arch -> OverrideTemplate p sym arch rtp l a
forall sym (wptr :: Natural) p (arch :: LLVMArch) rtp
       (l :: Ctx CrucibleType) (a :: CrucibleType).
(IsSymInterface sym, HasLLVMAnn sym, HasPtrWidth wptr) =>
SomeCPPOverride p sym arch -> OverrideTemplate p sym arch rtp l a
Libcxx.register_cpp_override SomeCPPOverride p sym arch
forall sym (wptr :: Natural) (arch :: LLVMArch) p.
(IsSymInterface sym, HasPtrWidth wptr, wptr ~ ArchWidth arch) =>
SomeCPPOverride p sym arch
Libcxx.endlOverride
  , SomeCPPOverride p sym arch -> OverrideTemplate p sym arch rtp l a
forall sym (wptr :: Natural) p (arch :: LLVMArch) rtp
       (l :: Ctx CrucibleType) (a :: CrucibleType).
(IsSymInterface sym, HasLLVMAnn sym, HasPtrWidth wptr) =>
SomeCPPOverride p sym arch -> OverrideTemplate p sym arch rtp l a
Libcxx.register_cpp_override SomeCPPOverride p sym arch
forall sym (wptr :: Natural) (arch :: LLVMArch) p.
(IsSymInterface sym, HasPtrWidth wptr, wptr ~ ArchWidth arch) =>
SomeCPPOverride p sym arch
Libcxx.sentryOverride
  , SomeCPPOverride p sym arch -> OverrideTemplate p sym arch rtp l a
forall sym (wptr :: Natural) p (arch :: LLVMArch) rtp
       (l :: Ctx CrucibleType) (a :: CrucibleType).
(IsSymInterface sym, HasLLVMAnn sym, HasPtrWidth wptr) =>
SomeCPPOverride p sym arch -> OverrideTemplate p sym arch rtp l a
Libcxx.register_cpp_override SomeCPPOverride p sym arch
forall sym (wptr :: Natural) (arch :: LLVMArch) p.
(IsSymInterface sym, HasPtrWidth wptr, wptr ~ ArchWidth arch) =>
SomeCPPOverride p sym arch
Libcxx.sentryBoolOverride
  ]

{-
Note [Overrides involving (unsigned) long]
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
Registering overrides for functions with `long` argument or result types is
tricky, as the size of a `long` varies wildly between different operating
systems and architectures. On Linux and macOS, `long` is 32 or 64 bits on
32- or 64-bit architectures, respectively. On Windows, however, `long` is
always 32 bits, regardless of architecture. There is a similar story for the
`unsigned long` type as well.

To ensure that overrides for functions involving `long` are (at least to some
degree) portable, we register each override for `long`-using function twice:
once where `long` is assumed to be 32 bits, and once again where `long` is
assumed to be 64 bits. This is a somewhat heavy-handed solution, but it avoids
the need to predict what size `long` will be on a given target ahead of time.
-}