X86.td file contains number of features that can be arrange in more general pattern . We can combine features that include in number of atom into single processor and create a inheritance ratio between them all.
This looks to be adding RDRAND to SLM. Whether that's correct or not, that's a functional change which should not be part of this patch.
Should SSSE3 be part of AtomValues instead? The rest of these are uarch details, but that one is a real feature and should be with the other features.
I agree that it's part of SLM and that it should be fixed. But this patch should be treated as a refactor that doesn't change behavior. Especially since your description makes no mention of this change. And clang needs to be updated too. So submit a separate pre or post patch for the SLM rdrand change.
Why is CallRegIndirect in BonnellProc and AtomPlusFeatures? Should it be in AtomFeatures instead? Or should each CPU list is separately?
I don't think the "Slow" features should be part of AtomPlusFeatures. While its great for sharing between Silvermont and Goldmont. It makes AtomPlusFeatures hard to inherit from for the processor after Goldmont if it changes any of those things.