Lines Matching refs:Field
38 int getInt(Record *R, StringRef Field) { in getInt() argument
39 return getAsInt(R->getValueInit(Field)); in getInt()
82 for (const auto &Field : Fields) { in getFieldByName() local
83 if (Name == Field.Name) in getFieldByName()
84 return &Field; in getFieldByName()
111 std::string primaryRepresentation(SMLoc Loc, const GenericField &Field, in primaryRepresentation() argument
114 if (Field.IsCode || SI->hasCodeFormat()) in primaryRepresentation()
122 else if (Field.IsIntrinsic) in primaryRepresentation()
124 else if (Field.IsInstruction) in primaryRepresentation()
126 else if (Field.Enum) { in primaryRepresentation()
127 auto *Entry = Field.Enum->EntryMap[cast<DefInit>(I)->getDef()]; in primaryRepresentation()
130 Twine("Entry for field '") + Field.Name + "' is null"); in primaryRepresentation()
133 PrintFatalError(Loc, Twine("invalid field type for field '") + Field.Name + in primaryRepresentation()
155 const GenericField &Field, TypeContext Ctx) { in searchableFieldType() argument
156 if (isa<StringRecTy>(Field.RecType)) { in searchableFieldType()
162 } else if (BitsRecTy *BI = dyn_cast<BitsRecTy>(Field.RecType)) { in searchableFieldType()
174 "', key field '" + Field.Name + in searchableFieldType()
176 } else if (Field.Enum || Field.IsIntrinsic || Field.IsInstruction) in searchableFieldType()
180 Index.Name + "', key field '" + Field.Name + in searchableFieldType()
181 "' has invalid type: " + Field.RecType->getAsString()); in searchableFieldType()
192 bool parseFieldType(GenericField &Field, Init *II);
222 for (const auto &Field : Index.Fields) { in compareBy() local
223 Init *LHSI = LHS->getValueInit(Field.Name); in compareBy()
224 Init *RHSI = RHS->getValueInit(Field.Name); in compareBy()
226 if (isa<BitsRecTy>(Field.RecType) || isa<IntRecTy>(Field.RecType)) { in compareBy()
233 } else if (Field.IsIntrinsic) { in compareBy()
242 } else if (Field.IsInstruction) { in compareBy()
259 } else if (Field.Enum) { in compareBy()
262 int64_t LHSv = Field.Enum->EntryMap[LHSr]->second; in compareBy()
263 int64_t RHSv = Field.Enum->EntryMap[RHSr]->second; in compareBy()
269 std::string LHSs = primaryRepresentation(Index.Loc, Field, LHSI); in compareBy()
270 std::string RHSs = primaryRepresentation(Index.Loc, Field, RHSI); in compareBy()
272 if (isa<StringRecTy>(Field.RecType)) { in compareBy()
324 for (const auto &Field : Index.Fields) { in emitLookupFunction() local
326 << searchableFieldType(Table, Index, Field, TypeInStaticStruct) << " " in emitLookupFunction()
327 << Field.Name << ";\n"; in emitLookupFunction()
350 for (const auto &Field : Index.Fields) { in emitLookupFunction() local
352 Index.Loc, Field, Entry.first->getValueInit(Field.Name)); in emitLookupFunction()
353 if (isa<StringRecTy>(Field.RecType)) in emitLookupFunction()
394 const GenericField &Field = Index.Fields[0]; in emitLookupFunction() local
396 Index.Loc, Field, IndexRows[0]->getValueInit(Field.Name)); in emitLookupFunction()
398 Index.Loc, Field, IndexRows.back()->getValueInit(Field.Name)); in emitLookupFunction()
399 OS << " if ((" << Field.Name << " < " << FirstRepr << ") ||\n"; in emitLookupFunction()
400 OS << " (" << Field.Name << " > " << LastRepr << "))\n"; in emitLookupFunction()
405 for (const auto &Field : Index.Fields) { in emitLookupFunction() local
406 OS << " " << searchableFieldType(Table, Index, Field, TypeInTempStruct) in emitLookupFunction()
407 << " " << Field.Name << ";\n"; in emitLookupFunction()
412 for (const auto &Field : Index.Fields) { in emitLookupFunction() local
413 OS << LS << Field.Name; in emitLookupFunction()
414 if (isa<StringRecTy>(Field.RecType)) { in emitLookupFunction()
421 Field.Name + "'"); in emitLookupFunction()
430 for (const auto &Field : Index.Fields) { in emitLookupFunction() local
431 if (isa<StringRecTy>(Field.RecType)) { in emitLookupFunction()
432 OS << " int Cmp" << Field.Name << " = StringRef(LHS." << Field.Name in emitLookupFunction()
433 << ").compare(RHS." << Field.Name << ");\n"; in emitLookupFunction()
434 OS << " if (Cmp" << Field.Name << " < 0) return true;\n"; in emitLookupFunction()
435 OS << " if (Cmp" << Field.Name << " > 0) return false;\n"; in emitLookupFunction()
436 } else if (Field.Enum) { in emitLookupFunction()
439 OS << " if ((unsigned)LHS." << Field.Name << " < (unsigned)RHS." in emitLookupFunction()
440 << Field.Name << ")\n"; in emitLookupFunction()
442 OS << " if ((unsigned)LHS." << Field.Name << " > (unsigned)RHS." in emitLookupFunction()
443 << Field.Name << ")\n"; in emitLookupFunction()
446 OS << " if (LHS." << Field.Name << " < RHS." << Field.Name << ")\n"; in emitLookupFunction()
448 OS << " if (LHS." << Field.Name << " > RHS." << Field.Name << ")\n"; in emitLookupFunction()
458 for (const auto &Field : Index.Fields) in emitLookupFunction() local
459 OS << " ||\n Key." << Field.Name << " != Idx->" << Field.Name; in emitLookupFunction()
476 for (const auto &Field : Index.Fields) in emitLookupDeclaration() local
477 OS << LS << searchableFieldType(Table, Index, Field, TypeInArgument) << " " in emitLookupDeclaration()
478 << Field.Name; in emitLookupDeclaration()
507 for (const auto &Field : Table.Fields) in emitGenericTable() local
509 << primaryRepresentation(Table.Locs[0], Field, in emitGenericTable()
510 Entry->getValueInit(Field.Name)); in emitGenericTable()
526 bool SearchableTableEmitter::parseFieldType(GenericField &Field, Init *TypeOf) { in parseFieldType() argument
529 Field.IsCode = true; in parseFieldType()
534 Field.Enum = EnumMap[TypeRec]; in parseFieldType()
535 Field.RecType = RecordRecTy::get(Field.Enum->Class); in parseFieldType()
554 const GenericField *Field = Table.getFieldByName(FieldName); in parseSearchIndex() local
555 if (!Field) in parseSearchIndex()
562 Index->Fields.push_back(*Field); in parseSearchIndex()
611 for (auto &Field : Table.Fields) { in collectTableEntries() local
612 auto TI = dyn_cast<TypedInit>(EntryRec->getValueInit(Field.Name)); in collectTableEntries()
616 "' is missing field '" + Field.Name + in collectTableEntries()
619 if (!Field.RecType) { in collectTableEntries()
620 Field.RecType = TI->getType(); in collectTableEntries()
622 RecTy *Ty = resolveTypes(Field.RecType, TI->getType()); in collectTableEntries()
624 PrintFatalError(EntryRec->getValue(Field.Name), in collectTableEntries()
625 Twine("Field '") + Field.Name + "' of table '" + in collectTableEntries()
628 Field.RecType->getAsString()); in collectTableEntries()
629 Field.RecType = Ty; in collectTableEntries()
638 for (auto &Field : Table.Fields) { in collectTableEntries() local
639 if (!Field.RecType) in collectTableEntries()
640 PrintFatalError(Twine("Cannot determine type of field '") + Field.Name + in collectTableEntries()
643 if (auto RecordTy = dyn_cast<RecordRecTy>(Field.RecType)) { in collectTableEntries()
645 Field.IsIntrinsic = true; in collectTableEntries()
647 Field.IsInstruction = true; in collectTableEntries()
786 for (const RecordVal &Field : Class->getValues()) { in run() local
787 std::string FieldName = std::string(Field.getName()); in run()
801 for (const auto &Field : in run() local
804 (Twine("lookup") + Table->CppTypeName + "By" + Field).str(); in run()
805 Table->Indices.push_back(parseSearchIndex(*Table, Class->getValue(Field), in run()
806 Name, {Field}, false)); in run()