@@ -273,6 +273,7 @@ StringRef Triple::getOSTypeName(OSType Kind) {
273273 case ZOS: return " zos" ;
274274 case ShaderModel: return " shadermodel" ;
275275 case LiteOS: return " liteos" ;
276+ case XROS: return " xros" ;
276277 }
277278
278279 llvm_unreachable (" Invalid OSType" );
@@ -634,6 +635,8 @@ static Triple::OSType parseOS(StringRef OSName) {
634635 .StartsWith (" tvos" , Triple::TvOS)
635636 .StartsWith (" watchos" , Triple::WatchOS)
636637 .StartsWith (" driverkit" , Triple::DriverKit)
638+ .StartsWith (" xros" , Triple::XROS)
639+ .StartsWith (" visionos" , Triple::XROS)
637640 .StartsWith (" mesa3d" , Triple::Mesa3D)
638641 .StartsWith (" amdpal" , Triple::AMDPAL)
639642 .StartsWith (" hermit" , Triple::HermitCore)
@@ -1224,6 +1227,8 @@ VersionTuple Triple::getOSVersion() const {
12241227 OSName = OSName.substr (OSTypeName.size ());
12251228 else if (getOS () == MacOSX)
12261229 OSName.consume_front (" macos" );
1230+ else if (OSName.starts_with (" visionos" ))
1231+ OSName.consume_front (" visionos" );
12271232
12281233 return parseVersionFromName (OSName);
12291234}
@@ -1265,6 +1270,8 @@ bool Triple::getMacOSXVersion(VersionTuple &Version) const {
12651270 // IOS.
12661271 Version = VersionTuple (10 , 4 );
12671272 break ;
1273+ case XROS:
1274+ llvm_unreachable (" OSX version isn't relevant for xrOS" );
12681275 case DriverKit:
12691276 llvm_unreachable (" OSX version isn't relevant for DriverKit" );
12701277 }
@@ -1289,6 +1296,11 @@ VersionTuple Triple::getiOSVersion() const {
12891296 return (getArch () == aarch64) ? VersionTuple (7 ) : VersionTuple (5 );
12901297 return Version;
12911298 }
1299+ case XROS: {
1300+ // xrOS 1 is aligned with iOS 17.
1301+ VersionTuple Version = getOSVersion ();
1302+ return Version.withMajorReplaced (Version.getMajor () + 16 );
1303+ }
12921304 case WatchOS:
12931305 llvm_unreachable (" conflicting triple info" );
12941306 case DriverKit:
@@ -1314,6 +1326,8 @@ VersionTuple Triple::getWatchOSVersion() const {
13141326 }
13151327 case IOS:
13161328 llvm_unreachable (" conflicting triple info" );
1329+ case XROS:
1330+ llvm_unreachable (" watchOS version isn't relevant for xrOS" );
13171331 case DriverKit:
13181332 llvm_unreachable (" DriverKit doesn't have a WatchOS version" );
13191333 }
0 commit comments