@@ -99,8 +99,10 @@ static const CoreDefinition g_core_definitions[] = {
99
99
ArchSpec::eCore_arm_arm64, " arm64" },
100
100
{eByteOrderLittle, 8 , 4 , 4 , llvm::Triple::aarch64,
101
101
ArchSpec::eCore_arm_armv8, " armv8" },
102
- {eByteOrderLittle, 4 , 2 , 4 , llvm::Triple::arm,
103
- ArchSpec::eCore_arm_armv8l, " armv8l" },
102
+ {eByteOrderLittle, 4 , 2 , 4 , llvm::Triple::arm, ArchSpec::eCore_arm_armv8l,
103
+ " armv8l" },
104
+ {eByteOrderLittle, 8 , 4 , 4 , llvm::Triple::aarch64,
105
+ ArchSpec::eCore_arm_arm64e, " arm64e" },
104
106
{eByteOrderLittle, 4 , 4 , 4 , llvm::Triple::aarch64_32,
105
107
ArchSpec::eCore_arm_arm64_32, " arm64_32" },
106
108
{eByteOrderLittle, 8 , 4 , 4 , llvm::Triple::aarch64,
@@ -283,8 +285,7 @@ static const ArchDefinitionEntry g_macho_arch_entries[] = {
283
285
{ArchSpec::eCore_arm_armv7k, llvm::MachO::CPU_TYPE_ARM, llvm::MachO::CPU_SUBTYPE_ARM_V7K, UINT32_MAX, SUBTYPE_MASK},
284
286
{ArchSpec::eCore_arm_armv7m, llvm::MachO::CPU_TYPE_ARM, llvm::MachO::CPU_SUBTYPE_ARM_V7M, UINT32_MAX, SUBTYPE_MASK},
285
287
{ArchSpec::eCore_arm_armv7em, llvm::MachO::CPU_TYPE_ARM, llvm::MachO::CPU_SUBTYPE_ARM_V7EM, UINT32_MAX, SUBTYPE_MASK},
286
- // FIXME: This should be arm64e once the triple exists.
287
- {ArchSpec::eCore_arm_arm64, llvm::MachO::CPU_TYPE_ARM64, llvm::MachO::CPU_SUBTYPE_ARM64E, UINT32_MAX, SUBTYPE_MASK},
288
+ {ArchSpec::eCore_arm_arm64e, llvm::MachO::CPU_TYPE_ARM64, llvm::MachO::CPU_SUBTYPE_ARM64E, UINT32_MAX, SUBTYPE_MASK},
288
289
{ArchSpec::eCore_arm_arm64, llvm::MachO::CPU_TYPE_ARM64, llvm::MachO::CPU_SUBTYPE_ARM64_V8, UINT32_MAX, SUBTYPE_MASK},
289
290
{ArchSpec::eCore_arm_arm64, llvm::MachO::CPU_TYPE_ARM64, llvm::MachO::CPU_SUBTYPE_ARM64_ALL, UINT32_MAX, SUBTYPE_MASK},
290
291
{ArchSpec::eCore_arm_arm64, llvm::MachO::CPU_TYPE_ARM64, 13 , UINT32_MAX, SUBTYPE_MASK},
@@ -1189,16 +1190,31 @@ static bool cores_match(const ArchSpec::Core core1, const ArchSpec::Core core2,
1189
1190
return true ;
1190
1191
if (core2 == ArchSpec::eCore_arm_aarch64)
1191
1192
return true ;
1193
+ if (core2 == ArchSpec::eCore_arm_arm64e)
1194
+ return true ;
1192
1195
try_inverse = false ;
1193
1196
}
1194
1197
break ;
1195
1198
1199
+ case ArchSpec::eCore_arm_arm64e:
1200
+ if (!enforce_exact_match) {
1201
+ if (core2 == ArchSpec::eCore_arm_arm64)
1202
+ return true ;
1203
+ if (core2 == ArchSpec::eCore_arm_aarch64)
1204
+ return true ;
1205
+ if (core2 == ArchSpec::eCore_arm_armv8)
1206
+ return true ;
1207
+ try_inverse = false ;
1208
+ }
1209
+ break ;
1196
1210
case ArchSpec::eCore_arm_aarch64:
1197
1211
if (!enforce_exact_match) {
1198
1212
if (core2 == ArchSpec::eCore_arm_arm64)
1199
1213
return true ;
1200
1214
if (core2 == ArchSpec::eCore_arm_armv8)
1201
1215
return true ;
1216
+ if (core2 == ArchSpec::eCore_arm_arm64e)
1217
+ return true ;
1202
1218
try_inverse = false ;
1203
1219
}
1204
1220
break ;
@@ -1209,6 +1225,8 @@ static bool cores_match(const ArchSpec::Core core1, const ArchSpec::Core core2,
1209
1225
return true ;
1210
1226
if (core2 == ArchSpec::eCore_arm_armv8)
1211
1227
return true ;
1228
+ if (core2 == ArchSpec::eCore_arm_arm64e)
1229
+ return true ;
1212
1230
try_inverse = false ;
1213
1231
}
1214
1232
break ;
0 commit comments