1f09cf34dSArchibald Elliott //===----------- Triple.cpp - Triple unit tests ---------------------------===// 2f09cf34dSArchibald Elliott // 3f09cf34dSArchibald Elliott // Part of the LLVM Project, under the Apache License v2.0 with LLVM Exceptions. 4f09cf34dSArchibald Elliott // See https://llvm.org/LICENSE.txt for license information. 5f09cf34dSArchibald Elliott // SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception 6f09cf34dSArchibald Elliott // 7f09cf34dSArchibald Elliott //===----------------------------------------------------------------------===// 8f09cf34dSArchibald Elliott 9f09cf34dSArchibald Elliott #include "llvm/TargetParser/Triple.h" 10a829ebadSMartin Storsjö #include "llvm/Support/FormatVariadic.h" 11f09cf34dSArchibald Elliott #include "llvm/Support/VersionTuple.h" 12f09cf34dSArchibald Elliott #include "gtest/gtest.h" 13f09cf34dSArchibald Elliott 14f09cf34dSArchibald Elliott using namespace llvm; 15f09cf34dSArchibald Elliott 16f09cf34dSArchibald Elliott namespace { 17f09cf34dSArchibald Elliott 18f09cf34dSArchibald Elliott TEST(TripleTest, BasicParsing) { 19f09cf34dSArchibald Elliott Triple T; 20f09cf34dSArchibald Elliott 21f09cf34dSArchibald Elliott T = Triple(""); 22f09cf34dSArchibald Elliott EXPECT_EQ("", T.getArchName().str()); 23f09cf34dSArchibald Elliott EXPECT_EQ("", T.getVendorName().str()); 24f09cf34dSArchibald Elliott EXPECT_EQ("", T.getOSName().str()); 25f09cf34dSArchibald Elliott EXPECT_EQ("", T.getEnvironmentName().str()); 26f09cf34dSArchibald Elliott 27f09cf34dSArchibald Elliott T = Triple("-"); 28f09cf34dSArchibald Elliott EXPECT_EQ("", T.getArchName().str()); 29f09cf34dSArchibald Elliott EXPECT_EQ("", T.getVendorName().str()); 30f09cf34dSArchibald Elliott EXPECT_EQ("", T.getOSName().str()); 31f09cf34dSArchibald Elliott EXPECT_EQ("", T.getEnvironmentName().str()); 32f09cf34dSArchibald Elliott 33f09cf34dSArchibald Elliott T = Triple("--"); 34f09cf34dSArchibald Elliott EXPECT_EQ("", T.getArchName().str()); 35f09cf34dSArchibald Elliott EXPECT_EQ("", T.getVendorName().str()); 36f09cf34dSArchibald Elliott EXPECT_EQ("", T.getOSName().str()); 37f09cf34dSArchibald Elliott EXPECT_EQ("", T.getEnvironmentName().str()); 38f09cf34dSArchibald Elliott 39f09cf34dSArchibald Elliott T = Triple("---"); 40f09cf34dSArchibald Elliott EXPECT_EQ("", T.getArchName().str()); 41f09cf34dSArchibald Elliott EXPECT_EQ("", T.getVendorName().str()); 42f09cf34dSArchibald Elliott EXPECT_EQ("", T.getOSName().str()); 43f09cf34dSArchibald Elliott EXPECT_EQ("", T.getEnvironmentName().str()); 44f09cf34dSArchibald Elliott 45f09cf34dSArchibald Elliott T = Triple("----"); 46f09cf34dSArchibald Elliott EXPECT_EQ("", T.getArchName().str()); 47f09cf34dSArchibald Elliott EXPECT_EQ("", T.getVendorName().str()); 48f09cf34dSArchibald Elliott EXPECT_EQ("", T.getOSName().str()); 49f09cf34dSArchibald Elliott EXPECT_EQ("-", T.getEnvironmentName().str()); 50f09cf34dSArchibald Elliott 51f09cf34dSArchibald Elliott T = Triple("a"); 52f09cf34dSArchibald Elliott EXPECT_EQ("a", T.getArchName().str()); 53f09cf34dSArchibald Elliott EXPECT_EQ("", T.getVendorName().str()); 54f09cf34dSArchibald Elliott EXPECT_EQ("", T.getOSName().str()); 55f09cf34dSArchibald Elliott EXPECT_EQ("", T.getEnvironmentName().str()); 56f09cf34dSArchibald Elliott 57f09cf34dSArchibald Elliott T = Triple("a-b"); 58f09cf34dSArchibald Elliott EXPECT_EQ("a", T.getArchName().str()); 59f09cf34dSArchibald Elliott EXPECT_EQ("b", T.getVendorName().str()); 60f09cf34dSArchibald Elliott EXPECT_EQ("", T.getOSName().str()); 61f09cf34dSArchibald Elliott EXPECT_EQ("", T.getEnvironmentName().str()); 62f09cf34dSArchibald Elliott 63f09cf34dSArchibald Elliott T = Triple("a-b-c"); 64f09cf34dSArchibald Elliott EXPECT_EQ("a", T.getArchName().str()); 65f09cf34dSArchibald Elliott EXPECT_EQ("b", T.getVendorName().str()); 66f09cf34dSArchibald Elliott EXPECT_EQ("c", T.getOSName().str()); 67f09cf34dSArchibald Elliott EXPECT_EQ("", T.getEnvironmentName().str()); 68f09cf34dSArchibald Elliott 69f09cf34dSArchibald Elliott T = Triple("a-b-c-d"); 70f09cf34dSArchibald Elliott EXPECT_EQ("a", T.getArchName().str()); 71f09cf34dSArchibald Elliott EXPECT_EQ("b", T.getVendorName().str()); 72f09cf34dSArchibald Elliott EXPECT_EQ("c", T.getOSName().str()); 73f09cf34dSArchibald Elliott EXPECT_EQ("d", T.getEnvironmentName().str()); 74f09cf34dSArchibald Elliott } 75f09cf34dSArchibald Elliott 76f09cf34dSArchibald Elliott TEST(TripleTest, ParsedIDs) { 77f09cf34dSArchibald Elliott Triple T; 78f09cf34dSArchibald Elliott 79f09cf34dSArchibald Elliott T = Triple("i386-apple-darwin"); 80f09cf34dSArchibald Elliott EXPECT_EQ(Triple::x86, T.getArch()); 81f09cf34dSArchibald Elliott EXPECT_EQ(Triple::Apple, T.getVendor()); 82f09cf34dSArchibald Elliott EXPECT_EQ(Triple::Darwin, T.getOS()); 83f09cf34dSArchibald Elliott EXPECT_EQ(Triple::UnknownEnvironment, T.getEnvironment()); 84f09cf34dSArchibald Elliott 85f09cf34dSArchibald Elliott T = Triple("i386-pc-elfiamcu"); 86f09cf34dSArchibald Elliott EXPECT_EQ(Triple::x86, T.getArch()); 87f09cf34dSArchibald Elliott EXPECT_EQ(Triple::PC, T.getVendor()); 88f09cf34dSArchibald Elliott EXPECT_EQ(Triple::ELFIAMCU, T.getOS()); 89f09cf34dSArchibald Elliott EXPECT_EQ(Triple::UnknownEnvironment, T.getEnvironment()); 90f09cf34dSArchibald Elliott 91f09cf34dSArchibald Elliott T = Triple("i386-pc-hurd-gnu"); 92f09cf34dSArchibald Elliott EXPECT_EQ(Triple::x86, T.getArch()); 93f09cf34dSArchibald Elliott EXPECT_EQ(Triple::PC, T.getVendor()); 94f09cf34dSArchibald Elliott EXPECT_EQ(Triple::Hurd, T.getOS()); 95f09cf34dSArchibald Elliott EXPECT_EQ(Triple::GNU, T.getEnvironment()); 96f09cf34dSArchibald Elliott 97387b37afSMichał Górny T = Triple("i686-pc-linux-gnu"); 98387b37afSMichał Górny EXPECT_EQ(Triple::x86, T.getArch()); 99387b37afSMichał Górny EXPECT_EQ(Triple::PC, T.getVendor()); 100387b37afSMichał Górny EXPECT_EQ(Triple::Linux, T.getOS()); 101387b37afSMichał Górny EXPECT_EQ(Triple::GNU, T.getEnvironment()); 102387b37afSMichał Górny EXPECT_FALSE(T.isTime64ABI()); 103387b37afSMichał Górny 104f09cf34dSArchibald Elliott T = Triple("x86_64-pc-linux-gnu"); 105f09cf34dSArchibald Elliott EXPECT_EQ(Triple::x86_64, T.getArch()); 106f09cf34dSArchibald Elliott EXPECT_EQ(Triple::PC, T.getVendor()); 107f09cf34dSArchibald Elliott EXPECT_EQ(Triple::Linux, T.getOS()); 108f09cf34dSArchibald Elliott EXPECT_EQ(Triple::GNU, T.getEnvironment()); 109f09cf34dSArchibald Elliott 110f09cf34dSArchibald Elliott T = Triple("x86_64-pc-linux-musl"); 111f09cf34dSArchibald Elliott EXPECT_EQ(Triple::x86_64, T.getArch()); 112f09cf34dSArchibald Elliott EXPECT_EQ(Triple::PC, T.getVendor()); 113f09cf34dSArchibald Elliott EXPECT_EQ(Triple::Linux, T.getOS()); 114f09cf34dSArchibald Elliott EXPECT_EQ(Triple::Musl, T.getEnvironment()); 115f09cf34dSArchibald Elliott 116f09cf34dSArchibald Elliott T = Triple("x86_64-pc-linux-muslx32"); 117f09cf34dSArchibald Elliott EXPECT_EQ(Triple::x86_64, T.getArch()); 118f09cf34dSArchibald Elliott EXPECT_EQ(Triple::PC, T.getVendor()); 119f09cf34dSArchibald Elliott EXPECT_EQ(Triple::Linux, T.getOS()); 120f09cf34dSArchibald Elliott EXPECT_EQ(Triple::MuslX32, T.getEnvironment()); 121f09cf34dSArchibald Elliott 1224fffb040SSamuel Thibault T = Triple("x86_64-pc-hurd-gnu"); 1234fffb040SSamuel Thibault EXPECT_EQ(Triple::x86_64, T.getArch()); 1244fffb040SSamuel Thibault EXPECT_EQ(Triple::PC, T.getVendor()); 1254fffb040SSamuel Thibault EXPECT_EQ(Triple::Hurd, T.getOS()); 1264fffb040SSamuel Thibault EXPECT_EQ(Triple::GNU, T.getEnvironment()); 1274fffb040SSamuel Thibault 128f09cf34dSArchibald Elliott T = Triple("arm-unknown-linux-android16"); 129f09cf34dSArchibald Elliott EXPECT_EQ(Triple::arm, T.getArch()); 130f09cf34dSArchibald Elliott EXPECT_EQ(Triple::UnknownVendor, T.getVendor()); 131f09cf34dSArchibald Elliott EXPECT_EQ(Triple::Linux, T.getOS()); 132f09cf34dSArchibald Elliott EXPECT_EQ(Triple::Android, T.getEnvironment()); 133f09cf34dSArchibald Elliott 134f09cf34dSArchibald Elliott T = Triple("aarch64-unknown-linux-android21"); 135f09cf34dSArchibald Elliott EXPECT_EQ(Triple::aarch64, T.getArch()); 136f09cf34dSArchibald Elliott EXPECT_EQ(Triple::UnknownVendor, T.getVendor()); 137f09cf34dSArchibald Elliott EXPECT_EQ(Triple::Linux, T.getOS()); 138f09cf34dSArchibald Elliott EXPECT_EQ(Triple::Android, T.getEnvironment()); 139f09cf34dSArchibald Elliott 140f09cf34dSArchibald Elliott // PS4 has two spellings for the vendor. 141f09cf34dSArchibald Elliott T = Triple("x86_64-scei-ps4"); 142f09cf34dSArchibald Elliott EXPECT_EQ(Triple::x86_64, T.getArch()); 143f09cf34dSArchibald Elliott EXPECT_EQ(Triple::SCEI, T.getVendor()); 144f09cf34dSArchibald Elliott EXPECT_EQ(Triple::PS4, T.getOS()); 145f09cf34dSArchibald Elliott 146f09cf34dSArchibald Elliott T = Triple("x86_64-sie-ps4"); 147f09cf34dSArchibald Elliott EXPECT_EQ(Triple::x86_64, T.getArch()); 148f09cf34dSArchibald Elliott EXPECT_EQ(Triple::SCEI, T.getVendor()); 149f09cf34dSArchibald Elliott EXPECT_EQ(Triple::PS4, T.getOS()); 150f09cf34dSArchibald Elliott 151f09cf34dSArchibald Elliott T = Triple("x86_64-sie-ps5"); 152f09cf34dSArchibald Elliott EXPECT_EQ(Triple::x86_64, T.getArch()); 153f09cf34dSArchibald Elliott EXPECT_EQ(Triple::SCEI, T.getVendor()); 154f09cf34dSArchibald Elliott EXPECT_EQ(Triple::PS5, T.getOS()); 155f09cf34dSArchibald Elliott 156f09cf34dSArchibald Elliott T = Triple("powerpc-ibm-aix"); 157f09cf34dSArchibald Elliott EXPECT_EQ(Triple::ppc, T.getArch()); 158f09cf34dSArchibald Elliott EXPECT_EQ(Triple::IBM, T.getVendor()); 159f09cf34dSArchibald Elliott EXPECT_EQ(Triple::AIX, T.getOS()); 160f09cf34dSArchibald Elliott EXPECT_EQ(Triple::UnknownEnvironment, T.getEnvironment()); 161f09cf34dSArchibald Elliott 162f09cf34dSArchibald Elliott T = Triple("powerpc64-ibm-aix"); 163f09cf34dSArchibald Elliott EXPECT_EQ(Triple::ppc64, T.getArch()); 164f09cf34dSArchibald Elliott EXPECT_EQ(Triple::IBM, T.getVendor()); 165f09cf34dSArchibald Elliott EXPECT_EQ(Triple::AIX, T.getOS()); 166f09cf34dSArchibald Elliott EXPECT_EQ(Triple::UnknownEnvironment, T.getEnvironment()); 167f09cf34dSArchibald Elliott 168f09cf34dSArchibald Elliott T = Triple("powerpc-dunno-notsure"); 169f09cf34dSArchibald Elliott EXPECT_EQ(Triple::ppc, T.getArch()); 170f09cf34dSArchibald Elliott EXPECT_EQ(Triple::UnknownVendor, T.getVendor()); 171f09cf34dSArchibald Elliott EXPECT_EQ(Triple::UnknownOS, T.getOS()); 172f09cf34dSArchibald Elliott EXPECT_EQ(Triple::UnknownEnvironment, T.getEnvironment()); 173f09cf34dSArchibald Elliott 174f09cf34dSArchibald Elliott T = Triple("powerpcspe-unknown-freebsd"); 175f09cf34dSArchibald Elliott EXPECT_EQ(Triple::ppc, T.getArch()); 176f09cf34dSArchibald Elliott EXPECT_EQ(Triple::PPCSubArch_spe, T.getSubArch()); 177f09cf34dSArchibald Elliott EXPECT_EQ(Triple::UnknownVendor, T.getVendor()); 178f09cf34dSArchibald Elliott EXPECT_EQ(Triple::FreeBSD, T.getOS()); 179f09cf34dSArchibald Elliott EXPECT_EQ(Triple::UnknownEnvironment, T.getEnvironment()); 180f09cf34dSArchibald Elliott 181f09cf34dSArchibald Elliott T = Triple("s390x-ibm-zos"); 182f09cf34dSArchibald Elliott EXPECT_EQ(Triple::systemz, T.getArch()); 183f09cf34dSArchibald Elliott EXPECT_EQ(Triple::IBM, T.getVendor()); 184f09cf34dSArchibald Elliott EXPECT_EQ(Triple::ZOS, T.getOS()); 185f09cf34dSArchibald Elliott EXPECT_EQ(Triple::UnknownEnvironment, T.getEnvironment()); 186f09cf34dSArchibald Elliott 187f09cf34dSArchibald Elliott T = Triple("systemz-ibm-zos"); 188f09cf34dSArchibald Elliott EXPECT_EQ(Triple::systemz, T.getArch()); 189f09cf34dSArchibald Elliott EXPECT_EQ(Triple::IBM, T.getVendor()); 190f09cf34dSArchibald Elliott EXPECT_EQ(Triple::ZOS, T.getOS()); 191f09cf34dSArchibald Elliott EXPECT_EQ(Triple::UnknownEnvironment, T.getEnvironment()); 192f09cf34dSArchibald Elliott 193f09cf34dSArchibald Elliott T = Triple("arm-none-none-eabi"); 194f09cf34dSArchibald Elliott EXPECT_EQ(Triple::arm, T.getArch()); 195f09cf34dSArchibald Elliott EXPECT_EQ(Triple::UnknownVendor, T.getVendor()); 196f09cf34dSArchibald Elliott EXPECT_EQ(Triple::UnknownOS, T.getOS()); 197f09cf34dSArchibald Elliott EXPECT_EQ(Triple::EABI, T.getEnvironment()); 198387b37afSMichał Górny EXPECT_FALSE(T.isHardFloatABI()); 199387b37afSMichał Górny 200387b37afSMichał Górny T = Triple("arm-none-none-eabihf"); 201387b37afSMichał Górny EXPECT_EQ(Triple::arm, T.getArch()); 202387b37afSMichał Górny EXPECT_EQ(Triple::UnknownVendor, T.getVendor()); 203387b37afSMichał Górny EXPECT_EQ(Triple::UnknownOS, T.getOS()); 204387b37afSMichał Górny EXPECT_EQ(Triple::EABIHF, T.getEnvironment()); 205387b37afSMichał Górny EXPECT_TRUE(T.isHardFloatABI()); 206f09cf34dSArchibald Elliott 207f09cf34dSArchibald Elliott T = Triple("arm-none-linux-musleabi"); 208f09cf34dSArchibald Elliott EXPECT_EQ(Triple::arm, T.getArch()); 209f09cf34dSArchibald Elliott EXPECT_EQ(Triple::UnknownVendor, T.getVendor()); 210f09cf34dSArchibald Elliott EXPECT_EQ(Triple::Linux, T.getOS()); 211f09cf34dSArchibald Elliott EXPECT_EQ(Triple::MuslEABI, T.getEnvironment()); 212387b37afSMichał Górny EXPECT_FALSE(T.isHardFloatABI()); 213387b37afSMichał Górny 214387b37afSMichał Górny T = Triple("arm-none-linux-musleabihf"); 215387b37afSMichał Górny EXPECT_EQ(Triple::arm, T.getArch()); 216387b37afSMichał Górny EXPECT_EQ(Triple::UnknownVendor, T.getVendor()); 217387b37afSMichał Górny EXPECT_EQ(Triple::Linux, T.getOS()); 218387b37afSMichał Górny EXPECT_EQ(Triple::MuslEABIHF, T.getEnvironment()); 219387b37afSMichał Górny EXPECT_TRUE(T.isHardFloatABI()); 220f09cf34dSArchibald Elliott 221f09cf34dSArchibald Elliott T = Triple("armv6hl-none-linux-gnueabi"); 222f09cf34dSArchibald Elliott EXPECT_EQ(Triple::arm, T.getArch()); 223f09cf34dSArchibald Elliott EXPECT_EQ(Triple::Linux, T.getOS()); 224f09cf34dSArchibald Elliott EXPECT_EQ(Triple::UnknownVendor, T.getVendor()); 225f09cf34dSArchibald Elliott EXPECT_EQ(Triple::GNUEABI, T.getEnvironment()); 226387b37afSMichał Górny EXPECT_FALSE(T.isTime64ABI()); 227387b37afSMichał Górny EXPECT_FALSE(T.isHardFloatABI()); 228f09cf34dSArchibald Elliott 229f09cf34dSArchibald Elliott T = Triple("armv7hl-none-linux-gnueabi"); 230f09cf34dSArchibald Elliott EXPECT_EQ(Triple::arm, T.getArch()); 231f09cf34dSArchibald Elliott EXPECT_EQ(Triple::Linux, T.getOS()); 232f09cf34dSArchibald Elliott EXPECT_EQ(Triple::UnknownVendor, T.getVendor()); 233f09cf34dSArchibald Elliott EXPECT_EQ(Triple::GNUEABI, T.getEnvironment()); 234387b37afSMichał Górny EXPECT_FALSE(T.isTime64ABI()); 235387b37afSMichał Górny EXPECT_FALSE(T.isHardFloatABI()); 236387b37afSMichał Górny 237387b37afSMichał Górny T = Triple("armv7hl-none-linux-gnueabihf"); 238387b37afSMichał Górny EXPECT_EQ(Triple::arm, T.getArch()); 239387b37afSMichał Górny EXPECT_EQ(Triple::Linux, T.getOS()); 240387b37afSMichał Górny EXPECT_EQ(Triple::UnknownVendor, T.getVendor()); 241387b37afSMichał Górny EXPECT_EQ(Triple::GNUEABIHF, T.getEnvironment()); 242387b37afSMichał Górny EXPECT_FALSE(T.isTime64ABI()); 243387b37afSMichał Górny EXPECT_TRUE(T.isHardFloatABI()); 244f09cf34dSArchibald Elliott 245f09cf34dSArchibald Elliott T = Triple("amdil-unknown-unknown"); 246f09cf34dSArchibald Elliott EXPECT_EQ(Triple::amdil, T.getArch()); 247f09cf34dSArchibald Elliott EXPECT_EQ(Triple::UnknownVendor, T.getVendor()); 248f09cf34dSArchibald Elliott EXPECT_EQ(Triple::UnknownOS, T.getOS()); 249f09cf34dSArchibald Elliott 250f09cf34dSArchibald Elliott T = Triple("amdil64-unknown-unknown"); 251f09cf34dSArchibald Elliott EXPECT_EQ(Triple::amdil64, T.getArch()); 252f09cf34dSArchibald Elliott EXPECT_EQ(Triple::UnknownVendor, T.getVendor()); 253f09cf34dSArchibald Elliott EXPECT_EQ(Triple::UnknownOS, T.getOS()); 254f09cf34dSArchibald Elliott 255f09cf34dSArchibald Elliott T = Triple("hsail-unknown-unknown"); 256f09cf34dSArchibald Elliott EXPECT_EQ(Triple::hsail, T.getArch()); 257f09cf34dSArchibald Elliott EXPECT_EQ(Triple::UnknownVendor, T.getVendor()); 258f09cf34dSArchibald Elliott EXPECT_EQ(Triple::UnknownOS, T.getOS()); 259f09cf34dSArchibald Elliott 260f09cf34dSArchibald Elliott T = Triple("hsail64-unknown-unknown"); 261f09cf34dSArchibald Elliott EXPECT_EQ(Triple::hsail64, T.getArch()); 262f09cf34dSArchibald Elliott EXPECT_EQ(Triple::UnknownVendor, T.getVendor()); 263f09cf34dSArchibald Elliott EXPECT_EQ(Triple::UnknownOS, T.getOS()); 264f09cf34dSArchibald Elliott 265f09cf34dSArchibald Elliott T = Triple("sparcel-unknown-unknown"); 266f09cf34dSArchibald Elliott EXPECT_EQ(Triple::sparcel, T.getArch()); 267f09cf34dSArchibald Elliott EXPECT_EQ(Triple::UnknownVendor, T.getVendor()); 268f09cf34dSArchibald Elliott EXPECT_EQ(Triple::UnknownOS, T.getOS()); 269f09cf34dSArchibald Elliott 270f09cf34dSArchibald Elliott T = Triple("spir-unknown-unknown"); 271f09cf34dSArchibald Elliott EXPECT_EQ(Triple::spir, T.getArch()); 272f09cf34dSArchibald Elliott EXPECT_EQ(Triple::UnknownVendor, T.getVendor()); 273f09cf34dSArchibald Elliott EXPECT_EQ(Triple::UnknownOS, T.getOS()); 274f09cf34dSArchibald Elliott 275f09cf34dSArchibald Elliott T = Triple("spir64-unknown-unknown"); 276f09cf34dSArchibald Elliott EXPECT_EQ(Triple::spir64, T.getArch()); 277f09cf34dSArchibald Elliott EXPECT_EQ(Triple::UnknownVendor, T.getVendor()); 278f09cf34dSArchibald Elliott EXPECT_EQ(Triple::UnknownOS, T.getOS()); 279f09cf34dSArchibald Elliott 280f09cf34dSArchibald Elliott T = Triple("spirv32-unknown-unknown"); 281f09cf34dSArchibald Elliott EXPECT_EQ(Triple::spirv32, T.getArch()); 282f09cf34dSArchibald Elliott EXPECT_EQ(Triple::NoSubArch, T.getSubArch()); 283f09cf34dSArchibald Elliott EXPECT_EQ(Triple::UnknownVendor, T.getVendor()); 284f09cf34dSArchibald Elliott EXPECT_EQ(Triple::UnknownOS, T.getOS()); 285f09cf34dSArchibald Elliott 286f09cf34dSArchibald Elliott T = Triple("spirv32v1.0-unknown-unknown"); 287f09cf34dSArchibald Elliott EXPECT_EQ(Triple::spirv32, T.getArch()); 288f09cf34dSArchibald Elliott EXPECT_EQ(Triple::SPIRVSubArch_v10, T.getSubArch()); 289f09cf34dSArchibald Elliott EXPECT_EQ(Triple::UnknownVendor, T.getVendor()); 290f09cf34dSArchibald Elliott EXPECT_EQ(Triple::UnknownOS, T.getOS()); 291f09cf34dSArchibald Elliott 292f09cf34dSArchibald Elliott T = Triple("spirv32v1.1-unknown-unknown"); 293f09cf34dSArchibald Elliott EXPECT_EQ(Triple::spirv32, T.getArch()); 294f09cf34dSArchibald Elliott EXPECT_EQ(Triple::SPIRVSubArch_v11, T.getSubArch()); 295f09cf34dSArchibald Elliott EXPECT_EQ(Triple::UnknownVendor, T.getVendor()); 296f09cf34dSArchibald Elliott EXPECT_EQ(Triple::UnknownOS, T.getOS()); 297f09cf34dSArchibald Elliott 298f09cf34dSArchibald Elliott T = Triple("spirv32v1.2-unknown-unknown"); 299f09cf34dSArchibald Elliott EXPECT_EQ(Triple::spirv32, T.getArch()); 300f09cf34dSArchibald Elliott EXPECT_EQ(Triple::SPIRVSubArch_v12, T.getSubArch()); 301f09cf34dSArchibald Elliott EXPECT_EQ(Triple::UnknownVendor, T.getVendor()); 302f09cf34dSArchibald Elliott EXPECT_EQ(Triple::UnknownOS, T.getOS()); 303f09cf34dSArchibald Elliott 304f09cf34dSArchibald Elliott T = Triple("spirv32v1.3-unknown-unknown"); 305f09cf34dSArchibald Elliott EXPECT_EQ(Triple::spirv32, T.getArch()); 306f09cf34dSArchibald Elliott EXPECT_EQ(Triple::SPIRVSubArch_v13, T.getSubArch()); 307f09cf34dSArchibald Elliott EXPECT_EQ(Triple::UnknownVendor, T.getVendor()); 308f09cf34dSArchibald Elliott EXPECT_EQ(Triple::UnknownOS, T.getOS()); 309f09cf34dSArchibald Elliott 310f09cf34dSArchibald Elliott T = Triple("spirv32v1.4-unknown-unknown"); 311f09cf34dSArchibald Elliott EXPECT_EQ(Triple::spirv32, T.getArch()); 312f09cf34dSArchibald Elliott EXPECT_EQ(Triple::SPIRVSubArch_v14, T.getSubArch()); 313f09cf34dSArchibald Elliott EXPECT_EQ(Triple::UnknownVendor, T.getVendor()); 314f09cf34dSArchibald Elliott EXPECT_EQ(Triple::UnknownOS, T.getOS()); 315f09cf34dSArchibald Elliott 316f09cf34dSArchibald Elliott T = Triple("spirv32v1.5-unknown-unknown"); 317f09cf34dSArchibald Elliott EXPECT_EQ(Triple::spirv32, T.getArch()); 318f09cf34dSArchibald Elliott EXPECT_EQ(Triple::SPIRVSubArch_v15, T.getSubArch()); 319f09cf34dSArchibald Elliott EXPECT_EQ(Triple::UnknownVendor, T.getVendor()); 320f09cf34dSArchibald Elliott EXPECT_EQ(Triple::UnknownOS, T.getOS()); 321f09cf34dSArchibald Elliott 322f09cf34dSArchibald Elliott T = Triple("spirv64-unknown-unknown"); 323f09cf34dSArchibald Elliott EXPECT_EQ(Triple::spirv64, T.getArch()); 324f09cf34dSArchibald Elliott EXPECT_EQ(Triple::NoSubArch, T.getSubArch()); 325f09cf34dSArchibald Elliott EXPECT_EQ(Triple::UnknownVendor, T.getVendor()); 326f09cf34dSArchibald Elliott EXPECT_EQ(Triple::UnknownOS, T.getOS()); 327f09cf34dSArchibald Elliott 328f09cf34dSArchibald Elliott T = Triple("spirv64v1.0-unknown-unknown"); 329f09cf34dSArchibald Elliott EXPECT_EQ(Triple::spirv64, T.getArch()); 330f09cf34dSArchibald Elliott EXPECT_EQ(Triple::SPIRVSubArch_v10, T.getSubArch()); 331f09cf34dSArchibald Elliott EXPECT_EQ(Triple::UnknownVendor, T.getVendor()); 332f09cf34dSArchibald Elliott EXPECT_EQ(Triple::UnknownOS, T.getOS()); 333f09cf34dSArchibald Elliott 334f09cf34dSArchibald Elliott T = Triple("spirv64v1.1-unknown-unknown"); 335f09cf34dSArchibald Elliott EXPECT_EQ(Triple::spirv64, T.getArch()); 336f09cf34dSArchibald Elliott EXPECT_EQ(Triple::SPIRVSubArch_v11, T.getSubArch()); 337f09cf34dSArchibald Elliott EXPECT_EQ(Triple::UnknownVendor, T.getVendor()); 338f09cf34dSArchibald Elliott EXPECT_EQ(Triple::UnknownOS, T.getOS()); 339f09cf34dSArchibald Elliott 340f09cf34dSArchibald Elliott T = Triple("spirv64v1.2-unknown-unknown"); 341f09cf34dSArchibald Elliott EXPECT_EQ(Triple::spirv64, T.getArch()); 342f09cf34dSArchibald Elliott EXPECT_EQ(Triple::SPIRVSubArch_v12, T.getSubArch()); 343f09cf34dSArchibald Elliott EXPECT_EQ(Triple::UnknownVendor, T.getVendor()); 344f09cf34dSArchibald Elliott EXPECT_EQ(Triple::UnknownOS, T.getOS()); 345f09cf34dSArchibald Elliott 346f09cf34dSArchibald Elliott T = Triple("spirv64v1.3-unknown-unknown"); 347f09cf34dSArchibald Elliott EXPECT_EQ(Triple::spirv64, T.getArch()); 348f09cf34dSArchibald Elliott EXPECT_EQ(Triple::SPIRVSubArch_v13, T.getSubArch()); 349f09cf34dSArchibald Elliott EXPECT_EQ(Triple::UnknownVendor, T.getVendor()); 350f09cf34dSArchibald Elliott EXPECT_EQ(Triple::UnknownOS, T.getOS()); 351f09cf34dSArchibald Elliott 352f09cf34dSArchibald Elliott T = Triple("spirv64v1.4-unknown-unknown"); 353f09cf34dSArchibald Elliott EXPECT_EQ(Triple::spirv64, T.getArch()); 354f09cf34dSArchibald Elliott EXPECT_EQ(Triple::SPIRVSubArch_v14, T.getSubArch()); 355f09cf34dSArchibald Elliott EXPECT_EQ(Triple::UnknownVendor, T.getVendor()); 356f09cf34dSArchibald Elliott EXPECT_EQ(Triple::UnknownOS, T.getOS()); 357f09cf34dSArchibald Elliott 358f09cf34dSArchibald Elliott T = Triple("spirv64v1.5-unknown-unknown"); 359f09cf34dSArchibald Elliott EXPECT_EQ(Triple::spirv64, T.getArch()); 360f09cf34dSArchibald Elliott EXPECT_EQ(Triple::SPIRVSubArch_v15, T.getSubArch()); 361f09cf34dSArchibald Elliott EXPECT_EQ(Triple::UnknownVendor, T.getVendor()); 362f09cf34dSArchibald Elliott EXPECT_EQ(Triple::UnknownOS, T.getOS()); 363f09cf34dSArchibald Elliott 364c21f48e5SNatalie Chouinard T = Triple("spirv-unknown-vulkan-pixel"); 36553b6a169SNathan Gauër EXPECT_EQ(Triple::spirv, T.getArch()); 36653b6a169SNathan Gauër EXPECT_EQ(Triple::NoSubArch, T.getSubArch()); 36753b6a169SNathan Gauër EXPECT_EQ(Triple::UnknownVendor, T.getVendor()); 368c21f48e5SNatalie Chouinard EXPECT_EQ(Triple::Vulkan, T.getOS()); 369c21f48e5SNatalie Chouinard EXPECT_EQ(VersionTuple(1, 2), T.getVulkanVersion()); 37053b6a169SNathan Gauër EXPECT_EQ(Triple::Pixel, T.getEnvironment()); 37153b6a169SNathan Gauër 372c21f48e5SNatalie Chouinard T = Triple("spirv-unknown-vulkan-vertex"); 37353b6a169SNathan Gauër EXPECT_EQ(Triple::spirv, T.getArch()); 37453b6a169SNathan Gauër EXPECT_EQ(Triple::NoSubArch, T.getSubArch()); 37553b6a169SNathan Gauër EXPECT_EQ(Triple::UnknownVendor, T.getVendor()); 376c21f48e5SNatalie Chouinard EXPECT_EQ(Triple::Vulkan, T.getOS()); 377c21f48e5SNatalie Chouinard EXPECT_EQ(VersionTuple(1, 2), T.getVulkanVersion()); 37853b6a169SNathan Gauër EXPECT_EQ(Triple::Vertex, T.getEnvironment()); 37953b6a169SNathan Gauër 380c21f48e5SNatalie Chouinard T = Triple("spirv-unknown-vulkan-geometry"); 38153b6a169SNathan Gauër EXPECT_EQ(Triple::spirv, T.getArch()); 38253b6a169SNathan Gauër EXPECT_EQ(Triple::NoSubArch, T.getSubArch()); 38353b6a169SNathan Gauër EXPECT_EQ(Triple::UnknownVendor, T.getVendor()); 384c21f48e5SNatalie Chouinard EXPECT_EQ(Triple::Vulkan, T.getOS()); 385c21f48e5SNatalie Chouinard EXPECT_EQ(VersionTuple(1, 2), T.getVulkanVersion()); 38653b6a169SNathan Gauër EXPECT_EQ(Triple::Geometry, T.getEnvironment()); 38753b6a169SNathan Gauër 388c21f48e5SNatalie Chouinard T = Triple("spirv-unknown-vulkan-library"); 38953b6a169SNathan Gauër EXPECT_EQ(Triple::spirv, T.getArch()); 39053b6a169SNathan Gauër EXPECT_EQ(Triple::NoSubArch, T.getSubArch()); 39153b6a169SNathan Gauër EXPECT_EQ(Triple::UnknownVendor, T.getVendor()); 392c21f48e5SNatalie Chouinard EXPECT_EQ(Triple::Vulkan, T.getOS()); 393c21f48e5SNatalie Chouinard EXPECT_EQ(VersionTuple(1, 2), T.getVulkanVersion()); 39453b6a169SNathan Gauër EXPECT_EQ(Triple::Library, T.getEnvironment()); 39553b6a169SNathan Gauër 396c21f48e5SNatalie Chouinard T = Triple("spirv-unknown-vulkan-raygeneration"); 39753b6a169SNathan Gauër EXPECT_EQ(Triple::spirv, T.getArch()); 39853b6a169SNathan Gauër EXPECT_EQ(Triple::NoSubArch, T.getSubArch()); 39953b6a169SNathan Gauër EXPECT_EQ(Triple::UnknownVendor, T.getVendor()); 400c21f48e5SNatalie Chouinard EXPECT_EQ(Triple::Vulkan, T.getOS()); 401c21f48e5SNatalie Chouinard EXPECT_EQ(VersionTuple(1, 2), T.getVulkanVersion()); 40253b6a169SNathan Gauër EXPECT_EQ(Triple::RayGeneration, T.getEnvironment()); 40353b6a169SNathan Gauër 404c21f48e5SNatalie Chouinard T = Triple("spirv-unknown-vulkan-intersection"); 40553b6a169SNathan Gauër EXPECT_EQ(Triple::spirv, T.getArch()); 40653b6a169SNathan Gauër EXPECT_EQ(Triple::NoSubArch, T.getSubArch()); 40753b6a169SNathan Gauër EXPECT_EQ(Triple::UnknownVendor, T.getVendor()); 408c21f48e5SNatalie Chouinard EXPECT_EQ(Triple::Vulkan, T.getOS()); 409c21f48e5SNatalie Chouinard EXPECT_EQ(VersionTuple(1, 2), T.getVulkanVersion()); 41053b6a169SNathan Gauër EXPECT_EQ(Triple::Intersection, T.getEnvironment()); 41153b6a169SNathan Gauër 412c21f48e5SNatalie Chouinard T = Triple("spirv-unknown-vulkan-anyhit"); 41353b6a169SNathan Gauër EXPECT_EQ(Triple::spirv, T.getArch()); 41453b6a169SNathan Gauër EXPECT_EQ(Triple::NoSubArch, T.getSubArch()); 41553b6a169SNathan Gauër EXPECT_EQ(Triple::UnknownVendor, T.getVendor()); 416c21f48e5SNatalie Chouinard EXPECT_EQ(Triple::Vulkan, T.getOS()); 417c21f48e5SNatalie Chouinard EXPECT_EQ(VersionTuple(1, 2), T.getVulkanVersion()); 41853b6a169SNathan Gauër EXPECT_EQ(Triple::AnyHit, T.getEnvironment()); 41953b6a169SNathan Gauër 420c21f48e5SNatalie Chouinard T = Triple("spirv-unknown-vulkan-closesthit"); 42153b6a169SNathan Gauër EXPECT_EQ(Triple::spirv, T.getArch()); 42253b6a169SNathan Gauër EXPECT_EQ(Triple::NoSubArch, T.getSubArch()); 42353b6a169SNathan Gauër EXPECT_EQ(Triple::UnknownVendor, T.getVendor()); 424c21f48e5SNatalie Chouinard EXPECT_EQ(Triple::Vulkan, T.getOS()); 425c21f48e5SNatalie Chouinard EXPECT_EQ(VersionTuple(1, 2), T.getVulkanVersion()); 42653b6a169SNathan Gauër EXPECT_EQ(Triple::ClosestHit, T.getEnvironment()); 42753b6a169SNathan Gauër 428c21f48e5SNatalie Chouinard T = Triple("spirv-unknown-vulkan-miss"); 42953b6a169SNathan Gauër EXPECT_EQ(Triple::spirv, T.getArch()); 43053b6a169SNathan Gauër EXPECT_EQ(Triple::NoSubArch, T.getSubArch()); 43153b6a169SNathan Gauër EXPECT_EQ(Triple::UnknownVendor, T.getVendor()); 432c21f48e5SNatalie Chouinard EXPECT_EQ(Triple::Vulkan, T.getOS()); 433c21f48e5SNatalie Chouinard EXPECT_EQ(VersionTuple(1, 2), T.getVulkanVersion()); 43453b6a169SNathan Gauër EXPECT_EQ(Triple::Miss, T.getEnvironment()); 43553b6a169SNathan Gauër 436c21f48e5SNatalie Chouinard T = Triple("spirv-unknown-vulkan-callable"); 43753b6a169SNathan Gauër EXPECT_EQ(Triple::spirv, T.getArch()); 43853b6a169SNathan Gauër EXPECT_EQ(Triple::NoSubArch, T.getSubArch()); 43953b6a169SNathan Gauër EXPECT_EQ(Triple::UnknownVendor, T.getVendor()); 440c21f48e5SNatalie Chouinard EXPECT_EQ(Triple::Vulkan, T.getOS()); 441c21f48e5SNatalie Chouinard EXPECT_EQ(VersionTuple(1, 2), T.getVulkanVersion()); 44253b6a169SNathan Gauër EXPECT_EQ(Triple::Callable, T.getEnvironment()); 44353b6a169SNathan Gauër 444c21f48e5SNatalie Chouinard T = Triple("spirv-unknown-vulkan-mesh"); 44553b6a169SNathan Gauër EXPECT_EQ(Triple::spirv, T.getArch()); 44653b6a169SNathan Gauër EXPECT_EQ(Triple::NoSubArch, T.getSubArch()); 44753b6a169SNathan Gauër EXPECT_EQ(Triple::UnknownVendor, T.getVendor()); 448c21f48e5SNatalie Chouinard EXPECT_EQ(Triple::Vulkan, T.getOS()); 449c21f48e5SNatalie Chouinard EXPECT_EQ(VersionTuple(1, 2), T.getVulkanVersion()); 45053b6a169SNathan Gauër EXPECT_EQ(Triple::Mesh, T.getEnvironment()); 45153b6a169SNathan Gauër 452c21f48e5SNatalie Chouinard T = Triple("spirv-unknown-vulkan-amplification"); 45353b6a169SNathan Gauër EXPECT_EQ(Triple::spirv, T.getArch()); 45453b6a169SNathan Gauër EXPECT_EQ(Triple::NoSubArch, T.getSubArch()); 45553b6a169SNathan Gauër EXPECT_EQ(Triple::UnknownVendor, T.getVendor()); 456c21f48e5SNatalie Chouinard EXPECT_EQ(Triple::Vulkan, T.getOS()); 457c21f48e5SNatalie Chouinard EXPECT_EQ(VersionTuple(1, 2), T.getVulkanVersion()); 45853b6a169SNathan Gauër EXPECT_EQ(Triple::Amplification, T.getEnvironment()); 45953b6a169SNathan Gauër 460c21f48e5SNatalie Chouinard T = Triple("spirv1.5-unknown-vulkan1.2-compute"); 46153b6a169SNathan Gauër EXPECT_EQ(Triple::spirv, T.getArch()); 46253b6a169SNathan Gauër EXPECT_EQ(Triple::SPIRVSubArch_v15, T.getSubArch()); 46353b6a169SNathan Gauër EXPECT_EQ(Triple::UnknownVendor, T.getVendor()); 464c21f48e5SNatalie Chouinard EXPECT_EQ(Triple::Vulkan, T.getOS()); 465c21f48e5SNatalie Chouinard EXPECT_EQ(VersionTuple(1, 2), T.getVulkanVersion()); 466c21f48e5SNatalie Chouinard EXPECT_EQ(Triple::Compute, T.getEnvironment()); 467c21f48e5SNatalie Chouinard 468c21f48e5SNatalie Chouinard T = Triple("spirv1.6-unknown-vulkan1.3-compute"); 469c21f48e5SNatalie Chouinard EXPECT_EQ(Triple::spirv, T.getArch()); 470c21f48e5SNatalie Chouinard EXPECT_EQ(Triple::SPIRVSubArch_v16, T.getSubArch()); 471c21f48e5SNatalie Chouinard EXPECT_EQ(Triple::UnknownVendor, T.getVendor()); 472c21f48e5SNatalie Chouinard EXPECT_EQ(Triple::Vulkan, T.getOS()); 473c21f48e5SNatalie Chouinard EXPECT_EQ(VersionTuple(1, 3), T.getVulkanVersion()); 47453b6a169SNathan Gauër EXPECT_EQ(Triple::Compute, T.getEnvironment()); 47553b6a169SNathan Gauër 476665af09aSXiang Li T = Triple("dxilv1.0--shadermodel6.0-pixel"); 477665af09aSXiang Li EXPECT_EQ(Triple::dxil, T.getArch()); 478665af09aSXiang Li EXPECT_EQ(Triple::DXILSubArch_v1_0, T.getSubArch()); 479665af09aSXiang Li EXPECT_EQ(Triple::UnknownVendor, T.getVendor()); 480665af09aSXiang Li EXPECT_EQ(Triple::ShaderModel, T.getOS()); 481665af09aSXiang Li EXPECT_EQ(VersionTuple(1, 0), T.getDXILVersion()); 482665af09aSXiang Li EXPECT_EQ(Triple::Pixel, T.getEnvironment()); 483665af09aSXiang Li 484665af09aSXiang Li T = Triple("dxilv1.1--shadermodel6.1-vertex"); 485665af09aSXiang Li EXPECT_EQ(Triple::dxil, T.getArch()); 486665af09aSXiang Li EXPECT_EQ(Triple::DXILSubArch_v1_1, T.getSubArch()); 487665af09aSXiang Li EXPECT_EQ(Triple::UnknownVendor, T.getVendor()); 488665af09aSXiang Li EXPECT_EQ(Triple::ShaderModel, T.getOS()); 489665af09aSXiang Li EXPECT_EQ(VersionTuple(1, 1), T.getDXILVersion()); 490665af09aSXiang Li EXPECT_EQ(Triple::Vertex, T.getEnvironment()); 491665af09aSXiang Li 492665af09aSXiang Li T = Triple("dxilv1.2--shadermodel6.2-geometry"); 493665af09aSXiang Li EXPECT_EQ(Triple::dxil, T.getArch()); 494665af09aSXiang Li EXPECT_EQ(Triple::DXILSubArch_v1_2, T.getSubArch()); 495665af09aSXiang Li EXPECT_EQ(Triple::UnknownVendor, T.getVendor()); 496665af09aSXiang Li EXPECT_EQ(Triple::ShaderModel, T.getOS()); 497665af09aSXiang Li EXPECT_EQ(VersionTuple(1, 2), T.getDXILVersion()); 498665af09aSXiang Li EXPECT_EQ(Triple::Geometry, T.getEnvironment()); 499665af09aSXiang Li 500665af09aSXiang Li T = Triple("dxilv1.3--shadermodel6.3-library"); 501665af09aSXiang Li EXPECT_EQ(Triple::dxil, T.getArch()); 502665af09aSXiang Li EXPECT_EQ(Triple::DXILSubArch_v1_3, T.getSubArch()); 503665af09aSXiang Li EXPECT_EQ(Triple::UnknownVendor, T.getVendor()); 504665af09aSXiang Li EXPECT_EQ(Triple::ShaderModel, T.getOS()); 505665af09aSXiang Li EXPECT_EQ(VersionTuple(1, 3), T.getDXILVersion()); 506665af09aSXiang Li EXPECT_EQ(Triple::Library, T.getEnvironment()); 507665af09aSXiang Li 508665af09aSXiang Li T = Triple("dxilv1.4--shadermodel6.4-hull"); 509665af09aSXiang Li EXPECT_EQ(Triple::dxil, T.getArch()); 510665af09aSXiang Li EXPECT_EQ(Triple::DXILSubArch_v1_4, T.getSubArch()); 511665af09aSXiang Li EXPECT_EQ(Triple::UnknownVendor, T.getVendor()); 512665af09aSXiang Li EXPECT_EQ(Triple::ShaderModel, T.getOS()); 513665af09aSXiang Li EXPECT_EQ(VersionTuple(1, 4), T.getDXILVersion()); 514665af09aSXiang Li EXPECT_EQ(Triple::Hull, T.getEnvironment()); 515665af09aSXiang Li 516665af09aSXiang Li T = Triple("dxilv1.5--shadermodel6.5-domain"); 517665af09aSXiang Li EXPECT_EQ(Triple::dxil, T.getArch()); 518665af09aSXiang Li EXPECT_EQ(Triple::DXILSubArch_v1_5, T.getSubArch()); 519665af09aSXiang Li EXPECT_EQ(Triple::UnknownVendor, T.getVendor()); 520665af09aSXiang Li EXPECT_EQ(Triple::ShaderModel, T.getOS()); 521665af09aSXiang Li EXPECT_EQ(VersionTuple(1, 5), T.getDXILVersion()); 522665af09aSXiang Li EXPECT_EQ(Triple::Domain, T.getEnvironment()); 523665af09aSXiang Li 524665af09aSXiang Li T = Triple("dxilv1.6--shadermodel6.6-compute"); 525665af09aSXiang Li EXPECT_EQ(Triple::dxil, T.getArch()); 526665af09aSXiang Li EXPECT_EQ(Triple::DXILSubArch_v1_6, T.getSubArch()); 527665af09aSXiang Li EXPECT_EQ(Triple::UnknownVendor, T.getVendor()); 528665af09aSXiang Li EXPECT_EQ(Triple::ShaderModel, T.getOS()); 529665af09aSXiang Li EXPECT_EQ(VersionTuple(1, 6), T.getDXILVersion()); 530665af09aSXiang Li EXPECT_EQ(Triple::Compute, T.getEnvironment()); 531665af09aSXiang Li 532665af09aSXiang Li T = Triple("dxilv1.7-unknown-shadermodel6.7-mesh"); 533665af09aSXiang Li EXPECT_EQ(Triple::dxil, T.getArch()); 534665af09aSXiang Li EXPECT_EQ(Triple::DXILSubArch_v1_7, T.getSubArch()); 535665af09aSXiang Li EXPECT_EQ(Triple::UnknownVendor, T.getVendor()); 536665af09aSXiang Li EXPECT_EQ(Triple::ShaderModel, T.getOS()); 537665af09aSXiang Li EXPECT_EQ(VersionTuple(1, 7), T.getDXILVersion()); 538665af09aSXiang Li EXPECT_EQ(Triple::Mesh, T.getEnvironment()); 539665af09aSXiang Li 540665af09aSXiang Li T = Triple("dxilv1.8-unknown-shadermodel6.8-amplification"); 541665af09aSXiang Li EXPECT_EQ(Triple::dxil, T.getArch()); 542665af09aSXiang Li EXPECT_EQ(Triple::DXILSubArch_v1_8, T.getSubArch()); 543665af09aSXiang Li EXPECT_EQ(Triple::UnknownVendor, T.getVendor()); 544665af09aSXiang Li EXPECT_EQ(Triple::ShaderModel, T.getOS()); 545665af09aSXiang Li EXPECT_EQ(VersionTuple(1, 8), T.getDXILVersion()); 546665af09aSXiang Li EXPECT_EQ(Triple::Amplification, T.getEnvironment()); 547665af09aSXiang Li 548665af09aSXiang Li T = Triple("dxilv1.8-unknown-shadermodel6.15-library"); 549665af09aSXiang Li EXPECT_EQ(Triple::dxil, T.getArch()); 550665af09aSXiang Li EXPECT_EQ(Triple::DXILSubArch_v1_8, T.getSubArch()); 551665af09aSXiang Li EXPECT_EQ(Triple::UnknownVendor, T.getVendor()); 552665af09aSXiang Li EXPECT_EQ(Triple::ShaderModel, T.getOS()); 553665af09aSXiang Li EXPECT_EQ(VersionTuple(1, 8), T.getDXILVersion()); 554665af09aSXiang Li 555f09cf34dSArchibald Elliott T = Triple("x86_64-unknown-fuchsia"); 556f09cf34dSArchibald Elliott EXPECT_EQ(Triple::x86_64, T.getArch()); 557f09cf34dSArchibald Elliott EXPECT_EQ(Triple::UnknownVendor, T.getVendor()); 558f09cf34dSArchibald Elliott EXPECT_EQ(Triple::Fuchsia, T.getOS()); 559f09cf34dSArchibald Elliott EXPECT_EQ(Triple::UnknownEnvironment, T.getEnvironment()); 560f09cf34dSArchibald Elliott 561f09cf34dSArchibald Elliott T = Triple("x86_64-unknown-hermit"); 562f09cf34dSArchibald Elliott EXPECT_EQ(Triple::x86_64, T.getArch()); 563f09cf34dSArchibald Elliott EXPECT_EQ(Triple::UnknownVendor, T.getVendor()); 564f09cf34dSArchibald Elliott EXPECT_EQ(Triple::HermitCore, T.getOS()); 565f09cf34dSArchibald Elliott EXPECT_EQ(Triple::UnknownEnvironment, T.getEnvironment()); 566f09cf34dSArchibald Elliott 56730198bd7Sprabhukr T = Triple("x86_64-unknown-uefi"); 56830198bd7Sprabhukr EXPECT_EQ(Triple::x86_64, T.getArch()); 56930198bd7Sprabhukr EXPECT_EQ(Triple::UnknownVendor, T.getVendor()); 57030198bd7Sprabhukr EXPECT_EQ(Triple::UEFI, T.getOS()); 57130198bd7Sprabhukr EXPECT_EQ(Triple::UnknownEnvironment, T.getEnvironment()); 572720e3bacSprabhukr EXPECT_EQ(Triple::COFF, T.getObjectFormat()); 57330198bd7Sprabhukr 574f09cf34dSArchibald Elliott T = Triple("wasm32-unknown-unknown"); 575f09cf34dSArchibald Elliott EXPECT_EQ(Triple::wasm32, T.getArch()); 576f09cf34dSArchibald Elliott EXPECT_EQ(Triple::UnknownVendor, T.getVendor()); 577f09cf34dSArchibald Elliott EXPECT_EQ(Triple::UnknownOS, T.getOS()); 578f09cf34dSArchibald Elliott EXPECT_EQ(Triple::UnknownEnvironment, T.getEnvironment()); 579f09cf34dSArchibald Elliott 580f09cf34dSArchibald Elliott T = Triple("wasm32-unknown-wasi"); 581f09cf34dSArchibald Elliott EXPECT_EQ(Triple::wasm32, T.getArch()); 582f09cf34dSArchibald Elliott EXPECT_EQ(Triple::UnknownVendor, T.getVendor()); 583f09cf34dSArchibald Elliott EXPECT_EQ(Triple::WASI, T.getOS()); 584f09cf34dSArchibald Elliott EXPECT_EQ(Triple::UnknownEnvironment, T.getEnvironment()); 585f09cf34dSArchibald Elliott 586f09cf34dSArchibald Elliott T = Triple("wasm64-unknown-unknown"); 587f09cf34dSArchibald Elliott EXPECT_EQ(Triple::wasm64, T.getArch()); 588f09cf34dSArchibald Elliott EXPECT_EQ(Triple::UnknownVendor, T.getVendor()); 589f09cf34dSArchibald Elliott EXPECT_EQ(Triple::UnknownOS, T.getOS()); 590f09cf34dSArchibald Elliott EXPECT_EQ(Triple::UnknownEnvironment, T.getEnvironment()); 591f09cf34dSArchibald Elliott 592f09cf34dSArchibald Elliott T = Triple("wasm64-unknown-wasi"); 593f09cf34dSArchibald Elliott EXPECT_EQ(Triple::wasm64, T.getArch()); 594f09cf34dSArchibald Elliott EXPECT_EQ(Triple::UnknownVendor, T.getVendor()); 595f09cf34dSArchibald Elliott EXPECT_EQ(Triple::WASI, T.getOS()); 596f09cf34dSArchibald Elliott EXPECT_EQ(Triple::UnknownEnvironment, T.getEnvironment()); 597f09cf34dSArchibald Elliott 598f09cf34dSArchibald Elliott T = Triple("avr-unknown-unknown"); 599f09cf34dSArchibald Elliott EXPECT_EQ(Triple::avr, T.getArch()); 600f09cf34dSArchibald Elliott EXPECT_EQ(Triple::UnknownVendor, T.getVendor()); 601f09cf34dSArchibald Elliott EXPECT_EQ(Triple::UnknownOS, T.getOS()); 602f09cf34dSArchibald Elliott EXPECT_EQ(Triple::UnknownEnvironment, T.getEnvironment()); 603f09cf34dSArchibald Elliott 604f09cf34dSArchibald Elliott T = Triple("avr"); 605f09cf34dSArchibald Elliott EXPECT_EQ(Triple::avr, T.getArch()); 606f09cf34dSArchibald Elliott EXPECT_EQ(Triple::UnknownVendor, T.getVendor()); 607f09cf34dSArchibald Elliott EXPECT_EQ(Triple::UnknownOS, T.getOS()); 608f09cf34dSArchibald Elliott EXPECT_EQ(Triple::UnknownEnvironment, T.getEnvironment()); 609f09cf34dSArchibald Elliott 610f09cf34dSArchibald Elliott T = Triple("lanai-unknown-unknown"); 611f09cf34dSArchibald Elliott EXPECT_EQ(Triple::lanai, T.getArch()); 612f09cf34dSArchibald Elliott EXPECT_EQ(Triple::UnknownVendor, T.getVendor()); 613f09cf34dSArchibald Elliott EXPECT_EQ(Triple::UnknownOS, T.getOS()); 614f09cf34dSArchibald Elliott EXPECT_EQ(Triple::UnknownEnvironment, T.getEnvironment()); 615f09cf34dSArchibald Elliott 616f09cf34dSArchibald Elliott T = Triple("lanai"); 617f09cf34dSArchibald Elliott EXPECT_EQ(Triple::lanai, T.getArch()); 618f09cf34dSArchibald Elliott EXPECT_EQ(Triple::UnknownVendor, T.getVendor()); 619f09cf34dSArchibald Elliott EXPECT_EQ(Triple::UnknownOS, T.getOS()); 620f09cf34dSArchibald Elliott EXPECT_EQ(Triple::UnknownEnvironment, T.getEnvironment()); 621f09cf34dSArchibald Elliott 622f09cf34dSArchibald Elliott T = Triple("amdgcn-mesa-mesa3d"); 623f09cf34dSArchibald Elliott EXPECT_EQ(Triple::amdgcn, T.getArch()); 624f09cf34dSArchibald Elliott EXPECT_EQ(Triple::Mesa, T.getVendor()); 625f09cf34dSArchibald Elliott EXPECT_EQ(Triple::Mesa3D, T.getOS()); 626f09cf34dSArchibald Elliott EXPECT_EQ(Triple::UnknownEnvironment, T.getEnvironment()); 627f09cf34dSArchibald Elliott 628f09cf34dSArchibald Elliott T = Triple("amdgcn-amd-amdhsa"); 629f09cf34dSArchibald Elliott EXPECT_EQ(Triple::amdgcn, T.getArch()); 630f09cf34dSArchibald Elliott EXPECT_EQ(Triple::AMD, T.getVendor()); 631f09cf34dSArchibald Elliott EXPECT_EQ(Triple::AMDHSA, T.getOS()); 632f09cf34dSArchibald Elliott EXPECT_EQ(Triple::UnknownEnvironment, T.getEnvironment()); 633f09cf34dSArchibald Elliott 634f09cf34dSArchibald Elliott T = Triple("amdgcn-amd-amdpal"); 635f09cf34dSArchibald Elliott EXPECT_EQ(Triple::amdgcn, T.getArch()); 636f09cf34dSArchibald Elliott EXPECT_EQ(Triple::AMD, T.getVendor()); 637f09cf34dSArchibald Elliott EXPECT_EQ(Triple::AMDPAL, T.getOS()); 638f09cf34dSArchibald Elliott EXPECT_EQ(Triple::UnknownEnvironment, T.getEnvironment()); 639f09cf34dSArchibald Elliott 640f09cf34dSArchibald Elliott T = Triple("ve-unknown-linux"); 641f09cf34dSArchibald Elliott EXPECT_EQ(Triple::ve, T.getArch()); 642f09cf34dSArchibald Elliott EXPECT_EQ(Triple::UnknownVendor, T.getVendor()); 643f09cf34dSArchibald Elliott EXPECT_EQ(Triple::Linux, T.getOS()); 644f09cf34dSArchibald Elliott EXPECT_EQ(Triple::UnknownEnvironment, T.getEnvironment()); 645f09cf34dSArchibald Elliott 646f09cf34dSArchibald Elliott T = Triple("csky-unknown-unknown"); 647f09cf34dSArchibald Elliott EXPECT_EQ(Triple::csky, T.getArch()); 648f09cf34dSArchibald Elliott EXPECT_EQ(Triple::UnknownVendor, T.getVendor()); 649f09cf34dSArchibald Elliott EXPECT_EQ(Triple::UnknownOS, T.getOS()); 650f09cf34dSArchibald Elliott EXPECT_EQ(Triple::UnknownEnvironment, T.getEnvironment()); 651f09cf34dSArchibald Elliott 652f09cf34dSArchibald Elliott T = Triple("csky-unknown-linux"); 653f09cf34dSArchibald Elliott EXPECT_EQ(Triple::csky, T.getArch()); 654f09cf34dSArchibald Elliott EXPECT_EQ(Triple::UnknownVendor, T.getVendor()); 655f09cf34dSArchibald Elliott EXPECT_EQ(Triple::Linux, T.getOS()); 656f09cf34dSArchibald Elliott EXPECT_EQ(Triple::UnknownEnvironment, T.getEnvironment()); 657f09cf34dSArchibald Elliott 658f09cf34dSArchibald Elliott T = Triple("loongarch32-unknown-unknown"); 659f09cf34dSArchibald Elliott EXPECT_EQ(Triple::loongarch32, T.getArch()); 660f09cf34dSArchibald Elliott EXPECT_EQ(Triple::UnknownVendor, T.getVendor()); 661f09cf34dSArchibald Elliott EXPECT_EQ(Triple::UnknownOS, T.getOS()); 662f09cf34dSArchibald Elliott EXPECT_EQ(Triple::UnknownEnvironment, T.getEnvironment()); 663f09cf34dSArchibald Elliott 664f09cf34dSArchibald Elliott T = Triple("loongarch32-unknown-linux-gnu"); 665f09cf34dSArchibald Elliott EXPECT_EQ(Triple::loongarch32, T.getArch()); 666f09cf34dSArchibald Elliott EXPECT_EQ(Triple::UnknownVendor, T.getVendor()); 667f09cf34dSArchibald Elliott EXPECT_EQ(Triple::Linux, T.getOS()); 668f09cf34dSArchibald Elliott EXPECT_EQ(Triple::GNU, T.getEnvironment()); 669f09cf34dSArchibald Elliott 670f09cf34dSArchibald Elliott T = Triple("loongarch32-unknown-linux-gnuf32"); 671f09cf34dSArchibald Elliott EXPECT_EQ(Triple::loongarch32, T.getArch()); 672f09cf34dSArchibald Elliott EXPECT_EQ(Triple::UnknownVendor, T.getVendor()); 673f09cf34dSArchibald Elliott EXPECT_EQ(Triple::Linux, T.getOS()); 674f09cf34dSArchibald Elliott EXPECT_EQ(Triple::GNUF32, T.getEnvironment()); 675f09cf34dSArchibald Elliott 676f09cf34dSArchibald Elliott T = Triple("loongarch32-unknown-linux-gnuf64"); 677f09cf34dSArchibald Elliott EXPECT_EQ(Triple::loongarch32, T.getArch()); 678f09cf34dSArchibald Elliott EXPECT_EQ(Triple::UnknownVendor, T.getVendor()); 679f09cf34dSArchibald Elliott EXPECT_EQ(Triple::Linux, T.getOS()); 680f09cf34dSArchibald Elliott EXPECT_EQ(Triple::GNUF64, T.getEnvironment()); 681f09cf34dSArchibald Elliott 682f09cf34dSArchibald Elliott T = Triple("loongarch32-unknown-linux-gnusf"); 683f09cf34dSArchibald Elliott EXPECT_EQ(Triple::loongarch32, T.getArch()); 684f09cf34dSArchibald Elliott EXPECT_EQ(Triple::UnknownVendor, T.getVendor()); 685f09cf34dSArchibald Elliott EXPECT_EQ(Triple::Linux, T.getOS()); 686f09cf34dSArchibald Elliott EXPECT_EQ(Triple::GNUSF, T.getEnvironment()); 687f09cf34dSArchibald Elliott 688f09cf34dSArchibald Elliott T = Triple("loongarch32-unknown-linux-musl"); 689f09cf34dSArchibald Elliott EXPECT_EQ(Triple::loongarch32, T.getArch()); 690f09cf34dSArchibald Elliott EXPECT_EQ(Triple::UnknownVendor, T.getVendor()); 691f09cf34dSArchibald Elliott EXPECT_EQ(Triple::Linux, T.getOS()); 692f09cf34dSArchibald Elliott EXPECT_EQ(Triple::Musl, T.getEnvironment()); 693f09cf34dSArchibald Elliott 69472a21805SAlex Rønne Petersen T = Triple("loongarch32-unknown-linux-muslf32"); 69572a21805SAlex Rønne Petersen EXPECT_EQ(Triple::loongarch32, T.getArch()); 69672a21805SAlex Rønne Petersen EXPECT_EQ(Triple::UnknownVendor, T.getVendor()); 69772a21805SAlex Rønne Petersen EXPECT_EQ(Triple::Linux, T.getOS()); 69872a21805SAlex Rønne Petersen EXPECT_EQ(Triple::MuslF32, T.getEnvironment()); 69972a21805SAlex Rønne Petersen 70072a21805SAlex Rønne Petersen T = Triple("loongarch32-unknown-linux-muslsf"); 70172a21805SAlex Rønne Petersen EXPECT_EQ(Triple::loongarch32, T.getArch()); 70272a21805SAlex Rønne Petersen EXPECT_EQ(Triple::UnknownVendor, T.getVendor()); 70372a21805SAlex Rønne Petersen EXPECT_EQ(Triple::Linux, T.getOS()); 70472a21805SAlex Rønne Petersen EXPECT_EQ(Triple::MuslSF, T.getEnvironment()); 70572a21805SAlex Rønne Petersen 706f09cf34dSArchibald Elliott T = Triple("loongarch64-unknown-linux"); 707f09cf34dSArchibald Elliott EXPECT_EQ(Triple::loongarch64, T.getArch()); 708f09cf34dSArchibald Elliott EXPECT_EQ(Triple::UnknownVendor, T.getVendor()); 709f09cf34dSArchibald Elliott EXPECT_EQ(Triple::Linux, T.getOS()); 710f09cf34dSArchibald Elliott EXPECT_EQ(Triple::UnknownEnvironment, T.getEnvironment()); 711f09cf34dSArchibald Elliott 712f09cf34dSArchibald Elliott T = Triple("loongarch64-unknown-linux-gnu"); 713f09cf34dSArchibald Elliott EXPECT_EQ(Triple::loongarch64, T.getArch()); 714f09cf34dSArchibald Elliott EXPECT_EQ(Triple::UnknownVendor, T.getVendor()); 715f09cf34dSArchibald Elliott EXPECT_EQ(Triple::Linux, T.getOS()); 716f09cf34dSArchibald Elliott EXPECT_EQ(Triple::GNU, T.getEnvironment()); 717f09cf34dSArchibald Elliott 718f09cf34dSArchibald Elliott T = Triple("loongarch64-unknown-linux-gnuf32"); 719f09cf34dSArchibald Elliott EXPECT_EQ(Triple::loongarch64, T.getArch()); 720f09cf34dSArchibald Elliott EXPECT_EQ(Triple::UnknownVendor, T.getVendor()); 721f09cf34dSArchibald Elliott EXPECT_EQ(Triple::Linux, T.getOS()); 722f09cf34dSArchibald Elliott EXPECT_EQ(Triple::GNUF32, T.getEnvironment()); 723f09cf34dSArchibald Elliott 724f09cf34dSArchibald Elliott T = Triple("loongarch64-unknown-linux-gnuf64"); 725f09cf34dSArchibald Elliott EXPECT_EQ(Triple::loongarch64, T.getArch()); 726f09cf34dSArchibald Elliott EXPECT_EQ(Triple::UnknownVendor, T.getVendor()); 727f09cf34dSArchibald Elliott EXPECT_EQ(Triple::Linux, T.getOS()); 728f09cf34dSArchibald Elliott EXPECT_EQ(Triple::GNUF64, T.getEnvironment()); 729f09cf34dSArchibald Elliott 730f09cf34dSArchibald Elliott T = Triple("loongarch64-unknown-linux-gnusf"); 731f09cf34dSArchibald Elliott EXPECT_EQ(Triple::loongarch64, T.getArch()); 732f09cf34dSArchibald Elliott EXPECT_EQ(Triple::UnknownVendor, T.getVendor()); 733f09cf34dSArchibald Elliott EXPECT_EQ(Triple::Linux, T.getOS()); 734f09cf34dSArchibald Elliott EXPECT_EQ(Triple::GNUSF, T.getEnvironment()); 735f09cf34dSArchibald Elliott 736f09cf34dSArchibald Elliott T = Triple("loongarch64-unknown-linux-musl"); 737f09cf34dSArchibald Elliott EXPECT_EQ(Triple::loongarch64, T.getArch()); 738f09cf34dSArchibald Elliott EXPECT_EQ(Triple::UnknownVendor, T.getVendor()); 739f09cf34dSArchibald Elliott EXPECT_EQ(Triple::Linux, T.getOS()); 740f09cf34dSArchibald Elliott EXPECT_EQ(Triple::Musl, T.getEnvironment()); 741f09cf34dSArchibald Elliott 74272a21805SAlex Rønne Petersen T = Triple("loongarch64-unknown-linux-muslf32"); 74372a21805SAlex Rønne Petersen EXPECT_EQ(Triple::loongarch64, T.getArch()); 74472a21805SAlex Rønne Petersen EXPECT_EQ(Triple::UnknownVendor, T.getVendor()); 74572a21805SAlex Rønne Petersen EXPECT_EQ(Triple::Linux, T.getOS()); 74672a21805SAlex Rønne Petersen EXPECT_EQ(Triple::MuslF32, T.getEnvironment()); 74772a21805SAlex Rønne Petersen 74872a21805SAlex Rønne Petersen T = Triple("loongarch64-unknown-linux-muslsf"); 74972a21805SAlex Rønne Petersen EXPECT_EQ(Triple::loongarch64, T.getArch()); 75072a21805SAlex Rønne Petersen EXPECT_EQ(Triple::UnknownVendor, T.getVendor()); 75172a21805SAlex Rønne Petersen EXPECT_EQ(Triple::Linux, T.getOS()); 75272a21805SAlex Rønne Petersen EXPECT_EQ(Triple::MuslSF, T.getEnvironment()); 75372a21805SAlex Rønne Petersen 754f09cf34dSArchibald Elliott T = Triple("riscv32-unknown-unknown"); 755f09cf34dSArchibald Elliott EXPECT_EQ(Triple::riscv32, T.getArch()); 756f09cf34dSArchibald Elliott EXPECT_EQ(Triple::UnknownVendor, T.getVendor()); 757f09cf34dSArchibald Elliott EXPECT_EQ(Triple::UnknownOS, T.getOS()); 758f09cf34dSArchibald Elliott EXPECT_EQ(Triple::UnknownEnvironment, T.getEnvironment()); 759f09cf34dSArchibald Elliott 760f09cf34dSArchibald Elliott T = Triple("riscv64-unknown-linux"); 761f09cf34dSArchibald Elliott EXPECT_EQ(Triple::riscv64, T.getArch()); 762f09cf34dSArchibald Elliott EXPECT_EQ(Triple::UnknownVendor, T.getVendor()); 763f09cf34dSArchibald Elliott EXPECT_EQ(Triple::Linux, T.getOS()); 764f09cf34dSArchibald Elliott EXPECT_EQ(Triple::UnknownEnvironment, T.getEnvironment()); 765f09cf34dSArchibald Elliott 766f09cf34dSArchibald Elliott T = Triple("riscv64-unknown-freebsd"); 767f09cf34dSArchibald Elliott EXPECT_EQ(Triple::riscv64, T.getArch()); 768f09cf34dSArchibald Elliott EXPECT_EQ(Triple::UnknownVendor, T.getVendor()); 769f09cf34dSArchibald Elliott EXPECT_EQ(Triple::FreeBSD, T.getOS()); 770f09cf34dSArchibald Elliott EXPECT_EQ(Triple::UnknownEnvironment, T.getEnvironment()); 771f09cf34dSArchibald Elliott 772f09cf34dSArchibald Elliott T = Triple("riscv64-suse-linux"); 773f09cf34dSArchibald Elliott EXPECT_EQ(Triple::riscv64, T.getArch()); 774f09cf34dSArchibald Elliott EXPECT_EQ(Triple::SUSE, T.getVendor()); 775f09cf34dSArchibald Elliott EXPECT_EQ(Triple::Linux, T.getOS()); 776f09cf34dSArchibald Elliott EXPECT_EQ(Triple::UnknownEnvironment, T.getEnvironment()); 777f09cf34dSArchibald Elliott 778f09cf34dSArchibald Elliott T = Triple("armv7hl-suse-linux-gnueabi"); 779f09cf34dSArchibald Elliott EXPECT_EQ(Triple::arm, T.getArch()); 780f09cf34dSArchibald Elliott EXPECT_EQ(Triple::SUSE, T.getVendor()); 781f09cf34dSArchibald Elliott EXPECT_EQ(Triple::Linux, T.getOS()); 782f09cf34dSArchibald Elliott EXPECT_EQ(Triple::GNUEABI, T.getEnvironment()); 783f09cf34dSArchibald Elliott 784f09cf34dSArchibald Elliott T = Triple("i586-pc-haiku"); 785f09cf34dSArchibald Elliott EXPECT_EQ(Triple::x86, T.getArch()); 786f09cf34dSArchibald Elliott EXPECT_EQ(Triple::PC, T.getVendor()); 787f09cf34dSArchibald Elliott EXPECT_EQ(Triple::Haiku, T.getOS()); 788f09cf34dSArchibald Elliott EXPECT_EQ(Triple::UnknownEnvironment, T.getEnvironment()); 789f09cf34dSArchibald Elliott 790f09cf34dSArchibald Elliott T = Triple("x86_64-unknown-haiku"); 791f09cf34dSArchibald Elliott EXPECT_EQ(Triple::x86_64, T.getArch()); 792f09cf34dSArchibald Elliott EXPECT_EQ(Triple::UnknownVendor, T.getVendor()); 793f09cf34dSArchibald Elliott EXPECT_EQ(Triple::Haiku, T.getOS()); 794f09cf34dSArchibald Elliott EXPECT_EQ(Triple::UnknownEnvironment, T.getEnvironment()); 795f09cf34dSArchibald Elliott 796f09cf34dSArchibald Elliott T = Triple("mips-mti-linux-gnu"); 797f09cf34dSArchibald Elliott EXPECT_EQ(Triple::mips, T.getArch()); 798f09cf34dSArchibald Elliott EXPECT_EQ(Triple::MipsTechnologies, T.getVendor()); 799f09cf34dSArchibald Elliott EXPECT_EQ(Triple::Linux, T.getOS()); 800f09cf34dSArchibald Elliott EXPECT_EQ(Triple::GNU, T.getEnvironment()); 801f09cf34dSArchibald Elliott 802f09cf34dSArchibald Elliott T = Triple("mipsel-img-linux-gnu"); 803f09cf34dSArchibald Elliott EXPECT_EQ(Triple::mipsel, T.getArch()); 804f09cf34dSArchibald Elliott EXPECT_EQ(Triple::ImaginationTechnologies, T.getVendor()); 805f09cf34dSArchibald Elliott EXPECT_EQ(Triple::Linux, T.getOS()); 806f09cf34dSArchibald Elliott EXPECT_EQ(Triple::GNU, T.getEnvironment()); 807f09cf34dSArchibald Elliott 808f09cf34dSArchibald Elliott T = Triple("mips64-mti-linux-gnu"); 809f09cf34dSArchibald Elliott EXPECT_EQ(Triple::mips64, T.getArch()); 810f09cf34dSArchibald Elliott EXPECT_EQ(Triple::MipsTechnologies, T.getVendor()); 811f09cf34dSArchibald Elliott EXPECT_EQ(Triple::Linux, T.getOS()); 812f09cf34dSArchibald Elliott EXPECT_EQ(Triple::GNU, T.getEnvironment()); 813f09cf34dSArchibald Elliott 814f09cf34dSArchibald Elliott T = Triple("mips64el-img-linux-gnu"); 815f09cf34dSArchibald Elliott EXPECT_EQ(Triple::mips64el, T.getArch()); 816f09cf34dSArchibald Elliott EXPECT_EQ(Triple::ImaginationTechnologies, T.getVendor()); 817f09cf34dSArchibald Elliott EXPECT_EQ(Triple::Linux, T.getOS()); 818f09cf34dSArchibald Elliott EXPECT_EQ(Triple::GNU, T.getEnvironment()); 819f09cf34dSArchibald Elliott 820f09cf34dSArchibald Elliott T = Triple("mips64el-img-linux-gnuabin32"); 821f09cf34dSArchibald Elliott EXPECT_EQ(Triple::mips64el, T.getArch()); 822f09cf34dSArchibald Elliott EXPECT_EQ(Triple::ImaginationTechnologies, T.getVendor()); 823f09cf34dSArchibald Elliott EXPECT_EQ(Triple::Linux, T.getOS()); 824f09cf34dSArchibald Elliott EXPECT_EQ(Triple::GNUABIN32, T.getEnvironment()); 825f09cf34dSArchibald Elliott 826f09cf34dSArchibald Elliott T = Triple("mips64el-unknown-linux-gnuabi64"); 827f09cf34dSArchibald Elliott EXPECT_EQ(Triple::mips64el, T.getArch()); 828f09cf34dSArchibald Elliott EXPECT_EQ(Triple::UnknownVendor, T.getVendor()); 829f09cf34dSArchibald Elliott EXPECT_EQ(Triple::Linux, T.getOS()); 830f09cf34dSArchibald Elliott EXPECT_EQ(Triple::GNUABI64, T.getEnvironment()); 831f09cf34dSArchibald Elliott EXPECT_EQ(Triple::NoSubArch, T.getSubArch()); 832f09cf34dSArchibald Elliott T = Triple("mips64el"); 833f09cf34dSArchibald Elliott EXPECT_EQ(Triple::mips64el, T.getArch()); 834f09cf34dSArchibald Elliott EXPECT_EQ(Triple::UnknownVendor, T.getVendor()); 835f09cf34dSArchibald Elliott EXPECT_EQ(Triple::GNUABI64, T.getEnvironment()); 836f09cf34dSArchibald Elliott EXPECT_EQ(Triple::NoSubArch, T.getSubArch()); 837f09cf34dSArchibald Elliott 838f09cf34dSArchibald Elliott T = Triple("mips64-unknown-linux-gnuabi64"); 839f09cf34dSArchibald Elliott EXPECT_EQ(Triple::mips64, T.getArch()); 840f09cf34dSArchibald Elliott EXPECT_EQ(Triple::UnknownVendor, T.getVendor()); 841f09cf34dSArchibald Elliott EXPECT_EQ(Triple::Linux, T.getOS()); 842f09cf34dSArchibald Elliott EXPECT_EQ(Triple::GNUABI64, T.getEnvironment()); 843f09cf34dSArchibald Elliott EXPECT_EQ(Triple::NoSubArch, T.getSubArch()); 844f09cf34dSArchibald Elliott T = Triple("mips64"); 845f09cf34dSArchibald Elliott EXPECT_EQ(Triple::mips64, T.getArch()); 846f09cf34dSArchibald Elliott EXPECT_EQ(Triple::UnknownVendor, T.getVendor()); 847f09cf34dSArchibald Elliott EXPECT_EQ(Triple::GNUABI64, T.getEnvironment()); 848f09cf34dSArchibald Elliott EXPECT_EQ(Triple::NoSubArch, T.getSubArch()); 849f09cf34dSArchibald Elliott 850f09cf34dSArchibald Elliott T = Triple("mipsisa64r6el-unknown-linux-gnuabi64"); 851f09cf34dSArchibald Elliott EXPECT_EQ(Triple::mips64el, T.getArch()); 852f09cf34dSArchibald Elliott EXPECT_EQ(Triple::UnknownVendor, T.getVendor()); 853f09cf34dSArchibald Elliott EXPECT_EQ(Triple::Linux, T.getOS()); 854f09cf34dSArchibald Elliott EXPECT_EQ(Triple::GNUABI64, T.getEnvironment()); 855f09cf34dSArchibald Elliott EXPECT_EQ(Triple::MipsSubArch_r6, T.getSubArch()); 856f09cf34dSArchibald Elliott T = Triple("mips64r6el"); 857f09cf34dSArchibald Elliott EXPECT_EQ(Triple::mips64el, T.getArch()); 858f09cf34dSArchibald Elliott EXPECT_EQ(Triple::UnknownVendor, T.getVendor()); 859f09cf34dSArchibald Elliott EXPECT_EQ(Triple::GNUABI64, T.getEnvironment()); 860f09cf34dSArchibald Elliott EXPECT_EQ(Triple::MipsSubArch_r6, T.getSubArch()); 861f09cf34dSArchibald Elliott T = Triple("mipsisa64r6el"); 862f09cf34dSArchibald Elliott EXPECT_EQ(Triple::mips64el, T.getArch()); 863f09cf34dSArchibald Elliott EXPECT_EQ(Triple::UnknownVendor, T.getVendor()); 864f09cf34dSArchibald Elliott EXPECT_EQ(Triple::GNUABI64, T.getEnvironment()); 865f09cf34dSArchibald Elliott EXPECT_EQ(Triple::MipsSubArch_r6, T.getSubArch()); 866f09cf34dSArchibald Elliott 867f09cf34dSArchibald Elliott T = Triple("mipsisa64r6-unknown-linux-gnuabi64"); 868f09cf34dSArchibald Elliott EXPECT_EQ(Triple::mips64, T.getArch()); 869f09cf34dSArchibald Elliott EXPECT_EQ(Triple::UnknownVendor, T.getVendor()); 870f09cf34dSArchibald Elliott EXPECT_EQ(Triple::Linux, T.getOS()); 871f09cf34dSArchibald Elliott EXPECT_EQ(Triple::GNUABI64, T.getEnvironment()); 872f09cf34dSArchibald Elliott EXPECT_EQ(Triple::MipsSubArch_r6, T.getSubArch()); 873f09cf34dSArchibald Elliott T = Triple("mips64r6"); 874f09cf34dSArchibald Elliott EXPECT_EQ(Triple::mips64, T.getArch()); 875f09cf34dSArchibald Elliott EXPECT_EQ(Triple::UnknownVendor, T.getVendor()); 876f09cf34dSArchibald Elliott EXPECT_EQ(Triple::GNUABI64, T.getEnvironment()); 877f09cf34dSArchibald Elliott EXPECT_EQ(Triple::MipsSubArch_r6, T.getSubArch()); 878f09cf34dSArchibald Elliott T = Triple("mipsisa64r6"); 879f09cf34dSArchibald Elliott EXPECT_EQ(Triple::mips64, T.getArch()); 880f09cf34dSArchibald Elliott EXPECT_EQ(Triple::UnknownVendor, T.getVendor()); 881f09cf34dSArchibald Elliott EXPECT_EQ(Triple::GNUABI64, T.getEnvironment()); 882f09cf34dSArchibald Elliott EXPECT_EQ(Triple::MipsSubArch_r6, T.getSubArch()); 883f09cf34dSArchibald Elliott 884f09cf34dSArchibald Elliott T = Triple("mips64el-unknown-linux-gnuabin32"); 885f09cf34dSArchibald Elliott EXPECT_EQ(Triple::mips64el, T.getArch()); 886f09cf34dSArchibald Elliott EXPECT_EQ(Triple::UnknownVendor, T.getVendor()); 887f09cf34dSArchibald Elliott EXPECT_EQ(Triple::Linux, T.getOS()); 888f09cf34dSArchibald Elliott EXPECT_EQ(Triple::GNUABIN32, T.getEnvironment()); 889f09cf34dSArchibald Elliott EXPECT_EQ(Triple::NoSubArch, T.getSubArch()); 890f09cf34dSArchibald Elliott T = Triple("mipsn32el"); 891f09cf34dSArchibald Elliott EXPECT_EQ(Triple::mips64el, T.getArch()); 892f09cf34dSArchibald Elliott EXPECT_EQ(Triple::UnknownVendor, T.getVendor()); 893f09cf34dSArchibald Elliott EXPECT_EQ(Triple::GNUABIN32, T.getEnvironment()); 894f09cf34dSArchibald Elliott EXPECT_EQ(Triple::NoSubArch, T.getSubArch()); 895f09cf34dSArchibald Elliott 896f09cf34dSArchibald Elliott T = Triple("mips64-unknown-linux-gnuabin32"); 897f09cf34dSArchibald Elliott EXPECT_EQ(Triple::mips64, T.getArch()); 898f09cf34dSArchibald Elliott EXPECT_EQ(Triple::UnknownVendor, T.getVendor()); 899f09cf34dSArchibald Elliott EXPECT_EQ(Triple::Linux, T.getOS()); 900f09cf34dSArchibald Elliott EXPECT_EQ(Triple::GNUABIN32, T.getEnvironment()); 901f09cf34dSArchibald Elliott EXPECT_EQ(Triple::NoSubArch, T.getSubArch()); 902f09cf34dSArchibald Elliott T = Triple("mipsn32"); 903f09cf34dSArchibald Elliott EXPECT_EQ(Triple::mips64, T.getArch()); 904f09cf34dSArchibald Elliott EXPECT_EQ(Triple::UnknownVendor, T.getVendor()); 905f09cf34dSArchibald Elliott EXPECT_EQ(Triple::GNUABIN32, T.getEnvironment()); 906f09cf34dSArchibald Elliott EXPECT_EQ(Triple::NoSubArch, T.getSubArch()); 907f09cf34dSArchibald Elliott 908f09cf34dSArchibald Elliott T = Triple("mipsisa64r6el-unknown-linux-gnuabin32"); 909f09cf34dSArchibald Elliott EXPECT_EQ(Triple::mips64el, T.getArch()); 910f09cf34dSArchibald Elliott EXPECT_EQ(Triple::UnknownVendor, T.getVendor()); 911f09cf34dSArchibald Elliott EXPECT_EQ(Triple::Linux, T.getOS()); 912f09cf34dSArchibald Elliott EXPECT_EQ(Triple::GNUABIN32, T.getEnvironment()); 913f09cf34dSArchibald Elliott EXPECT_EQ(Triple::MipsSubArch_r6, T.getSubArch()); 914f09cf34dSArchibald Elliott T = Triple("mipsn32r6el"); 915f09cf34dSArchibald Elliott EXPECT_EQ(Triple::mips64el, T.getArch()); 916f09cf34dSArchibald Elliott EXPECT_EQ(Triple::UnknownVendor, T.getVendor()); 917f09cf34dSArchibald Elliott EXPECT_EQ(Triple::GNUABIN32, T.getEnvironment()); 918f09cf34dSArchibald Elliott EXPECT_EQ(Triple::MipsSubArch_r6, T.getSubArch()); 919f09cf34dSArchibald Elliott 920f09cf34dSArchibald Elliott T = Triple("mipsisa64r6-unknown-linux-gnuabin32"); 921f09cf34dSArchibald Elliott EXPECT_EQ(Triple::mips64, T.getArch()); 922f09cf34dSArchibald Elliott EXPECT_EQ(Triple::UnknownVendor, T.getVendor()); 923f09cf34dSArchibald Elliott EXPECT_EQ(Triple::Linux, T.getOS()); 924f09cf34dSArchibald Elliott EXPECT_EQ(Triple::GNUABIN32, T.getEnvironment()); 925f09cf34dSArchibald Elliott EXPECT_EQ(Triple::MipsSubArch_r6, T.getSubArch()); 926f09cf34dSArchibald Elliott T = Triple("mipsn32r6"); 927f09cf34dSArchibald Elliott EXPECT_EQ(Triple::mips64, T.getArch()); 928f09cf34dSArchibald Elliott EXPECT_EQ(Triple::UnknownVendor, T.getVendor()); 929f09cf34dSArchibald Elliott EXPECT_EQ(Triple::GNUABIN32, T.getEnvironment()); 930f09cf34dSArchibald Elliott EXPECT_EQ(Triple::MipsSubArch_r6, T.getSubArch()); 931f09cf34dSArchibald Elliott 932f09cf34dSArchibald Elliott T = Triple("mipsel-unknown-linux-gnu"); 933f09cf34dSArchibald Elliott EXPECT_EQ(Triple::mipsel, T.getArch()); 934f09cf34dSArchibald Elliott EXPECT_EQ(Triple::UnknownVendor, T.getVendor()); 935f09cf34dSArchibald Elliott EXPECT_EQ(Triple::Linux, T.getOS()); 936f09cf34dSArchibald Elliott EXPECT_EQ(Triple::GNU, T.getEnvironment()); 937f09cf34dSArchibald Elliott EXPECT_EQ(Triple::NoSubArch, T.getSubArch()); 938f09cf34dSArchibald Elliott T = Triple("mipsel"); 939f09cf34dSArchibald Elliott EXPECT_EQ(Triple::mipsel, T.getArch()); 940f09cf34dSArchibald Elliott EXPECT_EQ(Triple::UnknownVendor, T.getVendor()); 941f09cf34dSArchibald Elliott EXPECT_EQ(Triple::GNU, T.getEnvironment()); 942f09cf34dSArchibald Elliott EXPECT_EQ(Triple::NoSubArch, T.getSubArch()); 943f09cf34dSArchibald Elliott 944f09cf34dSArchibald Elliott T = Triple("mips-unknown-linux-gnu"); 945f09cf34dSArchibald Elliott EXPECT_EQ(Triple::mips, T.getArch()); 946f09cf34dSArchibald Elliott EXPECT_EQ(Triple::UnknownVendor, T.getVendor()); 947f09cf34dSArchibald Elliott EXPECT_EQ(Triple::Linux, T.getOS()); 948f09cf34dSArchibald Elliott EXPECT_EQ(Triple::GNU, T.getEnvironment()); 949f09cf34dSArchibald Elliott EXPECT_EQ(Triple::NoSubArch, T.getSubArch()); 950f09cf34dSArchibald Elliott T = Triple("mips"); 951f09cf34dSArchibald Elliott EXPECT_EQ(Triple::mips, T.getArch()); 952f09cf34dSArchibald Elliott EXPECT_EQ(Triple::UnknownVendor, T.getVendor()); 953f09cf34dSArchibald Elliott EXPECT_EQ(Triple::GNU, T.getEnvironment()); 954f09cf34dSArchibald Elliott EXPECT_EQ(Triple::NoSubArch, T.getSubArch()); 955f09cf34dSArchibald Elliott 956f09cf34dSArchibald Elliott T = Triple("mipsisa32r6el-unknown-linux-gnu"); 957f09cf34dSArchibald Elliott EXPECT_EQ(Triple::mipsel, T.getArch()); 958f09cf34dSArchibald Elliott EXPECT_EQ(Triple::UnknownVendor, T.getVendor()); 959f09cf34dSArchibald Elliott EXPECT_EQ(Triple::Linux, T.getOS()); 960f09cf34dSArchibald Elliott EXPECT_EQ(Triple::GNU, T.getEnvironment()); 961f09cf34dSArchibald Elliott EXPECT_EQ(Triple::MipsSubArch_r6, T.getSubArch()); 962f09cf34dSArchibald Elliott T = Triple("mipsr6el"); 963f09cf34dSArchibald Elliott EXPECT_EQ(Triple::mipsel, T.getArch()); 964f09cf34dSArchibald Elliott EXPECT_EQ(Triple::UnknownVendor, T.getVendor()); 965f09cf34dSArchibald Elliott EXPECT_EQ(Triple::MipsSubArch_r6, T.getSubArch()); 966f09cf34dSArchibald Elliott T = Triple("mipsisa32r6el"); 967f09cf34dSArchibald Elliott EXPECT_EQ(Triple::mipsel, T.getArch()); 968f09cf34dSArchibald Elliott EXPECT_EQ(Triple::UnknownVendor, T.getVendor()); 969f09cf34dSArchibald Elliott EXPECT_EQ(Triple::GNU, T.getEnvironment()); 970f09cf34dSArchibald Elliott EXPECT_EQ(Triple::MipsSubArch_r6, T.getSubArch()); 971f09cf34dSArchibald Elliott 972f09cf34dSArchibald Elliott T = Triple("mipsisa32r6-unknown-linux-gnu"); 973f09cf34dSArchibald Elliott EXPECT_EQ(Triple::mips, T.getArch()); 974f09cf34dSArchibald Elliott EXPECT_EQ(Triple::UnknownVendor, T.getVendor()); 975f09cf34dSArchibald Elliott EXPECT_EQ(Triple::Linux, T.getOS()); 976f09cf34dSArchibald Elliott EXPECT_EQ(Triple::GNU, T.getEnvironment()); 977f09cf34dSArchibald Elliott EXPECT_EQ(Triple::MipsSubArch_r6, T.getSubArch()); 978f09cf34dSArchibald Elliott T = Triple("mipsr6"); 979f09cf34dSArchibald Elliott EXPECT_EQ(Triple::mips, T.getArch()); 980f09cf34dSArchibald Elliott EXPECT_EQ(Triple::UnknownVendor, T.getVendor()); 981f09cf34dSArchibald Elliott EXPECT_EQ(Triple::GNU, T.getEnvironment()); 982f09cf34dSArchibald Elliott EXPECT_EQ(Triple::MipsSubArch_r6, T.getSubArch()); 983f09cf34dSArchibald Elliott T = Triple("mipsisa32r6"); 984f09cf34dSArchibald Elliott EXPECT_EQ(Triple::mips, T.getArch()); 985f09cf34dSArchibald Elliott EXPECT_EQ(Triple::UnknownVendor, T.getVendor()); 986f09cf34dSArchibald Elliott EXPECT_EQ(Triple::GNU, T.getEnvironment()); 987f09cf34dSArchibald Elliott EXPECT_EQ(Triple::MipsSubArch_r6, T.getSubArch()); 988f09cf34dSArchibald Elliott 98972a21805SAlex Rønne Petersen T = Triple("mips64el-unknown-linux-muslabi64"); 99072a21805SAlex Rønne Petersen EXPECT_EQ(Triple::mips64el, T.getArch()); 99172a21805SAlex Rønne Petersen EXPECT_EQ(Triple::UnknownVendor, T.getVendor()); 99272a21805SAlex Rønne Petersen EXPECT_EQ(Triple::Linux, T.getOS()); 99372a21805SAlex Rønne Petersen EXPECT_EQ(Triple::MuslABI64, T.getEnvironment()); 99472a21805SAlex Rønne Petersen EXPECT_EQ(Triple::NoSubArch, T.getSubArch()); 99572a21805SAlex Rønne Petersen 99672a21805SAlex Rønne Petersen T = Triple("mips64-unknown-linux-muslabi64"); 99772a21805SAlex Rønne Petersen EXPECT_EQ(Triple::mips64, T.getArch()); 99872a21805SAlex Rønne Petersen EXPECT_EQ(Triple::UnknownVendor, T.getVendor()); 99972a21805SAlex Rønne Petersen EXPECT_EQ(Triple::Linux, T.getOS()); 100072a21805SAlex Rønne Petersen EXPECT_EQ(Triple::MuslABI64, T.getEnvironment()); 100172a21805SAlex Rønne Petersen EXPECT_EQ(Triple::NoSubArch, T.getSubArch()); 100272a21805SAlex Rønne Petersen 100372a21805SAlex Rønne Petersen T = Triple("mipsisa64r6el-unknown-linux-muslabi64"); 100472a21805SAlex Rønne Petersen EXPECT_EQ(Triple::mips64el, T.getArch()); 100572a21805SAlex Rønne Petersen EXPECT_EQ(Triple::UnknownVendor, T.getVendor()); 100672a21805SAlex Rønne Petersen EXPECT_EQ(Triple::Linux, T.getOS()); 100772a21805SAlex Rønne Petersen EXPECT_EQ(Triple::MuslABI64, T.getEnvironment()); 100872a21805SAlex Rønne Petersen EXPECT_EQ(Triple::MipsSubArch_r6, T.getSubArch()); 100972a21805SAlex Rønne Petersen 101072a21805SAlex Rønne Petersen T = Triple("mipsisa64r6-unknown-linux-muslabi64"); 101172a21805SAlex Rønne Petersen EXPECT_EQ(Triple::mips64, T.getArch()); 101272a21805SAlex Rønne Petersen EXPECT_EQ(Triple::UnknownVendor, T.getVendor()); 101372a21805SAlex Rønne Petersen EXPECT_EQ(Triple::Linux, T.getOS()); 101472a21805SAlex Rønne Petersen EXPECT_EQ(Triple::MuslABI64, T.getEnvironment()); 101572a21805SAlex Rønne Petersen EXPECT_EQ(Triple::MipsSubArch_r6, T.getSubArch()); 101672a21805SAlex Rønne Petersen 101772a21805SAlex Rønne Petersen T = Triple("mips64el-unknown-linux-muslabin32"); 101872a21805SAlex Rønne Petersen EXPECT_EQ(Triple::mips64el, T.getArch()); 101972a21805SAlex Rønne Petersen EXPECT_EQ(Triple::UnknownVendor, T.getVendor()); 102072a21805SAlex Rønne Petersen EXPECT_EQ(Triple::Linux, T.getOS()); 102172a21805SAlex Rønne Petersen EXPECT_EQ(Triple::MuslABIN32, T.getEnvironment()); 102272a21805SAlex Rønne Petersen EXPECT_EQ(Triple::NoSubArch, T.getSubArch()); 102372a21805SAlex Rønne Petersen 102472a21805SAlex Rønne Petersen T = Triple("mips64-unknown-linux-muslabin32"); 102572a21805SAlex Rønne Petersen EXPECT_EQ(Triple::mips64, T.getArch()); 102672a21805SAlex Rønne Petersen EXPECT_EQ(Triple::UnknownVendor, T.getVendor()); 102772a21805SAlex Rønne Petersen EXPECT_EQ(Triple::Linux, T.getOS()); 102872a21805SAlex Rønne Petersen EXPECT_EQ(Triple::MuslABIN32, T.getEnvironment()); 102972a21805SAlex Rønne Petersen EXPECT_EQ(Triple::NoSubArch, T.getSubArch()); 103072a21805SAlex Rønne Petersen 103172a21805SAlex Rønne Petersen T = Triple("mipsisa64r6el-unknown-linux-muslabin32"); 103272a21805SAlex Rønne Petersen EXPECT_EQ(Triple::mips64el, T.getArch()); 103372a21805SAlex Rønne Petersen EXPECT_EQ(Triple::UnknownVendor, T.getVendor()); 103472a21805SAlex Rønne Petersen EXPECT_EQ(Triple::Linux, T.getOS()); 103572a21805SAlex Rønne Petersen EXPECT_EQ(Triple::MuslABIN32, T.getEnvironment()); 103672a21805SAlex Rønne Petersen EXPECT_EQ(Triple::MipsSubArch_r6, T.getSubArch()); 103772a21805SAlex Rønne Petersen 103872a21805SAlex Rønne Petersen T = Triple("mipsisa64r6-unknown-linux-muslabin32"); 103972a21805SAlex Rønne Petersen EXPECT_EQ(Triple::mips64, T.getArch()); 104072a21805SAlex Rønne Petersen EXPECT_EQ(Triple::UnknownVendor, T.getVendor()); 104172a21805SAlex Rønne Petersen EXPECT_EQ(Triple::Linux, T.getOS()); 104272a21805SAlex Rønne Petersen EXPECT_EQ(Triple::MuslABIN32, T.getEnvironment()); 104372a21805SAlex Rønne Petersen EXPECT_EQ(Triple::MipsSubArch_r6, T.getSubArch()); 104472a21805SAlex Rønne Petersen 104572a21805SAlex Rønne Petersen T = Triple("mipsel-unknown-linux-musl"); 104672a21805SAlex Rønne Petersen EXPECT_EQ(Triple::mipsel, T.getArch()); 104772a21805SAlex Rønne Petersen EXPECT_EQ(Triple::UnknownVendor, T.getVendor()); 104872a21805SAlex Rønne Petersen EXPECT_EQ(Triple::Linux, T.getOS()); 104972a21805SAlex Rønne Petersen EXPECT_EQ(Triple::Musl, T.getEnvironment()); 105072a21805SAlex Rønne Petersen EXPECT_EQ(Triple::NoSubArch, T.getSubArch()); 105172a21805SAlex Rønne Petersen 105272a21805SAlex Rønne Petersen T = Triple("mips-unknown-linux-musl"); 105372a21805SAlex Rønne Petersen EXPECT_EQ(Triple::mips, T.getArch()); 105472a21805SAlex Rønne Petersen EXPECT_EQ(Triple::UnknownVendor, T.getVendor()); 105572a21805SAlex Rønne Petersen EXPECT_EQ(Triple::Linux, T.getOS()); 105672a21805SAlex Rønne Petersen EXPECT_EQ(Triple::Musl, T.getEnvironment()); 105772a21805SAlex Rønne Petersen EXPECT_EQ(Triple::NoSubArch, T.getSubArch()); 105872a21805SAlex Rønne Petersen 105972a21805SAlex Rønne Petersen T = Triple("mipsisa32r6el-unknown-linux-musl"); 106072a21805SAlex Rønne Petersen EXPECT_EQ(Triple::mipsel, T.getArch()); 106172a21805SAlex Rønne Petersen EXPECT_EQ(Triple::UnknownVendor, T.getVendor()); 106272a21805SAlex Rønne Petersen EXPECT_EQ(Triple::Linux, T.getOS()); 106372a21805SAlex Rønne Petersen EXPECT_EQ(Triple::Musl, T.getEnvironment()); 106472a21805SAlex Rønne Petersen EXPECT_EQ(Triple::MipsSubArch_r6, T.getSubArch()); 106572a21805SAlex Rønne Petersen 106672a21805SAlex Rønne Petersen T = Triple("mipsisa32r6-unknown-linux-musl"); 106772a21805SAlex Rønne Petersen EXPECT_EQ(Triple::mips, T.getArch()); 106872a21805SAlex Rønne Petersen EXPECT_EQ(Triple::UnknownVendor, T.getVendor()); 106972a21805SAlex Rønne Petersen EXPECT_EQ(Triple::Linux, T.getOS()); 107072a21805SAlex Rønne Petersen EXPECT_EQ(Triple::Musl, T.getEnvironment()); 107172a21805SAlex Rønne Petersen EXPECT_EQ(Triple::MipsSubArch_r6, T.getSubArch()); 107272a21805SAlex Rønne Petersen 1073f09cf34dSArchibald Elliott T = Triple("arm-oe-linux-gnueabi"); 1074f09cf34dSArchibald Elliott EXPECT_EQ(Triple::arm, T.getArch()); 1075f09cf34dSArchibald Elliott EXPECT_EQ(Triple::OpenEmbedded, T.getVendor()); 1076f09cf34dSArchibald Elliott EXPECT_EQ(Triple::Linux, T.getOS()); 1077f09cf34dSArchibald Elliott EXPECT_EQ(Triple::GNUEABI, T.getEnvironment()); 1078f09cf34dSArchibald Elliott 1079f09cf34dSArchibald Elliott T = Triple("aarch64-oe-linux"); 1080f09cf34dSArchibald Elliott EXPECT_EQ(Triple::aarch64, T.getArch()); 1081f09cf34dSArchibald Elliott EXPECT_EQ(Triple::OpenEmbedded, T.getVendor()); 1082f09cf34dSArchibald Elliott EXPECT_EQ(Triple::Linux, T.getOS()); 1083f09cf34dSArchibald Elliott EXPECT_EQ(Triple::UnknownEnvironment, T.getEnvironment()); 1084f09cf34dSArchibald Elliott EXPECT_TRUE(T.isArch64Bit()); 1085f09cf34dSArchibald Elliott 1086f09cf34dSArchibald Elliott T = Triple("arm64_32-apple-ios"); 1087f09cf34dSArchibald Elliott EXPECT_EQ(Triple::aarch64_32, T.getArch()); 1088f09cf34dSArchibald Elliott EXPECT_EQ(Triple::IOS, T.getOS()); 1089f09cf34dSArchibald Elliott EXPECT_EQ(Triple::UnknownEnvironment, T.getEnvironment()); 1090f09cf34dSArchibald Elliott EXPECT_TRUE(T.isArch32Bit()); 1091f09cf34dSArchibald Elliott 1092f09cf34dSArchibald Elliott T = Triple("dxil-unknown-shadermodel-pixel"); 1093f09cf34dSArchibald Elliott EXPECT_EQ(Triple::dxil, T.getArch()); 1094a2face49SS. Bharadwaj Yadavalli EXPECT_EQ(Triple::NoSubArch, T.getSubArch()); 1095f09cf34dSArchibald Elliott EXPECT_EQ(Triple::UnknownVendor, T.getVendor()); 1096f09cf34dSArchibald Elliott EXPECT_EQ(Triple::ShaderModel, T.getOS()); 1097f09cf34dSArchibald Elliott EXPECT_EQ(Triple::Pixel, T.getEnvironment()); 1098f09cf34dSArchibald Elliott EXPECT_FALSE(T.supportsCOMDAT()); 1099f09cf34dSArchibald Elliott 1100f09cf34dSArchibald Elliott T = Triple("dxil-unknown-shadermodel-vertex"); 1101f09cf34dSArchibald Elliott EXPECT_EQ(Triple::dxil, T.getArch()); 1102a2face49SS. Bharadwaj Yadavalli EXPECT_EQ(Triple::NoSubArch, T.getSubArch()); 1103f09cf34dSArchibald Elliott EXPECT_EQ(Triple::UnknownVendor, T.getVendor()); 1104f09cf34dSArchibald Elliott EXPECT_EQ(Triple::ShaderModel, T.getOS()); 1105f09cf34dSArchibald Elliott EXPECT_EQ(Triple::Vertex, T.getEnvironment()); 1106f09cf34dSArchibald Elliott EXPECT_FALSE(T.supportsCOMDAT()); 1107f09cf34dSArchibald Elliott 1108f09cf34dSArchibald Elliott T = Triple("dxil-unknown-shadermodel-geometry"); 1109f09cf34dSArchibald Elliott EXPECT_EQ(Triple::dxil, T.getArch()); 1110a2face49SS. Bharadwaj Yadavalli EXPECT_EQ(Triple::NoSubArch, T.getSubArch()); 1111f09cf34dSArchibald Elliott EXPECT_EQ(Triple::UnknownVendor, T.getVendor()); 1112f09cf34dSArchibald Elliott EXPECT_EQ(Triple::ShaderModel, T.getOS()); 1113f09cf34dSArchibald Elliott EXPECT_EQ(Triple::Geometry, T.getEnvironment()); 1114f09cf34dSArchibald Elliott EXPECT_FALSE(T.supportsCOMDAT()); 1115f09cf34dSArchibald Elliott 1116f09cf34dSArchibald Elliott T = Triple("dxil-unknown-shadermodel-hull"); 1117f09cf34dSArchibald Elliott EXPECT_EQ(Triple::dxil, T.getArch()); 1118a2face49SS. Bharadwaj Yadavalli EXPECT_EQ(Triple::NoSubArch, T.getSubArch()); 1119f09cf34dSArchibald Elliott EXPECT_EQ(Triple::UnknownVendor, T.getVendor()); 1120f09cf34dSArchibald Elliott EXPECT_EQ(Triple::ShaderModel, T.getOS()); 1121f09cf34dSArchibald Elliott EXPECT_EQ(Triple::Hull, T.getEnvironment()); 1122f09cf34dSArchibald Elliott EXPECT_FALSE(T.supportsCOMDAT()); 1123f09cf34dSArchibald Elliott 1124f09cf34dSArchibald Elliott T = Triple("dxil-unknown-shadermodel-domain"); 1125f09cf34dSArchibald Elliott EXPECT_EQ(Triple::dxil, T.getArch()); 1126a2face49SS. Bharadwaj Yadavalli EXPECT_EQ(Triple::NoSubArch, T.getSubArch()); 1127f09cf34dSArchibald Elliott EXPECT_EQ(Triple::UnknownVendor, T.getVendor()); 1128f09cf34dSArchibald Elliott EXPECT_EQ(Triple::ShaderModel, T.getOS()); 1129f09cf34dSArchibald Elliott EXPECT_EQ(Triple::Domain, T.getEnvironment()); 1130f09cf34dSArchibald Elliott EXPECT_FALSE(T.supportsCOMDAT()); 1131f09cf34dSArchibald Elliott 1132f09cf34dSArchibald Elliott T = Triple("dxil-unknown-shadermodel-compute"); 1133f09cf34dSArchibald Elliott EXPECT_EQ(Triple::dxil, T.getArch()); 1134a2face49SS. Bharadwaj Yadavalli EXPECT_EQ(Triple::NoSubArch, T.getSubArch()); 1135f09cf34dSArchibald Elliott EXPECT_EQ(Triple::UnknownVendor, T.getVendor()); 1136f09cf34dSArchibald Elliott EXPECT_EQ(Triple::ShaderModel, T.getOS()); 1137f09cf34dSArchibald Elliott EXPECT_EQ(Triple::Compute, T.getEnvironment()); 1138f09cf34dSArchibald Elliott EXPECT_FALSE(T.supportsCOMDAT()); 1139f09cf34dSArchibald Elliott 1140f09cf34dSArchibald Elliott T = Triple("dxil-unknown-shadermodel-library"); 1141f09cf34dSArchibald Elliott EXPECT_EQ(Triple::dxil, T.getArch()); 1142a2face49SS. Bharadwaj Yadavalli EXPECT_EQ(Triple::NoSubArch, T.getSubArch()); 1143f09cf34dSArchibald Elliott EXPECT_EQ(Triple::UnknownVendor, T.getVendor()); 1144f09cf34dSArchibald Elliott EXPECT_EQ(Triple::ShaderModel, T.getOS()); 1145f09cf34dSArchibald Elliott EXPECT_EQ(Triple::Library, T.getEnvironment()); 1146f09cf34dSArchibald Elliott EXPECT_FALSE(T.supportsCOMDAT()); 1147f09cf34dSArchibald Elliott 1148f09cf34dSArchibald Elliott T = Triple("dxil-unknown-shadermodel-raygeneration"); 1149f09cf34dSArchibald Elliott EXPECT_EQ(Triple::dxil, T.getArch()); 1150a2face49SS. Bharadwaj Yadavalli EXPECT_EQ(Triple::NoSubArch, T.getSubArch()); 1151f09cf34dSArchibald Elliott EXPECT_EQ(Triple::UnknownVendor, T.getVendor()); 1152f09cf34dSArchibald Elliott EXPECT_EQ(Triple::ShaderModel, T.getOS()); 1153f09cf34dSArchibald Elliott EXPECT_EQ(Triple::RayGeneration, T.getEnvironment()); 1154f09cf34dSArchibald Elliott EXPECT_FALSE(T.supportsCOMDAT()); 1155f09cf34dSArchibald Elliott 1156f09cf34dSArchibald Elliott T = Triple("dxil-unknown-shadermodel-intersection"); 1157f09cf34dSArchibald Elliott EXPECT_EQ(Triple::dxil, T.getArch()); 1158a2face49SS. Bharadwaj Yadavalli EXPECT_EQ(Triple::NoSubArch, T.getSubArch()); 1159f09cf34dSArchibald Elliott EXPECT_EQ(Triple::UnknownVendor, T.getVendor()); 1160f09cf34dSArchibald Elliott EXPECT_EQ(Triple::ShaderModel, T.getOS()); 1161f09cf34dSArchibald Elliott EXPECT_EQ(Triple::Intersection, T.getEnvironment()); 1162f09cf34dSArchibald Elliott EXPECT_FALSE(T.supportsCOMDAT()); 1163f09cf34dSArchibald Elliott 1164f09cf34dSArchibald Elliott T = Triple("dxil-unknown-shadermodel-anyhit"); 1165f09cf34dSArchibald Elliott EXPECT_EQ(Triple::dxil, T.getArch()); 1166a2face49SS. Bharadwaj Yadavalli EXPECT_EQ(Triple::NoSubArch, T.getSubArch()); 1167f09cf34dSArchibald Elliott EXPECT_EQ(Triple::UnknownVendor, T.getVendor()); 1168f09cf34dSArchibald Elliott EXPECT_EQ(Triple::ShaderModel, T.getOS()); 1169f09cf34dSArchibald Elliott EXPECT_EQ(Triple::AnyHit, T.getEnvironment()); 1170f09cf34dSArchibald Elliott EXPECT_FALSE(T.supportsCOMDAT()); 1171f09cf34dSArchibald Elliott 1172f09cf34dSArchibald Elliott T = Triple("dxil-unknown-shadermodel-closesthit"); 1173f09cf34dSArchibald Elliott EXPECT_EQ(Triple::dxil, T.getArch()); 1174a2face49SS. Bharadwaj Yadavalli EXPECT_EQ(Triple::NoSubArch, T.getSubArch()); 1175f09cf34dSArchibald Elliott EXPECT_EQ(Triple::UnknownVendor, T.getVendor()); 1176f09cf34dSArchibald Elliott EXPECT_EQ(Triple::ShaderModel, T.getOS()); 1177f09cf34dSArchibald Elliott EXPECT_EQ(Triple::ClosestHit, T.getEnvironment()); 1178f09cf34dSArchibald Elliott EXPECT_FALSE(T.supportsCOMDAT()); 1179f09cf34dSArchibald Elliott 1180f09cf34dSArchibald Elliott T = Triple("dxil-unknown-shadermodel-miss"); 1181f09cf34dSArchibald Elliott EXPECT_EQ(Triple::dxil, T.getArch()); 1182a2face49SS. Bharadwaj Yadavalli EXPECT_EQ(Triple::NoSubArch, T.getSubArch()); 1183f09cf34dSArchibald Elliott EXPECT_EQ(Triple::UnknownVendor, T.getVendor()); 1184f09cf34dSArchibald Elliott EXPECT_EQ(Triple::ShaderModel, T.getOS()); 1185f09cf34dSArchibald Elliott EXPECT_EQ(Triple::Miss, T.getEnvironment()); 1186f09cf34dSArchibald Elliott EXPECT_FALSE(T.supportsCOMDAT()); 1187f09cf34dSArchibald Elliott 1188f09cf34dSArchibald Elliott T = Triple("dxil-unknown-shadermodel-callable"); 1189f09cf34dSArchibald Elliott EXPECT_EQ(Triple::dxil, T.getArch()); 1190a2face49SS. Bharadwaj Yadavalli EXPECT_EQ(Triple::NoSubArch, T.getSubArch()); 1191f09cf34dSArchibald Elliott EXPECT_EQ(Triple::UnknownVendor, T.getVendor()); 1192f09cf34dSArchibald Elliott EXPECT_EQ(Triple::ShaderModel, T.getOS()); 1193f09cf34dSArchibald Elliott EXPECT_EQ(Triple::Callable, T.getEnvironment()); 1194f09cf34dSArchibald Elliott EXPECT_FALSE(T.supportsCOMDAT()); 1195f09cf34dSArchibald Elliott 1196f09cf34dSArchibald Elliott T = Triple("dxil-unknown-shadermodel-mesh"); 1197f09cf34dSArchibald Elliott EXPECT_EQ(Triple::dxil, T.getArch()); 1198a2face49SS. Bharadwaj Yadavalli EXPECT_EQ(Triple::NoSubArch, T.getSubArch()); 1199f09cf34dSArchibald Elliott EXPECT_EQ(Triple::UnknownVendor, T.getVendor()); 1200f09cf34dSArchibald Elliott EXPECT_EQ(Triple::ShaderModel, T.getOS()); 1201f09cf34dSArchibald Elliott EXPECT_EQ(Triple::Mesh, T.getEnvironment()); 1202f09cf34dSArchibald Elliott EXPECT_FALSE(T.supportsCOMDAT()); 1203f09cf34dSArchibald Elliott 1204f09cf34dSArchibald Elliott T = Triple("dxil-unknown-shadermodel-amplification"); 1205f09cf34dSArchibald Elliott EXPECT_EQ(Triple::dxil, T.getArch()); 1206a2face49SS. Bharadwaj Yadavalli EXPECT_EQ(Triple::NoSubArch, T.getSubArch()); 1207f09cf34dSArchibald Elliott EXPECT_EQ(Triple::UnknownVendor, T.getVendor()); 1208f09cf34dSArchibald Elliott EXPECT_EQ(Triple::ShaderModel, T.getOS()); 1209f09cf34dSArchibald Elliott EXPECT_EQ(Triple::Amplification, T.getEnvironment()); 1210f09cf34dSArchibald Elliott EXPECT_FALSE(T.supportsCOMDAT()); 1211f09cf34dSArchibald Elliott 1212a2face49SS. Bharadwaj Yadavalli T = Triple("dxilv1.0-unknown-unknown"); 1213a2face49SS. Bharadwaj Yadavalli EXPECT_EQ(Triple::dxil, T.getArch()); 1214a2face49SS. Bharadwaj Yadavalli EXPECT_EQ(Triple::DXILSubArch_v1_0, T.getSubArch()); 1215a2face49SS. Bharadwaj Yadavalli EXPECT_EQ(Triple::UnknownVendor, T.getVendor()); 1216a2face49SS. Bharadwaj Yadavalli EXPECT_EQ(Triple::UnknownOS, T.getOS()); 1217a2face49SS. Bharadwaj Yadavalli 1218a2face49SS. Bharadwaj Yadavalli T = Triple("dxilv1.1-unknown-unknown"); 1219a2face49SS. Bharadwaj Yadavalli EXPECT_EQ(Triple::dxil, T.getArch()); 1220a2face49SS. Bharadwaj Yadavalli EXPECT_EQ(Triple::DXILSubArch_v1_1, T.getSubArch()); 1221a2face49SS. Bharadwaj Yadavalli EXPECT_EQ(Triple::UnknownVendor, T.getVendor()); 1222a2face49SS. Bharadwaj Yadavalli EXPECT_EQ(Triple::UnknownOS, T.getOS()); 1223a2face49SS. Bharadwaj Yadavalli 1224a2face49SS. Bharadwaj Yadavalli T = Triple("dxilv1.2-unknown-unknown"); 1225a2face49SS. Bharadwaj Yadavalli EXPECT_EQ(Triple::dxil, T.getArch()); 1226a2face49SS. Bharadwaj Yadavalli EXPECT_EQ(Triple::DXILSubArch_v1_2, T.getSubArch()); 1227a2face49SS. Bharadwaj Yadavalli EXPECT_EQ(Triple::UnknownVendor, T.getVendor()); 1228a2face49SS. Bharadwaj Yadavalli EXPECT_EQ(Triple::UnknownOS, T.getOS()); 1229a2face49SS. Bharadwaj Yadavalli 1230a2face49SS. Bharadwaj Yadavalli T = Triple("dxilv1.3-unknown-unknown"); 1231a2face49SS. Bharadwaj Yadavalli EXPECT_EQ(Triple::dxil, T.getArch()); 1232a2face49SS. Bharadwaj Yadavalli EXPECT_EQ(Triple::DXILSubArch_v1_3, T.getSubArch()); 1233a2face49SS. Bharadwaj Yadavalli EXPECT_EQ(Triple::UnknownVendor, T.getVendor()); 1234a2face49SS. Bharadwaj Yadavalli EXPECT_EQ(Triple::UnknownOS, T.getOS()); 1235a2face49SS. Bharadwaj Yadavalli 1236a2face49SS. Bharadwaj Yadavalli T = Triple("dxilv1.4-unknown-unknown"); 1237a2face49SS. Bharadwaj Yadavalli EXPECT_EQ(Triple::dxil, T.getArch()); 1238a2face49SS. Bharadwaj Yadavalli EXPECT_EQ(Triple::DXILSubArch_v1_4, T.getSubArch()); 1239a2face49SS. Bharadwaj Yadavalli EXPECT_EQ(Triple::UnknownVendor, T.getVendor()); 1240a2face49SS. Bharadwaj Yadavalli EXPECT_EQ(Triple::UnknownOS, T.getOS()); 1241a2face49SS. Bharadwaj Yadavalli 1242a2face49SS. Bharadwaj Yadavalli T = Triple("dxilv1.5-unknown-unknown"); 1243a2face49SS. Bharadwaj Yadavalli EXPECT_EQ(Triple::dxil, T.getArch()); 1244a2face49SS. Bharadwaj Yadavalli EXPECT_EQ(Triple::DXILSubArch_v1_5, T.getSubArch()); 1245a2face49SS. Bharadwaj Yadavalli EXPECT_EQ(Triple::UnknownVendor, T.getVendor()); 1246a2face49SS. Bharadwaj Yadavalli EXPECT_EQ(Triple::UnknownOS, T.getOS()); 1247a2face49SS. Bharadwaj Yadavalli 1248a2face49SS. Bharadwaj Yadavalli T = Triple("dxilv1.6-unknown-unknown"); 1249a2face49SS. Bharadwaj Yadavalli EXPECT_EQ(Triple::dxil, T.getArch()); 1250a2face49SS. Bharadwaj Yadavalli EXPECT_EQ(Triple::DXILSubArch_v1_6, T.getSubArch()); 1251a2face49SS. Bharadwaj Yadavalli EXPECT_EQ(Triple::UnknownVendor, T.getVendor()); 1252a2face49SS. Bharadwaj Yadavalli EXPECT_EQ(Triple::UnknownOS, T.getOS()); 1253a2face49SS. Bharadwaj Yadavalli 1254a2face49SS. Bharadwaj Yadavalli T = Triple("dxilv1.7-unknown-unknown"); 1255a2face49SS. Bharadwaj Yadavalli EXPECT_EQ(Triple::dxil, T.getArch()); 1256a2face49SS. Bharadwaj Yadavalli EXPECT_EQ(Triple::DXILSubArch_v1_7, T.getSubArch()); 1257a2face49SS. Bharadwaj Yadavalli EXPECT_EQ(Triple::UnknownVendor, T.getVendor()); 1258a2face49SS. Bharadwaj Yadavalli EXPECT_EQ(Triple::UnknownOS, T.getOS()); 1259a2face49SS. Bharadwaj Yadavalli 1260a2face49SS. Bharadwaj Yadavalli T = Triple("dxilv1.8-unknown-unknown"); 1261a2face49SS. Bharadwaj Yadavalli EXPECT_EQ(Triple::dxil, T.getArch()); 1262a2face49SS. Bharadwaj Yadavalli EXPECT_EQ(Triple::DXILSubArch_v1_8, T.getSubArch()); 1263a2face49SS. Bharadwaj Yadavalli EXPECT_EQ(Triple::UnknownVendor, T.getVendor()); 1264a2face49SS. Bharadwaj Yadavalli EXPECT_EQ(Triple::UnknownOS, T.getOS()); 1265a2face49SS. Bharadwaj Yadavalli 1266a2face49SS. Bharadwaj Yadavalli // Check specification of unknown SubArch results in 1267a2face49SS. Bharadwaj Yadavalli // unknown architecture. 1268a2face49SS. Bharadwaj Yadavalli T = Triple("dxilv1.999-unknown-unknown"); 1269a2face49SS. Bharadwaj Yadavalli EXPECT_EQ(Triple::UnknownArch, T.getArch()); 1270a2face49SS. Bharadwaj Yadavalli EXPECT_EQ(Triple::NoSubArch, T.getSubArch()); 1271a2face49SS. Bharadwaj Yadavalli EXPECT_EQ(Triple::UnknownVendor, T.getVendor()); 1272a2face49SS. Bharadwaj Yadavalli EXPECT_EQ(Triple::UnknownOS, T.getOS()); 1273a2face49SS. Bharadwaj Yadavalli 1274a2face49SS. Bharadwaj Yadavalli T = Triple("dxil-unknown-unknown"); 1275a2face49SS. Bharadwaj Yadavalli EXPECT_EQ(Triple::dxil, T.getArch()); 1276a2face49SS. Bharadwaj Yadavalli EXPECT_EQ(Triple::NoSubArch, T.getSubArch()); 1277a2face49SS. Bharadwaj Yadavalli EXPECT_EQ(Triple::UnknownVendor, T.getVendor()); 1278a2face49SS. Bharadwaj Yadavalli EXPECT_EQ(Triple::UnknownOS, T.getOS()); 1279a2face49SS. Bharadwaj Yadavalli 12808c618e8fSAndrei Safronov T = Triple("xtensa"); 12818c618e8fSAndrei Safronov EXPECT_EQ(Triple::xtensa, T.getArch()); 12828c618e8fSAndrei Safronov EXPECT_EQ(Triple::UnknownVendor, T.getVendor()); 12838c618e8fSAndrei Safronov EXPECT_EQ(Triple::UnknownOS, T.getOS()); 12848c618e8fSAndrei Safronov EXPECT_EQ(Triple::UnknownEnvironment, T.getEnvironment()); 12858c618e8fSAndrei Safronov 12868c618e8fSAndrei Safronov T = Triple("xtensa-unknown-unknown"); 12878c618e8fSAndrei Safronov EXPECT_EQ(Triple::xtensa, T.getArch()); 12888c618e8fSAndrei Safronov EXPECT_EQ(Triple::UnknownVendor, T.getVendor()); 12898c618e8fSAndrei Safronov EXPECT_EQ(Triple::UnknownOS, T.getOS()); 12908c618e8fSAndrei Safronov EXPECT_EQ(Triple::UnknownEnvironment, T.getEnvironment()); 12918c618e8fSAndrei Safronov 1292c417b7a6SPavel Kosov T = Triple("arm-unknown-linux-ohos"); 1293c417b7a6SPavel Kosov EXPECT_EQ(Triple::arm, T.getArch()); 1294c417b7a6SPavel Kosov EXPECT_EQ(Triple::UnknownVendor, T.getVendor()); 1295c417b7a6SPavel Kosov EXPECT_EQ(Triple::Linux, T.getOS()); 1296c417b7a6SPavel Kosov EXPECT_EQ(Triple::OpenHOS, T.getEnvironment()); 1297c417b7a6SPavel Kosov 1298c417b7a6SPavel Kosov T = Triple("arm-unknown-liteos"); 1299c417b7a6SPavel Kosov EXPECT_EQ(Triple::arm, T.getArch()); 1300c417b7a6SPavel Kosov EXPECT_EQ(Triple::UnknownVendor, T.getVendor()); 1301c417b7a6SPavel Kosov EXPECT_EQ(Triple::LiteOS, T.getOS()); 1302c417b7a6SPavel Kosov EXPECT_EQ(Triple::UnknownEnvironment, T.getEnvironment()); 1303c417b7a6SPavel Kosov 13047ef6b21cSAndrew Kaster T = Triple("x86_64-pc-serenity"); 13057ef6b21cSAndrew Kaster EXPECT_EQ(Triple::x86_64, T.getArch()); 13067ef6b21cSAndrew Kaster EXPECT_EQ(Triple::PC, T.getVendor()); 13077ef6b21cSAndrew Kaster EXPECT_EQ(Triple::Serenity, T.getOS()); 13087ef6b21cSAndrew Kaster EXPECT_EQ(Triple::UnknownEnvironment, T.getEnvironment()); 13097ef6b21cSAndrew Kaster 13107ef6b21cSAndrew Kaster T = Triple("aarch64-pc-serenity"); 13117ef6b21cSAndrew Kaster EXPECT_EQ(Triple::aarch64, T.getArch()); 13127ef6b21cSAndrew Kaster EXPECT_EQ(Triple::PC, T.getVendor()); 13137ef6b21cSAndrew Kaster EXPECT_EQ(Triple::Serenity, T.getOS()); 13147ef6b21cSAndrew Kaster EXPECT_EQ(Triple::UnknownEnvironment, T.getEnvironment()); 13157ef6b21cSAndrew Kaster 1316146fd7cdSDaniil Kovalev T = Triple("aarch64-unknown-linux-pauthtest"); 1317146fd7cdSDaniil Kovalev EXPECT_EQ(Triple::aarch64, T.getArch()); 1318146fd7cdSDaniil Kovalev EXPECT_EQ(Triple::UnknownVendor, T.getVendor()); 1319146fd7cdSDaniil Kovalev EXPECT_EQ(Triple::Linux, T.getOS()); 1320146fd7cdSDaniil Kovalev EXPECT_EQ(Triple::PAuthTest, T.getEnvironment()); 1321146fd7cdSDaniil Kovalev 1322387b37afSMichał Górny // Gentoo time64 triples 1323387b37afSMichał Górny T = Triple("i686-pc-linux-gnut64"); 1324387b37afSMichał Górny EXPECT_EQ(Triple::x86, T.getArch()); 1325387b37afSMichał Górny EXPECT_EQ(Triple::PC, T.getVendor()); 1326387b37afSMichał Górny EXPECT_EQ(Triple::Linux, T.getOS()); 1327387b37afSMichał Górny EXPECT_EQ(Triple::GNUT64, T.getEnvironment()); 1328387b37afSMichał Górny EXPECT_TRUE(T.isTime64ABI()); 1329387b37afSMichał Górny 1330387b37afSMichał Górny T = Triple("armv5tel-softfloat-linux-gnueabit64"); 1331387b37afSMichał Górny EXPECT_EQ(Triple::arm, T.getArch()); 1332387b37afSMichał Górny EXPECT_EQ(Triple::UnknownVendor, T.getVendor()); 1333387b37afSMichał Górny EXPECT_EQ(Triple::Linux, T.getOS()); 1334387b37afSMichał Górny EXPECT_EQ(Triple::GNUEABIT64, T.getEnvironment()); 1335387b37afSMichał Górny EXPECT_TRUE(T.isTime64ABI()); 1336387b37afSMichał Górny 1337387b37afSMichał Górny T = Triple("armv7a-unknown-linux-gnueabihft64"); 1338387b37afSMichał Górny EXPECT_EQ(Triple::arm, T.getArch()); 1339387b37afSMichał Górny EXPECT_EQ(Triple::UnknownVendor, T.getVendor()); 1340387b37afSMichał Górny EXPECT_EQ(Triple::Linux, T.getOS()); 1341387b37afSMichał Górny EXPECT_EQ(Triple::GNUEABIHFT64, T.getEnvironment()); 1342387b37afSMichał Górny EXPECT_TRUE(T.isTime64ABI()); 1343387b37afSMichał Górny EXPECT_TRUE(T.isHardFloatABI()); 1344387b37afSMichał Górny 13457672216eSJoseph Huber T = Triple("x86_64-pc-linux-llvm"); 13467672216eSJoseph Huber EXPECT_EQ(Triple::x86_64, T.getArch()); 13477672216eSJoseph Huber EXPECT_EQ(Triple::PC, T.getVendor()); 13487672216eSJoseph Huber EXPECT_EQ(Triple::Linux, T.getOS()); 13497672216eSJoseph Huber EXPECT_EQ(Triple::LLVM, T.getEnvironment()); 13507672216eSJoseph Huber 13511c16807dSNick Sarnie T = Triple("spirv64-intel-unknown"); 13521c16807dSNick Sarnie EXPECT_EQ(Triple::spirv64, T.getArch()); 13531c16807dSNick Sarnie EXPECT_EQ(Triple::Intel, T.getVendor()); 13541c16807dSNick Sarnie EXPECT_EQ(Triple::UnknownOS, T.getOS()); 13551c16807dSNick Sarnie EXPECT_EQ(Triple::UnknownEnvironment, T.getEnvironment()); 13561c16807dSNick Sarnie 1357f09cf34dSArchibald Elliott T = Triple("huh"); 1358f09cf34dSArchibald Elliott EXPECT_EQ(Triple::UnknownArch, T.getArch()); 1359f09cf34dSArchibald Elliott } 1360f09cf34dSArchibald Elliott 1361f09cf34dSArchibald Elliott static std::string Join(StringRef A, StringRef B, StringRef C) { 1362f09cf34dSArchibald Elliott std::string Str = std::string(A); 1363f09cf34dSArchibald Elliott Str += '-'; 1364f09cf34dSArchibald Elliott Str += B; 1365f09cf34dSArchibald Elliott Str += '-'; 1366f09cf34dSArchibald Elliott Str += C; 1367f09cf34dSArchibald Elliott return Str; 1368f09cf34dSArchibald Elliott } 1369f09cf34dSArchibald Elliott 1370f09cf34dSArchibald Elliott static std::string Join(StringRef A, StringRef B, StringRef C, StringRef D) { 1371f09cf34dSArchibald Elliott std::string Str = std::string(A); 1372f09cf34dSArchibald Elliott Str += '-'; 1373f09cf34dSArchibald Elliott Str += B; 1374f09cf34dSArchibald Elliott Str += '-'; 1375f09cf34dSArchibald Elliott Str += C; 1376f09cf34dSArchibald Elliott Str += '-'; 1377f09cf34dSArchibald Elliott Str += D; 1378f09cf34dSArchibald Elliott return Str; 1379f09cf34dSArchibald Elliott } 1380f09cf34dSArchibald Elliott 1381f09cf34dSArchibald Elliott TEST(TripleTest, Normalization) { 1382f09cf34dSArchibald Elliott 1383f09cf34dSArchibald Elliott EXPECT_EQ("unknown", Triple::normalize("")); 1384f09cf34dSArchibald Elliott EXPECT_EQ("unknown-unknown", Triple::normalize("-")); 1385f09cf34dSArchibald Elliott EXPECT_EQ("unknown-unknown-unknown", Triple::normalize("--")); 1386f09cf34dSArchibald Elliott EXPECT_EQ("unknown-unknown-unknown-unknown", Triple::normalize("---")); 1387f09cf34dSArchibald Elliott EXPECT_EQ("unknown-unknown-unknown-unknown-unknown", 1388f09cf34dSArchibald Elliott Triple::normalize("----")); 1389f09cf34dSArchibald Elliott 1390f09cf34dSArchibald Elliott EXPECT_EQ("a", Triple::normalize("a")); 1391f09cf34dSArchibald Elliott EXPECT_EQ("a-b", Triple::normalize("a-b")); 1392f09cf34dSArchibald Elliott EXPECT_EQ("a-b-c", Triple::normalize("a-b-c")); 1393f09cf34dSArchibald Elliott EXPECT_EQ("a-b-c-d", Triple::normalize("a-b-c-d")); 1394f09cf34dSArchibald Elliott 1395f09cf34dSArchibald Elliott EXPECT_EQ("i386-b-c", Triple::normalize("i386-b-c")); 1396f09cf34dSArchibald Elliott EXPECT_EQ("i386-a-c", Triple::normalize("a-i386-c")); 1397f09cf34dSArchibald Elliott EXPECT_EQ("i386-a-b", Triple::normalize("a-b-i386")); 1398f09cf34dSArchibald Elliott EXPECT_EQ("i386-a-b-c", Triple::normalize("a-b-c-i386")); 1399f09cf34dSArchibald Elliott 1400f09cf34dSArchibald Elliott EXPECT_EQ("a-pc-c", Triple::normalize("a-pc-c")); 1401f09cf34dSArchibald Elliott EXPECT_EQ("unknown-pc-b-c", Triple::normalize("pc-b-c")); 1402f09cf34dSArchibald Elliott EXPECT_EQ("a-pc-b", Triple::normalize("a-b-pc")); 1403f09cf34dSArchibald Elliott EXPECT_EQ("a-pc-b-c", Triple::normalize("a-b-c-pc")); 1404f09cf34dSArchibald Elliott 1405f09cf34dSArchibald Elliott EXPECT_EQ("a-b-linux", Triple::normalize("a-b-linux")); 1406f09cf34dSArchibald Elliott EXPECT_EQ("unknown-unknown-linux-b-c", Triple::normalize("linux-b-c")); 1407f09cf34dSArchibald Elliott EXPECT_EQ("a-unknown-linux-c", Triple::normalize("a-linux-c")); 1408f09cf34dSArchibald Elliott 1409f09cf34dSArchibald Elliott EXPECT_EQ("i386-pc-a", Triple::normalize("a-pc-i386")); 1410f09cf34dSArchibald Elliott EXPECT_EQ("i386-pc-unknown", Triple::normalize("-pc-i386")); 1411f09cf34dSArchibald Elliott EXPECT_EQ("unknown-pc-linux-c", Triple::normalize("linux-pc-c")); 1412f09cf34dSArchibald Elliott EXPECT_EQ("unknown-pc-linux", Triple::normalize("linux-pc-")); 1413f09cf34dSArchibald Elliott 1414f09cf34dSArchibald Elliott EXPECT_EQ("i386", Triple::normalize("i386")); 1415f09cf34dSArchibald Elliott EXPECT_EQ("unknown-pc", Triple::normalize("pc")); 1416f09cf34dSArchibald Elliott EXPECT_EQ("unknown-unknown-linux", Triple::normalize("linux")); 1417f09cf34dSArchibald Elliott 1418f09cf34dSArchibald Elliott EXPECT_EQ("x86_64-unknown-linux-gnu", Triple::normalize("x86_64-gnu-linux")); 1419f09cf34dSArchibald Elliott 1420*ebef4406SShilei Tian EXPECT_EQ("a-unknown-unknown", 1421*ebef4406SShilei Tian Triple::normalize("a", Triple::CanonicalForm::THREE_IDENT)); 1422*ebef4406SShilei Tian EXPECT_EQ("a-b-unknown", 1423*ebef4406SShilei Tian Triple::normalize("a-b", Triple::CanonicalForm::THREE_IDENT)); 1424*ebef4406SShilei Tian EXPECT_EQ("a-b-c", 1425*ebef4406SShilei Tian Triple::normalize("a-b-c", Triple::CanonicalForm::THREE_IDENT)); 1426*ebef4406SShilei Tian EXPECT_EQ("a-b-c", 1427*ebef4406SShilei Tian Triple::normalize("a-b-c-d", Triple::CanonicalForm::THREE_IDENT)); 1428*ebef4406SShilei Tian EXPECT_EQ("a-b-c", 1429*ebef4406SShilei Tian Triple::normalize("a-b-c-d-e", Triple::CanonicalForm::THREE_IDENT)); 1430*ebef4406SShilei Tian 1431*ebef4406SShilei Tian EXPECT_EQ("a-unknown-unknown-unknown", 1432*ebef4406SShilei Tian Triple::normalize("a", Triple::CanonicalForm::FOUR_IDENT)); 1433*ebef4406SShilei Tian EXPECT_EQ("a-b-unknown-unknown", 1434*ebef4406SShilei Tian Triple::normalize("a-b", Triple::CanonicalForm::FOUR_IDENT)); 1435*ebef4406SShilei Tian EXPECT_EQ("a-b-c-unknown", 1436*ebef4406SShilei Tian Triple::normalize("a-b-c", Triple::CanonicalForm::FOUR_IDENT)); 1437*ebef4406SShilei Tian EXPECT_EQ("a-b-c-d", 1438*ebef4406SShilei Tian Triple::normalize("a-b-c-d", Triple::CanonicalForm::FOUR_IDENT)); 1439*ebef4406SShilei Tian EXPECT_EQ("a-b-c-d", 1440*ebef4406SShilei Tian Triple::normalize("a-b-c-d-e", Triple::CanonicalForm::FOUR_IDENT)); 1441*ebef4406SShilei Tian 1442*ebef4406SShilei Tian EXPECT_EQ("a-unknown-unknown-unknown-unknown", 1443*ebef4406SShilei Tian Triple::normalize("a", Triple::CanonicalForm::FIVE_IDENT)); 1444*ebef4406SShilei Tian EXPECT_EQ("a-b-unknown-unknown-unknown", 1445*ebef4406SShilei Tian Triple::normalize("a-b", Triple::CanonicalForm::FIVE_IDENT)); 1446*ebef4406SShilei Tian EXPECT_EQ("a-b-c-unknown-unknown", 1447*ebef4406SShilei Tian Triple::normalize("a-b-c", Triple::CanonicalForm::FIVE_IDENT)); 1448*ebef4406SShilei Tian EXPECT_EQ("a-b-c-d-unknown", 1449*ebef4406SShilei Tian Triple::normalize("a-b-c-d", Triple::CanonicalForm::FIVE_IDENT)); 1450*ebef4406SShilei Tian EXPECT_EQ("a-b-c-d-e", 1451*ebef4406SShilei Tian Triple::normalize("a-b-c-d-e", Triple::CanonicalForm::FIVE_IDENT)); 1452*ebef4406SShilei Tian 1453*ebef4406SShilei Tian EXPECT_EQ("i386-b-c-unknown", 1454*ebef4406SShilei Tian Triple::normalize("i386-b-c", Triple::CanonicalForm::FOUR_IDENT)); 1455*ebef4406SShilei Tian EXPECT_EQ("i386-b-c-unknown-unknown", 1456*ebef4406SShilei Tian Triple::normalize("i386-b-c", Triple::CanonicalForm::FIVE_IDENT)); 1457*ebef4406SShilei Tian 1458*ebef4406SShilei Tian EXPECT_EQ("i386-a-c-unknown", 1459*ebef4406SShilei Tian Triple::normalize("a-i386-c", Triple::CanonicalForm::FOUR_IDENT)); 1460*ebef4406SShilei Tian EXPECT_EQ("i386-a-c-unknown-unknown", 1461*ebef4406SShilei Tian Triple::normalize("a-i386-c", Triple::CanonicalForm::FIVE_IDENT)); 1462*ebef4406SShilei Tian 1463*ebef4406SShilei Tian EXPECT_EQ("i386-a-b-unknown", 1464*ebef4406SShilei Tian Triple::normalize("a-b-i386", Triple::CanonicalForm::FOUR_IDENT)); 1465*ebef4406SShilei Tian EXPECT_EQ("i386-a-b-c", 1466*ebef4406SShilei Tian Triple::normalize("a-b-c-i386", Triple::CanonicalForm::FOUR_IDENT)); 1467*ebef4406SShilei Tian 1468*ebef4406SShilei Tian EXPECT_EQ("a-pc-c-unknown", 1469*ebef4406SShilei Tian Triple::normalize("a-pc-c", Triple::CanonicalForm::FOUR_IDENT)); 1470*ebef4406SShilei Tian EXPECT_EQ("unknown-pc-b-c", 1471*ebef4406SShilei Tian Triple::normalize("pc-b-c", Triple::CanonicalForm::FOUR_IDENT)); 1472*ebef4406SShilei Tian EXPECT_EQ("a-pc-b-unknown", 1473*ebef4406SShilei Tian Triple::normalize("a-b-pc", Triple::CanonicalForm::FOUR_IDENT)); 1474*ebef4406SShilei Tian EXPECT_EQ("a-pc-b-c", 1475*ebef4406SShilei Tian Triple::normalize("a-b-c-pc", Triple::CanonicalForm::FOUR_IDENT)); 1476*ebef4406SShilei Tian 1477*ebef4406SShilei Tian EXPECT_EQ("a-b-linux-unknown", 1478*ebef4406SShilei Tian Triple::normalize("a-b-linux", Triple::CanonicalForm::FOUR_IDENT)); 1479*ebef4406SShilei Tian // We lose `-c` here as expected. 1480*ebef4406SShilei Tian EXPECT_EQ("unknown-unknown-linux-b", 1481*ebef4406SShilei Tian Triple::normalize("linux-b-c", Triple::CanonicalForm::FOUR_IDENT)); 1482*ebef4406SShilei Tian EXPECT_EQ("a-unknown-linux-c", 1483*ebef4406SShilei Tian Triple::normalize("a-linux-c", Triple::CanonicalForm::FOUR_IDENT)); 1484*ebef4406SShilei Tian 1485*ebef4406SShilei Tian EXPECT_EQ("i386-pc-a-unknown", 1486*ebef4406SShilei Tian Triple::normalize("a-pc-i386", Triple::CanonicalForm::FOUR_IDENT)); 1487*ebef4406SShilei Tian EXPECT_EQ("i386-pc-unknown-unknown", 1488*ebef4406SShilei Tian Triple::normalize("-pc-i386", Triple::CanonicalForm::FOUR_IDENT)); 1489*ebef4406SShilei Tian EXPECT_EQ("unknown-pc-linux-c", 1490*ebef4406SShilei Tian Triple::normalize("linux-pc-c", Triple::CanonicalForm::FOUR_IDENT)); 1491*ebef4406SShilei Tian EXPECT_EQ("unknown-pc-linux-unknown", 1492*ebef4406SShilei Tian Triple::normalize("linux-pc-", Triple::CanonicalForm::FOUR_IDENT)); 1493*ebef4406SShilei Tian 1494*ebef4406SShilei Tian EXPECT_EQ("i386-unknown-unknown-unknown", 1495*ebef4406SShilei Tian Triple::normalize("i386", Triple::CanonicalForm::FOUR_IDENT)); 1496*ebef4406SShilei Tian EXPECT_EQ("unknown-pc-unknown-unknown", 1497*ebef4406SShilei Tian Triple::normalize("pc", Triple::CanonicalForm::FOUR_IDENT)); 1498*ebef4406SShilei Tian EXPECT_EQ("unknown-unknown-linux-unknown", 1499*ebef4406SShilei Tian Triple::normalize("linux", Triple::CanonicalForm::FOUR_IDENT)); 1500*ebef4406SShilei Tian 1501*ebef4406SShilei Tian EXPECT_EQ( 1502*ebef4406SShilei Tian "x86_64-unknown-linux-gnu", 1503*ebef4406SShilei Tian Triple::normalize("x86_64-gnu-linux", Triple::CanonicalForm::FOUR_IDENT)); 1504*ebef4406SShilei Tian 1505*ebef4406SShilei Tian EXPECT_EQ("i386-a-b-unknown-unknown", 1506*ebef4406SShilei Tian Triple::normalize("a-b-i386", Triple::CanonicalForm::FIVE_IDENT)); 1507*ebef4406SShilei Tian EXPECT_EQ("i386-a-b-c-unknown", 1508*ebef4406SShilei Tian Triple::normalize("a-b-c-i386", Triple::CanonicalForm::FIVE_IDENT)); 1509*ebef4406SShilei Tian 1510*ebef4406SShilei Tian EXPECT_EQ("a-pc-c-unknown-unknown", 1511*ebef4406SShilei Tian Triple::normalize("a-pc-c", Triple::CanonicalForm::FIVE_IDENT)); 1512*ebef4406SShilei Tian EXPECT_EQ("unknown-pc-b-c-unknown", 1513*ebef4406SShilei Tian Triple::normalize("pc-b-c", Triple::CanonicalForm::FIVE_IDENT)); 1514*ebef4406SShilei Tian EXPECT_EQ("a-pc-b-unknown-unknown", 1515*ebef4406SShilei Tian Triple::normalize("a-b-pc", Triple::CanonicalForm::FIVE_IDENT)); 1516*ebef4406SShilei Tian EXPECT_EQ("a-pc-b-c-unknown", 1517*ebef4406SShilei Tian Triple::normalize("a-b-c-pc", Triple::CanonicalForm::FIVE_IDENT)); 1518*ebef4406SShilei Tian 1519*ebef4406SShilei Tian EXPECT_EQ("a-b-linux-unknown-unknown", 1520*ebef4406SShilei Tian Triple::normalize("a-b-linux", Triple::CanonicalForm::FIVE_IDENT)); 1521*ebef4406SShilei Tian EXPECT_EQ("unknown-unknown-linux-b-c", 1522*ebef4406SShilei Tian Triple::normalize("linux-b-c", Triple::CanonicalForm::FIVE_IDENT)); 1523*ebef4406SShilei Tian EXPECT_EQ("a-unknown-linux-c-unknown", 1524*ebef4406SShilei Tian Triple::normalize("a-linux-c", Triple::CanonicalForm::FIVE_IDENT)); 1525*ebef4406SShilei Tian 1526*ebef4406SShilei Tian EXPECT_EQ("i386-pc-a-unknown-unknown", 1527*ebef4406SShilei Tian Triple::normalize("a-pc-i386", Triple::CanonicalForm::FIVE_IDENT)); 1528*ebef4406SShilei Tian EXPECT_EQ("i386-pc-unknown-unknown-unknown", 1529*ebef4406SShilei Tian Triple::normalize("-pc-i386", Triple::CanonicalForm::FIVE_IDENT)); 1530*ebef4406SShilei Tian EXPECT_EQ("unknown-pc-linux-c-unknown", 1531*ebef4406SShilei Tian Triple::normalize("linux-pc-c", Triple::CanonicalForm::FIVE_IDENT)); 1532*ebef4406SShilei Tian EXPECT_EQ("unknown-pc-linux-unknown-unknown", 1533*ebef4406SShilei Tian Triple::normalize("linux-pc-", Triple::CanonicalForm::FIVE_IDENT)); 1534*ebef4406SShilei Tian 1535*ebef4406SShilei Tian EXPECT_EQ("i386-unknown-unknown-unknown-unknown", 1536*ebef4406SShilei Tian Triple::normalize("i386", Triple::CanonicalForm::FIVE_IDENT)); 1537*ebef4406SShilei Tian EXPECT_EQ("unknown-pc-unknown-unknown-unknown", 1538*ebef4406SShilei Tian Triple::normalize("pc", Triple::CanonicalForm::FIVE_IDENT)); 1539*ebef4406SShilei Tian EXPECT_EQ("unknown-unknown-linux-unknown-unknown", 1540*ebef4406SShilei Tian Triple::normalize("linux", Triple::CanonicalForm::FIVE_IDENT)); 1541*ebef4406SShilei Tian 1542*ebef4406SShilei Tian EXPECT_EQ( 1543*ebef4406SShilei Tian "x86_64-unknown-linux-gnu-unknown", 1544*ebef4406SShilei Tian Triple::normalize("x86_64-gnu-linux", Triple::CanonicalForm::FIVE_IDENT)); 1545*ebef4406SShilei Tian 1546f09cf34dSArchibald Elliott // Check that normalizing a permutated set of valid components returns a 1547f09cf34dSArchibald Elliott // triple with the unpermuted components. 1548f09cf34dSArchibald Elliott // 1549f09cf34dSArchibald Elliott // We don't check every possible combination. For the set of architectures A, 1550f09cf34dSArchibald Elliott // vendors V, operating systems O, and environments E, that would require |A| 1551f09cf34dSArchibald Elliott // * |V| * |O| * |E| * 4! tests. Instead we check every option for any given 1552f09cf34dSArchibald Elliott // slot and make sure it gets normalized to the correct position from every 1553f09cf34dSArchibald Elliott // permutation. This should cover the core logic while being a tractable 1554f09cf34dSArchibald Elliott // number of tests at (|A| + |V| + |O| + |E|) * 4!. 1555f09cf34dSArchibald Elliott auto FirstArchType = Triple::ArchType(Triple::UnknownArch + 1); 1556f09cf34dSArchibald Elliott auto FirstVendorType = Triple::VendorType(Triple::UnknownVendor + 1); 1557f09cf34dSArchibald Elliott auto FirstOSType = Triple::OSType(Triple::UnknownOS + 1); 1558f09cf34dSArchibald Elliott auto FirstEnvType = Triple::EnvironmentType(Triple::UnknownEnvironment + 1); 1559f09cf34dSArchibald Elliott StringRef InitialC[] = {Triple::getArchTypeName(FirstArchType), 1560f09cf34dSArchibald Elliott Triple::getVendorTypeName(FirstVendorType), 1561f09cf34dSArchibald Elliott Triple::getOSTypeName(FirstOSType), 1562f09cf34dSArchibald Elliott Triple::getEnvironmentTypeName(FirstEnvType)}; 1563f09cf34dSArchibald Elliott for (int Arch = FirstArchType; Arch <= Triple::LastArchType; ++Arch) { 1564f09cf34dSArchibald Elliott StringRef C[] = {InitialC[0], InitialC[1], InitialC[2], InitialC[3]}; 1565f09cf34dSArchibald Elliott C[0] = Triple::getArchTypeName(Triple::ArchType(Arch)); 1566f09cf34dSArchibald Elliott std::string E = Join(C[0], C[1], C[2]); 1567f09cf34dSArchibald Elliott int I[] = {0, 1, 2}; 1568f09cf34dSArchibald Elliott do { 1569f09cf34dSArchibald Elliott EXPECT_EQ(E, Triple::normalize(Join(C[I[0]], C[I[1]], C[I[2]]))); 1570f09cf34dSArchibald Elliott } while (std::next_permutation(std::begin(I), std::end(I))); 1571f09cf34dSArchibald Elliott std::string F = Join(C[0], C[1], C[2], C[3]); 1572f09cf34dSArchibald Elliott int J[] = {0, 1, 2, 3}; 1573f09cf34dSArchibald Elliott do { 1574f09cf34dSArchibald Elliott EXPECT_EQ(F, Triple::normalize(Join(C[J[0]], C[J[1]], C[J[2]], C[J[3]]))); 1575f09cf34dSArchibald Elliott } while (std::next_permutation(std::begin(J), std::end(J))); 1576f09cf34dSArchibald Elliott } 1577f09cf34dSArchibald Elliott for (int Vendor = FirstVendorType; Vendor <= Triple::LastVendorType; 1578f09cf34dSArchibald Elliott ++Vendor) { 1579f09cf34dSArchibald Elliott StringRef C[] = {InitialC[0], InitialC[1], InitialC[2], InitialC[3]}; 1580f09cf34dSArchibald Elliott C[1] = Triple::getVendorTypeName(Triple::VendorType(Vendor)); 1581f09cf34dSArchibald Elliott std::string E = Join(C[0], C[1], C[2]); 1582f09cf34dSArchibald Elliott int I[] = {0, 1, 2}; 1583f09cf34dSArchibald Elliott do { 1584f09cf34dSArchibald Elliott EXPECT_EQ(E, Triple::normalize(Join(C[I[0]], C[I[1]], C[I[2]]))); 1585f09cf34dSArchibald Elliott } while (std::next_permutation(std::begin(I), std::end(I))); 1586f09cf34dSArchibald Elliott std::string F = Join(C[0], C[1], C[2], C[3]); 1587f09cf34dSArchibald Elliott int J[] = {0, 1, 2, 3}; 1588f09cf34dSArchibald Elliott do { 1589f09cf34dSArchibald Elliott EXPECT_EQ(F, Triple::normalize(Join(C[J[0]], C[J[1]], C[J[2]], C[J[3]]))); 1590f09cf34dSArchibald Elliott } while (std::next_permutation(std::begin(J), std::end(J))); 1591f09cf34dSArchibald Elliott } 1592f09cf34dSArchibald Elliott for (int OS = FirstOSType; OS <= Triple::LastOSType; ++OS) { 1593f09cf34dSArchibald Elliott if (OS == Triple::Win32) 1594f09cf34dSArchibald Elliott continue; 1595f09cf34dSArchibald Elliott StringRef C[] = {InitialC[0], InitialC[1], InitialC[2], InitialC[3]}; 1596f09cf34dSArchibald Elliott C[2] = Triple::getOSTypeName(Triple::OSType(OS)); 1597f09cf34dSArchibald Elliott std::string E = Join(C[0], C[1], C[2]); 1598f09cf34dSArchibald Elliott int I[] = {0, 1, 2}; 1599f09cf34dSArchibald Elliott do { 1600f09cf34dSArchibald Elliott EXPECT_EQ(E, Triple::normalize(Join(C[I[0]], C[I[1]], C[I[2]]))); 1601f09cf34dSArchibald Elliott } while (std::next_permutation(std::begin(I), std::end(I))); 1602f09cf34dSArchibald Elliott std::string F = Join(C[0], C[1], C[2], C[3]); 1603f09cf34dSArchibald Elliott int J[] = {0, 1, 2, 3}; 1604f09cf34dSArchibald Elliott do { 1605f09cf34dSArchibald Elliott EXPECT_EQ(F, Triple::normalize(Join(C[J[0]], C[J[1]], C[J[2]], C[J[3]]))); 1606f09cf34dSArchibald Elliott } while (std::next_permutation(std::begin(J), std::end(J))); 1607f09cf34dSArchibald Elliott } 1608f09cf34dSArchibald Elliott for (int Env = FirstEnvType; Env <= Triple::LastEnvironmentType; ++Env) { 1609f09cf34dSArchibald Elliott StringRef C[] = {InitialC[0], InitialC[1], InitialC[2], InitialC[3]}; 1610f09cf34dSArchibald Elliott C[3] = Triple::getEnvironmentTypeName(Triple::EnvironmentType(Env)); 1611f09cf34dSArchibald Elliott std::string F = Join(C[0], C[1], C[2], C[3]); 1612f09cf34dSArchibald Elliott int J[] = {0, 1, 2, 3}; 1613f09cf34dSArchibald Elliott do { 1614f09cf34dSArchibald Elliott EXPECT_EQ(F, Triple::normalize(Join(C[J[0]], C[J[1]], C[J[2]], C[J[3]]))); 1615f09cf34dSArchibald Elliott } while (std::next_permutation(std::begin(J), std::end(J))); 1616f09cf34dSArchibald Elliott } 1617f09cf34dSArchibald Elliott 1618f09cf34dSArchibald Elliott // Various real-world funky triples. The value returned by GCC's config.sub 1619f09cf34dSArchibald Elliott // is given in the comment. 1620f09cf34dSArchibald Elliott EXPECT_EQ("i386-unknown-windows-gnu", 1621f09cf34dSArchibald Elliott Triple::normalize("i386-mingw32")); // i386-pc-mingw32 1622f09cf34dSArchibald Elliott EXPECT_EQ("x86_64-unknown-linux-gnu", 1623f09cf34dSArchibald Elliott Triple::normalize("x86_64-linux-gnu")); // x86_64-pc-linux-gnu 1624f09cf34dSArchibald Elliott EXPECT_EQ("i486-unknown-linux-gnu", 1625f09cf34dSArchibald Elliott Triple::normalize("i486-linux-gnu")); // i486-pc-linux-gnu 1626f09cf34dSArchibald Elliott EXPECT_EQ("i386-redhat-linux", 1627f09cf34dSArchibald Elliott Triple::normalize("i386-redhat-linux")); // i386-redhat-linux-gnu 1628f09cf34dSArchibald Elliott EXPECT_EQ("i686-unknown-linux", 1629f09cf34dSArchibald Elliott Triple::normalize("i686-linux")); // i686-pc-linux-gnu 16304b75fcf0SYunQiang Su EXPECT_EQ("arm-unknown-none-eabi", 1631f09cf34dSArchibald Elliott Triple::normalize("arm-none-eabi")); // arm-none-eabi 1632f09cf34dSArchibald Elliott EXPECT_EQ("ve-unknown-linux", 1633f09cf34dSArchibald Elliott Triple::normalize("ve-linux")); // ve-linux 1634f09cf34dSArchibald Elliott EXPECT_EQ("wasm32-unknown-wasi", 1635f09cf34dSArchibald Elliott Triple::normalize("wasm32-wasi")); // wasm32-unknown-wasi 1636f09cf34dSArchibald Elliott EXPECT_EQ("wasm64-unknown-wasi", 1637f09cf34dSArchibald Elliott Triple::normalize("wasm64-wasi")); // wasm64-unknown-wasi 1638f09cf34dSArchibald Elliott } 1639f09cf34dSArchibald Elliott 1640f09cf34dSArchibald Elliott TEST(TripleTest, MutateName) { 1641f09cf34dSArchibald Elliott Triple T; 1642f09cf34dSArchibald Elliott EXPECT_EQ(Triple::UnknownArch, T.getArch()); 1643f09cf34dSArchibald Elliott EXPECT_EQ(Triple::UnknownVendor, T.getVendor()); 1644f09cf34dSArchibald Elliott EXPECT_EQ(Triple::UnknownOS, T.getOS()); 1645f09cf34dSArchibald Elliott EXPECT_EQ(Triple::UnknownEnvironment, T.getEnvironment()); 1646f09cf34dSArchibald Elliott 1647f09cf34dSArchibald Elliott T.setArchName("i386"); 1648f09cf34dSArchibald Elliott EXPECT_EQ(Triple::x86, T.getArch()); 1649f09cf34dSArchibald Elliott EXPECT_EQ("i386--", T.getTriple()); 1650f09cf34dSArchibald Elliott 1651f09cf34dSArchibald Elliott T.setVendorName("pc"); 1652f09cf34dSArchibald Elliott EXPECT_EQ(Triple::x86, T.getArch()); 1653f09cf34dSArchibald Elliott EXPECT_EQ(Triple::PC, T.getVendor()); 1654f09cf34dSArchibald Elliott EXPECT_EQ("i386-pc-", T.getTriple()); 1655f09cf34dSArchibald Elliott 1656f09cf34dSArchibald Elliott T.setOSName("linux"); 1657f09cf34dSArchibald Elliott EXPECT_EQ(Triple::x86, T.getArch()); 1658f09cf34dSArchibald Elliott EXPECT_EQ(Triple::PC, T.getVendor()); 1659f09cf34dSArchibald Elliott EXPECT_EQ(Triple::Linux, T.getOS()); 1660f09cf34dSArchibald Elliott EXPECT_EQ("i386-pc-linux", T.getTriple()); 1661f09cf34dSArchibald Elliott 1662f09cf34dSArchibald Elliott T.setEnvironmentName("gnu"); 1663f09cf34dSArchibald Elliott EXPECT_EQ(Triple::x86, T.getArch()); 1664f09cf34dSArchibald Elliott EXPECT_EQ(Triple::PC, T.getVendor()); 1665f09cf34dSArchibald Elliott EXPECT_EQ(Triple::Linux, T.getOS()); 1666f09cf34dSArchibald Elliott EXPECT_EQ("i386-pc-linux-gnu", T.getTriple()); 1667f09cf34dSArchibald Elliott 1668f09cf34dSArchibald Elliott T.setOSName("freebsd"); 1669f09cf34dSArchibald Elliott EXPECT_EQ(Triple::x86, T.getArch()); 1670f09cf34dSArchibald Elliott EXPECT_EQ(Triple::PC, T.getVendor()); 1671f09cf34dSArchibald Elliott EXPECT_EQ(Triple::FreeBSD, T.getOS()); 1672f09cf34dSArchibald Elliott EXPECT_EQ("i386-pc-freebsd-gnu", T.getTriple()); 1673f09cf34dSArchibald Elliott 1674f09cf34dSArchibald Elliott T.setOSAndEnvironmentName("darwin"); 1675f09cf34dSArchibald Elliott EXPECT_EQ(Triple::x86, T.getArch()); 1676f09cf34dSArchibald Elliott EXPECT_EQ(Triple::PC, T.getVendor()); 1677f09cf34dSArchibald Elliott EXPECT_EQ(Triple::Darwin, T.getOS()); 1678f09cf34dSArchibald Elliott EXPECT_EQ("i386-pc-darwin", T.getTriple()); 1679f09cf34dSArchibald Elliott } 1680f09cf34dSArchibald Elliott 168180c25dacSLang Hames TEST(TripleTest, BitWidthChecks) { 1682f09cf34dSArchibald Elliott Triple T; 1683f09cf34dSArchibald Elliott EXPECT_FALSE(T.isArch16Bit()); 1684f09cf34dSArchibald Elliott EXPECT_FALSE(T.isArch32Bit()); 1685f09cf34dSArchibald Elliott EXPECT_FALSE(T.isArch64Bit()); 168680c25dacSLang Hames EXPECT_EQ(T.getArchPointerBitWidth(), 0U); 1687f09cf34dSArchibald Elliott 1688f09cf34dSArchibald Elliott T.setArch(Triple::arm); 1689f09cf34dSArchibald Elliott EXPECT_FALSE(T.isArch16Bit()); 1690f09cf34dSArchibald Elliott EXPECT_TRUE(T.isArch32Bit()); 1691f09cf34dSArchibald Elliott EXPECT_FALSE(T.isArch64Bit()); 169280c25dacSLang Hames EXPECT_EQ(T.getArchPointerBitWidth(), 32U); 1693f09cf34dSArchibald Elliott 1694f09cf34dSArchibald Elliott T.setArch(Triple::hexagon); 1695f09cf34dSArchibald Elliott EXPECT_FALSE(T.isArch16Bit()); 1696f09cf34dSArchibald Elliott EXPECT_TRUE(T.isArch32Bit()); 1697f09cf34dSArchibald Elliott EXPECT_FALSE(T.isArch64Bit()); 169880c25dacSLang Hames EXPECT_EQ(T.getArchPointerBitWidth(), 32U); 1699f09cf34dSArchibald Elliott 1700f09cf34dSArchibald Elliott T.setArch(Triple::mips); 1701f09cf34dSArchibald Elliott EXPECT_FALSE(T.isArch16Bit()); 1702f09cf34dSArchibald Elliott EXPECT_TRUE(T.isArch32Bit()); 1703f09cf34dSArchibald Elliott EXPECT_FALSE(T.isArch64Bit()); 170480c25dacSLang Hames EXPECT_EQ(T.getArchPointerBitWidth(), 32U); 1705f09cf34dSArchibald Elliott 1706f09cf34dSArchibald Elliott T.setArch(Triple::mips64); 1707f09cf34dSArchibald Elliott EXPECT_FALSE(T.isArch16Bit()); 1708f09cf34dSArchibald Elliott EXPECT_FALSE(T.isArch32Bit()); 1709f09cf34dSArchibald Elliott EXPECT_TRUE(T.isArch64Bit()); 171080c25dacSLang Hames EXPECT_EQ(T.getArchPointerBitWidth(), 64U); 1711f09cf34dSArchibald Elliott 1712f09cf34dSArchibald Elliott T.setArch(Triple::msp430); 1713f09cf34dSArchibald Elliott EXPECT_TRUE(T.isArch16Bit()); 1714f09cf34dSArchibald Elliott EXPECT_FALSE(T.isArch32Bit()); 1715f09cf34dSArchibald Elliott EXPECT_FALSE(T.isArch64Bit()); 171680c25dacSLang Hames EXPECT_EQ(T.getArchPointerBitWidth(), 16U); 1717f09cf34dSArchibald Elliott 1718f09cf34dSArchibald Elliott T.setArch(Triple::ppc); 1719f09cf34dSArchibald Elliott EXPECT_FALSE(T.isArch16Bit()); 1720f09cf34dSArchibald Elliott EXPECT_TRUE(T.isArch32Bit()); 1721f09cf34dSArchibald Elliott EXPECT_FALSE(T.isArch64Bit()); 172280c25dacSLang Hames EXPECT_EQ(T.getArchPointerBitWidth(), 32U); 1723f09cf34dSArchibald Elliott 1724f09cf34dSArchibald Elliott T.setArch(Triple::ppc64); 1725f09cf34dSArchibald Elliott EXPECT_FALSE(T.isArch16Bit()); 1726f09cf34dSArchibald Elliott EXPECT_FALSE(T.isArch32Bit()); 1727f09cf34dSArchibald Elliott EXPECT_TRUE(T.isArch64Bit()); 172880c25dacSLang Hames EXPECT_EQ(T.getArchPointerBitWidth(), 64U); 1729f09cf34dSArchibald Elliott 1730f09cf34dSArchibald Elliott T.setArch(Triple::x86); 1731f09cf34dSArchibald Elliott EXPECT_FALSE(T.isArch16Bit()); 1732f09cf34dSArchibald Elliott EXPECT_TRUE(T.isArch32Bit()); 1733f09cf34dSArchibald Elliott EXPECT_FALSE(T.isArch64Bit()); 173480c25dacSLang Hames EXPECT_EQ(T.getArchPointerBitWidth(), 32U); 1735f09cf34dSArchibald Elliott 1736f09cf34dSArchibald Elliott T.setArch(Triple::x86_64); 1737f09cf34dSArchibald Elliott EXPECT_FALSE(T.isArch16Bit()); 1738f09cf34dSArchibald Elliott EXPECT_FALSE(T.isArch32Bit()); 1739f09cf34dSArchibald Elliott EXPECT_TRUE(T.isArch64Bit()); 174080c25dacSLang Hames EXPECT_EQ(T.getArchPointerBitWidth(), 64U); 1741f09cf34dSArchibald Elliott 1742f09cf34dSArchibald Elliott T.setArch(Triple::amdil); 1743f09cf34dSArchibald Elliott EXPECT_FALSE(T.isArch16Bit()); 1744f09cf34dSArchibald Elliott EXPECT_TRUE(T.isArch32Bit()); 1745f09cf34dSArchibald Elliott EXPECT_FALSE(T.isArch64Bit()); 174680c25dacSLang Hames EXPECT_EQ(T.getArchPointerBitWidth(), 32U); 1747f09cf34dSArchibald Elliott 1748f09cf34dSArchibald Elliott T.setArch(Triple::amdil64); 1749f09cf34dSArchibald Elliott EXPECT_FALSE(T.isArch16Bit()); 1750f09cf34dSArchibald Elliott EXPECT_FALSE(T.isArch32Bit()); 1751f09cf34dSArchibald Elliott EXPECT_TRUE(T.isArch64Bit()); 175280c25dacSLang Hames EXPECT_EQ(T.getArchPointerBitWidth(), 64U); 1753f09cf34dSArchibald Elliott 1754f09cf34dSArchibald Elliott T.setArch(Triple::hsail); 1755f09cf34dSArchibald Elliott EXPECT_FALSE(T.isArch16Bit()); 1756f09cf34dSArchibald Elliott EXPECT_TRUE(T.isArch32Bit()); 1757f09cf34dSArchibald Elliott EXPECT_FALSE(T.isArch64Bit()); 175880c25dacSLang Hames EXPECT_EQ(T.getArchPointerBitWidth(), 32U); 1759f09cf34dSArchibald Elliott 1760f09cf34dSArchibald Elliott T.setArch(Triple::hsail64); 1761f09cf34dSArchibald Elliott EXPECT_FALSE(T.isArch16Bit()); 1762f09cf34dSArchibald Elliott EXPECT_FALSE(T.isArch32Bit()); 1763f09cf34dSArchibald Elliott EXPECT_TRUE(T.isArch64Bit()); 176480c25dacSLang Hames EXPECT_EQ(T.getArchPointerBitWidth(), 64U); 1765f09cf34dSArchibald Elliott 1766f09cf34dSArchibald Elliott T.setArch(Triple::spir); 1767f09cf34dSArchibald Elliott EXPECT_FALSE(T.isArch16Bit()); 1768f09cf34dSArchibald Elliott EXPECT_TRUE(T.isArch32Bit()); 1769f09cf34dSArchibald Elliott EXPECT_FALSE(T.isArch64Bit()); 177080c25dacSLang Hames EXPECT_EQ(T.getArchPointerBitWidth(), 32U); 1771f09cf34dSArchibald Elliott 1772f09cf34dSArchibald Elliott T.setArch(Triple::spir64); 1773f09cf34dSArchibald Elliott EXPECT_FALSE(T.isArch16Bit()); 1774f09cf34dSArchibald Elliott EXPECT_FALSE(T.isArch32Bit()); 1775f09cf34dSArchibald Elliott EXPECT_TRUE(T.isArch64Bit()); 177680c25dacSLang Hames EXPECT_EQ(T.getArchPointerBitWidth(), 64U); 1777f09cf34dSArchibald Elliott 177853b6a169SNathan Gauër T.setArch(Triple::spirv); 177953b6a169SNathan Gauër EXPECT_FALSE(T.isArch16Bit()); 178053b6a169SNathan Gauër EXPECT_FALSE(T.isArch32Bit()); 178153b6a169SNathan Gauër EXPECT_TRUE(T.isArch64Bit()); 178253b6a169SNathan Gauër EXPECT_TRUE(T.isSPIRV()); 178353b6a169SNathan Gauër 1784f09cf34dSArchibald Elliott T.setArch(Triple::spirv32); 1785f09cf34dSArchibald Elliott EXPECT_FALSE(T.isArch16Bit()); 1786f09cf34dSArchibald Elliott EXPECT_TRUE(T.isArch32Bit()); 1787f09cf34dSArchibald Elliott EXPECT_FALSE(T.isArch64Bit()); 1788f09cf34dSArchibald Elliott EXPECT_TRUE(T.isSPIRV()); 1789f09cf34dSArchibald Elliott 1790f09cf34dSArchibald Elliott T.setArch(Triple::spirv64); 1791f09cf34dSArchibald Elliott EXPECT_FALSE(T.isArch16Bit()); 1792f09cf34dSArchibald Elliott EXPECT_FALSE(T.isArch32Bit()); 1793f09cf34dSArchibald Elliott EXPECT_TRUE(T.isArch64Bit()); 1794f09cf34dSArchibald Elliott EXPECT_TRUE(T.isSPIRV()); 1795f09cf34dSArchibald Elliott 1796f09cf34dSArchibald Elliott T.setArch(Triple::sparc); 1797f09cf34dSArchibald Elliott EXPECT_FALSE(T.isArch16Bit()); 1798f09cf34dSArchibald Elliott EXPECT_TRUE(T.isArch32Bit()); 1799f09cf34dSArchibald Elliott EXPECT_FALSE(T.isArch64Bit()); 1800f09cf34dSArchibald Elliott 1801f09cf34dSArchibald Elliott T.setArch(Triple::sparcel); 1802f09cf34dSArchibald Elliott EXPECT_FALSE(T.isArch16Bit()); 1803f09cf34dSArchibald Elliott EXPECT_TRUE(T.isArch32Bit()); 1804f09cf34dSArchibald Elliott EXPECT_FALSE(T.isArch64Bit()); 1805f09cf34dSArchibald Elliott 1806f09cf34dSArchibald Elliott T.setArch(Triple::sparcv9); 1807f09cf34dSArchibald Elliott EXPECT_FALSE(T.isArch16Bit()); 1808f09cf34dSArchibald Elliott EXPECT_FALSE(T.isArch32Bit()); 1809f09cf34dSArchibald Elliott EXPECT_TRUE(T.isArch64Bit()); 1810f09cf34dSArchibald Elliott 1811f09cf34dSArchibald Elliott T.setArch(Triple::wasm32); 1812f09cf34dSArchibald Elliott EXPECT_FALSE(T.isArch16Bit()); 1813f09cf34dSArchibald Elliott EXPECT_TRUE(T.isArch32Bit()); 1814f09cf34dSArchibald Elliott EXPECT_FALSE(T.isArch64Bit()); 1815f09cf34dSArchibald Elliott 1816f09cf34dSArchibald Elliott T.setArch(Triple::wasm64); 1817f09cf34dSArchibald Elliott EXPECT_FALSE(T.isArch16Bit()); 1818f09cf34dSArchibald Elliott EXPECT_FALSE(T.isArch32Bit()); 1819f09cf34dSArchibald Elliott EXPECT_TRUE(T.isArch64Bit()); 1820f09cf34dSArchibald Elliott 1821f09cf34dSArchibald Elliott T.setArch(Triple::avr); 1822f09cf34dSArchibald Elliott EXPECT_TRUE(T.isArch16Bit()); 1823f09cf34dSArchibald Elliott EXPECT_FALSE(T.isArch32Bit()); 1824f09cf34dSArchibald Elliott EXPECT_FALSE(T.isArch64Bit()); 1825f09cf34dSArchibald Elliott 1826f09cf34dSArchibald Elliott T.setArch(Triple::lanai); 1827f09cf34dSArchibald Elliott EXPECT_FALSE(T.isArch16Bit()); 1828f09cf34dSArchibald Elliott EXPECT_TRUE(T.isArch32Bit()); 1829f09cf34dSArchibald Elliott EXPECT_FALSE(T.isArch64Bit()); 1830f09cf34dSArchibald Elliott 1831f09cf34dSArchibald Elliott T.setArch(Triple::riscv32); 1832f09cf34dSArchibald Elliott EXPECT_FALSE(T.isArch16Bit()); 1833f09cf34dSArchibald Elliott EXPECT_TRUE(T.isArch32Bit()); 1834f09cf34dSArchibald Elliott EXPECT_FALSE(T.isArch64Bit()); 1835f09cf34dSArchibald Elliott EXPECT_TRUE(T.isRISCV()); 1836f09cf34dSArchibald Elliott 1837f09cf34dSArchibald Elliott T.setArch(Triple::riscv64); 1838f09cf34dSArchibald Elliott EXPECT_FALSE(T.isArch16Bit()); 1839f09cf34dSArchibald Elliott EXPECT_FALSE(T.isArch32Bit()); 1840f09cf34dSArchibald Elliott EXPECT_TRUE(T.isArch64Bit()); 1841f09cf34dSArchibald Elliott EXPECT_TRUE(T.isRISCV()); 1842f09cf34dSArchibald Elliott 1843f09cf34dSArchibald Elliott T.setArch(Triple::csky); 1844f09cf34dSArchibald Elliott EXPECT_FALSE(T.isArch16Bit()); 1845f09cf34dSArchibald Elliott EXPECT_TRUE(T.isArch32Bit()); 1846f09cf34dSArchibald Elliott EXPECT_FALSE(T.isArch64Bit()); 1847f09cf34dSArchibald Elliott EXPECT_TRUE(T.isCSKY()); 1848f09cf34dSArchibald Elliott 1849f09cf34dSArchibald Elliott T.setArch(Triple::loongarch32); 1850f09cf34dSArchibald Elliott EXPECT_FALSE(T.isArch16Bit()); 1851f09cf34dSArchibald Elliott EXPECT_TRUE(T.isArch32Bit()); 1852f09cf34dSArchibald Elliott EXPECT_FALSE(T.isArch64Bit()); 1853f09cf34dSArchibald Elliott EXPECT_TRUE(T.isLoongArch()); 1854a926a266SWeining Lu EXPECT_TRUE(T.isLoongArch32()); 1855f09cf34dSArchibald Elliott 1856f09cf34dSArchibald Elliott T.setArch(Triple::loongarch64); 1857f09cf34dSArchibald Elliott EXPECT_FALSE(T.isArch16Bit()); 1858f09cf34dSArchibald Elliott EXPECT_FALSE(T.isArch32Bit()); 1859f09cf34dSArchibald Elliott EXPECT_TRUE(T.isArch64Bit()); 1860f09cf34dSArchibald Elliott EXPECT_TRUE(T.isLoongArch()); 1861a926a266SWeining Lu EXPECT_TRUE(T.isLoongArch64()); 1862f09cf34dSArchibald Elliott 1863f09cf34dSArchibald Elliott T.setArch(Triple::dxil); 1864f09cf34dSArchibald Elliott EXPECT_FALSE(T.isArch16Bit()); 1865f09cf34dSArchibald Elliott EXPECT_TRUE(T.isArch32Bit()); 1866f09cf34dSArchibald Elliott EXPECT_FALSE(T.isArch64Bit()); 1867f09cf34dSArchibald Elliott EXPECT_TRUE(T.isDXIL()); 18688c618e8fSAndrei Safronov 18698c618e8fSAndrei Safronov T.setArch(Triple::xtensa); 18708c618e8fSAndrei Safronov EXPECT_FALSE(T.isArch16Bit()); 18718c618e8fSAndrei Safronov EXPECT_TRUE(T.isArch32Bit()); 18728c618e8fSAndrei Safronov EXPECT_FALSE(T.isArch64Bit()); 1873f09cf34dSArchibald Elliott } 1874f09cf34dSArchibald Elliott 1875f09cf34dSArchibald Elliott TEST(TripleTest, BitWidthArchVariants) { 1876f09cf34dSArchibald Elliott Triple T; 1877f09cf34dSArchibald Elliott EXPECT_EQ(Triple::UnknownArch, T.get32BitArchVariant().getArch()); 1878f09cf34dSArchibald Elliott EXPECT_EQ(Triple::UnknownArch, T.get64BitArchVariant().getArch()); 1879f09cf34dSArchibald Elliott 1880f09cf34dSArchibald Elliott T.setArch(Triple::UnknownArch); 1881f09cf34dSArchibald Elliott EXPECT_EQ(Triple::UnknownArch, T.get32BitArchVariant().getArch()); 1882f09cf34dSArchibald Elliott EXPECT_EQ(Triple::UnknownArch, T.get64BitArchVariant().getArch()); 1883f09cf34dSArchibald Elliott 1884f09cf34dSArchibald Elliott T.setArch(Triple::mips); 1885f09cf34dSArchibald Elliott EXPECT_EQ(Triple::mips, T.get32BitArchVariant().getArch()); 1886f09cf34dSArchibald Elliott EXPECT_EQ(Triple::NoSubArch, T.get32BitArchVariant().getSubArch()); 1887f09cf34dSArchibald Elliott EXPECT_EQ(Triple::mips64, T.get64BitArchVariant().getArch()); 1888f09cf34dSArchibald Elliott EXPECT_EQ(Triple::NoSubArch, T.get64BitArchVariant().getSubArch()); 1889f09cf34dSArchibald Elliott 1890f09cf34dSArchibald Elliott T.setArch(Triple::mips, Triple::MipsSubArch_r6); 1891f09cf34dSArchibald Elliott EXPECT_EQ(Triple::mips, T.get32BitArchVariant().getArch()); 1892f09cf34dSArchibald Elliott EXPECT_EQ(Triple::MipsSubArch_r6, T.get32BitArchVariant().getSubArch()); 1893f09cf34dSArchibald Elliott EXPECT_EQ(Triple::mips64, T.get64BitArchVariant().getArch()); 1894f09cf34dSArchibald Elliott EXPECT_EQ(Triple::MipsSubArch_r6, T.get64BitArchVariant().getSubArch()); 1895f09cf34dSArchibald Elliott 1896f09cf34dSArchibald Elliott T.setArch(Triple::mipsel); 1897f09cf34dSArchibald Elliott EXPECT_EQ(Triple::mipsel, T.get32BitArchVariant().getArch()); 1898f09cf34dSArchibald Elliott EXPECT_EQ(Triple::NoSubArch, T.get32BitArchVariant().getSubArch()); 1899f09cf34dSArchibald Elliott EXPECT_EQ(Triple::mips64el, T.get64BitArchVariant().getArch()); 1900f09cf34dSArchibald Elliott EXPECT_EQ(Triple::NoSubArch, T.get64BitArchVariant().getSubArch()); 1901f09cf34dSArchibald Elliott 1902f09cf34dSArchibald Elliott T.setArch(Triple::mipsel, Triple::MipsSubArch_r6); 1903f09cf34dSArchibald Elliott EXPECT_EQ(Triple::mipsel, T.get32BitArchVariant().getArch()); 1904f09cf34dSArchibald Elliott EXPECT_EQ(Triple::MipsSubArch_r6, T.get32BitArchVariant().getSubArch()); 1905f09cf34dSArchibald Elliott EXPECT_EQ(Triple::mips64el, T.get64BitArchVariant().getArch()); 1906f09cf34dSArchibald Elliott EXPECT_EQ(Triple::MipsSubArch_r6, T.get64BitArchVariant().getSubArch()); 1907f09cf34dSArchibald Elliott 1908f09cf34dSArchibald Elliott T.setArch(Triple::ppc); 1909f09cf34dSArchibald Elliott EXPECT_EQ(Triple::ppc, T.get32BitArchVariant().getArch()); 1910f09cf34dSArchibald Elliott EXPECT_EQ(Triple::ppc64, T.get64BitArchVariant().getArch()); 1911f09cf34dSArchibald Elliott 1912f09cf34dSArchibald Elliott T.setArch(Triple::nvptx); 1913f09cf34dSArchibald Elliott EXPECT_EQ(Triple::nvptx, T.get32BitArchVariant().getArch()); 1914f09cf34dSArchibald Elliott EXPECT_EQ(Triple::nvptx64, T.get64BitArchVariant().getArch()); 1915f09cf34dSArchibald Elliott 1916f09cf34dSArchibald Elliott T.setArch(Triple::sparc); 1917f09cf34dSArchibald Elliott EXPECT_EQ(Triple::sparc, T.get32BitArchVariant().getArch()); 1918f09cf34dSArchibald Elliott EXPECT_EQ(Triple::sparcv9, T.get64BitArchVariant().getArch()); 1919f09cf34dSArchibald Elliott 1920f09cf34dSArchibald Elliott T.setArch(Triple::x86); 1921f09cf34dSArchibald Elliott EXPECT_EQ(Triple::x86, T.get32BitArchVariant().getArch()); 1922f09cf34dSArchibald Elliott EXPECT_EQ(Triple::x86_64, T.get64BitArchVariant().getArch()); 1923f09cf34dSArchibald Elliott 1924f09cf34dSArchibald Elliott T.setArch(Triple::mips64); 1925f09cf34dSArchibald Elliott EXPECT_EQ(Triple::mips, T.get32BitArchVariant().getArch()); 1926f09cf34dSArchibald Elliott EXPECT_EQ(Triple::NoSubArch, T.get32BitArchVariant().getSubArch()); 1927f09cf34dSArchibald Elliott EXPECT_EQ(Triple::mips64, T.get64BitArchVariant().getArch()); 1928f09cf34dSArchibald Elliott EXPECT_EQ(Triple::NoSubArch, T.get64BitArchVariant().getSubArch()); 1929f09cf34dSArchibald Elliott 1930f09cf34dSArchibald Elliott T.setArch(Triple::mips64, Triple::MipsSubArch_r6); 1931f09cf34dSArchibald Elliott EXPECT_EQ(Triple::mips, T.get32BitArchVariant().getArch()); 1932f09cf34dSArchibald Elliott EXPECT_EQ(Triple::MipsSubArch_r6, T.get32BitArchVariant().getSubArch()); 1933f09cf34dSArchibald Elliott EXPECT_EQ(Triple::mips64, T.get64BitArchVariant().getArch()); 1934f09cf34dSArchibald Elliott EXPECT_EQ(Triple::MipsSubArch_r6, T.get64BitArchVariant().getSubArch()); 1935f09cf34dSArchibald Elliott 1936f09cf34dSArchibald Elliott T.setArch(Triple::mips64el); 1937f09cf34dSArchibald Elliott EXPECT_EQ(Triple::mipsel, T.get32BitArchVariant().getArch()); 1938f09cf34dSArchibald Elliott EXPECT_EQ(Triple::NoSubArch, T.get32BitArchVariant().getSubArch()); 1939f09cf34dSArchibald Elliott EXPECT_EQ(Triple::mips64el, T.get64BitArchVariant().getArch()); 1940f09cf34dSArchibald Elliott EXPECT_EQ(Triple::NoSubArch, T.get64BitArchVariant().getSubArch()); 1941f09cf34dSArchibald Elliott 1942f09cf34dSArchibald Elliott T.setArch(Triple::mips64el, Triple::MipsSubArch_r6); 1943f09cf34dSArchibald Elliott EXPECT_EQ(Triple::mipsel, T.get32BitArchVariant().getArch()); 1944f09cf34dSArchibald Elliott EXPECT_EQ(Triple::MipsSubArch_r6, T.get32BitArchVariant().getSubArch()); 1945f09cf34dSArchibald Elliott EXPECT_EQ(Triple::mips64el, T.get64BitArchVariant().getArch()); 1946f09cf34dSArchibald Elliott EXPECT_EQ(Triple::MipsSubArch_r6, T.get64BitArchVariant().getSubArch()); 1947f09cf34dSArchibald Elliott 1948f09cf34dSArchibald Elliott T.setArch(Triple::ppc64); 1949f09cf34dSArchibald Elliott EXPECT_EQ(Triple::ppc, T.get32BitArchVariant().getArch()); 1950f09cf34dSArchibald Elliott EXPECT_EQ(Triple::ppc64, T.get64BitArchVariant().getArch()); 1951f09cf34dSArchibald Elliott 1952f09cf34dSArchibald Elliott T.setArch(Triple::nvptx64); 1953f09cf34dSArchibald Elliott EXPECT_EQ(Triple::nvptx, T.get32BitArchVariant().getArch()); 1954f09cf34dSArchibald Elliott EXPECT_EQ(Triple::nvptx64, T.get64BitArchVariant().getArch()); 1955f09cf34dSArchibald Elliott 1956f09cf34dSArchibald Elliott T.setArch(Triple::sparcv9); 1957f09cf34dSArchibald Elliott EXPECT_EQ(Triple::sparc, T.get32BitArchVariant().getArch()); 1958f09cf34dSArchibald Elliott EXPECT_EQ(Triple::sparcv9, T.get64BitArchVariant().getArch()); 1959f09cf34dSArchibald Elliott 1960f09cf34dSArchibald Elliott T.setArch(Triple::x86_64); 1961f09cf34dSArchibald Elliott EXPECT_EQ(Triple::x86, T.get32BitArchVariant().getArch()); 1962f09cf34dSArchibald Elliott EXPECT_EQ(Triple::x86_64, T.get64BitArchVariant().getArch()); 1963f09cf34dSArchibald Elliott 1964f09cf34dSArchibald Elliott T.setArch(Triple::amdil); 1965f09cf34dSArchibald Elliott EXPECT_EQ(Triple::amdil, T.get32BitArchVariant().getArch()); 1966f09cf34dSArchibald Elliott EXPECT_EQ(Triple::amdil64, T.get64BitArchVariant().getArch()); 1967f09cf34dSArchibald Elliott 1968f09cf34dSArchibald Elliott T.setArch(Triple::amdil64); 1969f09cf34dSArchibald Elliott EXPECT_EQ(Triple::amdil, T.get32BitArchVariant().getArch()); 1970f09cf34dSArchibald Elliott EXPECT_EQ(Triple::amdil64, T.get64BitArchVariant().getArch()); 1971f09cf34dSArchibald Elliott 1972f09cf34dSArchibald Elliott T.setArch(Triple::hsail); 1973f09cf34dSArchibald Elliott EXPECT_EQ(Triple::hsail, T.get32BitArchVariant().getArch()); 1974f09cf34dSArchibald Elliott EXPECT_EQ(Triple::hsail64, T.get64BitArchVariant().getArch()); 1975f09cf34dSArchibald Elliott 1976f09cf34dSArchibald Elliott T.setArch(Triple::hsail64); 1977f09cf34dSArchibald Elliott EXPECT_EQ(Triple::hsail, T.get32BitArchVariant().getArch()); 1978f09cf34dSArchibald Elliott EXPECT_EQ(Triple::hsail64, T.get64BitArchVariant().getArch()); 1979f09cf34dSArchibald Elliott 1980f09cf34dSArchibald Elliott T.setArch(Triple::spir); 1981f09cf34dSArchibald Elliott EXPECT_EQ(Triple::spir, T.get32BitArchVariant().getArch()); 1982f09cf34dSArchibald Elliott EXPECT_EQ(Triple::spir64, T.get64BitArchVariant().getArch()); 1983f09cf34dSArchibald Elliott 1984f09cf34dSArchibald Elliott T.setArch(Triple::spir64); 1985f09cf34dSArchibald Elliott EXPECT_EQ(Triple::spir, T.get32BitArchVariant().getArch()); 1986f09cf34dSArchibald Elliott EXPECT_EQ(Triple::spir64, T.get64BitArchVariant().getArch()); 1987f09cf34dSArchibald Elliott 198853b6a169SNathan Gauër T.setArch(Triple::spirv); 198953b6a169SNathan Gauër EXPECT_EQ(Triple::spirv32, T.get32BitArchVariant().getArch()); 199053b6a169SNathan Gauër EXPECT_EQ(Triple::spirv64, T.get64BitArchVariant().getArch()); 199153b6a169SNathan Gauër 1992f09cf34dSArchibald Elliott T.setArch(Triple::spirv32); 1993f09cf34dSArchibald Elliott EXPECT_EQ(Triple::spirv32, T.get32BitArchVariant().getArch()); 1994f09cf34dSArchibald Elliott EXPECT_EQ(Triple::spirv64, T.get64BitArchVariant().getArch()); 1995f09cf34dSArchibald Elliott 1996f09cf34dSArchibald Elliott T.setArch(Triple::spirv64); 1997f09cf34dSArchibald Elliott EXPECT_EQ(Triple::spirv32, T.get32BitArchVariant().getArch()); 1998f09cf34dSArchibald Elliott EXPECT_EQ(Triple::spirv64, T.get64BitArchVariant().getArch()); 1999f09cf34dSArchibald Elliott 2000f09cf34dSArchibald Elliott T.setArch(Triple::wasm32); 2001f09cf34dSArchibald Elliott EXPECT_EQ(Triple::wasm32, T.get32BitArchVariant().getArch()); 2002f09cf34dSArchibald Elliott EXPECT_EQ(Triple::wasm64, T.get64BitArchVariant().getArch()); 2003f09cf34dSArchibald Elliott 2004f09cf34dSArchibald Elliott T.setArch(Triple::wasm64); 2005f09cf34dSArchibald Elliott EXPECT_EQ(Triple::wasm32, T.get32BitArchVariant().getArch()); 2006f09cf34dSArchibald Elliott EXPECT_EQ(Triple::wasm64, T.get64BitArchVariant().getArch()); 2007f09cf34dSArchibald Elliott 2008f09cf34dSArchibald Elliott T.setArch(Triple::riscv32); 2009f09cf34dSArchibald Elliott EXPECT_EQ(Triple::riscv32, T.get32BitArchVariant().getArch()); 2010f09cf34dSArchibald Elliott EXPECT_EQ(Triple::riscv64, T.get64BitArchVariant().getArch()); 2011f09cf34dSArchibald Elliott 2012f09cf34dSArchibald Elliott T.setArch(Triple::riscv64); 2013f09cf34dSArchibald Elliott EXPECT_EQ(Triple::riscv32, T.get32BitArchVariant().getArch()); 2014f09cf34dSArchibald Elliott EXPECT_EQ(Triple::riscv64, T.get64BitArchVariant().getArch()); 2015f09cf34dSArchibald Elliott 2016f09cf34dSArchibald Elliott T.setArch(Triple::csky); 2017f09cf34dSArchibald Elliott EXPECT_EQ(Triple::csky, T.get32BitArchVariant().getArch()); 2018f09cf34dSArchibald Elliott EXPECT_EQ(Triple::UnknownArch, T.get64BitArchVariant().getArch()); 2019f09cf34dSArchibald Elliott 2020f09cf34dSArchibald Elliott T.setArch(Triple::loongarch32); 2021f09cf34dSArchibald Elliott EXPECT_EQ(Triple::loongarch32, T.get32BitArchVariant().getArch()); 2022f09cf34dSArchibald Elliott EXPECT_EQ(Triple::loongarch64, T.get64BitArchVariant().getArch()); 2023f09cf34dSArchibald Elliott 2024f09cf34dSArchibald Elliott T.setArch(Triple::loongarch64); 2025f09cf34dSArchibald Elliott EXPECT_EQ(Triple::loongarch32, T.get32BitArchVariant().getArch()); 2026f09cf34dSArchibald Elliott EXPECT_EQ(Triple::loongarch64, T.get64BitArchVariant().getArch()); 2027f09cf34dSArchibald Elliott 2028f09cf34dSArchibald Elliott T.setArch(Triple::thumbeb); 2029f09cf34dSArchibald Elliott EXPECT_EQ(Triple::thumbeb, T.get32BitArchVariant().getArch()); 2030f09cf34dSArchibald Elliott EXPECT_EQ(Triple::aarch64_be, T.get64BitArchVariant().getArch()); 2031f09cf34dSArchibald Elliott 2032f09cf34dSArchibald Elliott T.setArch(Triple::thumb); 2033f09cf34dSArchibald Elliott EXPECT_EQ(Triple::thumb, T.get32BitArchVariant().getArch()); 2034f09cf34dSArchibald Elliott EXPECT_EQ(Triple::aarch64, T.get64BitArchVariant().getArch()); 2035f09cf34dSArchibald Elliott 2036f09cf34dSArchibald Elliott T.setArch(Triple::aarch64); 2037f09cf34dSArchibald Elliott EXPECT_EQ(Triple::arm, T.get32BitArchVariant().getArch()); 2038f09cf34dSArchibald Elliott EXPECT_EQ(Triple::aarch64, T.get64BitArchVariant().getArch()); 2039f09cf34dSArchibald Elliott 2040f09cf34dSArchibald Elliott T.setArch(Triple::aarch64_be); 2041f09cf34dSArchibald Elliott EXPECT_EQ(Triple::armeb, T.get32BitArchVariant().getArch()); 2042f09cf34dSArchibald Elliott EXPECT_EQ(Triple::aarch64_be, T.get64BitArchVariant().getArch()); 2043f09cf34dSArchibald Elliott 2044f09cf34dSArchibald Elliott T.setArch(Triple::renderscript32); 2045f09cf34dSArchibald Elliott EXPECT_EQ(Triple::renderscript32, T.get32BitArchVariant().getArch()); 2046f09cf34dSArchibald Elliott EXPECT_EQ(Triple::renderscript64, T.get64BitArchVariant().getArch()); 2047f09cf34dSArchibald Elliott 2048f09cf34dSArchibald Elliott T.setArch(Triple::renderscript64); 2049f09cf34dSArchibald Elliott EXPECT_EQ(Triple::renderscript32, T.get32BitArchVariant().getArch()); 2050f09cf34dSArchibald Elliott EXPECT_EQ(Triple::renderscript64, T.get64BitArchVariant().getArch()); 2051f09cf34dSArchibald Elliott 2052f09cf34dSArchibald Elliott T.setArch(Triple::armeb); 2053f09cf34dSArchibald Elliott EXPECT_EQ(Triple::armeb, T.get32BitArchVariant().getArch()); 2054f09cf34dSArchibald Elliott EXPECT_EQ(Triple::aarch64_be, T.get64BitArchVariant().getArch()); 2055f09cf34dSArchibald Elliott 2056f09cf34dSArchibald Elliott T.setArch(Triple::arm); 2057f09cf34dSArchibald Elliott EXPECT_EQ(Triple::arm, T.get32BitArchVariant().getArch()); 2058f09cf34dSArchibald Elliott EXPECT_EQ(Triple::aarch64, T.get64BitArchVariant().getArch()); 2059f09cf34dSArchibald Elliott 2060f09cf34dSArchibald Elliott T.setArch(Triple::systemz); 2061f09cf34dSArchibald Elliott EXPECT_EQ(Triple::UnknownArch, T.get32BitArchVariant().getArch()); 2062f09cf34dSArchibald Elliott EXPECT_EQ(Triple::systemz, T.get64BitArchVariant().getArch()); 2063f09cf34dSArchibald Elliott 2064f09cf34dSArchibald Elliott T.setArch(Triple::xcore); 2065f09cf34dSArchibald Elliott EXPECT_EQ(Triple::xcore, T.get32BitArchVariant().getArch()); 2066f09cf34dSArchibald Elliott EXPECT_EQ(Triple::UnknownArch, T.get64BitArchVariant().getArch()); 2067f09cf34dSArchibald Elliott 2068f09cf34dSArchibald Elliott T.setArch(Triple::dxil); 2069f09cf34dSArchibald Elliott EXPECT_EQ(Triple::dxil, T.get32BitArchVariant().getArch()); 2070f09cf34dSArchibald Elliott EXPECT_EQ(Triple::UnknownArch, T.get64BitArchVariant().getArch()); 20718c618e8fSAndrei Safronov 20728c618e8fSAndrei Safronov T.setArch(Triple::xtensa); 20738c618e8fSAndrei Safronov EXPECT_EQ(Triple::xtensa, T.get32BitArchVariant().getArch()); 20748c618e8fSAndrei Safronov EXPECT_EQ(Triple::UnknownArch, T.get64BitArchVariant().getArch()); 2075f09cf34dSArchibald Elliott } 2076f09cf34dSArchibald Elliott 2077f09cf34dSArchibald Elliott TEST(TripleTest, EndianArchVariants) { 2078f09cf34dSArchibald Elliott Triple T; 2079f09cf34dSArchibald Elliott EXPECT_EQ(Triple::UnknownArch, T.getBigEndianArchVariant().getArch()); 2080f09cf34dSArchibald Elliott EXPECT_EQ(Triple::UnknownArch, T.getLittleEndianArchVariant().getArch()); 2081f09cf34dSArchibald Elliott 2082f09cf34dSArchibald Elliott T.setArch(Triple::UnknownArch); 2083f09cf34dSArchibald Elliott EXPECT_EQ(Triple::UnknownArch, T.getBigEndianArchVariant().getArch()); 2084f09cf34dSArchibald Elliott EXPECT_EQ(Triple::UnknownArch, T.getLittleEndianArchVariant().getArch()); 2085f09cf34dSArchibald Elliott 2086f09cf34dSArchibald Elliott T.setArch(Triple::aarch64_be); 2087f09cf34dSArchibald Elliott EXPECT_EQ(Triple::aarch64_be, T.getBigEndianArchVariant().getArch()); 2088f09cf34dSArchibald Elliott EXPECT_EQ(Triple::aarch64, T.getLittleEndianArchVariant().getArch()); 2089f09cf34dSArchibald Elliott 2090f09cf34dSArchibald Elliott T.setArch(Triple::aarch64); 2091f09cf34dSArchibald Elliott EXPECT_EQ(Triple::aarch64_be, T.getBigEndianArchVariant().getArch()); 2092f09cf34dSArchibald Elliott EXPECT_EQ(Triple::aarch64, T.getLittleEndianArchVariant().getArch()); 2093f09cf34dSArchibald Elliott 2094f09cf34dSArchibald Elliott T.setArch(Triple::armeb); 2095f09cf34dSArchibald Elliott EXPECT_EQ(Triple::armeb, T.getBigEndianArchVariant().getArch()); 2096f09cf34dSArchibald Elliott EXPECT_EQ(Triple::UnknownArch, T.getLittleEndianArchVariant().getArch()); 2097f09cf34dSArchibald Elliott 2098f09cf34dSArchibald Elliott T.setArch(Triple::arm); 2099f09cf34dSArchibald Elliott EXPECT_EQ(Triple::UnknownArch, T.getBigEndianArchVariant().getArch()); 2100f09cf34dSArchibald Elliott EXPECT_EQ(Triple::arm, T.getLittleEndianArchVariant().getArch()); 2101f09cf34dSArchibald Elliott T = Triple("arm"); 2102f09cf34dSArchibald Elliott EXPECT_TRUE(T.isLittleEndian()); 2103f09cf34dSArchibald Elliott T = Triple("thumb"); 2104f09cf34dSArchibald Elliott EXPECT_TRUE(T.isLittleEndian()); 2105f09cf34dSArchibald Elliott T = Triple("armeb"); 2106f09cf34dSArchibald Elliott EXPECT_FALSE(T.isLittleEndian()); 2107f09cf34dSArchibald Elliott T = Triple("thumbeb"); 2108f09cf34dSArchibald Elliott EXPECT_FALSE(T.isLittleEndian()); 2109f09cf34dSArchibald Elliott 2110f09cf34dSArchibald Elliott T.setArch(Triple::bpfeb); 2111f09cf34dSArchibald Elliott EXPECT_EQ(Triple::bpfeb, T.getBigEndianArchVariant().getArch()); 2112f09cf34dSArchibald Elliott EXPECT_EQ(Triple::bpfel, T.getLittleEndianArchVariant().getArch()); 2113f09cf34dSArchibald Elliott 2114f09cf34dSArchibald Elliott T.setArch(Triple::bpfel); 2115f09cf34dSArchibald Elliott EXPECT_EQ(Triple::bpfeb, T.getBigEndianArchVariant().getArch()); 2116f09cf34dSArchibald Elliott EXPECT_EQ(Triple::bpfel, T.getLittleEndianArchVariant().getArch()); 2117f09cf34dSArchibald Elliott 2118f09cf34dSArchibald Elliott T.setArch(Triple::mips64); 2119f09cf34dSArchibald Elliott EXPECT_EQ(Triple::mips64, T.getBigEndianArchVariant().getArch()); 2120f09cf34dSArchibald Elliott EXPECT_EQ(Triple::NoSubArch, T.getBigEndianArchVariant().getSubArch()); 2121f09cf34dSArchibald Elliott EXPECT_EQ(Triple::mips64el, T.getLittleEndianArchVariant().getArch()); 2122f09cf34dSArchibald Elliott EXPECT_EQ(Triple::NoSubArch, T.getLittleEndianArchVariant().getSubArch()); 2123f09cf34dSArchibald Elliott 2124f09cf34dSArchibald Elliott T.setArch(Triple::mips64, Triple::MipsSubArch_r6); 2125f09cf34dSArchibald Elliott EXPECT_EQ(Triple::mips64, T.getBigEndianArchVariant().getArch()); 2126f09cf34dSArchibald Elliott EXPECT_EQ(Triple::MipsSubArch_r6, T.getBigEndianArchVariant().getSubArch()); 2127f09cf34dSArchibald Elliott EXPECT_EQ(Triple::mips64el, T.getLittleEndianArchVariant().getArch()); 2128f09cf34dSArchibald Elliott EXPECT_EQ(Triple::MipsSubArch_r6, 2129f09cf34dSArchibald Elliott T.getLittleEndianArchVariant().getSubArch()); 2130f09cf34dSArchibald Elliott 2131f09cf34dSArchibald Elliott T.setArch(Triple::mips64el); 2132f09cf34dSArchibald Elliott EXPECT_EQ(Triple::mips64, T.getBigEndianArchVariant().getArch()); 2133f09cf34dSArchibald Elliott EXPECT_EQ(Triple::NoSubArch, T.getBigEndianArchVariant().getSubArch()); 2134f09cf34dSArchibald Elliott EXPECT_EQ(Triple::mips64el, T.getLittleEndianArchVariant().getArch()); 2135f09cf34dSArchibald Elliott EXPECT_EQ(Triple::NoSubArch, T.getLittleEndianArchVariant().getSubArch()); 2136f09cf34dSArchibald Elliott 2137f09cf34dSArchibald Elliott T.setArch(Triple::mips64el, Triple::MipsSubArch_r6); 2138f09cf34dSArchibald Elliott EXPECT_EQ(Triple::mips64, T.getBigEndianArchVariant().getArch()); 2139f09cf34dSArchibald Elliott EXPECT_EQ(Triple::MipsSubArch_r6, T.getBigEndianArchVariant().getSubArch()); 2140f09cf34dSArchibald Elliott EXPECT_EQ(Triple::mips64el, T.getLittleEndianArchVariant().getArch()); 2141f09cf34dSArchibald Elliott EXPECT_EQ(Triple::MipsSubArch_r6, 2142f09cf34dSArchibald Elliott T.getLittleEndianArchVariant().getSubArch()); 2143f09cf34dSArchibald Elliott 2144f09cf34dSArchibald Elliott T.setArch(Triple::mips); 2145f09cf34dSArchibald Elliott EXPECT_EQ(Triple::mips, T.getBigEndianArchVariant().getArch()); 2146f09cf34dSArchibald Elliott EXPECT_EQ(Triple::NoSubArch, T.getBigEndianArchVariant().getSubArch()); 2147f09cf34dSArchibald Elliott EXPECT_EQ(Triple::mipsel, T.getLittleEndianArchVariant().getArch()); 2148f09cf34dSArchibald Elliott EXPECT_EQ(Triple::NoSubArch, T.getLittleEndianArchVariant().getSubArch()); 2149f09cf34dSArchibald Elliott 2150f09cf34dSArchibald Elliott T.setArch(Triple::mips, Triple::MipsSubArch_r6); 2151f09cf34dSArchibald Elliott EXPECT_EQ(Triple::mips, T.getBigEndianArchVariant().getArch()); 2152f09cf34dSArchibald Elliott EXPECT_EQ(Triple::MipsSubArch_r6, T.getBigEndianArchVariant().getSubArch()); 2153f09cf34dSArchibald Elliott EXPECT_EQ(Triple::mipsel, T.getLittleEndianArchVariant().getArch()); 2154f09cf34dSArchibald Elliott EXPECT_EQ(Triple::MipsSubArch_r6, 2155f09cf34dSArchibald Elliott T.getLittleEndianArchVariant().getSubArch()); 2156f09cf34dSArchibald Elliott 2157f09cf34dSArchibald Elliott T.setArch(Triple::mipsel); 2158f09cf34dSArchibald Elliott EXPECT_EQ(Triple::mips, T.getBigEndianArchVariant().getArch()); 2159f09cf34dSArchibald Elliott EXPECT_EQ(Triple::NoSubArch, T.getBigEndianArchVariant().getSubArch()); 2160f09cf34dSArchibald Elliott EXPECT_EQ(Triple::mipsel, T.getLittleEndianArchVariant().getArch()); 2161f09cf34dSArchibald Elliott EXPECT_EQ(Triple::NoSubArch, T.getLittleEndianArchVariant().getSubArch()); 2162f09cf34dSArchibald Elliott 2163f09cf34dSArchibald Elliott T.setArch(Triple::mipsel, Triple::MipsSubArch_r6); 2164f09cf34dSArchibald Elliott EXPECT_EQ(Triple::mips, T.getBigEndianArchVariant().getArch()); 2165f09cf34dSArchibald Elliott EXPECT_EQ(Triple::MipsSubArch_r6, T.getBigEndianArchVariant().getSubArch()); 2166f09cf34dSArchibald Elliott EXPECT_EQ(Triple::mipsel, T.getLittleEndianArchVariant().getArch()); 2167f09cf34dSArchibald Elliott EXPECT_EQ(Triple::MipsSubArch_r6, 2168f09cf34dSArchibald Elliott T.getLittleEndianArchVariant().getSubArch()); 2169f09cf34dSArchibald Elliott 2170f09cf34dSArchibald Elliott T.setArch(Triple::ppc); 2171f09cf34dSArchibald Elliott EXPECT_EQ(Triple::ppc, T.getBigEndianArchVariant().getArch()); 2172f09cf34dSArchibald Elliott EXPECT_EQ(Triple::ppcle, T.getLittleEndianArchVariant().getArch()); 2173f09cf34dSArchibald Elliott 2174f09cf34dSArchibald Elliott T.setArch(Triple::ppc64); 2175f09cf34dSArchibald Elliott EXPECT_EQ(Triple::ppc64, T.getBigEndianArchVariant().getArch()); 2176f09cf34dSArchibald Elliott EXPECT_EQ(Triple::ppc64le, T.getLittleEndianArchVariant().getArch()); 2177f09cf34dSArchibald Elliott 2178f09cf34dSArchibald Elliott T.setArch(Triple::ppc64le); 2179f09cf34dSArchibald Elliott EXPECT_EQ(Triple::ppc64, T.getBigEndianArchVariant().getArch()); 2180f09cf34dSArchibald Elliott EXPECT_EQ(Triple::ppc64le, T.getLittleEndianArchVariant().getArch()); 2181f09cf34dSArchibald Elliott 2182f09cf34dSArchibald Elliott T.setArch(Triple::sparc); 2183f09cf34dSArchibald Elliott EXPECT_EQ(Triple::sparc, T.getBigEndianArchVariant().getArch()); 2184f09cf34dSArchibald Elliott EXPECT_EQ(Triple::sparcel, T.getLittleEndianArchVariant().getArch()); 2185f09cf34dSArchibald Elliott 2186f09cf34dSArchibald Elliott T.setArch(Triple::sparcel); 2187f09cf34dSArchibald Elliott EXPECT_EQ(Triple::sparc, T.getBigEndianArchVariant().getArch()); 2188f09cf34dSArchibald Elliott EXPECT_EQ(Triple::sparcel, T.getLittleEndianArchVariant().getArch()); 2189f09cf34dSArchibald Elliott 2190f09cf34dSArchibald Elliott T.setArch(Triple::thumb); 2191f09cf34dSArchibald Elliott EXPECT_EQ(Triple::UnknownArch, T.getBigEndianArchVariant().getArch()); 2192f09cf34dSArchibald Elliott EXPECT_EQ(Triple::thumb, T.getLittleEndianArchVariant().getArch()); 2193f09cf34dSArchibald Elliott 2194f09cf34dSArchibald Elliott T.setArch(Triple::thumbeb); 2195f09cf34dSArchibald Elliott EXPECT_EQ(Triple::thumbeb, T.getBigEndianArchVariant().getArch()); 2196f09cf34dSArchibald Elliott EXPECT_EQ(Triple::UnknownArch, T.getLittleEndianArchVariant().getArch()); 2197f09cf34dSArchibald Elliott 2198f09cf34dSArchibald Elliott T.setArch(Triple::lanai); 2199f09cf34dSArchibald Elliott EXPECT_EQ(Triple::lanai, T.getBigEndianArchVariant().getArch()); 2200f09cf34dSArchibald Elliott EXPECT_EQ(Triple::UnknownArch, T.getLittleEndianArchVariant().getArch()); 2201f09cf34dSArchibald Elliott 2202f09cf34dSArchibald Elliott T.setArch(Triple::tcele); 2203f09cf34dSArchibald Elliott EXPECT_EQ(Triple::tce, T.getBigEndianArchVariant().getArch()); 2204f09cf34dSArchibald Elliott EXPECT_EQ(Triple::tcele, T.getLittleEndianArchVariant().getArch()); 2205f09cf34dSArchibald Elliott 2206f09cf34dSArchibald Elliott T.setArch(Triple::tce); 2207f09cf34dSArchibald Elliott EXPECT_EQ(Triple::tce, T.getBigEndianArchVariant().getArch()); 2208f09cf34dSArchibald Elliott EXPECT_EQ(Triple::tcele, T.getLittleEndianArchVariant().getArch()); 2209f09cf34dSArchibald Elliott 2210f09cf34dSArchibald Elliott T.setArch(Triple::csky); 2211f09cf34dSArchibald Elliott EXPECT_EQ(Triple::UnknownArch, T.getBigEndianArchVariant().getArch()); 2212f09cf34dSArchibald Elliott EXPECT_EQ(Triple::csky, T.getLittleEndianArchVariant().getArch()); 2213f09cf34dSArchibald Elliott 2214f09cf34dSArchibald Elliott T.setArch(Triple::loongarch32); 2215f09cf34dSArchibald Elliott EXPECT_TRUE(T.isLittleEndian()); 2216f09cf34dSArchibald Elliott EXPECT_EQ(Triple::UnknownArch, T.getBigEndianArchVariant().getArch()); 2217f09cf34dSArchibald Elliott EXPECT_EQ(Triple::loongarch32, T.getLittleEndianArchVariant().getArch()); 2218f09cf34dSArchibald Elliott 2219f09cf34dSArchibald Elliott T.setArch(Triple::loongarch64); 2220f09cf34dSArchibald Elliott EXPECT_TRUE(T.isLittleEndian()); 2221f09cf34dSArchibald Elliott EXPECT_EQ(Triple::UnknownArch, T.getBigEndianArchVariant().getArch()); 2222f09cf34dSArchibald Elliott EXPECT_EQ(Triple::loongarch64, T.getLittleEndianArchVariant().getArch()); 2223f09cf34dSArchibald Elliott 2224f09cf34dSArchibald Elliott T.setArch(Triple::dxil); 2225f09cf34dSArchibald Elliott EXPECT_TRUE(T.isLittleEndian()); 2226f09cf34dSArchibald Elliott EXPECT_EQ(Triple::UnknownArch, T.getBigEndianArchVariant().getArch()); 2227f09cf34dSArchibald Elliott EXPECT_EQ(Triple::dxil, T.getLittleEndianArchVariant().getArch()); 2228f09cf34dSArchibald Elliott } 2229f09cf34dSArchibald Elliott 22307d3466b5SCyndy Ishida TEST(TripleTest, XROS) { 22317d3466b5SCyndy Ishida Triple T; 22327d3466b5SCyndy Ishida VersionTuple Version; 22337d3466b5SCyndy Ishida 22347d3466b5SCyndy Ishida T = Triple("arm64-apple-xros"); 22357d3466b5SCyndy Ishida EXPECT_TRUE(T.isXROS()); 22367d3466b5SCyndy Ishida EXPECT_TRUE(T.isOSDarwin()); 22377d3466b5SCyndy Ishida EXPECT_FALSE(T.isiOS()); 22387d3466b5SCyndy Ishida EXPECT_FALSE(T.isMacOSX()); 22397d3466b5SCyndy Ishida EXPECT_FALSE(T.isSimulatorEnvironment()); 22407d3466b5SCyndy Ishida EXPECT_EQ(T.getOSName(), "xros"); 22417d3466b5SCyndy Ishida Version = T.getOSVersion(); 22427d3466b5SCyndy Ishida EXPECT_EQ(VersionTuple(0), Version); 22437d3466b5SCyndy Ishida 22447d3466b5SCyndy Ishida T = Triple("arm64-apple-visionos1.2"); 22457d3466b5SCyndy Ishida EXPECT_TRUE(T.isXROS()); 22467d3466b5SCyndy Ishida EXPECT_TRUE(T.isOSDarwin()); 22477d3466b5SCyndy Ishida EXPECT_FALSE(T.isiOS()); 22487d3466b5SCyndy Ishida EXPECT_FALSE(T.isMacOSX()); 22497d3466b5SCyndy Ishida EXPECT_FALSE(T.isSimulatorEnvironment()); 22507d3466b5SCyndy Ishida EXPECT_EQ(T.getOSName(), "visionos1.2"); 22517d3466b5SCyndy Ishida Version = T.getOSVersion(); 22527d3466b5SCyndy Ishida EXPECT_EQ(VersionTuple(1, 2), Version); 22537d3466b5SCyndy Ishida 22547d3466b5SCyndy Ishida T = Triple("arm64-apple-xros1-simulator"); 22557d3466b5SCyndy Ishida EXPECT_TRUE(T.isXROS()); 22567d3466b5SCyndy Ishida EXPECT_TRUE(T.isOSDarwin()); 22577d3466b5SCyndy Ishida EXPECT_FALSE(T.isiOS()); 22587d3466b5SCyndy Ishida EXPECT_FALSE(T.isMacOSX()); 22597d3466b5SCyndy Ishida EXPECT_TRUE(T.isSimulatorEnvironment()); 22607d3466b5SCyndy Ishida Version = T.getOSVersion(); 22617d3466b5SCyndy Ishida EXPECT_EQ(VersionTuple(1), Version); 22627d3466b5SCyndy Ishida Version = T.getiOSVersion(); 22637d3466b5SCyndy Ishida EXPECT_EQ(VersionTuple(17), Version); 22647d3466b5SCyndy Ishida } 22657d3466b5SCyndy Ishida 2266f09cf34dSArchibald Elliott TEST(TripleTest, getOSVersion) { 2267f09cf34dSArchibald Elliott Triple T; 2268f09cf34dSArchibald Elliott VersionTuple Version; 2269f09cf34dSArchibald Elliott 2270f09cf34dSArchibald Elliott T = Triple("i386-apple-darwin9"); 2271f09cf34dSArchibald Elliott EXPECT_TRUE(T.isMacOSX()); 2272f09cf34dSArchibald Elliott EXPECT_FALSE(T.isiOS()); 2273f09cf34dSArchibald Elliott EXPECT_FALSE(T.isArch16Bit()); 2274f09cf34dSArchibald Elliott EXPECT_TRUE(T.isArch32Bit()); 2275f09cf34dSArchibald Elliott EXPECT_FALSE(T.isArch64Bit()); 2276f09cf34dSArchibald Elliott T.getMacOSXVersion(Version); 2277f09cf34dSArchibald Elliott EXPECT_EQ(VersionTuple(10, 5), Version); 2278f09cf34dSArchibald Elliott Version = T.getiOSVersion(); 2279f09cf34dSArchibald Elliott EXPECT_EQ(VersionTuple(5), Version); 2280f09cf34dSArchibald Elliott 2281f09cf34dSArchibald Elliott T = Triple("x86_64-apple-darwin9"); 2282f09cf34dSArchibald Elliott EXPECT_TRUE(T.isMacOSX()); 2283f09cf34dSArchibald Elliott EXPECT_FALSE(T.isiOS()); 2284f09cf34dSArchibald Elliott EXPECT_FALSE(T.isArch16Bit()); 2285f09cf34dSArchibald Elliott EXPECT_FALSE(T.isArch32Bit()); 2286f09cf34dSArchibald Elliott EXPECT_TRUE(T.isArch64Bit()); 2287f09cf34dSArchibald Elliott T.getMacOSXVersion(Version); 2288f09cf34dSArchibald Elliott EXPECT_EQ(VersionTuple(10, 5), Version); 2289f09cf34dSArchibald Elliott Version = T.getiOSVersion(); 2290f09cf34dSArchibald Elliott EXPECT_EQ(VersionTuple(5), Version); 2291f09cf34dSArchibald Elliott 2292f09cf34dSArchibald Elliott T = Triple("x86_64-apple-macosx"); 2293f09cf34dSArchibald Elliott EXPECT_TRUE(T.isMacOSX()); 2294f09cf34dSArchibald Elliott EXPECT_FALSE(T.isiOS()); 2295f09cf34dSArchibald Elliott EXPECT_FALSE(T.isArch16Bit()); 2296f09cf34dSArchibald Elliott EXPECT_FALSE(T.isArch32Bit()); 2297f09cf34dSArchibald Elliott EXPECT_TRUE(T.isArch64Bit()); 2298f09cf34dSArchibald Elliott T.getMacOSXVersion(Version); 2299f09cf34dSArchibald Elliott EXPECT_EQ(VersionTuple(10, 4), Version); 2300f09cf34dSArchibald Elliott Version = T.getiOSVersion(); 2301f09cf34dSArchibald Elliott EXPECT_EQ(VersionTuple(5), Version); 2302f09cf34dSArchibald Elliott 2303f09cf34dSArchibald Elliott T = Triple("x86_64-apple-macosx10.7"); 2304f09cf34dSArchibald Elliott EXPECT_TRUE(T.isMacOSX()); 2305f09cf34dSArchibald Elliott EXPECT_FALSE(T.isiOS()); 2306f09cf34dSArchibald Elliott EXPECT_FALSE(T.isArch16Bit()); 2307f09cf34dSArchibald Elliott EXPECT_FALSE(T.isArch32Bit()); 2308f09cf34dSArchibald Elliott EXPECT_TRUE(T.isArch64Bit()); 2309f09cf34dSArchibald Elliott T.getMacOSXVersion(Version); 2310f09cf34dSArchibald Elliott EXPECT_EQ(VersionTuple(10, 7), Version); 2311f09cf34dSArchibald Elliott Version = T.getiOSVersion(); 2312f09cf34dSArchibald Elliott EXPECT_EQ(VersionTuple(5), Version); 2313f09cf34dSArchibald Elliott 2314f09cf34dSArchibald Elliott T = Triple("x86_64-apple-macos11.0"); 2315f09cf34dSArchibald Elliott EXPECT_TRUE(T.isMacOSX()); 2316f09cf34dSArchibald Elliott EXPECT_FALSE(T.isiOS()); 2317f09cf34dSArchibald Elliott EXPECT_FALSE(T.isArch16Bit()); 2318f09cf34dSArchibald Elliott EXPECT_FALSE(T.isArch32Bit()); 2319f09cf34dSArchibald Elliott EXPECT_TRUE(T.isArch64Bit()); 2320f09cf34dSArchibald Elliott T.getMacOSXVersion(Version); 2321f09cf34dSArchibald Elliott EXPECT_EQ(VersionTuple(11, 0), Version); 2322f09cf34dSArchibald Elliott 2323f09cf34dSArchibald Elliott T = Triple("arm64-apple-macosx11.5.8"); 2324f09cf34dSArchibald Elliott EXPECT_TRUE(T.isMacOSX()); 2325f09cf34dSArchibald Elliott EXPECT_FALSE(T.isiOS()); 2326f09cf34dSArchibald Elliott EXPECT_FALSE(T.isArch16Bit()); 2327f09cf34dSArchibald Elliott EXPECT_FALSE(T.isArch32Bit()); 2328f09cf34dSArchibald Elliott EXPECT_TRUE(T.isArch64Bit()); 2329f09cf34dSArchibald Elliott T.getMacOSXVersion(Version); 2330f09cf34dSArchibald Elliott EXPECT_EQ(VersionTuple(11, 5, 8), Version); 2331f09cf34dSArchibald Elliott 2332f09cf34dSArchibald Elliott // 10.16 forms a valid triple, even though it's not 2333f09cf34dSArchibald Elliott // a version of a macOS. 2334f09cf34dSArchibald Elliott T = Triple("x86_64-apple-macos10.16"); 2335f09cf34dSArchibald Elliott EXPECT_TRUE(T.isMacOSX()); 2336f09cf34dSArchibald Elliott T.getMacOSXVersion(Version); 2337f09cf34dSArchibald Elliott EXPECT_EQ(VersionTuple(10, 16), Version); 2338f09cf34dSArchibald Elliott 2339f09cf34dSArchibald Elliott T = Triple("x86_64-apple-darwin20"); 2340f09cf34dSArchibald Elliott EXPECT_TRUE(T.isMacOSX()); 2341f09cf34dSArchibald Elliott T.getMacOSXVersion(Version); 2342f09cf34dSArchibald Elliott EXPECT_EQ(VersionTuple(11), Version); 2343f09cf34dSArchibald Elliott 2344f09cf34dSArchibald Elliott // For darwin triples on macOS 11, only compare the major version. 2345f09cf34dSArchibald Elliott T = Triple("x86_64-apple-darwin20.2"); 2346f09cf34dSArchibald Elliott EXPECT_TRUE(T.isMacOSX()); 2347f09cf34dSArchibald Elliott T.getMacOSXVersion(Version); 2348f09cf34dSArchibald Elliott EXPECT_EQ(VersionTuple(11), Version); 2349f09cf34dSArchibald Elliott 2350f09cf34dSArchibald Elliott T = Triple("armv7-apple-ios"); 2351f09cf34dSArchibald Elliott EXPECT_FALSE(T.isMacOSX()); 2352f09cf34dSArchibald Elliott EXPECT_TRUE(T.isiOS()); 2353f09cf34dSArchibald Elliott EXPECT_FALSE(T.isArch16Bit()); 2354f09cf34dSArchibald Elliott EXPECT_TRUE(T.isArch32Bit()); 2355f09cf34dSArchibald Elliott EXPECT_FALSE(T.isArch64Bit()); 2356f09cf34dSArchibald Elliott T.getMacOSXVersion(Version); 2357f09cf34dSArchibald Elliott EXPECT_EQ(VersionTuple(10, 4), Version); 2358f09cf34dSArchibald Elliott Version = T.getiOSVersion(); 2359f09cf34dSArchibald Elliott EXPECT_EQ(VersionTuple(5), Version); 2360f09cf34dSArchibald Elliott 2361f09cf34dSArchibald Elliott T = Triple("armv7-apple-ios7.0"); 2362f09cf34dSArchibald Elliott EXPECT_FALSE(T.isMacOSX()); 2363f09cf34dSArchibald Elliott EXPECT_TRUE(T.isiOS()); 2364f09cf34dSArchibald Elliott EXPECT_FALSE(T.isArch16Bit()); 2365f09cf34dSArchibald Elliott EXPECT_TRUE(T.isArch32Bit()); 2366f09cf34dSArchibald Elliott EXPECT_FALSE(T.isArch64Bit()); 2367f09cf34dSArchibald Elliott T.getMacOSXVersion(Version); 2368f09cf34dSArchibald Elliott EXPECT_EQ(VersionTuple(10, 4), Version); 2369f09cf34dSArchibald Elliott Version = T.getiOSVersion(); 2370f09cf34dSArchibald Elliott EXPECT_EQ(VersionTuple(7, 0), Version); 2371f09cf34dSArchibald Elliott EXPECT_FALSE(T.isSimulatorEnvironment()); 2372f09cf34dSArchibald Elliott 2373f09cf34dSArchibald Elliott T = Triple("x86_64-apple-ios10.3-simulator"); 2374f09cf34dSArchibald Elliott EXPECT_TRUE(T.isiOS()); 2375f09cf34dSArchibald Elliott Version = T.getiOSVersion(); 2376f09cf34dSArchibald Elliott EXPECT_EQ(VersionTuple(10, 3), Version); 2377f09cf34dSArchibald Elliott EXPECT_TRUE(T.isSimulatorEnvironment()); 2378f09cf34dSArchibald Elliott EXPECT_FALSE(T.isMacCatalystEnvironment()); 2379f09cf34dSArchibald Elliott 2380f09cf34dSArchibald Elliott T = Triple("x86_64-apple-ios13.0-macabi"); 2381f09cf34dSArchibald Elliott EXPECT_TRUE(T.isiOS()); 2382f09cf34dSArchibald Elliott Version = T.getiOSVersion(); 2383f09cf34dSArchibald Elliott EXPECT_EQ(VersionTuple(13, 0), Version); 2384f09cf34dSArchibald Elliott EXPECT_TRUE(T.getEnvironment() == Triple::MacABI); 2385f09cf34dSArchibald Elliott EXPECT_TRUE(T.isMacCatalystEnvironment()); 2386f09cf34dSArchibald Elliott EXPECT_FALSE(T.isSimulatorEnvironment()); 2387f09cf34dSArchibald Elliott 2388f09cf34dSArchibald Elliott T = Triple("x86_64-apple-driverkit20.1.0"); 2389f09cf34dSArchibald Elliott EXPECT_TRUE(T.isDriverKit()); 2390f09cf34dSArchibald Elliott EXPECT_TRUE(T.isOSDarwin()); 2391f09cf34dSArchibald Elliott EXPECT_FALSE(T.isMacOSX()); 2392f09cf34dSArchibald Elliott EXPECT_FALSE(T.isiOS()); 2393f09cf34dSArchibald Elliott Version = T.getDriverKitVersion(); 2394f09cf34dSArchibald Elliott EXPECT_EQ(VersionTuple(20, 1), Version); 2395f09cf34dSArchibald Elliott 2396f09cf34dSArchibald Elliott T = Triple("x86_64-apple-driverkit20"); 2397f09cf34dSArchibald Elliott Version = T.getDriverKitVersion(); 2398f09cf34dSArchibald Elliott EXPECT_EQ(VersionTuple(20, 0), Version); 2399f09cf34dSArchibald Elliott 2400f09cf34dSArchibald Elliott // DriverKit version should default to 19.0. 2401f09cf34dSArchibald Elliott T = Triple("x86_64-apple-driverkit"); 2402f09cf34dSArchibald Elliott Version = T.getDriverKitVersion(); 2403f09cf34dSArchibald Elliott EXPECT_EQ(VersionTuple(19, 0), Version); 2404f09cf34dSArchibald Elliott 2405f09cf34dSArchibald Elliott T = Triple("dxil-unknown-shadermodel6.6-pixel"); 2406f09cf34dSArchibald Elliott EXPECT_EQ(Triple::dxil, T.getArch()); 2407f09cf34dSArchibald Elliott EXPECT_EQ(Triple::UnknownVendor, T.getVendor()); 2408f09cf34dSArchibald Elliott EXPECT_EQ(Triple::ShaderModel, T.getOS()); 2409f09cf34dSArchibald Elliott Version = T.getOSVersion(); 2410f09cf34dSArchibald Elliott EXPECT_EQ(VersionTuple(6, 6), Version); 2411f09cf34dSArchibald Elliott EXPECT_EQ(Triple::Pixel, T.getEnvironment()); 2412f09cf34dSArchibald Elliott 2413f09cf34dSArchibald Elliott T = Triple("dxil-unknown-shadermodel6.0-pixel"); 2414f09cf34dSArchibald Elliott EXPECT_EQ(Triple::dxil, T.getArch()); 2415f09cf34dSArchibald Elliott EXPECT_EQ(Triple::UnknownVendor, T.getVendor()); 2416f09cf34dSArchibald Elliott EXPECT_EQ(Triple::ShaderModel, T.getOS()); 2417f09cf34dSArchibald Elliott Version = T.getOSVersion(); 2418f09cf34dSArchibald Elliott EXPECT_EQ(VersionTuple(6, 0), Version); 2419f09cf34dSArchibald Elliott EXPECT_EQ(Triple::Pixel, T.getEnvironment()); 2420f09cf34dSArchibald Elliott } 2421f09cf34dSArchibald Elliott 2422f09cf34dSArchibald Elliott TEST(TripleTest, getEnvironmentVersion) { 2423f09cf34dSArchibald Elliott Triple T; 2424f09cf34dSArchibald Elliott VersionTuple Version; 2425f09cf34dSArchibald Elliott 2426f09cf34dSArchibald Elliott T = Triple("arm-unknown-linux-android16"); 2427f09cf34dSArchibald Elliott EXPECT_TRUE(T.isAndroid()); 2428f09cf34dSArchibald Elliott Version = T.getEnvironmentVersion(); 2429f09cf34dSArchibald Elliott EXPECT_EQ(VersionTuple(16), Version); 2430f09cf34dSArchibald Elliott EXPECT_EQ(Triple::Android, T.getEnvironment()); 2431f09cf34dSArchibald Elliott 2432f09cf34dSArchibald Elliott T = Triple("aarch64-unknown-linux-android21"); 2433f09cf34dSArchibald Elliott EXPECT_TRUE(T.isAndroid()); 2434f09cf34dSArchibald Elliott Version = T.getEnvironmentVersion(); 2435f09cf34dSArchibald Elliott EXPECT_EQ(VersionTuple(21), Version); 2436f09cf34dSArchibald Elliott EXPECT_EQ(Triple::Android, T.getEnvironment()); 2437f09cf34dSArchibald Elliott } 2438f09cf34dSArchibald Elliott 2439f09cf34dSArchibald Elliott TEST(TripleTest, isMacOSVersionLT) { 2440f09cf34dSArchibald Elliott Triple T = Triple("x86_64-apple-macos11"); 2441f09cf34dSArchibald Elliott EXPECT_TRUE(T.isMacOSXVersionLT(11, 1, 0)); 2442f09cf34dSArchibald Elliott EXPECT_FALSE(T.isMacOSXVersionLT(10, 15, 0)); 2443f09cf34dSArchibald Elliott 2444f09cf34dSArchibald Elliott T = Triple("x86_64-apple-darwin20"); 2445f09cf34dSArchibald Elliott EXPECT_TRUE(T.isMacOSXVersionLT(11, 1, 0)); 2446f09cf34dSArchibald Elliott EXPECT_FALSE(T.isMacOSXVersionLT(11, 0, 0)); 2447f09cf34dSArchibald Elliott EXPECT_FALSE(T.isMacOSXVersionLT(10, 15, 0)); 2448f09cf34dSArchibald Elliott } 2449f09cf34dSArchibald Elliott 2450f09cf34dSArchibald Elliott TEST(TripleTest, CanonicalizeOSVersion) { 2451f09cf34dSArchibald Elliott EXPECT_EQ(VersionTuple(10, 15, 4), 2452f09cf34dSArchibald Elliott Triple::getCanonicalVersionForOS(Triple::MacOSX, 2453f09cf34dSArchibald Elliott VersionTuple(10, 15, 4))); 2454f09cf34dSArchibald Elliott EXPECT_EQ(VersionTuple(11, 0), Triple::getCanonicalVersionForOS( 2455f09cf34dSArchibald Elliott Triple::MacOSX, VersionTuple(10, 16))); 2456f09cf34dSArchibald Elliott EXPECT_EQ(VersionTuple(20), 2457f09cf34dSArchibald Elliott Triple::getCanonicalVersionForOS(Triple::Darwin, VersionTuple(20))); 2458f09cf34dSArchibald Elliott } 2459f09cf34dSArchibald Elliott 2460f09cf34dSArchibald Elliott TEST(TripleTest, FileFormat) { 2461f09cf34dSArchibald Elliott EXPECT_EQ(Triple::ELF, Triple("i686-unknown-linux-gnu").getObjectFormat()); 2462f09cf34dSArchibald Elliott EXPECT_EQ(Triple::ELF, Triple("i686-unknown-freebsd").getObjectFormat()); 2463f09cf34dSArchibald Elliott EXPECT_EQ(Triple::ELF, Triple("i686-unknown-netbsd").getObjectFormat()); 2464f09cf34dSArchibald Elliott EXPECT_EQ(Triple::ELF, Triple("i686--win32-elf").getObjectFormat()); 2465f09cf34dSArchibald Elliott EXPECT_EQ(Triple::ELF, Triple("i686---elf").getObjectFormat()); 2466f09cf34dSArchibald Elliott 2467f09cf34dSArchibald Elliott EXPECT_EQ(Triple::MachO, Triple("i686-apple-macosx").getObjectFormat()); 2468f09cf34dSArchibald Elliott EXPECT_EQ(Triple::MachO, Triple("i686-apple-ios").getObjectFormat()); 2469f09cf34dSArchibald Elliott EXPECT_EQ(Triple::MachO, Triple("i686---macho").getObjectFormat()); 24702bdf5aa5SFangrui Song EXPECT_EQ(Triple::MachO, Triple("powerpc-apple-macosx").getObjectFormat()); 2471f09cf34dSArchibald Elliott 2472f09cf34dSArchibald Elliott EXPECT_EQ(Triple::COFF, Triple("i686--win32").getObjectFormat()); 2473f09cf34dSArchibald Elliott 2474f09cf34dSArchibald Elliott EXPECT_EQ(Triple::ELF, Triple("i686-pc-windows-msvc-elf").getObjectFormat()); 2475f09cf34dSArchibald Elliott EXPECT_EQ(Triple::ELF, Triple("i686-pc-cygwin-elf").getObjectFormat()); 2476f09cf34dSArchibald Elliott 2477f09cf34dSArchibald Elliott EXPECT_EQ(Triple::ELF, Triple("systemz-ibm-linux").getObjectFormat()); 2478f09cf34dSArchibald Elliott EXPECT_EQ(Triple::ELF, Triple("systemz-ibm-unknown").getObjectFormat()); 2479f09cf34dSArchibald Elliott 2480f09cf34dSArchibald Elliott EXPECT_EQ(Triple::GOFF, Triple("s390x-ibm-zos").getObjectFormat()); 2481f09cf34dSArchibald Elliott EXPECT_EQ(Triple::GOFF, Triple("systemz-ibm-zos").getObjectFormat()); 2482f09cf34dSArchibald Elliott EXPECT_EQ(Triple::GOFF, Triple("s390x-ibm-zos-goff").getObjectFormat()); 2483f09cf34dSArchibald Elliott EXPECT_EQ(Triple::GOFF, Triple("s390x-unknown-zos-goff").getObjectFormat()); 2484f09cf34dSArchibald Elliott EXPECT_EQ(Triple::GOFF, Triple("s390x---goff").getObjectFormat()); 2485f09cf34dSArchibald Elliott 2486f09cf34dSArchibald Elliott EXPECT_EQ(Triple::Wasm, Triple("wasm32-unknown-unknown").getObjectFormat()); 2487f09cf34dSArchibald Elliott EXPECT_EQ(Triple::Wasm, Triple("wasm64-unknown-unknown").getObjectFormat()); 2488f09cf34dSArchibald Elliott EXPECT_EQ(Triple::Wasm, Triple("wasm32-wasi").getObjectFormat()); 2489f09cf34dSArchibald Elliott EXPECT_EQ(Triple::Wasm, Triple("wasm64-wasi").getObjectFormat()); 2490f09cf34dSArchibald Elliott EXPECT_EQ(Triple::Wasm, Triple("wasm32-unknown-wasi").getObjectFormat()); 2491f09cf34dSArchibald Elliott EXPECT_EQ(Triple::Wasm, Triple("wasm64-unknown-wasi").getObjectFormat()); 2492f09cf34dSArchibald Elliott 2493f09cf34dSArchibald Elliott EXPECT_EQ(Triple::Wasm, 2494f09cf34dSArchibald Elliott Triple("wasm32-unknown-unknown-wasm").getObjectFormat()); 2495f09cf34dSArchibald Elliott EXPECT_EQ(Triple::Wasm, 2496f09cf34dSArchibald Elliott Triple("wasm64-unknown-unknown-wasm").getObjectFormat()); 2497f09cf34dSArchibald Elliott EXPECT_EQ(Triple::Wasm, 2498f09cf34dSArchibald Elliott Triple("wasm32-wasi-wasm").getObjectFormat()); 2499f09cf34dSArchibald Elliott EXPECT_EQ(Triple::Wasm, 2500f09cf34dSArchibald Elliott Triple("wasm64-wasi-wasm").getObjectFormat()); 2501f09cf34dSArchibald Elliott EXPECT_EQ(Triple::Wasm, 2502f09cf34dSArchibald Elliott Triple("wasm32-unknown-wasi-wasm").getObjectFormat()); 2503f09cf34dSArchibald Elliott EXPECT_EQ(Triple::Wasm, 2504f09cf34dSArchibald Elliott Triple("wasm64-unknown-wasi-wasm").getObjectFormat()); 2505f09cf34dSArchibald Elliott 2506f09cf34dSArchibald Elliott EXPECT_EQ(Triple::XCOFF, Triple("powerpc-ibm-aix").getObjectFormat()); 2507f09cf34dSArchibald Elliott EXPECT_EQ(Triple::XCOFF, Triple("powerpc64-ibm-aix").getObjectFormat()); 2508f09cf34dSArchibald Elliott EXPECT_EQ(Triple::XCOFF, Triple("powerpc---xcoff").getObjectFormat()); 2509f09cf34dSArchibald Elliott EXPECT_EQ(Triple::XCOFF, Triple("powerpc64---xcoff").getObjectFormat()); 2510f09cf34dSArchibald Elliott 2511f09cf34dSArchibald Elliott EXPECT_EQ(Triple::ELF, Triple("csky-unknown-unknown").getObjectFormat()); 2512f09cf34dSArchibald Elliott EXPECT_EQ(Triple::ELF, Triple("csky-unknown-linux").getObjectFormat()); 2513f09cf34dSArchibald Elliott 251453b6a169SNathan Gauër EXPECT_EQ(Triple::SPIRV, Triple("spirv-unknown-unknown").getObjectFormat()); 2515f09cf34dSArchibald Elliott EXPECT_EQ(Triple::SPIRV, Triple("spirv32-unknown-unknown").getObjectFormat()); 2516f09cf34dSArchibald Elliott EXPECT_EQ(Triple::SPIRV, Triple("spirv64-unknown-unknown").getObjectFormat()); 2517f09cf34dSArchibald Elliott 2518f09cf34dSArchibald Elliott EXPECT_EQ(Triple::ELF, 2519f09cf34dSArchibald Elliott Triple("loongarch32-unknown-unknown").getObjectFormat()); 2520f09cf34dSArchibald Elliott EXPECT_EQ(Triple::ELF, Triple("loongarch64-unknown-linux").getObjectFormat()); 2521f09cf34dSArchibald Elliott 2522f09cf34dSArchibald Elliott Triple MSVCNormalized(Triple::normalize("i686-pc-windows-msvc-elf")); 2523f09cf34dSArchibald Elliott EXPECT_EQ(Triple::ELF, MSVCNormalized.getObjectFormat()); 2524f09cf34dSArchibald Elliott 2525f09cf34dSArchibald Elliott Triple GNUWindowsNormalized(Triple::normalize("i686-pc-windows-gnu-elf")); 2526f09cf34dSArchibald Elliott EXPECT_EQ(Triple::ELF, GNUWindowsNormalized.getObjectFormat()); 2527f09cf34dSArchibald Elliott 2528f09cf34dSArchibald Elliott Triple CygnusNormalised(Triple::normalize("i686-pc-windows-cygnus-elf")); 2529f09cf34dSArchibald Elliott EXPECT_EQ(Triple::ELF, CygnusNormalised.getObjectFormat()); 2530f09cf34dSArchibald Elliott 2531f09cf34dSArchibald Elliott Triple CygwinNormalized(Triple::normalize("i686-pc-cygwin-elf")); 2532f09cf34dSArchibald Elliott EXPECT_EQ(Triple::ELF, CygwinNormalized.getObjectFormat()); 2533f09cf34dSArchibald Elliott 2534f09cf34dSArchibald Elliott EXPECT_EQ(Triple::DXContainer, 2535f09cf34dSArchibald Elliott Triple("dxil-unknown-shadermodel").getObjectFormat()); 2536f09cf34dSArchibald Elliott 2537f09cf34dSArchibald Elliott Triple T = Triple(""); 2538f09cf34dSArchibald Elliott T.setObjectFormat(Triple::ELF); 2539f09cf34dSArchibald Elliott EXPECT_EQ(Triple::ELF, T.getObjectFormat()); 2540887d6ab1SLang Hames EXPECT_EQ("elf", Triple::getObjectFormatTypeName(T.getObjectFormat())); 2541f09cf34dSArchibald Elliott 2542f09cf34dSArchibald Elliott T.setObjectFormat(Triple::MachO); 2543f09cf34dSArchibald Elliott EXPECT_EQ(Triple::MachO, T.getObjectFormat()); 2544887d6ab1SLang Hames EXPECT_EQ("macho", Triple::getObjectFormatTypeName(T.getObjectFormat())); 2545f09cf34dSArchibald Elliott 2546f09cf34dSArchibald Elliott T.setObjectFormat(Triple::XCOFF); 2547f09cf34dSArchibald Elliott EXPECT_EQ(Triple::XCOFF, T.getObjectFormat()); 2548887d6ab1SLang Hames EXPECT_EQ("xcoff", Triple::getObjectFormatTypeName(T.getObjectFormat())); 2549f09cf34dSArchibald Elliott 2550f09cf34dSArchibald Elliott T.setObjectFormat(Triple::GOFF); 2551f09cf34dSArchibald Elliott EXPECT_EQ(Triple::GOFF, T.getObjectFormat()); 2552887d6ab1SLang Hames EXPECT_EQ("goff", Triple::getObjectFormatTypeName(T.getObjectFormat())); 2553f09cf34dSArchibald Elliott 2554f09cf34dSArchibald Elliott T.setObjectFormat(Triple::SPIRV); 2555f09cf34dSArchibald Elliott EXPECT_EQ(Triple::SPIRV, T.getObjectFormat()); 2556887d6ab1SLang Hames EXPECT_EQ("spirv", Triple::getObjectFormatTypeName(T.getObjectFormat())); 255762941293SMatt Arsenault 255862941293SMatt Arsenault EXPECT_EQ(Triple::ELF, Triple("amdgcn-apple-macosx").getObjectFormat()); 255962941293SMatt Arsenault EXPECT_EQ(Triple::ELF, Triple("r600-apple-macosx").getObjectFormat()); 256062941293SMatt Arsenault EXPECT_EQ(Triple::SPIRV, Triple("spirv-apple-macosx").getObjectFormat()); 256162941293SMatt Arsenault EXPECT_EQ(Triple::SPIRV, Triple("spirv32-apple-macosx").getObjectFormat()); 256262941293SMatt Arsenault EXPECT_EQ(Triple::SPIRV, Triple("spirv64-apple-macosx").getObjectFormat()); 256362941293SMatt Arsenault EXPECT_EQ(Triple::DXContainer, Triple("dxil-apple-macosx").getObjectFormat()); 2564f09cf34dSArchibald Elliott } 2565f09cf34dSArchibald Elliott 2566f09cf34dSArchibald Elliott TEST(TripleTest, NormalizeWindows) { 2567f09cf34dSArchibald Elliott EXPECT_EQ("i686-pc-windows-msvc", Triple::normalize("i686-pc-win32")); 2568f09cf34dSArchibald Elliott EXPECT_EQ("i686-unknown-windows-msvc", Triple::normalize("i686-win32")); 2569f09cf34dSArchibald Elliott EXPECT_EQ("i686-pc-windows-gnu", Triple::normalize("i686-pc-mingw32")); 2570f09cf34dSArchibald Elliott EXPECT_EQ("i686-unknown-windows-gnu", Triple::normalize("i686-mingw32")); 2571f09cf34dSArchibald Elliott EXPECT_EQ("i686-pc-windows-gnu", Triple::normalize("i686-pc-mingw32-w64")); 2572f09cf34dSArchibald Elliott EXPECT_EQ("i686-unknown-windows-gnu", Triple::normalize("i686-mingw32-w64")); 2573f09cf34dSArchibald Elliott EXPECT_EQ("i686-pc-windows-cygnus", Triple::normalize("i686-pc-cygwin")); 2574f09cf34dSArchibald Elliott EXPECT_EQ("i686-unknown-windows-cygnus", Triple::normalize("i686-cygwin")); 2575f09cf34dSArchibald Elliott 2576f09cf34dSArchibald Elliott EXPECT_EQ("x86_64-pc-windows-msvc", Triple::normalize("x86_64-pc-win32")); 2577f09cf34dSArchibald Elliott EXPECT_EQ("x86_64-unknown-windows-msvc", Triple::normalize("x86_64-win32")); 2578f09cf34dSArchibald Elliott EXPECT_EQ("x86_64-pc-windows-gnu", Triple::normalize("x86_64-pc-mingw32")); 2579f09cf34dSArchibald Elliott EXPECT_EQ("x86_64-unknown-windows-gnu", Triple::normalize("x86_64-mingw32")); 2580f09cf34dSArchibald Elliott EXPECT_EQ("x86_64-pc-windows-gnu", 2581f09cf34dSArchibald Elliott Triple::normalize("x86_64-pc-mingw32-w64")); 2582f09cf34dSArchibald Elliott EXPECT_EQ("x86_64-unknown-windows-gnu", 2583f09cf34dSArchibald Elliott Triple::normalize("x86_64-mingw32-w64")); 2584f09cf34dSArchibald Elliott 2585f09cf34dSArchibald Elliott EXPECT_EQ("i686-pc-windows-elf", Triple::normalize("i686-pc-win32-elf")); 2586f09cf34dSArchibald Elliott EXPECT_EQ("i686-unknown-windows-elf", Triple::normalize("i686-win32-elf")); 2587f09cf34dSArchibald Elliott EXPECT_EQ("i686-pc-windows-macho", Triple::normalize("i686-pc-win32-macho")); 2588f09cf34dSArchibald Elliott EXPECT_EQ("i686-unknown-windows-macho", 2589f09cf34dSArchibald Elliott Triple::normalize("i686-win32-macho")); 2590f09cf34dSArchibald Elliott 2591f09cf34dSArchibald Elliott EXPECT_EQ("x86_64-pc-windows-elf", Triple::normalize("x86_64-pc-win32-elf")); 2592f09cf34dSArchibald Elliott EXPECT_EQ("x86_64-unknown-windows-elf", 2593f09cf34dSArchibald Elliott Triple::normalize("x86_64-win32-elf")); 2594f09cf34dSArchibald Elliott EXPECT_EQ("x86_64-pc-windows-macho", 2595f09cf34dSArchibald Elliott Triple::normalize("x86_64-pc-win32-macho")); 2596f09cf34dSArchibald Elliott EXPECT_EQ("x86_64-unknown-windows-macho", 2597f09cf34dSArchibald Elliott Triple::normalize("x86_64-win32-macho")); 2598f09cf34dSArchibald Elliott 2599f09cf34dSArchibald Elliott EXPECT_EQ("i686-pc-windows-cygnus", 2600f09cf34dSArchibald Elliott Triple::normalize("i686-pc-windows-cygnus")); 2601f09cf34dSArchibald Elliott EXPECT_EQ("i686-pc-windows-gnu", Triple::normalize("i686-pc-windows-gnu")); 2602f09cf34dSArchibald Elliott EXPECT_EQ("i686-pc-windows-itanium", 2603f09cf34dSArchibald Elliott Triple::normalize("i686-pc-windows-itanium")); 2604f09cf34dSArchibald Elliott EXPECT_EQ("i686-pc-windows-msvc", Triple::normalize("i686-pc-windows-msvc")); 2605f09cf34dSArchibald Elliott 2606f09cf34dSArchibald Elliott EXPECT_EQ("i686-pc-windows-elf", 2607f09cf34dSArchibald Elliott Triple::normalize("i686-pc-windows-elf-elf")); 2608f09cf34dSArchibald Elliott 2609f09cf34dSArchibald Elliott EXPECT_TRUE(Triple("x86_64-pc-win32").isWindowsMSVCEnvironment()); 2610c6ba7b38Shpoussin 2611c6ba7b38Shpoussin EXPECT_TRUE(Triple(Triple::normalize("mipsel-windows-msvccoff")).isOSBinFormatCOFF()); 2612c6ba7b38Shpoussin EXPECT_TRUE(Triple(Triple::normalize("mipsel-windows-msvc")).isOSBinFormatCOFF()); 2613c6ba7b38Shpoussin EXPECT_TRUE(Triple(Triple::normalize("mipsel-windows-gnu")).isOSBinFormatCOFF()); 2614f09cf34dSArchibald Elliott } 2615f09cf34dSArchibald Elliott 2616f09cf34dSArchibald Elliott TEST(TripleTest, NormalizeAndroid) { 2617f09cf34dSArchibald Elliott EXPECT_EQ("arm-unknown-linux-android16", 2618f09cf34dSArchibald Elliott Triple::normalize("arm-linux-androideabi16")); 2619f09cf34dSArchibald Elliott EXPECT_EQ("armv7a-unknown-linux-android", 2620f09cf34dSArchibald Elliott Triple::normalize("armv7a-linux-androideabi")); 2621f09cf34dSArchibald Elliott EXPECT_EQ("aarch64-unknown-linux-android21", 2622f09cf34dSArchibald Elliott Triple::normalize("aarch64-linux-android21")); 2623f09cf34dSArchibald Elliott } 2624f09cf34dSArchibald Elliott 2625f09cf34dSArchibald Elliott TEST(TripleTest, NormalizeARM) { 2626f09cf34dSArchibald Elliott EXPECT_EQ("armv6-unknown-netbsd-eabi", 2627f09cf34dSArchibald Elliott Triple::normalize("armv6-netbsd-eabi")); 2628f09cf34dSArchibald Elliott EXPECT_EQ("armv7-unknown-netbsd-eabi", 2629f09cf34dSArchibald Elliott Triple::normalize("armv7-netbsd-eabi")); 2630f09cf34dSArchibald Elliott EXPECT_EQ("armv6eb-unknown-netbsd-eabi", 2631f09cf34dSArchibald Elliott Triple::normalize("armv6eb-netbsd-eabi")); 2632f09cf34dSArchibald Elliott EXPECT_EQ("armv7eb-unknown-netbsd-eabi", 2633f09cf34dSArchibald Elliott Triple::normalize("armv7eb-netbsd-eabi")); 2634f09cf34dSArchibald Elliott EXPECT_EQ("armv6-unknown-netbsd-eabihf", 2635f09cf34dSArchibald Elliott Triple::normalize("armv6-netbsd-eabihf")); 2636f09cf34dSArchibald Elliott EXPECT_EQ("armv7-unknown-netbsd-eabihf", 2637f09cf34dSArchibald Elliott Triple::normalize("armv7-netbsd-eabihf")); 2638f09cf34dSArchibald Elliott EXPECT_EQ("armv6eb-unknown-netbsd-eabihf", 2639f09cf34dSArchibald Elliott Triple::normalize("armv6eb-netbsd-eabihf")); 2640f09cf34dSArchibald Elliott EXPECT_EQ("armv7eb-unknown-netbsd-eabihf", 2641f09cf34dSArchibald Elliott Triple::normalize("armv7eb-netbsd-eabihf")); 2642f09cf34dSArchibald Elliott 2643f09cf34dSArchibald Elliott EXPECT_EQ("armv7-suse-linux-gnueabihf", 2644f09cf34dSArchibald Elliott Triple::normalize("armv7-suse-linux-gnueabi")); 2645f09cf34dSArchibald Elliott 2646f09cf34dSArchibald Elliott Triple T; 2647f09cf34dSArchibald Elliott T = Triple("armv6--netbsd-eabi"); 2648f09cf34dSArchibald Elliott EXPECT_EQ(Triple::arm, T.getArch()); 2649f09cf34dSArchibald Elliott T = Triple("armv6eb--netbsd-eabi"); 2650f09cf34dSArchibald Elliott EXPECT_EQ(Triple::armeb, T.getArch()); 2651f09cf34dSArchibald Elliott T = Triple("armv7-suse-linux-gnueabihf"); 2652f09cf34dSArchibald Elliott EXPECT_EQ(Triple::GNUEABIHF, T.getEnvironment()); 2653f09cf34dSArchibald Elliott } 2654f09cf34dSArchibald Elliott 2655f09cf34dSArchibald Elliott TEST(TripleTest, ParseARMArch) { 2656f09cf34dSArchibald Elliott // ARM 2657f09cf34dSArchibald Elliott { 2658f09cf34dSArchibald Elliott Triple T = Triple("arm"); 2659f09cf34dSArchibald Elliott EXPECT_EQ(Triple::arm, T.getArch()); 2660f09cf34dSArchibald Elliott } 2661f09cf34dSArchibald Elliott { 2662f09cf34dSArchibald Elliott Triple T = Triple("armeb"); 2663f09cf34dSArchibald Elliott EXPECT_EQ(Triple::armeb, T.getArch()); 2664f09cf34dSArchibald Elliott } 2665f09cf34dSArchibald Elliott // THUMB 2666f09cf34dSArchibald Elliott { 2667f09cf34dSArchibald Elliott Triple T = Triple("thumb"); 2668f09cf34dSArchibald Elliott EXPECT_EQ(Triple::thumb, T.getArch()); 2669f09cf34dSArchibald Elliott } 2670f09cf34dSArchibald Elliott { 2671f09cf34dSArchibald Elliott Triple T = Triple("thumbeb"); 2672f09cf34dSArchibald Elliott EXPECT_EQ(Triple::thumbeb, T.getArch()); 2673f09cf34dSArchibald Elliott } 2674f09cf34dSArchibald Elliott // AARCH64 2675f09cf34dSArchibald Elliott { 2676f09cf34dSArchibald Elliott Triple T = Triple("arm64"); 2677f09cf34dSArchibald Elliott EXPECT_EQ(Triple::aarch64, T.getArch()); 2678f09cf34dSArchibald Elliott } 2679f09cf34dSArchibald Elliott { 2680f09cf34dSArchibald Elliott Triple T = Triple("arm64_32"); 2681f09cf34dSArchibald Elliott EXPECT_EQ(Triple::aarch64_32, T.getArch()); 2682f09cf34dSArchibald Elliott } 2683f09cf34dSArchibald Elliott { 2684f09cf34dSArchibald Elliott Triple T = Triple("aarch64"); 2685f09cf34dSArchibald Elliott EXPECT_EQ(Triple::aarch64, T.getArch()); 2686f09cf34dSArchibald Elliott } 2687f09cf34dSArchibald Elliott { 2688f09cf34dSArchibald Elliott Triple T = Triple("aarch64_be"); 2689f09cf34dSArchibald Elliott EXPECT_EQ(Triple::aarch64_be, T.getArch()); 2690f09cf34dSArchibald Elliott } 2691f09cf34dSArchibald Elliott { 2692f09cf34dSArchibald Elliott Triple T = Triple("arm64e"); 2693f09cf34dSArchibald Elliott EXPECT_EQ(Triple::aarch64, T.getArch()); 2694f09cf34dSArchibald Elliott EXPECT_EQ(Triple::AArch64SubArch_arm64e, T.getSubArch()); 2695f09cf34dSArchibald Elliott } 2696f09cf34dSArchibald Elliott { 2697f09cf34dSArchibald Elliott Triple T = Triple("arm64ec"); 2698f09cf34dSArchibald Elliott EXPECT_EQ(Triple::aarch64, T.getArch()); 2699f09cf34dSArchibald Elliott EXPECT_EQ(Triple::AArch64SubArch_arm64ec, T.getSubArch()); 2700f09cf34dSArchibald Elliott } 2701f09cf34dSArchibald Elliott { 2702f09cf34dSArchibald Elliott Triple T; 2703f09cf34dSArchibald Elliott T.setArch(Triple::aarch64, Triple::AArch64SubArch_arm64ec); 2704f09cf34dSArchibald Elliott EXPECT_EQ("arm64ec", T.getArchName()); 2705f09cf34dSArchibald Elliott } 2706f09cf34dSArchibald Elliott } 2707f09cf34dSArchibald Elliott 2708f09cf34dSArchibald Elliott TEST(TripleTest, isArmT32) { 2709f09cf34dSArchibald Elliott // Not isArmT32 2710f09cf34dSArchibald Elliott { 2711f09cf34dSArchibald Elliott Triple T = Triple("thumbv6m"); 2712f09cf34dSArchibald Elliott EXPECT_FALSE(T.isArmT32()); 2713f09cf34dSArchibald Elliott } 2714f09cf34dSArchibald Elliott { 2715f09cf34dSArchibald Elliott Triple T = Triple("armv8m.base"); 2716f09cf34dSArchibald Elliott EXPECT_FALSE(T.isArmT32()); 2717f09cf34dSArchibald Elliott } 2718f09cf34dSArchibald Elliott { 2719f09cf34dSArchibald Elliott Triple T = Triple("armv7s"); 2720f09cf34dSArchibald Elliott EXPECT_FALSE(T.isArmT32()); 2721f09cf34dSArchibald Elliott } 2722f09cf34dSArchibald Elliott { 2723f09cf34dSArchibald Elliott Triple T = Triple("armv7k"); 2724f09cf34dSArchibald Elliott EXPECT_FALSE(T.isArmT32()); 2725f09cf34dSArchibald Elliott } 2726f09cf34dSArchibald Elliott { 2727f09cf34dSArchibald Elliott Triple T = Triple("armv7ve"); 2728f09cf34dSArchibald Elliott EXPECT_FALSE(T.isArmT32()); 2729f09cf34dSArchibald Elliott } 2730f09cf34dSArchibald Elliott { 2731f09cf34dSArchibald Elliott Triple T = Triple("armv6"); 2732f09cf34dSArchibald Elliott EXPECT_FALSE(T.isArmT32()); 2733f09cf34dSArchibald Elliott } 2734f09cf34dSArchibald Elliott { 2735f09cf34dSArchibald Elliott Triple T = Triple("armv6m"); 2736f09cf34dSArchibald Elliott EXPECT_FALSE(T.isArmT32()); 2737f09cf34dSArchibald Elliott } 2738f09cf34dSArchibald Elliott { 2739f09cf34dSArchibald Elliott Triple T = Triple("armv6k"); 2740f09cf34dSArchibald Elliott EXPECT_FALSE(T.isArmT32()); 2741f09cf34dSArchibald Elliott } 2742f09cf34dSArchibald Elliott { 2743f09cf34dSArchibald Elliott Triple T = Triple("armv6t2"); 2744f09cf34dSArchibald Elliott EXPECT_FALSE(T.isArmT32()); 2745f09cf34dSArchibald Elliott } 2746f09cf34dSArchibald Elliott { 2747f09cf34dSArchibald Elliott Triple T = Triple("armv5"); 2748f09cf34dSArchibald Elliott EXPECT_FALSE(T.isArmT32()); 2749f09cf34dSArchibald Elliott } 2750f09cf34dSArchibald Elliott { 2751f09cf34dSArchibald Elliott Triple T = Triple("armv5te"); 2752f09cf34dSArchibald Elliott EXPECT_FALSE(T.isArmT32()); 2753f09cf34dSArchibald Elliott } 2754f09cf34dSArchibald Elliott { 2755f09cf34dSArchibald Elliott Triple T = Triple("armv4t"); 2756f09cf34dSArchibald Elliott EXPECT_FALSE(T.isArmT32()); 2757f09cf34dSArchibald Elliott } 2758f09cf34dSArchibald Elliott 2759f09cf34dSArchibald Elliott // isArmT32 2760f09cf34dSArchibald Elliott { 2761f09cf34dSArchibald Elliott Triple T = Triple("arm"); 2762f09cf34dSArchibald Elliott EXPECT_TRUE(T.isArmT32()); 2763f09cf34dSArchibald Elliott } 2764f09cf34dSArchibald Elliott { 2765f09cf34dSArchibald Elliott Triple T = Triple("armv7m"); 2766f09cf34dSArchibald Elliott EXPECT_TRUE(T.isArmT32()); 2767f09cf34dSArchibald Elliott } 2768f09cf34dSArchibald Elliott { 2769f09cf34dSArchibald Elliott Triple T = Triple("armv7em"); 2770f09cf34dSArchibald Elliott EXPECT_TRUE(T.isArmT32()); 2771f09cf34dSArchibald Elliott } 2772f09cf34dSArchibald Elliott { 2773f09cf34dSArchibald Elliott Triple T = Triple("armv8m.main"); 2774f09cf34dSArchibald Elliott EXPECT_TRUE(T.isArmT32()); 2775f09cf34dSArchibald Elliott } 2776f09cf34dSArchibald Elliott { 2777f09cf34dSArchibald Elliott Triple T = Triple("armv8.1m.main"); 2778f09cf34dSArchibald Elliott EXPECT_TRUE(T.isArmT32()); 2779f09cf34dSArchibald Elliott } 2780f09cf34dSArchibald Elliott } 2781f09cf34dSArchibald Elliott 2782f09cf34dSArchibald Elliott TEST(TripleTest, isArmMClass) { 2783f09cf34dSArchibald Elliott // not M-class 2784f09cf34dSArchibald Elliott { 2785f09cf34dSArchibald Elliott Triple T = Triple("armv7s"); 2786f09cf34dSArchibald Elliott EXPECT_FALSE(T.isArmMClass()); 2787f09cf34dSArchibald Elliott } 2788f09cf34dSArchibald Elliott { 2789f09cf34dSArchibald Elliott Triple T = Triple("armv7k"); 2790f09cf34dSArchibald Elliott EXPECT_FALSE(T.isArmMClass()); 2791f09cf34dSArchibald Elliott } 2792f09cf34dSArchibald Elliott { 2793f09cf34dSArchibald Elliott Triple T = Triple("armv7ve"); 2794f09cf34dSArchibald Elliott EXPECT_FALSE(T.isArmMClass()); 2795f09cf34dSArchibald Elliott } 2796f09cf34dSArchibald Elliott { 2797f09cf34dSArchibald Elliott Triple T = Triple("armv6"); 2798f09cf34dSArchibald Elliott EXPECT_FALSE(T.isArmMClass()); 2799f09cf34dSArchibald Elliott } 2800f09cf34dSArchibald Elliott { 2801f09cf34dSArchibald Elliott Triple T = Triple("armv6k"); 2802f09cf34dSArchibald Elliott EXPECT_FALSE(T.isArmMClass()); 2803f09cf34dSArchibald Elliott } 2804f09cf34dSArchibald Elliott { 2805f09cf34dSArchibald Elliott Triple T = Triple("armv6t2"); 2806f09cf34dSArchibald Elliott EXPECT_FALSE(T.isArmMClass()); 2807f09cf34dSArchibald Elliott } 2808f09cf34dSArchibald Elliott { 2809f09cf34dSArchibald Elliott Triple T = Triple("armv5"); 2810f09cf34dSArchibald Elliott EXPECT_FALSE(T.isArmMClass()); 2811f09cf34dSArchibald Elliott } 2812f09cf34dSArchibald Elliott { 2813f09cf34dSArchibald Elliott Triple T = Triple("armv5te"); 2814f09cf34dSArchibald Elliott EXPECT_FALSE(T.isArmMClass()); 2815f09cf34dSArchibald Elliott } 2816f09cf34dSArchibald Elliott { 2817f09cf34dSArchibald Elliott Triple T = Triple("armv4t"); 2818f09cf34dSArchibald Elliott EXPECT_FALSE(T.isArmMClass()); 2819f09cf34dSArchibald Elliott } 2820f09cf34dSArchibald Elliott { 2821f09cf34dSArchibald Elliott Triple T = Triple("arm"); 2822f09cf34dSArchibald Elliott EXPECT_FALSE(T.isArmMClass()); 2823f09cf34dSArchibald Elliott } 2824f09cf34dSArchibald Elliott 2825f09cf34dSArchibald Elliott // is M-class 2826f09cf34dSArchibald Elliott { 2827f09cf34dSArchibald Elliott Triple T = Triple("armv6m"); 2828f09cf34dSArchibald Elliott EXPECT_TRUE(T.isArmMClass()); 2829f09cf34dSArchibald Elliott } 2830f09cf34dSArchibald Elliott { 2831f09cf34dSArchibald Elliott Triple T = Triple("armv7m"); 2832f09cf34dSArchibald Elliott EXPECT_TRUE(T.isArmMClass()); 2833f09cf34dSArchibald Elliott } 2834f09cf34dSArchibald Elliott { 2835f09cf34dSArchibald Elliott Triple T = Triple("armv7em"); 2836f09cf34dSArchibald Elliott EXPECT_TRUE(T.isArmMClass()); 2837f09cf34dSArchibald Elliott } 2838f09cf34dSArchibald Elliott { 2839f09cf34dSArchibald Elliott Triple T = Triple("armv8m.base"); 2840f09cf34dSArchibald Elliott EXPECT_TRUE(T.isArmMClass()); 2841f09cf34dSArchibald Elliott } 2842f09cf34dSArchibald Elliott { 2843f09cf34dSArchibald Elliott Triple T = Triple("armv8m.main"); 2844f09cf34dSArchibald Elliott EXPECT_TRUE(T.isArmMClass()); 2845f09cf34dSArchibald Elliott } 2846f09cf34dSArchibald Elliott { 2847f09cf34dSArchibald Elliott Triple T = Triple("armv8.1m.main"); 2848f09cf34dSArchibald Elliott EXPECT_TRUE(T.isArmMClass()); 2849f09cf34dSArchibald Elliott } 2850f09cf34dSArchibald Elliott } 28516d890148SS. Bharadwaj Yadavalli 28526d890148SS. Bharadwaj Yadavalli TEST(TripleTest, DXILNormaizeWithVersion) { 28536d890148SS. Bharadwaj Yadavalli EXPECT_EQ("dxilv1.0-unknown-shadermodel6.0", 28546d890148SS. Bharadwaj Yadavalli Triple::normalize("dxilv1.0--shadermodel6.0")); 28556d890148SS. Bharadwaj Yadavalli EXPECT_EQ("dxilv1.0-unknown-shadermodel6.0", 28566d890148SS. Bharadwaj Yadavalli Triple::normalize("dxil--shadermodel6.0")); 28576d890148SS. Bharadwaj Yadavalli EXPECT_EQ("dxilv1.1-unknown-shadermodel6.1-library", 28586d890148SS. Bharadwaj Yadavalli Triple::normalize("dxil-shadermodel6.1-unknown-library")); 28596d890148SS. Bharadwaj Yadavalli EXPECT_EQ("dxilv1.8-unknown-shadermodel6.x-unknown", 28606d890148SS. Bharadwaj Yadavalli Triple::normalize("dxil-unknown-shadermodel6.x-unknown")); 28616d890148SS. Bharadwaj Yadavalli EXPECT_EQ("dxilv1.8-unknown-shadermodel6.x-unknown", 28626d890148SS. Bharadwaj Yadavalli Triple::normalize("dxil-unknown-shadermodel6.x-unknown")); 28636d890148SS. Bharadwaj Yadavalli EXPECT_EQ("dxil-unknown-unknown-unknown", Triple::normalize("dxil---")); 28646d890148SS. Bharadwaj Yadavalli EXPECT_EQ("dxilv1.0-pc-shadermodel5.0-compute", 28656d890148SS. Bharadwaj Yadavalli Triple::normalize("dxil-shadermodel5.0-pc-compute")); 28666d890148SS. Bharadwaj Yadavalli } 2867a829ebadSMartin Storsjö 2868a829ebadSMartin Storsjö TEST(TripleTest, isCompatibleWith) { 2869a829ebadSMartin Storsjö struct { 2870a829ebadSMartin Storsjö const char *A; 2871a829ebadSMartin Storsjö const char *B; 2872a829ebadSMartin Storsjö bool Result; 2873a829ebadSMartin Storsjö } Cases[] = { 2874a829ebadSMartin Storsjö {"armv7-linux-gnueabihf", "thumbv7-linux-gnueabihf", true}, 2875a829ebadSMartin Storsjö {"armv4-none-unknown-eabi", "thumbv6-unknown-linux-gnueabihf", false}, 2876a829ebadSMartin Storsjö {"x86_64-apple-macosx10.9.0", "x86_64-apple-macosx10.10.0", true}, 2877a829ebadSMartin Storsjö {"x86_64-apple-macosx10.9.0", "i386-apple-macosx10.9.0", false}, 2878a829ebadSMartin Storsjö {"x86_64-apple-macosx10.9.0", "x86_64h-apple-macosx10.9.0", true}, 2879a829ebadSMartin Storsjö {"x86_64-unknown-linux-gnu", "x86_64-unknown-linux-gnu", true}, 2880a829ebadSMartin Storsjö {"x86_64-unknown-linux-gnu", "i386-unknown-linux-gnu", false}, 2881a829ebadSMartin Storsjö {"x86_64-unknown-linux-gnu", "x86_64h-unknown-linux-gnu", true}, 2882a829ebadSMartin Storsjö {"x86_64-pc-windows-gnu", "x86_64-pc-windows-msvc", false}, 2883a829ebadSMartin Storsjö {"x86_64-pc-windows-msvc", "x86_64-pc-windows-msvc-elf", false}, 2884a829ebadSMartin Storsjö {"i686-w64-windows-gnu", "i386-w64-windows-gnu", true}, 2885a829ebadSMartin Storsjö {"x86_64-w64-windows-gnu", "x86_64-pc-windows-gnu", true}, 2886a829ebadSMartin Storsjö {"armv7-w64-windows-gnu", "thumbv7-pc-windows-gnu", true}, 2887a829ebadSMartin Storsjö }; 2888a829ebadSMartin Storsjö 2889a829ebadSMartin Storsjö auto DoTest = [](const char *A, const char *B, 2890a829ebadSMartin Storsjö bool Result) -> testing::AssertionResult { 2891a829ebadSMartin Storsjö if (Triple(A).isCompatibleWith(Triple(B)) != Result) { 2892a829ebadSMartin Storsjö return testing::AssertionFailure() 2893a829ebadSMartin Storsjö << llvm::formatv("Triple {0} and {1} were expected to be {2}", A, 2894a829ebadSMartin Storsjö B, Result ? "compatible" : "incompatible"); 2895a829ebadSMartin Storsjö } 2896a829ebadSMartin Storsjö return testing::AssertionSuccess(); 2897a829ebadSMartin Storsjö }; 2898a829ebadSMartin Storsjö for (const auto &C : Cases) { 2899a829ebadSMartin Storsjö EXPECT_TRUE(DoTest(C.A, C.B, C.Result)); 2900a829ebadSMartin Storsjö // Test that the comparison is commutative. 2901a829ebadSMartin Storsjö EXPECT_TRUE(DoTest(C.B, C.A, C.Result)); 2902a829ebadSMartin Storsjö } 2903a829ebadSMartin Storsjö } 2904f09cf34dSArchibald Elliott } // end anonymous namespace 2905