diff options
author | Hsiangkai Wang <kai.wang@sifive.com> | 2020-12-31 17:14:15 +0800 |
---|---|---|
committer | Hsiangkai Wang <kai.wang@sifive.com> | 2021-01-20 14:26:04 +0800 |
commit | 8ca4b174d703e8676c6d47a2e25895c82e2e2ab7 (patch) | |
tree | 706113d33fcbf1689d7b860be9922fd3cdb28e40 /clang/lib/Frontend/CompilerInvocation.cpp | |
parent | f96ff3c0f8ebd941b3f6b345164c3d858b781484 (diff) | |
download | llvm-8ca4b174d703e8676c6d47a2e25895c82e2e2ab7.zip llvm-8ca4b174d703e8676c6d47a2e25895c82e2e2ab7.tar.gz llvm-8ca4b174d703e8676c6d47a2e25895c82e2e2ab7.tar.bz2 |
[RISCV] Implement vlseg intrinsics.
For Zvlsseg, we need continuous vector registers for the values. We need
to define new register classes for the different combinations of (number
of fields and LMUL). For example,
when the number of fields(NF) = 3, LMUL = 2, the values will be assigned
to (V0M2, V2M2, V4M2), (V2M2, V4M2, V6M2), (V4M2, V6M2, V8M2), ...
We define the vlseg intrinsics with multiple outputs. There is no way to
describe the codegen patterns with multiple outputs in the tablegen
files. We do the codegen in RISCVISelDAGToDAG and use EXTRACT_SUBREG to
extract the values of output.
The multiple scalable vector values will be put into a struct. This
patch is depended on the support for scalable vector struct.
Differential Revision: https://reviews.llvm.org/D94229
Diffstat (limited to 'clang/lib/Frontend/CompilerInvocation.cpp')
0 files changed, 0 insertions, 0 deletions