|
reference, declaration → definition
definition → references, declarations, derived classes, virtual overrides
reference to multiple definitions → definitions
unreferenced
|
Derived Classes
include/llvm/TableGen/Record.h 425 class TypedInit : public Init {
457 class UnsetInit : public Init {
Declarations
include/llvm/TableGen/SetTheory.h 61 class Init;
lib/TableGen/TGParser.h 28 class Init;
utils/TableGen/CodeGenDAGPatterns.h 38 class Init;
References
include/llvm/ADT/ArrayRef.h 108 const ArrayRef<U *> &A,
110 std::is_convertible<U *const *, T const *>::value>::type * = nullptr)
118 const SmallVectorTemplateCommon<U *, DummyT> &Vec,
120 std::is_convertible<U *const *, T const *>::value>::type * = nullptr)
127 ArrayRef(const std::vector<U *, A> &Vec,
129 std::is_convertible<U *const *, T const *>::value>::type* = 0)
include/llvm/ADT/DenseMapInfo.h 39 static inline T* getEmptyKey() {
41 Val <<= PointerLikeTypeTraits<T*>::NumLowBitsAvailable;
45 static inline T* getTombstoneKey() {
47 Val <<= PointerLikeTypeTraits<T*>::NumLowBitsAvailable;
51 static unsigned getHashValue(const T *PtrVal) {
56 static bool isEqual(const T *LHS, const T *RHS) { return LHS == RHS; }
56 static bool isEqual(const T *LHS, const T *RHS) { return LHS == RHS; }
include/llvm/Support/Casting.h 57 static inline bool doit(const From &Val) {
104 static inline bool doit(const From *Val) {
106 return isa_impl<To, From>::doit(*Val);
263 inline typename cast_retty<X, Y *>::ret_type cast(Y *Val) {
263 inline typename cast_retty<X, Y *>::ret_type cast(Y *Val) {
265 return cast_convert_val<X, Y*,
266 typename simplify_type<Y*>::SimpleType>::doit(Val);
342 LLVM_NODISCARD inline typename cast_retty<X, Y *>::ret_type dyn_cast(Y *Val) {
342 LLVM_NODISCARD inline typename cast_retty<X, Y *>::ret_type dyn_cast(Y *Val) {
366 LLVM_NODISCARD inline typename cast_retty<X, Y *>::ret_type
367 dyn_cast_or_null(Y *Val) {
include/llvm/Support/PointerLikeTypeTraits.h 56 static inline void *getAsVoidPointer(T *P) { return P; }
57 static inline T *getFromVoidPointer(void *P) { return static_cast<T *>(P); }
59 enum { NumLowBitsAvailable = detail::ConstantLog2<alignof(T)>::value };
include/llvm/TableGen/Record.h 346 Init(const Init &) = delete;
347 Init &operator=(const Init &) = delete;
347 Init &operator=(const Init &) = delete;
376 virtual Init *getCastTo(RecTy *Ty) const = 0;
381 virtual Init *convertInitializerTo(RecTy *Ty) const = 0;
387 virtual Init *convertInitializerBitRange(ArrayRef<unsigned> Bits) const {
395 virtual Init *convertInitListSlice(ArrayRef<unsigned> Elements) const {
410 virtual Init *resolveReferences(Resolver &R) const {
416 virtual Init *getBit(unsigned Bit) const = 0;
419 inline raw_ostream &operator<<(raw_ostream &OS, const Init &I) {
425 class TypedInit : public Init {
436 static bool classof(const Init *I) {
443 Init *getCastTo(RecTy *Ty) const override;
444 Init *convertInitializerTo(RecTy *Ty) const override;
446 Init *convertInitializerBitRange(ArrayRef<unsigned> Bits) const override;
447 Init *convertInitListSlice(ArrayRef<unsigned> Elements) const override;
457 class UnsetInit : public Init {
464 static bool classof(const Init *I) {
470 Init *getCastTo(RecTy *Ty) const override;
471 Init *convertInitializerTo(RecTy *Ty) const override;
473 Init *getBit(unsigned Bit) const override {
492 static bool classof(const Init *I) {
500 Init *convertInitializerTo(RecTy *Ty) const override;
502 Init *getBit(unsigned Bit) const override {
514 public TrailingObjects<BitsInit, Init *> {
527 static bool classof(const Init *I) {
531 static BitsInit *get(ArrayRef<Init *> Range);
537 Init *convertInitializerTo(RecTy *Ty) const override;
538 Init *convertInitializerBitRange(ArrayRef<unsigned> Bits) const override;
555 Init *resolveReferences(Resolver &R) const override;
557 Init *getBit(unsigned Bit) const override {
559 return getTrailingObjects<Init *>()[Bit];
574 static bool classof(const Init *I) {
582 Init *convertInitializerTo(RecTy *Ty) const override;
583 Init *convertInitializerBitRange(ArrayRef<unsigned> Bits) const override;
588 Init *getBit(unsigned Bit) const override {
604 static bool classof(const Init *I) {
612 Init *convertInitializerTo(RecTy *Ty) const override;
619 Init *getBit(unsigned Bit) const override {
636 static bool classof(const Init *I) {
645 Init *convertInitializerTo(RecTy *Ty) const override;
654 Init *getBit(unsigned Bit) const override {
662 public TrailingObjects<ListInit, Init *> {
666 using const_iterator = Init *const *;
679 static bool classof(const Init *I) {
682 static ListInit *get(ArrayRef<Init *> Range, RecTy *EltTy);
686 Init *getElement(unsigned i) const {
688 return getTrailingObjects<Init *>()[i];
696 Init *convertInitListSlice(ArrayRef<unsigned> Elements) const override;
698 Init *convertInitializerTo(RecTy *Ty) const override;
705 Init *resolveReferences(Resolver &R) const override;
710 ArrayRef<Init*> getValues() const {
711 return makeArrayRef(getTrailingObjects<Init *>(), NumValues);
714 const_iterator begin() const { return getTrailingObjects<Init *>(); }
720 Init *getBit(unsigned Bit) const override {
736 static bool classof(const Init *I) {
742 virtual OpInit *clone(ArrayRef<Init *> Operands) const = 0;
745 virtual Init *getOperand(unsigned i) const = 0;
747 Init *getBit(unsigned Bit) const override;
757 Init *LHS;
759 UnOpInit(UnaryOp opc, Init *lhs, RecTy *Type)
766 static bool classof(const Init *I) {
770 static UnOpInit *get(UnaryOp opc, Init *lhs, RecTy *Type);
775 OpInit *clone(ArrayRef<Init *> Operands) const override {
783 Init *getOperand(unsigned i) const override {
789 Init *getOperand() const { return LHS; }
793 Init *Fold(Record *CurRec, bool IsFinal = false) const;
795 Init *resolveReferences(Resolver &R) const override;
808 Init *LHS, *RHS;
810 BinOpInit(BinaryOp opc, Init *lhs, Init *rhs, RecTy *Type) :
810 BinOpInit(BinaryOp opc, Init *lhs, Init *rhs, RecTy *Type) :
817 static bool classof(const Init *I) {
821 static BinOpInit *get(BinaryOp opc, Init *lhs, Init *rhs,
821 static BinOpInit *get(BinaryOp opc, Init *lhs, Init *rhs,
823 static Init *getStrConcat(Init *lhs, Init *rhs);
823 static Init *getStrConcat(Init *lhs, Init *rhs);
823 static Init *getStrConcat(Init *lhs, Init *rhs);
824 static Init *getListConcat(TypedInit *lhs, Init *rhs);
824 static Init *getListConcat(TypedInit *lhs, Init *rhs);
825 static Init *getListSplat(TypedInit *lhs, Init *rhs);
825 static Init *getListSplat(TypedInit *lhs, Init *rhs);
830 OpInit *clone(ArrayRef<Init *> Operands) const override {
837 Init *getOperand(unsigned i) const override {
846 Init *getLHS() const { return LHS; }
847 Init *getRHS() const { return RHS; }
851 Init *Fold(Record *CurRec) const;
853 Init *resolveReferences(Resolver &R) const override;
864 Init *LHS, *MHS, *RHS;
866 TernOpInit(TernaryOp opc, Init *lhs, Init *mhs, Init *rhs,
866 TernOpInit(TernaryOp opc, Init *lhs, Init *mhs, Init *rhs,
866 TernOpInit(TernaryOp opc, Init *lhs, Init *mhs, Init *rhs,
874 static bool classof(const Init *I) {
878 static TernOpInit *get(TernaryOp opc, Init *lhs,
879 Init *mhs, Init *rhs,
879 Init *mhs, Init *rhs,
885 OpInit *clone(ArrayRef<Init *> Operands) const override {
893 Init *getOperand(unsigned i) const override {
903 Init *getLHS() const { return LHS; }
904 Init *getMHS() const { return MHS; }
905 Init *getRHS() const { return RHS; }
909 Init *Fold(Record *CurRec) const;
915 Init *resolveReferences(Resolver &R) const override;
924 public TrailingObjects<CondOpInit, Init *> {
932 size_t numTrailingObjects(OverloadToken<Init *>) const {
940 static bool classof(const Init *I) {
944 static CondOpInit *get(ArrayRef<Init*> C, ArrayRef<Init*> V,
944 static CondOpInit *get(ArrayRef<Init*> C, ArrayRef<Init*> V,
953 Init *getCond(unsigned Num) const {
955 return getTrailingObjects<Init *>()[Num];
958 Init *getVal(unsigned Num) const {
960 return getTrailingObjects<Init *>()[Num+NumConds];
963 ArrayRef<Init *> getConds() const {
964 return makeArrayRef(getTrailingObjects<Init *>(), NumConds);
967 ArrayRef<Init *> getVals() const {
968 return makeArrayRef(getTrailingObjects<Init *>()+NumConds, NumConds);
971 Init *Fold(Record *CurRec) const;
973 Init *resolveReferences(Resolver &R) const override;
979 using const_case_iterator = SmallVectorImpl<Init*>::const_iterator;
980 using const_val_iterator = SmallVectorImpl<Init*>::const_iterator;
994 Init *getBit(unsigned Bit) const override;
1000 Init *Start;
1001 Init *List;
1002 Init *A;
1003 Init *B;
1004 Init *Expr;
1006 FoldOpInit(Init *Start, Init *List, Init *A, Init *B, Init *Expr, RecTy *Type)
1006 FoldOpInit(Init *Start, Init *List, Init *A, Init *B, Init *Expr, RecTy *Type)
1006 FoldOpInit(Init *Start, Init *List, Init *A, Init *B, Init *Expr, RecTy *Type)
1006 FoldOpInit(Init *Start, Init *List, Init *A, Init *B, Init *Expr, RecTy *Type)
1006 FoldOpInit(Init *Start, Init *List, Init *A, Init *B, Init *Expr, RecTy *Type)
1014 static bool classof(const Init *I) { return I->getKind() == IK_FoldOpInit; }
1016 static FoldOpInit *get(Init *Start, Init *List, Init *A, Init *B, Init *Expr,
1016 static FoldOpInit *get(Init *Start, Init *List, Init *A, Init *B, Init *Expr,
1016 static FoldOpInit *get(Init *Start, Init *List, Init *A, Init *B, Init *Expr,
1016 static FoldOpInit *get(Init *Start, Init *List, Init *A, Init *B, Init *Expr,
1016 static FoldOpInit *get(Init *Start, Init *List, Init *A, Init *B, Init *Expr,
1023 Init *Fold(Record *CurRec) const;
1027 Init *resolveReferences(Resolver &R) const override;
1029 Init *getBit(unsigned Bit) const override;
1038 Init *Expr;
1040 IsAOpInit(RecTy *CheckType, Init *Expr)
1048 static bool classof(const Init *I) { return I->getKind() == IK_IsAOpInit; }
1050 static IsAOpInit *get(RecTy *CheckType, Init *Expr);
1056 Init *Fold() const;
1060 Init *resolveReferences(Resolver &R) const override;
1062 Init *getBit(unsigned Bit) const override;
1069 Init *VarName;
1071 explicit VarInit(Init *VN, RecTy *T)
1078 static bool classof(const Init *I) {
1083 static VarInit *get(Init *VN, RecTy *T);
1086 Init *getNameInit() const { return VarName; }
1097 Init *resolveReferences(Resolver &R) const override;
1099 Init *getBit(unsigned Bit) const override;
1122 static bool classof(const Init *I) {
1128 Init *getBitVar() const { return TI; }
1132 Init *resolveReferences(Resolver &R) const override;
1134 Init *getBit(unsigned B) const override {
1158 static bool classof(const Init *I) {
1168 Init *resolveReferences(Resolver &R) const override;
1170 Init *getBit(unsigned Bit) const override;
1185 static bool classof(const Init *I) {
1191 Init *convertInitializerTo(RecTy *Ty) const override;
1202 Init *getBit(unsigned Bit) const override {
1210 public TrailingObjects<VarDefInit, Init *> {
1227 static bool classof(const Init *I) {
1230 static VarDefInit *get(Record *Class, ArrayRef<Init *> Args);
1234 Init *resolveReferences(Resolver &R) const override;
1235 Init *Fold() const;
1239 Init *getArg(unsigned i) const {
1241 return getTrailingObjects<Init *>()[i];
1244 using const_iterator = Init *const *;
1246 const_iterator args_begin() const { return getTrailingObjects<Init *>(); }
1252 ArrayRef<Init *> args() const { return makeArrayRef(args_begin(), NumArgs); }
1254 Init *getBit(unsigned Bit) const override {
1261 Init *Rec; // Record we are referring to
1264 FieldInit(Init *R, StringInit *FN)
1280 static bool classof(const Init *I) {
1284 static FieldInit *get(Init *R, StringInit *FN);
1286 Init *getRecord() const { return Rec; }
1289 Init *getBit(unsigned Bit) const override;
1291 Init *resolveReferences(Resolver &R) const override;
1292 Init *Fold(Record *CurRec) const;
1303 public TrailingObjects<DagInit, Init *, StringInit *> {
1306 Init *Val;
1311 DagInit(Init *V, StringInit *VN, unsigned NumArgs, unsigned NumArgNames)
1315 size_t numTrailingObjects(OverloadToken<Init *>) const { return NumArgs; }
1321 static bool classof(const Init *I) {
1325 static DagInit *get(Init *V, StringInit *VN, ArrayRef<Init *> ArgRange,
1325 static DagInit *get(Init *V, StringInit *VN, ArrayRef<Init *> ArgRange,
1327 static DagInit *get(Init *V, StringInit *VN,
1328 ArrayRef<std::pair<Init*, StringInit*>> Args);
1332 Init *getOperator() const { return Val; }
1343 Init *getArg(unsigned Num) const {
1345 return getTrailingObjects<Init *>()[Num];
1358 ArrayRef<Init *> getArgs() const {
1359 return makeArrayRef(getTrailingObjects<Init *>(), NumArgs);
1366 Init *resolveReferences(Resolver &R) const override;
1371 using const_arg_iterator = SmallVectorImpl<Init*>::const_iterator;
1386 Init *getBit(unsigned Bit) const override {
1398 Init *Name;
1400 Init *Value;
1403 RecordVal(Init *N, RecTy *T, bool P);
1406 Init *getNameInit() const { return Name; }
1414 Init *getValue() const { return Value; }
1416 bool setValue(Init *V);
1430 Init *Name;
1434 SmallVector<Init *, 0> TemplateArgs;
1456 explicit Record(Init *N, ArrayRef<SMLoc> locs, RecordKeeper &records,
1482 Init *getNameInit() const {
1490 void setName(Init *Name); // Also updates RecordKeeper.
1503 ArrayRef<Init *> getTemplateArgs() const {
1516 bool isTemplateArg(Init *Name) const {
1517 for (Init *TA : TemplateArgs)
1522 const RecordVal *getValue(const Init *Name) const {
1532 RecordVal *getValue(const Init *Name) {
1540 void addTemplateArg(Init *Name) {
1550 void removeValue(Init *Name) {
1624 Init *getValueInit(StringRef FieldName) const;
1700 std::map<std::string, Init *, std::less<>> ExtraGlobals;
1717 Init *getGlobal(StringRef Name) const {
1738 void addExtraGlobal(StringRef Name, Init *I) {
1745 Init *getNewAnonymousName();
1882 virtual Init *resolve(Init *VarName) = 0;
1882 virtual Init *resolve(Init *VarName) = 0;
1900 Init *V;
1904 MappedValue(Init *V, bool Resolved) : V(V), Resolved(Resolved) {}
1907 DenseMap<Init *, MappedValue> Map;
1912 void set(Init *Key, Init *Value) { Map[Key] = {Value, false}; }
1912 void set(Init *Key, Init *Value) { Map[Key] = {Value, false}; }
1914 Init *resolve(Init *VarName) override;
1914 Init *resolve(Init *VarName) override;
1919 DenseMap<Init *, Init *> Cache;
1919 DenseMap<Init *, Init *> Cache;
1920 SmallVector<Init *, 4> Stack;
1925 Init *resolve(Init *VarName) override;
1925 Init *resolve(Init *VarName) override;
1942 Init *resolve(Init *VarName) override {
1942 Init *resolve(Init *VarName) override {
1952 DenseSet<Init *> Shadowed;
1960 void addShadow(Init *Key) { Shadowed.insert(Key); }
1962 Init *resolve(Init *VarName) override {
1962 Init *resolve(Init *VarName) override {
1981 Init *resolve(Init *VarName) override;
1981 Init *resolve(Init *VarName) override;
1987 Init *VarNameToTrack;
1991 explicit HasReferenceResolver(Init *VarNameToTrack)
1996 Init *resolve(Init *VarName) override;
1996 Init *resolve(Init *VarName) override;
include/llvm/TableGen/SetTheory.h 127 void evaluate(Init *Expr, RecSet &Elts, ArrayRef<SMLoc> Loc);
lib/TableGen/JSONBackend.cpp 31 json::Value translateInit(const Init &I);
44 json::Value JSONEmitter::translateInit(const Init &I) {
lib/TableGen/Record.cpp 303 Init *UnsetInit::getCastTo(RecTy *Ty) const {
307 Init *UnsetInit::convertInitializerTo(RecTy *Ty) const {
318 Init *BitInit::convertInitializerTo(RecTy *Ty) const {
335 ProfileBitsInit(FoldingSetNodeID &ID, ArrayRef<Init *> Range) {
338 for (Init *I : Range)
342 BitsInit *BitsInit::get(ArrayRef<Init *> Range) {
352 void *Mem = Allocator.Allocate(totalSizeToAlloc<Init *>(Range.size()),
356 I->getTrailingObjects<Init *>());
362 ProfileBitsInit(ID, makeArrayRef(getTrailingObjects<Init *>(), NumBits));
365 Init *BitsInit::convertInitializerTo(RecTy *Ty) const {
391 Init *
393 SmallVector<Init *, 16> NewBits(Bits.size());
415 if (Init *Bit = getBit(e-i-1))
425 Init *BitsInit::resolveReferences(Resolver &R) const {
427 SmallVector<Init *, 16> NewBits(getNumBits());
429 Init *CachedBitVarRef = nullptr;
430 Init *CachedBitVarResolved = nullptr;
433 Init *CurBit = getBit(i);
434 Init *NewBit = CurBit;
478 Init *IntInit::convertInitializerTo(RecTy *Ty) const {
494 SmallVector<Init *, 16> NewBits(BRT->getNumBits());
504 Init *
506 SmallVector<Init *, 16> NewBits(Bits.size());
542 Init *StringInit::convertInitializerTo(RecTy *Ty) const {
551 Init *CodeInit::convertInitializerTo(RecTy *Ty) const {
561 ArrayRef<Init *> Range,
566 for (Init *I : Range)
570 ListInit *ListInit::get(ArrayRef<Init *> Range, RecTy *EltTy) {
583 void *Mem = Allocator.Allocate(totalSizeToAlloc<Init *>(Range.size()),
587 I->getTrailingObjects<Init *>());
598 Init *ListInit::convertInitializerTo(RecTy *Ty) const {
603 SmallVector<Init*, 8> Elements;
610 for (Init *I : getValues())
611 if (Init *CI = I->convertInitializerTo(ElementType)) {
626 Init *ListInit::convertInitListSlice(ArrayRef<unsigned> Elements) const {
627 SmallVector<Init*, 8> Vals;
645 Init *ListInit::resolveReferences(Resolver &R) const {
646 SmallVector<Init*, 8> Resolved;
650 for (Init *CurElt : getValues()) {
651 Init *E = CurElt->resolveReferences(R);
662 for (Init *Element : *this) {
672 for (Init *Element : *this) {
680 Init *OpInit::getBit(unsigned Bit) const {
687 ProfileUnOpInit(FoldingSetNodeID &ID, unsigned Opcode, Init *Op, RecTy *Type) {
693 UnOpInit *UnOpInit::get(UnaryOp Opc, Init *LHS, RecTy *Type) {
712 Init *UnOpInit::Fold(Record *CurRec, bool IsFinal) const {
760 if (Init *NewInit = LHS->convertInitializerTo(getType()))
795 Init *UnOpInit::resolveReferences(Resolver &R) const {
796 Init *lhs = LHS->resolveReferences(R);
817 ProfileBinOpInit(FoldingSetNodeID &ID, unsigned Opcode, Init *LHS, Init *RHS,
817 ProfileBinOpInit(FoldingSetNodeID &ID, unsigned Opcode, Init *LHS, Init *RHS,
825 BinOpInit *BinOpInit::get(BinaryOp Opc, Init *LHS,
826 Init *RHS, RecTy *Type) {
852 Init *BinOpInit::getStrConcat(Init *I0, Init *I1) {
852 Init *BinOpInit::getStrConcat(Init *I0, Init *I1) {
852 Init *BinOpInit::getStrConcat(Init *I0, Init *I1) {
862 SmallVector<Init *, 8> Args;
868 Init *BinOpInit::getListConcat(TypedInit *LHS, Init *RHS) {
868 Init *BinOpInit::getListConcat(TypedInit *LHS, Init *RHS) {
878 Init *BinOpInit::getListSplat(TypedInit *LHS, Init *RHS) {
878 Init *BinOpInit::getListSplat(TypedInit *LHS, Init *RHS) {
882 Init *BinOpInit::Fold(Record *CurRec) const {
897 SmallVector<Init*, 8> Args;
915 SmallVector<Init *, 8> Args;
926 SmallVector<Init *, 8> Args(Size->getValue(), Value);
1010 Init *BinOpInit::resolveReferences(Resolver &R) const {
1011 Init *lhs = LHS->resolveReferences(R);
1012 Init *rhs = RHS->resolveReferences(R);
1045 ProfileTernOpInit(FoldingSetNodeID &ID, unsigned Opcode, Init *LHS, Init *MHS,
1045 ProfileTernOpInit(FoldingSetNodeID &ID, unsigned Opcode, Init *LHS, Init *MHS,
1046 Init *RHS, RecTy *Type) {
1054 TernOpInit *TernOpInit::get(TernaryOp Opc, Init *LHS, Init *MHS, Init *RHS,
1054 TernOpInit *TernOpInit::get(TernaryOp Opc, Init *LHS, Init *MHS, Init *RHS,
1054 TernOpInit *TernOpInit::get(TernaryOp Opc, Init *LHS, Init *MHS, Init *RHS,
1074 static Init *ForeachApply(Init *LHS, Init *MHSe, Init *RHS, Record *CurRec) {
1074 static Init *ForeachApply(Init *LHS, Init *MHSe, Init *RHS, Record *CurRec) {
1074 static Init *ForeachApply(Init *LHS, Init *MHSe, Init *RHS, Record *CurRec) {
1074 static Init *ForeachApply(Init *LHS, Init *MHSe, Init *RHS, Record *CurRec) {
1080 static Init *ForeachDagApply(Init *LHS, DagInit *MHSd, Init *RHS,
1080 static Init *ForeachDagApply(Init *LHS, DagInit *MHSd, Init *RHS,
1080 static Init *ForeachDagApply(Init *LHS, DagInit *MHSd, Init *RHS,
1083 Init *Val = ForeachApply(LHS, MHSd->getOperator(), RHS, CurRec);
1087 SmallVector<std::pair<Init *, StringInit *>, 8> NewArgs;
1089 Init *Arg = MHSd->getArg(i);
1090 Init *NewArg;
1109 static Init *ForeachHelper(Init *LHS, Init *MHS, Init *RHS, RecTy *Type,
1109 static Init *ForeachHelper(Init *LHS, Init *MHS, Init *RHS, RecTy *Type,
1109 static Init *ForeachHelper(Init *LHS, Init *MHS, Init *RHS, RecTy *Type,
1109 static Init *ForeachHelper(Init *LHS, Init *MHS, Init *RHS, RecTy *Type,
1115 SmallVector<Init *, 8> NewList(MHSl->begin(), MHSl->end());
1117 for (Init *&Item : NewList) {
1118 Init *NewItem = ForeachApply(LHS, Item, RHS, CurRec);
1128 Init *TernOpInit::Fold(Record *CurRec) const {
1174 if (Init *Result = ForeachHelper(LHS, MHS, RHS, getType(), CurRec))
1199 SmallVector<std::pair<Init *, StringInit *>, 8> Children;
1202 Init *Node = MHSl ? MHSl->getElement(i) : UnsetInit::get();
1203 Init *Name = RHSl ? RHSl->getElement(i) : UnsetInit::get();
1217 Init *TernOpInit::resolveReferences(Resolver &R) const {
1218 Init *lhs = LHS->resolveReferences(R);
1230 Init *mhs = MHS->resolveReferences(R);
1231 Init *rhs;
1261 static void ProfileFoldOpInit(FoldingSetNodeID &ID, Init *A, Init *B,
1261 static void ProfileFoldOpInit(FoldingSetNodeID &ID, Init *A, Init *B,
1262 Init *Start, Init *List, Init *Expr,
1262 Init *Start, Init *List, Init *Expr,
1262 Init *Start, Init *List, Init *Expr,
1272 FoldOpInit *FoldOpInit::get(Init *Start, Init *List, Init *A, Init *B,
1272 FoldOpInit *FoldOpInit::get(Init *Start, Init *List, Init *A, Init *B,
1272 FoldOpInit *FoldOpInit::get(Init *Start, Init *List, Init *A, Init *B,
1272 FoldOpInit *FoldOpInit::get(Init *Start, Init *List, Init *A, Init *B,
1273 Init *Expr, RecTy *Type) {
1292 Init *FoldOpInit::Fold(Record *CurRec) const {
1294 Init *Accum = Start;
1295 for (Init *Elt : *LI) {
1306 Init *FoldOpInit::resolveReferences(Resolver &R) const {
1307 Init *NewStart = Start->resolveReferences(R);
1308 Init *NewList = List->resolveReferences(R);
1312 Init *NewExpr = Expr->resolveReferences(SR);
1321 Init *FoldOpInit::getBit(unsigned Bit) const {
1333 Init *Expr) {
1338 IsAOpInit *IsAOpInit::get(RecTy *CheckType, Init *Expr) {
1357 Init *IsAOpInit::Fold() const {
1377 Init *IsAOpInit::resolveReferences(Resolver &R) const {
1378 Init *NewExpr = Expr->resolveReferences(R);
1384 Init *IsAOpInit::getBit(unsigned Bit) const {
1404 Init *
1416 Init *TypedInit::convertInitializerBitRange(ArrayRef<unsigned> Bits) const {
1421 SmallVector<Init *, 16> NewBits;
1432 Init *TypedInit::getCastTo(RecTy *Ty) const {
1437 if (Init *Converted = convertInitializerTo(Ty)) {
1450 Init *TypedInit::convertInitListSlice(ArrayRef<unsigned> Elements) const {
1457 SmallVector<Init*, 8> ListInits;
1467 Init *Value = StringInit::get(VN);
1471 VarInit *VarInit::get(Init *VN, RecTy *T) {
1472 using Key = std::pair<RecTy *, Init *>;
1488 Init *VarInit::getBit(unsigned Bit) const {
1494 Init *VarInit::resolveReferences(Resolver &R) const {
1495 if (Init *Val = R.resolve(VarName))
1516 Init *VarBitInit::resolveReferences(Resolver &R) const {
1517 Init *I = TI->resolveReferences(R);
1540 Init *VarListElementInit::resolveReferences(Resolver &R) const {
1541 Init *NewTI = TI->resolveReferences(R);
1553 Init *VarListElementInit::getBit(unsigned Bit) const {
1566 Init *DefInit::convertInitializerTo(RecTy *Ty) const {
1585 ArrayRef<Init *> Args) {
1589 for (Init *I : Args)
1593 VarDefInit *VarDefInit::get(Record *Class, ArrayRef<Init *> Args) {
1603 void *Mem = Allocator.Allocate(totalSizeToAlloc<Init *>(Args.size()),
1607 I->getTrailingObjects<Init *>());
1629 ArrayRef<Init *> TArgs = Class->getTemplateArgs();
1662 Init *VarDefInit::resolveReferences(Resolver &R) const {
1665 SmallVector<Init *, 8> NewArgs;
1668 for (Init *Arg : args()) {
1669 Init *NewArg = Arg->resolveReferences(UR);
1683 Init *VarDefInit::Fold() const {
1688 for (Init *Arg : args())
1699 for (Init *Arg : args()) {
1707 FieldInit *FieldInit::get(Init *R, StringInit *FN) {
1708 using Key = std::pair<Init *, StringInit *>;
1718 Init *FieldInit::getBit(unsigned Bit) const {
1724 Init *FieldInit::resolveReferences(Resolver &R) const {
1725 Init *NewRec = Rec->resolveReferences(R);
1731 Init *FieldInit::Fold(Record *CurRec) const {
1739 Init *FieldVal = Def->getValue(FieldName)->getValue();
1747 ArrayRef<Init *> CondRange,
1748 ArrayRef<Init *> ValRange,
1753 ArrayRef<Init *>::iterator Case = CondRange.begin();
1754 ArrayRef<Init *>::iterator Val = ValRange.begin();
1764 makeArrayRef(getTrailingObjects<Init *>(), NumConds),
1765 makeArrayRef(getTrailingObjects<Init *>() + NumConds, NumConds),
1770 CondOpInit::get(ArrayRef<Init *> CondRange,
1771 ArrayRef<Init *> ValRange, RecTy *Ty) {
1783 void *Mem = Allocator.Allocate(totalSizeToAlloc<Init *>(2*CondRange.size()),
1788 I->getTrailingObjects<Init *>());
1790 I->getTrailingObjects<Init *>()+CondRange.size());
1795 Init *CondOpInit::resolveReferences(Resolver &R) const {
1796 SmallVector<Init*, 4> NewConds;
1798 for (const Init *Case : getConds()) {
1799 Init *NewCase = Case->resolveReferences(R);
1804 SmallVector<Init*, 4> NewVals;
1805 for (const Init *Val : getVals()) {
1806 Init *NewVal = Val->resolveReferences(R);
1818 Init *CondOpInit::Fold(Record *CurRec) const {
1820 Init *Cond = getCond(i);
1821 Init *Val = getVal(i);
1839 for (const Init *Case : getConds())
1843 for (const Init *Val : getVals())
1851 for (const Init *Case : getConds())
1855 for (const Init *Val : getVals())
1873 Init *CondOpInit::getBit(unsigned Bit) const {
1877 static void ProfileDagInit(FoldingSetNodeID &ID, Init *V, StringInit *VN,
1878 ArrayRef<Init *> ArgRange,
1883 ArrayRef<Init *>::iterator Arg = ArgRange.begin();
1894 DagInit::get(Init *V, StringInit *VN, ArrayRef<Init *> ArgRange,
1894 DagInit::get(Init *V, StringInit *VN, ArrayRef<Init *> ArgRange,
1905 void *Mem = Allocator.Allocate(totalSizeToAlloc<Init *, StringInit *>(ArgRange.size(), NameRange.size()), alignof(BitsInit));
1908 I->getTrailingObjects<Init *>());
1916 DagInit::get(Init *V, StringInit *VN,
1917 ArrayRef<std::pair<Init*, StringInit*>> args) {
1918 SmallVector<Init *, 8> Args;
1930 ProfileDagInit(ID, Val, ValName, makeArrayRef(getTrailingObjects<Init *>(), NumArgs), makeArrayRef(getTrailingObjects<StringInit *>(), NumArgNames));
1940 Init *DagInit::resolveReferences(Resolver &R) const {
1941 SmallVector<Init*, 8> NewArgs;
1944 for (const Init *Arg : getArgs()) {
1945 Init *NewArg = Arg->resolveReferences(R);
1950 Init *Op = Val->resolveReferences(R);
1960 for (const Init *Elt : getArgs()) {
1986 RecordVal::RecordVal(Init *N, RecTy *T, bool P)
1996 bool RecordVal::setValue(Init *V) {
2004 SmallVector<Init *, 64> Bits;
2054 void Record::setName(Init *NewName) {
2085 if (Init *V = Value.getValue()) {
2086 Init *VR = V->resolveReferences(R);
2102 Init *OldName = getNameInit();
2103 Init *NewName = Name->resolveReferences(R);
2128 ArrayRef<Init *> TArgs = R.getTemplateArgs();
2132 for (const Init *TA : TArgs) {
2161 Init *Record::getValueInit(StringRef FieldName) const {
2212 for (Init *I : List->getValues()) {
2240 for (Init *I : List->getValues()) {
2256 for (Init *I : List->getValues()) {
2353 Init *RecordKeeper::getNewAnonymousName() {
2371 Init *MapResolver::resolve(Init *VarName) {
2371 Init *MapResolver::resolve(Init *VarName) {
2376 Init *I = It->second.V;
2389 Init *RecordResolver::resolve(Init *VarName) {
2389 Init *RecordResolver::resolve(Init *VarName) {
2390 Init *Val = Cache.lookup(VarName);
2394 for (Init *S : Stack) {
2412 Init *TrackUnresolvedResolver::resolve(Init *VarName) {
2412 Init *TrackUnresolvedResolver::resolve(Init *VarName) {
2413 Init *I = nullptr;
2432 Init *HasReferenceResolver::resolve(Init *VarName)
2432 Init *HasReferenceResolver::resolve(Init *VarName)
lib/TableGen/SetTheory.cpp 282 void SetTheory::evaluate(Init *Expr, RecSet &Elts, ArrayRef<SMLoc> Loc) {
lib/TableGen/TGParser.cpp 39 SmallVector<Init*, 4> TemplateArgs;
49 SmallVector<Init*, 4> TemplateArgs;
64 for (Init *TA : TemplateArgs)
74 Init *Bit = BV->getBit(i);
99 if (Init *V = RV.getValue()) {
114 static Init *QualifyName(Record &CurRec, MultiClass *CurMultiClass,
115 Init *Name, StringRef Scoper) {
116 Init *NewName =
120 Init *Prefix = BinOpInit::getStrConcat(CurMultiClass->Rec.getNameInit(),
131 static Init *QualifiedNameOfImplicitName(Record &Rec,
136 static Init *QualifiedNameOfImplicitName(MultiClass *MC) {
159 bool TGParser::SetValue(Record *CurRec, SMLoc Loc, Init *ValName,
160 ArrayRef<unsigned> BitList, Init *V,
189 Init *BI = V->getCastTo(BitsRecTy::get(BitList.size()));
193 SmallVector<Init *, 16> NewBits(CurVal->getNumBits());
235 ArrayRef<Init *> TArgs = SC->getTemplateArgs();
264 Init *Name;
310 ArrayRef<Init *> SMCTArgs = SMC->Rec.getTemplateArgs();
322 Init *Default = SMC->Rec.getValue(SMCTArgs[i])->getValue();
377 Init *List = Loop.ListValue->resolveReferences(R);
494 Init *TGParser::ParseObjectName(MultiClass *CurMultiClass) {
511 Init *Name = ParseValue(CurRec, StringRecTy::get(), ParseNameMode);
516 Init *NameStr = QualifiedNameOfImplicitName(CurMultiClass);
671 Init *CurVal = FirstItem;
692 Init *I_End = ParseValue(nullptr);
847 Init *TGParser::ParseIDValue(Record *CurRec, StringInit *Name, SMLoc NameLoc,
855 Init *TemplateArgName;
882 if (Init *I = Records.getGlobal(Name->getValue()))
899 Init *TGParser::ParseOperation(Record *CurRec, RecTy *ItemType) {
951 Init *LHS = ParseValue(CurRec);
987 Init *Item = LHSl->getElement(0);
1029 Init *LHS = ParseValue(CurRec);
1142 SmallVector<Init*, 2> InitList;
1240 Init *RHS = InitList.pop_back_val();
1267 Init *LHS = StringInit::get(Lex.getCurStrVal());
1282 Init *MHS = ParseValue(CurRec);
1338 Init *RHS = ParseValue(ParseRec, OutEltType);
1393 Init *LHS = ParseValue(CurRec);
1403 Init *MHS = ParseValue(CurRec, ItemType);
1414 Init *RHS = ParseValue(CurRec, ItemType);
1518 Init *StartUntyped = ParseValue(CurRec);
1535 Init *ListUntyped = ParseValue(CurRec);
1563 Init *A = StringInit::get(Lex.getCurStrVal());
1581 Init *B = StringInit::get(Lex.getCurStrVal());
1606 Init *ExprUntyped = ParseValue(ParseRec);
1667 Init *TGParser::ParseOperationCond(Record *CurRec, RecTy *ItemType) {
1677 SmallVector<Init *, 4> Case;
1678 SmallVector<Init *, 4> Val;
1685 Init *V = ParseValue(CurRec);
1720 for (Init *V : Val) {
1773 Init *TGParser::ParseSimpleValue(Record *CurRec, RecTy *ItemType,
1775 Init *R = nullptr;
1786 SmallVector<Init*, 16> Bits(BinaryVal.second);
1835 SmallVector<Init *, 8> Args;
1846 ArrayRef<Init *> ExpectedArgs = Class->getTemplateArgs();
1882 SmallVector<Init*, 16> Vals;
1894 SmallVector<Init *, 16> NewBits;
1919 Init *Bit = Vals[i]->getCastTo(BitRecTy::get());
1932 SmallVector<Init*, 16> Vals;
1978 for (Init *V : Vals) {
2032 Init *Operator = ParseValue(CurRec);
2046 SmallVector<std::pair<llvm::Init*, StringInit*>, 8> DagArgs;
2104 Init *TGParser::ParseValue(Record *CurRec, RecTy *ItemType, IDParseMode Mode) {
2105 Init *Result = ParseSimpleValue(CurRec, ItemType, Mode);
2195 Init *RHSResult = ParseValue(CurRec, ItemType, ParseNameMode);
2231 Init *RHSResult = ParseValue(CurRec, nullptr, ParseNameMode);
2266 SmallVectorImpl<std::pair<llvm::Init*, StringInit*>> &Result,
2278 Init *Val = ParseValue(CurRec);
2309 void TGParser::ParseValueList(SmallVectorImpl<Init*> &Result, Record *CurRec,
2314 ArrayRef<Init *> TArgs = ArgsRec->getTemplateArgs();
2343 ArrayRef<Init *> TArgs = ArgsRec->getTemplateArgs();
2372 Init *TGParser::ParseDeclaration(Record *CurRec,
2393 Init *DeclName = StringInit::get(Str);
2414 Init *Val = ParseValue(CurRec, Type);
2434 VarInit *TGParser::ParseForeachDeclaration(Init *&ForeachListValue) {
2440 Init *DeclName = StringInit::get(Lex.getCurStrVal());
2467 Init *I = ParseValue(nullptr);
2500 std::vector<Init*> Values;
2526 Init *TemplArg = ParseDeclaration(CurRec, true/*templateargs*/);
2592 Init *Val = ParseValue(CurRec, Type);
2700 Init *Name = ParseObjectName(CurMultiClass);
2776 Init *ListValue = nullptr;
2885 Init *Val = ParseValue(nullptr);
3043 Init *DefmName = ParseObjectName(CurMultiClass);
3078 ArrayRef<Init*> TemplateVals = Ref.TemplateArgs;
3081 ArrayRef<Init *> TArgs = MC->Rec.getTemplateArgs();
3091 Init *Default = MC->Rec.getValue(TArgs[i])->getValue();
lib/TableGen/TGParser.h 37 Init *Value;
39 LetRecord(StringInit *N, ArrayRef<unsigned> B, Init *V, SMLoc L)
62 Init *ListValue;
67 ForeachLoop(SMLoc Loc, VarInit *IVar, Init *LValue)
74 SmallVector<Init *, 16> Elements;
138 bool SetValue(Record *TheRec, SMLoc Loc, Init *ValName,
139 ArrayRef<unsigned> BitList, Init *V,
146 using SubstStack = SmallVector<std::pair<Init *, Init *>, 8>;
146 using SubstStack = SmallVector<std::pair<Init *, Init *>, 8>;
173 Init *ParseDeclaration(Record *CurRec, bool ParsingTemplateArgs);
174 VarInit *ParseForeachDeclaration(Init *&ForeachListValue);
179 Init *ParseIDValue(Record *CurRec, StringInit *Name, SMLoc NameLoc,
181 Init *ParseSimpleValue(Record *CurRec, RecTy *ItemType = nullptr,
183 Init *ParseValue(Record *CurRec, RecTy *ItemType = nullptr,
185 void ParseValueList(SmallVectorImpl<llvm::Init*> &Result, Record *CurRec,
188 SmallVectorImpl<std::pair<llvm::Init*, StringInit*>> &Result,
196 Init *ParseOperation(Record *CurRec, RecTy *ItemType);
197 Init *ParseOperationCond(Record *CurRec, RecTy *ItemType);
199 Init *ParseObjectName(MultiClass *CurMultiClass);
tools/clang/utils/TableGen/MveEmitter.cpp 889 const Type *getType(Init *I, const Type *Param);
911 const Type *MveEmitter::getType(Init *I, const Type *Param) {
1051 Init *Arg = D->getArg(ArgNum);
1131 Init *TypeInit = ArgsDag->getArg(i);
tools/clang/utils/TableGen/NeonEmitter.cpp 504 std::pair<Type, std::string> emitDagArg(Init *Arg, std::string ArgName);
1498 for (auto *I : Body->getValues()) {
1893 Intrinsic::DagEmitter::emitDagArg(Init *Arg, std::string ArgName) {
usr/include/c++/7.4.0/type_traits 1983 { typedef _Up type; };
utils/TableGen/AsmMatcherEmitter.cpp 1311 Init *DiagnosticType = Def->getValueInit("DiagnosticType");
1315 Init *DiagnosticString = Def->getValueInit("DiagnosticString");
1362 for (Init *I : Supers->getValues()) {
1380 Init *PMName = Rec->getValueInit("PredicateMethod");
1389 Init *RMName = Rec->getValueInit("RenderMethod");
1398 Init *PRMName = Rec->getValueInit("ParserMethod");
1403 Init *DiagnosticType = Rec->getValueInit("DiagnosticType");
1406 Init *DiagnosticString = Rec->getValueInit("DiagnosticString");
1414 Init *IsOptional = Rec->getValueInit("IsOptional");
1419 Init *DMName = Rec->getValueInit("DefaultMethod");
utils/TableGen/AsmWriterEmitter.cpp 1120 Init *MCOpPred = MCOpPredicates[i]->getValueInit("MCOperandPredicate");
utils/TableGen/CodeGenDAGPatterns.cpp 971 for (Init *Val : AddressSpaces->getValues()) {
1770 for (Init *I : LI->getValues()) {
1930 Init *Val = Child->getLeafValue();
2659 for (Init *I : RawPat->getValues())
2698 TreePatternNodePtr TreePattern::ParseTreePattern(Init *TheInit,
2744 Init *II = BI->convertInitializerTo(IntRecTy::get());
3196 Init *SomeSDNode = DefInit::get(SDNodes.begin()->first);
3203 std::vector<std::pair<Init*, StringInit*> > Ops;
3562 for (Init *I : LI->getValues()) {
3862 for (Init *I : L->getValues()) {
utils/TableGen/CodeGenDAGPatterns.h 647 Init *Val;
674 TreePatternNode(Init *val, unsigned NumResults) // leaf ctor
723 Init *getLeafValue() const { assert(isLeaf()); return Val; }
978 TreePatternNodePtr ParseTreePattern(Init *DI, StringRef OpName);
utils/TableGen/CodeGenInstruction.cpp 60 Init *ArgInit;
531 Init *Arg = Result->getArg(AliasOpNo);
utils/TableGen/CodeGenMapTable.cpp 84 typedef std::map<std::vector<Init*>, std::vector<Record*> > RowInstrMapTy;
134 for (Init *I : ColValList->getValues()) {
242 std::vector<Init*> KeyValue;
244 for (Init *RowField : RowFields->getValues()) {
250 Init *CurInstrVal = RecVal->getValue();
314 std::vector<Init*> KeyValue;
317 for (Init *RowField : RowFields->getValues()) {
318 Init *KeyInstrVal = KeyInstr->getValue(RowField)->getValue();
336 Init *ColFieldJ = ColFields->getElement(j);
337 Init *CurInstrInit = CurInstr->getValue(ColFieldJ)->getValue();
339 Init *ColFieldJVallue = CurValueCol->getElement(j);
348 for (Init *Value : KeyValue) {
491 for (Init *CF : ColFields->getValues()) {
512 std::map<std::string, std::vector<Init*> > ColFieldValueMap;
541 std::vector<Init*> FieldValues = Entry.second;
545 Init *CurVal = FieldValues[i];
utils/TableGen/CodeGenRegisters.cpp 649 std::vector<Init*> Tuple;
utils/TableGen/CodeGenSchedule.cpp 89 for (Init *Arg : make_range(Expr->arg_begin(), Expr->arg_end())) {
utils/TableGen/CodeGenTarget.cpp 492 SmallVector<Init *, 16> NewBits(numBits);
496 Init *OrigBit = BI->getBit(bit);
497 Init *BitSwap = BI->getBit(bitSwapIdx);
utils/TableGen/FixedLenDecoderEmitter.cpp 1825 std::vector<std::pair<Init*, StringRef>> InOutOperands;
1945 Init *Arg = CGI.Operands[SO.first].MIOperandInfo->
utils/TableGen/GICombinerEmitter.cpp 96 static bool isSpecificDef(const Init &N, StringRef Def) {
107 static Record *getDefOfSubClass(const Init &N, StringRef Cls) {
utils/TableGen/GlobalISelEmitter.cpp 240 for (Init *Val : AddrSpaces->getValues()) {
374 static Record *getInitValueAsRegClass(Init *V) {
3475 Init *SrcInit = Src->getLeafValue();
3518 for (Init *Val : AddrSpaces->getValues()) {
3666 Init *SrcInit = Src->getLeafValue();
4353 for (const auto *DefaultOp : DefaultOps->getArgs()) {
utils/TableGen/InstrInfoEmitter.cpp 383 for (Init *Arg : make_range(MIOI->arg_begin(), MIOI->arg_end())) {
utils/TableGen/OptParserEmitter.cpp 261 for (Init *I : *LI)
265 for (Init *I : *GroupFlags)
utils/TableGen/RISCVCompressInstEmitter.cpp 279 static bool validateArgsTypes(Init *Arg1, Init *Arg2) {
279 static bool validateArgsTypes(Init *Arg1, Init *Arg2) {
751 Init *MCOpPred = MCOpPredicates[i]->getValueInit("MCOperandPredicate");
utils/TableGen/SearchableTableEmitter.cpp 36 int getAsInt(Init *B) {
90 DenseMap<Init *, std::unique_ptr<CodeGenIntrinsic>> Intrinsics;
101 typedef std::pair<Init *, int> SearchTableEntry;
109 std::string primaryRepresentation(const GenericField &Field, Init *I) {
128 bool isIntrinsic(Init *I) {
134 CodeGenIntrinsic &getIntrinsic(Init *I) {
143 bool isIntegral(Init *I) {
180 bool parseFieldType(GenericField &Field, Init *II);
211 Init *LHSI = LHS->getValueInit(Field.Name);
212 Init *RHSI = RHS->getValueInit(Field.Name);
527 bool SearchableTableEmitter::parseFieldType(GenericField &Field, Init *II) {