Skip to content

Commit 5fba0bf

Browse files
committed
[CHERIoT] Create an XCheriot1 processor feature.
1 parent b6dc648 commit 5fba0bf

File tree

4 files changed

+15
-9
lines changed

4 files changed

+15
-9
lines changed

llvm/lib/Target/RISCV/MCTargetDesc/RISCVBaseInfo.cpp

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -145,6 +145,12 @@ void validate(const Triple &TT, const FeatureBitset &FeatureBits) {
145145
if (FeatureBits[RISCV::Feature32Bit] &&
146146
FeatureBits[RISCV::Feature64Bit])
147147
report_fatal_error("RV32 and RV64 can't be combined");
148+
if (FeatureBits[RISCV::FeatureVendorXCheriot1]) {
149+
if (!FeatureBits[RISCV::FeatureVendorXCheri])
150+
report_fatal_error("XCheriotV1 extension requires XCheri extension");
151+
if (!FeatureBits[RISCV::FeatureCapMode])
152+
report_fatal_error("XCheriotV1 extension requires CapMode");
153+
}
148154
}
149155

150156
llvm::Expected<std::unique_ptr<RISCVISAInfo>>

llvm/lib/Target/RISCV/RISCVFeatures.td

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1397,6 +1397,9 @@ def IsPureCapABI
13971397
def NotPureCapABI
13981398
: Predicate<"!RISCVABI::isCheriPureCapABI(Subtarget->getTargetABI())">;
13991399

1400+
def FeatureVendorXCheriot1
1401+
: RISCVExtension<1, 0, "Implements XCheriot1 extension">;
1402+
14001403
def FeatureRelax
14011404
: SubtargetFeature<"relax", "EnableLinkerRelax", "true",
14021405
"Enable Linker relaxation.">;

llvm/lib/Target/RISCV/RISCVProcessors.td

Lines changed: 5 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -597,12 +597,8 @@ def RP2350_HAZARD3 : RISCVProcessorModel<"rp2350-hazard3",
597597
FeatureStdExtZcmp]>;
598598

599599
// NB: FeatureCheri =>'s RVC (!FeatureCheriNoRVC)
600-
def CHERIOT : RISCVProcessorModel<"cheriot",
601-
NoSchedModel,
602-
[Feature32Bit,
603-
FeatureVendorXCheri,
604-
FeatureCapMode,
605-
FeatureStdExtC,
606-
FeatureStdExtE,
607-
FeatureStdExtM,
608-
FeatureUnalignedScalarMem]>;
600+
def CHERIOT : RISCVProcessorModel<"cheriot", NoSchedModel,
601+
[Feature32Bit, FeatureVendorXCheri,
602+
FeatureVendorXCheriot1, FeatureCapMode,
603+
FeatureStdExtC, FeatureStdExtE,
604+
FeatureStdExtM, FeatureUnalignedScalarMem]>;

llvm/unittests/TargetParser/RISCVISAInfoTest.cpp

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1077,6 +1077,7 @@ R"(All available -march extensions for RISC-V
10771077
svpbmt 1.0
10781078
svvptc 1.0
10791079
xcheri 0.0
1080+
xcheriot1 1.0
10801081
xcvalu 1.0
10811082
xcvbi 1.0
10821083
xcvbitmanip 1.0

0 commit comments

Comments
 (0)