Safe Haskell | None |
---|---|
Language | GHC2021 |
System.CPUFeatures.X86.Constraint
Description
This module provides the constraint interface to detect CPU features.
You can mark your function with Has<FEATURE NAME> =>
to indicate that
it requires a specific CPU feature.
You can detect the availability and get the constraint Has<FEATURE NAME>
by pattern-matching on the variable query<FEATURE NAME>
.
Example:
-- This function requires AVX2 someFunction :: HasAVX2 => ... case queryAVX2 of Just Dict -> {- In this branch, HasAVX2 is available -} someFunction Nothing -> {- In this branch, HasAVX2 is not available -} error "AVX2 not available"
Documentation
class (AMX_BF16 ~ 'True, HasAMX_TILE) => HasAMX_BF16 Source #
Instances
(AMX_BF16 ~ 'True, HasAMX_TILE) => HasAMX_BF16 Source # | |
Defined in System.CPUFeatures.X86.Constraint.Unsafe |
queryAMX_BF16 :: Maybe (Dict HasAMX_BF16) Source #
class (AMX_FP16 ~ 'True, HasAMX_TILE) => HasAMX_FP16 Source #
Instances
(AMX_FP16 ~ 'True, HasAMX_TILE) => HasAMX_FP16 Source # | |
Defined in System.CPUFeatures.X86.Constraint.Unsafe |
queryAMX_FP16 :: Maybe (Dict HasAMX_FP16) Source #
class (AMX_INT8 ~ 'True, HasAMX_TILE) => HasAMX_INT8 Source #
Instances
(AMX_INT8 ~ 'True, HasAMX_TILE) => HasAMX_INT8 Source # | |
Defined in System.CPUFeatures.X86.Constraint.Unsafe |
queryAMX_INT8 :: Maybe (Dict HasAMX_INT8) Source #
class AMX_TILE ~ 'True => HasAMX_TILE Source #
Instances
AMX_TILE ~ 'True => HasAMX_TILE Source # | |
Defined in System.CPUFeatures.X86.Constraint.Unsafe |
queryAMX_TILE :: Maybe (Dict HasAMX_TILE) Source #
class (AVX_VNNI ~ 'True, HasAVX2) => HasAVX_VNNI Source #
Instances
(AVX_VNNI ~ 'True, HasAVX2) => HasAVX_VNNI Source # | |
Defined in System.CPUFeatures.X86.Constraint.Unsafe |
queryAVX_VNNI :: Maybe (Dict HasAVX_VNNI) Source #
class (AVX10_1 ~ 'True, HasAVX2, HasF16C, HasFMA) => HasAVX10_1 Source #
Instances
(AVX10_1 ~ 'True, HasAVX2, HasF16C, HasFMA) => HasAVX10_1 Source # | |
Defined in System.CPUFeatures.X86.Constraint.Unsafe |
queryAVX10_1 :: Maybe (Dict HasAVX10_1) Source #
class (AVX10_2 ~ 'True, HasAVX10_1) => HasAVX10_2 Source #
Instances
(AVX10_2 ~ 'True, HasAVX10_1) => HasAVX10_2 Source # | |
Defined in System.CPUFeatures.X86.Constraint.Unsafe |
queryAVX10_2 :: Maybe (Dict HasAVX10_2) Source #
class (AVX512_BF16 ~ 'True, HasAVX512BW) => HasAVX512_BF16 Source #
Instances
(AVX512_BF16 ~ 'True, HasAVX512BW) => HasAVX512_BF16 Source # | |
Defined in System.CPUFeatures.X86.Constraint.Unsafe |
class (AVX512_BITALG ~ 'True, HasAVX512BW) => HasAVX512_BITALG Source #
Instances
(AVX512_BITALG ~ 'True, HasAVX512BW) => HasAVX512_BITALG Source # | |
Defined in System.CPUFeatures.X86.Constraint.Unsafe |
class (AVX512_FP16 ~ 'True, HasAVX512BW) => HasAVX512_FP16 Source #
Instances
(AVX512_FP16 ~ 'True, HasAVX512BW) => HasAVX512_FP16 Source # | |
Defined in System.CPUFeatures.X86.Constraint.Unsafe |
class (AVX512_IFMA ~ 'True, HasAVX512F) => HasAVX512_IFMA Source #
Instances
(AVX512_IFMA ~ 'True, HasAVX512F) => HasAVX512_IFMA Source # | |
Defined in System.CPUFeatures.X86.Constraint.Unsafe |
class (AVX512_VBMI ~ 'True, HasAVX512BW) => HasAVX512_VBMI Source #
Instances
(AVX512_VBMI ~ 'True, HasAVX512BW) => HasAVX512_VBMI Source # | |
Defined in System.CPUFeatures.X86.Constraint.Unsafe |
class (AVX512_VBMI2 ~ 'True, HasAVX512BW) => HasAVX512_VBMI2 Source #
Instances
(AVX512_VBMI2 ~ 'True, HasAVX512BW) => HasAVX512_VBMI2 Source # | |
Defined in System.CPUFeatures.X86.Constraint.Unsafe |
class (AVX512_VNNI ~ 'True, HasAVX512F) => HasAVX512_VNNI Source #
Instances
(AVX512_VNNI ~ 'True, HasAVX512F) => HasAVX512_VNNI Source # | |
Defined in System.CPUFeatures.X86.Constraint.Unsafe |
class (AVX512_VPOPCNTDQ ~ 'True, HasAVX512F) => HasAVX512_VPOPCNTDQ Source #
Instances
(AVX512_VPOPCNTDQ ~ 'True, HasAVX512F) => HasAVX512_VPOPCNTDQ Source # | |
Defined in System.CPUFeatures.X86.Constraint.Unsafe |
class (AVX512BW ~ 'True, HasAVX512F) => HasAVX512BW Source #
Instances
(AVX512BW ~ 'True, HasAVX512F) => HasAVX512BW Source # | |
Defined in System.CPUFeatures.X86.Constraint.Unsafe |
queryAVX512BW :: Maybe (Dict HasAVX512BW) Source #
class (AVX512CD ~ 'True, HasAVX512F) => HasAVX512CD Source #
Instances
(AVX512CD ~ 'True, HasAVX512F) => HasAVX512CD Source # | |
Defined in System.CPUFeatures.X86.Constraint.Unsafe |
queryAVX512CD :: Maybe (Dict HasAVX512CD) Source #
class (AVX512DQ ~ 'True, HasAVX512F) => HasAVX512DQ Source #
Instances
(AVX512DQ ~ 'True, HasAVX512F) => HasAVX512DQ Source # | |
Defined in System.CPUFeatures.X86.Constraint.Unsafe |
queryAVX512DQ :: Maybe (Dict HasAVX512DQ) Source #
class (AVX512F ~ 'True, HasAVX2, HasF16C, HasFMA) => HasAVX512F Source #
Instances
(AVX512F ~ 'True, HasAVX2, HasF16C, HasFMA) => HasAVX512F Source # | |
Defined in System.CPUFeatures.X86.Constraint.Unsafe |
queryAVX512F :: Maybe (Dict HasAVX512F) Source #
class (AVX512VL ~ 'True, HasAVX512F) => HasAVX512VL Source #
Instances
(AVX512VL ~ 'True, HasAVX512F) => HasAVX512VL Source # | |
Defined in System.CPUFeatures.X86.Constraint.Unsafe |
queryAVX512VL :: Maybe (Dict HasAVX512VL) Source #
class PCLMULQDQ ~ 'True => HasPCLMULQDQ Source #
Instances
PCLMULQDQ ~ 'True => HasPCLMULQDQ Source # | |
Defined in System.CPUFeatures.X86.Constraint.Unsafe |
class (VPCLMULQDQ ~ 'True, HasAVX, HasPCLMULQDQ) => HasVPCLMULQDQ Source #
Instances
(VPCLMULQDQ ~ 'True, HasAVX, HasPCLMULQDQ) => HasVPCLMULQDQ Source # | |
Defined in System.CPUFeatures.X86.Constraint.Unsafe |