================
@@ -315,6 +320,33 @@ static constexpr unsigned IntrinsicNameOffsetTable[] = {
OS << "\n}; // IntrinsicNameOffsetTable\n";
}
+void IntrinsicEmitter::EmitIntrinsicToTargetFeaturesTable(
+ const CodeGenIntrinsicTable &Ints, raw_ostream &OS) {
+ StringToOffsetTable Table;
+ for (const CodeGenIntrinsic &Int : Ints)
+ Table.GetOrAddStringOffset(Int.TargetFeatures);
+
+ IfDefEmitter IfDef(OS, "GET_INTRINSIC_TARGET_FEATURES_TABLE");
+ OS << R"(// Intrinsic ID to required target features table.
+// Note that entry #0 is the invalid intrinsic!
+
+)";
+
+ Table.EmitStringTableDef(OS, "IntrinsicTargetFeaturesTable");
+
+ OS << R"(
+static constexpr unsigned IntrinsicTargetFeaturesOffsetTable[] = {
+)";
+
+ OS << " 0, // not_intrinsic\n";
+ for (const CodeGenIntrinsic &Int : Ints) {
+ OS << formatv(" {}, // {}\n",
+ Table.GetStringOffset(Int.TargetFeatures).value(), Int.Name);
----------------
topperc wrote:
```suggestion
*Table.GetStringOffset(Int.TargetFeatures), Int.Name);
```
There was a push to avoid optional::value() a few years ago, not sure if the
reason is still valid.
https://discourse.llvm.org/t/deprecating-llvm-optional-x-hasvalue-getvalue-getvalueor/63716/19
https://github.com/llvm/llvm-project/pull/201470
_______________________________________________
cfe-commits mailing list
[email protected]
https://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-commits