'vmvx' Dialectlink
Vector extensions to the IREE VM.
This is a reference dialect representing a simple IREE VM-based linear algebra module that is used as a library at runtime. The ops in this dialect map (roughly) 1:1 with the exported functions in the runtime module.
See vmvx.imports.mlir for the full list of exported functions.
- 'vmvx' Dialect
- Operations
- Enums
- AccessScopeBitfield
- AllocaFlagBitfield
- BufferUsageBitfield
- CallingConvention
- ChannelFlagBitfield
- CollectiveElementType
- CollectiveKind
- CollectiveReductionOp
- CommandBufferModeBitfield
- CommandCategoryBitfield
- CopyFlagBitfield
- DeallocaFlagBitfield
- DescriptorFlags
- DispatchFlags
- ExecuteFlagBitfield
- ExecutionBarrierFlagBitfield
- ExecutionStageBitfield
- FenceFlagBitfield
- FillFlagBitfield
- Lifetime
- MemoryAccessBitfield
- MemoryModel
- MemoryTypeBitfield
- PipelineLayoutFlags
- ReadFlagBitfield
- UpdateFlagBitfield
- WaitFlagBitfield
- WriteFlagBitfield
- DescriptorType
Operationslink
ABI opslink
vmvx.binary (VMVX::BinaryOp)link
Performs a strided elementwise operation on two same-rank buffers.
Syntax:
operation ::= `vmvx.binary` `op` `` `(` $opcode `:` $element_type `)`
`lhs` `` `(` $lhs_buffer `offset` $lhs_offset `strides` `[` $lhs_strides `]` `:` type($lhs_buffer) `)`
`rhs` `` `(` $rhs_buffer `offset` $rhs_offset `strides` `[` $rhs_strides `]` `:` type($rhs_buffer) `)`
`out` `` `(` $out_buffer `offset` $out_offset `strides` `[` $out_strides `]` `:` type($out_buffer) `)`
`sizes` `` `(` $sizes `)`
attr-dict
Performs the operation in-place as if:
OUT = OP(LHS, RHS)
Where OP is a concrete operation name as defined in ukernel/elementwise.h
Traits: SameVariadicOperandSize
Attributes:link
| Attribute | MLIR Type | Description |
|---|---|---|
opcode | ::mlir::StringAttr | string attribute |
element_type | ::mlir::TypeAttr | type attribute of 8-bit signless integer or 16-bit signless integer or 32-bit signless integer or 64-bit signless integer or 32-bit float or 64-bit float |
Operands:link
| Operand | Description |
|---|---|
lhs_buffer |
A reference counted byte buffer. |
lhs_offset |
index |
lhs_strides |
variadic of index |
rhs_buffer |
A reference counted byte buffer. |
rhs_offset |
index |
rhs_strides |
variadic of index |
out_buffer |
A reference counted byte buffer. |
out_offset |
index |
out_strides |
variadic of index |
sizes |
variadic of index |
vmvx.copy (VMVX::CopyOp)link
Copy from one buffer to another.
Syntax:
operation ::= `vmvx.copy` `in` `` `(` $in_buffer `offset` $in_offset `strides` `[` $in_strides `]` `:` type($in_buffer) `)`
`out` `` `(` $out_buffer `offset` $out_offset `strides` `[` $out_strides `]` `:` type($out_buffer) `)`
`sizes` `` `(` $sizes `)`
`:` $element_type
attr-dict
Traits: SameVariadicOperandSize
Attributes:link
| Attribute | MLIR Type | Description |
|---|---|---|
element_type | ::mlir::TypeAttr | type attribute of 8-bit signless integer or 16-bit signless integer or 32-bit signless integer or 64-bit signless integer or 32-bit float or 64-bit float |
Operands:link
| Operand | Description |
|---|---|
in_buffer |
A reference counted byte buffer. |
in_offset |
index |
in_strides |
variadic of index |
out_buffer |
A reference counted byte buffer. |
out_offset |
index |
out_strides |
variadic of index |
sizes |
variadic of index |
vmvx.fill2d (VMVX::Fill2DOp)link
Fill a tile with a scalar.
Syntax:
operation ::= `vmvx.fill2d` `scalar` `` `(` $scalar `:` type($scalar) `)`
`out` `` `(` $out_buffer `offset` $out_offset `row_stride` $out_row_stride `:` type($out_buffer) `)`
`sizes` `` `(` $m `,` $n `)`
attr-dict
Fills a tile with dimensions [m, n] with a scalar.
Operands:link
| Operand | Description |
|---|---|
scalar |
8-bit signless integer or 16-bit signless integer or 32-bit signless integer or 64-bit signless integer or 32-bit float or 64-bit float |
out_buffer |
A reference counted byte buffer. |
out_offset |
index |
out_row_stride |
index |
m |
index |
n |
index |
vmvx.unary (VMVX::UnaryOp)link
Performs a strided elementwise unary operation.
Syntax:
operation ::= `vmvx.unary` `op` `` `(` $opcode `:` $element_type `)`
`in` `` `(` $in_buffer `offset` $in_offset `strides` `[` $in_strides `]` `:` type($in_buffer) `)`
`out` `` `(` $out_buffer `offset` $out_offset `strides` `[` $out_strides `]` `:` type($out_buffer) `)`
`sizes` `` `(` $sizes `)`
attr-dict
Performs the operation in-place as if:
OUT = OP(IN)
Where OP is a concrete operation name as defined in ukernel/elementwise.h
Traits: SameVariadicOperandSize
Attributes:link
| Attribute | MLIR Type | Description |
|---|---|---|
opcode | ::mlir::StringAttr | string attribute |
element_type | ::mlir::TypeAttr | type attribute of 8-bit signless integer or 16-bit signless integer or 32-bit signless integer or 64-bit signless integer or 32-bit float or 64-bit float |
Operands:link
| Operand | Description |
|---|---|
in_buffer |
A reference counted byte buffer. |
in_offset |
index |
in_strides |
variadic of index |
out_buffer |
A reference counted byte buffer. |
out_offset |
index |
out_strides |
variadic of index |
sizes |
variadic of index |
Utility opslink
vmvx.get_buffer_descriptor (VMVX::GetBufferDescriptorOp)link
Late binds a base buffer/offset/strides.
Syntax:
operation ::= `vmvx.get_buffer_descriptor` $source `:` type($source) `->` type(results) attr-dict
Queries a base buffer, offset and strides. This op is late bound to its source (alloca, binding, etc), allowing additional layers of transformations to be added as lowering progresses (or for buffers to be combined).
This op has canonicalization rules which will bubble it up through the view stack. A final reconciliation pass is used explicitly to bind it to concrete sources.
Traits: AlwaysSpeculatableImplTrait, SameVariadicResultSize
Interfaces: ConditionallySpeculatable, NoMemoryEffect (MemoryEffectOpInterface)
Effects: MemoryEffects::Effect{}
Operands:link
| Operand | Description |
|---|---|
source |
memref of any type values |
Results:link
| Result | Description |
|---|---|
base_buffer |
A reference counted byte buffer. |
offset |
index |
sizes |
variadic of index |
strides |
variadic of index |
vmvx.get_raw_interface_binding_buffer (VMVX::GetRawInterfaceBindingBufferOp)link
Gets the raw buffer associated with a binding.
Syntax:
operation ::= `vmvx.get_raw_interface_binding_buffer` `layout` `(` $layout `)`
`binding` `(` $binding `)`
attr-dict
Normally, a slice of a binding buffer is returned via hal.interface.binding.subspan. However, the normal VMVX lowering flow for this presumes that the result is a memref, and upon final conversion, it will offset the memref automatically to make it consistent.
This op is used in situations where earlier in a lowering, we have fully resolved the binding to a buffer and would just like the raw backing buffer as passed to the interface.
Traits: AlwaysSpeculatableImplTrait
Interfaces: ConditionallySpeculatable, NoMemoryEffect (MemoryEffectOpInterface)
Effects: MemoryEffects::Effect{}
Attributes:link
| Attribute | MLIR Type | Description |
|---|---|---|
layout | ::mlir::iree_compiler::IREE::HAL::PipelineLayoutAttr | Executable entry point layout specification. |
binding | ::mlir::IntegerAttr | index attribute |
Results:link
| Result | Description |
|---|---|
buffer |
A reference counted byte buffer. |
Enumslink
AccessScopeBitfieldlink
Valid AccessScope
Cases:link
| Symbol | Value | String |
|---|---|---|
| None | 0 |
None |
| IndirectCommandRead | 1 |
IndirectCommandRead |
| ConstantRead | 2 |
ConstantRead |
| DispatchRead | 4 |
DispatchRead |
| DispatchWrite | 8 |
DispatchWrite |
| TransferRead | 16 |
TransferRead |
| TransferWrite | 32 |
TransferWrite |
| HostRead | 64 |
HostRead |
| HostWrite | 128 |
HostWrite |
| MemoryRead | 256 |
MemoryRead |
| MemoryWrite | 512 |
MemoryWrite |
AllocaFlagBitfieldlink
Valid AllocaFlag
Cases:link
| Symbol | Value | String |
|---|---|---|
| None | 0 |
None |
| IndeterminateLifetime | 1 |
IndeterminateLifetime |
BufferUsageBitfieldlink
Valid BufferUsage
Cases:link
| Symbol | Value | String |
|---|---|---|
| None | 0 |
None |
| TransferSource | 1 |
TransferSource |
| TransferTarget | 2 |
TransferTarget |
| Transfer | 3 |
Transfer |
| DispatchIndirectParameters | 256 |
DispatchIndirectParameters |
| DispatchUniformRead | 512 |
DispatchUniformRead |
| DispatchStorageRead | 1024 |
DispatchStorageRead |
| DispatchStorageWrite | 2048 |
DispatchStorageWrite |
| DispatchStorage | 3072 |
DispatchStorage |
| DispatchImageRead | 4096 |
DispatchImageRead |
| DispatchImageWrite | 8192 |
DispatchImageWrite |
| DispatchImage | 12288 |
DispatchImage |
| SharingExport | 65536 |
SharingExport |
| SharingReplicate | 131072 |
SharingReplicate |
| SharingConcurrent | 262144 |
SharingConcurrent |
| SharingImmutable | 524288 |
SharingImmutable |
| MappingScoped | 16777216 |
MappingScoped |
| MappingPersistent | 33554432 |
MappingPersistent |
| MappingOptional | 67108864 |
MappingOptional |
| MappingAccessRandom | 134217728 |
MappingAccessRandom |
| MappingAccessSequentialWrite | 268435456 |
MappingAccessSequentialWrite |
| Mapping | 150994944 |
Mapping |
CallingConventionlink
Calling conversions for linked functions
Cases:link
| Symbol | Value | String |
|---|---|---|
| Default | 0 |
Default |
ChannelFlagBitfieldlink
Valid ChannelFlag
Cases:link
| Symbol | Value | String |
|---|---|---|
| None | 0 |
None |
| Reserved | 1 |
Reserved |
CollectiveElementTypelink
Valid CollectiveElementType
Cases:link
| Symbol | Value | String |
|---|---|---|
| Sint8 | 0 |
si8 |
| Uint8 | 1 |
ui8 |
| Sint16 | 2 |
si16 |
| Uint16 | 3 |
ui16 |
| Sint32 | 4 |
si32 |
| Uint32 | 5 |
ui32 |
| Sint64 | 6 |
si64 |
| Uint64 | 7 |
ui64 |
| Float16 | 8 |
f16 |
| Float32 | 9 |
f32 |
| Float64 | 10 |
f64 |
| BFloat16 | 11 |
bf16 |
| Float8E5M2 | 12 |
f8E5M2 |
| Float8E4M3FN | 13 |
f8E4M3FN |
| Float8E5M2FNUZ | 14 |
f8E5M2FNUZ |
| Float8E4M3FNUZ | 15 |
f8E4M3FNUZ |
CollectiveKindlink
Valid CollectiveKind
Cases:link
| Symbol | Value | String |
|---|---|---|
| AllGather | 0 |
all_gather |
| AllReduce | 1 |
all_reduce |
| AllToAll | 2 |
all_to_all |
| Broadcast | 3 |
broadcast |
| Reduce | 4 |
reduce |
| ReduceScatter | 5 |
reduce_scatter |
| Send | 6 |
send |
| Recv | 7 |
recv |
| SendRecv | 8 |
send_recv |
CollectiveReductionOplink
Valid CollectiveReductionOp
Cases:link
| Symbol | Value | String |
|---|---|---|
| None | 0 |
none |
| ReductionSum | 1 |
sum |
| ReductionProduct | 2 |
product |
| ReductionMinimum | 3 |
minimum |
| ReductionMaximum | 4 |
maximum |
| ReductionAverage | 5 |
average |
CommandBufferModeBitfieldlink
Valid CommandBufferMode
Cases:link
| Symbol | Value | String |
|---|---|---|
| None | 0 |
None |
| OneShot | 1 |
OneShot |
| AllowInlineExecution | 16 |
AllowInlineExecution |
CommandCategoryBitfieldlink
Valid CommandCategory
Cases:link
| Symbol | Value | String |
|---|---|---|
| None | 0 |
None |
| Transfer | 1 |
Transfer |
| Dispatch | 2 |
Dispatch |
CopyFlagBitfieldlink
Valid CopyFlag
Cases:link
| Symbol | Value | String |
|---|---|---|
| None | 0 |
None |
| Reserved | 1 |
Reserved |
DeallocaFlagBitfieldlink
Valid DeallocaFlag
Cases:link
| Symbol | Value | String |
|---|---|---|
| None | 0 |
None |
| PreferOrigin | 1 |
PreferOrigin |
DescriptorFlagslink
Valid Descriptor flags
Cases:link
| Symbol | Value | String |
|---|---|---|
| None | 0 |
None |
| ReadOnly | 1 |
ReadOnly |
| Indirect | 2 |
Indirect |
DispatchFlagslink
Valid dispatch flags
Cases:link
| Symbol | Value | String |
|---|---|---|
| None | 0 |
None |
| Reserved | 1 |
Reserved |
ExecuteFlagBitfieldlink
Valid ExecuteFlag
Cases:link
| Symbol | Value | String |
|---|---|---|
| None | 0 |
None |
| Reserved | 1 |
Reserved |
ExecutionBarrierFlagBitfieldlink
Valid ExecutionBarrierFlag
Cases:link
| Symbol | Value | String |
|---|---|---|
| None | 0 |
None |
| Reserved | 1 |
Reserved |
ExecutionStageBitfieldlink
Valid ExecutionStage
Cases:link
| Symbol | Value | String |
|---|---|---|
| None | 0 |
None |
| CommandIssue | 1 |
CommandIssue |
| CommandProcess | 2 |
CommandProcess |
| Dispatch | 4 |
Dispatch |
| Transfer | 8 |
Transfer |
| CommandRetire | 16 |
CommandRetire |
| Host | 32 |
Host |
FenceFlagBitfieldlink
Valid FenceFlag
Cases:link
| Symbol | Value | String |
|---|---|---|
| None | 0 |
None |
| Reserved | 1 |
Reserved |
FillFlagBitfieldlink
Valid FillFlag
Cases:link
| Symbol | Value | String |
|---|---|---|
| None | 0 |
None |
| Reserved | 1 |
Reserved |
Lifetimelink
IREE HAL value lifetime
Cases:link
| Symbol | Value | String |
|---|---|---|
| Unknown | 0 |
* |
| External | 1 |
external |
| Staging | 2 |
staging |
| Transient | 3 |
transient |
| Variable | 4 |
variable |
| Constant | 5 |
constant |
MemoryAccessBitfieldlink
Valid MemoryAccess
Cases:link
| Symbol | Value | String |
|---|---|---|
| None | 0 |
None |
| Read | 1 |
Read |
| Write | 2 |
Write |
| Discard | 4 |
Discard |
| MayAlias | 8 |
MayAlias |
| Unaligned | 16 |
Unaligned |
| Any | 32 |
Any |
MemoryModellink
IREE HAL MemoryModel
Cases:link
| Symbol | Value | String |
|---|---|---|
| Unified | 0 |
Unified |
| Discrete | 1 |
Discrete |
MemoryTypeBitfieldlink
Valid MemoryType
Cases:link
| Symbol | Value | String |
|---|---|---|
| None | 0 |
None |
| Optimal | 1 |
Optimal |
| HostVisible | 2 |
HostVisible |
| HostCoherent | 4 |
HostCoherent |
| HostCached | 8 |
HostCached |
| HostLocal | 70 |
HostLocal |
| DeviceVisible | 16 |
DeviceVisible |
| DeviceLocal | 48 |
DeviceLocal |
PipelineLayoutFlagslink
Valid PipelineLayout flags
Cases:link
| Symbol | Value | String |
|---|---|---|
| None | 0 |
None |
| Indirect | 1 |
Indirect |
ReadFlagBitfieldlink
Valid ReadFlag
Cases:link
| Symbol | Value | String |
|---|---|---|
| None | 0 |
None |
| Reserved | 1 |
Reserved |
UpdateFlagBitfieldlink
Valid UpdateFlag
Cases:link
| Symbol | Value | String |
|---|---|---|
| None | 0 |
None |
| Reserved | 1 |
Reserved |
WaitFlagBitfieldlink
Valid WaitFlag
Cases:link
| Symbol | Value | String |
|---|---|---|
| None | 0 |
None |
| Reserved | 1 |
Reserved |
WriteFlagBitfieldlink
Valid WriteFlag
Cases:link
| Symbol | Value | String |
|---|---|---|
| None | 0 |
None |
| Reserved | 1 |
Reserved |
DescriptorTypelink
Valid DescriptorType
Cases:link
| Symbol | Value | String |
|---|---|---|
| UniformBuffer | 6 |
uniform_buffer |
| StorageBuffer | 7 |
storage_buffer |