bool operator==(const llvm::RISCVExtensionInfo &A,
const llvm::RISCVExtensionInfo &B) {
- return A.ExtName == B.ExtName && A.MajorVersion == B.MajorVersion &&
- A.MinorVersion == B.MinorVersion;
+ return A.MajorVersion == B.MajorVersion && A.MinorVersion == B.MinorVersion;
}
TEST(ParseNormalizedArchString, RejectsUpperCase) {
ASSERT_THAT_EXPECTED(MaybeRV32I, Succeeded());
RISCVISAInfo &InfoRV32I = **MaybeRV32I;
EXPECT_EQ(InfoRV32I.getExtensions().size(), 1UL);
- EXPECT_TRUE(InfoRV32I.getExtensions().at("i") ==
- (RISCVExtensionInfo{"i", 2, 0}));
+ EXPECT_TRUE(InfoRV32I.getExtensions().at("i") == (RISCVExtensionInfo{2, 0}));
EXPECT_EQ(InfoRV32I.getXLen(), 32U);
auto MaybeRV32E = RISCVISAInfo::parseNormalizedArchString("rv32e2p0");
ASSERT_THAT_EXPECTED(MaybeRV32E, Succeeded());
RISCVISAInfo &InfoRV32E = **MaybeRV32E;
EXPECT_EQ(InfoRV32E.getExtensions().size(), 1UL);
- EXPECT_TRUE(InfoRV32E.getExtensions().at("e") ==
- (RISCVExtensionInfo{"e", 2, 0}));
+ EXPECT_TRUE(InfoRV32E.getExtensions().at("e") == (RISCVExtensionInfo{2, 0}));
EXPECT_EQ(InfoRV32E.getXLen(), 32U);
auto MaybeRV64I = RISCVISAInfo::parseNormalizedArchString("rv64i2p0");
ASSERT_THAT_EXPECTED(MaybeRV64I, Succeeded());
RISCVISAInfo &InfoRV64I = **MaybeRV64I;
EXPECT_EQ(InfoRV64I.getExtensions().size(), 1UL);
- EXPECT_TRUE(InfoRV64I.getExtensions().at("i") ==
- (RISCVExtensionInfo{"i", 2, 0}));
+ EXPECT_TRUE(InfoRV64I.getExtensions().at("i") == (RISCVExtensionInfo{2, 0}));
EXPECT_EQ(InfoRV64I.getXLen(), 64U);
auto MaybeRV64E = RISCVISAInfo::parseNormalizedArchString("rv64e2p0");
ASSERT_THAT_EXPECTED(MaybeRV64E, Succeeded());
RISCVISAInfo &InfoRV64E = **MaybeRV64E;
EXPECT_EQ(InfoRV64E.getExtensions().size(), 1UL);
- EXPECT_TRUE(InfoRV64E.getExtensions().at("e") ==
- (RISCVExtensionInfo{"e", 2, 0}));
+ EXPECT_TRUE(InfoRV64E.getExtensions().at("e") == (RISCVExtensionInfo{2, 0}));
EXPECT_EQ(InfoRV64E.getXLen(), 64U);
}
ASSERT_THAT_EXPECTED(MaybeISAInfo, Succeeded());
RISCVISAInfo &Info = **MaybeISAInfo;
EXPECT_EQ(Info.getExtensions().size(), 5UL);
- EXPECT_TRUE(Info.getExtensions().at("i") == (RISCVExtensionInfo{"i", 5, 1}));
- EXPECT_TRUE(Info.getExtensions().at("m") == (RISCVExtensionInfo{"m", 3, 2}));
+ EXPECT_TRUE(Info.getExtensions().at("i") == (RISCVExtensionInfo{5, 1}));
+ EXPECT_TRUE(Info.getExtensions().at("m") == (RISCVExtensionInfo{3, 2}));
EXPECT_TRUE(Info.getExtensions().at("zmadeup") ==
- (RISCVExtensionInfo{"zmadeup", 11, 12}));
- EXPECT_TRUE(Info.getExtensions().at("sfoo") ==
- (RISCVExtensionInfo{"sfoo", 2, 0}));
- EXPECT_TRUE(Info.getExtensions().at("xbar") ==
- (RISCVExtensionInfo{"xbar", 3, 0}));
+ (RISCVExtensionInfo{11, 12}));
+ EXPECT_TRUE(Info.getExtensions().at("sfoo") == (RISCVExtensionInfo{2, 0}));
+ EXPECT_TRUE(Info.getExtensions().at("xbar") == (RISCVExtensionInfo{3, 0}));
}
TEST(ParseNormalizedArchString, UpdatesFLenMinVLenMaxELen) {
RISCVISAInfo &InfoRV32I = **MaybeRV32I;
RISCVISAInfo::OrderedExtensionMap ExtsRV32I = InfoRV32I.getExtensions();
EXPECT_EQ(ExtsRV32I.size(), 1UL);
- EXPECT_TRUE(ExtsRV32I.at("i") == (RISCVExtensionInfo{"i", 2, 0}));
+ EXPECT_TRUE(ExtsRV32I.at("i") == (RISCVExtensionInfo{2, 0}));
EXPECT_EQ(InfoRV32I.getXLen(), 32U);
EXPECT_EQ(InfoRV32I.getFLen(), 0U);
RISCVISAInfo &InfoRV32E = **MaybeRV32E;
RISCVISAInfo::OrderedExtensionMap ExtsRV32E = InfoRV32E.getExtensions();
EXPECT_EQ(ExtsRV32E.size(), 1UL);
- EXPECT_TRUE(ExtsRV32E.at("e") == (RISCVExtensionInfo{"e", 1, 9}));
+ EXPECT_TRUE(ExtsRV32E.at("e") == (RISCVExtensionInfo{1, 9}));
EXPECT_EQ(InfoRV32E.getXLen(), 32U);
EXPECT_EQ(InfoRV32E.getFLen(), 0U);
RISCVISAInfo &InfoRV32G = **MaybeRV32G;
RISCVISAInfo::OrderedExtensionMap ExtsRV32G = InfoRV32G.getExtensions();
EXPECT_EQ(ExtsRV32G.size(), 5UL);
- EXPECT_TRUE(ExtsRV32G.at("i") == (RISCVExtensionInfo{"i", 2, 0}));
- EXPECT_TRUE(ExtsRV32G.at("m") == (RISCVExtensionInfo{"m", 2, 0}));
- EXPECT_TRUE(ExtsRV32G.at("a") == (RISCVExtensionInfo{"a", 2, 0}));
- EXPECT_TRUE(ExtsRV32G.at("f") == (RISCVExtensionInfo{"f", 2, 0}));
- EXPECT_TRUE(ExtsRV32G.at("d") == (RISCVExtensionInfo{"d", 2, 0}));
+ EXPECT_TRUE(ExtsRV32G.at("i") == (RISCVExtensionInfo{2, 0}));
+ EXPECT_TRUE(ExtsRV32G.at("m") == (RISCVExtensionInfo{2, 0}));
+ EXPECT_TRUE(ExtsRV32G.at("a") == (RISCVExtensionInfo{2, 0}));
+ EXPECT_TRUE(ExtsRV32G.at("f") == (RISCVExtensionInfo{2, 0}));
+ EXPECT_TRUE(ExtsRV32G.at("d") == (RISCVExtensionInfo{2, 0}));
EXPECT_EQ(InfoRV32G.getXLen(), 32U);
EXPECT_EQ(InfoRV32G.getFLen(), 64U);
RISCVISAInfo &InfoRV64I = **MaybeRV64I;
RISCVISAInfo::OrderedExtensionMap ExtsRV64I = InfoRV64I.getExtensions();
EXPECT_EQ(ExtsRV64I.size(), 1UL);
- EXPECT_TRUE(ExtsRV64I.at("i") == (RISCVExtensionInfo{"i", 2, 0}));
+ EXPECT_TRUE(ExtsRV64I.at("i") == (RISCVExtensionInfo{2, 0}));
EXPECT_EQ(InfoRV64I.getXLen(), 64U);
EXPECT_EQ(InfoRV64I.getFLen(), 0U);
RISCVISAInfo &InfoRV64G = **MaybeRV64G;
RISCVISAInfo::OrderedExtensionMap ExtsRV64G = InfoRV64G.getExtensions();
EXPECT_EQ(ExtsRV64G.size(), 5UL);
- EXPECT_TRUE(ExtsRV64G.at("i") == (RISCVExtensionInfo{"i", 2, 0}));
- EXPECT_TRUE(ExtsRV64G.at("m") == (RISCVExtensionInfo{"m", 2, 0}));
- EXPECT_TRUE(ExtsRV64G.at("a") == (RISCVExtensionInfo{"a", 2, 0}));
- EXPECT_TRUE(ExtsRV64G.at("f") == (RISCVExtensionInfo{"f", 2, 0}));
- EXPECT_TRUE(ExtsRV64G.at("d") == (RISCVExtensionInfo{"d", 2, 0}));
+ EXPECT_TRUE(ExtsRV64G.at("i") == (RISCVExtensionInfo{2, 0}));
+ EXPECT_TRUE(ExtsRV64G.at("m") == (RISCVExtensionInfo{2, 0}));
+ EXPECT_TRUE(ExtsRV64G.at("a") == (RISCVExtensionInfo{2, 0}));
+ EXPECT_TRUE(ExtsRV64G.at("f") == (RISCVExtensionInfo{2, 0}));
+ EXPECT_TRUE(ExtsRV64G.at("d") == (RISCVExtensionInfo{2, 0}));
EXPECT_EQ(InfoRV64G.getXLen(), 64U);
EXPECT_EQ(InfoRV64G.getFLen(), 64U);
}
RISCVISAInfo &Info = **MaybeISAInfo;
RISCVISAInfo::OrderedExtensionMap Exts = Info.getExtensions();
EXPECT_EQ(Exts.size(), 1UL);
- EXPECT_TRUE(Exts.at("i") == (RISCVExtensionInfo{"i", 2, 0}));
+ EXPECT_TRUE(Exts.at("i") == (RISCVExtensionInfo{2, 0}));
}
// Checks that supported extensions aren't incorrectly ignored when a
RISCVISAInfo::parseArchString("rv32i_zbc1p0_xmadeup", true, false, true);
ASSERT_THAT_EXPECTED(MaybeISAInfo, Succeeded());
RISCVISAInfo::OrderedExtensionMap Exts = (*MaybeISAInfo)->getExtensions();
- EXPECT_TRUE(Exts.at("zbc") == (RISCVExtensionInfo{"zbc", 1, 0}));
+ EXPECT_TRUE(Exts.at("zbc") == (RISCVExtensionInfo{1, 0}));
}
TEST(ParseArchString, AcceptsVersionInLongOrShortForm) {
auto MaybeISAInfo = RISCVISAInfo::parseArchString(Input, true);
ASSERT_THAT_EXPECTED(MaybeISAInfo, Succeeded());
RISCVISAInfo::OrderedExtensionMap Exts = (*MaybeISAInfo)->getExtensions();
- EXPECT_TRUE(Exts.at("i") == (RISCVExtensionInfo{"i", 2, 0}));
+ EXPECT_TRUE(Exts.at("i") == (RISCVExtensionInfo{2, 0}));
}
for (StringRef Input : {"rv32i_zfinx1", "rv32i_zfinx1p0"}) {
auto MaybeISAInfo = RISCVISAInfo::parseArchString(Input, true);
ASSERT_THAT_EXPECTED(MaybeISAInfo, Succeeded());
RISCVISAInfo::OrderedExtensionMap Exts = (*MaybeISAInfo)->getExtensions();
- EXPECT_TRUE(Exts.at("zfinx") == (RISCVExtensionInfo{"zfinx", 1, 0}));
+ EXPECT_TRUE(Exts.at("zfinx") == (RISCVExtensionInfo{1, 0}));
}
}
ASSERT_THAT_EXPECTED(MaybeISAInfo, Succeeded());
RISCVISAInfo::OrderedExtensionMap Exts = (*MaybeISAInfo)->getExtensions();
EXPECT_EQ(Exts.size(), 1UL);
- EXPECT_TRUE(Exts.at("i") == (RISCVExtensionInfo{"i", 2, 0}));
+ EXPECT_TRUE(Exts.at("i") == (RISCVExtensionInfo{2, 0}));
}
}
ASSERT_THAT_EXPECTED(MaybeISAInfo, Succeeded());
RISCVISAInfo::OrderedExtensionMap Exts = (*MaybeISAInfo)->getExtensions();
EXPECT_EQ(Exts.size(), 7UL);
- EXPECT_EQ(Exts.at("i").ExtName, "i");
- EXPECT_EQ(Exts.at("m").ExtName, "m");
- EXPECT_EQ(Exts.at("a").ExtName, "a");
- EXPECT_EQ(Exts.at("f").ExtName, "f");
- EXPECT_EQ(Exts.at("d").ExtName, "d");
- EXPECT_EQ(Exts.at("c").ExtName, "c");
- EXPECT_EQ(Exts.at("zifencei").ExtName, "zifencei");
+ 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("c"), 1U);
+ EXPECT_EQ(Exts.count("zifencei"), 1U);
}
}
ASSERT_THAT_EXPECTED(MaybeISAInfo, Succeeded());
RISCVISAInfo::OrderedExtensionMap Exts = (*MaybeISAInfo)->getExtensions();
EXPECT_EQ(Exts.size(), 2UL);
- EXPECT_EQ(Exts.at("zihintntl").ExtName, "zihintntl");
+ EXPECT_EQ(Exts.count("zihintntl"), 1U);
auto MaybeISAInfo2 = RISCVISAInfo::parseArchString("rv64izihintntl0p2", true);
ASSERT_THAT_EXPECTED(MaybeISAInfo2, Succeeded());
RISCVISAInfo::OrderedExtensionMap Exts2 = (*MaybeISAInfo2)->getExtensions();
EXPECT_EQ(Exts2.size(), 2UL);
- EXPECT_EQ(Exts2.at("zihintntl").ExtName, "zihintntl");
+ EXPECT_EQ(Exts2.count("zihintntl"), 1U);
}
TEST(ParseArchString,
ASSERT_THAT_EXPECTED(MaybeISAInfo, Succeeded());
RISCVISAInfo::OrderedExtensionMap Exts = (*MaybeISAInfo)->getExtensions();
EXPECT_EQ(Exts.size(), 2UL);
- EXPECT_TRUE(Exts.at("zihintntl") == (RISCVExtensionInfo{"zihintntl", 9, 9}));
+ EXPECT_TRUE(Exts.at("zihintntl") == (RISCVExtensionInfo{9, 9}));
}
TEST(ParseArchString, RejectsUnrecognizedVersionForExperimentalExtension) {
RISCVISAInfo::OrderedExtensionMap ExtsRV64ID =
(*MaybeRV64ID)->getExtensions();
EXPECT_EQ(ExtsRV64ID.size(), 3UL);
- EXPECT_EQ(ExtsRV64ID.at("i").ExtName, "i");
- EXPECT_EQ(ExtsRV64ID.at("f").ExtName, "f");
- EXPECT_EQ(ExtsRV64ID.at("d").ExtName, "d");
+ EXPECT_EQ(ExtsRV64ID.count("i"), 1U);
+ EXPECT_EQ(ExtsRV64ID.count("f"), 1U);
+ EXPECT_EQ(ExtsRV64ID.count("d"), 1U);
auto MaybeRV32IZKN = RISCVISAInfo::parseArchString("rv64izkn", true);
ASSERT_THAT_EXPECTED(MaybeRV32IZKN, Succeeded());
RISCVISAInfo::OrderedExtensionMap ExtsRV32IZKN =
(*MaybeRV32IZKN)->getExtensions();
EXPECT_EQ(ExtsRV32IZKN.size(), 8UL);
- EXPECT_EQ(ExtsRV32IZKN.at("i").ExtName, "i");
- EXPECT_EQ(ExtsRV32IZKN.at("zbkb").ExtName, "zbkb");
- EXPECT_EQ(ExtsRV32IZKN.at("zbkc").ExtName, "zbkc");
- EXPECT_EQ(ExtsRV32IZKN.at("zbkx").ExtName, "zbkx");
- EXPECT_EQ(ExtsRV32IZKN.at("zkne").ExtName, "zkne");
- EXPECT_EQ(ExtsRV32IZKN.at("zknd").ExtName, "zknd");
- EXPECT_EQ(ExtsRV32IZKN.at("zknh").ExtName, "zknh");
- EXPECT_EQ(ExtsRV32IZKN.at("zkn").ExtName, "zkn");
+ EXPECT_EQ(ExtsRV32IZKN.count("i"), 1U);
+ EXPECT_EQ(ExtsRV32IZKN.count("zbkb"), 1U);
+ EXPECT_EQ(ExtsRV32IZKN.count("zbkc"), 1U);
+ EXPECT_EQ(ExtsRV32IZKN.count("zbkx"), 1U);
+ EXPECT_EQ(ExtsRV32IZKN.count("zkne"), 1U);
+ EXPECT_EQ(ExtsRV32IZKN.count("zknd"), 1U);
+ EXPECT_EQ(ExtsRV32IZKN.count("zknh"), 1U);
+ EXPECT_EQ(ExtsRV32IZKN.count("zkn"), 1U);
}
TEST(ParseArchString, RejectsConflictingExtensions) {