@@ -868,109 +868,192 @@ TEST(TripleTest, ParsedIDs) {
868868
869869 T = Triple (" dxil-unknown-shadermodel-pixel" );
870870 EXPECT_EQ (Triple::dxil, T.getArch ());
871+ EXPECT_EQ (Triple::NoSubArch, T.getSubArch ());
871872 EXPECT_EQ (Triple::UnknownVendor, T.getVendor ());
872873 EXPECT_EQ (Triple::ShaderModel, T.getOS ());
873874 EXPECT_EQ (Triple::Pixel, T.getEnvironment ());
874875 EXPECT_FALSE (T.supportsCOMDAT ());
875876
876877 T = Triple (" dxil-unknown-shadermodel-vertex" );
877878 EXPECT_EQ (Triple::dxil, T.getArch ());
879+ EXPECT_EQ (Triple::NoSubArch, T.getSubArch ());
878880 EXPECT_EQ (Triple::UnknownVendor, T.getVendor ());
879881 EXPECT_EQ (Triple::ShaderModel, T.getOS ());
880882 EXPECT_EQ (Triple::Vertex, T.getEnvironment ());
881883 EXPECT_FALSE (T.supportsCOMDAT ());
882884
883885 T = Triple (" dxil-unknown-shadermodel-geometry" );
884886 EXPECT_EQ (Triple::dxil, T.getArch ());
887+ EXPECT_EQ (Triple::NoSubArch, T.getSubArch ());
885888 EXPECT_EQ (Triple::UnknownVendor, T.getVendor ());
886889 EXPECT_EQ (Triple::ShaderModel, T.getOS ());
887890 EXPECT_EQ (Triple::Geometry, T.getEnvironment ());
888891 EXPECT_FALSE (T.supportsCOMDAT ());
889892
890893 T = Triple (" dxil-unknown-shadermodel-hull" );
891894 EXPECT_EQ (Triple::dxil, T.getArch ());
895+ EXPECT_EQ (Triple::NoSubArch, T.getSubArch ());
892896 EXPECT_EQ (Triple::UnknownVendor, T.getVendor ());
893897 EXPECT_EQ (Triple::ShaderModel, T.getOS ());
894898 EXPECT_EQ (Triple::Hull, T.getEnvironment ());
895899 EXPECT_FALSE (T.supportsCOMDAT ());
896900
897901 T = Triple (" dxil-unknown-shadermodel-domain" );
898902 EXPECT_EQ (Triple::dxil, T.getArch ());
903+ EXPECT_EQ (Triple::NoSubArch, T.getSubArch ());
899904 EXPECT_EQ (Triple::UnknownVendor, T.getVendor ());
900905 EXPECT_EQ (Triple::ShaderModel, T.getOS ());
901906 EXPECT_EQ (Triple::Domain, T.getEnvironment ());
902907 EXPECT_FALSE (T.supportsCOMDAT ());
903908
904909 T = Triple (" dxil-unknown-shadermodel-compute" );
905910 EXPECT_EQ (Triple::dxil, T.getArch ());
911+ EXPECT_EQ (Triple::NoSubArch, T.getSubArch ());
906912 EXPECT_EQ (Triple::UnknownVendor, T.getVendor ());
907913 EXPECT_EQ (Triple::ShaderModel, T.getOS ());
908914 EXPECT_EQ (Triple::Compute, T.getEnvironment ());
909915 EXPECT_FALSE (T.supportsCOMDAT ());
910916
911917 T = Triple (" dxil-unknown-shadermodel-library" );
912918 EXPECT_EQ (Triple::dxil, T.getArch ());
919+ EXPECT_EQ (Triple::NoSubArch, T.getSubArch ());
913920 EXPECT_EQ (Triple::UnknownVendor, T.getVendor ());
914921 EXPECT_EQ (Triple::ShaderModel, T.getOS ());
915922 EXPECT_EQ (Triple::Library, T.getEnvironment ());
916923 EXPECT_FALSE (T.supportsCOMDAT ());
917924
918925 T = Triple (" dxil-unknown-shadermodel-raygeneration" );
919926 EXPECT_EQ (Triple::dxil, T.getArch ());
927+ EXPECT_EQ (Triple::NoSubArch, T.getSubArch ());
920928 EXPECT_EQ (Triple::UnknownVendor, T.getVendor ());
921929 EXPECT_EQ (Triple::ShaderModel, T.getOS ());
922930 EXPECT_EQ (Triple::RayGeneration, T.getEnvironment ());
923931 EXPECT_FALSE (T.supportsCOMDAT ());
924932
925933 T = Triple (" dxil-unknown-shadermodel-intersection" );
926934 EXPECT_EQ (Triple::dxil, T.getArch ());
935+ EXPECT_EQ (Triple::NoSubArch, T.getSubArch ());
927936 EXPECT_EQ (Triple::UnknownVendor, T.getVendor ());
928937 EXPECT_EQ (Triple::ShaderModel, T.getOS ());
929938 EXPECT_EQ (Triple::Intersection, T.getEnvironment ());
930939 EXPECT_FALSE (T.supportsCOMDAT ());
931940
932941 T = Triple (" dxil-unknown-shadermodel-anyhit" );
933942 EXPECT_EQ (Triple::dxil, T.getArch ());
943+ EXPECT_EQ (Triple::NoSubArch, T.getSubArch ());
934944 EXPECT_EQ (Triple::UnknownVendor, T.getVendor ());
935945 EXPECT_EQ (Triple::ShaderModel, T.getOS ());
936946 EXPECT_EQ (Triple::AnyHit, T.getEnvironment ());
937947 EXPECT_FALSE (T.supportsCOMDAT ());
938948
939949 T = Triple (" dxil-unknown-shadermodel-closesthit" );
940950 EXPECT_EQ (Triple::dxil, T.getArch ());
951+ EXPECT_EQ (Triple::NoSubArch, T.getSubArch ());
941952 EXPECT_EQ (Triple::UnknownVendor, T.getVendor ());
942953 EXPECT_EQ (Triple::ShaderModel, T.getOS ());
943954 EXPECT_EQ (Triple::ClosestHit, T.getEnvironment ());
944955 EXPECT_FALSE (T.supportsCOMDAT ());
945956
946957 T = Triple (" dxil-unknown-shadermodel-miss" );
947958 EXPECT_EQ (Triple::dxil, T.getArch ());
959+ EXPECT_EQ (Triple::NoSubArch, T.getSubArch ());
948960 EXPECT_EQ (Triple::UnknownVendor, T.getVendor ());
949961 EXPECT_EQ (Triple::ShaderModel, T.getOS ());
950962 EXPECT_EQ (Triple::Miss, T.getEnvironment ());
951963 EXPECT_FALSE (T.supportsCOMDAT ());
952964
953965 T = Triple (" dxil-unknown-shadermodel-callable" );
954966 EXPECT_EQ (Triple::dxil, T.getArch ());
967+ EXPECT_EQ (Triple::NoSubArch, T.getSubArch ());
955968 EXPECT_EQ (Triple::UnknownVendor, T.getVendor ());
956969 EXPECT_EQ (Triple::ShaderModel, T.getOS ());
957970 EXPECT_EQ (Triple::Callable, T.getEnvironment ());
958971 EXPECT_FALSE (T.supportsCOMDAT ());
959972
960973 T = Triple (" dxil-unknown-shadermodel-mesh" );
961974 EXPECT_EQ (Triple::dxil, T.getArch ());
975+ EXPECT_EQ (Triple::NoSubArch, T.getSubArch ());
962976 EXPECT_EQ (Triple::UnknownVendor, T.getVendor ());
963977 EXPECT_EQ (Triple::ShaderModel, T.getOS ());
964978 EXPECT_EQ (Triple::Mesh, T.getEnvironment ());
965979 EXPECT_FALSE (T.supportsCOMDAT ());
966980
967981 T = Triple (" dxil-unknown-shadermodel-amplification" );
968982 EXPECT_EQ (Triple::dxil, T.getArch ());
983+ EXPECT_EQ (Triple::NoSubArch, T.getSubArch ());
969984 EXPECT_EQ (Triple::UnknownVendor, T.getVendor ());
970985 EXPECT_EQ (Triple::ShaderModel, T.getOS ());
971986 EXPECT_EQ (Triple::Amplification, T.getEnvironment ());
972987 EXPECT_FALSE (T.supportsCOMDAT ());
973988
989+ T = Triple (" dxilv1.0-unknown-unknown" );
990+ EXPECT_EQ (Triple::dxil, T.getArch ());
991+ EXPECT_EQ (Triple::DXILSubArch_v1_0, T.getSubArch ());
992+ EXPECT_EQ (Triple::UnknownVendor, T.getVendor ());
993+ EXPECT_EQ (Triple::UnknownOS, T.getOS ());
994+
995+ T = Triple (" dxilv1.1-unknown-unknown" );
996+ EXPECT_EQ (Triple::dxil, T.getArch ());
997+ EXPECT_EQ (Triple::DXILSubArch_v1_1, T.getSubArch ());
998+ EXPECT_EQ (Triple::UnknownVendor, T.getVendor ());
999+ EXPECT_EQ (Triple::UnknownOS, T.getOS ());
1000+
1001+ T = Triple (" dxilv1.2-unknown-unknown" );
1002+ EXPECT_EQ (Triple::dxil, T.getArch ());
1003+ EXPECT_EQ (Triple::DXILSubArch_v1_2, T.getSubArch ());
1004+ EXPECT_EQ (Triple::UnknownVendor, T.getVendor ());
1005+ EXPECT_EQ (Triple::UnknownOS, T.getOS ());
1006+
1007+ T = Triple (" dxilv1.3-unknown-unknown" );
1008+ EXPECT_EQ (Triple::dxil, T.getArch ());
1009+ EXPECT_EQ (Triple::DXILSubArch_v1_3, T.getSubArch ());
1010+ EXPECT_EQ (Triple::UnknownVendor, T.getVendor ());
1011+ EXPECT_EQ (Triple::UnknownOS, T.getOS ());
1012+
1013+ T = Triple (" dxilv1.4-unknown-unknown" );
1014+ EXPECT_EQ (Triple::dxil, T.getArch ());
1015+ EXPECT_EQ (Triple::DXILSubArch_v1_4, T.getSubArch ());
1016+ EXPECT_EQ (Triple::UnknownVendor, T.getVendor ());
1017+ EXPECT_EQ (Triple::UnknownOS, T.getOS ());
1018+
1019+ T = Triple (" dxilv1.5-unknown-unknown" );
1020+ EXPECT_EQ (Triple::dxil, T.getArch ());
1021+ EXPECT_EQ (Triple::DXILSubArch_v1_5, T.getSubArch ());
1022+ EXPECT_EQ (Triple::UnknownVendor, T.getVendor ());
1023+ EXPECT_EQ (Triple::UnknownOS, T.getOS ());
1024+
1025+ T = Triple (" dxilv1.6-unknown-unknown" );
1026+ EXPECT_EQ (Triple::dxil, T.getArch ());
1027+ EXPECT_EQ (Triple::DXILSubArch_v1_6, T.getSubArch ());
1028+ EXPECT_EQ (Triple::UnknownVendor, T.getVendor ());
1029+ EXPECT_EQ (Triple::UnknownOS, T.getOS ());
1030+
1031+ T = Triple (" dxilv1.7-unknown-unknown" );
1032+ EXPECT_EQ (Triple::dxil, T.getArch ());
1033+ EXPECT_EQ (Triple::DXILSubArch_v1_7, T.getSubArch ());
1034+ EXPECT_EQ (Triple::UnknownVendor, T.getVendor ());
1035+ EXPECT_EQ (Triple::UnknownOS, T.getOS ());
1036+
1037+ T = Triple (" dxilv1.8-unknown-unknown" );
1038+ EXPECT_EQ (Triple::dxil, T.getArch ());
1039+ EXPECT_EQ (Triple::DXILSubArch_v1_8, T.getSubArch ());
1040+ EXPECT_EQ (Triple::UnknownVendor, T.getVendor ());
1041+ EXPECT_EQ (Triple::UnknownOS, T.getOS ());
1042+
1043+ // Check specification of unknown SubArch results in
1044+ // unknown architecture.
1045+ T = Triple (" dxilv1.999-unknown-unknown" );
1046+ EXPECT_EQ (Triple::UnknownArch, T.getArch ());
1047+ EXPECT_EQ (Triple::NoSubArch, T.getSubArch ());
1048+ EXPECT_EQ (Triple::UnknownVendor, T.getVendor ());
1049+ EXPECT_EQ (Triple::UnknownOS, T.getOS ());
1050+
1051+ T = Triple (" dxil-unknown-unknown" );
1052+ EXPECT_EQ (Triple::dxil, T.getArch ());
1053+ EXPECT_EQ (Triple::NoSubArch, T.getSubArch ());
1054+ EXPECT_EQ (Triple::UnknownVendor, T.getVendor ());
1055+ EXPECT_EQ (Triple::UnknownOS, T.getOS ());
1056+
9741057 T = Triple (" xtensa" );
9751058 EXPECT_EQ (Triple::xtensa, T.getArch ());
9761059 EXPECT_EQ (Triple::UnknownVendor, T.getVendor ());
0 commit comments