aboutsummaryrefslogtreecommitdiff
path: root/backend/include/rcc/CodeGen/TargetCallLowering.h
diff options
context:
space:
mode:
authorRichard-Qin-X <richard.qin.001@gmail.com>2026-08-13 23:55:38 +0800
committerRichard-Qin-X <richard.qin.001@gmail.com>2026-08-13 23:55:38 +0800
commitaa69e15c6909c3b162b15f5326f0a72ba9bb7163 (patch)
tree6428eb20e41bad1fc8ad2f5c259bc5537f54554d /backend/include/rcc/CodeGen/TargetCallLowering.h
parentcd30fb546e389d1fb78ce8e579b3dba3a8fdb52a (diff)
downloadrcc-project-aa69e15c6909c3b162b15f5326f0a72ba9bb7163.tar.gz
rcc-project-aa69e15c6909c3b162b15f5326f0a72ba9bb7163.tar.xz
[CodeGen] Unify scalar low-level types
Diffstat (limited to 'backend/include/rcc/CodeGen/TargetCallLowering.h')
-rw-r--r--backend/include/rcc/CodeGen/TargetCallLowering.h17
1 files changed, 13 insertions, 4 deletions
diff --git a/backend/include/rcc/CodeGen/TargetCallLowering.h b/backend/include/rcc/CodeGen/TargetCallLowering.h
index 9d9b98b..21b5407 100644
--- a/backend/include/rcc/CodeGen/TargetCallLowering.h
+++ b/backend/include/rcc/CodeGen/TargetCallLowering.h
@@ -33,6 +33,14 @@ enum class ABIExtensionKind : std::uint8_t {
Count,
};
+enum class ABIValueCategory : std::uint8_t {
+ Invalid,
+ Integer,
+ FloatingPoint,
+ Pointer,
+ Count,
+};
+
enum class ABIValueFlag : std::uint8_t {
ByVal,
StructReturn,
@@ -71,7 +79,8 @@ private:
struct ABIValue final {
Register Value;
- LLT Type;
+ LowLevelType Type;
+ ABIValueCategory Category = ABIValueCategory::Invalid;
std::uint32_t OriginalValue = 0;
std::uint16_t FragmentIndex = 0;
std::uint16_t FragmentCount = 1;
@@ -222,8 +231,8 @@ struct CCAssignment final {
std::uint32_t OriginalValueIndex = 0;
std::uint16_t FragmentIndex = 0;
std::uint16_t FragmentCount = 1;
- LLT ValueType;
- LLT LocationType;
+ LowLevelType ValueType;
+ LowLevelType LocationType;
CCLocationKind LocationKind = CCLocationKind::Register;
std::optional<PhysicalRegister> LocationRegister;
std::optional<std::uint64_t> StackOffsetBytes;
@@ -279,7 +288,7 @@ struct VarArgLoweringState final {
struct ByValCopyAssignment final {
std::size_t ArgumentAssignmentIndex = 0;
Register Source;
- LLT PointerType;
+ LowLevelType PointerType;
std::uint64_t StackOffsetBytes = 0;
std::uint64_t SizeBytes = 0;
Alignment Align;