pub fn from_llvm_strings<T: AsRef<str>, U: AsRef<str>, V: AsRef<str>>(
        triple_string: T,
        cpu_string: U,
        feature_string: V,
    ) -> WeldResult<Target> {
        let cpu = cpu_string.as_ref().to_string();
        let features = if triple_string.as_ref().contains("x86") {
            let mut features = FnvHashSet::default();
            let feature_tokens = feature_string
                .as_ref()
                .split(',')
                .filter(|s| s.starts_with('+'));
            for feature_token in feature_tokens {
                // Since we use the LLVM string, just ignore errors. They indicate features that we
                // don't support/know about yet.
                if let Ok(feature) = feature_token.get(1..).unwrap().parse::<X86Feature>() {
                    features.insert(feature);
                } else {
                    trace!("Unrecognized x86 feature {}", feature_token);
                }
            }
            TargetFeatures::X86(features)
        } else {
            TargetFeatures::Unknown
        };

        let result = Target { cpu, features };
        Ok(result)
    }
Returns a new `TargetFeature` using an LLVM feature and CPU string.
weld/src/codegen/llvm2/target.rs