cpu-features-0.1.0.0: A library to detect CPU features
Safe HaskellNone
LanguageGHC2021

System.CPUFeatures.X86.TypeBool

Description

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 AVX2
someFunction :: AVX2 ~ True => ...

case sAVX2 of
  STrue -> {- In this branch, AVX2 is True -} someFunction
  SFalse -> {- In this branch, AVX2 is False -} error "AVX2 not available"

Documentation

type family AESNI :: Bool Source #

type family AMX_BF16 :: Bool Source #

type family AMX_FP16 :: Bool Source #

type family AMX_INT8 :: Bool Source #

type family AMX_TILE :: Bool Source #

type family AVX :: Bool Source #

type family AVX_VNNI :: Bool Source #

type family AVX10_1 :: Bool Source #

type family AVX10_2 :: Bool Source #

type family AVX2 :: Bool Source #

type family AVX512_BF16 :: Bool Source #

type family AVX512_BITALG :: Bool Source #

type family AVX512_FP16 :: Bool Source #

type family AVX512_IFMA :: Bool Source #

type family AVX512_VBMI :: Bool Source #

type family AVX512_VBMI2 :: Bool Source #

type family AVX512_VNNI :: Bool Source #

type family AVX512_VPOPCNTDQ :: Bool Source #

type family AVX512BW :: Bool Source #

type family AVX512CD :: Bool Source #

type family AVX512DQ :: Bool Source #

type family AVX512F :: Bool Source #

type family AVX512VL :: Bool Source #

type family BMI1 :: Bool Source #

type family BMI2 :: Bool Source #

type family F16C :: Bool Source #

type family FMA :: Bool Source #

type family GFNI :: Bool Source #

type family PCLMULQDQ :: Bool Source #

type family POPCNT :: Bool Source #

type family RDRAND :: Bool Source #

type family SHA :: Bool Source #

type family SSE3 :: Bool Source #

type family SSE4_1 :: Bool Source #

type family SSE4_2 :: Bool Source #

type family SSSE3 :: Bool Source #

type family VAES :: Bool Source #

type family VPCLMULQDQ :: Bool Source #

data SBool (x :: Bool) where Source #

Constructors

STrue :: SBool 'True 
SFalse :: SBool 'False