diff options
| author | Richard-Qin-X <richard.qin.001@gmail.com> | 2026-08-19 03:43:19 +0800 |
|---|---|---|
| committer | Richard-Qin-X <richard.qin.001@gmail.com> | 2026-08-19 03:43:19 +0800 |
| commit | 6a91664223881226e2b6186561c05ff378a19355 (patch) | |
| tree | 4798334e0a34158368c7310dd2fde89462c83502 /backend/lib/Target/RISCV/RISCVGISelAddressing.rccdesc | |
| parent | 219b315373ef34ca20cc78b89bf3c3d19442ffbd (diff) | |
| download | rcc-project-6a91664223881226e2b6186561c05ff378a19355.tar.gz rcc-project-6a91664223881226e2b6186561c05ff378a19355.tar.xz | |
[RISCV][GlobalISel] Generate integer store selection
Diffstat (limited to 'backend/lib/Target/RISCV/RISCVGISelAddressing.rccdesc')
| -rw-r--r-- | backend/lib/Target/RISCV/RISCVGISelAddressing.rccdesc | 76 |
1 files changed, 76 insertions, 0 deletions
diff --git a/backend/lib/Target/RISCV/RISCVGISelAddressing.rccdesc b/backend/lib/Target/RISCV/RISCVGISelAddressing.rccdesc index 1ff9593..1a1dd4d 100644 --- a/backend/lib/Target/RISCV/RISCVGISelAddressing.rccdesc +++ b/backend/lib/Target/RISCV/RISCVGISelAddressing.rccdesc @@ -192,6 +192,82 @@ selection_rules: - { complex: addr_reg_imm_base, operand: 1 } - { complex: addr_reg_imm_offset, operand: 1 } - + id: select_g_store_m8 + priority: 300 + match: + opcode: G_STORE + memory: { index: 0, bytes: 1 } + operand_types: + - { index: 1, kind: pointer, bits: 64 } + operand_banks: + - { index: 0, bank: GPR } + - { index: 1, bank: GPR } + apply: + instructions: + - opcode: SB + root: true + operands: + - { operand: 0 } + - { complex: addr_reg_imm_base, operand: 1 } + - { complex: addr_reg_imm_offset, operand: 1 } + - + id: select_g_store_m16 + priority: 300 + match: + opcode: G_STORE + memory: { index: 0, bytes: 2 } + operand_types: + - { index: 1, kind: pointer, bits: 64 } + operand_banks: + - { index: 0, bank: GPR } + - { index: 1, bank: GPR } + apply: + instructions: + - opcode: SH + root: true + operands: + - { operand: 0 } + - { complex: addr_reg_imm_base, operand: 1 } + - { complex: addr_reg_imm_offset, operand: 1 } + - + id: select_g_store_m32 + priority: 300 + match: + opcode: G_STORE + memory: { index: 0, bytes: 4 } + operand_types: + - { index: 1, kind: pointer, bits: 64 } + operand_banks: + - { index: 0, bank: GPR } + - { index: 1, bank: GPR } + apply: + instructions: + - opcode: SW + root: true + operands: + - { operand: 0 } + - { complex: addr_reg_imm_base, operand: 1 } + - { complex: addr_reg_imm_offset, operand: 1 } + - + id: select_g_store_m64 + priority: 300 + match: + opcode: G_STORE + memory: { index: 0, bytes: 8 } + operand_types: + - { index: 1, kind: pointer, bits: 64 } + operand_banks: + - { index: 0, bank: GPR } + - { index: 1, bank: GPR } + apply: + instructions: + - opcode: SD + root: true + operands: + - { operand: 0 } + - { complex: addr_reg_imm_base, operand: 1 } + - { complex: addr_reg_imm_offset, operand: 1 } + - id: select_g_frame_index priority: 100 match: |
