Patch implements a multiclass 'SInstBF16', a wrapper around SInst that
also defines a bfloat16 variant. This is used to merge the definitions
of intrinsics with bfloat16 support. The multiclass also handles
multiple arch guards.
I'd rather see that we define ArchGuard as a list of strings, and then do a simple !listconcat for each of the features. Then we can do the expansion to the eventual #if defined (pred1 && pred2 && ... predN) in SveEmitter.cpp. There you can get the ArchGuard as a std::vector<StringRef>.
I also think the current implementation isn't correct, because it misses the encapsulating defined(...) ?