Lines Matching refs:Field

40 int getInt(Record *R, StringRef Field) {  in getInt()  argument
41 return getAsInt(R->getValueInit(Field)); in getInt()
81 for (const auto &Field : Fields) { in getFieldByName() local
82 if (Name == Field.Name) in getFieldByName()
83 return &Field; in getFieldByName()
110 std::string primaryRepresentation(const GenericField &Field, Init *I) { in primaryRepresentation() argument
119 else if (Field.IsIntrinsic) in primaryRepresentation()
121 else if (Field.IsInstruction) in primaryRepresentation()
123 else if (Field.Enum) in primaryRepresentation()
124 return Field.Enum->EntryMap[cast<DefInit>(I)->getDef()]->first; in primaryRepresentation()
125 PrintFatalError(Twine("invalid field type for field '") + Field.Name + in primaryRepresentation()
148 std::string searchableFieldType(const GenericField &Field, TypeContext Ctx) { in searchableFieldType() argument
149 if (isa<StringRecTy>(Field.RecType)) { in searchableFieldType()
155 } else if (BitsRecTy *BI = dyn_cast<BitsRecTy>(Field.RecType)) { in searchableFieldType()
165 PrintFatalError(Twine("bitfield '") + Field.Name + in searchableFieldType()
167 } else if (Field.Enum || Field.IsIntrinsic || Field.IsInstruction) in searchableFieldType()
169 PrintFatalError(Twine("Field '") + Field.Name + "' has unknown type '" + in searchableFieldType()
170 Field.RecType->getAsString() + "' to search by"); in searchableFieldType()
181 bool parseFieldType(GenericField &Field, Init *II);
211 for (const auto &Field : Index.Fields) { in compareBy() local
212 Init *LHSI = LHS->getValueInit(Field.Name); in compareBy()
213 Init *RHSI = RHS->getValueInit(Field.Name); in compareBy()
215 if (isa<BitsRecTy>(Field.RecType) || isa<IntRecTy>(Field.RecType)) { in compareBy()
222 } else if (Field.IsIntrinsic) { in compareBy()
231 } else if (Field.IsInstruction) { in compareBy()
248 } else if (Field.Enum) { in compareBy()
251 int64_t LHSv = Field.Enum->EntryMap[LHSr]->second; in compareBy()
252 int64_t RHSv = Field.Enum->EntryMap[RHSr]->second; in compareBy()
258 std::string LHSs = primaryRepresentation(Field, LHSI); in compareBy()
259 std::string RHSs = primaryRepresentation(Field, RHSI); in compareBy()
261 if (isa<StringRecTy>(Field.RecType)) { in compareBy()
313 for (const auto &Field : Index.Fields) { in emitLookupFunction() local
314 OS << " " << searchableFieldType(Field, TypeInStaticStruct) << " " in emitLookupFunction()
315 << Field.Name << ";\n"; in emitLookupFunction()
339 for (const auto &Field : Index.Fields) { in emitLookupFunction() local
345 primaryRepresentation(Field, Entry.first->getValueInit(Field.Name)); in emitLookupFunction()
346 if (isa<StringRecTy>(Field.RecType)) in emitLookupFunction()
387 const GenericField &Field = Index.Fields[0]; in emitLookupFunction() local
389 primaryRepresentation(Field, IndexRows[0]->getValueInit(Field.Name)); in emitLookupFunction()
391 Field, IndexRows.back()->getValueInit(Field.Name)); in emitLookupFunction()
392 OS << " if ((" << Field.Name << " < " << FirstRepr << ") ||\n"; in emitLookupFunction()
393 OS << " (" << Field.Name << " > " << LastRepr << "))\n"; in emitLookupFunction()
398 for (const auto &Field : Index.Fields) { in emitLookupFunction() local
399 OS << " " << searchableFieldType(Field, TypeInTempStruct) << " " in emitLookupFunction()
400 << Field.Name << ";\n"; in emitLookupFunction()
405 for (const auto &Field : Index.Fields) { in emitLookupFunction() local
410 OS << Field.Name; in emitLookupFunction()
411 if (isa<StringRecTy>(Field.RecType)) { in emitLookupFunction()
416 Field.Name + "' in table '" + Table.Name + "'"); in emitLookupFunction()
425 for (const auto &Field : Index.Fields) { in emitLookupFunction() local
426 if (isa<StringRecTy>(Field.RecType)) { in emitLookupFunction()
427 OS << " int Cmp" << Field.Name << " = StringRef(LHS." << Field.Name in emitLookupFunction()
428 << ").compare(RHS." << Field.Name << ");\n"; in emitLookupFunction()
429 OS << " if (Cmp" << Field.Name << " < 0) return true;\n"; in emitLookupFunction()
430 OS << " if (Cmp" << Field.Name << " > 0) return false;\n"; in emitLookupFunction()
431 } else if (Field.Enum) { in emitLookupFunction()
434 OS << " if ((unsigned)LHS." << Field.Name << " < (unsigned)RHS." in emitLookupFunction()
435 << Field.Name << ")\n"; in emitLookupFunction()
437 OS << " if ((unsigned)LHS." << Field.Name << " > (unsigned)RHS." in emitLookupFunction()
438 << Field.Name << ")\n"; in emitLookupFunction()
441 OS << " if (LHS." << Field.Name << " < RHS." << Field.Name << ")\n"; in emitLookupFunction()
443 OS << " if (LHS." << Field.Name << " > RHS." << Field.Name << ")\n"; in emitLookupFunction()
453 for (const auto &Field : Index.Fields) in emitLookupFunction() local
454 OS << " ||\n Key." << Field.Name << " != Idx->" << Field.Name; in emitLookupFunction()
471 for (const auto &Field : Index.Fields) { in emitLookupDeclaration() local
476 OS << searchableFieldType(Field, TypeInArgument) << " " << Field.Name; in emitLookupDeclaration()
506 for (const auto &Field : Table.Fields) { in emitGenericTable() local
511 OS << primaryRepresentation(Field, Entry->getValueInit(Field.Name)); in emitGenericTable()
528 bool SearchableTableEmitter::parseFieldType(GenericField &Field, Init *II) { in parseFieldType() argument
532 Field.Enum = EnumMap[TypeRec]; in parseFieldType()
533 Field.RecType = RecordRecTy::get(Field.Enum->Class); in parseFieldType()
550 const GenericField *Field = Table.getFieldByName(FieldName); in parseSearchIndex() local
551 if (!Field) in parseSearchIndex()
555 Index->Fields.push_back(*Field); in parseSearchIndex()
600 for (auto &Field : Table.Fields) { in collectTableEntries() local
601 auto TI = dyn_cast<TypedInit>(EntryRec->getValueInit(Field.Name)); in collectTableEntries()
605 Field.Name + "'"); in collectTableEntries()
607 if (!Field.RecType) { in collectTableEntries()
608 Field.RecType = TI->getType(); in collectTableEntries()
610 RecTy *Ty = resolveTypes(Field.RecType, TI->getType()); in collectTableEntries()
612 PrintFatalError(Twine("Field '") + Field.Name + "' of table '" + in collectTableEntries()
616 Field.RecType = Ty; in collectTableEntries()
625 for (auto &Field : Table.Fields) { in collectTableEntries() local
626 if (auto RecordTy = dyn_cast<RecordRecTy>(Field.RecType)) { in collectTableEntries()
628 Field.IsIntrinsic = true; in collectTableEntries()
630 Field.IsInstruction = true; in collectTableEntries()
748 for (const RecordVal &Field : Class->getValues()) { in run() local
749 std::string FieldName = Field.getName(); in run()
763 for (const auto &Field : in run() local
766 (Twine("lookup") + Table->CppTypeName + "By" + Field).str(); in run()
767 Table->Indices.push_back(parseSearchIndex(*Table, Name, {Field}, false)); in run()