#include "clang/Support/RISCVVIntrinsicUtils.h"
#include "llvm/ADT/ArrayRef.h"
#include "llvm/ADT/SmallSet.h"
#include "llvm/ADT/StringExtras.h"
#include "llvm/ADT/StringMap.h"
#include "llvm/ADT/StringSet.h"
#include "llvm/ADT/StringSwitch.h"
#include "llvm/ADT/Twine.h"
#include "llvm/TableGen/Error.h"
#include "llvm/TableGen/Record.h"
#include <numeric>
#include <optional>
usingnamespacellvm;
usingnamespaceclang::RISCV;
namespace {
struct SemaRecord { … };
class SemaSignatureTable { … };
class RVVEmitter { … };
}
static BasicType ParseBasicType(char c) { … }
static VectorTypeModifier getTupleVTM(unsigned NF) { … }
static unsigned getSegInstLog2SEW(StringRef InstName) { … }
void emitCodeGenSwitchBody(const RVVIntrinsic *RVVI, raw_ostream &OS) { … }
void SemaSignatureTable::init(ArrayRef<SemaRecord> SemaRecords) { … }
void SemaSignatureTable::insert(ArrayRef<PrototypeDescriptor> Signature) { … }
unsigned SemaSignatureTable::getIndex(ArrayRef<PrototypeDescriptor> Signature) { … }
void SemaSignatureTable::print(raw_ostream &OS) { … }
void RVVEmitter::createHeader(raw_ostream &OS) { … }
void RVVEmitter::createBuiltins(raw_ostream &OS) { … }
void RVVEmitter::createCodeGen(raw_ostream &OS) { … }
void RVVEmitter::createRVVIntrinsics(
std::vector<std::unique_ptr<RVVIntrinsic>> &Out,
std::vector<SemaRecord> *SemaRecords) { … }
void RVVEmitter::printHeaderCode(raw_ostream &OS) { … }
void RVVEmitter::createRVVIntrinsicRecords(std::vector<RVVIntrinsicRecord> &Out,
SemaSignatureTable &SST,
ArrayRef<SemaRecord> SemaRecords) { … }
void RVVEmitter::createSema(raw_ostream &OS) { … }
namespace clang {
void EmitRVVHeader(const RecordKeeper &Records, raw_ostream &OS) { … }
void EmitRVVBuiltins(const RecordKeeper &Records, raw_ostream &OS) { … }
void EmitRVVBuiltinCG(const RecordKeeper &Records, raw_ostream &OS) { … }
void EmitRVVBuiltinSema(const RecordKeeper &Records, raw_ostream &OS) { … }
}