diff options
author | Kito Cheng <kito.cheng@sifive.com> | 2021-06-23 16:18:54 +0800 |
---|---|---|
committer | Kito Cheng <kito.cheng@sifive.com> | 2021-10-17 16:25:23 +0800 |
commit | ff13189c5d0d96d0f955e9b1e951cf0ddc9e1d92 (patch) | |
tree | 97c46be2a773549c7af6168b94e84ce89cd143c8 /clang/lib/CodeGen/CodeGenModule.cpp | |
parent | 10726992fad771e7c630fc511d85bb81a8d1562e (diff) | |
download | llvm-ff13189c5d0d96d0f955e9b1e951cf0ddc9e1d92.zip llvm-ff13189c5d0d96d0f955e9b1e951cf0ddc9e1d92.tar.gz llvm-ff13189c5d0d96d0f955e9b1e951cf0ddc9e1d92.tar.bz2 |
[RISCV] Unify the arch string parsing logic to to RISCVISAInfo.
How many place you need to modify when implementing a new extension for RISC-V?
At least 7 places as I know:
- Add new SubtargetFeature at RISCV.td
- -march parser in RISCV.cpp
- RISCVTargetInfo::initFeatureMap@RISCV.cpp for handling feature vector.
- RISCVTargetInfo::getTargetDefines@RISCV.cpp for pre-define marco.
- Arch string parser for ELF attribute in RISCVAsmParser.cpp
- ELF attribute emittion in RISCVAsmParser.cpp, and make sure it's in
canonical order...
- ELF attribute emittion in RISCVTargetStreamer.cpp, and again, must in
canonical order...
And now, this patch provide an unified infrastructure for handling (almost)
everything of RISC-V arch string.
After this patch, you only need to update 2 places for implement an extension
for RISC-V:
- Add new SubtargetFeature at RISCV.td, hmmm, it's hard to avoid.
- Add new entry to RISCVSupportedExtension@RISCVISAInfo.cpp or
SupportedExperimentalExtensions@RISCVISAInfo.cpp .
Most codes are come from existing -march parser, but with few new feature/bug
fixes:
- Accept version for -march, e.g. -march=rv32i2p0.
- Reject version info with `p` but without minor version number like `rv32i2p`.
Differential Revision: https://reviews.llvm.org/D105168
Diffstat (limited to 'clang/lib/CodeGen/CodeGenModule.cpp')
0 files changed, 0 insertions, 0 deletions