mlir-hs-0.1.0.0
Safe HaskellNone
LanguageHaskell2010

MLIR.AST.Dialect.X86Vector

Synopsis

avx512.dot

The dot op is an AVX512-BF16 specific op that can lower to the proper LLVMAVX512BF16 operation llvm.dpbf16ps depending on the width of MLIR vectors it is applied to.

#### From the Intel Intrinsics Guide:

Compute dot-product of BF16 (16-bit) floating-point pairs in a and b, accumulating the intermediate single-precision (32-bit) floating-point elements with elements in src, and store the results in dst.

Example: %0 = x86vector.avx512.dot %src, %a, %b : vector<32xbf16> -> vector<16xf32>

pattern DotBF16 :: Location -> Type -> operand -> operand -> operand -> AbstractOperation operand Source #

A pattern for x86vector.avx512.dot.

avx512_dot :: MonadBlockBuilder m => Type -> Value -> Value -> Value -> m Value Source #

A builder for x86vector.avx512.dot.

pattern DotBF16Ps128Intr :: Location -> Type -> operand -> operand -> operand -> AbstractOperation operand Source #

A pattern for x86vector.avx512.intr.dpbf16ps.128.

avx512_intr_dpbf16ps_128 :: MonadBlockBuilder m => Type -> Value -> Value -> Value -> m Value Source #

A builder for x86vector.avx512.intr.dpbf16ps.128.

pattern DotBF16Ps256Intr :: Location -> Type -> operand -> operand -> operand -> AbstractOperation operand Source #

A pattern for x86vector.avx512.intr.dpbf16ps.256.

avx512_intr_dpbf16ps_256 :: MonadBlockBuilder m => Type -> Value -> Value -> Value -> m Value Source #

A builder for x86vector.avx512.intr.dpbf16ps.256.

pattern DotBF16Ps512Intr :: Location -> Type -> operand -> operand -> operand -> AbstractOperation operand Source #

A pattern for x86vector.avx512.intr.dpbf16ps.512.

avx512_intr_dpbf16ps_512 :: MonadBlockBuilder m => Type -> Value -> Value -> Value -> m Value Source #

A builder for x86vector.avx512.intr.dpbf16ps.512.

pattern DotIntr :: Location -> Type -> operand -> operand -> operand -> AbstractOperation operand Source #

A pattern for x86vector.avx.intr.dp.ps.256.

avx_intr_dp_ps_256 :: MonadBlockBuilder m => Type -> Value -> Value -> Value -> m Value Source #

A builder for x86vector.avx.intr.dp.ps.256.

avx.intr.dot

Computes the 4-way dot products of the lower and higher parts of the source vectors and broadcasts the two results to the lower and higher elements of the destination vector, respectively. Adding one element of the lower part to one element of the higher part in the destination vector yields the full dot product of the two source vectors.

Example:

%0 = x86vector.avx.intr.dot %a, %b : vector<8xf32>
%1 = vector.extractelement %0[%i0 : i32]: vector<8xf32>
%2 = vector.extractelement %0[%i4 : i32]: vector<8xf32>
%d = arith.addf %1, %2 : f32

pattern Dot :: Location -> Type -> operand -> operand -> AbstractOperation operand Source #

A pattern for x86vector.avx.intr.dot.

avx_intr_dot :: MonadBlockBuilder m => Value -> Value -> m Value Source #

A builder for x86vector.avx.intr.dot.

pattern MaskCompressIntr :: Location -> Type -> operand -> operand -> operand -> AbstractOperation operand Source #

A pattern for x86vector.avx512.intr.mask.compress.

avx512_intr_mask_compress :: MonadBlockBuilder m => Type -> Value -> Value -> Value -> m Value Source #

A builder for x86vector.avx512.intr.mask.compress.

avx512.mask.compress

The mask.compress op is an AVX512 specific op that can lower to the llvm.mask.compress instruction. Instead of src, a constant vector vector attribute constant_src may be specified. If neither src nor constant_src is specified, the remaining elements in the result vector are set to zero.

#### From the Intel Intrinsics Guide:

Contiguously store the active integer/floating-point elements in a (those with their respective bit set in writemask k) to dst, and pass through the remaining elements from src.

avx512_mask_compress :: MonadBlockBuilder m => Type -> Value -> Value -> Maybe Value -> m Value Source #

A builder for x86vector.avx512.mask.compress.

avx512.mask.rndscale

The mask.rndscale op is an AVX512 specific op that can lower to the proper LLVMAVX512 operation: llvm.mask.rndscale.ps.512 or llvm.mask.rndscale.pd.512 instruction depending on the type of vectors it is applied to.

#### From the Intel Intrinsics Guide:

Round packed floating-point elements in a to the number of fraction bits specified by imm, and store the results in dst using writemask k (elements are copied from src when the corresponding mask bit is not set).

pattern MaskRndScale :: Location -> Type -> operand -> operand -> operand -> operand -> operand -> AbstractOperation operand Source #

A pattern for x86vector.avx512.mask.rndscale.

avx512_mask_rndscale :: MonadBlockBuilder m => Type -> Value -> Value -> Value -> Value -> Value -> m Value Source #

A builder for x86vector.avx512.mask.rndscale.

pattern MaskRndScalePDIntr :: Location -> Type -> operand -> operand -> operand -> operand -> operand -> AbstractOperation operand Source #

A pattern for x86vector.avx512.intr.mask.rndscale.pd.512.

avx512_intr_mask_rndscale_pd_512 :: MonadBlockBuilder m => Type -> Value -> Value -> Value -> Value -> Value -> m Value Source #

A builder for x86vector.avx512.intr.mask.rndscale.pd.512.

pattern MaskRndScalePSIntr :: Location -> Type -> operand -> operand -> operand -> operand -> operand -> AbstractOperation operand Source #

A pattern for x86vector.avx512.intr.mask.rndscale.ps.512.

avx512_intr_mask_rndscale_ps_512 :: MonadBlockBuilder m => Type -> Value -> Value -> Value -> Value -> Value -> m Value Source #

A builder for x86vector.avx512.intr.mask.rndscale.ps.512.

avx512.mask.scalef

The mask.scalef op is an AVX512 specific op that can lower to the proper LLVMAVX512 operation: llvm.mask.scalef.ps.512 or llvm.mask.scalef.pd.512 depending on the type of MLIR vectors it is applied to.

#### From the Intel Intrinsics Guide:

Scale the packed floating-point elements in a using values from b, and store the results in dst using writemask k (elements are copied from src when the corresponding mask bit is not set).

pattern MaskScaleF :: Location -> Type -> operand -> operand -> operand -> operand -> operand -> AbstractOperation operand Source #

A pattern for x86vector.avx512.mask.scalef.

avx512_mask_scalef :: MonadBlockBuilder m => Type -> Value -> Value -> Value -> Value -> Value -> m Value Source #

A builder for x86vector.avx512.mask.scalef.

pattern MaskScaleFPDIntr :: Location -> Type -> operand -> operand -> operand -> operand -> operand -> AbstractOperation operand Source #

A pattern for x86vector.avx512.intr.mask.scalef.pd.512.

avx512_intr_mask_scalef_pd_512 :: MonadBlockBuilder m => Type -> Value -> Value -> Value -> Value -> Value -> m Value Source #

A builder for x86vector.avx512.intr.mask.scalef.pd.512.

pattern MaskScaleFPSIntr :: Location -> Type -> operand -> operand -> operand -> operand -> operand -> AbstractOperation operand Source #

A pattern for x86vector.avx512.intr.mask.scalef.ps.512.

avx512_intr_mask_scalef_ps_512 :: MonadBlockBuilder m => Type -> Value -> Value -> Value -> Value -> Value -> m Value Source #

A builder for x86vector.avx512.intr.mask.scalef.ps.512.

pattern RsqrtIntr :: Location -> Type -> operand -> AbstractOperation operand Source #

A pattern for x86vector.avx.intr.rsqrt.ps.256.

avx_intr_rsqrt_ps_256 :: MonadBlockBuilder m => Value -> m Value Source #

A builder for x86vector.avx.intr.rsqrt.ps.256.

pattern Rsqrt :: Location -> Type -> operand -> AbstractOperation operand Source #

A pattern for x86vector.avx.rsqrt.

avx_rsqrt :: MonadBlockBuilder m => Value -> m Value Source #

A builder for x86vector.avx.rsqrt.

pattern Vp2IntersectDIntr :: Location -> Type -> operand -> operand -> AbstractOperation operand Source #

A pattern for x86vector.avx512.intr.vp2intersect.d.512.

avx512_intr_vp2intersect_d_512 :: MonadBlockBuilder m => Type -> Value -> Value -> m Value Source #

A builder for x86vector.avx512.intr.vp2intersect.d.512.

avx512.vp2intersect

The vp2intersect op is an AVX512 specific op that can lower to the proper LLVMAVX512 operation: llvm.vp2intersect.d.512 or llvm.vp2intersect.q.512 depending on the type of MLIR vectors it is applied to.

#### From the Intel Intrinsics Guide:

Compute intersection of packed integer vectors a and b, and store indication of match in the corresponding bit of two mask registers specified by k1 and k2. A match in corresponding elements of a and b is indicated by a set bit in the corresponding bit of the mask registers.

pattern Vp2Intersect :: Location -> Type -> Type -> operand -> operand -> AbstractOperation operand Source #

A pattern for x86vector.avx512.vp2intersect.

avx512_vp2intersect :: MonadBlockBuilder m => Type -> Type -> Value -> Value -> m [Value] Source #

A builder for x86vector.avx512.vp2intersect.

pattern Vp2IntersectQIntr :: Location -> Type -> operand -> operand -> AbstractOperation operand Source #

A pattern for x86vector.avx512.intr.vp2intersect.q.512.

avx512_intr_vp2intersect_q_512 :: MonadBlockBuilder m => Type -> Value -> Value -> m Value Source #

A builder for x86vector.avx512.intr.vp2intersect.q.512.