# 'asctile' Dialect Tile-level operations * [Operations](#operations) * [`asctile.adds` (asctile::AddSOp)](#asctile-adds-asctile-addsop) * [`asctile.atomic_rmw` (asctile::AtomicRMWOp)](#asctile-atomic-rmw-asctile-atomicrmwop) * [`asctile.bitwise_mask` (asctile::BitwiseMaskOp)](#asctile-bitwise-mask-asctile-bitwisemaskop) * [`asctile.broadcast` (asctile::BroadcastOp)](#asctile-broadcast-asctile-broadcastop) * [`asctile.cast` (asctile::CastOp)](#asctile-cast-asctile-castop) * [`asctile.cmp` (asctile::CmpOp)](#asctile-cmp-asctile-cmpop) * [`asctile.cmps` (asctile::CmpSOp)](#asctile-cmps-asctile-cmpsop) * [`asctile.count_mask` (asctile::CountMaskOp)](#asctile-count-mask-asctile-countmaskop) * [`asctile.dim` (asctile::DimOp)](#asctile-dim-asctile-dimop) * [`asctile.divs` (asctile::DivSOp)](#asctile-divs-asctile-divsop) * [`asctile.get_value` (asctile::GetValueOp)](#asctile-get-value-asctile-getvalueop) * [`asctile.load` (asctile::LoadOp)](#asctile-load-asctile-loadop) * [`asctile.matmul` (asctile::MatmulOp)](#asctile-matmul-asctile-matmulop) * [`asctile.maxs` (asctile::MaxSOp)](#asctile-maxs-asctile-maxsop) * [`asctile.mins` (asctile::MinSOp)](#asctile-mins-asctile-minsop) * [`asctile.muls` (asctile::MulSOp)](#asctile-muls-asctile-mulsop) * [`asctile.reduce_max` (asctile::ReduceMaxOp)](#asctile-reduce-max-asctile-reducemaxop) * [`asctile.reduce_max_as_1d` (asctile::ReduceMaxAs1dOp)](#asctile-reduce-max-as-1d-asctile-reducemaxas1dop) * [`asctile.reduce_min` (asctile::ReduceMinOp)](#asctile-reduce-min-asctile-reduceminop) * [`asctile.reduce_min_as_1d` (asctile::ReduceMinAs1dOp)](#asctile-reduce-min-as-1d-asctile-reduceminas1dop) * [`asctile.reduce_prod` (asctile::ReduceProdOp)](#asctile-reduce-prod-asctile-reduceprodop) * [`asctile.reduce_sum` (asctile::ReduceSumOp)](#asctile-reduce-sum-asctile-reducesumop) * [`asctile.reduce_sum_as_1d` (asctile::ReduceSumAs1dOp)](#asctile-reduce-sum-as-1d-asctile-reducesumas1dop) * [`asctile.relu` (asctile::ReluOp)](#asctile-relu-asctile-reluop) * [`asctile.reshape` (asctile::ReshapeOp)](#asctile-reshape-asctile-reshapeop) * [`asctile.select` (asctile::SelectOp)](#asctile-select-asctile-selectop) * [`asctile.set_value` (asctile::SetValueOp)](#asctile-set-value-asctile-setvalueop) * [`asctile.shls` (asctile::ShLSOp)](#asctile-shls-asctile-shlsop) * [`asctile.shrs` (asctile::ShRSOp)](#asctile-shrs-asctile-shrsop) * [`asctile.softmax` (asctile::SoftmaxOp)](#asctile-softmax-asctile-softmaxop) * [`asctile.splat` (asctile::SplatOp)](#asctile-splat-asctile-splatop) * [`asctile.store` (asctile::StoreOp)](#asctile-store-asctile-storeop) * [`asctile.subs` (asctile::SubSOp)](#asctile-subs-asctile-subsop) * [`asctile.tensor` (asctile::TensorOp)](#asctile-tensor-asctile-tensorop) * [`asctile.yield` (asctile::YieldOp)](#asctile-yield-asctile-yieldop) * [Types](#types) * [TensorType](#tensortype) * [TileType](#tiletype) * [Enums](#enums) * [AtomicKind](#atomickind) * [CompareMode](#comparemode) * [TileLocation](#tilelocation) ## Operations ### `asctile.adds` (asctile::AddSOp) _Compute element-wise addition of tile and scalar_ Syntax: ``` operation ::= `asctile.adds` $base `,` $value attr-dict `:` qualified(type($base)) ``` Traits: `AlwaysSpeculatableImplTrait` Interfaces: `ConditionallySpeculatable`, `NoMemoryEffect (MemoryEffectOpInterface)` Effects: `MemoryEffects::Effect{}` #### Operands: | Operand | Description | | :-----: | ----------- | | `base` | tile of 16-bit float or 32-bit float or 8-bit signless integer or 16-bit signless integer or 32-bit signless integer values | `value` | 16-bit float or 32-bit float or 8-bit signless integer or 16-bit signless integer or 32-bit signless integer #### Results: | Result | Description | | :----: | ----------- | | `result` | tile of 16-bit float or 32-bit float or 8-bit signless integer or 16-bit signless integer or 32-bit signless integer values ### `asctile.atomic_rmw` (asctile::AtomicRMWOp) _Atomic accumulation the tile data into a tensor_ Syntax: ``` operation ::= `asctile.atomic_rmw` `<` $kind `>` $value `,` $base `[` $offsets `]` attr-dict `:` qualified(type($value)) `,` qualified(type($base)) ``` Interfaces: `MemoryEffectsOpInterface` #### Attributes:
AttributeMLIR TypeDescription
kind::mlir::asctile::AtomicKindAttr
kind of atomic{{% markdown %}}Kind of atomic operation{{% /markdown %}}
#### Operands: | Operand | Description | | :-----: | ----------- | | `value` | tile of 16-bit float or 32-bit float or 8-bit signless integer or 16-bit signless integer or 32-bit signless integer values | `base` | | `offsets` | variadic of 32-bit signless integer ### `asctile.bitwise_mask` (asctile::BitwiseMaskOp) _Apply mask (bit mode) to nested operations_ Syntax: ``` operation ::= `asctile.bitwise_mask` $highBits `,` $lowBits (`,` $other^ `:` type($other))? $region attr-dict ``` Traits: `SingleBlockImplicitTerminator`, `SingleBlock` #### Operands: | Operand | Description | | :-----: | ----------- | | `highBits` | 64-bit signless integer | `lowBits` | 64-bit signless integer | `other` | 16-bit float or 32-bit float or 8-bit signless integer or 16-bit signless integer or 32-bit signless integer ### `asctile.broadcast` (asctile::BroadcastOp) _Broadcast tile to the provided shape_ Syntax: ``` operation ::= `asctile.broadcast` $operand attr-dict `:` qualified(type($operand)) `to` qualified(type($result)) ``` Traits: `AlwaysSpeculatableImplTrait` Interfaces: `ConditionallySpeculatable`, `NoMemoryEffect (MemoryEffectOpInterface)` Effects: `MemoryEffects::Effect{}` #### Operands: | Operand | Description | | :-----: | ----------- | | `operand` | tile of 16-bit float or 32-bit float or 8-bit signless integer or 16-bit signless integer or 32-bit signless integer values #### Results: | Result | Description | | :----: | ----------- | | `result` | tile of 16-bit float or 32-bit float or 8-bit signless integer or 16-bit signless integer or 32-bit signless integer values ### `asctile.cast` (asctile::CastOp) _Cast tile elements to other data type_ Syntax: ``` operation ::= `asctile.cast` $in attr-dict `:` qualified(type($in)) `to` qualified(type($out)) ``` Traits: `AlwaysSpeculatableImplTrait`, `SameOperandsAndResultShape` Interfaces: `CastOpInterface`, `ConditionallySpeculatable`, `NoMemoryEffect (MemoryEffectOpInterface)` Effects: `MemoryEffects::Effect{}` #### Operands: | Operand | Description | | :-----: | ----------- | | `in` | tile of 16-bit float or 32-bit float or 8-bit signless integer or 16-bit signless integer or 32-bit signless integer values #### Results: | Result | Description | | :----: | ----------- | | `out` | tile of 16-bit float or 32-bit float or 8-bit signless integer or 16-bit signless integer or 32-bit signless integer values ### `asctile.cmp` (asctile::CmpOp) _Compute element-wise comparison of two tiles_ Syntax: ``` operation ::= `asctile.cmp` $cmpMode $lhs `,` $rhs attr-dict `:` qualified(type($lhs)) ``` Traits: `AlwaysSpeculatableImplTrait`, `SameTypeOperands` Interfaces: `ConditionallySpeculatable`, `NoMemoryEffect (MemoryEffectOpInterface)` Effects: `MemoryEffects::Effect{}` #### Attributes:
AttributeMLIR TypeDescription
cmpMode::mlir::asctile::CompareModeAttr
comparsion type{{% markdown %}}Comparsion mode{{% /markdown %}}
#### Operands: | Operand | Description | | :-----: | ----------- | | `lhs` | tile of 16-bit float or 32-bit float or 8-bit signless integer or 16-bit signless integer or 32-bit signless integer values | `rhs` | tile of 16-bit float or 32-bit float or 8-bit signless integer or 16-bit signless integer or 32-bit signless integer values #### Results: | Result | Description | | :----: | ----------- | | `result` | tile of 1-bit signless integer values ### `asctile.cmps` (asctile::CmpSOp) _Compute element-wise comparison of tile and scalar_ Syntax: ``` operation ::= `asctile.cmps` $cmpMode $base `,` $value attr-dict `:` qualified(type($base)) ``` Traits: `AlwaysSpeculatableImplTrait` Interfaces: `ConditionallySpeculatable`, `NoMemoryEffect (MemoryEffectOpInterface)` Effects: `MemoryEffects::Effect{}` #### Attributes:
AttributeMLIR TypeDescription
cmpMode::mlir::asctile::CompareModeAttr
comparsion type{{% markdown %}}Comparsion mode{{% /markdown %}}
#### Operands: | Operand | Description | | :-----: | ----------- | | `base` | tile of 16-bit float or 32-bit float or 8-bit signless integer or 16-bit signless integer or 32-bit signless integer values | `value` | 16-bit float or 32-bit float or 8-bit signless integer or 16-bit signless integer or 32-bit signless integer #### Results: | Result | Description | | :----: | ----------- | | `result` | tile of 1-bit signless integer values ### `asctile.count_mask` (asctile::CountMaskOp) _Apply mask (count mode) to nested operations_ Syntax: ``` operation ::= `asctile.count_mask` $count (`,` $other^ `:` type($other))? $region attr-dict ``` Traits: `SingleBlockImplicitTerminator`, `SingleBlock` #### Operands: | Operand | Description | | :-----: | ----------- | | `count` | 64-bit signless integer | `other` | 16-bit float or 32-bit float or 8-bit signless integer or 16-bit signless integer or 32-bit signless integer ### `asctile.dim` (asctile::DimOp) _Obtain dimension of given tensor_ Syntax: ``` operation ::= `asctile.dim` $base `,` $index attr-dict `:` qualified(type($base)) ``` Traits: `AlwaysSpeculatableImplTrait` Interfaces: `ConditionallySpeculatable`, `NoMemoryEffect (MemoryEffectOpInterface)` Effects: `MemoryEffects::Effect{}` #### Attributes:
AttributeMLIR TypeDescription
index::mlir::IntegerAttr32-bit signless integer attribute
#### Operands: | Operand | Description | | :-----: | ----------- | | `base` | #### Results: | Result | Description | | :----: | ----------- | | `result` | 32-bit signless integer ### `asctile.divs` (asctile::DivSOp) _Compute element-wise division of tile and scalar_ Syntax: ``` operation ::= `asctile.divs` $base `,` $value attr-dict `:` qualified(type($base)) ``` Traits: `AlwaysSpeculatableImplTrait` Interfaces: `ConditionallySpeculatable`, `NoMemoryEffect (MemoryEffectOpInterface)` Effects: `MemoryEffects::Effect{}` #### Operands: | Operand | Description | | :-----: | ----------- | | `base` | tile of 16-bit float or 32-bit float or 8-bit signless integer or 16-bit signless integer or 32-bit signless integer values | `value` | 16-bit float or 32-bit float or 8-bit signless integer or 16-bit signless integer or 32-bit signless integer #### Results: | Result | Description | | :----: | ----------- | | `result` | tile of 16-bit float or 32-bit float or 8-bit signless integer or 16-bit signless integer or 32-bit signless integer values ### `asctile.get_value` (asctile::GetValueOp) _Load value from tensor_ Syntax: ``` operation ::= `asctile.get_value` $base `[` $offsets `]` attr-dict `:` qualified(type($base)) ``` Interfaces: `MemoryEffectsOpInterface` #### Operands: | Operand | Description | | :-----: | ----------- | | `base` | | `offsets` | variadic of 32-bit signless integer #### Results: | Result | Description | | :----: | ----------- | | `result` | 16-bit float or 32-bit float or 8-bit signless integer or 16-bit signless integer or 32-bit signless integer ### `asctile.load` (asctile::LoadOp) _Load from the tensor into a new tile_ Syntax: ``` operation ::= `asctile.load` $base `[` $offsets `]` (`,` $padValue^)? attr-dict `:` qualified(type($base)) `,` qualified(type($result)) ``` Traits: `AttrSizedOperandSegments` Interfaces: `MemoryEffectsOpInterface` #### Operands: | Operand | Description | | :-----: | ----------- | | `base` | | `offsets` | variadic of 32-bit signless integer | `padValue` | 16-bit float or 32-bit float or 8-bit signless integer or 16-bit signless integer or 32-bit signless integer #### Results: | Result | Description | | :----: | ----------- | | `result` | tile of 16-bit float or 32-bit float or 8-bit signless integer or 16-bit signless integer or 32-bit signless integer values ### `asctile.matmul` (asctile::MatmulOp) _Compute matrix multiplication on 2D tiles_ Syntax: ``` operation ::= `asctile.matmul` $matrixA `,` $matrixB attr-dict `:` type($matrixA) `,` type($matrixB) `->` type($result) ``` Traits: `AlwaysSpeculatableImplTrait` Interfaces: `ConditionallySpeculatable`, `NoMemoryEffect (MemoryEffectOpInterface)` Effects: `MemoryEffects::Effect{}` #### Operands: | Operand | Description | | :-----: | ----------- | | `matrixA` | tile of 16-bit float or 32-bit float values of ranks 2 | `matrixB` | tile of 16-bit float or 32-bit float values of ranks 2 #### Results: | Result | Description | | :----: | ----------- | | `result` | tile of 32-bit float values of ranks 2 ### `asctile.maxs` (asctile::MaxSOp) _Compute element-wise maximum value of tile and scalar_ Syntax: ``` operation ::= `asctile.maxs` $base `,` $value attr-dict `:` qualified(type($base)) ``` Traits: `AlwaysSpeculatableImplTrait` Interfaces: `ConditionallySpeculatable`, `NoMemoryEffect (MemoryEffectOpInterface)` Effects: `MemoryEffects::Effect{}` #### Operands: | Operand | Description | | :-----: | ----------- | | `base` | tile of 16-bit float or 32-bit float or 8-bit signless integer or 16-bit signless integer or 32-bit signless integer values | `value` | 16-bit float or 32-bit float or 8-bit signless integer or 16-bit signless integer or 32-bit signless integer #### Results: | Result | Description | | :----: | ----------- | | `result` | tile of 16-bit float or 32-bit float or 8-bit signless integer or 16-bit signless integer or 32-bit signless integer values ### `asctile.mins` (asctile::MinSOp) _Compute element-wise minimum value of tile and scalar_ Syntax: ``` operation ::= `asctile.mins` $base `,` $value attr-dict `:` qualified(type($base)) ``` Traits: `AlwaysSpeculatableImplTrait` Interfaces: `ConditionallySpeculatable`, `NoMemoryEffect (MemoryEffectOpInterface)` Effects: `MemoryEffects::Effect{}` #### Operands: | Operand | Description | | :-----: | ----------- | | `base` | tile of 16-bit float or 32-bit float or 8-bit signless integer or 16-bit signless integer or 32-bit signless integer values | `value` | 16-bit float or 32-bit float or 8-bit signless integer or 16-bit signless integer or 32-bit signless integer #### Results: | Result | Description | | :----: | ----------- | | `result` | tile of 16-bit float or 32-bit float or 8-bit signless integer or 16-bit signless integer or 32-bit signless integer values ### `asctile.muls` (asctile::MulSOp) _Compute element-wise multiplication of tile and scalar_ Syntax: ``` operation ::= `asctile.muls` $base `,` $value attr-dict `:` qualified(type($base)) ``` Traits: `AlwaysSpeculatableImplTrait` Interfaces: `ConditionallySpeculatable`, `NoMemoryEffect (MemoryEffectOpInterface)` Effects: `MemoryEffects::Effect{}` #### Operands: | Operand | Description | | :-----: | ----------- | | `base` | tile of 16-bit float or 32-bit float or 8-bit signless integer or 16-bit signless integer or 32-bit signless integer values | `value` | 16-bit float or 32-bit float or 8-bit signless integer or 16-bit signless integer or 32-bit signless integer #### Results: | Result | Description | | :----: | ----------- | | `result` | tile of 16-bit float or 32-bit float or 8-bit signless integer or 16-bit signless integer or 32-bit signless integer values ### `asctile.reduce_max` (asctile::ReduceMaxOp) _Reduce tile to the provided shape_ Syntax: ``` operation ::= `asctile.reduce_max` $operand attr-dict `:` qualified(type($operand)) `,` qualified(type($result)) ``` Traits: `AlwaysSpeculatableImplTrait` Interfaces: `ConditionallySpeculatable`, `NoMemoryEffect (MemoryEffectOpInterface)` Effects: `MemoryEffects::Effect{}` #### Attributes:
AttributeMLIR TypeDescription
dims::mlir::ArrayAttr32-bit integer array attribute
#### Operands: | Operand | Description | | :-----: | ----------- | | `operand` | tile of 16-bit float or 32-bit float or 8-bit signless integer or 16-bit signless integer or 32-bit signless integer values #### Results: | Result | Description | | :----: | ----------- | | `result` | tile of 16-bit float or 32-bit float or 8-bit signless integer or 16-bit signless integer or 32-bit signless integer values ### `asctile.reduce_max_as_1d` (asctile::ReduceMaxAs1dOp) _Reduce tile to 1-element tile or a scalar value_ Syntax: ``` operation ::= `asctile.reduce_max_as_1d` $operand attr-dict `:` qualified(type($operand)) `,` type($result) ``` Traits: `AlwaysSpeculatableImplTrait` Interfaces: `ConditionallySpeculatable`, `NoMemoryEffect (MemoryEffectOpInterface)` Effects: `MemoryEffects::Effect{}` #### Operands: | Operand | Description | | :-----: | ----------- | | `operand` | tile of 16-bit float or 32-bit float or 8-bit signless integer or 16-bit signless integer or 32-bit signless integer values #### Results: | Result | Description | | :----: | ----------- | | `result` | 16-bit float or 32-bit float or 8-bit signless integer or 16-bit signless integer or 32-bit signless integer or tile of 16-bit float or 32-bit float or 8-bit signless integer or 16-bit signless integer or 32-bit signless integer values of length 1 ### `asctile.reduce_min` (asctile::ReduceMinOp) _Reduce tile to the provided shape_ Syntax: ``` operation ::= `asctile.reduce_min` $operand attr-dict `:` qualified(type($operand)) `,` qualified(type($result)) ``` Traits: `AlwaysSpeculatableImplTrait` Interfaces: `ConditionallySpeculatable`, `NoMemoryEffect (MemoryEffectOpInterface)` Effects: `MemoryEffects::Effect{}` #### Attributes:
AttributeMLIR TypeDescription
dims::mlir::ArrayAttr32-bit integer array attribute
#### Operands: | Operand | Description | | :-----: | ----------- | | `operand` | tile of 16-bit float or 32-bit float or 8-bit signless integer or 16-bit signless integer or 32-bit signless integer values #### Results: | Result | Description | | :----: | ----------- | | `result` | tile of 16-bit float or 32-bit float or 8-bit signless integer or 16-bit signless integer or 32-bit signless integer values ### `asctile.reduce_min_as_1d` (asctile::ReduceMinAs1dOp) _Reduce tile to 1-element tile or a scalar value_ Syntax: ``` operation ::= `asctile.reduce_min_as_1d` $operand attr-dict `:` qualified(type($operand)) `,` type($result) ``` Traits: `AlwaysSpeculatableImplTrait` Interfaces: `ConditionallySpeculatable`, `NoMemoryEffect (MemoryEffectOpInterface)` Effects: `MemoryEffects::Effect{}` #### Operands: | Operand | Description | | :-----: | ----------- | | `operand` | tile of 16-bit float or 32-bit float or 8-bit signless integer or 16-bit signless integer or 32-bit signless integer values #### Results: | Result | Description | | :----: | ----------- | | `result` | 16-bit float or 32-bit float or 8-bit signless integer or 16-bit signless integer or 32-bit signless integer or tile of 16-bit float or 32-bit float or 8-bit signless integer or 16-bit signless integer or 32-bit signless integer values of length 1 ### `asctile.reduce_prod` (asctile::ReduceProdOp) _Reduce tile to the provided shape_ Syntax: ``` operation ::= `asctile.reduce_prod` $operand attr-dict `:` qualified(type($operand)) `,` qualified(type($result)) ``` Traits: `AlwaysSpeculatableImplTrait` Interfaces: `ConditionallySpeculatable`, `NoMemoryEffect (MemoryEffectOpInterface)` Effects: `MemoryEffects::Effect{}` #### Attributes:
AttributeMLIR TypeDescription
dims::mlir::ArrayAttr32-bit integer array attribute
#### Operands: | Operand | Description | | :-----: | ----------- | | `operand` | tile of 16-bit float or 32-bit float or 8-bit signless integer or 16-bit signless integer or 32-bit signless integer values #### Results: | Result | Description | | :----: | ----------- | | `result` | tile of 16-bit float or 32-bit float or 8-bit signless integer or 16-bit signless integer or 32-bit signless integer values ### `asctile.reduce_sum` (asctile::ReduceSumOp) _Reduce tile to the provided shape_ Syntax: ``` operation ::= `asctile.reduce_sum` $operand attr-dict `:` qualified(type($operand)) `,` qualified(type($result)) ``` Traits: `AlwaysSpeculatableImplTrait` Interfaces: `ConditionallySpeculatable`, `NoMemoryEffect (MemoryEffectOpInterface)` Effects: `MemoryEffects::Effect{}` #### Attributes:
AttributeMLIR TypeDescription
dims::mlir::ArrayAttr32-bit integer array attribute
#### Operands: | Operand | Description | | :-----: | ----------- | | `operand` | tile of 16-bit float or 32-bit float or 8-bit signless integer or 16-bit signless integer or 32-bit signless integer values #### Results: | Result | Description | | :----: | ----------- | | `result` | tile of 16-bit float or 32-bit float or 8-bit signless integer or 16-bit signless integer or 32-bit signless integer values ### `asctile.reduce_sum_as_1d` (asctile::ReduceSumAs1dOp) _Reduce tile to 1-element tile or a scalar value_ Syntax: ``` operation ::= `asctile.reduce_sum_as_1d` $operand attr-dict `:` qualified(type($operand)) `,` type($result) ``` Traits: `AlwaysSpeculatableImplTrait` Interfaces: `ConditionallySpeculatable`, `NoMemoryEffect (MemoryEffectOpInterface)` Effects: `MemoryEffects::Effect{}` #### Operands: | Operand | Description | | :-----: | ----------- | | `operand` | tile of 16-bit float or 32-bit float or 8-bit signless integer or 16-bit signless integer or 32-bit signless integer values #### Results: | Result | Description | | :----: | ----------- | | `result` | 16-bit float or 32-bit float or 8-bit signless integer or 16-bit signless integer or 32-bit signless integer or tile of 16-bit float or 32-bit float or 8-bit signless integer or 16-bit signless integer or 32-bit signless integer values of length 1 ### `asctile.relu` (asctile::ReluOp) _Compute element-wise ReLU value of tile_ Syntax: ``` operation ::= `asctile.relu` $operand attr-dict `:` qualified(type($result)) ``` Traits: `AlwaysSpeculatableImplTrait` Interfaces: `ConditionallySpeculatable`, `NoMemoryEffect (MemoryEffectOpInterface)` Effects: `MemoryEffects::Effect{}` #### Operands: | Operand | Description | | :-----: | ----------- | | `operand` | tile of 16-bit float or 32-bit float or 8-bit signless integer or 16-bit signless integer or 32-bit signless integer values #### Results: | Result | Description | | :----: | ----------- | | `result` | tile of 16-bit float or 32-bit float or 8-bit signless integer or 16-bit signless integer or 32-bit signless integer values ### `asctile.reshape` (asctile::ReshapeOp) _Create tile with same data but different shape_ Syntax: ``` operation ::= `asctile.reshape` $in attr-dict `:` qualified(type($in)) `to` qualified(type($out)) ``` Traits: `AlwaysSpeculatableImplTrait`, `SameOperandsAndResultElementType` Interfaces: `CastOpInterface`, `ConditionallySpeculatable`, `NoMemoryEffect (MemoryEffectOpInterface)` Effects: `MemoryEffects::Effect{}` #### Operands: | Operand | Description | | :-----: | ----------- | | `in` | tile of 16-bit float or 32-bit float or 8-bit signless integer or 16-bit signless integer or 32-bit signless integer values #### Results: | Result | Description | | :----: | ----------- | | `out` | tile of 16-bit float or 32-bit float or 8-bit signless integer or 16-bit signless integer or 32-bit signless integer values ### `asctile.select` (asctile::SelectOp) _Select elements from two tiles depending on a mask_ Syntax: ``` operation ::= `asctile.select` $selMask `,` $src0 `,` $src1 attr-dict `:` qualified(type($result)) ``` Traits: `AlwaysSpeculatableImplTrait` Interfaces: `ConditionallySpeculatable`, `NoMemoryEffect (MemoryEffectOpInterface)` Effects: `MemoryEffects::Effect{}` #### Operands: | Operand | Description | | :-----: | ----------- | | `selMask` | tile of 1-bit signless integer values | `src0` | tile of 16-bit float or 32-bit float or 8-bit signless integer or 16-bit signless integer or 32-bit signless integer values | `src1` | tile of 16-bit float or 32-bit float or 8-bit signless integer or 16-bit signless integer or 32-bit signless integer values #### Results: | Result | Description | | :----: | ----------- | | `result` | tile of 16-bit float or 32-bit float or 8-bit signless integer or 16-bit signless integer or 32-bit signless integer values ### `asctile.set_value` (asctile::SetValueOp) _Store value into a tensor_ Syntax: ``` operation ::= `asctile.set_value` $value `,` $base `[` $offsets `]` attr-dict `:` qualified(type($base)) ``` Interfaces: `MemoryEffectsOpInterface` #### Operands: | Operand | Description | | :-----: | ----------- | | `value` | 16-bit float or 32-bit float or 8-bit signless integer or 16-bit signless integer or 32-bit signless integer | `base` | | `offsets` | variadic of 32-bit signless integer ### `asctile.shls` (asctile::ShLSOp) _Compute element-wise bitwise left shift of tile and scalar_ Syntax: ``` operation ::= `asctile.shls` $base `,` $value attr-dict `:` qualified(type($base)) ``` Traits: `AlwaysSpeculatableImplTrait` Interfaces: `ConditionallySpeculatable`, `NoMemoryEffect (MemoryEffectOpInterface)` Effects: `MemoryEffects::Effect{}` #### Operands: | Operand | Description | | :-----: | ----------- | | `base` | tile of 16-bit float or 32-bit float or 8-bit signless integer or 16-bit signless integer or 32-bit signless integer values | `value` | 16-bit float or 32-bit float or 8-bit signless integer or 16-bit signless integer or 32-bit signless integer #### Results: | Result | Description | | :----: | ----------- | | `result` | tile of 16-bit float or 32-bit float or 8-bit signless integer or 16-bit signless integer or 32-bit signless integer values ### `asctile.shrs` (asctile::ShRSOp) _Compute element-wise bitwise right shift of tile and scalar_ Syntax: ``` operation ::= `asctile.shrs` $base `,` $value attr-dict `:` qualified(type($base)) ``` Traits: `AlwaysSpeculatableImplTrait` Interfaces: `ConditionallySpeculatable`, `NoMemoryEffect (MemoryEffectOpInterface)` Effects: `MemoryEffects::Effect{}` #### Operands: | Operand | Description | | :-----: | ----------- | | `base` | tile of 16-bit float or 32-bit float or 8-bit signless integer or 16-bit signless integer or 32-bit signless integer values | `value` | 16-bit float or 32-bit float or 8-bit signless integer or 16-bit signless integer or 32-bit signless integer #### Results: | Result | Description | | :----: | ----------- | | `result` | tile of 16-bit float or 32-bit float or 8-bit signless integer or 16-bit signless integer or 32-bit signless integer values ### `asctile.softmax` (asctile::SoftmaxOp) _Compute row-wise softmax of 1D or 2D tile_ Syntax: ``` operation ::= `asctile.softmax` $operand attr-dict `:` qualified(type($result)) ``` Traits: `AlwaysSpeculatableImplTrait` Interfaces: `ConditionallySpeculatable`, `NoMemoryEffect (MemoryEffectOpInterface)` Effects: `MemoryEffects::Effect{}` #### Operands: | Operand | Description | | :-----: | ----------- | | `operand` | tile of 16-bit float or 32-bit float or 8-bit signless integer or 16-bit signless integer or 32-bit signless integer values of ranks 1/2 #### Results: | Result | Description | | :----: | ----------- | | `result` | tile of 16-bit float or 32-bit float or 8-bit signless integer or 16-bit signless integer or 32-bit signless integer values of ranks 1/2 ### `asctile.splat` (asctile::SplatOp) _Create a tile filled with splat value_ Syntax: ``` operation ::= `asctile.splat` $value attr-dict `:` qualified(type($result)) ``` Traits: `AlwaysSpeculatableImplTrait` Interfaces: `ConditionallySpeculatable`, `NoMemoryEffect (MemoryEffectOpInterface)` Effects: `MemoryEffects::Effect{}` #### Operands: | Operand | Description | | :-----: | ----------- | | `value` | 16-bit float or 32-bit float or 8-bit signless integer or 16-bit signless integer or 32-bit signless integer #### Results: | Result | Description | | :----: | ----------- | | `result` | tile of 16-bit float or 32-bit float or 8-bit signless integer or 16-bit signless integer or 32-bit signless integer values ### `asctile.store` (asctile::StoreOp) _Store a tile into a tensor_ Syntax: ``` operation ::= `asctile.store` $value `,` $base `[` $offsets `]` attr-dict `:` qualified(type($value)) `,` qualified(type($base)) ``` Interfaces: `MemoryEffectsOpInterface` #### Operands: | Operand | Description | | :-----: | ----------- | | `value` | tile of 16-bit float or 32-bit float or 8-bit signless integer or 16-bit signless integer or 32-bit signless integer values | `base` | | `offsets` | variadic of 32-bit signless integer ### `asctile.subs` (asctile::SubSOp) _Compute element-wise subtraction of tile and scalar_ Syntax: ``` operation ::= `asctile.subs` $base `,` $value attr-dict `:` qualified(type($base)) ``` Traits: `AlwaysSpeculatableImplTrait` Interfaces: `ConditionallySpeculatable`, `NoMemoryEffect (MemoryEffectOpInterface)` Effects: `MemoryEffects::Effect{}` #### Operands: | Operand | Description | | :-----: | ----------- | | `base` | tile of 16-bit float or 32-bit float or 8-bit signless integer or 16-bit signless integer or 32-bit signless integer values | `value` | 16-bit float or 32-bit float or 8-bit signless integer or 16-bit signless integer or 32-bit signless integer #### Results: | Result | Description | | :----: | ----------- | | `result` | tile of 16-bit float or 32-bit float or 8-bit signless integer or 16-bit signless integer or 32-bit signless integer values ### `asctile.tensor` (asctile::TensorOp) _Create tensor_ Syntax: ``` operation ::= `asctile.tensor` $base `(` $sizes `)` attr-dict `:` qualified(type($base)) `,` qualified(type($result)) ``` Traits: `AlwaysSpeculatableImplTrait` Interfaces: `ConditionallySpeculatable`, `NoMemoryEffect (MemoryEffectOpInterface)` Effects: `MemoryEffects::Effect{}` #### Operands: | Operand | Description | | :-----: | ----------- | | `base` | ranked or unranked memref of any type values | `sizes` | variadic of 32-bit signless integer #### Results: | Result | Description | | :----: | ----------- | | `result` | ### `asctile.yield` (asctile::YieldOp) _Terminator for operations with region_ Syntax: ``` operation ::= `asctile.yield` attr-dict ``` Traits: `Terminator` ## Types ### TensorType Syntax: ``` !asctile.tensor< ::llvm::ArrayRef, # shape Type # elementType > ``` #### Parameters: | Parameter | C++ type | Description | | :-------: | :-------: | ----------- | | shape | `::llvm::ArrayRef` | | | elementType | `Type` | | ### TileType Syntax: ``` !asctile.tile< ::llvm::ArrayRef, # shape Type, # elementType TileLocationAttr # locAttr > ``` #### Parameters: | Parameter | C++ type | Description | | :-------: | :-------: | ----------- | | shape | `::llvm::ArrayRef` | | | elementType | `Type` | | | locAttr | `TileLocationAttr` | | ## Enums ### AtomicKind kind of atomic #### Cases: | Symbol | Value | String | | :----: | :---: | ------ | | Add | `0` | Add | | Max | `1` | Max | | Min | `2` | Min | ### CompareMode comparsion type #### Cases: | Symbol | Value | String | | :----: | :---: | ------ | | LT | `0` | LT | | GT | `1` | GT | | EQ | `2` | EQ | | LE | `3` | LE | | GE | `4` | GE | | NE | `5` | NE | ### TileLocation tile location #### Cases: | Symbol | Value | String | | :----: | :---: | ------ | | L0A | `23` | L0A | | L0B | `24` | L0B | | L0C | `25` | L0C | | UB | `26` | UB | | L1 | `27` | L1 | | FIX | `28` | FIX |