'spechls' Dialect
A dialect for speculative High-Level Synthesis.
TODO
Operations
spechls.alpha (spechls::AlphaOp)
Operands:
| Operand | Description |
|---|---|
array | array type |
index | integer |
value | any type |
we | 1-bit signless integer |
Results:
| Result | Description |
|---|---|
result | array type |
spechls.call (spechls::CallOp)
Syntax:
operation ::= `spechls.call` $callee `(` $arguments `)` attr-dict `:` functional-type($arguments, $result)
Interfaces: CallOpInterface, OpAsmOpInterface
Attributes:
| Attribute | MLIR Type | Description |
|---|---|---|
callee | ::mlir::FlatSymbolRefAttr | flat symbol reference attribute |
arg_attrs | ::mlir::ArrayAttr | Array of dictionary attributes |
res_attrs | ::mlir::ArrayAttr | Array of dictionary attributes |
Operands:
| Operand | Description |
|---|---|
arguments | variadic of any type |
Results:
| Result | Description |
|---|---|
result | any type |
spechls.cancel (spechls::CancelOp)
Syntax:
operation ::= `spechls.cancel` `<` $offset `>` $input `,` $rollback `,` $writeCommand attr-dict `:` type($rollback)
Interfaces: InferTypeOpInterface
Attributes:
| Attribute | MLIR Type | Description |
|---|---|---|
offset | ::mlir::IntegerAttr | 64-bit signless integer attribute |
Operands:
| Operand | Description |
|---|---|
input | 1-bit signless integer |
rollback | integer |
writeCommand | 1-bit signless integer |
Results:
| Result | Description |
|---|---|
result | 1-bit signless integer |
spechls.commit (spechls::CommitOp)
Syntax:
operation ::= `spechls.commit` $enable (`,` $value^ `:` type($value))? attr-dict
Traits: HasParent<TaskOp>, Terminator
Operands:
| Operand | Description |
|---|---|
enable | 1-bit signless integer |
value | any type |
spechls.delay (spechls::DelayOp)
Traits: AttrSizedOperandSegments
Interfaces: InferTypeOpInterface
Attributes:
| Attribute | MLIR Type | Description |
|---|---|---|
depth | ::mlir::IntegerAttr | 32-bit unsigned integer attribute |
Operands:
| Operand | Description |
|---|---|
input | any type |
enable | 1-bit signless integer |
init | any type |
Results:
| Result | Description |
|---|---|
result | any type |
spechls.exit (spechls::ExitOp)
Traits: HasParent<KernelOp>, ReturnLike, Terminator
Interfaces: RegionBranchTerminatorOpInterface
Operands:
| Operand | Description |
|---|---|
guard | 1-bit signless integer |
values | variadic of any type |
spechls.field (spechls::FieldOp)
Syntax:
operation ::= `spechls.field` `<` $name `>` $input attr-dict `:` type($input)
Traits: AlwaysSpeculatableImplTrait
Interfaces: ConditionallySpeculatable, InferTypeOpInterface, NoMemoryEffect (MemoryEffectOpInterface)
Effects: MemoryEffects::Effect{}
Attributes:
| Attribute | MLIR Type | Description |
|---|---|---|
name | ::mlir::StringAttr | string attribute |
Operands:
| Operand | Description |
|---|---|
input | structure type |
Results:
| Result | Description |
|---|---|
result | any type |
spechls.fifo (spechls::FIFOOp)
Syntax:
operation ::= `spechls.fifo` `<` $depth `>` $input attr-dict `:` functional-type($input, $result)
Interfaces: OpAsmOpInterface
Attributes:
| Attribute | MLIR Type | Description |
|---|---|---|
depth | ::mlir::IntegerAttr | 32-bit unsigned integer attribute |
Operands:
| Operand | Description |
|---|---|
input | structure type |
Results:
| Result | Description |
|---|---|
result | structure type |
spechls.fsm (spechls::FSMOp)
Syntax:
operation ::= `spechls.fsm` $name `<` $gammaNames `>` $condDelays $inputDelays `,` $mispec `,` $state attr-dict
`:` type($mispec) `,` type($state)
Traits: SameVariadicOperandSize
Interfaces: InferTypeOpInterface
Attributes:
| Attribute | MLIR Type | Description |
|---|---|---|
name | ::mlir::StringAttr | string attribute |
gammaNames | ::mlir::ArrayAttr | string array attribute |
condDelays | ::mlir::DenseI64ArrayAttr | i64 dense array attribute |
inputDelays | ::mlir::ArrayAttr | Array of 64-bit integer dense arrays attribute |
Operands:
| Operand | Description |
|---|---|
mispec | structure type |
state | structure type |
Results:
| Result | Description |
|---|---|
result | structure type |
spechls.fsm_command (spechls::FSMCommandOp)
Syntax:
operation ::= `spechls.fsm_command` $name `,` $state attr-dict `:` functional-type($state, $result)
Attributes:
| Attribute | MLIR Type | Description |
|---|---|---|
name | ::mlir::StringAttr | string attribute |
Operands:
| Operand | Description |
|---|---|
state | structure type |
Results:
| Result | Description |
|---|---|
result | structure type |
spechls.gamma (spechls::GammaOp)
Traits: AlwaysSpeculatableImplTrait
Interfaces: ConditionallySpeculatable, NoMemoryEffect (MemoryEffectOpInterface), OpAsmOpInterface
Effects: MemoryEffects::Effect{}
Attributes:
| Attribute | MLIR Type | Description |
|---|---|---|
sym_name | ::mlir::StringAttr | string attribute |
Operands:
| Operand | Description |
|---|---|
select | integer |
inputs | variadic of any type |
Results:
| Result | Description |
|---|---|
result | any type |
spechls.kernel (spechls::KernelOp)
Traits: IsolatedFromAbove, SingleBlock
Interfaces: CallableOpInterface, FunctionOpInterface, RegionKindInterface, Symbol
Attributes:
| Attribute | MLIR Type | Description |
|---|---|---|
sym_name | ::mlir::StringAttr | string attribute |
function_type | ::mlir::TypeAttr | type attribute of function type |
arg_attrs | ::mlir::ArrayAttr | Array of dictionary attributes |
res_attrs | ::mlir::ArrayAttr | Array of dictionary attributes |
spechls.load (spechls::LoadOp)
Syntax:
operation ::= `spechls.load` $array `[` $index `:` type($index) `]` attr-dict `:` type($array)
Interfaces: InferTypeOpInterface
Operands:
| Operand | Description |
|---|---|
array | array type |
index | integer |
Results:
| Result | Description |
|---|---|
result | any type |
spechls.lut (spechls::LUTOp)
Syntax:
operation ::= `spechls.lut` $index $contents attr-dict `:` functional-type($index, $result)
Traits: AlwaysSpeculatableImplTrait
Interfaces: ConditionallySpeculatable, NoMemoryEffect (MemoryEffectOpInterface), OpAsmOpInterface
Effects: MemoryEffects::Effect{}
Attributes:
| Attribute | MLIR Type | Description |
|---|---|---|
contents | ::mlir::DenseI64ArrayAttr | i64 dense array attribute |
Operands:
| Operand | Description |
|---|---|
index | integer |
Results:
| Result | Description |
|---|---|
result | integer |
spechls.mu (spechls::MuOp)
Traits: AlwaysSpeculatableImplTrait, SameOperandsAndResultType
Interfaces: ConditionallySpeculatable, InferTypeOpInterface, NoMemoryEffect (MemoryEffectOpInterface), OpAsmOpInterface
Effects: MemoryEffects::Effect{}
Attributes:
| Attribute | MLIR Type | Description |
|---|---|---|
sym_name | ::mlir::StringAttr | string attribute |
Operands:
| Operand | Description |
|---|---|
initValue | any type |
loopValue | any type |
Results:
| Result | Description |
|---|---|
result | any type |
spechls.pack (spechls::PackOp)
Syntax:
operation ::= `spechls.pack` $inputs attr-dict `:` functional-type($inputs, $result)
Traits: AlwaysSpeculatableImplTrait
Interfaces: ConditionallySpeculatable, NoMemoryEffect (MemoryEffectOpInterface)
Effects: MemoryEffects::Effect{}
Operands:
| Operand | Description |
|---|---|
inputs | variadic of any type |
Results:
| Result | Description |
|---|---|
result | structure type |
spechls.print (spechls::PrintOp)
Syntax:
operation ::= `spechls.print` $state `,` $enable `,` $format (`,` $args^ `:` type($args))? attr-dict
Interfaces: InferTypeOpInterface, OpAsmOpInterface
Attributes:
| Attribute | MLIR Type | Description |
|---|---|---|
format | ::mlir::StringAttr | string attribute |
Operands:
| Operand | Description |
|---|---|
state | 32-bit signless integer |
enable | 1-bit signless integer |
args | variadic of any type |
Results:
| Result | Description |
|---|---|
new_state | 32-bit signless integer |
spechls.rewind (spechls::RewindOp)
Syntax:
operation ::= `spechls.rewind` `<` $depths `>` $input `,` $rewind `,` $writeCommand attr-dict `:` type($input) `,` type($rewind)
Interfaces: InferTypeOpInterface
Attributes:
| Attribute | MLIR Type | Description |
|---|---|---|
depths | ::mlir::DenseI64ArrayAttr | i64 dense array attribute |
Operands:
| Operand | Description |
|---|---|
input | any type |
rewind | integer |
writeCommand | 1-bit signless integer |
Results:
| Result | Description |
|---|---|
result | any type |
spechls.rollback (spechls::RollbackOp)
Syntax:
operation ::= `spechls.rollback` `<` $depths `,` $offset `>` $input `,` $rollback `,` $writeCommand attr-dict `:` type($input) `,` type($rollback)
Interfaces: InferTypeOpInterface
Attributes:
| Attribute | MLIR Type | Description |
|---|---|---|
depths | ::mlir::DenseI64ArrayAttr | i64 dense array attribute |
offset | ::mlir::IntegerAttr | 64-bit signless integer attribute |
Operands:
| Operand | Description |
|---|---|
input | any type |
rollback | integer |
writeCommand | 1-bit signless integer |
Results:
| Result | Description |
|---|---|
result | any type |
spechls.sync (spechls::SyncOp)
Syntax:
operation ::= `spechls.sync` $inputs attr-dict `:` type($inputs)
Traits: AlwaysSpeculatableImplTrait
Interfaces: ConditionallySpeculatable, InferTypeOpInterface, NoMemoryEffect (MemoryEffectOpInterface)
Effects: MemoryEffects::Effect{}
Operands:
| Operand | Description |
|---|---|
inputs | variadic of any type |
Results:
| Result | Description |
|---|---|
result | any type |
spechls.task (spechls::TaskOp)
Traits: IsolatedFromAbove, SingleBlock
Interfaces: RegionKindInterface
Attributes:
| Attribute | MLIR Type | Description |
|---|---|---|
sym_name | ::mlir::StringAttr | string attribute |
Operands:
| Operand | Description |
|---|---|
args | variadic of any type |
Results:
| Result | Description |
|---|---|
result | any type |
spechls.unpack (spechls::UnpackOp)
Syntax:
operation ::= `spechls.unpack` $input attr-dict `:` type($input)
Traits: AlwaysSpeculatableImplTrait
Interfaces: ConditionallySpeculatable, InferTypeOpInterface, NoMemoryEffect (MemoryEffectOpInterface)
Effects: MemoryEffects::Effect{}
Operands:
| Operand | Description |
|---|---|
input | structure type |
Results:
| Result | Description |
|---|---|
results | variadic of any type |
Types
ArrayType
Array type
Syntax:
!spechls.array<
unsigned, # size
::mlir::Type # element_type
>
Parameters:
| Parameter | C++ type | Description |
|---|---|---|
| size | unsigned | |
| element_type | ::mlir::Type |
StructType
Structure type
Parameters:
| Parameter | C++ type | Description |
|---|---|---|
| name | ::llvm::StringRef | struct name |
| fieldNames | ::llvm::ArrayRef<::std::string> | |
| fieldTypes | ::llvm::ArrayRef<::mlir::Type> |