{-# LANGUAGE DeriveAnyClass #-}
{-# LANGUAGE DeriveGeneric #-}

module Llama.Internal.Types.Params
  ( LlamaSamplerChainParams (..)
  , LlamaContextParams (..)
  , LlamaModelParams (..)
  , LlamaModelQuantizeParams (..)
  , GgmlType (..)
  , LlamaRopeTypeScaling (..)
  , LlamaPoolingType (..)
  , LlamaAttentionType (..)
  , LlamaSplitMode (..)
  , CLlamaContextParams (..)
  , CLlamaModelParams (..)
  , CLlamaSamplerChainParams (..)
  , CLlamaModelQuantizeParams (..)
  , SamplerChainParamsPtr (..)
  , ModelQuantizeParamsPtr (..)
  , ContextParamsPtr (..)
  , ModelParamsPtr (..)
  , LlamaVocabType (..)
  , fromLlamaRopePoolingType
  , fromLlamaRopeTypeScaling
  , fromLlamaRopeVocabType 
  ) where

import Foreign
import Foreign.C.Types
import Foreign.Storable.Generic
import GHC.Generics

-- | Raw pointer to llama_sampler_chain_params
newtype CLlamaSamplerChainParams = CLlamaSamplerChainParams (Ptr LlamaSamplerChainParams)
  deriving (Int -> CLlamaSamplerChainParams -> ShowS
[CLlamaSamplerChainParams] -> ShowS
CLlamaSamplerChainParams -> String
(Int -> CLlamaSamplerChainParams -> ShowS)
-> (CLlamaSamplerChainParams -> String)
-> ([CLlamaSamplerChainParams] -> ShowS)
-> Show CLlamaSamplerChainParams
forall a.
(Int -> a -> ShowS) -> (a -> String) -> ([a] -> ShowS) -> Show a
$cshowsPrec :: Int -> CLlamaSamplerChainParams -> ShowS
showsPrec :: Int -> CLlamaSamplerChainParams -> ShowS
$cshow :: CLlamaSamplerChainParams -> String
show :: CLlamaSamplerChainParams -> String
$cshowList :: [CLlamaSamplerChainParams] -> ShowS
showList :: [CLlamaSamplerChainParams] -> ShowS
Show, CLlamaSamplerChainParams -> CLlamaSamplerChainParams -> Bool
(CLlamaSamplerChainParams -> CLlamaSamplerChainParams -> Bool)
-> (CLlamaSamplerChainParams -> CLlamaSamplerChainParams -> Bool)
-> Eq CLlamaSamplerChainParams
forall a. (a -> a -> Bool) -> (a -> a -> Bool) -> Eq a
$c== :: CLlamaSamplerChainParams -> CLlamaSamplerChainParams -> Bool
== :: CLlamaSamplerChainParams -> CLlamaSamplerChainParams -> Bool
$c/= :: CLlamaSamplerChainParams -> CLlamaSamplerChainParams -> Bool
/= :: CLlamaSamplerChainParams -> CLlamaSamplerChainParams -> Bool
Eq)

-- | Raw pointer to llama_model_quantize_params
newtype CLlamaModelQuantizeParams = CLlamaModelQuantizeParams (Ptr LlamaModelQuantizeParams)
  deriving (Int -> CLlamaModelQuantizeParams -> ShowS
[CLlamaModelQuantizeParams] -> ShowS
CLlamaModelQuantizeParams -> String
(Int -> CLlamaModelQuantizeParams -> ShowS)
-> (CLlamaModelQuantizeParams -> String)
-> ([CLlamaModelQuantizeParams] -> ShowS)
-> Show CLlamaModelQuantizeParams
forall a.
(Int -> a -> ShowS) -> (a -> String) -> ([a] -> ShowS) -> Show a
$cshowsPrec :: Int -> CLlamaModelQuantizeParams -> ShowS
showsPrec :: Int -> CLlamaModelQuantizeParams -> ShowS
$cshow :: CLlamaModelQuantizeParams -> String
show :: CLlamaModelQuantizeParams -> String
$cshowList :: [CLlamaModelQuantizeParams] -> ShowS
showList :: [CLlamaModelQuantizeParams] -> ShowS
Show, CLlamaModelQuantizeParams -> CLlamaModelQuantizeParams -> Bool
(CLlamaModelQuantizeParams -> CLlamaModelQuantizeParams -> Bool)
-> (CLlamaModelQuantizeParams -> CLlamaModelQuantizeParams -> Bool)
-> Eq CLlamaModelQuantizeParams
forall a. (a -> a -> Bool) -> (a -> a -> Bool) -> Eq a
$c== :: CLlamaModelQuantizeParams -> CLlamaModelQuantizeParams -> Bool
== :: CLlamaModelQuantizeParams -> CLlamaModelQuantizeParams -> Bool
$c/= :: CLlamaModelQuantizeParams -> CLlamaModelQuantizeParams -> Bool
/= :: CLlamaModelQuantizeParams -> CLlamaModelQuantizeParams -> Bool
Eq)

-- | Raw pointer to llama_context_params
newtype CLlamaContextParams = CLlamaContextParams (Ptr LlamaContextParams)
  deriving (Int -> CLlamaContextParams -> ShowS
[CLlamaContextParams] -> ShowS
CLlamaContextParams -> String
(Int -> CLlamaContextParams -> ShowS)
-> (CLlamaContextParams -> String)
-> ([CLlamaContextParams] -> ShowS)
-> Show CLlamaContextParams
forall a.
(Int -> a -> ShowS) -> (a -> String) -> ([a] -> ShowS) -> Show a
$cshowsPrec :: Int -> CLlamaContextParams -> ShowS
showsPrec :: Int -> CLlamaContextParams -> ShowS
$cshow :: CLlamaContextParams -> String
show :: CLlamaContextParams -> String
$cshowList :: [CLlamaContextParams] -> ShowS
showList :: [CLlamaContextParams] -> ShowS
Show, CLlamaContextParams -> CLlamaContextParams -> Bool
(CLlamaContextParams -> CLlamaContextParams -> Bool)
-> (CLlamaContextParams -> CLlamaContextParams -> Bool)
-> Eq CLlamaContextParams
forall a. (a -> a -> Bool) -> (a -> a -> Bool) -> Eq a
$c== :: CLlamaContextParams -> CLlamaContextParams -> Bool
== :: CLlamaContextParams -> CLlamaContextParams -> Bool
$c/= :: CLlamaContextParams -> CLlamaContextParams -> Bool
/= :: CLlamaContextParams -> CLlamaContextParams -> Bool
Eq)

-- | Raw pointer to llama_model_params
newtype CLlamaModelParams = CLlamaModelParams (Ptr LlamaModelParams)
  deriving (Int -> CLlamaModelParams -> ShowS
[CLlamaModelParams] -> ShowS
CLlamaModelParams -> String
(Int -> CLlamaModelParams -> ShowS)
-> (CLlamaModelParams -> String)
-> ([CLlamaModelParams] -> ShowS)
-> Show CLlamaModelParams
forall a.
(Int -> a -> ShowS) -> (a -> String) -> ([a] -> ShowS) -> Show a
$cshowsPrec :: Int -> CLlamaModelParams -> ShowS
showsPrec :: Int -> CLlamaModelParams -> ShowS
$cshow :: CLlamaModelParams -> String
show :: CLlamaModelParams -> String
$cshowList :: [CLlamaModelParams] -> ShowS
showList :: [CLlamaModelParams] -> ShowS
Show, CLlamaModelParams -> CLlamaModelParams -> Bool
(CLlamaModelParams -> CLlamaModelParams -> Bool)
-> (CLlamaModelParams -> CLlamaModelParams -> Bool)
-> Eq CLlamaModelParams
forall a. (a -> a -> Bool) -> (a -> a -> Bool) -> Eq a
$c== :: CLlamaModelParams -> CLlamaModelParams -> Bool
== :: CLlamaModelParams -> CLlamaModelParams -> Bool
$c/= :: CLlamaModelParams -> CLlamaModelParams -> Bool
/= :: CLlamaModelParams -> CLlamaModelParams -> Bool
Eq)

-- | Safe wrapper for managed 'llama_sampler_chain_params'
newtype SamplerChainParamsPtr = SamplerChainParamsPtr (ForeignPtr CLlamaSamplerChainParams)
  deriving (Int -> SamplerChainParamsPtr -> ShowS
[SamplerChainParamsPtr] -> ShowS
SamplerChainParamsPtr -> String
(Int -> SamplerChainParamsPtr -> ShowS)
-> (SamplerChainParamsPtr -> String)
-> ([SamplerChainParamsPtr] -> ShowS)
-> Show SamplerChainParamsPtr
forall a.
(Int -> a -> ShowS) -> (a -> String) -> ([a] -> ShowS) -> Show a
$cshowsPrec :: Int -> SamplerChainParamsPtr -> ShowS
showsPrec :: Int -> SamplerChainParamsPtr -> ShowS
$cshow :: SamplerChainParamsPtr -> String
show :: SamplerChainParamsPtr -> String
$cshowList :: [SamplerChainParamsPtr] -> ShowS
showList :: [SamplerChainParamsPtr] -> ShowS
Show, SamplerChainParamsPtr -> SamplerChainParamsPtr -> Bool
(SamplerChainParamsPtr -> SamplerChainParamsPtr -> Bool)
-> (SamplerChainParamsPtr -> SamplerChainParamsPtr -> Bool)
-> Eq SamplerChainParamsPtr
forall a. (a -> a -> Bool) -> (a -> a -> Bool) -> Eq a
$c== :: SamplerChainParamsPtr -> SamplerChainParamsPtr -> Bool
== :: SamplerChainParamsPtr -> SamplerChainParamsPtr -> Bool
$c/= :: SamplerChainParamsPtr -> SamplerChainParamsPtr -> Bool
/= :: SamplerChainParamsPtr -> SamplerChainParamsPtr -> Bool
Eq)

-- | Safe wrapper for managed 'llama_model_quantize_params'
newtype ModelQuantizeParamsPtr = ModelQuantizeParamsPtr (ForeignPtr CLlamaModelQuantizeParams)
  deriving (Int -> ModelQuantizeParamsPtr -> ShowS
[ModelQuantizeParamsPtr] -> ShowS
ModelQuantizeParamsPtr -> String
(Int -> ModelQuantizeParamsPtr -> ShowS)
-> (ModelQuantizeParamsPtr -> String)
-> ([ModelQuantizeParamsPtr] -> ShowS)
-> Show ModelQuantizeParamsPtr
forall a.
(Int -> a -> ShowS) -> (a -> String) -> ([a] -> ShowS) -> Show a
$cshowsPrec :: Int -> ModelQuantizeParamsPtr -> ShowS
showsPrec :: Int -> ModelQuantizeParamsPtr -> ShowS
$cshow :: ModelQuantizeParamsPtr -> String
show :: ModelQuantizeParamsPtr -> String
$cshowList :: [ModelQuantizeParamsPtr] -> ShowS
showList :: [ModelQuantizeParamsPtr] -> ShowS
Show, ModelQuantizeParamsPtr -> ModelQuantizeParamsPtr -> Bool
(ModelQuantizeParamsPtr -> ModelQuantizeParamsPtr -> Bool)
-> (ModelQuantizeParamsPtr -> ModelQuantizeParamsPtr -> Bool)
-> Eq ModelQuantizeParamsPtr
forall a. (a -> a -> Bool) -> (a -> a -> Bool) -> Eq a
$c== :: ModelQuantizeParamsPtr -> ModelQuantizeParamsPtr -> Bool
== :: ModelQuantizeParamsPtr -> ModelQuantizeParamsPtr -> Bool
$c/= :: ModelQuantizeParamsPtr -> ModelQuantizeParamsPtr -> Bool
/= :: ModelQuantizeParamsPtr -> ModelQuantizeParamsPtr -> Bool
Eq)

-- | Safe wrapper for managed 'llama_context_params'
newtype ContextParamsPtr = ContextParamsPtr (ForeignPtr CLlamaContextParams)
  deriving (Int -> ContextParamsPtr -> ShowS
[ContextParamsPtr] -> ShowS
ContextParamsPtr -> String
(Int -> ContextParamsPtr -> ShowS)
-> (ContextParamsPtr -> String)
-> ([ContextParamsPtr] -> ShowS)
-> Show ContextParamsPtr
forall a.
(Int -> a -> ShowS) -> (a -> String) -> ([a] -> ShowS) -> Show a
$cshowsPrec :: Int -> ContextParamsPtr -> ShowS
showsPrec :: Int -> ContextParamsPtr -> ShowS
$cshow :: ContextParamsPtr -> String
show :: ContextParamsPtr -> String
$cshowList :: [ContextParamsPtr] -> ShowS
showList :: [ContextParamsPtr] -> ShowS
Show, ContextParamsPtr -> ContextParamsPtr -> Bool
(ContextParamsPtr -> ContextParamsPtr -> Bool)
-> (ContextParamsPtr -> ContextParamsPtr -> Bool)
-> Eq ContextParamsPtr
forall a. (a -> a -> Bool) -> (a -> a -> Bool) -> Eq a
$c== :: ContextParamsPtr -> ContextParamsPtr -> Bool
== :: ContextParamsPtr -> ContextParamsPtr -> Bool
$c/= :: ContextParamsPtr -> ContextParamsPtr -> Bool
/= :: ContextParamsPtr -> ContextParamsPtr -> Bool
Eq)

-- | Safe wrapper for managed 'llama_model_params'
newtype ModelParamsPtr = ModelParamsPtr (ForeignPtr CLlamaModelParams)
  deriving (Int -> ModelParamsPtr -> ShowS
[ModelParamsPtr] -> ShowS
ModelParamsPtr -> String
(Int -> ModelParamsPtr -> ShowS)
-> (ModelParamsPtr -> String)
-> ([ModelParamsPtr] -> ShowS)
-> Show ModelParamsPtr
forall a.
(Int -> a -> ShowS) -> (a -> String) -> ([a] -> ShowS) -> Show a
$cshowsPrec :: Int -> ModelParamsPtr -> ShowS
showsPrec :: Int -> ModelParamsPtr -> ShowS
$cshow :: ModelParamsPtr -> String
show :: ModelParamsPtr -> String
$cshowList :: [ModelParamsPtr] -> ShowS
showList :: [ModelParamsPtr] -> ShowS
Show, ModelParamsPtr -> ModelParamsPtr -> Bool
(ModelParamsPtr -> ModelParamsPtr -> Bool)
-> (ModelParamsPtr -> ModelParamsPtr -> Bool) -> Eq ModelParamsPtr
forall a. (a -> a -> Bool) -> (a -> a -> Bool) -> Eq a
$c== :: ModelParamsPtr -> ModelParamsPtr -> Bool
== :: ModelParamsPtr -> ModelParamsPtr -> Bool
$c/= :: ModelParamsPtr -> ModelParamsPtr -> Bool
/= :: ModelParamsPtr -> ModelParamsPtr -> Bool
Eq)

-- Forward declarations for opaque C structs
data GgmlBackendDevT
data LlamaModelTensorBuftOverride
data LlamaModelKvOverride

-- Enum for llama_split_mode (assumed to be a 32-bit integer)
newtype LlamaSplitMode = LlamaSplitMode Int32
  deriving (LlamaSplitMode -> LlamaSplitMode -> Bool
(LlamaSplitMode -> LlamaSplitMode -> Bool)
-> (LlamaSplitMode -> LlamaSplitMode -> Bool) -> Eq LlamaSplitMode
forall a. (a -> a -> Bool) -> (a -> a -> Bool) -> Eq a
$c== :: LlamaSplitMode -> LlamaSplitMode -> Bool
== :: LlamaSplitMode -> LlamaSplitMode -> Bool
$c/= :: LlamaSplitMode -> LlamaSplitMode -> Bool
/= :: LlamaSplitMode -> LlamaSplitMode -> Bool
Eq, Int -> LlamaSplitMode -> ShowS
[LlamaSplitMode] -> ShowS
LlamaSplitMode -> String
(Int -> LlamaSplitMode -> ShowS)
-> (LlamaSplitMode -> String)
-> ([LlamaSplitMode] -> ShowS)
-> Show LlamaSplitMode
forall a.
(Int -> a -> ShowS) -> (a -> String) -> ([a] -> ShowS) -> Show a
$cshowsPrec :: Int -> LlamaSplitMode -> ShowS
showsPrec :: Int -> LlamaSplitMode -> ShowS
$cshow :: LlamaSplitMode -> String
show :: LlamaSplitMode -> String
$cshowList :: [LlamaSplitMode] -> ShowS
showList :: [LlamaSplitMode] -> ShowS
Show, ReadPrec [LlamaSplitMode]
ReadPrec LlamaSplitMode
Int -> ReadS LlamaSplitMode
ReadS [LlamaSplitMode]
(Int -> ReadS LlamaSplitMode)
-> ReadS [LlamaSplitMode]
-> ReadPrec LlamaSplitMode
-> ReadPrec [LlamaSplitMode]
-> Read LlamaSplitMode
forall a.
(Int -> ReadS a)
-> ReadS [a] -> ReadPrec a -> ReadPrec [a] -> Read a
$creadsPrec :: Int -> ReadS LlamaSplitMode
readsPrec :: Int -> ReadS LlamaSplitMode
$creadList :: ReadS [LlamaSplitMode]
readList :: ReadS [LlamaSplitMode]
$creadPrec :: ReadPrec LlamaSplitMode
readPrec :: ReadPrec LlamaSplitMode
$creadListPrec :: ReadPrec [LlamaSplitMode]
readListPrec :: ReadPrec [LlamaSplitMode]
Read, (forall x. LlamaSplitMode -> Rep LlamaSplitMode x)
-> (forall x. Rep LlamaSplitMode x -> LlamaSplitMode)
-> Generic LlamaSplitMode
forall x. Rep LlamaSplitMode x -> LlamaSplitMode
forall x. LlamaSplitMode -> Rep LlamaSplitMode x
forall a.
(forall x. a -> Rep a x) -> (forall x. Rep a x -> a) -> Generic a
$cfrom :: forall x. LlamaSplitMode -> Rep LlamaSplitMode x
from :: forall x. LlamaSplitMode -> Rep LlamaSplitMode x
$cto :: forall x. Rep LlamaSplitMode x -> LlamaSplitMode
to :: forall x. Rep LlamaSplitMode x -> LlamaSplitMode
Generic, LlamaSplitMode -> Int
(LlamaSplitMode -> Int)
-> (LlamaSplitMode -> Int)
-> (forall b. Ptr b -> Int -> IO LlamaSplitMode)
-> (forall b. Ptr b -> Int -> LlamaSplitMode -> IO ())
-> GStorable LlamaSplitMode
forall b. Ptr b -> Int -> IO LlamaSplitMode
forall b. Ptr b -> Int -> LlamaSplitMode -> IO ()
forall a.
(a -> Int)
-> (a -> Int)
-> (forall b. Ptr b -> Int -> IO a)
-> (forall b. Ptr b -> Int -> a -> IO ())
-> GStorable a
$cgsizeOf :: LlamaSplitMode -> Int
gsizeOf :: LlamaSplitMode -> Int
$cgalignment :: LlamaSplitMode -> Int
galignment :: LlamaSplitMode -> Int
$cgpeekByteOff :: forall b. Ptr b -> Int -> IO LlamaSplitMode
gpeekByteOff :: forall b. Ptr b -> Int -> IO LlamaSplitMode
$cgpokeByteOff :: forall b. Ptr b -> Int -> LlamaSplitMode -> IO ()
gpokeByteOff :: forall b. Ptr b -> Int -> LlamaSplitMode -> IO ()
GStorable)

-- Define the sampler chain parameters structure
newtype LlamaSamplerChainParams = LlamaSamplerChainParams
  { LlamaSamplerChainParams -> CBool
noPerf :: CBool -- whether to measure performance timings
  }
  deriving (Int -> LlamaSamplerChainParams -> ShowS
[LlamaSamplerChainParams] -> ShowS
LlamaSamplerChainParams -> String
(Int -> LlamaSamplerChainParams -> ShowS)
-> (LlamaSamplerChainParams -> String)
-> ([LlamaSamplerChainParams] -> ShowS)
-> Show LlamaSamplerChainParams
forall a.
(Int -> a -> ShowS) -> (a -> String) -> ([a] -> ShowS) -> Show a
$cshowsPrec :: Int -> LlamaSamplerChainParams -> ShowS
showsPrec :: Int -> LlamaSamplerChainParams -> ShowS
$cshow :: LlamaSamplerChainParams -> String
show :: LlamaSamplerChainParams -> String
$cshowList :: [LlamaSamplerChainParams] -> ShowS
showList :: [LlamaSamplerChainParams] -> ShowS
Show, LlamaSamplerChainParams -> LlamaSamplerChainParams -> Bool
(LlamaSamplerChainParams -> LlamaSamplerChainParams -> Bool)
-> (LlamaSamplerChainParams -> LlamaSamplerChainParams -> Bool)
-> Eq LlamaSamplerChainParams
forall a. (a -> a -> Bool) -> (a -> a -> Bool) -> Eq a
$c== :: LlamaSamplerChainParams -> LlamaSamplerChainParams -> Bool
== :: LlamaSamplerChainParams -> LlamaSamplerChainParams -> Bool
$c/= :: LlamaSamplerChainParams -> LlamaSamplerChainParams -> Bool
/= :: LlamaSamplerChainParams -> LlamaSamplerChainParams -> Bool
Eq, (forall x.
 LlamaSamplerChainParams -> Rep LlamaSamplerChainParams x)
-> (forall x.
    Rep LlamaSamplerChainParams x -> LlamaSamplerChainParams)
-> Generic LlamaSamplerChainParams
forall x. Rep LlamaSamplerChainParams x -> LlamaSamplerChainParams
forall x. LlamaSamplerChainParams -> Rep LlamaSamplerChainParams x
forall a.
(forall x. a -> Rep a x) -> (forall x. Rep a x -> a) -> Generic a
$cfrom :: forall x. LlamaSamplerChainParams -> Rep LlamaSamplerChainParams x
from :: forall x. LlamaSamplerChainParams -> Rep LlamaSamplerChainParams x
$cto :: forall x. Rep LlamaSamplerChainParams x -> LlamaSamplerChainParams
to :: forall x. Rep LlamaSamplerChainParams x -> LlamaSamplerChainParams
Generic, LlamaSamplerChainParams -> Int
(LlamaSamplerChainParams -> Int)
-> (LlamaSamplerChainParams -> Int)
-> (forall b. Ptr b -> Int -> IO LlamaSamplerChainParams)
-> (forall b. Ptr b -> Int -> LlamaSamplerChainParams -> IO ())
-> GStorable LlamaSamplerChainParams
forall b. Ptr b -> Int -> IO LlamaSamplerChainParams
forall b. Ptr b -> Int -> LlamaSamplerChainParams -> IO ()
forall a.
(a -> Int)
-> (a -> Int)
-> (forall b. Ptr b -> Int -> IO a)
-> (forall b. Ptr b -> Int -> a -> IO ())
-> GStorable a
$cgsizeOf :: LlamaSamplerChainParams -> Int
gsizeOf :: LlamaSamplerChainParams -> Int
$cgalignment :: LlamaSamplerChainParams -> Int
galignment :: LlamaSamplerChainParams -> Int
$cgpeekByteOff :: forall b. Ptr b -> Int -> IO LlamaSamplerChainParams
gpeekByteOff :: forall b. Ptr b -> Int -> IO LlamaSamplerChainParams
$cgpokeByteOff :: forall b. Ptr b -> Int -> LlamaSamplerChainParams -> IO ()
gpokeByteOff :: forall b. Ptr b -> Int -> LlamaSamplerChainParams -> IO ()
GStorable)

-- model quantization parameters
data LlamaModelQuantizeParams = LlamaModelQuantizeParams
  { LlamaModelQuantizeParams -> Int32
nthread :: Int32
  , LlamaModelQuantizeParams -> LlamaFtype
ftype :: LlamaFtype
  , LlamaModelQuantizeParams -> GgmlType
outputTensorType :: GgmlType
  , LlamaModelQuantizeParams -> GgmlType
tokenEmbeddingType :: GgmlType
  , LlamaModelQuantizeParams -> Bool
allowRequantize :: Bool
  , LlamaModelQuantizeParams -> Bool
quantizeOutputTensor :: Bool
  , LlamaModelQuantizeParams -> Bool
onlyCopy :: Bool
  , LlamaModelQuantizeParams -> Bool
pure_ :: Bool
  , LlamaModelQuantizeParams -> Bool
keepSplit :: Bool
  , LlamaModelQuantizeParams -> Ptr ()
imatrix :: Ptr ()
  , LlamaModelQuantizeParams -> Ptr ()
kvOverridesQuantizeParams :: Ptr ()
  , LlamaModelQuantizeParams -> Ptr ()
tensorTypes :: Ptr ()
  }
  deriving (Int -> LlamaModelQuantizeParams -> ShowS
[LlamaModelQuantizeParams] -> ShowS
LlamaModelQuantizeParams -> String
(Int -> LlamaModelQuantizeParams -> ShowS)
-> (LlamaModelQuantizeParams -> String)
-> ([LlamaModelQuantizeParams] -> ShowS)
-> Show LlamaModelQuantizeParams
forall a.
(Int -> a -> ShowS) -> (a -> String) -> ([a] -> ShowS) -> Show a
$cshowsPrec :: Int -> LlamaModelQuantizeParams -> ShowS
showsPrec :: Int -> LlamaModelQuantizeParams -> ShowS
$cshow :: LlamaModelQuantizeParams -> String
show :: LlamaModelQuantizeParams -> String
$cshowList :: [LlamaModelQuantizeParams] -> ShowS
showList :: [LlamaModelQuantizeParams] -> ShowS
Show, LlamaModelQuantizeParams -> LlamaModelQuantizeParams -> Bool
(LlamaModelQuantizeParams -> LlamaModelQuantizeParams -> Bool)
-> (LlamaModelQuantizeParams -> LlamaModelQuantizeParams -> Bool)
-> Eq LlamaModelQuantizeParams
forall a. (a -> a -> Bool) -> (a -> a -> Bool) -> Eq a
$c== :: LlamaModelQuantizeParams -> LlamaModelQuantizeParams -> Bool
== :: LlamaModelQuantizeParams -> LlamaModelQuantizeParams -> Bool
$c/= :: LlamaModelQuantizeParams -> LlamaModelQuantizeParams -> Bool
/= :: LlamaModelQuantizeParams -> LlamaModelQuantizeParams -> Bool
Eq, (forall x.
 LlamaModelQuantizeParams -> Rep LlamaModelQuantizeParams x)
-> (forall x.
    Rep LlamaModelQuantizeParams x -> LlamaModelQuantizeParams)
-> Generic LlamaModelQuantizeParams
forall x.
Rep LlamaModelQuantizeParams x -> LlamaModelQuantizeParams
forall x.
LlamaModelQuantizeParams -> Rep LlamaModelQuantizeParams x
forall a.
(forall x. a -> Rep a x) -> (forall x. Rep a x -> a) -> Generic a
$cfrom :: forall x.
LlamaModelQuantizeParams -> Rep LlamaModelQuantizeParams x
from :: forall x.
LlamaModelQuantizeParams -> Rep LlamaModelQuantizeParams x
$cto :: forall x.
Rep LlamaModelQuantizeParams x -> LlamaModelQuantizeParams
to :: forall x.
Rep LlamaModelQuantizeParams x -> LlamaModelQuantizeParams
Generic, LlamaModelQuantizeParams -> Int
(LlamaModelQuantizeParams -> Int)
-> (LlamaModelQuantizeParams -> Int)
-> (forall b. Ptr b -> Int -> IO LlamaModelQuantizeParams)
-> (forall b. Ptr b -> Int -> LlamaModelQuantizeParams -> IO ())
-> GStorable LlamaModelQuantizeParams
forall b. Ptr b -> Int -> IO LlamaModelQuantizeParams
forall b. Ptr b -> Int -> LlamaModelQuantizeParams -> IO ()
forall a.
(a -> Int)
-> (a -> Int)
-> (forall b. Ptr b -> Int -> IO a)
-> (forall b. Ptr b -> Int -> a -> IO ())
-> GStorable a
$cgsizeOf :: LlamaModelQuantizeParams -> Int
gsizeOf :: LlamaModelQuantizeParams -> Int
$cgalignment :: LlamaModelQuantizeParams -> Int
galignment :: LlamaModelQuantizeParams -> Int
$cgpeekByteOff :: forall b. Ptr b -> Int -> IO LlamaModelQuantizeParams
gpeekByteOff :: forall b. Ptr b -> Int -> IO LlamaModelQuantizeParams
$cgpokeByteOff :: forall b. Ptr b -> Int -> LlamaModelQuantizeParams -> IO ()
gpokeByteOff :: forall b. Ptr b -> Int -> LlamaModelQuantizeParams -> IO ()
GStorable)

data LlamaContextParams = LlamaContextParams
  { LlamaContextParams -> CUInt
n_ctx :: CUInt
  -- ^ text context, 0 = from model
  , LlamaContextParams -> CUInt
n_batch :: CUInt
  -- ^ logical maximum batch size that can be submitted to llama_decode
  , LlamaContextParams -> CUInt
n_ubatch :: CUInt
  -- ^ physical maximum batch size
  , LlamaContextParams -> CUInt
n_seq_max :: CUInt
  -- ^ max number of sequences (i.e. distinct states for recurrent models)
  , LlamaContextParams -> CInt
n_threads :: CInt
  -- ^ number of threads to use for generation
  , LlamaContextParams -> CInt
n_threads_batch :: CInt
  -- ^ number of threads to use for batch processing
  , LlamaContextParams -> LlamaRopeTypeScaling
rope_scaling_type :: LlamaRopeTypeScaling
  -- ^ RoPE scaling type, from `enum llama_rope_scaling_type`
  , LlamaContextParams -> LlamaPoolingType
pooling_type :: LlamaPoolingType
  -- ^ whether to pool (sum) embedding results by sequence id
  , LlamaContextParams -> LlamaAttentionType
attention_type :: LlamaAttentionType
  -- ^ attention type to use for embeddings
  , LlamaContextParams -> CFloat
rope_freq_base :: CFloat
  -- ^ RoPE base frequency, 0 = from model
  , LlamaContextParams -> CFloat
rope_freq_scale :: CFloat
  -- ^ RoPE frequency scaling factor, 0 = from model
  , LlamaContextParams -> CFloat
yarn_ext_factor :: CFloat
  -- ^ YaRN extrapolation mix factor, negative = from model
  , LlamaContextParams -> CFloat
yarn_attn_factor :: CFloat
  -- ^ YaRN magnitude scaling factor
  , LlamaContextParams -> CFloat
yarn_beta_fast :: CFloat
  -- ^ YaRN low correction dim
  , LlamaContextParams -> CFloat
yarn_beta_slow :: CFloat
  -- ^ YaRN high correction dim
  , LlamaContextParams -> CUInt
yarn_orig_ctx :: CUInt
  -- ^ YaRN original context size
  , LlamaContextParams -> CFloat
defrag_thold :: CFloat
  -- ^ defragment the KV cache if holes/size > thold, < 0 disabled (default)
  , LlamaContextParams -> FunPtr (Ptr () -> IO ())
cb_eval :: FunPtr (Ptr () -> IO ())
  , LlamaContextParams -> Ptr ()
cb_eval_user_data :: Ptr ()
  , LlamaContextParams -> GgmlType
type_k :: GgmlType
  -- ^ data type for K cache [EXPERIMENTAL]
  , LlamaContextParams -> GgmlType
type_v :: GgmlType
  -- ^ data type for V cache [EXPERIMENTAL]
  , LlamaContextParams -> CBool
logits_all :: CBool
  -- ^ the llama_decode() call computes all logits, not just the last one (DEPRECATED - set llama_batch.logits instead)
  , LlamaContextParams -> CBool
embeddings :: CBool
  -- ^ if true, extract embeddings (together with logits)
  , LlamaContextParams -> CBool
offload_kqv :: CBool
  -- ^ whether to offload the KQV ops (including the KV cache) to GPU
  , LlamaContextParams -> CBool
flash_attn :: CBool
  -- ^ whether to use flash attention [EXPERIMENTAL]
  , LlamaContextParams -> CBool
no_perf :: CBool
  -- ^ whether to measure performance timings
  , LlamaContextParams -> FunPtr (Ptr () -> IO CInt)
abort_callback :: FunPtr (Ptr () -> IO CInt)
  , LlamaContextParams -> Ptr ()
abort_callback_data :: Ptr ()
  }
  deriving (Int -> LlamaContextParams -> ShowS
[LlamaContextParams] -> ShowS
LlamaContextParams -> String
(Int -> LlamaContextParams -> ShowS)
-> (LlamaContextParams -> String)
-> ([LlamaContextParams] -> ShowS)
-> Show LlamaContextParams
forall a.
(Int -> a -> ShowS) -> (a -> String) -> ([a] -> ShowS) -> Show a
$cshowsPrec :: Int -> LlamaContextParams -> ShowS
showsPrec :: Int -> LlamaContextParams -> ShowS
$cshow :: LlamaContextParams -> String
show :: LlamaContextParams -> String
$cshowList :: [LlamaContextParams] -> ShowS
showList :: [LlamaContextParams] -> ShowS
Show, (forall x. LlamaContextParams -> Rep LlamaContextParams x)
-> (forall x. Rep LlamaContextParams x -> LlamaContextParams)
-> Generic LlamaContextParams
forall x. Rep LlamaContextParams x -> LlamaContextParams
forall x. LlamaContextParams -> Rep LlamaContextParams x
forall a.
(forall x. a -> Rep a x) -> (forall x. Rep a x -> a) -> Generic a
$cfrom :: forall x. LlamaContextParams -> Rep LlamaContextParams x
from :: forall x. LlamaContextParams -> Rep LlamaContextParams x
$cto :: forall x. Rep LlamaContextParams x -> LlamaContextParams
to :: forall x. Rep LlamaContextParams x -> LlamaContextParams
Generic, LlamaContextParams -> Int
(LlamaContextParams -> Int)
-> (LlamaContextParams -> Int)
-> (forall b. Ptr b -> Int -> IO LlamaContextParams)
-> (forall b. Ptr b -> Int -> LlamaContextParams -> IO ())
-> GStorable LlamaContextParams
forall b. Ptr b -> Int -> IO LlamaContextParams
forall b. Ptr b -> Int -> LlamaContextParams -> IO ()
forall a.
(a -> Int)
-> (a -> Int)
-> (forall b. Ptr b -> Int -> IO a)
-> (forall b. Ptr b -> Int -> a -> IO ())
-> GStorable a
$cgsizeOf :: LlamaContextParams -> Int
gsizeOf :: LlamaContextParams -> Int
$cgalignment :: LlamaContextParams -> Int
galignment :: LlamaContextParams -> Int
$cgpeekByteOff :: forall b. Ptr b -> Int -> IO LlamaContextParams
gpeekByteOff :: forall b. Ptr b -> Int -> IO LlamaContextParams
$cgpokeByteOff :: forall b. Ptr b -> Int -> LlamaContextParams -> IO ()
gpokeByteOff :: forall b. Ptr b -> Int -> LlamaContextParams -> IO ()
GStorable)

-- Haskell representation of the C struct llama_model_params
data LlamaModelParams = LlamaModelParams
  { LlamaModelParams -> Ptr GgmlBackendDevT
devices :: Ptr GgmlBackendDevT
  -- ^ NULL-terminated list of devices for offloading
  , LlamaModelParams -> Ptr LlamaModelTensorBuftOverride
tensorBuftOverrides :: Ptr LlamaModelTensorBuftOverride
  -- ^ NULL-terminated list of buffer type overrides
  , LlamaModelParams -> Int32
nGpuLayers :: Int32
  -- ^ Number of layers to store in VRAM
  , LlamaModelParams -> LlamaSplitMode
splitMode :: LlamaSplitMode
  -- ^ How to split the model across GPUs
  , LlamaModelParams -> Int32
mainGpu :: Int32
  -- ^ GPU used when split_mode is LLAMA_SPLIT_MODE_NONE
  , LlamaModelParams -> Ptr CFloat
tensorSplit :: Ptr CFloat
  -- ^ Proportion of model offloaded to each GPU
  , LlamaModelParams -> FunPtr (CFloat -> Ptr () -> IO CBool)
progressCallback :: FunPtr (CFloat -> Ptr () -> IO CBool)
  -- ^ Callback for progress updates (returns true to continue)
  , LlamaModelParams -> Ptr ()
progressCallbackUserData :: Ptr ()
  -- ^ User data for progress callback
  , LlamaModelParams -> Ptr LlamaModelKvOverride
kvOverrides :: Ptr LlamaModelKvOverride
  -- ^ Override for model metadata
  , LlamaModelParams -> CBool
vocabOnly :: CBool
  -- ^ Only load vocabulary, not weights
  , LlamaModelParams -> CBool
useMmap :: CBool
  -- ^ Use mmap if possible
  , LlamaModelParams -> CBool
useMlock :: CBool
  -- ^ Force model to stay in RAM
  , LlamaModelParams -> CBool
checkTensors :: CBool
  -- ^ Validate tensor data
  }
  deriving ((forall x. LlamaModelParams -> Rep LlamaModelParams x)
-> (forall x. Rep LlamaModelParams x -> LlamaModelParams)
-> Generic LlamaModelParams
forall x. Rep LlamaModelParams x -> LlamaModelParams
forall x. LlamaModelParams -> Rep LlamaModelParams x
forall a.
(forall x. a -> Rep a x) -> (forall x. Rep a x -> a) -> Generic a
$cfrom :: forall x. LlamaModelParams -> Rep LlamaModelParams x
from :: forall x. LlamaModelParams -> Rep LlamaModelParams x
$cto :: forall x. Rep LlamaModelParams x -> LlamaModelParams
to :: forall x. Rep LlamaModelParams x -> LlamaModelParams
Generic, LlamaModelParams -> Int
(LlamaModelParams -> Int)
-> (LlamaModelParams -> Int)
-> (forall b. Ptr b -> Int -> IO LlamaModelParams)
-> (forall b. Ptr b -> Int -> LlamaModelParams -> IO ())
-> GStorable LlamaModelParams
forall b. Ptr b -> Int -> IO LlamaModelParams
forall b. Ptr b -> Int -> LlamaModelParams -> IO ()
forall a.
(a -> Int)
-> (a -> Int)
-> (forall b. Ptr b -> Int -> IO a)
-> (forall b. Ptr b -> Int -> a -> IO ())
-> GStorable a
$cgsizeOf :: LlamaModelParams -> Int
gsizeOf :: LlamaModelParams -> Int
$cgalignment :: LlamaModelParams -> Int
galignment :: LlamaModelParams -> Int
$cgpeekByteOff :: forall b. Ptr b -> Int -> IO LlamaModelParams
gpeekByteOff :: forall b. Ptr b -> Int -> IO LlamaModelParams
$cgpokeByteOff :: forall b. Ptr b -> Int -> LlamaModelParams -> IO ()
gpokeByteOff :: forall b. Ptr b -> Int -> LlamaModelParams -> IO ()
GStorable, LlamaModelParams -> LlamaModelParams -> Bool
(LlamaModelParams -> LlamaModelParams -> Bool)
-> (LlamaModelParams -> LlamaModelParams -> Bool)
-> Eq LlamaModelParams
forall a. (a -> a -> Bool) -> (a -> a -> Bool) -> Eq a
$c== :: LlamaModelParams -> LlamaModelParams -> Bool
== :: LlamaModelParams -> LlamaModelParams -> Bool
$c/= :: LlamaModelParams -> LlamaModelParams -> Bool
/= :: LlamaModelParams -> LlamaModelParams -> Bool
Eq, Int -> LlamaModelParams -> ShowS
[LlamaModelParams] -> ShowS
LlamaModelParams -> String
(Int -> LlamaModelParams -> ShowS)
-> (LlamaModelParams -> String)
-> ([LlamaModelParams] -> ShowS)
-> Show LlamaModelParams
forall a.
(Int -> a -> ShowS) -> (a -> String) -> ([a] -> ShowS) -> Show a
$cshowsPrec :: Int -> LlamaModelParams -> ShowS
showsPrec :: Int -> LlamaModelParams -> ShowS
$cshow :: LlamaModelParams -> String
show :: LlamaModelParams -> String
$cshowList :: [LlamaModelParams] -> ShowS
showList :: [LlamaModelParams] -> ShowS
Show)

-- Helpers
data LlamaRopeTypeScaling
  = LLAMA_ROPE_SCALING_TYPE_UNSPECIFIED
  | LLAMA_ROPE_SCALING_TYPE_NONE
  | LLAMA_ROPE_SCALING_TYPE_LINEAR
  | LLAMA_ROPE_SCALING_TYPE_YARN
  | LLAMA_ROPE_SCALING_TYPE_LONGROPE
  | LLAMA_ROPE_SCALING_TYPE_MAX_VALUE
  deriving (Int -> LlamaRopeTypeScaling -> ShowS
[LlamaRopeTypeScaling] -> ShowS
LlamaRopeTypeScaling -> String
(Int -> LlamaRopeTypeScaling -> ShowS)
-> (LlamaRopeTypeScaling -> String)
-> ([LlamaRopeTypeScaling] -> ShowS)
-> Show LlamaRopeTypeScaling
forall a.
(Int -> a -> ShowS) -> (a -> String) -> ([a] -> ShowS) -> Show a
$cshowsPrec :: Int -> LlamaRopeTypeScaling -> ShowS
showsPrec :: Int -> LlamaRopeTypeScaling -> ShowS
$cshow :: LlamaRopeTypeScaling -> String
show :: LlamaRopeTypeScaling -> String
$cshowList :: [LlamaRopeTypeScaling] -> ShowS
showList :: [LlamaRopeTypeScaling] -> ShowS
Show, LlamaRopeTypeScaling -> LlamaRopeTypeScaling -> Bool
(LlamaRopeTypeScaling -> LlamaRopeTypeScaling -> Bool)
-> (LlamaRopeTypeScaling -> LlamaRopeTypeScaling -> Bool)
-> Eq LlamaRopeTypeScaling
forall a. (a -> a -> Bool) -> (a -> a -> Bool) -> Eq a
$c== :: LlamaRopeTypeScaling -> LlamaRopeTypeScaling -> Bool
== :: LlamaRopeTypeScaling -> LlamaRopeTypeScaling -> Bool
$c/= :: LlamaRopeTypeScaling -> LlamaRopeTypeScaling -> Bool
/= :: LlamaRopeTypeScaling -> LlamaRopeTypeScaling -> Bool
Eq)

toLlamaRopeTypeScaling :: LlamaRopeTypeScaling -> CInt
toLlamaRopeTypeScaling :: LlamaRopeTypeScaling -> CInt
toLlamaRopeTypeScaling LlamaRopeTypeScaling
LLAMA_ROPE_SCALING_TYPE_UNSPECIFIED = -CInt
1
toLlamaRopeTypeScaling LlamaRopeTypeScaling
LLAMA_ROPE_SCALING_TYPE_NONE = CInt
0
toLlamaRopeTypeScaling LlamaRopeTypeScaling
LLAMA_ROPE_SCALING_TYPE_LINEAR = CInt
1
toLlamaRopeTypeScaling LlamaRopeTypeScaling
LLAMA_ROPE_SCALING_TYPE_YARN = CInt
2
toLlamaRopeTypeScaling LlamaRopeTypeScaling
LLAMA_ROPE_SCALING_TYPE_LONGROPE = CInt
3
toLlamaRopeTypeScaling LlamaRopeTypeScaling
LLAMA_ROPE_SCALING_TYPE_MAX_VALUE = CInt
3

fromLlamaRopeTypeScaling :: CInt -> Maybe LlamaRopeTypeScaling
fromLlamaRopeTypeScaling :: CInt -> Maybe LlamaRopeTypeScaling
fromLlamaRopeTypeScaling (-1) = LlamaRopeTypeScaling -> Maybe LlamaRopeTypeScaling
forall a. a -> Maybe a
Just LlamaRopeTypeScaling
LLAMA_ROPE_SCALING_TYPE_UNSPECIFIED
fromLlamaRopeTypeScaling CInt
0 = LlamaRopeTypeScaling -> Maybe LlamaRopeTypeScaling
forall a. a -> Maybe a
Just LlamaRopeTypeScaling
LLAMA_ROPE_SCALING_TYPE_NONE
fromLlamaRopeTypeScaling CInt
1 = LlamaRopeTypeScaling -> Maybe LlamaRopeTypeScaling
forall a. a -> Maybe a
Just LlamaRopeTypeScaling
LLAMA_ROPE_SCALING_TYPE_LINEAR
fromLlamaRopeTypeScaling CInt
2 = LlamaRopeTypeScaling -> Maybe LlamaRopeTypeScaling
forall a. a -> Maybe a
Just LlamaRopeTypeScaling
LLAMA_ROPE_SCALING_TYPE_YARN
fromLlamaRopeTypeScaling CInt
3 = LlamaRopeTypeScaling -> Maybe LlamaRopeTypeScaling
forall a. a -> Maybe a
Just LlamaRopeTypeScaling
LLAMA_ROPE_SCALING_TYPE_LONGROPE
fromLlamaRopeTypeScaling CInt
_ = Maybe LlamaRopeTypeScaling
forall a. Maybe a
Nothing

instance Storable LlamaRopeTypeScaling where
  sizeOf :: LlamaRopeTypeScaling -> Int
sizeOf LlamaRopeTypeScaling
_ = Int
4
  alignment :: LlamaRopeTypeScaling -> Int
alignment LlamaRopeTypeScaling
_ = Int
4
  peek :: Ptr LlamaRopeTypeScaling -> IO LlamaRopeTypeScaling
peek Ptr LlamaRopeTypeScaling
ptr = do
    mbVal <- CInt -> Maybe LlamaRopeTypeScaling
fromLlamaRopeTypeScaling (CInt -> Maybe LlamaRopeTypeScaling)
-> IO CInt -> IO (Maybe LlamaRopeTypeScaling)
forall (f :: * -> *) a b. Functor f => (a -> b) -> f a -> f b
<$> Ptr CInt -> IO CInt
forall a. Storable a => Ptr a -> IO a
peek (Ptr LlamaRopeTypeScaling -> Ptr CInt
forall a b. Ptr a -> Ptr b
castPtr Ptr LlamaRopeTypeScaling
ptr)
    case mbVal of
      Maybe LlamaRopeTypeScaling
Nothing -> String -> IO LlamaRopeTypeScaling
forall a. HasCallStack => String -> a
error String
"Invalid LlamaRopeTypeScaling value"
      Just LlamaRopeTypeScaling
val -> LlamaRopeTypeScaling -> IO LlamaRopeTypeScaling
forall a. a -> IO a
forall (m :: * -> *) a. Monad m => a -> m a
return LlamaRopeTypeScaling
val
  poke :: Ptr LlamaRopeTypeScaling -> LlamaRopeTypeScaling -> IO ()
poke Ptr LlamaRopeTypeScaling
ptr LlamaRopeTypeScaling
val = do
    let val' :: CInt
val' = LlamaRopeTypeScaling -> CInt
toLlamaRopeTypeScaling LlamaRopeTypeScaling
val
    Ptr CInt -> CInt -> IO ()
forall a. Storable a => Ptr a -> a -> IO ()
poke (Ptr LlamaRopeTypeScaling -> Ptr CInt
forall a b. Ptr a -> Ptr b
castPtr Ptr LlamaRopeTypeScaling
ptr) CInt
val'

data LlamaPoolingType
  = LLAMA_POOLING_TYPE_UNSPECIFIED
  | LLAMA_POOLING_TYPE_NONE
  | LLAMA_POOLING_TYPE_MEAN
  | LLAMA_POOLING_TYPE_CLS
  | LLAMA_POOLING_TYPE_LAST
  | LLAMA_POOLING_TYPE_RANK
  deriving (Int -> LlamaPoolingType -> ShowS
[LlamaPoolingType] -> ShowS
LlamaPoolingType -> String
(Int -> LlamaPoolingType -> ShowS)
-> (LlamaPoolingType -> String)
-> ([LlamaPoolingType] -> ShowS)
-> Show LlamaPoolingType
forall a.
(Int -> a -> ShowS) -> (a -> String) -> ([a] -> ShowS) -> Show a
$cshowsPrec :: Int -> LlamaPoolingType -> ShowS
showsPrec :: Int -> LlamaPoolingType -> ShowS
$cshow :: LlamaPoolingType -> String
show :: LlamaPoolingType -> String
$cshowList :: [LlamaPoolingType] -> ShowS
showList :: [LlamaPoolingType] -> ShowS
Show, LlamaPoolingType -> LlamaPoolingType -> Bool
(LlamaPoolingType -> LlamaPoolingType -> Bool)
-> (LlamaPoolingType -> LlamaPoolingType -> Bool)
-> Eq LlamaPoolingType
forall a. (a -> a -> Bool) -> (a -> a -> Bool) -> Eq a
$c== :: LlamaPoolingType -> LlamaPoolingType -> Bool
== :: LlamaPoolingType -> LlamaPoolingType -> Bool
$c/= :: LlamaPoolingType -> LlamaPoolingType -> Bool
/= :: LlamaPoolingType -> LlamaPoolingType -> Bool
Eq, Eq LlamaPoolingType
Eq LlamaPoolingType =>
(LlamaPoolingType -> LlamaPoolingType -> Ordering)
-> (LlamaPoolingType -> LlamaPoolingType -> Bool)
-> (LlamaPoolingType -> LlamaPoolingType -> Bool)
-> (LlamaPoolingType -> LlamaPoolingType -> Bool)
-> (LlamaPoolingType -> LlamaPoolingType -> Bool)
-> (LlamaPoolingType -> LlamaPoolingType -> LlamaPoolingType)
-> (LlamaPoolingType -> LlamaPoolingType -> LlamaPoolingType)
-> Ord LlamaPoolingType
LlamaPoolingType -> LlamaPoolingType -> Bool
LlamaPoolingType -> LlamaPoolingType -> Ordering
LlamaPoolingType -> LlamaPoolingType -> LlamaPoolingType
forall a.
Eq a =>
(a -> a -> Ordering)
-> (a -> a -> Bool)
-> (a -> a -> Bool)
-> (a -> a -> Bool)
-> (a -> a -> Bool)
-> (a -> a -> a)
-> (a -> a -> a)
-> Ord a
$ccompare :: LlamaPoolingType -> LlamaPoolingType -> Ordering
compare :: LlamaPoolingType -> LlamaPoolingType -> Ordering
$c< :: LlamaPoolingType -> LlamaPoolingType -> Bool
< :: LlamaPoolingType -> LlamaPoolingType -> Bool
$c<= :: LlamaPoolingType -> LlamaPoolingType -> Bool
<= :: LlamaPoolingType -> LlamaPoolingType -> Bool
$c> :: LlamaPoolingType -> LlamaPoolingType -> Bool
> :: LlamaPoolingType -> LlamaPoolingType -> Bool
$c>= :: LlamaPoolingType -> LlamaPoolingType -> Bool
>= :: LlamaPoolingType -> LlamaPoolingType -> Bool
$cmax :: LlamaPoolingType -> LlamaPoolingType -> LlamaPoolingType
max :: LlamaPoolingType -> LlamaPoolingType -> LlamaPoolingType
$cmin :: LlamaPoolingType -> LlamaPoolingType -> LlamaPoolingType
min :: LlamaPoolingType -> LlamaPoolingType -> LlamaPoolingType
Ord, (forall x. LlamaPoolingType -> Rep LlamaPoolingType x)
-> (forall x. Rep LlamaPoolingType x -> LlamaPoolingType)
-> Generic LlamaPoolingType
forall x. Rep LlamaPoolingType x -> LlamaPoolingType
forall x. LlamaPoolingType -> Rep LlamaPoolingType x
forall a.
(forall x. a -> Rep a x) -> (forall x. Rep a x -> a) -> Generic a
$cfrom :: forall x. LlamaPoolingType -> Rep LlamaPoolingType x
from :: forall x. LlamaPoolingType -> Rep LlamaPoolingType x
$cto :: forall x. Rep LlamaPoolingType x -> LlamaPoolingType
to :: forall x. Rep LlamaPoolingType x -> LlamaPoolingType
Generic)

instance Storable LlamaPoolingType where
  sizeOf :: LlamaPoolingType -> Int
sizeOf LlamaPoolingType
_ = Int
4
  alignment :: LlamaPoolingType -> Int
alignment LlamaPoolingType
_ = Int
4
  peek :: Ptr LlamaPoolingType -> IO LlamaPoolingType
peek Ptr LlamaPoolingType
ptr = do
    mbVal <- CInt -> Maybe LlamaPoolingType
fromLlamaRopePoolingType (CInt -> Maybe LlamaPoolingType)
-> IO CInt -> IO (Maybe LlamaPoolingType)
forall (f :: * -> *) a b. Functor f => (a -> b) -> f a -> f b
<$> Ptr CInt -> IO CInt
forall a. Storable a => Ptr a -> IO a
peek (Ptr LlamaPoolingType -> Ptr CInt
forall a b. Ptr a -> Ptr b
castPtr Ptr LlamaPoolingType
ptr)
    case mbVal of
      Maybe LlamaPoolingType
Nothing -> String -> IO LlamaPoolingType
forall a. HasCallStack => String -> a
error String
"Invalid LlamaPoolingType value"
      Just LlamaPoolingType
val -> LlamaPoolingType -> IO LlamaPoolingType
forall a. a -> IO a
forall (m :: * -> *) a. Monad m => a -> m a
return LlamaPoolingType
val
  poke :: Ptr LlamaPoolingType -> LlamaPoolingType -> IO ()
poke Ptr LlamaPoolingType
ptr LlamaPoolingType
val = do
    let val' :: CInt
val' = LlamaPoolingType -> CInt
toLlamaRopePoolingType LlamaPoolingType
val
    Ptr CInt -> CInt -> IO ()
forall a. Storable a => Ptr a -> a -> IO ()
poke (Ptr LlamaPoolingType -> Ptr CInt
forall a b. Ptr a -> Ptr b
castPtr Ptr LlamaPoolingType
ptr) CInt
val'

toLlamaRopePoolingType :: LlamaPoolingType -> CInt
toLlamaRopePoolingType :: LlamaPoolingType -> CInt
toLlamaRopePoolingType LlamaPoolingType
LLAMA_POOLING_TYPE_UNSPECIFIED = -CInt
1
toLlamaRopePoolingType LlamaPoolingType
LLAMA_POOLING_TYPE_NONE = CInt
0
toLlamaRopePoolingType LlamaPoolingType
LLAMA_POOLING_TYPE_MEAN = CInt
1
toLlamaRopePoolingType LlamaPoolingType
LLAMA_POOLING_TYPE_CLS = CInt
2
toLlamaRopePoolingType LlamaPoolingType
LLAMA_POOLING_TYPE_LAST = CInt
3
toLlamaRopePoolingType LlamaPoolingType
LLAMA_POOLING_TYPE_RANK = CInt
4

fromLlamaRopePoolingType :: CInt -> Maybe LlamaPoolingType
fromLlamaRopePoolingType :: CInt -> Maybe LlamaPoolingType
fromLlamaRopePoolingType (-1) = LlamaPoolingType -> Maybe LlamaPoolingType
forall a. a -> Maybe a
Just LlamaPoolingType
LLAMA_POOLING_TYPE_UNSPECIFIED
fromLlamaRopePoolingType CInt
0 = LlamaPoolingType -> Maybe LlamaPoolingType
forall a. a -> Maybe a
Just LlamaPoolingType
LLAMA_POOLING_TYPE_NONE
fromLlamaRopePoolingType CInt
1 = LlamaPoolingType -> Maybe LlamaPoolingType
forall a. a -> Maybe a
Just LlamaPoolingType
LLAMA_POOLING_TYPE_MEAN
fromLlamaRopePoolingType CInt
2 = LlamaPoolingType -> Maybe LlamaPoolingType
forall a. a -> Maybe a
Just LlamaPoolingType
LLAMA_POOLING_TYPE_CLS
fromLlamaRopePoolingType CInt
3 = LlamaPoolingType -> Maybe LlamaPoolingType
forall a. a -> Maybe a
Just LlamaPoolingType
LLAMA_POOLING_TYPE_LAST
fromLlamaRopePoolingType CInt
4 = LlamaPoolingType -> Maybe LlamaPoolingType
forall a. a -> Maybe a
Just LlamaPoolingType
LLAMA_POOLING_TYPE_RANK
fromLlamaRopePoolingType CInt
_ = Maybe LlamaPoolingType
forall a. Maybe a
Nothing

data LlamaAttentionType
  = LLAMA_ATTENTION_TYPE_UNSPECIFIED
  | LLAMA_ATTENTION_TYPE_CAUSAL
  | LLAMA_ATTENTION_TYPE_NON_CAUSAL
  deriving (Int -> LlamaAttentionType -> ShowS
[LlamaAttentionType] -> ShowS
LlamaAttentionType -> String
(Int -> LlamaAttentionType -> ShowS)
-> (LlamaAttentionType -> String)
-> ([LlamaAttentionType] -> ShowS)
-> Show LlamaAttentionType
forall a.
(Int -> a -> ShowS) -> (a -> String) -> ([a] -> ShowS) -> Show a
$cshowsPrec :: Int -> LlamaAttentionType -> ShowS
showsPrec :: Int -> LlamaAttentionType -> ShowS
$cshow :: LlamaAttentionType -> String
show :: LlamaAttentionType -> String
$cshowList :: [LlamaAttentionType] -> ShowS
showList :: [LlamaAttentionType] -> ShowS
Show, LlamaAttentionType -> LlamaAttentionType -> Bool
(LlamaAttentionType -> LlamaAttentionType -> Bool)
-> (LlamaAttentionType -> LlamaAttentionType -> Bool)
-> Eq LlamaAttentionType
forall a. (a -> a -> Bool) -> (a -> a -> Bool) -> Eq a
$c== :: LlamaAttentionType -> LlamaAttentionType -> Bool
== :: LlamaAttentionType -> LlamaAttentionType -> Bool
$c/= :: LlamaAttentionType -> LlamaAttentionType -> Bool
/= :: LlamaAttentionType -> LlamaAttentionType -> Bool
Eq, Eq LlamaAttentionType
Eq LlamaAttentionType =>
(LlamaAttentionType -> LlamaAttentionType -> Ordering)
-> (LlamaAttentionType -> LlamaAttentionType -> Bool)
-> (LlamaAttentionType -> LlamaAttentionType -> Bool)
-> (LlamaAttentionType -> LlamaAttentionType -> Bool)
-> (LlamaAttentionType -> LlamaAttentionType -> Bool)
-> (LlamaAttentionType -> LlamaAttentionType -> LlamaAttentionType)
-> (LlamaAttentionType -> LlamaAttentionType -> LlamaAttentionType)
-> Ord LlamaAttentionType
LlamaAttentionType -> LlamaAttentionType -> Bool
LlamaAttentionType -> LlamaAttentionType -> Ordering
LlamaAttentionType -> LlamaAttentionType -> LlamaAttentionType
forall a.
Eq a =>
(a -> a -> Ordering)
-> (a -> a -> Bool)
-> (a -> a -> Bool)
-> (a -> a -> Bool)
-> (a -> a -> Bool)
-> (a -> a -> a)
-> (a -> a -> a)
-> Ord a
$ccompare :: LlamaAttentionType -> LlamaAttentionType -> Ordering
compare :: LlamaAttentionType -> LlamaAttentionType -> Ordering
$c< :: LlamaAttentionType -> LlamaAttentionType -> Bool
< :: LlamaAttentionType -> LlamaAttentionType -> Bool
$c<= :: LlamaAttentionType -> LlamaAttentionType -> Bool
<= :: LlamaAttentionType -> LlamaAttentionType -> Bool
$c> :: LlamaAttentionType -> LlamaAttentionType -> Bool
> :: LlamaAttentionType -> LlamaAttentionType -> Bool
$c>= :: LlamaAttentionType -> LlamaAttentionType -> Bool
>= :: LlamaAttentionType -> LlamaAttentionType -> Bool
$cmax :: LlamaAttentionType -> LlamaAttentionType -> LlamaAttentionType
max :: LlamaAttentionType -> LlamaAttentionType -> LlamaAttentionType
$cmin :: LlamaAttentionType -> LlamaAttentionType -> LlamaAttentionType
min :: LlamaAttentionType -> LlamaAttentionType -> LlamaAttentionType
Ord, (forall x. LlamaAttentionType -> Rep LlamaAttentionType x)
-> (forall x. Rep LlamaAttentionType x -> LlamaAttentionType)
-> Generic LlamaAttentionType
forall x. Rep LlamaAttentionType x -> LlamaAttentionType
forall x. LlamaAttentionType -> Rep LlamaAttentionType x
forall a.
(forall x. a -> Rep a x) -> (forall x. Rep a x -> a) -> Generic a
$cfrom :: forall x. LlamaAttentionType -> Rep LlamaAttentionType x
from :: forall x. LlamaAttentionType -> Rep LlamaAttentionType x
$cto :: forall x. Rep LlamaAttentionType x -> LlamaAttentionType
to :: forall x. Rep LlamaAttentionType x -> LlamaAttentionType
Generic)

instance Storable LlamaAttentionType where
  sizeOf :: LlamaAttentionType -> Int
sizeOf LlamaAttentionType
_ = CUInt -> Int
forall a. Storable a => a -> Int
sizeOf (CUInt
forall a. HasCallStack => a
undefined :: CUInt)

  alignment :: LlamaAttentionType -> Int
alignment LlamaAttentionType
_ = CUInt -> Int
forall a. Storable a => a -> Int
sizeOf (CUInt
forall a. HasCallStack => a
undefined :: CUInt)

  peek :: Ptr LlamaAttentionType -> IO LlamaAttentionType
peek Ptr LlamaAttentionType
ptr = do
    mbVal <- CInt -> Maybe LlamaAttentionType
fromLlamaAttentionType (CInt -> Maybe LlamaAttentionType)
-> IO CInt -> IO (Maybe LlamaAttentionType)
forall (f :: * -> *) a b. Functor f => (a -> b) -> f a -> f b
<$> Ptr CInt -> IO CInt
forall a. Storable a => Ptr a -> IO a
peek (Ptr LlamaAttentionType -> Ptr CInt
forall a b. Ptr a -> Ptr b
castPtr Ptr LlamaAttentionType
ptr)
    case mbVal of
      Maybe LlamaAttentionType
Nothing -> String -> IO LlamaAttentionType
forall a. HasCallStack => String -> a
error String
"Invalid LlamaAttentionType value"
      Just LlamaAttentionType
val -> LlamaAttentionType -> IO LlamaAttentionType
forall a. a -> IO a
forall (m :: * -> *) a. Monad m => a -> m a
return LlamaAttentionType
val
  poke :: Ptr LlamaAttentionType -> LlamaAttentionType -> IO ()
poke Ptr LlamaAttentionType
ptr LlamaAttentionType
val = do
    let val' :: CInt
val' = LlamaAttentionType -> CInt
toLlamaAttentionType LlamaAttentionType
val
    Ptr CInt -> CInt -> IO ()
forall a. Storable a => Ptr a -> a -> IO ()
poke (Ptr LlamaAttentionType -> Ptr CInt
forall a b. Ptr a -> Ptr b
castPtr Ptr LlamaAttentionType
ptr) CInt
val'

toLlamaAttentionType :: LlamaAttentionType -> CInt
toLlamaAttentionType :: LlamaAttentionType -> CInt
toLlamaAttentionType LlamaAttentionType
LLAMA_ATTENTION_TYPE_UNSPECIFIED = -CInt
1
toLlamaAttentionType LlamaAttentionType
LLAMA_ATTENTION_TYPE_CAUSAL = CInt
0
toLlamaAttentionType LlamaAttentionType
LLAMA_ATTENTION_TYPE_NON_CAUSAL = CInt
1

fromLlamaAttentionType :: CInt -> Maybe LlamaAttentionType
fromLlamaAttentionType :: CInt -> Maybe LlamaAttentionType
fromLlamaAttentionType (-1) = LlamaAttentionType -> Maybe LlamaAttentionType
forall a. a -> Maybe a
Just LlamaAttentionType
LLAMA_ATTENTION_TYPE_UNSPECIFIED
fromLlamaAttentionType CInt
0 = LlamaAttentionType -> Maybe LlamaAttentionType
forall a. a -> Maybe a
Just LlamaAttentionType
LLAMA_ATTENTION_TYPE_CAUSAL
fromLlamaAttentionType CInt
1 = LlamaAttentionType -> Maybe LlamaAttentionType
forall a. a -> Maybe a
Just LlamaAttentionType
LLAMA_ATTENTION_TYPE_NON_CAUSAL
fromLlamaAttentionType CInt
_ = Maybe LlamaAttentionType
forall a. Maybe a
Nothing

data GgmlType
  = GGML_TYPE_F32
  | GGML_TYPE_F16
  | GGML_TYPE_Q4_0
  | GGML_TYPE_Q4_1
  | GGML_TYPE_Q5_0
  | GGML_TYPE_Q5_1
  | GGML_TYPE_Q8_0
  | GGML_TYPE_Q8_1
  | GGML_TYPE_Q2_K
  | GGML_TYPE_Q3_K
  | GGML_TYPE_Q4_K
  | GGML_TYPE_Q5_K
  | GGML_TYPE_Q6_K
  | GGML_TYPE_Q8_K
  | GGML_TYPE_IQ2_XXS
  | GGML_TYPE_IQ2_XS
  | GGML_TYPE_IQ3_XXS
  | GGML_TYPE_IQ1_S
  | GGML_TYPE_IQ4_NL
  | GGML_TYPE_IQ3_S
  | GGML_TYPE_IQ2_S
  | GGML_TYPE_IQ4_XS
  | GGML_TYPE_I8
  | GGML_TYPE_I16
  | GGML_TYPE_I32
  | GGML_TYPE_I64
  | GGML_TYPE_F64
  | GGML_TYPE_IQ1_M
  | GGML_TYPE_BF16
  | GGML_TYPE_TQ1_0
  | GGML_TYPE_TQ2_0
  | GGML_TYPE_COUNT
  deriving (Int -> GgmlType -> ShowS
[GgmlType] -> ShowS
GgmlType -> String
(Int -> GgmlType -> ShowS)
-> (GgmlType -> String) -> ([GgmlType] -> ShowS) -> Show GgmlType
forall a.
(Int -> a -> ShowS) -> (a -> String) -> ([a] -> ShowS) -> Show a
$cshowsPrec :: Int -> GgmlType -> ShowS
showsPrec :: Int -> GgmlType -> ShowS
$cshow :: GgmlType -> String
show :: GgmlType -> String
$cshowList :: [GgmlType] -> ShowS
showList :: [GgmlType] -> ShowS
Show, GgmlType -> GgmlType -> Bool
(GgmlType -> GgmlType -> Bool)
-> (GgmlType -> GgmlType -> Bool) -> Eq GgmlType
forall a. (a -> a -> Bool) -> (a -> a -> Bool) -> Eq a
$c== :: GgmlType -> GgmlType -> Bool
== :: GgmlType -> GgmlType -> Bool
$c/= :: GgmlType -> GgmlType -> Bool
/= :: GgmlType -> GgmlType -> Bool
Eq, Eq GgmlType
Eq GgmlType =>
(GgmlType -> GgmlType -> Ordering)
-> (GgmlType -> GgmlType -> Bool)
-> (GgmlType -> GgmlType -> Bool)
-> (GgmlType -> GgmlType -> Bool)
-> (GgmlType -> GgmlType -> Bool)
-> (GgmlType -> GgmlType -> GgmlType)
-> (GgmlType -> GgmlType -> GgmlType)
-> Ord GgmlType
GgmlType -> GgmlType -> Bool
GgmlType -> GgmlType -> Ordering
GgmlType -> GgmlType -> GgmlType
forall a.
Eq a =>
(a -> a -> Ordering)
-> (a -> a -> Bool)
-> (a -> a -> Bool)
-> (a -> a -> Bool)
-> (a -> a -> Bool)
-> (a -> a -> a)
-> (a -> a -> a)
-> Ord a
$ccompare :: GgmlType -> GgmlType -> Ordering
compare :: GgmlType -> GgmlType -> Ordering
$c< :: GgmlType -> GgmlType -> Bool
< :: GgmlType -> GgmlType -> Bool
$c<= :: GgmlType -> GgmlType -> Bool
<= :: GgmlType -> GgmlType -> Bool
$c> :: GgmlType -> GgmlType -> Bool
> :: GgmlType -> GgmlType -> Bool
$c>= :: GgmlType -> GgmlType -> Bool
>= :: GgmlType -> GgmlType -> Bool
$cmax :: GgmlType -> GgmlType -> GgmlType
max :: GgmlType -> GgmlType -> GgmlType
$cmin :: GgmlType -> GgmlType -> GgmlType
min :: GgmlType -> GgmlType -> GgmlType
Ord, (forall x. GgmlType -> Rep GgmlType x)
-> (forall x. Rep GgmlType x -> GgmlType) -> Generic GgmlType
forall x. Rep GgmlType x -> GgmlType
forall x. GgmlType -> Rep GgmlType x
forall a.
(forall x. a -> Rep a x) -> (forall x. Rep a x -> a) -> Generic a
$cfrom :: forall x. GgmlType -> Rep GgmlType x
from :: forall x. GgmlType -> Rep GgmlType x
$cto :: forall x. Rep GgmlType x -> GgmlType
to :: forall x. Rep GgmlType x -> GgmlType
Generic)

toGgmlType :: GgmlType -> CInt
toGgmlType :: GgmlType -> CInt
toGgmlType GgmlType
g =
  case GgmlType
g of
    GgmlType
GGML_TYPE_F32 -> CInt
0
    GgmlType
GGML_TYPE_F16 -> CInt
1
    GgmlType
GGML_TYPE_Q4_0 -> CInt
2
    GgmlType
GGML_TYPE_Q4_1 -> CInt
3
    GgmlType
GGML_TYPE_Q5_0 -> CInt
6
    GgmlType
GGML_TYPE_Q5_1 -> CInt
7
    GgmlType
GGML_TYPE_Q8_0 -> CInt
8
    GgmlType
GGML_TYPE_Q8_1 -> CInt
9
    GgmlType
GGML_TYPE_Q2_K -> CInt
10
    GgmlType
GGML_TYPE_Q3_K -> CInt
11
    GgmlType
GGML_TYPE_Q4_K -> CInt
12
    GgmlType
GGML_TYPE_Q5_K -> CInt
13
    GgmlType
GGML_TYPE_Q6_K -> CInt
14
    GgmlType
GGML_TYPE_Q8_K -> CInt
15
    GgmlType
GGML_TYPE_IQ2_XXS -> CInt
16
    GgmlType
GGML_TYPE_IQ2_XS -> CInt
17
    GgmlType
GGML_TYPE_IQ3_XXS -> CInt
18
    GgmlType
GGML_TYPE_IQ1_S -> CInt
19
    GgmlType
GGML_TYPE_IQ4_NL -> CInt
20
    GgmlType
GGML_TYPE_IQ3_S -> CInt
21
    GgmlType
GGML_TYPE_IQ2_S -> CInt
22
    GgmlType
GGML_TYPE_IQ4_XS -> CInt
23
    GgmlType
GGML_TYPE_I8 -> CInt
24
    GgmlType
GGML_TYPE_I16 -> CInt
25
    GgmlType
GGML_TYPE_I32 -> CInt
26
    GgmlType
GGML_TYPE_I64 -> CInt
27
    GgmlType
GGML_TYPE_F64 -> CInt
28
    GgmlType
GGML_TYPE_IQ1_M -> CInt
29
    GgmlType
GGML_TYPE_BF16 -> CInt
30
    GgmlType
GGML_TYPE_TQ1_0 -> CInt
34
    GgmlType
GGML_TYPE_TQ2_0 -> CInt
35
    GgmlType
GGML_TYPE_COUNT -> CInt
39

fromGgmlType :: CInt -> Maybe GgmlType
fromGgmlType :: CInt -> Maybe GgmlType
fromGgmlType CInt
num =
  case CInt
num of
    CInt
0 -> GgmlType -> Maybe GgmlType
forall a. a -> Maybe a
Just GgmlType
GGML_TYPE_F32
    CInt
1 -> GgmlType -> Maybe GgmlType
forall a. a -> Maybe a
Just GgmlType
GGML_TYPE_F16
    CInt
2 -> GgmlType -> Maybe GgmlType
forall a. a -> Maybe a
Just GgmlType
GGML_TYPE_Q4_0
    CInt
3 -> GgmlType -> Maybe GgmlType
forall a. a -> Maybe a
Just GgmlType
GGML_TYPE_Q4_1
    CInt
6 -> GgmlType -> Maybe GgmlType
forall a. a -> Maybe a
Just GgmlType
GGML_TYPE_Q5_0
    CInt
7 -> GgmlType -> Maybe GgmlType
forall a. a -> Maybe a
Just GgmlType
GGML_TYPE_Q5_1
    CInt
8 -> GgmlType -> Maybe GgmlType
forall a. a -> Maybe a
Just GgmlType
GGML_TYPE_Q8_0
    CInt
9 -> GgmlType -> Maybe GgmlType
forall a. a -> Maybe a
Just GgmlType
GGML_TYPE_Q8_1
    CInt
10 -> GgmlType -> Maybe GgmlType
forall a. a -> Maybe a
Just GgmlType
GGML_TYPE_Q2_K
    CInt
11 -> GgmlType -> Maybe GgmlType
forall a. a -> Maybe a
Just GgmlType
GGML_TYPE_Q3_K
    CInt
12 -> GgmlType -> Maybe GgmlType
forall a. a -> Maybe a
Just GgmlType
GGML_TYPE_Q4_K
    CInt
13 -> GgmlType -> Maybe GgmlType
forall a. a -> Maybe a
Just GgmlType
GGML_TYPE_Q5_K
    CInt
14 -> GgmlType -> Maybe GgmlType
forall a. a -> Maybe a
Just GgmlType
GGML_TYPE_Q6_K
    CInt
15 -> GgmlType -> Maybe GgmlType
forall a. a -> Maybe a
Just GgmlType
GGML_TYPE_Q8_K
    CInt
16 -> GgmlType -> Maybe GgmlType
forall a. a -> Maybe a
Just GgmlType
GGML_TYPE_IQ2_XXS
    CInt
17 -> GgmlType -> Maybe GgmlType
forall a. a -> Maybe a
Just GgmlType
GGML_TYPE_IQ2_XS
    CInt
18 -> GgmlType -> Maybe GgmlType
forall a. a -> Maybe a
Just GgmlType
GGML_TYPE_IQ3_XXS
    CInt
19 -> GgmlType -> Maybe GgmlType
forall a. a -> Maybe a
Just GgmlType
GGML_TYPE_IQ1_S
    CInt
20 -> GgmlType -> Maybe GgmlType
forall a. a -> Maybe a
Just GgmlType
GGML_TYPE_IQ4_NL
    CInt
21 -> GgmlType -> Maybe GgmlType
forall a. a -> Maybe a
Just GgmlType
GGML_TYPE_IQ3_S
    CInt
22 -> GgmlType -> Maybe GgmlType
forall a. a -> Maybe a
Just GgmlType
GGML_TYPE_IQ2_S
    CInt
23 -> GgmlType -> Maybe GgmlType
forall a. a -> Maybe a
Just GgmlType
GGML_TYPE_IQ4_XS
    CInt
24 -> GgmlType -> Maybe GgmlType
forall a. a -> Maybe a
Just GgmlType
GGML_TYPE_I8
    CInt
25 -> GgmlType -> Maybe GgmlType
forall a. a -> Maybe a
Just GgmlType
GGML_TYPE_I16
    CInt
26 -> GgmlType -> Maybe GgmlType
forall a. a -> Maybe a
Just GgmlType
GGML_TYPE_I32
    CInt
27 -> GgmlType -> Maybe GgmlType
forall a. a -> Maybe a
Just GgmlType
GGML_TYPE_I64
    CInt
28 -> GgmlType -> Maybe GgmlType
forall a. a -> Maybe a
Just GgmlType
GGML_TYPE_F64
    CInt
29 -> GgmlType -> Maybe GgmlType
forall a. a -> Maybe a
Just GgmlType
GGML_TYPE_IQ1_M
    CInt
30 -> GgmlType -> Maybe GgmlType
forall a. a -> Maybe a
Just GgmlType
GGML_TYPE_BF16
    CInt
34 -> GgmlType -> Maybe GgmlType
forall a. a -> Maybe a
Just GgmlType
GGML_TYPE_TQ1_0
    CInt
35 -> GgmlType -> Maybe GgmlType
forall a. a -> Maybe a
Just GgmlType
GGML_TYPE_TQ2_0
    CInt
39 -> GgmlType -> Maybe GgmlType
forall a. a -> Maybe a
Just GgmlType
GGML_TYPE_COUNT
    CInt
_ -> Maybe GgmlType
forall a. Maybe a
Nothing

instance Storable GgmlType where
  sizeOf :: GgmlType -> Int
sizeOf GgmlType
_ = CInt -> Int
forall a. Storable a => a -> Int
sizeOf (CInt
forall a. HasCallStack => a
undefined :: CInt)
  alignment :: GgmlType -> Int
alignment GgmlType
_ = CInt -> Int
forall a. Storable a => a -> Int
sizeOf (CInt
forall a. HasCallStack => a
undefined :: CInt)
  peek :: Ptr GgmlType -> IO GgmlType
peek Ptr GgmlType
ptr = do
    mbVal <- CInt -> Maybe GgmlType
fromGgmlType (CInt -> Maybe GgmlType) -> IO CInt -> IO (Maybe GgmlType)
forall (f :: * -> *) a b. Functor f => (a -> b) -> f a -> f b
<$> Ptr CInt -> IO CInt
forall a. Storable a => Ptr a -> IO a
peek (Ptr GgmlType -> Ptr CInt
forall a b. Ptr a -> Ptr b
castPtr Ptr GgmlType
ptr)
    case mbVal of
      Maybe GgmlType
Nothing -> String -> IO GgmlType
forall a. HasCallStack => String -> a
error String
"Invalid GgmlType value"
      Just GgmlType
val -> GgmlType -> IO GgmlType
forall a. a -> IO a
forall (m :: * -> *) a. Monad m => a -> m a
return GgmlType
val
  poke :: Ptr GgmlType -> GgmlType -> IO ()
poke Ptr GgmlType
ptr GgmlType
val = do
    let val' :: CInt
val' = GgmlType -> CInt
toGgmlType GgmlType
val
    Ptr CInt -> CInt -> IO ()
forall a. Storable a => Ptr a -> a -> IO ()
poke (Ptr GgmlType -> Ptr CInt
forall a b. Ptr a -> Ptr b
castPtr Ptr GgmlType
ptr) CInt
val'

data LlamaFtype
  = LLAMA_FTYPE_ALL_F32
  | LLAMA_FTYPE_MOSTLY_F16
  | LLAMA_FTYPE_MOSTLY_Q4_0
  | LLAMA_FTYPE_MOSTLY_Q4_1
  | LLAMA_FTYPE_MOSTLY_Q8_0
  | LLAMA_FTYPE_MOSTLY_Q5_0
  | LLAMA_FTYPE_MOSTLY_Q5_1
  | LLAMA_FTYPE_MOSTLY_Q2_K
  | LLAMA_FTYPE_MOSTLY_Q3_K_S
  | LLAMA_FTYPE_MOSTLY_Q3_K_M
  | LLAMA_FTYPE_MOSTLY_Q3_K_L
  | LLAMA_FTYPE_MOSTLY_Q4_K_S
  | LLAMA_FTYPE_MOSTLY_Q4_K_M
  | LLAMA_FTYPE_MOSTLY_Q5_K_S
  | LLAMA_FTYPE_MOSTLY_Q5_K_M
  | LLAMA_FTYPE_MOSTLY_Q6_K
  | LLAMA_FTYPE_MOSTLY_IQ2_XXS
  | LLAMA_FTYPE_MOSTLY_IQ2_XS
  | LLAMA_FTYPE_MOSTLY_Q2_K_S
  | LLAMA_FTYPE_MOSTLY_IQ3_XS
  | LLAMA_FTYPE_MOSTLY_IQ3_XXS
  | LLAMA_FTYPE_MOSTLY_IQ1_S
  | LLAMA_FTYPE_MOSTLY_IQ4_NL
  | LLAMA_FTYPE_MOSTLY_IQ3_S
  | LLAMA_FTYPE_MOSTLY_IQ3_M
  | LLAMA_FTYPE_MOSTLY_IQ2_S
  | LLAMA_FTYPE_MOSTLY_IQ2_M
  | LLAMA_FTYPE_MOSTLY_IQ4_XS
  | LLAMA_FTYPE_MOSTLY_IQ1_M
  | LLAMA_FTYPE_MOSTLY_BF16
  | LLAMA_FTYPE_MOSTLY_TQ1_0
  | LLAMA_FTYPE_MOSTLY_TQ2_0
  | LLAMA_FTYPE_GUESSED
  deriving (Int -> LlamaFtype -> ShowS
[LlamaFtype] -> ShowS
LlamaFtype -> String
(Int -> LlamaFtype -> ShowS)
-> (LlamaFtype -> String)
-> ([LlamaFtype] -> ShowS)
-> Show LlamaFtype
forall a.
(Int -> a -> ShowS) -> (a -> String) -> ([a] -> ShowS) -> Show a
$cshowsPrec :: Int -> LlamaFtype -> ShowS
showsPrec :: Int -> LlamaFtype -> ShowS
$cshow :: LlamaFtype -> String
show :: LlamaFtype -> String
$cshowList :: [LlamaFtype] -> ShowS
showList :: [LlamaFtype] -> ShowS
Show, LlamaFtype -> LlamaFtype -> Bool
(LlamaFtype -> LlamaFtype -> Bool)
-> (LlamaFtype -> LlamaFtype -> Bool) -> Eq LlamaFtype
forall a. (a -> a -> Bool) -> (a -> a -> Bool) -> Eq a
$c== :: LlamaFtype -> LlamaFtype -> Bool
== :: LlamaFtype -> LlamaFtype -> Bool
$c/= :: LlamaFtype -> LlamaFtype -> Bool
/= :: LlamaFtype -> LlamaFtype -> Bool
Eq)

toLlamaFtype :: LlamaFtype -> CInt
toLlamaFtype :: LlamaFtype -> CInt
toLlamaFtype LlamaFtype
LLAMA_FTYPE_ALL_F32 = CInt
0
toLlamaFtype LlamaFtype
LLAMA_FTYPE_MOSTLY_F16 = CInt
1
toLlamaFtype LlamaFtype
LLAMA_FTYPE_MOSTLY_Q4_0 = CInt
2
toLlamaFtype LlamaFtype
LLAMA_FTYPE_MOSTLY_Q4_1 = CInt
3
toLlamaFtype LlamaFtype
LLAMA_FTYPE_MOSTLY_Q8_0 = CInt
7
toLlamaFtype LlamaFtype
LLAMA_FTYPE_MOSTLY_Q5_0 = CInt
8
toLlamaFtype LlamaFtype
LLAMA_FTYPE_MOSTLY_Q5_1 = CInt
9
toLlamaFtype LlamaFtype
LLAMA_FTYPE_MOSTLY_Q2_K = CInt
10
toLlamaFtype LlamaFtype
LLAMA_FTYPE_MOSTLY_Q3_K_S = CInt
11
toLlamaFtype LlamaFtype
LLAMA_FTYPE_MOSTLY_Q3_K_M = CInt
12
toLlamaFtype LlamaFtype
LLAMA_FTYPE_MOSTLY_Q3_K_L = CInt
13
toLlamaFtype LlamaFtype
LLAMA_FTYPE_MOSTLY_Q4_K_S = CInt
14
toLlamaFtype LlamaFtype
LLAMA_FTYPE_MOSTLY_Q4_K_M = CInt
15
toLlamaFtype LlamaFtype
LLAMA_FTYPE_MOSTLY_Q5_K_S = CInt
16
toLlamaFtype LlamaFtype
LLAMA_FTYPE_MOSTLY_Q5_K_M = CInt
17
toLlamaFtype LlamaFtype
LLAMA_FTYPE_MOSTLY_Q6_K = CInt
18
toLlamaFtype LlamaFtype
LLAMA_FTYPE_MOSTLY_IQ2_XXS = CInt
19
toLlamaFtype LlamaFtype
LLAMA_FTYPE_MOSTLY_IQ2_XS = CInt
20
toLlamaFtype LlamaFtype
LLAMA_FTYPE_MOSTLY_Q2_K_S = CInt
21
toLlamaFtype LlamaFtype
LLAMA_FTYPE_MOSTLY_IQ3_XS = CInt
22
toLlamaFtype LlamaFtype
LLAMA_FTYPE_MOSTLY_IQ3_XXS = CInt
23
toLlamaFtype LlamaFtype
LLAMA_FTYPE_MOSTLY_IQ1_S = CInt
24
toLlamaFtype LlamaFtype
LLAMA_FTYPE_MOSTLY_IQ4_NL = CInt
25
toLlamaFtype LlamaFtype
LLAMA_FTYPE_MOSTLY_IQ3_S = CInt
26
toLlamaFtype LlamaFtype
LLAMA_FTYPE_MOSTLY_IQ3_M = CInt
27
toLlamaFtype LlamaFtype
LLAMA_FTYPE_MOSTLY_IQ2_S = CInt
28
toLlamaFtype LlamaFtype
LLAMA_FTYPE_MOSTLY_IQ2_M = CInt
29
toLlamaFtype LlamaFtype
LLAMA_FTYPE_MOSTLY_IQ4_XS = CInt
30
toLlamaFtype LlamaFtype
LLAMA_FTYPE_MOSTLY_IQ1_M = CInt
31
toLlamaFtype LlamaFtype
LLAMA_FTYPE_MOSTLY_BF16 = CInt
32
toLlamaFtype LlamaFtype
LLAMA_FTYPE_MOSTLY_TQ1_0 = CInt
36
toLlamaFtype LlamaFtype
LLAMA_FTYPE_MOSTLY_TQ2_0 = CInt
37
toLlamaFtype LlamaFtype
LLAMA_FTYPE_GUESSED = CInt
1024

fromLlamaFtype :: CInt -> Maybe LlamaFtype
fromLlamaFtype :: CInt -> Maybe LlamaFtype
fromLlamaFtype CInt
0 = LlamaFtype -> Maybe LlamaFtype
forall a. a -> Maybe a
Just LlamaFtype
LLAMA_FTYPE_ALL_F32
fromLlamaFtype CInt
1 = LlamaFtype -> Maybe LlamaFtype
forall a. a -> Maybe a
Just LlamaFtype
LLAMA_FTYPE_MOSTLY_F16
fromLlamaFtype CInt
2 = LlamaFtype -> Maybe LlamaFtype
forall a. a -> Maybe a
Just LlamaFtype
LLAMA_FTYPE_MOSTLY_Q4_0
fromLlamaFtype CInt
3 = LlamaFtype -> Maybe LlamaFtype
forall a. a -> Maybe a
Just LlamaFtype
LLAMA_FTYPE_MOSTLY_Q4_1
fromLlamaFtype CInt
7 = LlamaFtype -> Maybe LlamaFtype
forall a. a -> Maybe a
Just LlamaFtype
LLAMA_FTYPE_MOSTLY_Q8_0
fromLlamaFtype CInt
8 = LlamaFtype -> Maybe LlamaFtype
forall a. a -> Maybe a
Just LlamaFtype
LLAMA_FTYPE_MOSTLY_Q5_0
fromLlamaFtype CInt
9 = LlamaFtype -> Maybe LlamaFtype
forall a. a -> Maybe a
Just LlamaFtype
LLAMA_FTYPE_MOSTLY_Q5_1
fromLlamaFtype CInt
10 = LlamaFtype -> Maybe LlamaFtype
forall a. a -> Maybe a
Just LlamaFtype
LLAMA_FTYPE_MOSTLY_Q2_K
fromLlamaFtype CInt
11 = LlamaFtype -> Maybe LlamaFtype
forall a. a -> Maybe a
Just LlamaFtype
LLAMA_FTYPE_MOSTLY_Q3_K_S
fromLlamaFtype CInt
12 = LlamaFtype -> Maybe LlamaFtype
forall a. a -> Maybe a
Just LlamaFtype
LLAMA_FTYPE_MOSTLY_Q3_K_M
fromLlamaFtype CInt
13 = LlamaFtype -> Maybe LlamaFtype
forall a. a -> Maybe a
Just LlamaFtype
LLAMA_FTYPE_MOSTLY_Q3_K_L
fromLlamaFtype CInt
14 = LlamaFtype -> Maybe LlamaFtype
forall a. a -> Maybe a
Just LlamaFtype
LLAMA_FTYPE_MOSTLY_Q4_K_S
fromLlamaFtype CInt
15 = LlamaFtype -> Maybe LlamaFtype
forall a. a -> Maybe a
Just LlamaFtype
LLAMA_FTYPE_MOSTLY_Q4_K_M
fromLlamaFtype CInt
16 = LlamaFtype -> Maybe LlamaFtype
forall a. a -> Maybe a
Just LlamaFtype
LLAMA_FTYPE_MOSTLY_Q5_K_S
fromLlamaFtype CInt
17 = LlamaFtype -> Maybe LlamaFtype
forall a. a -> Maybe a
Just LlamaFtype
LLAMA_FTYPE_MOSTLY_Q5_K_M
fromLlamaFtype CInt
18 = LlamaFtype -> Maybe LlamaFtype
forall a. a -> Maybe a
Just LlamaFtype
LLAMA_FTYPE_MOSTLY_Q6_K
fromLlamaFtype CInt
19 = LlamaFtype -> Maybe LlamaFtype
forall a. a -> Maybe a
Just LlamaFtype
LLAMA_FTYPE_MOSTLY_IQ2_XXS
fromLlamaFtype CInt
20 = LlamaFtype -> Maybe LlamaFtype
forall a. a -> Maybe a
Just LlamaFtype
LLAMA_FTYPE_MOSTLY_IQ2_XS
fromLlamaFtype CInt
21 = LlamaFtype -> Maybe LlamaFtype
forall a. a -> Maybe a
Just LlamaFtype
LLAMA_FTYPE_MOSTLY_Q2_K_S
fromLlamaFtype CInt
22 = LlamaFtype -> Maybe LlamaFtype
forall a. a -> Maybe a
Just LlamaFtype
LLAMA_FTYPE_MOSTLY_IQ3_XS
fromLlamaFtype CInt
23 = LlamaFtype -> Maybe LlamaFtype
forall a. a -> Maybe a
Just LlamaFtype
LLAMA_FTYPE_MOSTLY_IQ3_XXS
fromLlamaFtype CInt
24 = LlamaFtype -> Maybe LlamaFtype
forall a. a -> Maybe a
Just LlamaFtype
LLAMA_FTYPE_MOSTLY_IQ1_S
fromLlamaFtype CInt
25 = LlamaFtype -> Maybe LlamaFtype
forall a. a -> Maybe a
Just LlamaFtype
LLAMA_FTYPE_MOSTLY_IQ4_NL
fromLlamaFtype CInt
26 = LlamaFtype -> Maybe LlamaFtype
forall a. a -> Maybe a
Just LlamaFtype
LLAMA_FTYPE_MOSTLY_IQ3_S
fromLlamaFtype CInt
27 = LlamaFtype -> Maybe LlamaFtype
forall a. a -> Maybe a
Just LlamaFtype
LLAMA_FTYPE_MOSTLY_IQ3_M
fromLlamaFtype CInt
28 = LlamaFtype -> Maybe LlamaFtype
forall a. a -> Maybe a
Just LlamaFtype
LLAMA_FTYPE_MOSTLY_IQ2_S
fromLlamaFtype CInt
29 = LlamaFtype -> Maybe LlamaFtype
forall a. a -> Maybe a
Just LlamaFtype
LLAMA_FTYPE_MOSTLY_IQ2_M
fromLlamaFtype CInt
30 = LlamaFtype -> Maybe LlamaFtype
forall a. a -> Maybe a
Just LlamaFtype
LLAMA_FTYPE_MOSTLY_IQ4_XS
fromLlamaFtype CInt
31 = LlamaFtype -> Maybe LlamaFtype
forall a. a -> Maybe a
Just LlamaFtype
LLAMA_FTYPE_MOSTLY_IQ1_M
fromLlamaFtype CInt
32 = LlamaFtype -> Maybe LlamaFtype
forall a. a -> Maybe a
Just LlamaFtype
LLAMA_FTYPE_MOSTLY_BF16
fromLlamaFtype CInt
36 = LlamaFtype -> Maybe LlamaFtype
forall a. a -> Maybe a
Just LlamaFtype
LLAMA_FTYPE_MOSTLY_TQ1_0
fromLlamaFtype CInt
37 = LlamaFtype -> Maybe LlamaFtype
forall a. a -> Maybe a
Just LlamaFtype
LLAMA_FTYPE_MOSTLY_TQ2_0
fromLlamaFtype CInt
1024 = LlamaFtype -> Maybe LlamaFtype
forall a. a -> Maybe a
Just LlamaFtype
LLAMA_FTYPE_GUESSED
fromLlamaFtype CInt
_ = Maybe LlamaFtype
forall a. Maybe a
Nothing

instance Storable LlamaFtype where
  sizeOf :: LlamaFtype -> Int
sizeOf LlamaFtype
_ = Int
4
  alignment :: LlamaFtype -> Int
alignment LlamaFtype
_ = Int
4
  peek :: Ptr LlamaFtype -> IO LlamaFtype
peek Ptr LlamaFtype
ptr = do
    val <- Ptr CInt -> IO CInt
forall a. Storable a => Ptr a -> IO a
peek (Ptr LlamaFtype -> Ptr CInt
forall a b. Ptr a -> Ptr b
castPtr Ptr LlamaFtype
ptr) :: IO CInt
    case fromLlamaFtype val of
      Just LlamaFtype
v -> LlamaFtype -> IO LlamaFtype
forall a. a -> IO a
forall (m :: * -> *) a. Monad m => a -> m a
return LlamaFtype
v
      Maybe LlamaFtype
Nothing -> String -> IO LlamaFtype
forall a. HasCallStack => String -> a
error (String -> IO LlamaFtype) -> String -> IO LlamaFtype
forall a b. (a -> b) -> a -> b
$ String
"Invalid LlamaFtype value: " String -> ShowS
forall a. [a] -> [a] -> [a]
++ CInt -> String
forall a. Show a => a -> String
show CInt
val
  poke :: Ptr LlamaFtype -> LlamaFtype -> IO ()
poke Ptr LlamaFtype
ptr LlamaFtype
val = do
    let cVal :: CInt
cVal = LlamaFtype -> CInt
toLlamaFtype LlamaFtype
val
    Ptr CInt -> CInt -> IO ()
forall a. Storable a => Ptr a -> a -> IO ()
poke (Ptr LlamaFtype -> Ptr CInt
forall a b. Ptr a -> Ptr b
castPtr Ptr LlamaFtype
ptr) CInt
cVal

data LlamaVocabType
  = LLAMA_VOCAB_TYPE_NONE
  | LLAMA_VOCAB_TYPE_SPM
  | LLAMA_VOCAB_TYPE_BPE
  | LLAMA_VOCAB_TYPE_WPM
  | LLAMA_VOCAB_TYPE_UGM
  | LLAMA_VOCAB_TYPE_RWKV
  deriving (Int -> LlamaVocabType -> ShowS
[LlamaVocabType] -> ShowS
LlamaVocabType -> String
(Int -> LlamaVocabType -> ShowS)
-> (LlamaVocabType -> String)
-> ([LlamaVocabType] -> ShowS)
-> Show LlamaVocabType
forall a.
(Int -> a -> ShowS) -> (a -> String) -> ([a] -> ShowS) -> Show a
$cshowsPrec :: Int -> LlamaVocabType -> ShowS
showsPrec :: Int -> LlamaVocabType -> ShowS
$cshow :: LlamaVocabType -> String
show :: LlamaVocabType -> String
$cshowList :: [LlamaVocabType] -> ShowS
showList :: [LlamaVocabType] -> ShowS
Show, LlamaVocabType -> LlamaVocabType -> Bool
(LlamaVocabType -> LlamaVocabType -> Bool)
-> (LlamaVocabType -> LlamaVocabType -> Bool) -> Eq LlamaVocabType
forall a. (a -> a -> Bool) -> (a -> a -> Bool) -> Eq a
$c== :: LlamaVocabType -> LlamaVocabType -> Bool
== :: LlamaVocabType -> LlamaVocabType -> Bool
$c/= :: LlamaVocabType -> LlamaVocabType -> Bool
/= :: LlamaVocabType -> LlamaVocabType -> Bool
Eq, Eq LlamaVocabType
Eq LlamaVocabType =>
(LlamaVocabType -> LlamaVocabType -> Ordering)
-> (LlamaVocabType -> LlamaVocabType -> Bool)
-> (LlamaVocabType -> LlamaVocabType -> Bool)
-> (LlamaVocabType -> LlamaVocabType -> Bool)
-> (LlamaVocabType -> LlamaVocabType -> Bool)
-> (LlamaVocabType -> LlamaVocabType -> LlamaVocabType)
-> (LlamaVocabType -> LlamaVocabType -> LlamaVocabType)
-> Ord LlamaVocabType
LlamaVocabType -> LlamaVocabType -> Bool
LlamaVocabType -> LlamaVocabType -> Ordering
LlamaVocabType -> LlamaVocabType -> LlamaVocabType
forall a.
Eq a =>
(a -> a -> Ordering)
-> (a -> a -> Bool)
-> (a -> a -> Bool)
-> (a -> a -> Bool)
-> (a -> a -> Bool)
-> (a -> a -> a)
-> (a -> a -> a)
-> Ord a
$ccompare :: LlamaVocabType -> LlamaVocabType -> Ordering
compare :: LlamaVocabType -> LlamaVocabType -> Ordering
$c< :: LlamaVocabType -> LlamaVocabType -> Bool
< :: LlamaVocabType -> LlamaVocabType -> Bool
$c<= :: LlamaVocabType -> LlamaVocabType -> Bool
<= :: LlamaVocabType -> LlamaVocabType -> Bool
$c> :: LlamaVocabType -> LlamaVocabType -> Bool
> :: LlamaVocabType -> LlamaVocabType -> Bool
$c>= :: LlamaVocabType -> LlamaVocabType -> Bool
>= :: LlamaVocabType -> LlamaVocabType -> Bool
$cmax :: LlamaVocabType -> LlamaVocabType -> LlamaVocabType
max :: LlamaVocabType -> LlamaVocabType -> LlamaVocabType
$cmin :: LlamaVocabType -> LlamaVocabType -> LlamaVocabType
min :: LlamaVocabType -> LlamaVocabType -> LlamaVocabType
Ord, (forall x. LlamaVocabType -> Rep LlamaVocabType x)
-> (forall x. Rep LlamaVocabType x -> LlamaVocabType)
-> Generic LlamaVocabType
forall x. Rep LlamaVocabType x -> LlamaVocabType
forall x. LlamaVocabType -> Rep LlamaVocabType x
forall a.
(forall x. a -> Rep a x) -> (forall x. Rep a x -> a) -> Generic a
$cfrom :: forall x. LlamaVocabType -> Rep LlamaVocabType x
from :: forall x. LlamaVocabType -> Rep LlamaVocabType x
$cto :: forall x. Rep LlamaVocabType x -> LlamaVocabType
to :: forall x. Rep LlamaVocabType x -> LlamaVocabType
Generic)

instance Storable LlamaVocabType where
  sizeOf :: LlamaVocabType -> Int
sizeOf LlamaVocabType
_ = Int
4
  alignment :: LlamaVocabType -> Int
alignment LlamaVocabType
_ = Int
4
  peek :: Ptr LlamaVocabType -> IO LlamaVocabType
peek Ptr LlamaVocabType
ptr = do
      mbVal <- CInt -> Maybe LlamaVocabType
fromLlamaRopeVocabType (CInt -> Maybe LlamaVocabType)
-> IO CInt -> IO (Maybe LlamaVocabType)
forall (f :: * -> *) a b. Functor f => (a -> b) -> f a -> f b
<$> Ptr CInt -> IO CInt
forall a. Storable a => Ptr a -> IO a
peek (Ptr LlamaVocabType -> Ptr CInt
forall a b. Ptr a -> Ptr b
castPtr Ptr LlamaVocabType
ptr)
      case mbVal of
        Maybe LlamaVocabType
Nothing -> String -> IO LlamaVocabType
forall a. HasCallStack => String -> a
error String
"Invalid LlamaVocabType value"
        Just LlamaVocabType
val -> LlamaVocabType -> IO LlamaVocabType
forall a. a -> IO a
forall (m :: * -> *) a. Monad m => a -> m a
return LlamaVocabType
val
  poke :: Ptr LlamaVocabType -> LlamaVocabType -> IO ()
poke Ptr LlamaVocabType
ptr LlamaVocabType
val = do
      let val' :: CInt
val' = LlamaVocabType -> CInt
toLlamaRopeVocabType LlamaVocabType
val
      Ptr CInt -> CInt -> IO ()
forall a. Storable a => Ptr a -> a -> IO ()
poke (Ptr LlamaVocabType -> Ptr CInt
forall a b. Ptr a -> Ptr b
castPtr Ptr LlamaVocabType
ptr) CInt
val'

toLlamaRopeVocabType :: LlamaVocabType -> CInt
toLlamaRopeVocabType :: LlamaVocabType -> CInt
toLlamaRopeVocabType LlamaVocabType
LLAMA_VOCAB_TYPE_NONE = CInt
0
toLlamaRopeVocabType LlamaVocabType
LLAMA_VOCAB_TYPE_SPM  = CInt
1
toLlamaRopeVocabType LlamaVocabType
LLAMA_VOCAB_TYPE_BPE  = CInt
2
toLlamaRopeVocabType LlamaVocabType
LLAMA_VOCAB_TYPE_WPM  = CInt
3
toLlamaRopeVocabType LlamaVocabType
LLAMA_VOCAB_TYPE_UGM  = CInt
4
toLlamaRopeVocabType LlamaVocabType
LLAMA_VOCAB_TYPE_RWKV = CInt
5

fromLlamaRopeVocabType :: CInt -> Maybe LlamaVocabType
fromLlamaRopeVocabType :: CInt -> Maybe LlamaVocabType
fromLlamaRopeVocabType CInt
0 = LlamaVocabType -> Maybe LlamaVocabType
forall a. a -> Maybe a
Just LlamaVocabType
LLAMA_VOCAB_TYPE_NONE
fromLlamaRopeVocabType CInt
1 = LlamaVocabType -> Maybe LlamaVocabType
forall a. a -> Maybe a
Just LlamaVocabType
LLAMA_VOCAB_TYPE_SPM
fromLlamaRopeVocabType CInt
2 = LlamaVocabType -> Maybe LlamaVocabType
forall a. a -> Maybe a
Just LlamaVocabType
LLAMA_VOCAB_TYPE_BPE
fromLlamaRopeVocabType CInt
3 = LlamaVocabType -> Maybe LlamaVocabType
forall a. a -> Maybe a
Just LlamaVocabType
LLAMA_VOCAB_TYPE_WPM
fromLlamaRopeVocabType CInt
4 = LlamaVocabType -> Maybe LlamaVocabType
forall a. a -> Maybe a
Just LlamaVocabType
LLAMA_VOCAB_TYPE_UGM
fromLlamaRopeVocabType CInt
5 = LlamaVocabType -> Maybe LlamaVocabType
forall a. a -> Maybe a
Just LlamaVocabType
LLAMA_VOCAB_TYPE_RWKV
fromLlamaRopeVocabType CInt
_ = Maybe LlamaVocabType
forall a. Maybe a
Nothing