'vcix' Dialect
The SiFive Vector Coprocessor Interface (VCIX) provides a flexible mechanism to extend application processors with custom coprocessors and variable-latency arithmetic units. The interface offers throughput comparable to that of standard RISC-V vector instructions. To accelerate performance, system designers may use VCIX as a low-latency, high-throughput interface to a coprocessor
https://www.sifive.com/document-file/sifive-vector-coprocessor-interface-vcix-software
Operations ¶
vcix.v.iv (vcix::BinaryImmOp) ¶
Binary VCIX operation with an immediate second operand
Binary VCIX operation with an immediate second operand.
Correponds to:
| Mnemonic | funct6 | vm | rs2 | rs1 | funct3 | rd | Destination | Sources |
|---|---|---|---|---|---|---|---|---|
| sf.vc.v.iv | 0010– | 0 | vs2 | simm | 011 | vd | vector vd | simm[4:0] vector vs2 |
Attributes: ¶
| Attribute | MLIR Type | Description |
|---|---|---|
opcode | ::mlir::Attribute | 32-bit signless integer attribute or 64-bit signless integer attribute |
imm | ::mlir::Attribute | 32-bit signless integer attribute or 64-bit signless integer attribute |
Operands: ¶
| Operand | Description |
|---|---|
vs2 | LLVM dialect-compatible vector type |
vl | 64-bit signless integer or 32-bit signless integer |
Results: ¶
| Result | Description |
|---|---|
res | LLVM dialect-compatible vector type |
vcix.v.sv (vcix::BinaryOp) ¶
Binary VCIX operation
Binary VCIX operation with an integer scalar, or floating pointer scalar or vector second operand.
Correponds to:
| Mnemonic | funct6 | vm | rs2 | rs1 | funct3 | rd | Destination | Sources | |
|---|---|---|---|---|---|---|---|---|---|
| sf.vc.v.vv | 0010– | 0 | vs2 | vs1 | 000 | vd | vector vd | vector vs1, vector vs | |
| sf.vc.v.xv | 0010– | 0 | vs2 | xs1 | 100 | vd | vector vd | scalar xs1, vector vs2 | |
| sf.vc.v.fv | 0010– | 0 | vs2 | fs1 | 101 | vd | vector vd | scalar fs1, vector vs2 |
Attributes: ¶
| Attribute | MLIR Type | Description |
|---|---|---|
opcode | ::mlir::Attribute | 32-bit signless integer attribute or 64-bit signless integer attribute |
Operands: ¶
| Operand | Description |
|---|---|
vs2 | LLVM dialect-compatible vector type |
op | LLVM dialect-compatible vector type or 64-bit signless integer or 32-bit signless integer or 16-bit float or 32-bit float or 64-bit float |
vl | 64-bit signless integer or 32-bit signless integer |
Results: ¶
| Result | Description |
|---|---|
res | LLVM dialect-compatible vector type |
MLIR