{-# OPTIONS_GHC -Wno-unused-imports #-}
{-# OPTIONS_HADDOCK hide, prune, not-home #-}
module MLIR.AST.Dialect.Generated.X86Vector where
import Prelude (Int, Double, Maybe(..), Bool(..), (++), (<$>), ($), (<>), Show)
import qualified Prelude
import Data.Int (Int64)
import qualified Data.Maybe
import Data.Array (Ix)
import qualified Data.Array.IArray as IArray
import qualified Data.ByteString as BS
import qualified Data.Map.Strict as M
import qualified Control.Monad
import MLIR.AST ( Attribute(..), Type(..), AbstractOperation(..), ResultTypes(..)
, Location(..), Signedness(..), DenseElements(..)
, NamedAttributes, Name
, pattern NoAttrs )
import qualified MLIR.AST as AST
import MLIR.AST.Builder (Value, EndOfBlock, MonadBlockBuilder, RegionBuilderT)
import qualified MLIR.AST.Builder as AST
import qualified MLIR.AST.IStorableArray as AST
import qualified MLIR.AST.PatternUtil as PatternUtil
import qualified MLIR.AST.Dialect.Affine as Affine
pattern DotBF16 :: () => () => Location -> Type -> operand -> operand -> operand -> AbstractOperation operand
pattern $bDotBF16 :: Location
-> Type
-> operand
-> operand
-> operand
-> AbstractOperation operand
$mDotBF16 :: forall r operand.
AbstractOperation operand
-> (Location -> Type -> operand -> operand -> operand -> r)
-> (Void# -> r)
-> r
DotBF16 loc ty0 src_ a_ b_ = Operation
{ opName = "x86vector.avx512.dot"
, opLocation = loc
, opResultTypes = Explicit [ty0]
, opOperands = [src_, a_, b_]
, opRegions = []
, opSuccessors = []
, opAttributes = (NoAttrs)
}
avx512_dot :: () => MonadBlockBuilder m => Type -> Value -> Value -> Value -> m Value
avx512_dot :: Type -> Value -> Value -> Value -> m Value
avx512_dot Type
ty0 Value
src_ Value
a_ Value
b_ = do
([Value] -> Value) -> m [Value] -> m Value
forall (m :: * -> *) a1 r. Monad m => (a1 -> r) -> m a1 -> m r
Control.Monad.liftM [Value] -> Value
forall a. [a] -> a
Prelude.head (Operation -> m [Value]
forall (m :: * -> *). MonadBlockBuilder m => Operation -> m [Value]
AST.emitOp (Operation :: forall operand.
Name
-> Location
-> ResultTypes
-> [operand]
-> [Region]
-> [Name]
-> Map Name Attribute
-> AbstractOperation operand
Operation
{ opName :: Name
opName = Name
"x86vector.avx512.dot"
, opLocation :: Location
opLocation = Location
UnknownLocation
, opResultTypes :: ResultTypes
opResultTypes = [Type] -> ResultTypes
Explicit [Type
ty0]
, opOperands :: [Name]
opOperands = [(Value -> Name
AST.operand Value
src_), (Value -> Name
AST.operand Value
a_), (Value -> Name
AST.operand Value
b_)]
, opRegions :: [Region]
opRegions = []
, opSuccessors :: [Name]
opSuccessors = []
, opAttributes :: Map Name Attribute
opAttributes = (Map Name Attribute
NoAttrs)
}))
pattern DotBF16Ps128Intr :: () => () => Location -> Type -> operand -> operand -> operand -> AbstractOperation operand
pattern $bDotBF16Ps128Intr :: Location
-> Type
-> operand
-> operand
-> operand
-> AbstractOperation operand
$mDotBF16Ps128Intr :: forall r operand.
AbstractOperation operand
-> (Location -> Type -> operand -> operand -> operand -> r)
-> (Void# -> r)
-> r
DotBF16Ps128Intr loc ty0 src_ a_ b_ = Operation
{ opName = "x86vector.avx512.intr.dpbf16ps.128"
, opLocation = loc
, opResultTypes = Explicit [ty0]
, opOperands = [src_, a_, b_]
, opRegions = []
, opSuccessors = []
, opAttributes = (NoAttrs)
}
avx512_intr_dpbf16ps_128 :: () => MonadBlockBuilder m => Type -> Value -> Value -> Value -> m Value
avx512_intr_dpbf16ps_128 :: Type -> Value -> Value -> Value -> m Value
avx512_intr_dpbf16ps_128 Type
ty0 Value
src_ Value
a_ Value
b_ = do
([Value] -> Value) -> m [Value] -> m Value
forall (m :: * -> *) a1 r. Monad m => (a1 -> r) -> m a1 -> m r
Control.Monad.liftM [Value] -> Value
forall a. [a] -> a
Prelude.head (Operation -> m [Value]
forall (m :: * -> *). MonadBlockBuilder m => Operation -> m [Value]
AST.emitOp (Operation :: forall operand.
Name
-> Location
-> ResultTypes
-> [operand]
-> [Region]
-> [Name]
-> Map Name Attribute
-> AbstractOperation operand
Operation
{ opName :: Name
opName = Name
"x86vector.avx512.intr.dpbf16ps.128"
, opLocation :: Location
opLocation = Location
UnknownLocation
, opResultTypes :: ResultTypes
opResultTypes = [Type] -> ResultTypes
Explicit [Type
ty0]
, opOperands :: [Name]
opOperands = [(Value -> Name
AST.operand Value
src_), (Value -> Name
AST.operand Value
a_), (Value -> Name
AST.operand Value
b_)]
, opRegions :: [Region]
opRegions = []
, opSuccessors :: [Name]
opSuccessors = []
, opAttributes :: Map Name Attribute
opAttributes = (Map Name Attribute
NoAttrs)
}))
pattern DotBF16Ps256Intr :: () => () => Location -> Type -> operand -> operand -> operand -> AbstractOperation operand
pattern $bDotBF16Ps256Intr :: Location
-> Type
-> operand
-> operand
-> operand
-> AbstractOperation operand
$mDotBF16Ps256Intr :: forall r operand.
AbstractOperation operand
-> (Location -> Type -> operand -> operand -> operand -> r)
-> (Void# -> r)
-> r
DotBF16Ps256Intr loc ty0 src_ a_ b_ = Operation
{ opName = "x86vector.avx512.intr.dpbf16ps.256"
, opLocation = loc
, opResultTypes = Explicit [ty0]
, opOperands = [src_, a_, b_]
, opRegions = []
, opSuccessors = []
, opAttributes = (NoAttrs)
}
avx512_intr_dpbf16ps_256 :: () => MonadBlockBuilder m => Type -> Value -> Value -> Value -> m Value
avx512_intr_dpbf16ps_256 :: Type -> Value -> Value -> Value -> m Value
avx512_intr_dpbf16ps_256 Type
ty0 Value
src_ Value
a_ Value
b_ = do
([Value] -> Value) -> m [Value] -> m Value
forall (m :: * -> *) a1 r. Monad m => (a1 -> r) -> m a1 -> m r
Control.Monad.liftM [Value] -> Value
forall a. [a] -> a
Prelude.head (Operation -> m [Value]
forall (m :: * -> *). MonadBlockBuilder m => Operation -> m [Value]
AST.emitOp (Operation :: forall operand.
Name
-> Location
-> ResultTypes
-> [operand]
-> [Region]
-> [Name]
-> Map Name Attribute
-> AbstractOperation operand
Operation
{ opName :: Name
opName = Name
"x86vector.avx512.intr.dpbf16ps.256"
, opLocation :: Location
opLocation = Location
UnknownLocation
, opResultTypes :: ResultTypes
opResultTypes = [Type] -> ResultTypes
Explicit [Type
ty0]
, opOperands :: [Name]
opOperands = [(Value -> Name
AST.operand Value
src_), (Value -> Name
AST.operand Value
a_), (Value -> Name
AST.operand Value
b_)]
, opRegions :: [Region]
opRegions = []
, opSuccessors :: [Name]
opSuccessors = []
, opAttributes :: Map Name Attribute
opAttributes = (Map Name Attribute
NoAttrs)
}))
pattern DotBF16Ps512Intr :: () => () => Location -> Type -> operand -> operand -> operand -> AbstractOperation operand
pattern $bDotBF16Ps512Intr :: Location
-> Type
-> operand
-> operand
-> operand
-> AbstractOperation operand
$mDotBF16Ps512Intr :: forall r operand.
AbstractOperation operand
-> (Location -> Type -> operand -> operand -> operand -> r)
-> (Void# -> r)
-> r
DotBF16Ps512Intr loc ty0 src_ a_ b_ = Operation
{ opName = "x86vector.avx512.intr.dpbf16ps.512"
, opLocation = loc
, opResultTypes = Explicit [ty0]
, opOperands = [src_, a_, b_]
, opRegions = []
, opSuccessors = []
, opAttributes = (NoAttrs)
}
avx512_intr_dpbf16ps_512 :: () => MonadBlockBuilder m => Type -> Value -> Value -> Value -> m Value
avx512_intr_dpbf16ps_512 :: Type -> Value -> Value -> Value -> m Value
avx512_intr_dpbf16ps_512 Type
ty0 Value
src_ Value
a_ Value
b_ = do
([Value] -> Value) -> m [Value] -> m Value
forall (m :: * -> *) a1 r. Monad m => (a1 -> r) -> m a1 -> m r
Control.Monad.liftM [Value] -> Value
forall a. [a] -> a
Prelude.head (Operation -> m [Value]
forall (m :: * -> *). MonadBlockBuilder m => Operation -> m [Value]
AST.emitOp (Operation :: forall operand.
Name
-> Location
-> ResultTypes
-> [operand]
-> [Region]
-> [Name]
-> Map Name Attribute
-> AbstractOperation operand
Operation
{ opName :: Name
opName = Name
"x86vector.avx512.intr.dpbf16ps.512"
, opLocation :: Location
opLocation = Location
UnknownLocation
, opResultTypes :: ResultTypes
opResultTypes = [Type] -> ResultTypes
Explicit [Type
ty0]
, opOperands :: [Name]
opOperands = [(Value -> Name
AST.operand Value
src_), (Value -> Name
AST.operand Value
a_), (Value -> Name
AST.operand Value
b_)]
, opRegions :: [Region]
opRegions = []
, opSuccessors :: [Name]
opSuccessors = []
, opAttributes :: Map Name Attribute
opAttributes = (Map Name Attribute
NoAttrs)
}))
pattern DotIntr :: () => () => Location -> Type -> operand -> operand -> operand -> AbstractOperation operand
pattern $bDotIntr :: Location
-> Type
-> operand
-> operand
-> operand
-> AbstractOperation operand
$mDotIntr :: forall r operand.
AbstractOperation operand
-> (Location -> Type -> operand -> operand -> operand -> r)
-> (Void# -> r)
-> r
DotIntr loc ty0 a_ b_ c_ = Operation
{ opName = "x86vector.avx.intr.dp.ps.256"
, opLocation = loc
, opResultTypes = Explicit [ty0]
, opOperands = [a_, b_, c_]
, opRegions = []
, opSuccessors = []
, opAttributes = (NoAttrs)
}
avx_intr_dp_ps_256 :: () => MonadBlockBuilder m => Type -> Value -> Value -> Value -> m Value
avx_intr_dp_ps_256 :: Type -> Value -> Value -> Value -> m Value
avx_intr_dp_ps_256 Type
ty0 Value
a_ Value
b_ Value
c_ = do
([Value] -> Value) -> m [Value] -> m Value
forall (m :: * -> *) a1 r. Monad m => (a1 -> r) -> m a1 -> m r
Control.Monad.liftM [Value] -> Value
forall a. [a] -> a
Prelude.head (Operation -> m [Value]
forall (m :: * -> *). MonadBlockBuilder m => Operation -> m [Value]
AST.emitOp (Operation :: forall operand.
Name
-> Location
-> ResultTypes
-> [operand]
-> [Region]
-> [Name]
-> Map Name Attribute
-> AbstractOperation operand
Operation
{ opName :: Name
opName = Name
"x86vector.avx.intr.dp.ps.256"
, opLocation :: Location
opLocation = Location
UnknownLocation
, opResultTypes :: ResultTypes
opResultTypes = [Type] -> ResultTypes
Explicit [Type
ty0]
, opOperands :: [Name]
opOperands = [(Value -> Name
AST.operand Value
a_), (Value -> Name
AST.operand Value
b_), (Value -> Name
AST.operand Value
c_)]
, opRegions :: [Region]
opRegions = []
, opSuccessors :: [Name]
opSuccessors = []
, opAttributes :: Map Name Attribute
opAttributes = (Map Name Attribute
NoAttrs)
}))
pattern Dot :: () => () => Location -> Type -> operand -> operand -> AbstractOperation operand
pattern $bDot :: Location -> Type -> operand -> operand -> AbstractOperation operand
$mDot :: forall r operand.
AbstractOperation operand
-> (Location -> Type -> operand -> operand -> r)
-> (Void# -> r)
-> r
Dot loc ty a_ b_ = Operation
{ opName = "x86vector.avx.intr.dot"
, opLocation = loc
, opResultTypes = Explicit [ty]
, opOperands = [a_, b_]
, opRegions = []
, opSuccessors = []
, opAttributes = (NoAttrs)
}
avx_intr_dot :: () => MonadBlockBuilder m => Value -> Value -> m Value
avx_intr_dot :: Value -> Value -> m Value
avx_intr_dot Value
a_ Value
b_ = do
([Value] -> Value) -> m [Value] -> m Value
forall (m :: * -> *) a1 r. Monad m => (a1 -> r) -> m a1 -> m r
Control.Monad.liftM [Value] -> Value
forall a. [a] -> a
Prelude.head (Operation -> m [Value]
forall (m :: * -> *). MonadBlockBuilder m => Operation -> m [Value]
AST.emitOp (Operation :: forall operand.
Name
-> Location
-> ResultTypes
-> [operand]
-> [Region]
-> [Name]
-> Map Name Attribute
-> AbstractOperation operand
Operation
{ opName :: Name
opName = Name
"x86vector.avx.intr.dot"
, opLocation :: Location
opLocation = Location
UnknownLocation
, opResultTypes :: ResultTypes
opResultTypes = [Type] -> ResultTypes
Explicit [(Value -> Type
AST.typeOf Value
a_)]
, opOperands :: [Name]
opOperands = [(Value -> Name
AST.operand Value
a_), (Value -> Name
AST.operand Value
b_)]
, opRegions :: [Region]
opRegions = []
, opSuccessors :: [Name]
opSuccessors = []
, opAttributes :: Map Name Attribute
opAttributes = (Map Name Attribute
NoAttrs)
}))
pattern MaskCompressIntr :: () => () => Location -> Type -> operand -> operand -> operand -> AbstractOperation operand
pattern $bMaskCompressIntr :: Location
-> Type
-> operand
-> operand
-> operand
-> AbstractOperation operand
$mMaskCompressIntr :: forall r operand.
AbstractOperation operand
-> (Location -> Type -> operand -> operand -> operand -> r)
-> (Void# -> r)
-> r
MaskCompressIntr loc ty0 a_ src_ k_ = Operation
{ opName = "x86vector.avx512.intr.mask.compress"
, opLocation = loc
, opResultTypes = Explicit [ty0]
, opOperands = [a_, src_, k_]
, opRegions = []
, opSuccessors = []
, opAttributes = (NoAttrs)
}
avx512_intr_mask_compress :: () => MonadBlockBuilder m => Type -> Value -> Value -> Value -> m Value
avx512_intr_mask_compress :: Type -> Value -> Value -> Value -> m Value
avx512_intr_mask_compress Type
ty0 Value
a_ Value
src_ Value
k_ = do
([Value] -> Value) -> m [Value] -> m Value
forall (m :: * -> *) a1 r. Monad m => (a1 -> r) -> m a1 -> m r
Control.Monad.liftM [Value] -> Value
forall a. [a] -> a
Prelude.head (Operation -> m [Value]
forall (m :: * -> *). MonadBlockBuilder m => Operation -> m [Value]
AST.emitOp (Operation :: forall operand.
Name
-> Location
-> ResultTypes
-> [operand]
-> [Region]
-> [Name]
-> Map Name Attribute
-> AbstractOperation operand
Operation
{ opName :: Name
opName = Name
"x86vector.avx512.intr.mask.compress"
, opLocation :: Location
opLocation = Location
UnknownLocation
, opResultTypes :: ResultTypes
opResultTypes = [Type] -> ResultTypes
Explicit [Type
ty0]
, opOperands :: [Name]
opOperands = [(Value -> Name
AST.operand Value
a_), (Value -> Name
AST.operand Value
src_), (Value -> Name
AST.operand Value
k_)]
, opRegions :: [Region]
opRegions = []
, opSuccessors :: [Name]
opSuccessors = []
, opAttributes :: Map Name Attribute
opAttributes = (Map Name Attribute
NoAttrs)
}))
avx512_mask_compress :: () => MonadBlockBuilder m => Type -> Value -> Value -> Maybe Value -> m Value
avx512_mask_compress :: Type -> Value -> Value -> Maybe Value -> m Value
avx512_mask_compress Type
ty0 Value
k_ Value
a_ Maybe Value
src_ = do
([Value] -> Value) -> m [Value] -> m Value
forall (m :: * -> *) a1 r. Monad m => (a1 -> r) -> m a1 -> m r
Control.Monad.liftM [Value] -> Value
forall a. [a] -> a
Prelude.head (Operation -> m [Value]
forall (m :: * -> *). MonadBlockBuilder m => Operation -> m [Value]
AST.emitOp (Operation :: forall operand.
Name
-> Location
-> ResultTypes
-> [operand]
-> [Region]
-> [Name]
-> Map Name Attribute
-> AbstractOperation operand
Operation
{ opName :: Name
opName = Name
"x86vector.avx512.mask.compress"
, opLocation :: Location
opLocation = Location
UnknownLocation
, opResultTypes :: ResultTypes
opResultTypes = [Type] -> ResultTypes
Explicit [Type
ty0]
, opOperands :: [Name]
opOperands = ([(Value -> Name
AST.operand Value
k_)] [Name] -> [Name] -> [Name]
forall a. [a] -> [a] -> [a]
++ [(Value -> Name
AST.operand Value
a_)] [Name] -> [Name] -> [Name]
forall a. [a] -> [a] -> [a]
++ (Maybe Name -> [Name]
forall a. Maybe a -> [a]
Data.Maybe.maybeToList (Value -> Name
AST.operand (Value -> Name) -> Maybe Value -> Maybe Name
forall (f :: * -> *) a b. Functor f => (a -> b) -> f a -> f b
<$> Maybe Value
src_)))
, opRegions :: [Region]
opRegions = []
, opSuccessors :: [Name]
opSuccessors = []
, opAttributes :: Map Name Attribute
opAttributes = (Map Name Attribute
NoAttrs)
}))
pattern MaskRndScale :: () => () => Location -> Type -> operand -> operand -> operand -> operand -> operand -> AbstractOperation operand
pattern $bMaskRndScale :: Location
-> Type
-> operand
-> operand
-> operand
-> operand
-> operand
-> AbstractOperation operand
$mMaskRndScale :: forall r operand.
AbstractOperation operand
-> (Location
-> Type
-> operand
-> operand
-> operand
-> operand
-> operand
-> r)
-> (Void# -> r)
-> r
MaskRndScale loc ty0 src_ k_ a_ imm_ rounding_ = Operation
{ opName = "x86vector.avx512.mask.rndscale"
, opLocation = loc
, opResultTypes = Explicit [ty0]
, opOperands = [src_, k_, a_, imm_, rounding_]
, opRegions = []
, opSuccessors = []
, opAttributes = (NoAttrs)
}
avx512_mask_rndscale :: () => MonadBlockBuilder m => Type -> Value -> Value -> Value -> Value -> Value -> m Value
avx512_mask_rndscale :: Type -> Value -> Value -> Value -> Value -> Value -> m Value
avx512_mask_rndscale Type
ty0 Value
src_ Value
k_ Value
a_ Value
imm_ Value
rounding_ = do
([Value] -> Value) -> m [Value] -> m Value
forall (m :: * -> *) a1 r. Monad m => (a1 -> r) -> m a1 -> m r
Control.Monad.liftM [Value] -> Value
forall a. [a] -> a
Prelude.head (Operation -> m [Value]
forall (m :: * -> *). MonadBlockBuilder m => Operation -> m [Value]
AST.emitOp (Operation :: forall operand.
Name
-> Location
-> ResultTypes
-> [operand]
-> [Region]
-> [Name]
-> Map Name Attribute
-> AbstractOperation operand
Operation
{ opName :: Name
opName = Name
"x86vector.avx512.mask.rndscale"
, opLocation :: Location
opLocation = Location
UnknownLocation
, opResultTypes :: ResultTypes
opResultTypes = [Type] -> ResultTypes
Explicit [Type
ty0]
, opOperands :: [Name]
opOperands = [(Value -> Name
AST.operand Value
src_), (Value -> Name
AST.operand Value
k_), (Value -> Name
AST.operand Value
a_), (Value -> Name
AST.operand Value
imm_), (Value -> Name
AST.operand Value
rounding_)]
, opRegions :: [Region]
opRegions = []
, opSuccessors :: [Name]
opSuccessors = []
, opAttributes :: Map Name Attribute
opAttributes = (Map Name Attribute
NoAttrs)
}))
pattern MaskRndScalePDIntr :: () => () => Location -> Type -> operand -> operand -> operand -> operand -> operand -> AbstractOperation operand
pattern $bMaskRndScalePDIntr :: Location
-> Type
-> operand
-> operand
-> operand
-> operand
-> operand
-> AbstractOperation operand
$mMaskRndScalePDIntr :: forall r operand.
AbstractOperation operand
-> (Location
-> Type
-> operand
-> operand
-> operand
-> operand
-> operand
-> r)
-> (Void# -> r)
-> r
MaskRndScalePDIntr loc ty0 src_ k_ a_ imm_ rounding_ = Operation
{ opName = "x86vector.avx512.intr.mask.rndscale.pd.512"
, opLocation = loc
, opResultTypes = Explicit [ty0]
, opOperands = [src_, k_, a_, imm_, rounding_]
, opRegions = []
, opSuccessors = []
, opAttributes = (NoAttrs)
}
avx512_intr_mask_rndscale_pd_512 :: () => MonadBlockBuilder m => Type -> Value -> Value -> Value -> Value -> Value -> m Value
avx512_intr_mask_rndscale_pd_512 :: Type -> Value -> Value -> Value -> Value -> Value -> m Value
avx512_intr_mask_rndscale_pd_512 Type
ty0 Value
src_ Value
k_ Value
a_ Value
imm_ Value
rounding_ = do
([Value] -> Value) -> m [Value] -> m Value
forall (m :: * -> *) a1 r. Monad m => (a1 -> r) -> m a1 -> m r
Control.Monad.liftM [Value] -> Value
forall a. [a] -> a
Prelude.head (Operation -> m [Value]
forall (m :: * -> *). MonadBlockBuilder m => Operation -> m [Value]
AST.emitOp (Operation :: forall operand.
Name
-> Location
-> ResultTypes
-> [operand]
-> [Region]
-> [Name]
-> Map Name Attribute
-> AbstractOperation operand
Operation
{ opName :: Name
opName = Name
"x86vector.avx512.intr.mask.rndscale.pd.512"
, opLocation :: Location
opLocation = Location
UnknownLocation
, opResultTypes :: ResultTypes
opResultTypes = [Type] -> ResultTypes
Explicit [Type
ty0]
, opOperands :: [Name]
opOperands = [(Value -> Name
AST.operand Value
src_), (Value -> Name
AST.operand Value
k_), (Value -> Name
AST.operand Value
a_), (Value -> Name
AST.operand Value
imm_), (Value -> Name
AST.operand Value
rounding_)]
, opRegions :: [Region]
opRegions = []
, opSuccessors :: [Name]
opSuccessors = []
, opAttributes :: Map Name Attribute
opAttributes = (Map Name Attribute
NoAttrs)
}))
pattern MaskRndScalePSIntr :: () => () => Location -> Type -> operand -> operand -> operand -> operand -> operand -> AbstractOperation operand
pattern $bMaskRndScalePSIntr :: Location
-> Type
-> operand
-> operand
-> operand
-> operand
-> operand
-> AbstractOperation operand
$mMaskRndScalePSIntr :: forall r operand.
AbstractOperation operand
-> (Location
-> Type
-> operand
-> operand
-> operand
-> operand
-> operand
-> r)
-> (Void# -> r)
-> r
MaskRndScalePSIntr loc ty0 src_ k_ a_ imm_ rounding_ = Operation
{ opName = "x86vector.avx512.intr.mask.rndscale.ps.512"
, opLocation = loc
, opResultTypes = Explicit [ty0]
, opOperands = [src_, k_, a_, imm_, rounding_]
, opRegions = []
, opSuccessors = []
, opAttributes = (NoAttrs)
}
avx512_intr_mask_rndscale_ps_512 :: () => MonadBlockBuilder m => Type -> Value -> Value -> Value -> Value -> Value -> m Value
avx512_intr_mask_rndscale_ps_512 :: Type -> Value -> Value -> Value -> Value -> Value -> m Value
avx512_intr_mask_rndscale_ps_512 Type
ty0 Value
src_ Value
k_ Value
a_ Value
imm_ Value
rounding_ = do
([Value] -> Value) -> m [Value] -> m Value
forall (m :: * -> *) a1 r. Monad m => (a1 -> r) -> m a1 -> m r
Control.Monad.liftM [Value] -> Value
forall a. [a] -> a
Prelude.head (Operation -> m [Value]
forall (m :: * -> *). MonadBlockBuilder m => Operation -> m [Value]
AST.emitOp (Operation :: forall operand.
Name
-> Location
-> ResultTypes
-> [operand]
-> [Region]
-> [Name]
-> Map Name Attribute
-> AbstractOperation operand
Operation
{ opName :: Name
opName = Name
"x86vector.avx512.intr.mask.rndscale.ps.512"
, opLocation :: Location
opLocation = Location
UnknownLocation
, opResultTypes :: ResultTypes
opResultTypes = [Type] -> ResultTypes
Explicit [Type
ty0]
, opOperands :: [Name]
opOperands = [(Value -> Name
AST.operand Value
src_), (Value -> Name
AST.operand Value
k_), (Value -> Name
AST.operand Value
a_), (Value -> Name
AST.operand Value
imm_), (Value -> Name
AST.operand Value
rounding_)]
, opRegions :: [Region]
opRegions = []
, opSuccessors :: [Name]
opSuccessors = []
, opAttributes :: Map Name Attribute
opAttributes = (Map Name Attribute
NoAttrs)
}))
pattern MaskScaleF :: () => () => Location -> Type -> operand -> operand -> operand -> operand -> operand -> AbstractOperation operand
pattern $bMaskScaleF :: Location
-> Type
-> operand
-> operand
-> operand
-> operand
-> operand
-> AbstractOperation operand
$mMaskScaleF :: forall r operand.
AbstractOperation operand
-> (Location
-> Type
-> operand
-> operand
-> operand
-> operand
-> operand
-> r)
-> (Void# -> r)
-> r
MaskScaleF loc ty0 src_ a_ b_ k_ rounding_ = Operation
{ opName = "x86vector.avx512.mask.scalef"
, opLocation = loc
, opResultTypes = Explicit [ty0]
, opOperands = [src_, a_, b_, k_, rounding_]
, opRegions = []
, opSuccessors = []
, opAttributes = (NoAttrs)
}
avx512_mask_scalef :: () => MonadBlockBuilder m => Type -> Value -> Value -> Value -> Value -> Value -> m Value
avx512_mask_scalef :: Type -> Value -> Value -> Value -> Value -> Value -> m Value
avx512_mask_scalef Type
ty0 Value
src_ Value
a_ Value
b_ Value
k_ Value
rounding_ = do
([Value] -> Value) -> m [Value] -> m Value
forall (m :: * -> *) a1 r. Monad m => (a1 -> r) -> m a1 -> m r
Control.Monad.liftM [Value] -> Value
forall a. [a] -> a
Prelude.head (Operation -> m [Value]
forall (m :: * -> *). MonadBlockBuilder m => Operation -> m [Value]
AST.emitOp (Operation :: forall operand.
Name
-> Location
-> ResultTypes
-> [operand]
-> [Region]
-> [Name]
-> Map Name Attribute
-> AbstractOperation operand
Operation
{ opName :: Name
opName = Name
"x86vector.avx512.mask.scalef"
, opLocation :: Location
opLocation = Location
UnknownLocation
, opResultTypes :: ResultTypes
opResultTypes = [Type] -> ResultTypes
Explicit [Type
ty0]
, opOperands :: [Name]
opOperands = [(Value -> Name
AST.operand Value
src_), (Value -> Name
AST.operand Value
a_), (Value -> Name
AST.operand Value
b_), (Value -> Name
AST.operand Value
k_), (Value -> Name
AST.operand Value
rounding_)]
, opRegions :: [Region]
opRegions = []
, opSuccessors :: [Name]
opSuccessors = []
, opAttributes :: Map Name Attribute
opAttributes = (Map Name Attribute
NoAttrs)
}))
pattern MaskScaleFPDIntr :: () => () => Location -> Type -> operand -> operand -> operand -> operand -> operand -> AbstractOperation operand
pattern $bMaskScaleFPDIntr :: Location
-> Type
-> operand
-> operand
-> operand
-> operand
-> operand
-> AbstractOperation operand
$mMaskScaleFPDIntr :: forall r operand.
AbstractOperation operand
-> (Location
-> Type
-> operand
-> operand
-> operand
-> operand
-> operand
-> r)
-> (Void# -> r)
-> r
MaskScaleFPDIntr loc ty0 src_ a_ b_ k_ rounding_ = Operation
{ opName = "x86vector.avx512.intr.mask.scalef.pd.512"
, opLocation = loc
, opResultTypes = Explicit [ty0]
, opOperands = [src_, a_, b_, k_, rounding_]
, opRegions = []
, opSuccessors = []
, opAttributes = (NoAttrs)
}
avx512_intr_mask_scalef_pd_512 :: () => MonadBlockBuilder m => Type -> Value -> Value -> Value -> Value -> Value -> m Value
avx512_intr_mask_scalef_pd_512 :: Type -> Value -> Value -> Value -> Value -> Value -> m Value
avx512_intr_mask_scalef_pd_512 Type
ty0 Value
src_ Value
a_ Value
b_ Value
k_ Value
rounding_ = do
([Value] -> Value) -> m [Value] -> m Value
forall (m :: * -> *) a1 r. Monad m => (a1 -> r) -> m a1 -> m r
Control.Monad.liftM [Value] -> Value
forall a. [a] -> a
Prelude.head (Operation -> m [Value]
forall (m :: * -> *). MonadBlockBuilder m => Operation -> m [Value]
AST.emitOp (Operation :: forall operand.
Name
-> Location
-> ResultTypes
-> [operand]
-> [Region]
-> [Name]
-> Map Name Attribute
-> AbstractOperation operand
Operation
{ opName :: Name
opName = Name
"x86vector.avx512.intr.mask.scalef.pd.512"
, opLocation :: Location
opLocation = Location
UnknownLocation
, opResultTypes :: ResultTypes
opResultTypes = [Type] -> ResultTypes
Explicit [Type
ty0]
, opOperands :: [Name]
opOperands = [(Value -> Name
AST.operand Value
src_), (Value -> Name
AST.operand Value
a_), (Value -> Name
AST.operand Value
b_), (Value -> Name
AST.operand Value
k_), (Value -> Name
AST.operand Value
rounding_)]
, opRegions :: [Region]
opRegions = []
, opSuccessors :: [Name]
opSuccessors = []
, opAttributes :: Map Name Attribute
opAttributes = (Map Name Attribute
NoAttrs)
}))
pattern MaskScaleFPSIntr :: () => () => Location -> Type -> operand -> operand -> operand -> operand -> operand -> AbstractOperation operand
pattern $bMaskScaleFPSIntr :: Location
-> Type
-> operand
-> operand
-> operand
-> operand
-> operand
-> AbstractOperation operand
$mMaskScaleFPSIntr :: forall r operand.
AbstractOperation operand
-> (Location
-> Type
-> operand
-> operand
-> operand
-> operand
-> operand
-> r)
-> (Void# -> r)
-> r
MaskScaleFPSIntr loc ty0 src_ a_ b_ k_ rounding_ = Operation
{ opName = "x86vector.avx512.intr.mask.scalef.ps.512"
, opLocation = loc
, opResultTypes = Explicit [ty0]
, opOperands = [src_, a_, b_, k_, rounding_]
, opRegions = []
, opSuccessors = []
, opAttributes = (NoAttrs)
}
avx512_intr_mask_scalef_ps_512 :: () => MonadBlockBuilder m => Type -> Value -> Value -> Value -> Value -> Value -> m Value
avx512_intr_mask_scalef_ps_512 :: Type -> Value -> Value -> Value -> Value -> Value -> m Value
avx512_intr_mask_scalef_ps_512 Type
ty0 Value
src_ Value
a_ Value
b_ Value
k_ Value
rounding_ = do
([Value] -> Value) -> m [Value] -> m Value
forall (m :: * -> *) a1 r. Monad m => (a1 -> r) -> m a1 -> m r
Control.Monad.liftM [Value] -> Value
forall a. [a] -> a
Prelude.head (Operation -> m [Value]
forall (m :: * -> *). MonadBlockBuilder m => Operation -> m [Value]
AST.emitOp (Operation :: forall operand.
Name
-> Location
-> ResultTypes
-> [operand]
-> [Region]
-> [Name]
-> Map Name Attribute
-> AbstractOperation operand
Operation
{ opName :: Name
opName = Name
"x86vector.avx512.intr.mask.scalef.ps.512"
, opLocation :: Location
opLocation = Location
UnknownLocation
, opResultTypes :: ResultTypes
opResultTypes = [Type] -> ResultTypes
Explicit [Type
ty0]
, opOperands :: [Name]
opOperands = [(Value -> Name
AST.operand Value
src_), (Value -> Name
AST.operand Value
a_), (Value -> Name
AST.operand Value
b_), (Value -> Name
AST.operand Value
k_), (Value -> Name
AST.operand Value
rounding_)]
, opRegions :: [Region]
opRegions = []
, opSuccessors :: [Name]
opSuccessors = []
, opAttributes :: Map Name Attribute
opAttributes = (Map Name Attribute
NoAttrs)
}))
pattern RsqrtIntr :: () => () => Location -> Type -> operand -> AbstractOperation operand
pattern $bRsqrtIntr :: Location -> Type -> operand -> AbstractOperation operand
$mRsqrtIntr :: forall r operand.
AbstractOperation operand
-> (Location -> Type -> operand -> r) -> (Void# -> r) -> r
RsqrtIntr loc ty a_ = Operation
{ opName = "x86vector.avx.intr.rsqrt.ps.256"
, opLocation = loc
, opResultTypes = Explicit [ty]
, opOperands = [a_]
, opRegions = []
, opSuccessors = []
, opAttributes = (NoAttrs)
}
avx_intr_rsqrt_ps_256 :: () => MonadBlockBuilder m => Value -> m Value
avx_intr_rsqrt_ps_256 :: Value -> m Value
avx_intr_rsqrt_ps_256 Value
a_ = do
([Value] -> Value) -> m [Value] -> m Value
forall (m :: * -> *) a1 r. Monad m => (a1 -> r) -> m a1 -> m r
Control.Monad.liftM [Value] -> Value
forall a. [a] -> a
Prelude.head (Operation -> m [Value]
forall (m :: * -> *). MonadBlockBuilder m => Operation -> m [Value]
AST.emitOp (Operation :: forall operand.
Name
-> Location
-> ResultTypes
-> [operand]
-> [Region]
-> [Name]
-> Map Name Attribute
-> AbstractOperation operand
Operation
{ opName :: Name
opName = Name
"x86vector.avx.intr.rsqrt.ps.256"
, opLocation :: Location
opLocation = Location
UnknownLocation
, opResultTypes :: ResultTypes
opResultTypes = [Type] -> ResultTypes
Explicit [(Value -> Type
AST.typeOf Value
a_)]
, opOperands :: [Name]
opOperands = [(Value -> Name
AST.operand Value
a_)]
, opRegions :: [Region]
opRegions = []
, opSuccessors :: [Name]
opSuccessors = []
, opAttributes :: Map Name Attribute
opAttributes = (Map Name Attribute
NoAttrs)
}))
pattern Rsqrt :: () => () => Location -> Type -> operand -> AbstractOperation operand
pattern $bRsqrt :: Location -> Type -> operand -> AbstractOperation operand
$mRsqrt :: forall r operand.
AbstractOperation operand
-> (Location -> Type -> operand -> r) -> (Void# -> r) -> r
Rsqrt loc ty a_ = Operation
{ opName = "x86vector.avx.rsqrt"
, opLocation = loc
, opResultTypes = Explicit [ty]
, opOperands = [a_]
, opRegions = []
, opSuccessors = []
, opAttributes = (NoAttrs)
}
avx_rsqrt :: () => MonadBlockBuilder m => Value -> m Value
avx_rsqrt :: Value -> m Value
avx_rsqrt Value
a_ = do
([Value] -> Value) -> m [Value] -> m Value
forall (m :: * -> *) a1 r. Monad m => (a1 -> r) -> m a1 -> m r
Control.Monad.liftM [Value] -> Value
forall a. [a] -> a
Prelude.head (Operation -> m [Value]
forall (m :: * -> *). MonadBlockBuilder m => Operation -> m [Value]
AST.emitOp (Operation :: forall operand.
Name
-> Location
-> ResultTypes
-> [operand]
-> [Region]
-> [Name]
-> Map Name Attribute
-> AbstractOperation operand
Operation
{ opName :: Name
opName = Name
"x86vector.avx.rsqrt"
, opLocation :: Location
opLocation = Location
UnknownLocation
, opResultTypes :: ResultTypes
opResultTypes = [Type] -> ResultTypes
Explicit [(Value -> Type
AST.typeOf Value
a_)]
, opOperands :: [Name]
opOperands = [(Value -> Name
AST.operand Value
a_)]
, opRegions :: [Region]
opRegions = []
, opSuccessors :: [Name]
opSuccessors = []
, opAttributes :: Map Name Attribute
opAttributes = (Map Name Attribute
NoAttrs)
}))
pattern Vp2IntersectDIntr :: () => () => Location -> Type -> operand -> operand -> AbstractOperation operand
pattern $bVp2IntersectDIntr :: Location -> Type -> operand -> operand -> AbstractOperation operand
$mVp2IntersectDIntr :: forall r operand.
AbstractOperation operand
-> (Location -> Type -> operand -> operand -> r)
-> (Void# -> r)
-> r
Vp2IntersectDIntr loc ty0 a_ b_ = Operation
{ opName = "x86vector.avx512.intr.vp2intersect.d.512"
, opLocation = loc
, opResultTypes = Explicit [ty0]
, opOperands = [a_, b_]
, opRegions = []
, opSuccessors = []
, opAttributes = (NoAttrs)
}
avx512_intr_vp2intersect_d_512 :: () => MonadBlockBuilder m => Type -> Value -> Value -> m Value
avx512_intr_vp2intersect_d_512 :: Type -> Value -> Value -> m Value
avx512_intr_vp2intersect_d_512 Type
ty0 Value
a_ Value
b_ = do
([Value] -> Value) -> m [Value] -> m Value
forall (m :: * -> *) a1 r. Monad m => (a1 -> r) -> m a1 -> m r
Control.Monad.liftM [Value] -> Value
forall a. [a] -> a
Prelude.head (Operation -> m [Value]
forall (m :: * -> *). MonadBlockBuilder m => Operation -> m [Value]
AST.emitOp (Operation :: forall operand.
Name
-> Location
-> ResultTypes
-> [operand]
-> [Region]
-> [Name]
-> Map Name Attribute
-> AbstractOperation operand
Operation
{ opName :: Name
opName = Name
"x86vector.avx512.intr.vp2intersect.d.512"
, opLocation :: Location
opLocation = Location
UnknownLocation
, opResultTypes :: ResultTypes
opResultTypes = [Type] -> ResultTypes
Explicit [Type
ty0]
, opOperands :: [Name]
opOperands = [(Value -> Name
AST.operand Value
a_), (Value -> Name
AST.operand Value
b_)]
, opRegions :: [Region]
opRegions = []
, opSuccessors :: [Name]
opSuccessors = []
, opAttributes :: Map Name Attribute
opAttributes = (Map Name Attribute
NoAttrs)
}))
pattern Vp2Intersect :: () => () => Location -> Type -> Type -> operand -> operand -> AbstractOperation operand
pattern $bVp2Intersect :: Location
-> Type -> Type -> operand -> operand -> AbstractOperation operand
$mVp2Intersect :: forall r operand.
AbstractOperation operand
-> (Location -> Type -> Type -> operand -> operand -> r)
-> (Void# -> r)
-> r
Vp2Intersect loc ty0 ty1 a_ b_ = Operation
{ opName = "x86vector.avx512.vp2intersect"
, opLocation = loc
, opResultTypes = Explicit [ty0, ty1]
, opOperands = [a_, b_]
, opRegions = []
, opSuccessors = []
, opAttributes = (NoAttrs)
}
avx512_vp2intersect :: () => MonadBlockBuilder m => Type -> Type -> Value -> Value -> m [Value]
avx512_vp2intersect :: Type -> Type -> Value -> Value -> m [Value]
avx512_vp2intersect Type
ty0 Type
ty1 Value
a_ Value
b_ = do
(Operation -> m [Value]
forall (m :: * -> *). MonadBlockBuilder m => Operation -> m [Value]
AST.emitOp (Operation :: forall operand.
Name
-> Location
-> ResultTypes
-> [operand]
-> [Region]
-> [Name]
-> Map Name Attribute
-> AbstractOperation operand
Operation
{ opName :: Name
opName = Name
"x86vector.avx512.vp2intersect"
, opLocation :: Location
opLocation = Location
UnknownLocation
, opResultTypes :: ResultTypes
opResultTypes = [Type] -> ResultTypes
Explicit [Type
ty0, Type
ty1]
, opOperands :: [Name]
opOperands = [(Value -> Name
AST.operand Value
a_), (Value -> Name
AST.operand Value
b_)]
, opRegions :: [Region]
opRegions = []
, opSuccessors :: [Name]
opSuccessors = []
, opAttributes :: Map Name Attribute
opAttributes = (Map Name Attribute
NoAttrs)
}))
pattern Vp2IntersectQIntr :: () => () => Location -> Type -> operand -> operand -> AbstractOperation operand
pattern $bVp2IntersectQIntr :: Location -> Type -> operand -> operand -> AbstractOperation operand
$mVp2IntersectQIntr :: forall r operand.
AbstractOperation operand
-> (Location -> Type -> operand -> operand -> r)
-> (Void# -> r)
-> r
Vp2IntersectQIntr loc ty0 a_ b_ = Operation
{ opName = "x86vector.avx512.intr.vp2intersect.q.512"
, opLocation = loc
, opResultTypes = Explicit [ty0]
, opOperands = [a_, b_]
, opRegions = []
, opSuccessors = []
, opAttributes = (NoAttrs)
}
avx512_intr_vp2intersect_q_512 :: () => MonadBlockBuilder m => Type -> Value -> Value -> m Value
avx512_intr_vp2intersect_q_512 :: Type -> Value -> Value -> m Value
avx512_intr_vp2intersect_q_512 Type
ty0 Value
a_ Value
b_ = do
([Value] -> Value) -> m [Value] -> m Value
forall (m :: * -> *) a1 r. Monad m => (a1 -> r) -> m a1 -> m r
Control.Monad.liftM [Value] -> Value
forall a. [a] -> a
Prelude.head (Operation -> m [Value]
forall (m :: * -> *). MonadBlockBuilder m => Operation -> m [Value]
AST.emitOp (Operation :: forall operand.
Name
-> Location
-> ResultTypes
-> [operand]
-> [Region]
-> [Name]
-> Map Name Attribute
-> AbstractOperation operand
Operation
{ opName :: Name
opName = Name
"x86vector.avx512.intr.vp2intersect.q.512"
, opLocation :: Location
opLocation = Location
UnknownLocation
, opResultTypes :: ResultTypes
opResultTypes = [Type] -> ResultTypes
Explicit [Type
ty0]
, opOperands :: [Name]
opOperands = [(Value -> Name
AST.operand Value
a_), (Value -> Name
AST.operand Value
b_)]
, opRegions :: [Region]
opRegions = []
, opSuccessors :: [Name]
opSuccessors = []
, opAttributes :: Map Name Attribute
opAttributes = (Map Name Attribute
NoAttrs)
}))