aboutsummaryrefslogtreecommitdiff
path: root/backend/unittests/Target
diff options
context:
space:
mode:
authorRichard-Qin-X <richard.qin.001@gmail.com>2026-08-03 19:24:30 +0800
committerRichard-Qin-X <richard.qin.001@gmail.com>2026-08-03 19:24:30 +0800
commit432efe39315ed5ad0162f9c08dbf10941bc21dc1 (patch)
tree46622290cabfaeb8f4db1729aca6f0725739e08c /backend/unittests/Target
parent6580ac1c05bd1cbccd2dcd71fd9c2a384ae3db56 (diff)
downloadrcc-project-432efe39315ed5ad0162f9c08dbf10941bc21dc1.tar.gz
rcc-project-432efe39315ed5ad0162f9c08dbf10941bc21dc1.tar.xz
[CodeGen] Add target MIR text schema
Diffstat (limited to 'backend/unittests/Target')
-rw-r--r--backend/unittests/Target/TestTarget.cpp41
-rw-r--r--backend/unittests/Target/TestTarget.h2
2 files changed, 42 insertions, 1 deletions
diff --git a/backend/unittests/Target/TestTarget.cpp b/backend/unittests/Target/TestTarget.cpp
index 30fa22f..4d31fb9 100644
--- a/backend/unittests/Target/TestTarget.cpp
+++ b/backend/unittests/Target/TestTarget.cpp
@@ -156,11 +156,50 @@ Expected<TargetRegisterInfo> createTestTargetRegisterInfo() {
return TargetRegisterInfo::create(createTestTargetRegisterInfoDescription());
}
+TargetMIRTextInfoDesc createTestTargetMIRTextInfoDescription() {
+ TargetMIRTextInfoDesc Description;
+ Description.RegisterMasks = {
+ {"Test-Preserved", createTestCallPreservedMask()},
+ };
+ Description.TargetIndices = {
+ {"test-index", TargetIndex::fromValue(0)},
+ };
+ Description.DirectOperandFlagMask = 0x3;
+ Description.DirectOperandFlags = {
+ {"test-direct-one", 0x1},
+ {"test-direct-two", 0x2},
+ {"test-direct-three", 0x3},
+ };
+ Description.BitmaskOperandFlags = {
+ {"test-bit-four", 0x4},
+ {"test-bit-eight", 0x8},
+ };
+ Description.MachineMemOperandFlags = {
+ {"test-mmo-one", 0x1},
+ {"test-mmo-two", 0x2},
+ };
+ Description.VirtualRegisterFlags = {
+ {"test-vreg-one", 0x1},
+ {"test-vreg-two", 0x2},
+ };
+ Description.Intrinsics = {
+ {"llvm.test.seven", IntrinsicID::fromValue(7)},
+ {"llvm.test.seventeen", IntrinsicID::fromValue(17)},
+ };
+
+ for (const PhysicalRegisterDesc &Register :
+ createTestTargetRegisterInfoDescription().PhysicalRegisters) {
+ Description.CFIRegisters.push_back({Register.Reg, Register.Reg.number(), true});
+ }
+ return Description;
+}
+
Expected<TargetDescription> createTestTargetDescription(InstructionSet Instructions) {
auto Registers = createTestTargetRegisterInfo();
if (!Registers)
return std::unexpected(Registers.error());
- return TargetDescription::create(std::move(Instructions), std::move(*Registers));
+ return TargetDescription::create(std::move(Instructions), std::move(*Registers),
+ createTestTargetMIRTextInfoDescription());
}
std::shared_ptr<const RegisterMask> createTestCallPreservedMask() {
diff --git a/backend/unittests/Target/TestTarget.h b/backend/unittests/Target/TestTarget.h
index 3c2aa51..fe434a2 100644
--- a/backend/unittests/Target/TestTarget.h
+++ b/backend/unittests/Target/TestTarget.h
@@ -6,6 +6,7 @@
#include "rcc/CodeGen/InstructionDescriptor.h"
#include "rcc/CodeGen/RegisterMask.h"
#include "rcc/CodeGen/TargetDescription.h"
+#include "rcc/CodeGen/TargetMIRTextInfo.h"
#include "rcc/CodeGen/TargetRegisterInfo.h"
#include "rcc/Support/Error.h"
@@ -56,6 +57,7 @@ struct TestRegisterClass final {
[[nodiscard]] TargetRegisterInfoDesc createTestTargetRegisterInfoDescription();
[[nodiscard]] Expected<TargetRegisterInfo> createTestTargetRegisterInfo();
+[[nodiscard]] TargetMIRTextInfoDesc createTestTargetMIRTextInfoDescription();
[[nodiscard]] Expected<TargetDescription> createTestTargetDescription(InstructionSet Instructions);
[[nodiscard]] std::shared_ptr<const RegisterMask> createTestCallPreservedMask();