cpu-features-0.1.0.0: src/System/CPUFeatures/RISCV/TypeBool.hs
{-# LANGUAGE DataKinds #-}
{-# LANGUAGE TypeFamilies #-}
{- |
Description: RISC-V features as type-level booleans
This module provides the type-level interface to detect CPU features.
You can mark your function with @\<FEATURE NAME\> ~ True =>@ to indicate that
it requires a specific CPU feature.
You can detect the availability and get the constraint @\<FEATURE NAME\> ~ True@
by pattern-matching on the variable @s\<FEATURE NAME\>@.
Example:
> -- This function requires the Vector extension
> someFunction :: V ~ True => ...
>
> case sV of
> STrue -> {- In this branch, V is True -} someFunction
> SFalse -> {- In this branch, V is False -} error "Vector extension not available"
-}
module System.CPUFeatures.RISCV.TypeBool
(C, sC
,V, sV
,Zba, sZba
,Zbb, sZbb
,Zbs, sZbs
,Zicboz, sZicboz
,Zbc, sZbc
,Zbkb, sZbkb
,Zbkc, sZbkc
,Zbkx, sZbkx
,Zknd, sZknd
,Zkne, sZkne
,Zknh, sZknh
,Zksed, sZksed
,Zksh, sZksh
,Zkt, sZkt
,Zvbb, sZvbb
,Zvbc, sZvbc
,Zvkb, sZvkb
,Zvkg, sZvkg
,Zvkned, sZvkned
,Zvknha, sZvknha
,Zvknhb, sZvknhb
,Zvksed, sZvksed
,Zvksh, sZvksh
,Zvkt, sZvkt
,Zfh, sZfh
,Zfhmin, sZfhmin
,Zihintntl, sZihintntl
,Zvfh, sZvfh
,Zvfhmin, sZvfhmin
,Zfa, sZfa
,Ztso, sZtso
,Zacas, sZacas
,Zicntr, sZicntr
,Zicond, sZicond
,Zihintpause, sZihintpause
,Zihpm, sZihpm
,Zve32x, sZve32x
,Zve32f, sZve32f
,Zve64x, sZve64x
,Zve64f, sZve64f
,Zve64d, sZve64d
,Zimop, sZimop
,Zca, sZca
,Zcb, sZcb
,Zcd, sZcd
,Zcf, sZcf
,Zcmop, sZcmop
,Zawrs, sZawrs
,Zaamo, sZaamo
,Zalrsc, sZalrsc
,Supm, sSupm
,Zfbfmin, sZfbfmin
,Zvfbfmin, sZvfbfmin
,Zvfbfwma, sZvfbfwma
,Zicbom, sZicbom
,SBool(..)
) where
import System.CPUFeatures.RISCV.Bool
import System.CPUFeatures.Util
type family C :: Bool
type family V :: Bool
type family Zba :: Bool
type family Zbb :: Bool
type family Zbs :: Bool
type family Zicboz :: Bool
type family Zbc :: Bool
type family Zbkb :: Bool
type family Zbkc :: Bool
type family Zbkx :: Bool
type family Zknd :: Bool
type family Zkne :: Bool
type family Zknh :: Bool
type family Zksed :: Bool
type family Zksh :: Bool
type family Zkt :: Bool
type family Zvbb :: Bool
type family Zvbc :: Bool
type family Zvkb :: Bool
type family Zvkg :: Bool
type family Zvkned :: Bool
type family Zvknha :: Bool
type family Zvknhb :: Bool
type family Zvksed :: Bool
type family Zvksh :: Bool
type family Zvkt :: Bool
type family Zfh :: Bool
type family Zfhmin :: Bool
type family Zihintntl :: Bool
type family Zvfh :: Bool
type family Zvfhmin :: Bool
type family Zfa :: Bool
type family Ztso :: Bool
type family Zacas :: Bool
type family Zicntr :: Bool
type family Zicond :: Bool
type family Zihintpause :: Bool
type family Zihpm :: Bool
type family Zve32x :: Bool
type family Zve32f :: Bool
type family Zve64x :: Bool
type family Zve64f :: Bool
type family Zve64d :: Bool
type family Zimop :: Bool
type family Zca :: Bool
type family Zcb :: Bool
type family Zcd :: Bool
type family Zcf :: Bool
type family Zcmop :: Bool
type family Zawrs :: Bool
type family Zaamo :: Bool
type family Zalrsc :: Bool
type family Supm :: Bool
type family Zfbfmin :: Bool
type family Zvfbfmin :: Bool
type family Zvfbfwma :: Bool
type family Zicbom :: Bool
sC :: SBool C
sC = unsafeBoolToSBool bC
sV :: SBool V
sV = unsafeBoolToSBool bV
sZba :: SBool Zba
sZba = unsafeBoolToSBool bZba
sZbb :: SBool Zbb
sZbb = unsafeBoolToSBool bZbb
sZbs :: SBool Zbs
sZbs = unsafeBoolToSBool bZbs
sZicboz :: SBool Zicboz
sZicboz = unsafeBoolToSBool bZicboz
sZbc :: SBool Zbc
sZbc = unsafeBoolToSBool bZbc
sZbkb :: SBool Zbkb
sZbkb = unsafeBoolToSBool bZbkb
sZbkc :: SBool Zbkc
sZbkc = unsafeBoolToSBool bZbkc
sZbkx :: SBool Zbkx
sZbkx = unsafeBoolToSBool bZbkx
sZknd :: SBool Zknd
sZknd = unsafeBoolToSBool bZknd
sZkne :: SBool Zkne
sZkne = unsafeBoolToSBool bZkne
sZknh :: SBool Zknh
sZknh = unsafeBoolToSBool bZknh
sZksed :: SBool Zksed
sZksed = unsafeBoolToSBool bZksed
sZksh :: SBool Zksh
sZksh = unsafeBoolToSBool bZksh
sZkt :: SBool Zkt
sZkt = unsafeBoolToSBool bZkt
sZvbb :: SBool Zvbb
sZvbb = unsafeBoolToSBool bZvbb
sZvbc :: SBool Zvbc
sZvbc = unsafeBoolToSBool bZvbc
sZvkb :: SBool Zvkb
sZvkb = unsafeBoolToSBool bZvkb
sZvkg :: SBool Zvkg
sZvkg = unsafeBoolToSBool bZvkg
sZvkned :: SBool Zvkned
sZvkned = unsafeBoolToSBool bZvkned
sZvknha :: SBool Zvknha
sZvknha = unsafeBoolToSBool bZvknha
sZvknhb :: SBool Zvknhb
sZvknhb = unsafeBoolToSBool bZvknhb
sZvksed :: SBool Zvksed
sZvksed = unsafeBoolToSBool bZvksed
sZvksh :: SBool Zvksh
sZvksh = unsafeBoolToSBool bZvksh
sZvkt :: SBool Zvkt
sZvkt = unsafeBoolToSBool bZvkt
sZfh :: SBool Zfh
sZfh = unsafeBoolToSBool bZfh
sZfhmin :: SBool Zfhmin
sZfhmin = unsafeBoolToSBool bZfhmin
sZihintntl :: SBool Zihintntl
sZihintntl = unsafeBoolToSBool bZihintntl
sZvfh :: SBool Zvfh
sZvfh = unsafeBoolToSBool bZvfh
sZvfhmin :: SBool Zvfhmin
sZvfhmin = unsafeBoolToSBool bZvfhmin
sZfa :: SBool Zfa
sZfa = unsafeBoolToSBool bZfa
sZtso :: SBool Ztso
sZtso = unsafeBoolToSBool bZtso
sZacas :: SBool Zacas
sZacas = unsafeBoolToSBool bZacas
sZicntr :: SBool Zicntr
sZicntr = unsafeBoolToSBool bZicntr
sZicond :: SBool Zicond
sZicond = unsafeBoolToSBool bZicond
sZihintpause :: SBool Zihintpause
sZihintpause = unsafeBoolToSBool bZihintpause
sZihpm :: SBool Zihpm
sZihpm = unsafeBoolToSBool bZihpm
sZve32x :: SBool Zve32x
sZve32x = unsafeBoolToSBool bZve32x
sZve32f :: SBool Zve32f
sZve32f = unsafeBoolToSBool bZve32f
sZve64x :: SBool Zve64x
sZve64x = unsafeBoolToSBool bZve64x
sZve64f :: SBool Zve64f
sZve64f = unsafeBoolToSBool bZve64f
sZve64d :: SBool Zve64d
sZve64d = unsafeBoolToSBool bZve64d
sZimop :: SBool Zimop
sZimop = unsafeBoolToSBool bZimop
sZca :: SBool Zca
sZca = unsafeBoolToSBool bZca
sZcb :: SBool Zcb
sZcb = unsafeBoolToSBool bZcb
sZcd :: SBool Zcd
sZcd = unsafeBoolToSBool bZcd
sZcf :: SBool Zcf
sZcf = unsafeBoolToSBool bZcf
sZcmop :: SBool Zcmop
sZcmop = unsafeBoolToSBool bZcmop
sZawrs :: SBool Zawrs
sZawrs = unsafeBoolToSBool bZawrs
sZaamo :: SBool Zaamo
sZaamo = unsafeBoolToSBool bZaamo
sZalrsc :: SBool Zalrsc
sZalrsc = unsafeBoolToSBool bZalrsc
sSupm :: SBool Supm
sSupm = unsafeBoolToSBool bSupm
sZfbfmin :: SBool Zfbfmin
sZfbfmin = unsafeBoolToSBool bZfbfmin
sZvfbfmin :: SBool Zvfbfmin
sZvfbfmin = unsafeBoolToSBool bZvfbfmin
sZvfbfwma :: SBool Zvfbfwma
sZvfbfwma = unsafeBoolToSBool bZvfbfwma
sZicbom :: SBool Zicbom
sZicbom = unsafeBoolToSBool bZicbom