@@ -385,6 +385,18 @@ const std::map<std::string, Target::Feature> feature_name_map = {
385385 {" rvv" , Target::RVV},
386386 {" armv81a" , Target::ARMv81a},
387387 {" sanitizer_coverage" , Target::SanitizerCoverage},
388+ {" tune_k8" , Target::TuneK8},
389+ {" tune_k8_sse3" , Target::TuneK8_SSE3},
390+ {" tune_amdfam10" , Target::TuneAMDFam10},
391+ {" tune_btver1" , Target::TuneBtVer1},
392+ {" tune_bdver1" , Target::TuneBdVer1},
393+ {" tune_bdver2" , Target::TuneBdVer2},
394+ {" tune_bdver3" , Target::TuneBdVer3},
395+ {" tune_bdver4" , Target::TuneBdVer4},
396+ {" tune_btver2" , Target::TuneBtVer2},
397+ {" tune_znver1" , Target::TuneZnVer1},
398+ {" tune_znver2" , Target::TuneZnVer2},
399+ {" tune_znver3" , Target::TuneZnVer3},
388400 // NOTE: When adding features to this map, be sure to update PyEnums.cpp as well.
389401};
390402
@@ -453,7 +465,7 @@ bool merge_string(Target &t, const std::string &target) {
453465 }
454466 tokens.push_back (rest);
455467
456- bool os_specified = false , arch_specified = false , bits_specified = false , features_specified = false ;
468+ bool os_specified = false , arch_specified = false , bits_specified = false , tune_specified = false , features_specified = false ;
457469 bool is_host = false ;
458470
459471 for (size_t i = 0 ; i < tokens.size (); i++) {
@@ -484,6 +496,13 @@ bool merge_string(Target &t, const std::string &target) {
484496 }
485497 os_specified = true ;
486498 } else if (lookup_feature (tok, feature)) {
499+ if (tok.substr (0 , std::strlen (" tune_" )) == " tune_" ) {
500+ if (tune_specified) {
501+ // Only a single tune makes sense.
502+ return false ;
503+ }
504+ tune_specified = true ;
505+ }
487506 t.set_feature (feature);
488507 features_specified = true ;
489508 } else if (tok == " trace_all" ) {
@@ -979,7 +998,7 @@ bool Target::get_runtime_compatible_target(const Target &other, Target &result)
979998 // clang-format on
980999
9811000 // clang-format off
982- const std::array<Feature, 14 > intersection_features = {{
1001+ const std::array<Feature, 15 > intersection_features = {{
9831002 ARMv7s,
9841003 ARMv81a,
9851004 AVX,
0 commit comments