discrepancy between include/llvm/ADT/Triple.h and lib/Target/ARM/ARMGenSubtargetInfo.inc?

lib/Target/ARM/ARMGenSubtargetInfo.inc:

namespace ARM {
enum {
ARMv2 = 0,
ARMv2a = 1,
ARMv3 = 2,
ARMv3m = 3,
ARMv4 = 4,
ARMv4t = 5,
ARMv5t = 6,
ARMv5te = 7,
ARMv5tej = 8,
ARMv6 = 9,
ARMv6j = 10,
ARMv6k = 11,
ARMv6kz = 12,
ARMv6m = 13,
ARMv6sm = 14,
ARMv6t2 = 15,
ARMv7a = 16,
ARMv7em = 17,
ARMv7k = 18,
ARMv7m = 19,
ARMv7r = 20,
ARMv7s = 21,
ARMv7ve = 22,
ARMv8a = 23,
ARMv8mBaseline = 24,
ARMv8mMainline = 25,
ARMv8r = 26,
ARMv81a = 27,
ARMv82a = 28,
ARMv83a = 29,

include/llvm/ADT/Triple.h:
ARMSubArch_v8_3a,
ARMSubArch_v8_2a,
ARMSubArch_v8_1a,
ARMSubArch_v8,
ARMSubArch_v8r,
ARMSubArch_v8m_baseline,
ARMSubArch_v8m_mainline,
ARMSubArch_v7,
ARMSubArch_v7em,
ARMSubArch_v7m,
ARMSubArch_v7s,
ARMSubArch_v7k,
ARMSubArch_v7ve,
ARMSubArch_v6,
ARMSubArch_v6m,
ARMSubArch_v6k,
ARMSubArch_v6t2,
ARMSubArch_v5,
ARMSubArch_v5te,
ARMSubArch_v4t,

Why are these different? Which one is canonical? What would I do to enumerate the actual list of all targets?