Skip to content

Commit 8a05b7b

Browse files
[AIE] Update readme
1 parent b8670fd commit 8a05b7b

File tree

1 file changed

+7
-6
lines changed

1 file changed

+7
-6
lines changed

README.md

Lines changed: 7 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -4,7 +4,7 @@ This repository extends the LLVM framework to generate code for use with AMD/Xil
44

55
## Architecture Overview
66

7-
Generally speaking, AI Engine processors are in-order, exposed-pipeline VLIW processors. These processors are implemented as part of an array of processors focused on application acceleration targeting AI, Machine Learning, and DSP applications. They have been integrated in a number of commercial devices including the [Versal AI Core Series](https://www.xilinx.com/products/silicon-devices/acap/versal-ai-core.html) and [Ryzen-AI SOCs](https://www.amd.com/en/products/processors/consumer/ryzen-ai.html).
7+
Generally speaking, AI Engine processors are in-order, exposed-pipeline VLIW processors. These processors are implemented as part of an array of processors focused on application acceleration targetting AI, Machine Learning, and DSP applications. They have been integrated in a number of commercial devices including the [Versal AI Core Series](https://www.amd.com/en/products/adaptive-socs-and-fpgas/versal/ai-core-series.html) and [Ryzen-AI SOCs](https://www.amd.com/en/products/processors/consumer/ryzen-ai.html).
88

99
Each VLIW instruction bundle specifies the behavior of one or more functional units, which begin executing a new instruction at the same time. The processor pipeline does not include stall logic, and instructions will continue executing in order regardless of other instructions in the pipeline. As a result, the compiler is able to schedule machine instructions which access the same register in ways that potentially overlap. e.g.
1010

@@ -23,8 +23,8 @@ Each VLIW instruction bundle specifies the behavior of one or more functional un
2323
Other key architectural characteristics include varying width instruction slots between different instruction encodings and relatively small address spaces (20-bit pointer registers). The presence of varying-width instruction slots implies some code alignment restrictions for instructions which are branch or return targets.
2424

2525
For more information, see:
26-
[AIE1 architecture manual](https://docs.xilinx.com/r/en-US/am009-versal-ai-engine) and
27-
[AIE2 architecture manual](https://docs.xilinx.com/r/en-US/am020-versal-aie-ml)
26+
[AIE1 architecture manual](https://docs.amd.com/r/en-US/am009-versal-ai-engine) and
27+
[AIE2 architecture manual](https://docs.amd.com/r/en-US/am020-versal-aie-ml)
2828

2929

3030
## Implementation
@@ -33,18 +33,19 @@ The AIE target includes basic support for both AIE1 and AIE2 instruction sets.
3333

3434
| Subtarget | Instruction Selection | VLIW scheduling | Software Pipelining | Hardware Loops | delay slot filling | Floating point | Vector Intrinsics | post-increment addressing |
3535
| --- | --- | --- | --- | --- | --- | --- | --- | --- |
36-
| AIE1 | SelectionDAG | PostRA Scheduler | Not Yet | Not Yet | Not Yet | Yes, vector fp32 | Yes, i8, i16, i32 | No |
36+
| AIE1 | SelectionDAG | PostRA Scheduler | No | No | No | Yes, vector fp32 | Yes, i8, i16, i32 | No |
3737
| AIE2 | GlobalISel | Machine Scheduler | Experimental | Experimental | Yes | Yes, vector bfloat | Yes, i8, i16 | Yes |
3838

3939
Support for Clang, LLD, binutils (e.g. 'llvm-objdump'), Compiler-RT, and LLVM-LIBC is also included.
4040

4141
In order to support the unusual architecture features of AI Engine, this repository adds LLVM support for several specific features:
4242
- support for non-power of 2 pointers;
4343
- improved TableGen support for specifying operand latencies and resource conflicts of exposed pipeline instructions;
44-
- scheduler support for negative operand latencies;
44+
- scheduler support for negative operand latencies (i.e. an instruction writing to a register may be scheduled *after* a corresponding use);
45+
- scheduler support for slot assignment when instructions that can be issued in multiple VLIW slots;
4546
- support for selecting relocations for instructions with multiple encodings;
4647
- support for architectures with code alignment restrictions;
47-
- improved register allocation support for complex register hierarchies;
48+
- improved register allocation support for complex register hierarchies, specifically related to spills of sub-registers of large compound-registers;
4849

4950
## Disclaimer
5051

0 commit comments

Comments
 (0)