Lines Matching refs:Field

40 int getInt(Record *R, StringRef Field) {  in getInt()  argument
41 return getAsInt(R->getValueInit(Field)); in getInt()
84 for (const auto &Field : Fields) { in getFieldByName() local
85 if (Name == Field.Name) in getFieldByName()
86 return &Field; in getFieldByName()
113 std::string primaryRepresentation(SMLoc Loc, const GenericField &Field, in primaryRepresentation() argument
116 if (Field.IsCode || SI->hasCodeFormat()) in primaryRepresentation()
124 else if (Field.IsIntrinsic) in primaryRepresentation()
126 else if (Field.IsInstruction) in primaryRepresentation()
128 else if (Field.Enum) { in primaryRepresentation()
129 auto *Entry = Field.Enum->EntryMap[cast<DefInit>(I)->getDef()]; in primaryRepresentation()
132 Twine("Entry for field '") + Field.Name + "' is null"); in primaryRepresentation()
135 PrintFatalError(Loc, Twine("invalid field type for field '") + Field.Name + in primaryRepresentation()
157 const GenericField &Field, TypeContext Ctx) { in searchableFieldType() argument
158 if (isa<StringRecTy>(Field.RecType)) { in searchableFieldType()
164 } else if (BitsRecTy *BI = dyn_cast<BitsRecTy>(Field.RecType)) { in searchableFieldType()
176 "', key field '" + Field.Name + in searchableFieldType()
178 } else if (Field.Enum || Field.IsIntrinsic || Field.IsInstruction) in searchableFieldType()
182 Index.Name + "', key field '" + Field.Name + in searchableFieldType()
183 "' has invalid type: " + Field.RecType->getAsString()); in searchableFieldType()
194 bool parseFieldType(GenericField &Field, Init *II);
224 for (const auto &Field : Index.Fields) { in compareBy() local
225 Init *LHSI = LHS->getValueInit(Field.Name); in compareBy()
226 Init *RHSI = RHS->getValueInit(Field.Name); in compareBy()
228 if (isa<BitsRecTy>(Field.RecType) || isa<IntRecTy>(Field.RecType)) { in compareBy()
235 } else if (Field.IsIntrinsic) { in compareBy()
244 } else if (Field.IsInstruction) { in compareBy()
261 } else if (Field.Enum) { in compareBy()
264 int64_t LHSv = Field.Enum->EntryMap[LHSr]->second; in compareBy()
265 int64_t RHSv = Field.Enum->EntryMap[RHSr]->second; in compareBy()
271 std::string LHSs = primaryRepresentation(Index.Loc, Field, LHSI); in compareBy()
272 std::string RHSs = primaryRepresentation(Index.Loc, Field, RHSI); in compareBy()
274 if (isa<StringRecTy>(Field.RecType)) { in compareBy()
326 for (const auto &Field : Index.Fields) { in emitLookupFunction() local
328 << searchableFieldType(Table, Index, Field, TypeInStaticStruct) << " " in emitLookupFunction()
329 << Field.Name << ";\n"; in emitLookupFunction()
352 for (const auto &Field : Index.Fields) { in emitLookupFunction() local
354 Index.Loc, Field, Entry.first->getValueInit(Field.Name)); in emitLookupFunction()
355 if (isa<StringRecTy>(Field.RecType)) in emitLookupFunction()
396 const GenericField &Field = Index.Fields[0]; in emitLookupFunction() local
398 Index.Loc, Field, IndexRows[0]->getValueInit(Field.Name)); in emitLookupFunction()
400 Index.Loc, Field, IndexRows.back()->getValueInit(Field.Name)); in emitLookupFunction()
401 OS << " if ((" << Field.Name << " < " << FirstRepr << ") ||\n"; in emitLookupFunction()
402 OS << " (" << Field.Name << " > " << LastRepr << "))\n"; in emitLookupFunction()
407 for (const auto &Field : Index.Fields) { in emitLookupFunction() local
408 OS << " " << searchableFieldType(Table, Index, Field, TypeInTempStruct) in emitLookupFunction()
409 << " " << Field.Name << ";\n"; in emitLookupFunction()
414 for (const auto &Field : Index.Fields) { in emitLookupFunction() local
415 OS << LS << Field.Name; in emitLookupFunction()
416 if (isa<StringRecTy>(Field.RecType)) { in emitLookupFunction()
423 Field.Name + "'"); in emitLookupFunction()
432 for (const auto &Field : Index.Fields) { in emitLookupFunction() local
433 if (isa<StringRecTy>(Field.RecType)) { in emitLookupFunction()
434 OS << " int Cmp" << Field.Name << " = StringRef(LHS." << Field.Name in emitLookupFunction()
435 << ").compare(RHS." << Field.Name << ");\n"; in emitLookupFunction()
436 OS << " if (Cmp" << Field.Name << " < 0) return true;\n"; in emitLookupFunction()
437 OS << " if (Cmp" << Field.Name << " > 0) return false;\n"; in emitLookupFunction()
438 } else if (Field.Enum) { in emitLookupFunction()
441 OS << " if ((unsigned)LHS." << Field.Name << " < (unsigned)RHS." in emitLookupFunction()
442 << Field.Name << ")\n"; in emitLookupFunction()
444 OS << " if ((unsigned)LHS." << Field.Name << " > (unsigned)RHS." in emitLookupFunction()
445 << Field.Name << ")\n"; in emitLookupFunction()
448 OS << " if (LHS." << Field.Name << " < RHS." << Field.Name << ")\n"; in emitLookupFunction()
450 OS << " if (LHS." << Field.Name << " > RHS." << Field.Name << ")\n"; in emitLookupFunction()
460 for (const auto &Field : Index.Fields) in emitLookupFunction() local
461 OS << " ||\n Key." << Field.Name << " != Idx->" << Field.Name; in emitLookupFunction()
478 for (const auto &Field : Index.Fields) in emitLookupDeclaration() local
479 OS << LS << searchableFieldType(Table, Index, Field, TypeInArgument) << " " in emitLookupDeclaration()
480 << Field.Name; in emitLookupDeclaration()
509 for (const auto &Field : Table.Fields) in emitGenericTable() local
511 << primaryRepresentation(Table.Locs[0], Field, in emitGenericTable()
512 Entry->getValueInit(Field.Name)); in emitGenericTable()
528 bool SearchableTableEmitter::parseFieldType(GenericField &Field, Init *TypeOf) { in parseFieldType() argument
531 Field.IsCode = true; in parseFieldType()
536 Field.Enum = EnumMap[TypeRec]; in parseFieldType()
537 Field.RecType = RecordRecTy::get(Field.Enum->Class); in parseFieldType()
556 const GenericField *Field = Table.getFieldByName(FieldName); in parseSearchIndex() local
557 if (!Field) in parseSearchIndex()
564 Index->Fields.push_back(*Field); in parseSearchIndex()
613 for (auto &Field : Table.Fields) { in collectTableEntries() local
614 auto TI = dyn_cast<TypedInit>(EntryRec->getValueInit(Field.Name)); in collectTableEntries()
618 "' is missing field '" + Field.Name + in collectTableEntries()
621 if (!Field.RecType) { in collectTableEntries()
622 Field.RecType = TI->getType(); in collectTableEntries()
624 RecTy *Ty = resolveTypes(Field.RecType, TI->getType()); in collectTableEntries()
626 PrintFatalError(EntryRec->getValue(Field.Name), in collectTableEntries()
627 Twine("Field '") + Field.Name + "' of table '" + in collectTableEntries()
630 Field.RecType->getAsString()); in collectTableEntries()
631 Field.RecType = Ty; in collectTableEntries()
640 for (auto &Field : Table.Fields) { in collectTableEntries() local
641 if (!Field.RecType) in collectTableEntries()
642 PrintFatalError(Twine("Cannot determine type of field '") + Field.Name + in collectTableEntries()
645 if (auto RecordTy = dyn_cast<RecordRecTy>(Field.RecType)) { in collectTableEntries()
647 Field.IsIntrinsic = true; in collectTableEntries()
649 Field.IsInstruction = true; in collectTableEntries()
781 for (const RecordVal &Field : Class->getValues()) { in run() local
782 std::string FieldName = std::string(Field.getName()); in run()
796 for (const auto &Field : in run() local
799 (Twine("lookup") + Table->CppTypeName + "By" + Field).str(); in run()
800 Table->Indices.push_back(parseSearchIndex(*Table, Class->getValue(Field), in run()
801 Name, {Field}, false)); in run()