1 //===-- RISCVTargetParser - Parser for target features ----------*- C++ -*-===//
2 //
3 // Part of the LLVM Project, under the Apache License v2.0 with LLVM Exceptions.
4 // See https://llvm.org/LICENSE.txt for license information.
5 // SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception
6 //
7 //===----------------------------------------------------------------------===//
8 //
9 // This file implements a target parser to recognise hardware features
10 // for RISC-V CPUs.
11 //
12 //===----------------------------------------------------------------------===//
13 
14 #ifndef LLVM_TARGETPARSER_RISCVTARGETPARSER_H
15 #define LLVM_TARGETPARSER_RISCVTARGETPARSER_H
16 
17 #include "llvm/ADT/StringRef.h"
18 #include <vector>
19 
20 namespace llvm {
21 
22 class Triple;
23 
24 namespace RISCV {
25 
26 // We use 64 bits as the known part in the scalable vector types.
27 static constexpr unsigned RVVBitsPerBlock = 64;
28 
29 bool parseCPU(StringRef CPU, bool IsRV64);
30 bool parseTuneCPU(StringRef CPU, bool IsRV64);
31 StringRef getMArchFromMcpu(StringRef CPU);
32 void fillValidCPUArchList(SmallVectorImpl<StringRef> &Values, bool IsRV64);
33 void fillValidTuneCPUArchList(SmallVectorImpl<StringRef> &Values, bool IsRV64);
34 
35 } // namespace RISCV
36 } // namespace llvm
37 
38 #endif
39