Lines Matching defs:Init

40 // Init subclasses.
41 class Init;
104 public: // These methods should only be called from subclasses of Init
105 virtual Init *convertValue( UnsetInit *UI) { return nullptr; }
106 virtual Init *convertValue( BitInit *BI) { return nullptr; }
107 virtual Init *convertValue( BitsInit *BI) { return nullptr; }
108 virtual Init *convertValue( IntInit *II) { return nullptr; }
109 virtual Init *convertValue(StringInit *SI) { return nullptr; }
110 virtual Init *convertValue( ListInit *LI) { return nullptr; }
111 virtual Init *convertValue( UnOpInit *UI) {
114 virtual Init *convertValue( BinOpInit *UI) {
117 virtual Init *convertValue( TernOpInit *UI) {
120 virtual Init *convertValue(VarBitInit *VB) { return nullptr; }
121 virtual Init *convertValue( DefInit *DI) { return nullptr; }
122 virtual Init *convertValue( DagInit *DI) { return nullptr; }
123 virtual Init *convertValue( TypedInit *TI) { return nullptr; }
124 virtual Init *convertValue( VarInit *VI) {
127 virtual Init *convertValue( FieldInit *FI) {
153 Init *convertValue( UnsetInit *UI) override { return (Init*)UI; }
154 Init *convertValue( BitInit *BI) override { return (Init*)BI; }
155 Init *convertValue( BitsInit *BI) override;
156 Init *convertValue( IntInit *II) override;
157 Init *convertValue(StringInit *SI) override { return nullptr; }
158 Init *convertValue( ListInit *LI) override { return nullptr; }
159 Init *convertValue(VarBitInit *VB) override { return (Init*)VB; }
160 Init *convertValue( DefInit *DI) override { return nullptr; }
161 Init *convertValue( DagInit *DI) override { return nullptr; }
162 Init *convertValue( UnOpInit *UI) override { return RecTy::convertValue(UI);}
163 Init *convertValue( BinOpInit *UI) override { return RecTy::convertValue(UI);}
164 Init *convertValue( TernOpInit *UI) override {return RecTy::convertValue(UI);}
165 Init *convertValue( TypedInit *TI) override;
166 Init *convertValue( VarInit *VI) override { return RecTy::convertValue(VI);}
167 Init *convertValue( FieldInit *FI) override { return RecTy::convertValue(FI);}
192 Init *convertValue( UnsetInit *UI) override;
193 Init *convertValue( BitInit *UI) override;
194 Init *convertValue( BitsInit *BI) override;
195 Init *convertValue( IntInit *II) override;
196 Init *convertValue(StringInit *SI) override { return nullptr; }
197 Init *convertValue( ListInit *LI) override { return nullptr; }
198 Init *convertValue(VarBitInit *VB) override { return nullptr; }
199 Init *convertValue( DefInit *DI) override { return nullptr; }
200 Init *convertValue( DagInit *DI) override { return nullptr; }
201 Init *convertValue( UnOpInit *UI) override { return RecTy::convertValue(UI);}
202 Init *convertValue( BinOpInit *UI) override { return RecTy::convertValue(UI);}
203 Init *convertValue(TernOpInit *UI) override { return RecTy::convertValue(UI);}
204 Init *convertValue( TypedInit *TI) override;
205 Init *convertValue( VarInit *VI) override { return RecTy::convertValue(VI);}
206 Init *convertValue( FieldInit *FI) override { return RecTy::convertValue(FI);}
229 Init *convertValue( UnsetInit *UI) override { return (Init*)UI; }
230 Init *convertValue( BitInit *BI) override;
231 Init *convertValue( BitsInit *BI) override;
232 Init *convertValue( IntInit *II) override { return (Init*)II; }
233 Init *convertValue(StringInit *SI) override { return nullptr; }
234 Init *convertValue( ListInit *LI) override { return nullptr; }
235 Init *convertValue(VarBitInit *VB) override { return nullptr; }
236 Init *convertValue( DefInit *DI) override { return nullptr; }
237 Init *convertValue( DagInit *DI) override { return nullptr; }
238 Init *convertValue( UnOpInit *UI) override { return RecTy::convertValue(UI);}
239 Init *convertValue( BinOpInit *UI) override { return RecTy::convertValue(UI);}
240 Init *convertValue( TernOpInit *UI) override {return RecTy::convertValue(UI);}
241 Init *convertValue( TypedInit *TI) override;
242 Init *convertValue( VarInit *VI) override { return RecTy::convertValue(VI);}
243 Init *convertValue( FieldInit *FI) override { return RecTy::convertValue(FI);}
267 Init *convertValue( UnsetInit *UI) override { return (Init*)UI; }
268 Init *convertValue( BitInit *BI) override { return nullptr; }
269 Init *convertValue( BitsInit *BI) override { return nullptr; }
270 Init *convertValue( IntInit *II) override { return nullptr; }
271 Init *convertValue(StringInit *SI) override { return (Init*)SI; }
272 Init *convertValue( ListInit *LI) override { return nullptr; }
273 Init *convertValue( UnOpInit *BO) override;
274 Init *convertValue( BinOpInit *BO) override;
275 Init *convertValue( TernOpInit *BO) override {return RecTy::convertValue(BO);}
277 Init *convertValue(VarBitInit *VB) override { return nullptr; }
278 Init *convertValue( DefInit *DI) override { return nullptr; }
279 Init *convertValue( DagInit *DI) override { return nullptr; }
280 Init *convertValue( TypedInit *TI) override;
281 Init *convertValue( VarInit *VI) override { return RecTy::convertValue(VI);}
282 Init *convertValue( FieldInit *FI) override { return RecTy::convertValue(FI);}
307 Init *convertValue( UnsetInit *UI) override { return (Init*)UI; }
308 Init *convertValue( BitInit *BI) override { return nullptr; }
309 Init *convertValue( BitsInit *BI) override { return nullptr; }
310 Init *convertValue( IntInit *II) override { return nullptr; }
311 Init *convertValue(StringInit *SI) override { return nullptr; }
312 Init *convertValue( ListInit *LI) override;
313 Init *convertValue(VarBitInit *VB) override { return nullptr; }
314 Init *convertValue( DefInit *DI) override { return nullptr; }
315 Init *convertValue( DagInit *DI) override { return nullptr; }
316 Init *convertValue( UnOpInit *UI) override { return RecTy::convertValue(UI);}
317 Init *convertValue( BinOpInit *UI) override { return RecTy::convertValue(UI);}
318 Init *convertValue(TernOpInit *UI) override { return RecTy::convertValue(UI);}
319 Init *convertValue( TypedInit *TI) override;
320 Init *convertValue( VarInit *VI) override { return RecTy::convertValue(VI);}
321 Init *convertValue( FieldInit *FI) override { return RecTy::convertValue(FI);}
345 Init *convertValue( UnsetInit *UI) override { return (Init*)UI; }
346 Init *convertValue( BitInit *BI) override { return nullptr; }
347 Init *convertValue( BitsInit *BI) override { return nullptr; }
348 Init *convertValue( IntInit *II) override { return nullptr; }
349 Init *convertValue(StringInit *SI) override { return nullptr; }
350 Init *convertValue( ListInit *LI) override { return nullptr; }
351 Init *convertValue(VarBitInit *VB) override { return nullptr; }
352 Init *convertValue( DefInit *DI) override { return nullptr; }
353 Init *convertValue( UnOpInit *BO) override;
354 Init *convertValue( BinOpInit *BO) override;
355 Init *convertValue( TernOpInit *BO) override {return RecTy::convertValue(BO);}
356 Init *convertValue( DagInit *CI) override { return (Init*)CI; }
357 Init *convertValue( TypedInit *TI) override;
358 Init *convertValue( VarInit *VI) override { return RecTy::convertValue(VI);}
359 Init *convertValue( FieldInit *FI) override { return RecTy::convertValue(FI);}
385 Init *convertValue( UnsetInit *UI) override { return (Init*)UI; }
386 Init *convertValue( BitInit *BI) override { return nullptr; }
387 Init *convertValue( BitsInit *BI) override { return nullptr; }
388 Init *convertValue( IntInit *II) override { return nullptr; }
389 Init *convertValue(StringInit *SI) override { return nullptr; }
390 Init *convertValue( ListInit *LI) override { return nullptr; }
391 Init *convertValue(VarBitInit *VB) override { return nullptr; }
392 Init *convertValue( UnOpInit *UI) override { return RecTy::convertValue(UI);}
393 Init *convertValue( BinOpInit *UI) override { return RecTy::convertValue(UI);}
394 Init *convertValue( TernOpInit *UI) override {return RecTy::convertValue(UI);}
395 Init *convertValue( DefInit *DI) override;
396 Init *convertValue( DagInit *DI) override { return nullptr; }
397 Init *convertValue( TypedInit *VI) override;
398 Init *convertValue( VarInit *VI) override { return RecTy::convertValue(VI);}
399 Init *convertValue( FieldInit *FI) override { return RecTy::convertValue(FI);}
418 class Init {
457 Init(const Init &) LLVM_DELETED_FUNCTION;
458 Init &operator=(const Init &) LLVM_DELETED_FUNCTION;
465 explicit Init(InitKind K) : Kind(K) {}
468 virtual ~Init() {}
493 virtual Init *convertInitializerTo(RecTy *Ty) const = 0;
500 virtual Init *
510 virtual Init *
527 virtual Init *getFieldInit(Record &R, const RecordVal *RV,
537 virtual Init *resolveReferences(Record &R, const RecordVal *RV) const {
538 return const_cast<Init *>(this);
543 virtual Init *getBit(unsigned Bit) const = 0;
547 virtual Init *getBitVar() const { return const_cast<Init*>(this); }
554 inline raw_ostream &operator<<(raw_ostream &OS, const Init &I) {
561 class TypedInit : public Init {
568 explicit TypedInit(InitKind K, RecTy *T) : Init(K), Ty(T) {}
571 static bool classof(const Init *I) {
577 Init *
579 Init *
591 virtual Init *resolveListElementReference(Record &R, const RecordVal *RV,
597 class UnsetInit : public Init {
598 UnsetInit() : Init(IK_UnsetInit) {}
604 static bool classof(const Init *I) {
609 Init *convertInitializerTo(RecTy *Ty) const override {
613 Init *getBit(unsigned Bit) const override {
623 class BitInit : public Init {
626 explicit BitInit(bool V) : Init(IK_BitInit), Value(V) {}
632 static bool classof(const Init *I) {
639 Init *convertInitializerTo(RecTy *Ty) const override {
643 Init *getBit(unsigned Bit) const override {
654 class BitsInit : public Init, public FoldingSetNode {
655 std::vector<Init*> Bits;
657 BitsInit(ArrayRef<Init *> Range)
658 : Init(IK_BitsInit), Bits(Range.begin(), Range.end()) {}
664 static bool classof(const Init *I) {
667 static BitsInit *get(ArrayRef<Init *> Range);
673 Init *convertInitializerTo(RecTy *Ty) const override {
676 Init *
691 Init *resolveReferences(Record &R, const RecordVal *RV) const override;
693 Init *getBit(unsigned Bit) const override {
711 static bool classof(const Init *I) {
718 Init *convertInitializerTo(RecTy *Ty) const override {
721 Init *
729 Init *resolveListElementReference(Record &R, const RecordVal *RV,
734 Init *getBit(unsigned Bit) const override {
752 static bool classof(const Init *I) {
759 Init *convertInitializerTo(RecTy *Ty) const override {
769 Init *resolveListElementReference(Record &R, const RecordVal *RV,
774 Init *getBit(unsigned Bit) const override {
782 std::vector<Init*> Values;
785 typedef std::vector<Init*>::const_iterator const_iterator;
788 explicit ListInit(ArrayRef<Init *> Range, RecTy *EltTy)
796 static bool classof(const Init *I) {
799 static ListInit *get(ArrayRef<Init *> Range, RecTy *EltTy);
804 Init *getElement(unsigned i) const {
811 Init *
814 Init *convertInitializerTo(RecTy *Ty) const override {
823 Init *resolveReferences(Record &R, const RecordVal *RV) const override;
827 ArrayRef<Init*> getValues() const { return Values; }
838 Init *resolveListElementReference(Record &R, const RecordVal *RV,
841 Init *getBit(unsigned Bit) const override {
856 static bool classof(const Init *I) {
861 virtual OpInit *clone(std::vector<Init *> &Operands) const = 0;
864 virtual Init *getOperand(int i) const = 0;
868 virtual Init *Fold(Record *CurRec, MultiClass *CurMultiClass) const = 0;
870 Init *convertInitializerTo(RecTy *Ty) const override {
874 Init *resolveListElementReference(Record &R, const RecordVal *RV,
877 Init *getBit(unsigned Bit) const override;
888 Init *LHS;
890 UnOpInit(UnaryOp opc, Init *lhs, RecTy *Type)
897 static bool classof(const Init *I) {
900 static UnOpInit *get(UnaryOp opc, Init *lhs, RecTy *Type);
903 OpInit *clone(std::vector<Init *> &Operands) const override {
910 Init *getOperand(int i) const override {
916 Init *getOperand() const { return LHS; }
920 Init *Fold(Record *CurRec, MultiClass *CurMultiClass) const override;
922 Init *resolveReferences(Record &R, const RecordVal *RV) const override;
935 Init *LHS, *RHS;
937 BinOpInit(BinaryOp opc, Init *lhs, Init *rhs, RecTy *Type) :
944 static bool classof(const Init *I) {
947 static BinOpInit *get(BinaryOp opc, Init *lhs, Init *rhs,
951 OpInit *clone(std::vector<Init *> &Operands) const override {
958 Init *getOperand(int i) const override {
968 Init *getLHS() const { return LHS; }
969 Init *getRHS() const { return RHS; }
973 Init *Fold(Record *CurRec, MultiClass *CurMultiClass) const override;
975 Init *resolveReferences(Record &R, const RecordVal *RV) const override;
988 Init *LHS, *MHS, *RHS;
990 TernOpInit(TernaryOp opc, Init *lhs, Init *mhs, Init *rhs,
998 static bool classof(const Init *I) {
1001 static TernOpInit *get(TernaryOp opc, Init *lhs,
1002 Init *mhs, Init *rhs,
1006 OpInit *clone(std::vector<Init *> &Operands) const override {
1014 Init *getOperand(int i) const override {
1027 Init *getLHS() const { return LHS; }
1028 Init *getMHS() const { return MHS; }
1029 Init *getRHS() const { return RHS; }
1033 Init *Fold(Record *CurRec, MultiClass *CurMultiClass) const override;
1037 Init *resolveReferences(Record &R, const RecordVal *RV) const override;
1045 Init *VarName;
1049 explicit VarInit(Init *VN, RecTy *T)
1056 static bool classof(const Init *I) {
1060 static VarInit *get(Init *VN, RecTy *T);
1062 Init *convertInitializerTo(RecTy *Ty) const override {
1067 Init *getNameInit() const { return VarName; }
1072 Init *resolveListElementReference(Record &R, const RecordVal *RV,
1076 Init *getFieldInit(Record &R, const RecordVal *RV,
1084 Init *resolveReferences(Record &R, const RecordVal *RV) const override;
1086 Init *getBit(unsigned Bit) const override;
1093 class VarBitInit : public Init {
1097 VarBitInit(TypedInit *T, unsigned B) : Init(IK_VarBitInit), TI(T), Bit(B) {
1109 static bool classof(const Init *I) {
1114 Init *convertInitializerTo(RecTy *Ty) const override {
1118 Init *getBitVar() const override { return TI; }
1122 Init *resolveReferences(Record &R, const RecordVal *RV) const override;
1124 Init *getBit(unsigned B) const override {
1148 static bool classof(const Init *I) {
1153 Init *convertInitializerTo(RecTy *Ty) const override {
1163 Init *resolveListElementReference(Record &R, const RecordVal *RV,
1167 Init *resolveReferences(Record &R, const RecordVal *RV) const override;
1169 Init *getBit(unsigned Bit) const override;
1184 static bool classof(const Init *I) {
1189 Init *convertInitializerTo(RecTy *Ty) const override {
1195 //virtual Init *convertInitializerBitRange(const std::vector<unsigned> &Bits);
1198 Init *getFieldInit(Record &R, const RecordVal *RV,
1203 Init *getBit(unsigned Bit) const override {
1210 Init *resolveListElementReference(Record &R, const RecordVal *RV,
1219 Init *Rec; // Record we are referring to
1222 FieldInit(Init *R, const std::string &FN)
1231 static bool classof(const Init *I) {
1234 static FieldInit *get(Init *R, const std::string &FN);
1235 static FieldInit *get(Init *R, const Init *FN);
1237 Init *convertInitializerTo(RecTy *Ty) const override {
1241 Init *getBit(unsigned Bit) const override;
1243 Init *resolveListElementReference(Record &R, const RecordVal *RV,
1246 Init *resolveReferences(Record &R, const RecordVal *RV) const override;
1258 Init *Val;
1260 std::vector<Init*> Args;
1263 DagInit(Init *V, const std::string &VN,
1264 ArrayRef<Init *> ArgRange,
1274 static bool classof(const Init *I) {
1277 static DagInit *get(Init *V, const std::string &VN,
1278 ArrayRef<Init *> ArgRange,
1280 static DagInit *get(Init *V, const std::string &VN,
1282 std::pair<Init*, std::string> > &args);
1286 Init *convertInitializerTo(RecTy *Ty) const override {
1290 Init *getOperator() const { return Val; }
1295 Init *getArg(unsigned Num) const {
1304 Init *resolveReferences(Record &R, const RecordVal *RV) const override;
1308 typedef std::vector<Init*>::const_iterator const_arg_iterator;
1323 Init *getBit(unsigned Bit) const override {
1327 Init *resolveListElementReference(Record &R, const RecordVal *RV,
1338 Init *Name;
1341 Init *Value;
1344 RecordVal(Init *N, RecTy *T, unsigned P);
1348 const Init *getNameInit() const { return Name; }
1355 Init *getValue() const { return Value; }
1357 bool setValue(Init *V) {
1380 Init *Name;
1384 std::vector<Init *> TemplateArgs;
1406 explicit Record(Init *N, ArrayRef<SMLoc> locs, RecordKeeper &records,
1428 Init *getNameInit() const {
1435 void setName(Init *Name); // Also updates RecordKeeper.
1443 const std::vector<Init *> &getTemplateArgs() const {
1450 bool isTemplateArg(Init *Name) const {
1459 const RecordVal *getValue(const Init *Name) const {
1467 RecordVal *getValue(const Init *Name) {
1476 void addTemplateArg(Init *Name) {
1496 void removeValue(Init *Name) {
1556 Init *getValueInit(StringRef FieldName) const;
1812 /// QualifyName - Return an Init with a qualifier prefix referring
1814 Init *QualifyName(Record &CurRec, MultiClass *CurMultiClass,
1815 Init *Name, const std::string &Scoper);
1817 /// QualifyName - Return an Init with a qualifier prefix referring
1819 Init *QualifyName(Record &CurRec, MultiClass *CurMultiClass,