Currently our handling of CUDA architectures is scattered all around
clang. This patch centralizes it.
A key advantage of this centralization is that you can now write a C++
switch on e.g. CudaArch and get a compile error if you don't handle one
of the enum values.
We seem to do a lot of enum->string and string->enum mapping in this file.
Is there something comparable to Boost.bimap in standard c++ library or in LLVM?