packages feed

cpu-features-0.1.0.0: src/System/CPUFeatures/Arm/Constraint/Unsafe.hs

{-# LANGUAGE DataKinds #-}
{-# LANGUAGE TypeFamilies #-}
{-# LANGUAGE UndecidableInstances #-}
module System.CPUFeatures.Arm.Constraint.Unsafe
  ( module System.CPUFeatures.Arm.Constraint.Unsafe
  , Dict (Dict)
  ) where
import Data.Type.Equality ((:~:)(Refl))
import System.CPUFeatures.Util
import System.CPUFeatures.Arm.TypeBool
import Unsafe.Coerce (unsafeCoerce)

class FEAT_AES ~ True => HasFEAT_AES
instance FEAT_AES ~ True => HasFEAT_AES

class FEAT_AFP ~ True => HasFEAT_AFP
instance FEAT_AFP ~ True => HasFEAT_AFP

class FEAT_BF16 ~ True => HasFEAT_BF16
instance FEAT_BF16 ~ True => HasFEAT_BF16

class FEAT_BTI ~ True => HasFEAT_BTI
instance FEAT_BTI ~ True => HasFEAT_BTI

class FEAT_CSV2 ~ True => HasFEAT_CSV2
instance FEAT_CSV2 ~ True => HasFEAT_CSV2

class FEAT_CSV3 ~ True => HasFEAT_CSV3
instance FEAT_CSV3 ~ True => HasFEAT_CSV3

class FEAT_DIT ~ True => HasFEAT_DIT
instance FEAT_DIT ~ True => HasFEAT_DIT

class FEAT_DotProd ~ True => HasFEAT_DotProd
instance FEAT_DotProd ~ True => HasFEAT_DotProd

class FEAT_DPB ~ True => HasFEAT_DPB
instance FEAT_DPB ~ True => HasFEAT_DPB

class FEAT_DPB2 ~ True => HasFEAT_DPB2
instance FEAT_DPB2 ~ True => HasFEAT_DPB2

class FEAT_ECV ~ True => HasFEAT_ECV
instance FEAT_ECV ~ True => HasFEAT_ECV

class FEAT_FCMA ~ True => HasFEAT_FCMA
instance FEAT_FCMA ~ True => HasFEAT_FCMA

class FEAT_FHM ~ True => HasFEAT_FHM
instance FEAT_FHM ~ True => HasFEAT_FHM

class FEAT_FlagM ~ True => HasFEAT_FlagM
instance FEAT_FlagM ~ True => HasFEAT_FlagM

class FEAT_FlagM2 ~ True => HasFEAT_FlagM2
instance FEAT_FlagM2 ~ True => HasFEAT_FlagM2

class FEAT_FP16 ~ True => HasFEAT_FP16
instance FEAT_FP16 ~ True => HasFEAT_FP16

class FEAT_FPAC ~ True => HasFEAT_FPAC
instance FEAT_FPAC ~ True => HasFEAT_FPAC

class FEAT_FRINTTS ~ True => HasFEAT_FRINTTS
instance FEAT_FRINTTS ~ True => HasFEAT_FRINTTS

class FEAT_I8MM ~ True => HasFEAT_I8MM
instance FEAT_I8MM ~ True => HasFEAT_I8MM

class FEAT_JSCVT ~ True => HasFEAT_JSCVT
instance FEAT_JSCVT ~ True => HasFEAT_JSCVT

class FEAT_LRCPC ~ True => HasFEAT_LRCPC
instance FEAT_LRCPC ~ True => HasFEAT_LRCPC

class FEAT_LRCPC2 ~ True => HasFEAT_LRCPC2
instance FEAT_LRCPC2 ~ True => HasFEAT_LRCPC2

class FEAT_LSE ~ True => HasFEAT_LSE
instance FEAT_LSE ~ True => HasFEAT_LSE

class FEAT_LSE2 ~ True => HasFEAT_LSE2
instance FEAT_LSE2 ~ True => HasFEAT_LSE2

class FEAT_PAuth ~ True => HasFEAT_PAuth
instance FEAT_PAuth ~ True => HasFEAT_PAuth

class FEAT_PAuth2 ~ True => HasFEAT_PAuth2
instance FEAT_PAuth2 ~ True => HasFEAT_PAuth2

class FEAT_PMULL ~ True => HasFEAT_PMULL
instance FEAT_PMULL ~ True => HasFEAT_PMULL

class FEAT_RDM ~ True => HasFEAT_RDM
instance FEAT_RDM ~ True => HasFEAT_RDM

class FEAT_RPRES ~ True => HasFEAT_RPRES
instance FEAT_RPRES ~ True => HasFEAT_RPRES

class FEAT_SB ~ True => HasFEAT_SB
instance FEAT_SB ~ True => HasFEAT_SB

class FEAT_SHA1 ~ True => HasFEAT_SHA1
instance FEAT_SHA1 ~ True => HasFEAT_SHA1

class FEAT_SHA256 ~ True => HasFEAT_SHA256
instance FEAT_SHA256 ~ True => HasFEAT_SHA256

class FEAT_SHA3 ~ True => HasFEAT_SHA3
instance FEAT_SHA3 ~ True => HasFEAT_SHA3

class FEAT_SHA512 ~ True => HasFEAT_SHA512
instance FEAT_SHA512 ~ True => HasFEAT_SHA512

class FEAT_SME ~ True => HasFEAT_SME
instance FEAT_SME ~ True => HasFEAT_SME

class FEAT_SME_F64F64 ~ True => HasFEAT_SME_F64F64
instance FEAT_SME_F64F64 ~ True => HasFEAT_SME_F64F64

class FEAT_SME_I16I64 ~ True => HasFEAT_SME_I16I64
instance FEAT_SME_I16I64 ~ True => HasFEAT_SME_I16I64

class FEAT_SME2 ~ True => HasFEAT_SME2
instance FEAT_SME2 ~ True => HasFEAT_SME2

class FEAT_SPECRES ~ True => HasFEAT_SPECRES
instance FEAT_SPECRES ~ True => HasFEAT_SPECRES

class FEAT_SSBS ~ True => HasFEAT_SSBS
instance FEAT_SSBS ~ True => HasFEAT_SSBS

class FEAT_SVE ~ True => HasFEAT_SVE
instance FEAT_SVE ~ True => HasFEAT_SVE

class FEAT_SVE2 ~ True => HasFEAT_SVE2
instance FEAT_SVE2 ~ True => HasFEAT_SVE2

class FEAT_WFxT ~ True => HasFEAT_WFxT
instance FEAT_WFxT ~ True => HasFEAT_WFxT

unsafeAssumeFEAT_AES :: (HasFEAT_AES => a) -> a
unsafeAssumeFEAT_AES k = case unsafeCoerce Refl :: FEAT_AES :~: True of Refl -> k

queryFEAT_AES :: Maybe (Dict HasFEAT_AES)
queryFEAT_AES = case sFEAT_AES of STrue -> unsafeAssumeFEAT_AES (Just Dict); SFalse -> Nothing
{-# NOINLINE queryFEAT_AES #-}

unsafeAssumeFEAT_AFP :: (HasFEAT_AFP => a) -> a
unsafeAssumeFEAT_AFP k = case unsafeCoerce Refl :: FEAT_AFP :~: True of Refl -> k

queryFEAT_AFP :: Maybe (Dict HasFEAT_AFP)
queryFEAT_AFP = case sFEAT_AFP of STrue -> unsafeAssumeFEAT_AFP (Just Dict); SFalse -> Nothing
{-# NOINLINE queryFEAT_AFP #-}

unsafeAssumeFEAT_BF16 :: (HasFEAT_BF16 => a) -> a
unsafeAssumeFEAT_BF16 k = case unsafeCoerce Refl :: FEAT_BF16 :~: True of Refl -> k

queryFEAT_BF16 :: Maybe (Dict HasFEAT_BF16)
queryFEAT_BF16 = case sFEAT_BF16 of STrue -> unsafeAssumeFEAT_BF16 (Just Dict); SFalse -> Nothing
{-# NOINLINE queryFEAT_BF16 #-}

unsafeAssumeFEAT_BTI :: (HasFEAT_BTI => a) -> a
unsafeAssumeFEAT_BTI k = case unsafeCoerce Refl :: FEAT_BTI :~: True of Refl -> k

queryFEAT_BTI :: Maybe (Dict HasFEAT_BTI)
queryFEAT_BTI = case sFEAT_BTI of STrue -> unsafeAssumeFEAT_BTI (Just Dict); SFalse -> Nothing
{-# NOINLINE queryFEAT_BTI #-}

unsafeAssumeFEAT_CSV2 :: (HasFEAT_CSV2 => a) -> a
unsafeAssumeFEAT_CSV2 k = case unsafeCoerce Refl :: FEAT_CSV2 :~: True of Refl -> k

queryFEAT_CSV2 :: Maybe (Dict HasFEAT_CSV2)
queryFEAT_CSV2 = case sFEAT_CSV2 of STrue -> unsafeAssumeFEAT_CSV2 (Just Dict); SFalse -> Nothing
{-# NOINLINE queryFEAT_CSV2 #-}

unsafeAssumeFEAT_CSV3 :: (HasFEAT_CSV3 => a) -> a
unsafeAssumeFEAT_CSV3 k = case unsafeCoerce Refl :: FEAT_CSV3 :~: True of Refl -> k

queryFEAT_CSV3 :: Maybe (Dict HasFEAT_CSV3)
queryFEAT_CSV3 = case sFEAT_CSV3 of STrue -> unsafeAssumeFEAT_CSV3 (Just Dict); SFalse -> Nothing
{-# NOINLINE queryFEAT_CSV3 #-}

unsafeAssumeFEAT_DIT :: (HasFEAT_DIT => a) -> a
unsafeAssumeFEAT_DIT k = case unsafeCoerce Refl :: FEAT_DIT :~: True of Refl -> k

queryFEAT_DIT :: Maybe (Dict HasFEAT_DIT)
queryFEAT_DIT = case sFEAT_DIT of STrue -> unsafeAssumeFEAT_DIT (Just Dict); SFalse -> Nothing
{-# NOINLINE queryFEAT_DIT #-}

unsafeAssumeFEAT_DotProd :: (HasFEAT_DotProd => a) -> a
unsafeAssumeFEAT_DotProd k = case unsafeCoerce Refl :: FEAT_DotProd :~: True of Refl -> k

queryFEAT_DotProd :: Maybe (Dict HasFEAT_DotProd)
queryFEAT_DotProd = case sFEAT_DotProd of STrue -> unsafeAssumeFEAT_DotProd (Just Dict); SFalse -> Nothing
{-# NOINLINE queryFEAT_DotProd #-}

unsafeAssumeFEAT_DPB :: (HasFEAT_DPB => a) -> a
unsafeAssumeFEAT_DPB k = case unsafeCoerce Refl :: FEAT_DPB :~: True of Refl -> k

queryFEAT_DPB :: Maybe (Dict HasFEAT_DPB)
queryFEAT_DPB = case sFEAT_DPB of STrue -> unsafeAssumeFEAT_DPB (Just Dict); SFalse -> Nothing
{-# NOINLINE queryFEAT_DPB #-}

unsafeAssumeFEAT_DPB2 :: (HasFEAT_DPB2 => a) -> a
unsafeAssumeFEAT_DPB2 k = case unsafeCoerce Refl :: FEAT_DPB2 :~: True of Refl -> k

queryFEAT_DPB2 :: Maybe (Dict HasFEAT_DPB2)
queryFEAT_DPB2 = case sFEAT_DPB2 of STrue -> unsafeAssumeFEAT_DPB2 (Just Dict); SFalse -> Nothing
{-# NOINLINE queryFEAT_DPB2 #-}

unsafeAssumeFEAT_ECV :: (HasFEAT_ECV => a) -> a
unsafeAssumeFEAT_ECV k = case unsafeCoerce Refl :: FEAT_ECV :~: True of Refl -> k

queryFEAT_ECV :: Maybe (Dict HasFEAT_ECV)
queryFEAT_ECV = case sFEAT_ECV of STrue -> unsafeAssumeFEAT_ECV (Just Dict); SFalse -> Nothing
{-# NOINLINE queryFEAT_ECV #-}

unsafeAssumeFEAT_FCMA :: (HasFEAT_FCMA => a) -> a
unsafeAssumeFEAT_FCMA k = case unsafeCoerce Refl :: FEAT_FCMA :~: True of Refl -> k

queryFEAT_FCMA :: Maybe (Dict HasFEAT_FCMA)
queryFEAT_FCMA = case sFEAT_FCMA of STrue -> unsafeAssumeFEAT_FCMA (Just Dict); SFalse -> Nothing
{-# NOINLINE queryFEAT_FCMA #-}

unsafeAssumeFEAT_FHM :: (HasFEAT_FHM => a) -> a
unsafeAssumeFEAT_FHM k = case unsafeCoerce Refl :: FEAT_FHM :~: True of Refl -> k

queryFEAT_FHM :: Maybe (Dict HasFEAT_FHM)
queryFEAT_FHM = case sFEAT_FHM of STrue -> unsafeAssumeFEAT_FHM (Just Dict); SFalse -> Nothing
{-# NOINLINE queryFEAT_FHM #-}

unsafeAssumeFEAT_FlagM :: (HasFEAT_FlagM => a) -> a
unsafeAssumeFEAT_FlagM k = case unsafeCoerce Refl :: FEAT_FlagM :~: True of Refl -> k

queryFEAT_FlagM :: Maybe (Dict HasFEAT_FlagM)
queryFEAT_FlagM = case sFEAT_FlagM of STrue -> unsafeAssumeFEAT_FlagM (Just Dict); SFalse -> Nothing
{-# NOINLINE queryFEAT_FlagM #-}

unsafeAssumeFEAT_FlagM2 :: (HasFEAT_FlagM2 => a) -> a
unsafeAssumeFEAT_FlagM2 k = case unsafeCoerce Refl :: FEAT_FlagM2 :~: True of Refl -> k

queryFEAT_FlagM2 :: Maybe (Dict HasFEAT_FlagM2)
queryFEAT_FlagM2 = case sFEAT_FlagM2 of STrue -> unsafeAssumeFEAT_FlagM2 (Just Dict); SFalse -> Nothing
{-# NOINLINE queryFEAT_FlagM2 #-}

unsafeAssumeFEAT_FP16 :: (HasFEAT_FP16 => a) -> a
unsafeAssumeFEAT_FP16 k = case unsafeCoerce Refl :: FEAT_FP16 :~: True of Refl -> k

queryFEAT_FP16 :: Maybe (Dict HasFEAT_FP16)
queryFEAT_FP16 = case sFEAT_FP16 of STrue -> unsafeAssumeFEAT_FP16 (Just Dict); SFalse -> Nothing
{-# NOINLINE queryFEAT_FP16 #-}

unsafeAssumeFEAT_FPAC :: (HasFEAT_FPAC => a) -> a
unsafeAssumeFEAT_FPAC k = case unsafeCoerce Refl :: FEAT_FPAC :~: True of Refl -> k

queryFEAT_FPAC :: Maybe (Dict HasFEAT_FPAC)
queryFEAT_FPAC = case sFEAT_FPAC of STrue -> unsafeAssumeFEAT_FPAC (Just Dict); SFalse -> Nothing
{-# NOINLINE queryFEAT_FPAC #-}

unsafeAssumeFEAT_FRINTTS :: (HasFEAT_FRINTTS => a) -> a
unsafeAssumeFEAT_FRINTTS k = case unsafeCoerce Refl :: FEAT_FRINTTS :~: True of Refl -> k

queryFEAT_FRINTTS :: Maybe (Dict HasFEAT_FRINTTS)
queryFEAT_FRINTTS = case sFEAT_FRINTTS of STrue -> unsafeAssumeFEAT_FRINTTS (Just Dict); SFalse -> Nothing
{-# NOINLINE queryFEAT_FRINTTS #-}

unsafeAssumeFEAT_I8MM :: (HasFEAT_I8MM => a) -> a
unsafeAssumeFEAT_I8MM k = case unsafeCoerce Refl :: FEAT_I8MM :~: True of Refl -> k

queryFEAT_I8MM :: Maybe (Dict HasFEAT_I8MM)
queryFEAT_I8MM = case sFEAT_I8MM of STrue -> unsafeAssumeFEAT_I8MM (Just Dict); SFalse -> Nothing
{-# NOINLINE queryFEAT_I8MM #-}

unsafeAssumeFEAT_JSCVT :: (HasFEAT_JSCVT => a) -> a
unsafeAssumeFEAT_JSCVT k = case unsafeCoerce Refl :: FEAT_JSCVT :~: True of Refl -> k

queryFEAT_JSCVT :: Maybe (Dict HasFEAT_JSCVT)
queryFEAT_JSCVT = case sFEAT_JSCVT of STrue -> unsafeAssumeFEAT_JSCVT (Just Dict); SFalse -> Nothing
{-# NOINLINE queryFEAT_JSCVT #-}

unsafeAssumeFEAT_LRCPC :: (HasFEAT_LRCPC => a) -> a
unsafeAssumeFEAT_LRCPC k = case unsafeCoerce Refl :: FEAT_LRCPC :~: True of Refl -> k

queryFEAT_LRCPC :: Maybe (Dict HasFEAT_LRCPC)
queryFEAT_LRCPC = case sFEAT_LRCPC of STrue -> unsafeAssumeFEAT_LRCPC (Just Dict); SFalse -> Nothing
{-# NOINLINE queryFEAT_LRCPC #-}

unsafeAssumeFEAT_LRCPC2 :: (HasFEAT_LRCPC2 => a) -> a
unsafeAssumeFEAT_LRCPC2 k = case unsafeCoerce Refl :: FEAT_LRCPC2 :~: True of Refl -> k

queryFEAT_LRCPC2 :: Maybe (Dict HasFEAT_LRCPC2)
queryFEAT_LRCPC2 = case sFEAT_LRCPC2 of STrue -> unsafeAssumeFEAT_LRCPC2 (Just Dict); SFalse -> Nothing
{-# NOINLINE queryFEAT_LRCPC2 #-}

unsafeAssumeFEAT_LSE :: (HasFEAT_LSE => a) -> a
unsafeAssumeFEAT_LSE k = case unsafeCoerce Refl :: FEAT_LSE :~: True of Refl -> k

queryFEAT_LSE :: Maybe (Dict HasFEAT_LSE)
queryFEAT_LSE = case sFEAT_LSE of STrue -> unsafeAssumeFEAT_LSE (Just Dict); SFalse -> Nothing
{-# NOINLINE queryFEAT_LSE #-}

unsafeAssumeFEAT_LSE2 :: (HasFEAT_LSE2 => a) -> a
unsafeAssumeFEAT_LSE2 k = case unsafeCoerce Refl :: FEAT_LSE2 :~: True of Refl -> k

queryFEAT_LSE2 :: Maybe (Dict HasFEAT_LSE2)
queryFEAT_LSE2 = case sFEAT_LSE2 of STrue -> unsafeAssumeFEAT_LSE2 (Just Dict); SFalse -> Nothing
{-# NOINLINE queryFEAT_LSE2 #-}

unsafeAssumeFEAT_PAuth :: (HasFEAT_PAuth => a) -> a
unsafeAssumeFEAT_PAuth k = case unsafeCoerce Refl :: FEAT_PAuth :~: True of Refl -> k

queryFEAT_PAuth :: Maybe (Dict HasFEAT_PAuth)
queryFEAT_PAuth = case sFEAT_PAuth of STrue -> unsafeAssumeFEAT_PAuth (Just Dict); SFalse -> Nothing
{-# NOINLINE queryFEAT_PAuth #-}

unsafeAssumeFEAT_PAuth2 :: (HasFEAT_PAuth2 => a) -> a
unsafeAssumeFEAT_PAuth2 k = case unsafeCoerce Refl :: FEAT_PAuth2 :~: True of Refl -> k

queryFEAT_PAuth2 :: Maybe (Dict HasFEAT_PAuth2)
queryFEAT_PAuth2 = case sFEAT_PAuth2 of STrue -> unsafeAssumeFEAT_PAuth2 (Just Dict); SFalse -> Nothing
{-# NOINLINE queryFEAT_PAuth2 #-}

unsafeAssumeFEAT_PMULL :: (HasFEAT_PMULL => a) -> a
unsafeAssumeFEAT_PMULL k = case unsafeCoerce Refl :: FEAT_PMULL :~: True of Refl -> k

queryFEAT_PMULL :: Maybe (Dict HasFEAT_PMULL)
queryFEAT_PMULL = case sFEAT_PMULL of STrue -> unsafeAssumeFEAT_PMULL (Just Dict); SFalse -> Nothing
{-# NOINLINE queryFEAT_PMULL #-}

unsafeAssumeFEAT_RDM :: (HasFEAT_RDM => a) -> a
unsafeAssumeFEAT_RDM k = case unsafeCoerce Refl :: FEAT_RDM :~: True of Refl -> k

queryFEAT_RDM :: Maybe (Dict HasFEAT_RDM)
queryFEAT_RDM = case sFEAT_RDM of STrue -> unsafeAssumeFEAT_RDM (Just Dict); SFalse -> Nothing
{-# NOINLINE queryFEAT_RDM #-}

unsafeAssumeFEAT_RPRES :: (HasFEAT_RPRES => a) -> a
unsafeAssumeFEAT_RPRES k = case unsafeCoerce Refl :: FEAT_RPRES :~: True of Refl -> k

queryFEAT_RPRES :: Maybe (Dict HasFEAT_RPRES)
queryFEAT_RPRES = case sFEAT_RPRES of STrue -> unsafeAssumeFEAT_RPRES (Just Dict); SFalse -> Nothing
{-# NOINLINE queryFEAT_RPRES #-}

unsafeAssumeFEAT_SB :: (HasFEAT_SB => a) -> a
unsafeAssumeFEAT_SB k = case unsafeCoerce Refl :: FEAT_SB :~: True of Refl -> k

queryFEAT_SB :: Maybe (Dict HasFEAT_SB)
queryFEAT_SB = case sFEAT_SB of STrue -> unsafeAssumeFEAT_SB (Just Dict); SFalse -> Nothing
{-# NOINLINE queryFEAT_SB #-}

unsafeAssumeFEAT_SHA1 :: (HasFEAT_SHA1 => a) -> a
unsafeAssumeFEAT_SHA1 k = case unsafeCoerce Refl :: FEAT_SHA1 :~: True of Refl -> k

queryFEAT_SHA1 :: Maybe (Dict HasFEAT_SHA1)
queryFEAT_SHA1 = case sFEAT_SHA1 of STrue -> unsafeAssumeFEAT_SHA1 (Just Dict); SFalse -> Nothing
{-# NOINLINE queryFEAT_SHA1 #-}

unsafeAssumeFEAT_SHA256 :: (HasFEAT_SHA256 => a) -> a
unsafeAssumeFEAT_SHA256 k = case unsafeCoerce Refl :: FEAT_SHA256 :~: True of Refl -> k

queryFEAT_SHA256 :: Maybe (Dict HasFEAT_SHA256)
queryFEAT_SHA256 = case sFEAT_SHA256 of STrue -> unsafeAssumeFEAT_SHA256 (Just Dict); SFalse -> Nothing
{-# NOINLINE queryFEAT_SHA256 #-}

unsafeAssumeFEAT_SHA3 :: (HasFEAT_SHA3 => a) -> a
unsafeAssumeFEAT_SHA3 k = case unsafeCoerce Refl :: FEAT_SHA3 :~: True of Refl -> k

queryFEAT_SHA3 :: Maybe (Dict HasFEAT_SHA3)
queryFEAT_SHA3 = case sFEAT_SHA3 of STrue -> unsafeAssumeFEAT_SHA3 (Just Dict); SFalse -> Nothing
{-# NOINLINE queryFEAT_SHA3 #-}

unsafeAssumeFEAT_SHA512 :: (HasFEAT_SHA512 => a) -> a
unsafeAssumeFEAT_SHA512 k = case unsafeCoerce Refl :: FEAT_SHA512 :~: True of Refl -> k

queryFEAT_SHA512 :: Maybe (Dict HasFEAT_SHA512)
queryFEAT_SHA512 = case sFEAT_SHA512 of STrue -> unsafeAssumeFEAT_SHA512 (Just Dict); SFalse -> Nothing
{-# NOINLINE queryFEAT_SHA512 #-}

unsafeAssumeFEAT_SME :: (HasFEAT_SME => a) -> a
unsafeAssumeFEAT_SME k = case unsafeCoerce Refl :: FEAT_SME :~: True of Refl -> k

queryFEAT_SME :: Maybe (Dict HasFEAT_SME)
queryFEAT_SME = case sFEAT_SME of STrue -> unsafeAssumeFEAT_SME (Just Dict); SFalse -> Nothing
{-# NOINLINE queryFEAT_SME #-}

unsafeAssumeFEAT_SME_F64F64 :: (HasFEAT_SME_F64F64 => a) -> a
unsafeAssumeFEAT_SME_F64F64 k = case unsafeCoerce Refl :: FEAT_SME_F64F64 :~: True of Refl -> k

queryFEAT_SME_F64F64 :: Maybe (Dict HasFEAT_SME_F64F64)
queryFEAT_SME_F64F64 = case sFEAT_SME_F64F64 of STrue -> unsafeAssumeFEAT_SME_F64F64 (Just Dict); SFalse -> Nothing
{-# NOINLINE queryFEAT_SME_F64F64 #-}

unsafeAssumeFEAT_SME_I16I64 :: (HasFEAT_SME_I16I64 => a) -> a
unsafeAssumeFEAT_SME_I16I64 k = case unsafeCoerce Refl :: FEAT_SME_I16I64 :~: True of Refl -> k

queryFEAT_SME_I16I64 :: Maybe (Dict HasFEAT_SME_I16I64)
queryFEAT_SME_I16I64 = case sFEAT_SME_I16I64 of STrue -> unsafeAssumeFEAT_SME_I16I64 (Just Dict); SFalse -> Nothing
{-# NOINLINE queryFEAT_SME_I16I64 #-}

unsafeAssumeFEAT_SME2 :: (HasFEAT_SME2 => a) -> a
unsafeAssumeFEAT_SME2 k = case unsafeCoerce Refl :: FEAT_SME2 :~: True of Refl -> k

queryFEAT_SME2 :: Maybe (Dict HasFEAT_SME2)
queryFEAT_SME2 = case sFEAT_SME2 of STrue -> unsafeAssumeFEAT_SME2 (Just Dict); SFalse -> Nothing
{-# NOINLINE queryFEAT_SME2 #-}

unsafeAssumeFEAT_SPECRES :: (HasFEAT_SPECRES => a) -> a
unsafeAssumeFEAT_SPECRES k = case unsafeCoerce Refl :: FEAT_SPECRES :~: True of Refl -> k

queryFEAT_SPECRES :: Maybe (Dict HasFEAT_SPECRES)
queryFEAT_SPECRES = case sFEAT_SPECRES of STrue -> unsafeAssumeFEAT_SPECRES (Just Dict); SFalse -> Nothing
{-# NOINLINE queryFEAT_SPECRES #-}

unsafeAssumeFEAT_SSBS :: (HasFEAT_SSBS => a) -> a
unsafeAssumeFEAT_SSBS k = case unsafeCoerce Refl :: FEAT_SSBS :~: True of Refl -> k

queryFEAT_SSBS :: Maybe (Dict HasFEAT_SSBS)
queryFEAT_SSBS = case sFEAT_SSBS of STrue -> unsafeAssumeFEAT_SSBS (Just Dict); SFalse -> Nothing
{-# NOINLINE queryFEAT_SSBS #-}

unsafeAssumeFEAT_SVE :: (HasFEAT_SVE => a) -> a
unsafeAssumeFEAT_SVE k = case unsafeCoerce Refl :: FEAT_SVE :~: True of Refl -> k

queryFEAT_SVE :: Maybe (Dict HasFEAT_SVE)
queryFEAT_SVE = case sFEAT_SVE of STrue -> unsafeAssumeFEAT_SVE (Just Dict); SFalse -> Nothing
{-# NOINLINE queryFEAT_SVE #-}

unsafeAssumeFEAT_SVE2 :: (HasFEAT_SVE2 => a) -> a
unsafeAssumeFEAT_SVE2 k = case unsafeCoerce Refl :: FEAT_SVE2 :~: True of Refl -> k

queryFEAT_SVE2 :: Maybe (Dict HasFEAT_SVE2)
queryFEAT_SVE2 = case sFEAT_SVE2 of STrue -> unsafeAssumeFEAT_SVE2 (Just Dict); SFalse -> Nothing
{-# NOINLINE queryFEAT_SVE2 #-}

unsafeAssumeFEAT_WFxT :: (HasFEAT_WFxT => a) -> a
unsafeAssumeFEAT_WFxT k = case unsafeCoerce Refl :: FEAT_WFxT :~: True of Refl -> k

queryFEAT_WFxT :: Maybe (Dict HasFEAT_WFxT)
queryFEAT_WFxT = case sFEAT_WFxT of STrue -> unsafeAssumeFEAT_WFxT (Just Dict); SFalse -> Nothing
{-# NOINLINE queryFEAT_WFxT #-}