# '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:
| Attribute | MLIR Type | Description |
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:
| Attribute | MLIR Type | Description |
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:
| Attribute | MLIR Type | Description |
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:
| Attribute | MLIR Type | Description |
index | ::mlir::IntegerAttr | 32-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:
| Attribute | MLIR Type | Description |
dims | ::mlir::ArrayAttr | 32-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:
| Attribute | MLIR Type | Description |
dims | ::mlir::ArrayAttr | 32-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:
| Attribute | MLIR Type | Description |
dims | ::mlir::ArrayAttr | 32-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:
| Attribute | MLIR Type | Description |
dims | ::mlir::ArrayAttr | 32-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 |