Lines Matching refs:Field
39 int64_t getInt(Record *R, StringRef Field) { in getInt() argument
40 return getAsInt(R->getValueInit(Field)); in getInt()
83 for (const auto &Field : Fields) { in getFieldByName() local
84 if (Name == Field.Name) in getFieldByName()
85 return &Field; in getFieldByName()
112 std::string primaryRepresentation(SMLoc Loc, const GenericField &Field, in primaryRepresentation() argument
115 if (Field.IsCode || SI->hasCodeFormat()) in primaryRepresentation()
123 else if (Field.IsIntrinsic) in primaryRepresentation()
125 else if (Field.IsInstruction) in primaryRepresentation()
127 else if (Field.Enum) { in primaryRepresentation()
128 auto *Entry = Field.Enum->EntryMap[cast<DefInit>(I)->getDef()]; in primaryRepresentation()
131 Twine("Entry for field '") + Field.Name + "' is null"); in primaryRepresentation()
134 PrintFatalError(Loc, Twine("invalid field type for field '") + Field.Name + in primaryRepresentation()
156 const GenericField &Field, TypeContext Ctx) { in searchableFieldType() argument
157 if (isa<StringRecTy>(Field.RecType)) { in searchableFieldType()
163 } else if (BitsRecTy *BI = dyn_cast<BitsRecTy>(Field.RecType)) { in searchableFieldType()
175 "', key field '" + Field.Name + in searchableFieldType()
177 } else if (isa<BitRecTy>(Field.RecType)) { in searchableFieldType()
179 } else if (Field.Enum || Field.IsIntrinsic || Field.IsInstruction) in searchableFieldType()
183 Index.Name + "', key field '" + Field.Name + in searchableFieldType()
184 "' has invalid type: " + Field.RecType->getAsString()); in searchableFieldType()
195 bool parseFieldType(GenericField &Field, Init *II);
225 for (const auto &Field : Index.Fields) { in compareBy() local
226 Init *LHSI = LHS->getValueInit(Field.Name); in compareBy()
227 Init *RHSI = RHS->getValueInit(Field.Name); in compareBy()
229 if (isa<BitsRecTy>(Field.RecType) || isa<IntRecTy>(Field.RecType)) { in compareBy()
236 } else if (Field.IsIntrinsic) { in compareBy()
245 } else if (Field.IsInstruction) { in compareBy()
262 } else if (Field.Enum) { in compareBy()
265 int64_t LHSv = Field.Enum->EntryMap[LHSr]->second; in compareBy()
266 int64_t RHSv = Field.Enum->EntryMap[RHSr]->second; in compareBy()
272 std::string LHSs = primaryRepresentation(Index.Loc, Field, LHSI); in compareBy()
273 std::string RHSs = primaryRepresentation(Index.Loc, Field, RHSI); in compareBy()
275 if (isa<StringRecTy>(Field.RecType)) { in compareBy()
327 for (const auto &Field : Index.Fields) { in emitLookupFunction() local
329 << searchableFieldType(Table, Index, Field, TypeInStaticStruct) << " " in emitLookupFunction()
330 << Field.Name << ";\n"; in emitLookupFunction()
353 for (const auto &Field : Index.Fields) { in emitLookupFunction() local
355 Index.Loc, Field, Entry.first->getValueInit(Field.Name)); in emitLookupFunction()
356 if (isa<StringRecTy>(Field.RecType)) in emitLookupFunction()
397 const GenericField &Field = Index.Fields[0]; in emitLookupFunction() local
399 Index.Loc, Field, IndexRows[0]->getValueInit(Field.Name)); in emitLookupFunction()
401 Index.Loc, Field, IndexRows.back()->getValueInit(Field.Name)); in emitLookupFunction()
402 OS << " if ((" << Field.Name << " < " << FirstRepr << ") ||\n"; in emitLookupFunction()
403 OS << " (" << Field.Name << " > " << LastRepr << "))\n"; in emitLookupFunction()
408 for (const auto &Field : Index.Fields) { in emitLookupFunction() local
409 OS << " " << searchableFieldType(Table, Index, Field, TypeInTempStruct) in emitLookupFunction()
410 << " " << Field.Name << ";\n"; in emitLookupFunction()
415 for (const auto &Field : Index.Fields) { in emitLookupFunction() local
416 OS << LS << Field.Name; in emitLookupFunction()
417 if (isa<StringRecTy>(Field.RecType)) { in emitLookupFunction()
424 Field.Name + "'"); in emitLookupFunction()
433 for (const auto &Field : Index.Fields) { in emitLookupFunction() local
434 if (isa<StringRecTy>(Field.RecType)) { in emitLookupFunction()
435 OS << " int Cmp" << Field.Name << " = StringRef(LHS." << Field.Name in emitLookupFunction()
436 << ").compare(RHS." << Field.Name << ");\n"; in emitLookupFunction()
437 OS << " if (Cmp" << Field.Name << " < 0) return true;\n"; in emitLookupFunction()
438 OS << " if (Cmp" << Field.Name << " > 0) return false;\n"; in emitLookupFunction()
439 } else if (Field.Enum) { in emitLookupFunction()
442 OS << " if ((unsigned)LHS." << Field.Name << " < (unsigned)RHS." in emitLookupFunction()
443 << Field.Name << ")\n"; in emitLookupFunction()
445 OS << " if ((unsigned)LHS." << Field.Name << " > (unsigned)RHS." in emitLookupFunction()
446 << Field.Name << ")\n"; in emitLookupFunction()
449 OS << " if (LHS." << Field.Name << " < RHS." << Field.Name << ")\n"; in emitLookupFunction()
451 OS << " if (LHS." << Field.Name << " > RHS." << Field.Name << ")\n"; in emitLookupFunction()
461 for (const auto &Field : Index.Fields) in emitLookupFunction() local
462 OS << " ||\n Key." << Field.Name << " != Idx->" << Field.Name; in emitLookupFunction()
479 for (const auto &Field : Index.Fields) in emitLookupDeclaration() local
480 OS << LS << searchableFieldType(Table, Index, Field, TypeInArgument) << " " in emitLookupDeclaration()
481 << Field.Name; in emitLookupDeclaration()
510 for (const auto &Field : Table.Fields) in emitGenericTable() local
512 << primaryRepresentation(Table.Locs[0], Field, in emitGenericTable()
513 Entry->getValueInit(Field.Name)); in emitGenericTable()
529 bool SearchableTableEmitter::parseFieldType(GenericField &Field, Init *TypeOf) { in parseFieldType() argument
532 Field.IsCode = true; in parseFieldType()
537 Field.Enum = EnumMap[TypeRec]; in parseFieldType()
538 Field.RecType = RecordRecTy::get(Field.Enum->Class); in parseFieldType()
557 const GenericField *Field = Table.getFieldByName(FieldName); in parseSearchIndex() local
558 if (!Field) in parseSearchIndex()
565 Index->Fields.push_back(*Field); in parseSearchIndex()
614 for (auto &Field : Table.Fields) { in collectTableEntries() local
615 auto TI = dyn_cast<TypedInit>(EntryRec->getValueInit(Field.Name)); in collectTableEntries()
619 "' is missing field '" + Field.Name + in collectTableEntries()
622 if (!Field.RecType) { in collectTableEntries()
623 Field.RecType = TI->getType(); in collectTableEntries()
625 RecTy *Ty = resolveTypes(Field.RecType, TI->getType()); in collectTableEntries()
627 PrintFatalError(EntryRec->getValue(Field.Name), in collectTableEntries()
628 Twine("Field '") + Field.Name + "' of table '" + in collectTableEntries()
631 Field.RecType->getAsString()); in collectTableEntries()
632 Field.RecType = Ty; in collectTableEntries()
641 for (auto &Field : Table.Fields) { in collectTableEntries() local
642 if (!Field.RecType) in collectTableEntries()
643 PrintFatalError(Twine("Cannot determine type of field '") + Field.Name + in collectTableEntries()
646 if (auto RecordTy = dyn_cast<RecordRecTy>(Field.RecType)) { in collectTableEntries()
648 Field.IsIntrinsic = true; in collectTableEntries()
650 Field.IsInstruction = true; in collectTableEntries()
805 for (const RecordVal &Field : Class->getValues()) { in run() local
806 std::string FieldName = std::string(Field.getName()); in run()
820 for (const auto &Field : in run() local
823 (Twine("lookup") + Table->CppTypeName + "By" + Field).str(); in run()
824 Table->Indices.push_back(parseSearchIndex(*Table, Class->getValue(Field), in run()
825 Name, {Field}, false)); in run()