Home | History | Annotate | Download | only in TableGen

Lines Matching refs:Init

250 class Init {
301 explicit Init(InitKind K, uint8_t Opc = 0) : Kind(K), Opc(Opc) {}
304 Init(const Init &) = delete;
305 Init &operator=(const Init &) = delete;
306 virtual ~Init() = default;
328 /// Init based on the passed in type.
329 virtual Init *convertInitializerTo(RecTy *Ty) const = 0;
333 /// out, returning them as a new init of bits type. If it is not legal to use
335 virtual Init *convertInitializerBitRange(ArrayRef<unsigned> Bits) const {
341 /// elements, returning them as a new init of list type. If it is not legal
343 virtual Init *convertInitListSlice(ArrayRef<unsigned> Elements) const {
357 virtual Init *getFieldInit(Record &R, const RecordVal *RV,
366 virtual Init *resolveReferences(Record &R, const RecordVal *RV) const {
367 return const_cast<Init *>(this);
372 virtual Init *getBit(unsigned Bit) const = 0;
376 virtual Init *getBitVar() const { return const_cast<Init*>(this); }
383 inline raw_ostream &operator<<(raw_ostream &OS, const Init &I) {
389 class TypedInit : public Init {
394 : Init(K, Opc), Ty(T) {}
400 static bool classof(const Init *I) {
407 Init *convertInitializerTo(RecTy *Ty) const override;
409 Init *convertInitializerBitRange(ArrayRef<unsigned> Bits) const override;
410 Init *convertInitListSlice(ArrayRef<unsigned> Elements) const override;
421 virtual Init *resolveListElementReference(Record &R, const RecordVal *RV,
426 class UnsetInit : public Init {
427 UnsetInit() : Init(IK_UnsetInit) {}
433 static bool classof(const Init *I) {
439 Init *convertInitializerTo(RecTy *Ty) const override;
441 Init *getBit(unsigned Bit) const override {
450 class BitInit : public Init {
453 explicit BitInit(bool V) : Init(IK_BitInit), Value(V) {}
459 static bool classof(const Init *I) {
467 Init *convertInitializerTo(RecTy *Ty) const override;
469 Init *getBit(unsigned Bit) const override {
480 public TrailingObjects<BitsInit, Init *> {
493 static bool classof(const Init *I) {
497 static BitsInit *get(ArrayRef<Init *> Range);
503 Init *convertInitializerTo(RecTy *Ty) const override;
504 Init *convertInitializerBitRange(ArrayRef<unsigned> Bits) const override;
523 Init *resolveListElementReference(Record &R, const RecordVal *RV,
528 Init *resolveReferences(Record &R, const RecordVal *RV) const override;
530 Init *getBit(unsigned Bit) const override {
532 return getTrailingObjects<Init *>()[Bit];
547 static bool classof(const Init *I) {
555 Init *convertInitializerTo(RecTy *Ty) const override;
556 Init *convertInitializerBitRange(ArrayRef<unsigned> Bits) const override;
563 Init *resolveListElementReference(Record &R, const RecordVal *RV,
568 Init
584 static bool classof(const Init *I) {
592 Init *convertInitializerTo(RecTy *Ty) const override;
601 Init *resolveListElementReference(Record &R, const RecordVal *RV,
606 Init *getBit(unsigned Bit) const override {
622 static bool classof(const Init *I) {
630 Init *convertInitializerTo(RecTy *Ty) const override;
641 Init *resolveListElementReference(Record &R, const RecordVal *RV,
646 Init *getBit(unsigned Bit) const override {
654 public TrailingObjects<ListInit, Init *> {
658 using const_iterator = Init *const *;
671 static bool classof(const Init *I) {
674 static ListInit *get(ArrayRef<Init *> Range, RecTy *EltTy);
678 Init *getElement(unsigned i) const {
680 return getTrailingObjects<Init *>()[i];
685 Init *convertInitListSlice(ArrayRef<unsigned> Elements) const override;
687 Init *convertInitializerTo(RecTy *Ty) const override;
694 Init *resolveReferences(Record &R, const RecordVal *RV) const override;
698 ArrayRef<Init*> getValues() const {
699 return makeArrayRef(getTrailingObjects<Init *>(), NumValues);
702 const_iterator begin() const { return getTrailingObjects<Init *>(); }
711 Init *resolveListElementReference(Record &R, const RecordVal *RV,
714 Init *getBit(unsigned Bit) const override {
730 static bool classof(const Init *I) {
736 virtual OpInit *clone(ArrayRef<Init *> Operands) const = 0;
739 virtual Init *getOperand(unsigned i) const = 0;
741 // Fold - If possible, fold this to a simpler init. Return this if not
743 virtual Init *Fold(Record *CurRec, MultiClass *CurMultiClass) const = 0;
745 Init *resolveListElementReference(Record &R, const RecordVal *RV,
748 Init *getBit(unsigned Bit) const override;
751 /// !op (X) - Transform an init.
758 Init *LHS;
760 UnOpInit(UnaryOp opc, Init *lhs, RecTy *Type)
767 static bool classof(const Init *I) {
771 static UnOpInit *get(UnaryOp opc, Init *lhs, RecTy *Type);
776 OpInit *clone(ArrayRef<Init *> Operands) const override {
784 Init *getOperand(unsigned i) const override {
790 Init *getOperand() const { return LHS; }
792 // Fold - If possible, fold this to a simpler init. Return this if not
794 Init *Fold(Record *CurRec, MultiClass *CurMultiClass) const override;
796 Init *resolveReferences(Record &R, const RecordVal *RV) const override;
808 Init *LHS, *RHS;
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,
827 OpInit *clone(ArrayRef<Init *> Operands) const override {
834 Init *getOperand(unsigned i) const override {
843 Init *getLHS() const { return LHS; }
844 Init *getRHS() const { return RHS; }
846 // Fold - If possible, fold this to a simpler init. Return this if not
848 Init *Fold(Record *CurRec, MultiClass *CurMultiClass) const override;
850 Init *resolveReferences(Record &R, const RecordVal *RV) const override;
861 Init *LHS, *MHS, *RHS;
863 TernOpInit(TernaryOp opc, Init *lhs, Init *mhs, Init *rhs,
871 static bool classof(const Init *I) {
875 static TernOpInit *get(TernaryOp opc, Init *lhs,
876 Init *mhs, Init *rhs,
882 OpInit *clone(ArrayRef<Init *> Operands) const override {
890 Init *getOperand(unsigned i) const override {
900 Init *getLHS() const { return LHS; }
901 Init *getMHS() const { return MHS; }
902 Init *getRHS() const { return RHS; }
904 // Fold - If possible, fold this to a simpler init. Return this if not
906 Init *Fold(Record *CurRec, MultiClass *CurMultiClass) const override;
910 Init *resolveReferences(Record &R, const RecordVal *RV) const override;
917 Init *VarName;
919 explicit VarInit(Init *VN, RecTy *T)
926 static bool classof(const Init *I) {
931 static VarInit *get(Init *VN, RecTy *T);
934 Init *getNameInit() const { return VarName; }
940 Init *resolveListElementReference(Record &R, const RecordVal *RV,
944 Init *getFieldInit(Record &R, const RecordVal *RV,
952 Init *resolveReferences(Record &R, const RecordVal *RV) const override;
954 Init *getBit(unsigned Bit) const override;
960 class VarBitInit : public Init {
964 VarBitInit(TypedInit *T, unsigned B) : Init(IK_VarBitInit), TI(T), Bit(B) {
976 static bool classof(const Init *I) {
982 Init *convertInitializerTo(RecTy *Ty) const override;
984 Init *getBitVar() const override { return TI; }
988 Init *resolveReferences(Record &R, const RecordVal *RV) const override;
990 Init *getBit(unsigned B) const override {
1014 static bool classof(const Init *I) {
1026 Init *resolveListElementReference(Record &R, const RecordVal *RV,
1030 Init *resolveReferences(Record &R, const RecordVal *RV) const override;
1032 Init *getBit(unsigned Bit) const override;
1047 static bool classof(const Init *I) {
1053 Init *convertInitializerTo(RecTy *Ty) const override;
1057 //virtual Init *convertInitializerBitRange(ArrayRef<unsigned> Bits);
1060 Init *getFieldInit(Record &R, const RecordVal *RV,
1065 Init *getBit(unsigned Bit) const override {
1072 Init *resolveListElementReference(Record &R, const RecordVal *RV,
1080 Init *Rec; // Record we are referring to
1083 FieldInit(Init *R, StringInit *FN)
1092 static bool classof(const Init *I) {
1096 static FieldInit *get(Init *R, StringInit *FN);
1098 Init *getBit(unsigned Bit) const override;
1100 Init *resolveListElementReference(Record &R, const RecordVal *RV,
1103 Init *resolveReferences(Record &R, const RecordVal *RV) const override;
1114 public TrailingObjects<DagInit, Init *, StringInit *> {
1117 Init *Val;
1122 DagInit(Init *V, StringInit *VN, unsigned NumArgs, unsigned NumArgNames)
1126 size_t numTrailingObjects(OverloadToken<Init *>) const { return NumArgs; }
1132 static bool classof(const Init *I) {
1136 static DagInit *get(Init *V, StringInit *VN, ArrayRef<Init *> ArgRange,
1138 static DagInit *get(Init *V, StringInit *VN,
1139 ArrayRef<std::pair<Init*, StringInit*>> Args);
1143 Init *convertInitializerTo(RecTy *Ty) const override;
1145 Init *getOperator() const { return Val; }
1155 Init *getArg(unsigned Num) const {
1157 return getTrailingObjects<Init *>()[Num];
1166 StringInit *Init = getArgName(Num);
1167 return Init ? Init->getValue() : StringRef();
1170 ArrayRef<Init *> getArgs() const {
1171 return makeArrayRef(getTrailingObjects<Init *>(), NumArgs);
1178 Init *resolveReferences(Record &R, const RecordVal *RV) const override;
1182 using const_arg_iterator = SmallVectorImpl<Init*>::const_iterator;
1197 Init *getBit(unsigned Bit) const override {
1201 Init *resolveListElementReference(Record &R, const RecordVal *RV,
1214 Init *Name;
1216 Init *Value;
1219 RecordVal(Init *N, RecTy *T, bool P);
1222 Init *getNameInit() const { return Name; }
1230 Init *getValue() const { return Value; }
1232 bool setValue(Init *V) {
1253 Init *Name;
1257 SmallVector<Init *, 0> TemplateArgs;
1283 void init();
1288 explicit Record(Init *N, ArrayRef<SMLoc> locs, RecordKeeper &records,
1292 init();
1314 Init *getNameInit() const {
1322 void setName(Init *Name); // Also updates RecordKeeper.
1329 ArrayRef<Init *> getTemplateArgs() const {
1339 bool isTemplateArg(Init *Name) const {
1340 for (Init *TA : TemplateArgs)
1345 const RecordVal *getValue(const Init *Name) const {
1355 RecordVal *getValue(const Init *Name) {
1363 void addTemplateArg(Init *Name) {
1380 void removeValue(Init *Name) {
1451 Init *getValueInit(StringRef FieldName) const;
1676 /// Return an Init with a qualifier prefix referring
1678 Init *QualifyName(Record &CurRec, MultiClass *CurMultiClass,
1679 Init *Name, StringRef Scoper);