This patch fixes the discrepancy between all MVT::LAST_XXX enum values.
Usually LAST_XXX values are inclusive (see LAST_INTEGER_VALUETYPE or LAST_FP_VALUETYPE) but LAST_VALUETYPE behaves differently and points past the last value (See https://github.com/llvm/llvm-project/blob/438cf5577e720f84d493a272c5a1cbaf6ce19e51/llvm/include/llvm/Support/MachineValueType.h#L32)
The discrepancy is easy to spot in the _valuetypes() function at the bottom of the file
This patch makes LAST_VALUETYPE point to the last value (as per definition) and introduces a special enum to be used as the size of a table to hold all enums up to - and including - LAST_VALUETYPE.
The patch is a bit verbose because of formatting issues the Linter was complaining about.