@@ -273,6 +273,7 @@ StringRef Triple::getOSTypeName(OSType Kind) {
273
273
case ZOS: return " zos" ;
274
274
case ShaderModel: return " shadermodel" ;
275
275
case LiteOS: return " liteos" ;
276
+ case XROS: return " xros" ;
276
277
}
277
278
278
279
llvm_unreachable (" Invalid OSType" );
@@ -634,6 +635,8 @@ static Triple::OSType parseOS(StringRef OSName) {
634
635
.StartsWith (" tvos" , Triple::TvOS)
635
636
.StartsWith (" watchos" , Triple::WatchOS)
636
637
.StartsWith (" driverkit" , Triple::DriverKit)
638
+ .StartsWith (" xros" , Triple::XROS)
639
+ .StartsWith (" visionos" , Triple::XROS)
637
640
.StartsWith (" mesa3d" , Triple::Mesa3D)
638
641
.StartsWith (" amdpal" , Triple::AMDPAL)
639
642
.StartsWith (" hermit" , Triple::HermitCore)
@@ -1224,6 +1227,8 @@ VersionTuple Triple::getOSVersion() const {
1224
1227
OSName = OSName.substr (OSTypeName.size ());
1225
1228
else if (getOS () == MacOSX)
1226
1229
OSName.consume_front (" macos" );
1230
+ else if (OSName.starts_with (" visionos" ))
1231
+ OSName.consume_front (" visionos" );
1227
1232
1228
1233
return parseVersionFromName (OSName);
1229
1234
}
@@ -1265,6 +1270,8 @@ bool Triple::getMacOSXVersion(VersionTuple &Version) const {
1265
1270
// IOS.
1266
1271
Version = VersionTuple (10 , 4 );
1267
1272
break ;
1273
+ case XROS:
1274
+ llvm_unreachable (" OSX version isn't relevant for xrOS" );
1268
1275
case DriverKit:
1269
1276
llvm_unreachable (" OSX version isn't relevant for DriverKit" );
1270
1277
}
@@ -1289,6 +1296,11 @@ VersionTuple Triple::getiOSVersion() const {
1289
1296
return (getArch () == aarch64) ? VersionTuple (7 ) : VersionTuple (5 );
1290
1297
return Version;
1291
1298
}
1299
+ case XROS: {
1300
+ // xrOS 1 is aligned with iOS 17.
1301
+ VersionTuple Version = getOSVersion ();
1302
+ return Version.withMajorReplaced (Version.getMajor () + 16 );
1303
+ }
1292
1304
case WatchOS:
1293
1305
llvm_unreachable (" conflicting triple info" );
1294
1306
case DriverKit:
@@ -1314,6 +1326,8 @@ VersionTuple Triple::getWatchOSVersion() const {
1314
1326
}
1315
1327
case IOS:
1316
1328
llvm_unreachable (" conflicting triple info" );
1329
+ case XROS:
1330
+ llvm_unreachable (" watchOS version isn't relevant for xrOS" );
1317
1331
case DriverKit:
1318
1332
llvm_unreachable (" DriverKit doesn't have a WatchOS version" );
1319
1333
}
0 commit comments