blob: 02d6653d7d78384ea8230d381b16c52544c66f17 [file] [log] [blame] [view]
# Support for the Arm Scalable Vector Extension
This branch hosts a work-in-progress version of gem5 with support for the Arm
Scalable Vector Extension (SVE). The aim of this branch is to provide early
access to interested parties, while work is carried out for gradually
upstreaming the contributions to the "master" branch. Please note that changes
to the codebase are expected as the code will be rebased on top of a more
recent changeset from "master" in the near future.
SVE is supported for all CPU models in syscall-emulation and full-system mode.
See the next section for the list of known issues and limitations.
To run programs with SVE code in syscall-emulation mode, one can use the
traditional example script "se.py":
```
$ ./build/ARM/gem5.opt configs/example/se.py \
--arm-sve-vl=<vl in quadwords: one of {1, 2, 4}> \
--cpu-type=<cpu type> \
[--caches] \
-c <binary> -o <options>
```
# Known issues
The current limitations apply to the model:
- Maximum vector length is currently hard-coded as 512-bit
- Unimplemented instructions:
- Gather/scatter loads/stores
- Load/store structures ({LD,ST}{2,3,4}{B,H,W,D})
- First-fault (LDFF1xx) and non-fault (LDNF1xx) loads
- Non-temporal loads/stores ({LD,ST}NT1xx)
- Data-processing instructions:
- CLASTA (SIMD&FP scalar)
- CLASTA (vectors)
- CLASTB (SIMD&FP scalar)
- CLASTB (vectors)
- FADDA
- FCADD
- FCMLA (indexed)
- FCMLA (vectors)
- FMLA (indexed)
- FMUL (indexed)
- INSR (scalar)
- INSR (SIMD&FP scalar)
- LASTA (SIMD&FP scalar)
- LASTB (SIMD&FP scalar)
- RDFFR (unpredicated)
- RDFFR, RDFFRS (predicated)
- SDOT (indexed)
- SDOT (vectors)
- SETFFR
- UDOT (indexed)
- UDOT (vectors)
- WRFFR
Work is currently ongoing on the implementation of the instructions above, and
priority is given to instructions that are more likely to be emitted by a
vectorizing compiler, i.e. gather/scatter loads/stores, load/store structures,
and first-fault loads.
If you encounter further issues, please contact:
Giacomo Gabrielli <Giacomo.Gabrielli@arm.com>
Gabor Dozsa <Gabor.Dozsa@arm.com>