================ @@ -337,10 +319,79 @@ TEST(ParseArchString, AcceptsUnderscoreSplittingExtensions) { } } +TEST(ParseArchString, AcceptsRelaxSingleLetterExtensions) { + for (StringRef Input : + {"rv32imfad", "rv32im_fa_d", "rv32im2p0fad", "rv32i2p1m2p0fad"}) { + auto MaybeISAInfo = RISCVISAInfo::parseArchString(Input, true); + ASSERT_THAT_EXPECTED(MaybeISAInfo, Succeeded()); + RISCVISAInfo::OrderedExtensionMap Exts = (*MaybeISAInfo)->getExtensions(); + EXPECT_EQ(Exts.size(), 6UL); + EXPECT_EQ(Exts.count("i"), 1U); + EXPECT_EQ(Exts.count("m"), 1U); + EXPECT_EQ(Exts.count("f"), 1U); + EXPECT_EQ(Exts.count("a"), 1U); + EXPECT_EQ(Exts.count("d"), 1U); + EXPECT_EQ(Exts.count("zicsr"), 1U); + } +} + +TEST(ParseArchString, AcceptsRelaxMixedLetterExtensions) { + for (StringRef Input : + {"rv32i_zihintntl_m_a_f_d_svinval", "rv32izihintntl_mafdsvinval", + "rv32i_zihintntl_mafd_svinval"}) { + auto MaybeISAInfo = RISCVISAInfo::parseArchString(Input, true); + ASSERT_THAT_EXPECTED(MaybeISAInfo, Succeeded()); + RISCVISAInfo::OrderedExtensionMap Exts = (*MaybeISAInfo)->getExtensions(); + EXPECT_EQ(Exts.size(), 8UL); + EXPECT_EQ(Exts.count("i"), 1U); + EXPECT_EQ(Exts.count("m"), 1U); + EXPECT_EQ(Exts.count("a"), 1U); + EXPECT_EQ(Exts.count("f"), 1U); + EXPECT_EQ(Exts.count("d"), 1U); + EXPECT_EQ(Exts.count("zihintntl"), 1U); + EXPECT_EQ(Exts.count("svinval"), 1U); + EXPECT_EQ(Exts.count("zicsr"), 1U); + } +} + +TEST(ParseArchString, AcceptsAmbiguousFromRelaxExtensions) { + for (StringRef Input : {"rv32i_zba_m", "rv32izba_m", "rv32izba1p0_m2p0"}) { ---------------- MaskRay wrote:
Consider another test where i is after zba https://github.com/llvm/llvm-project/pull/78120 _______________________________________________ cfe-commits mailing list cfe-commits@lists.llvm.org https://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-commits