This patch adds "vector-variants" function attributes to simd functions.
This change is required to more clearly indicate which function names represent simd function variants of the original scalar function. Previously, these function names were just represented as individual strings. Example: "_ZGVbM4l8Z5add_1Pf", "_ZGVbN4l8Z5add_1Pf", ... The attributes are now represented as a key/value pair: "vector-variants"="_ZGVbM4l8Z5add_1Pf, _ZGVbN4l8Z5add_1Pf, ...". Because the length of the string can now be quite a bit longer, I used std::string. Is SmallString still appropriate?
I can probably change the test to be more explicit in checking for "vector-variants", if you think this would be better. The quotes were removed because of the change to the attribute formatting. E.g., the function names will no longer appear as individual strings, but as the key/value pair where all function names will now appear within a single string.