aboutsummaryrefslogtreecommitdiff
path: root/backend/lib
diff options
context:
space:
mode:
authorRichard-Qin-X <richard.qin.001@gmail.com>2026-08-19 03:23:40 +0800
committerRichard-Qin-X <richard.qin.001@gmail.com>2026-08-19 03:23:40 +0800
commit3cc064e41f6913b176fbfb2d6e65d049f611b1d4 (patch)
tree6fbbc1cffe53c3bae079ea7c5dc277dd1b03719a /backend/lib
parent0e514100a702c8c7dbbfc5bbdc789fea3189f915 (diff)
downloadrcc-project-3cc064e41f6913b176fbfb2d6e65d049f611b1d4.tar.gz
rcc-project-3cc064e41f6913b176fbfb2d6e65d049f611b1d4.tar.xz
[RISCV][GlobalISel] Generate frame index selection
Diffstat (limited to 'backend/lib')
-rw-r--r--backend/lib/Target/RISCV/CMakeLists.txt1
-rw-r--r--backend/lib/Target/RISCV/RISCVGISelAddressing.rccdesc16
2 files changed, 17 insertions, 0 deletions
diff --git a/backend/lib/Target/RISCV/CMakeLists.txt b/backend/lib/Target/RISCV/CMakeLists.txt
index 48f3263..3972a92 100644
--- a/backend/lib/Target/RISCV/CMakeLists.txt
+++ b/backend/lib/Target/RISCV/CMakeLists.txt
@@ -15,6 +15,7 @@ set(
"${CMAKE_CURRENT_SOURCE_DIR}/RISCVInstrInfoZb.rccdesc"
"${CMAKE_CURRENT_SOURCE_DIR}/RISCVInstrInfoPseudo.rccdesc"
"${CMAKE_CURRENT_SOURCE_DIR}/RISCVGISelInteger.rccdesc"
+ "${CMAKE_CURRENT_SOURCE_DIR}/RISCVGISelAddressing.rccdesc"
"${CMAKE_CURRENT_SOURCE_DIR}/RISCVGISelControlFlow.rccdesc"
"${CMAKE_CURRENT_SOURCE_DIR}/RISCVGISelShift.rccdesc"
"${CMAKE_CURRENT_SOURCE_DIR}/RISCVGISelFloating.rccdesc"
diff --git a/backend/lib/Target/RISCV/RISCVGISelAddressing.rccdesc b/backend/lib/Target/RISCV/RISCVGISelAddressing.rccdesc
new file mode 100644
index 0000000..f69ab81
--- /dev/null
+++ b/backend/lib/Target/RISCV/RISCVGISelAddressing.rccdesc
@@ -0,0 +1,16 @@
+# SPDX-License-Identifier: GPL-3.0-or-later
+
+selection_rules:
+ -
+ id: select_g_frame_index
+ priority: 100
+ match:
+ opcode: G_FRAME_INDEX
+ result_type: { kind: pointer, bits: 64 }
+ operand_banks:
+ - { index: 0, bank: GPR }
+ apply:
+ instructions:
+ - opcode: ADDI
+ root: true
+ operands: [{ operand: 0 }, { operand: 1 }, { immediate: 0 }]