#include "llvm/ADT/ArrayRef.h"
#include "llvm/ADT/STLExtras.h"
#include "llvm/ADT/StringExtras.h"
#include "llvm/ADT/StringMap.h"
#include "llvm/TableGen/AArch64ImmCheck.h"
#include "llvm/TableGen/Error.h"
#include "llvm/TableGen/Record.h"
#include <array>
#include <cctype>
#include <set>
#include <sstream>
#include <string>
#include <tuple>
usingnamespacellvm;
enum ClassKind { … };
enum class ACLEKind { … };
TypeSpec;
namespace {
class SVEType { … };
class SVEEmitter;
class Intrinsic { … };
class SVEEmitter { … };
const std::array<SVEEmitter::ReinterpretTypeInfo, 12> SVEEmitter::Reinterprets = …;
}
std::string SVEType::builtin_str() const { … }
std::string SVEType::str() const { … }
void SVEType::applyTypespec(StringRef TS) { … }
void SVEType::applyModifier(char Mod) { … }
std::pair<char, unsigned> getProtoModifier(StringRef Proto, unsigned Op) { … }
Intrinsic::Intrinsic(StringRef Name, StringRef Proto, uint64_t MergeTy,
StringRef MergeSuffix, uint64_t MemoryElementTy,
StringRef LLVMName, uint64_t Flags,
ArrayRef<ImmCheck> Checks, TypeSpec BT, ClassKind Class,
SVEEmitter &Emitter, StringRef SVEGuard,
StringRef SMEGuard)
: … { … }
std::string Intrinsic::getBuiltinTypeStr() { … }
std::string Intrinsic::replaceTemplatedArgs(std::string Name, TypeSpec TS,
std::string Proto) const { … }
std::string Intrinsic::mangleLLVMName() const { … }
std::string Intrinsic::mangleName(ClassKind LocalCK) const { … }
void Intrinsic::emitIntrinsic(raw_ostream &OS, SVEEmitter &Emitter,
ACLEKind Kind) const { … }
uint64_t SVEEmitter::encodeTypeFlags(const SVEType &T) { … }
void SVEEmitter::createIntrinsic(
const Record *R, SmallVectorImpl<std::unique_ptr<Intrinsic>> &Out) { … }
void SVEEmitter::createCoreHeaderIntrinsics(raw_ostream &OS,
SVEEmitter &Emitter,
ACLEKind Kind) { … }
void SVEEmitter::createHeader(raw_ostream &OS) { … }
void SVEEmitter::createBuiltins(raw_ostream &OS) { … }
void SVEEmitter::createCodeGenMap(raw_ostream &OS) { … }
void SVEEmitter::createRangeChecks(raw_ostream &OS) { … }
void SVEEmitter::createTypeFlags(raw_ostream &OS) { … }
void SVEEmitter::createImmCheckTypes(raw_ostream &OS) { … }
void SVEEmitter::createSMEHeader(raw_ostream &OS) { … }
void SVEEmitter::createSMEBuiltins(raw_ostream &OS) { … }
void SVEEmitter::createSMECodeGenMap(raw_ostream &OS) { … }
void SVEEmitter::createSMERangeChecks(raw_ostream &OS) { … }
void SVEEmitter::createBuiltinZAState(raw_ostream &OS) { … }
void SVEEmitter::createStreamingAttrs(raw_ostream &OS, ACLEKind Kind) { … }
namespace clang {
void EmitSveHeader(const RecordKeeper &Records, raw_ostream &OS) { … }
void EmitSveBuiltins(const RecordKeeper &Records, raw_ostream &OS) { … }
void EmitSveBuiltinCG(const RecordKeeper &Records, raw_ostream &OS) { … }
void EmitSveRangeChecks(const RecordKeeper &Records, raw_ostream &OS) { … }
void EmitSveTypeFlags(const RecordKeeper &Records, raw_ostream &OS) { … }
void EmitImmCheckTypes(const RecordKeeper &Records, raw_ostream &OS) { … }
void EmitSveStreamingAttrs(const RecordKeeper &Records, raw_ostream &OS) { … }
void EmitSmeHeader(const RecordKeeper &Records, raw_ostream &OS) { … }
void EmitSmeBuiltins(const RecordKeeper &Records, raw_ostream &OS) { … }
void EmitSmeBuiltinCG(const RecordKeeper &Records, raw_ostream &OS) { … }
void EmitSmeRangeChecks(const RecordKeeper &Records, raw_ostream &OS) { … }
void EmitSmeStreamingAttrs(const RecordKeeper &Records, raw_ostream &OS) { … }
void EmitSmeBuiltinZAState(const RecordKeeper &Records, raw_ostream &OS) { … }
}