Skip to content

Commit f802c39

Browse files
committed
[RISCV] Add more tests for RISCVISAInfo::checkDependency(). NFC
1 parent 7faf1a0 commit f802c39

File tree

1 file changed

+88
-0
lines changed

1 file changed

+88
-0
lines changed

llvm/unittests/TargetParser/RISCVISAInfoTest.cpp

Lines changed: 88 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -620,6 +620,94 @@ TEST(ParseArchString, RejectsConflictingExtensions) {
620620
EXPECT_EQ(toString(RISCVISAInfo::parseArchString(Input, true).takeError()),
621621
"'zcf' is only supported for 'rv32'");
622622
}
623+
624+
for (StringRef Input : {"rv64i_xwchc"}) {
625+
EXPECT_EQ(toString(RISCVISAInfo::parseArchString(Input, true).takeError()),
626+
"'Xwchc' is only supported for 'rv32'");
627+
}
628+
629+
for (StringRef Input : {"rv32id_xwchc"}) {
630+
EXPECT_EQ(toString(RISCVISAInfo::parseArchString(Input, true).takeError()),
631+
"'D' and 'Xwchc' extensions are incompatible");
632+
}
633+
634+
for (StringRef Input : {"rv32i_zcb_xwchc"}) {
635+
EXPECT_EQ(toString(RISCVISAInfo::parseArchString(Input, true).takeError()),
636+
"'Xwchc' and 'Zcb' extensions are incompatible");
637+
}
638+
}
639+
640+
TEST(ParseArchString, MissingDepency) {
641+
for (StringRef Input : {"rv32i_zvl32b", "rv64i_zvl128b"}) {
642+
EXPECT_EQ(toString(RISCVISAInfo::parseArchString(Input, true).takeError()),
643+
"'zvl*b' requires 'v' or 'zve*' extension to also be specified");
644+
}
645+
646+
for (StringRef Input : {"rv32i_zvbb"}) {
647+
EXPECT_EQ(toString(RISCVISAInfo::parseArchString(Input, true).takeError()),
648+
"'zvbb' requires 'v' or 'zve*' extension to also be specified");
649+
}
650+
651+
for (StringRef Input : {"rv32i_zvbc32e0p7"}) {
652+
EXPECT_EQ(toString(RISCVISAInfo::parseArchString(Input, true).takeError()),
653+
"'zvbc32e' requires 'v' or 'zve*' extension to also be specified");
654+
}
655+
656+
for (StringRef Input : {"rv32i_zvbc"}) {
657+
EXPECT_EQ(toString(RISCVISAInfo::parseArchString(Input, true).takeError()),
658+
"'zvbc' requires 'v' or 'zve64*' extension to also be specified");
659+
}
660+
661+
for (StringRef Input : {"rv32i_zvkb"}) {
662+
EXPECT_EQ(toString(RISCVISAInfo::parseArchString(Input, true).takeError()),
663+
"'zvk*' requires 'v' or 'zve*' extension to also be specified");
664+
}
665+
666+
for (StringRef Input : {"rv32i_zvkg"}) {
667+
EXPECT_EQ(toString(RISCVISAInfo::parseArchString(Input, true).takeError()),
668+
"'zvk*' requires 'v' or 'zve*' extension to also be specified");
669+
}
670+
671+
for (StringRef Input : {"rv32i_zvkgs0p7"}) {
672+
EXPECT_EQ(toString(RISCVISAInfo::parseArchString(Input, true).takeError()),
673+
"'zvk*' requires 'v' or 'zve*' extension to also be specified");
674+
}
675+
676+
for (StringRef Input : {"rv32i_zvkned"}) {
677+
EXPECT_EQ(toString(RISCVISAInfo::parseArchString(Input, true).takeError()),
678+
"'zvk*' requires 'v' or 'zve*' extension to also be specified");
679+
}
680+
681+
for (StringRef Input : {"rv32i_zvknha"}) {
682+
EXPECT_EQ(toString(RISCVISAInfo::parseArchString(Input, true).takeError()),
683+
"'zvk*' requires 'v' or 'zve*' extension to also be specified");
684+
}
685+
686+
for (StringRef Input : {"rv32i_zvksed"}) {
687+
EXPECT_EQ(toString(RISCVISAInfo::parseArchString(Input, true).takeError()),
688+
"'zvk*' requires 'v' or 'zve*' extension to also be specified");
689+
}
690+
691+
for (StringRef Input : {"rv32i_zvksh"}) {
692+
EXPECT_EQ(toString(RISCVISAInfo::parseArchString(Input, true).takeError()),
693+
"'zvk*' requires 'v' or 'zve*' extension to also be specified");
694+
}
695+
696+
for (StringRef Input : {"rv32i_zvknhb"}) {
697+
EXPECT_EQ(
698+
toString(RISCVISAInfo::parseArchString(Input, true).takeError()),
699+
"'zvknhb' requires 'v' or 'zve64*' extension to also be specified");
700+
}
701+
702+
for (StringRef Input : {"rv32i_zacas1p0"}) {
703+
EXPECT_EQ(toString(RISCVISAInfo::parseArchString(Input, true).takeError()),
704+
"'zacas' requires 'a' or 'zaamo' extension to also be specified");
705+
}
706+
707+
for (StringRef Input : {"rv32i_zabha"}) {
708+
EXPECT_EQ(toString(RISCVISAInfo::parseArchString(Input, true).takeError()),
709+
"'zabha' requires 'a' or 'zaamo' extension to also be specified");
710+
}
623711
}
624712

625713
TEST(ParseArchString, RejectsUnrecognizedProfileNames) {

0 commit comments

Comments
 (0)