'x86vector' Dialect
Operations ¶
x86vector.avx.intr.dot
(x86vector::DotOp) ¶
Dot
Syntax:
operation ::= `x86vector.avx.intr.dot` $a `,` $b attr-dict `:` type($res)
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
Traits: AlwaysSpeculatableImplTrait
, SameOperandsAndResultType
Interfaces: ConditionallySpeculatable
, InferTypeOpInterface
, NoMemoryEffect (MemoryEffectOpInterface)
Effects: MemoryEffects::Effect{}
Operands: ¶
Operand | Description |
---|---|
a | vector of 32-bit float values of length 8 |
b | vector of 32-bit float values of length 8 |
Results: ¶
Result | Description |
---|---|
res | vector of 32-bit float values of length 8 |
x86vector.avx.intr.dp.ps.256
(x86vector::DotIntrOp) ¶
Traits: AlwaysSpeculatableImplTrait
Interfaces: ConditionallySpeculatable
, InferTypeOpInterface
, NoMemoryEffect (MemoryEffectOpInterface)
Effects: MemoryEffects::Effect{}
Operands: ¶
Operand | Description |
---|---|
a | vector of 32-bit float values of length 8 |
b | vector of 32-bit float values of length 8 |
c | 8-bit signless integer |
Results: ¶
Result | Description |
---|---|
res | vector of 32-bit float values of length 8 |
x86vector.avx.intr.rsqrt.ps.256
(x86vector::RsqrtIntrOp) ¶
Traits: AlwaysSpeculatableImplTrait
, SameOperandsAndResultType
Interfaces: ConditionallySpeculatable
, InferTypeOpInterface
, NoMemoryEffect (MemoryEffectOpInterface)
Effects: MemoryEffects::Effect{}
Operands: ¶
Operand | Description |
---|---|
a | vector of 32-bit float values of length 8 |
Results: ¶
Result | Description |
---|---|
res | LLVM dialect-compatible type |
x86vector.avx.rsqrt
(x86vector::RsqrtOp) ¶
Rsqrt
Syntax:
operation ::= `x86vector.avx.rsqrt` $a attr-dict `:` type($a)
Traits: AlwaysSpeculatableImplTrait
, SameOperandsAndResultType
Interfaces: ConditionallySpeculatable
, InferTypeOpInterface
, NoMemoryEffect (MemoryEffectOpInterface)
Effects: MemoryEffects::Effect{}
Operands: ¶
Operand | Description |
---|---|
a | vector of 32-bit float values of length 8 |
Results: ¶
Result | Description |
---|---|
b | vector of 32-bit float values of length 8 |
x86vector.avx512.intr.mask.compress
(x86vector::MaskCompressIntrOp) ¶
Traits: AlwaysSpeculatableImplTrait
Interfaces: ConditionallySpeculatable
, InferTypeOpInterface
, NoMemoryEffect (MemoryEffectOpInterface)
Effects: MemoryEffects::Effect{}
Operands: ¶
Operand | Description |
---|---|
a | vector of 32-bit float or 32-bit signless integer or 64-bit float or 64-bit signless integer values of length 16/8 |
src | vector of 32-bit float or 32-bit signless integer or 64-bit float or 64-bit signless integer values of length 16/8 |
k | vector of 1-bit signless integer values of length 16/8 |
Results: ¶
Result | Description |
---|---|
res | LLVM dialect-compatible type |
x86vector.avx512.intr.mask.rndscale.pd.512
(x86vector::MaskRndScalePDIntrOp) ¶
Traits: AlwaysSpeculatableImplTrait
Interfaces: ConditionallySpeculatable
, InferTypeOpInterface
, NoMemoryEffect (MemoryEffectOpInterface)
Effects: MemoryEffects::Effect{}
Operands: ¶
Operand | Description |
---|---|
src | vector of 64-bit float values of length 8 |
k | 32-bit signless integer |
a | vector of 64-bit float values of length 8 |
imm | 8-bit signless integer |
rounding | LLVM dialect-compatible type |
Results: ¶
Result | Description |
---|---|
res | LLVM dialect-compatible type |
x86vector.avx512.intr.mask.rndscale.ps.512
(x86vector::MaskRndScalePSIntrOp) ¶
Traits: AlwaysSpeculatableImplTrait
Interfaces: ConditionallySpeculatable
, InferTypeOpInterface
, NoMemoryEffect (MemoryEffectOpInterface)
Effects: MemoryEffects::Effect{}
Operands: ¶
Operand | Description |
---|---|
src | vector of 32-bit float values of length 16 |
k | 32-bit signless integer |
a | vector of 32-bit float values of length 16 |
imm | 16-bit signless integer |
rounding | LLVM dialect-compatible type |
Results: ¶
Result | Description |
---|---|
res | LLVM dialect-compatible type |
x86vector.avx512.intr.mask.scalef.pd.512
(x86vector::MaskScaleFPDIntrOp) ¶
Traits: AlwaysSpeculatableImplTrait
Interfaces: ConditionallySpeculatable
, InferTypeOpInterface
, NoMemoryEffect (MemoryEffectOpInterface)
Effects: MemoryEffects::Effect{}
Operands: ¶
Operand | Description |
---|---|
src | vector of 64-bit float values of length 8 |
a | vector of 64-bit float values of length 8 |
b | vector of 64-bit float values of length 8 |
k | 8-bit signless integer |
rounding | LLVM dialect-compatible type |
Results: ¶
Result | Description |
---|---|
res | LLVM dialect-compatible type |
x86vector.avx512.intr.mask.scalef.ps.512
(x86vector::MaskScaleFPSIntrOp) ¶
Traits: AlwaysSpeculatableImplTrait
Interfaces: ConditionallySpeculatable
, InferTypeOpInterface
, NoMemoryEffect (MemoryEffectOpInterface)
Effects: MemoryEffects::Effect{}
Operands: ¶
Operand | Description |
---|---|
src | vector of 32-bit float values of length 16 |
a | vector of 32-bit float values of length 16 |
b | vector of 32-bit float values of length 16 |
k | 16-bit signless integer |
rounding | LLVM dialect-compatible type |
Results: ¶
Result | Description |
---|---|
res | LLVM dialect-compatible type |
x86vector.avx512.intr.vp2intersect.d.512
(x86vector::Vp2IntersectDIntrOp) ¶
Traits: AlwaysSpeculatableImplTrait
Interfaces: ConditionallySpeculatable
, NoMemoryEffect (MemoryEffectOpInterface)
Effects: MemoryEffects::Effect{}
Operands: ¶
Operand | Description |
---|---|
a | vector of 32-bit signless integer values of length 16 |
b | vector of 32-bit signless integer values of length 16 |
Results: ¶
Result | Description |
---|---|
res | LLVM dialect-compatible type |
x86vector.avx512.intr.vp2intersect.q.512
(x86vector::Vp2IntersectQIntrOp) ¶
Traits: AlwaysSpeculatableImplTrait
Interfaces: ConditionallySpeculatable
, NoMemoryEffect (MemoryEffectOpInterface)
Effects: MemoryEffects::Effect{}
Operands: ¶
Operand | Description |
---|---|
a | vector of 64-bit signless integer values of length 8 |
b | vector of 64-bit signless integer values of length 8 |
Results: ¶
Result | Description |
---|---|
res | LLVM dialect-compatible type |
x86vector.avx512.mask.compress
(x86vector::MaskCompressOp) ¶
Masked compress op
Syntax:
operation ::= `x86vector.avx512.mask.compress` $k `,` $a (`,` $src^)? attr-dict `:` type($dst) (`,` type($src)^)?
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
.
Traits: AlwaysSpeculatableImplTrait
Interfaces: ConditionallySpeculatable
, InferTypeOpInterface
, NoMemoryEffect (MemoryEffectOpInterface)
Effects: MemoryEffects::Effect{}
Attributes: ¶
Attribute | MLIR Type | Description |
---|---|---|
constant_src | ::mlir::ElementsAttr | constant vector/tensor attribute |
Operands: ¶
Operand | Description |
---|---|
k | vector of 1-bit signless integer values of length 16/8 |
a | vector of 32-bit float or 32-bit signless integer or 64-bit float or 64-bit signless integer values of length 16/8 |
src | vector of 32-bit float or 32-bit signless integer or 64-bit float or 64-bit signless integer values of length 16/8 |
Results: ¶
Result | Description |
---|---|
dst | vector of 32-bit float or 32-bit signless integer or 64-bit float or 64-bit signless integer values of length 16/8 |
x86vector.avx512.mask.rndscale
(x86vector::MaskRndScaleOp) ¶
Masked roundscale op
Syntax:
operation ::= `x86vector.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).
Traits: AlwaysSpeculatableImplTrait
Interfaces: ConditionallySpeculatable
, InferTypeOpInterface
, NoMemoryEffect (MemoryEffectOpInterface)
Effects: MemoryEffects::Effect{}
Operands: ¶
Operand | Description |
---|---|
src | vector of 32-bit float or 64-bit float values of length 16/8 |
k | 32-bit signless integer |
a | vector of 32-bit float or 64-bit float values of length 16/8 |
imm | 16-bit signless integer or 8-bit signless integer |
rounding | 32-bit signless integer |
Results: ¶
Result | Description |
---|---|
dst | vector of 32-bit float or 64-bit float values of length 16/8 |
x86vector.avx512.mask.scalef
(x86vector::MaskScaleFOp) ¶
ScaleF op
Syntax:
operation ::= `x86vector.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).
Traits: AlwaysSpeculatableImplTrait
Interfaces: ConditionallySpeculatable
, InferTypeOpInterface
, NoMemoryEffect (MemoryEffectOpInterface)
Effects: MemoryEffects::Effect{}
Operands: ¶
Operand | Description |
---|---|
src | vector of 32-bit float or 64-bit float values of length 16/8 |
a | vector of 32-bit float or 64-bit float values of length 16/8 |
b | vector of 32-bit float or 64-bit float values of length 16/8 |
k | 16-bit signless integer or 8-bit signless integer |
rounding | 32-bit signless integer |
Results: ¶
Result | Description |
---|---|
dst | vector of 32-bit float or 64-bit float values of length 16/8 |
x86vector.avx512.vp2intersect
(x86vector::Vp2IntersectOp) ¶
Vp2Intersect op
Syntax:
operation ::= `x86vector.avx512.vp2intersect` $a `,` $b attr-dict `:` type($a)
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.
Traits: AlwaysSpeculatableImplTrait
Interfaces: ConditionallySpeculatable
, InferTypeOpInterface
, NoMemoryEffect (MemoryEffectOpInterface)
Effects: MemoryEffects::Effect{}
Operands: ¶
Operand | Description |
---|---|
a | vector of 32-bit signless integer or 64-bit signless integer values of length 16/8 |
b | vector of 32-bit signless integer or 64-bit signless integer values of length 16/8 |
Results: ¶
Result | Description |
---|---|
k1 | vector of 1-bit signless integer values of length 16/8 |
k2 | vector of 1-bit signless integer values of length 16/8 |