MLIR

Multi-Level IR Compiler Framework

'avx512' Dialect

Operation definition 

avx512.mask.rndscale (::mlir::avx512::MaskRndScaleOp) 

Masked roundscale op

Syntax:

operation ::= `avx512.mask.rndscale` $src `,` $k `,` $a `,` $imm `,` $rounding attr-dict `:` type($dst)

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).

Operands: 

OperandDescription
srcvector of 32-bit float or 64-bit float values of length 16/8
k32-bit signless integer
avector of 32-bit float or 64-bit float values of length 16/8
imm16-bit signless integer or 8-bit signless integer
rounding32-bit signless integer

Results: 

ResultDescription
dstvector of 32-bit float or 64-bit float values of length 16/8

avx512.mask.scalef (::mlir::avx512::MaskScaleFOp) 

ScaleF op

Syntax:

operation ::= `avx512.mask.scalef` $src `,` $a `,` $b `,` $k `,` $rounding attr-dict `:` type($dst)

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).

Operands: 

OperandDescription
srcvector of 32-bit float or 64-bit float values of length 16/8
avector of 32-bit float or 64-bit float values of length 16/8
bvector of 32-bit float or 64-bit float values of length 16/8
k16-bit signless integer or 8-bit signless integer
rounding32-bit signless integer

Results: 

ResultDescription
dstvector of 32-bit float or 64-bit float values of length 16/8