[clang] [llvm] [RISCV] Add Zilsd and Zclsd Extensions (PR #131094)
@@ -176,6 +176,13 @@ def HasStdExtZicfiss : Predicate<"Subtarget->hasStdExtZicfiss()">, "'Zicfiss' (Shadow stack)">; def NoHasStdExtZicfiss : Predicate<"!Subtarget->hasStdExtZicfiss()">; +def FeatureStdExtZilsd +: RISCVExtension<1, 0, + "Load/Store Pair Instructions">; dong-miao wrote: You mean what benefits does the zilsd extension bring to RV32? The relevant benefits are mentioned in Chapter 1. Introduction of the [specification document](https://drive.google.com/file/d/1oMMxKJSuNKNcjiZdJEPeUqOCxr8VcxCn/view). https://github.com/llvm/llvm-project/pull/131094 ___ cfe-commits mailing list cfe-commits@lists.llvm.org https://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-commits
[clang] [llvm] [RISCV] Add Zilsd and Zclsd Extensions (PR #131094)
@@ -176,6 +176,13 @@ def HasStdExtZicfiss : Predicate<"Subtarget->hasStdExtZicfiss()">, "'Zicfiss' (Shadow stack)">; def NoHasStdExtZicfiss : Predicate<"!Subtarget->hasStdExtZicfiss()">; +def FeatureStdExtZilsd +: RISCVExtension<1, 0, + "Load/Store Pair Instructions">; wangpc-pp wrote: Would making Zilsd imply RV32 help? https://github.com/llvm/llvm-project/pull/131094 ___ cfe-commits mailing list cfe-commits@lists.llvm.org https://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-commits
[clang] [llvm] [RISCV] Add Zilsd and Zclsd Extensions (PR #131094)
https://github.com/lenary closed https://github.com/llvm/llvm-project/pull/131094 ___ cfe-commits mailing list cfe-commits@lists.llvm.org https://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-commits
[clang] [llvm] [RISCV] Add Zilsd and Zclsd Extensions (PR #131094)
https://github.com/lenary approved this pull request. LGTM. Thanks! https://github.com/llvm/llvm-project/pull/131094 ___ cfe-commits mailing list cfe-commits@lists.llvm.org https://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-commits
[clang] [llvm] [RISCV] Add Zilsd and Zclsd Extensions (PR #131094)
dong-miao wrote: > do you need someone to merge this? Yes,Please help me merge. https://github.com/llvm/llvm-project/pull/131094 ___ cfe-commits mailing list cfe-commits@lists.llvm.org https://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-commits
[clang] [llvm] [RISCV] Add Zilsd and Zclsd Extensions (PR #131094)
https://github.com/dong-miao updated https://github.com/llvm/llvm-project/pull/131094 >From bcdf9641037507b855a20a8ba5d26b127dd248e8 Mon Sep 17 00:00:00 2001 From: dong-miao Date: Sat, 4 Jan 2025 17:53:58 +0800 Subject: [PATCH 01/36] Update RISCVSystemOperands.td --- llvm/lib/Target/RISCV/RISCVSystemOperands.td | 2 ++ 1 file changed, 2 insertions(+) diff --git a/llvm/lib/Target/RISCV/RISCVSystemOperands.td b/llvm/lib/Target/RISCV/RISCVSystemOperands.td index 39853cf13a920..41b96e1497e70 100644 --- a/llvm/lib/Target/RISCV/RISCVSystemOperands.td +++ b/llvm/lib/Target/RISCV/RISCVSystemOperands.td @@ -158,6 +158,7 @@ def : SysReg<"hip", 0x644>; def : SysReg<"hvip", 0x645>; def : SysReg<"htinst", 0x64A>; def : SysReg<"hgeip", 0xE12>; +def : SysReg<"hedelegh", 0x612>; //===--===// // Hypervisor Configuration @@ -239,6 +240,7 @@ def : SysReg<"mbadaddr", 0x343>; def : SysReg<"mip", 0x344>; def : SysReg<"mtinst", 0x34A>; def : SysReg<"mtval2", 0x34B>; +def : SysReg<"medelegh", 0x312>; //===--===// // Machine Configuration >From 30e3fbe156581efe49a3c6def9dd444dc546f134 Mon Sep 17 00:00:00 2001 From: dong-miao Date: Sat, 4 Jan 2025 18:02:40 +0800 Subject: [PATCH 02/36] Update rv32-hypervisor-csr-names.s --- llvm/test/MC/RISCV/rv32-hypervisor-csr-names.s | 18 ++ 1 file changed, 18 insertions(+) diff --git a/llvm/test/MC/RISCV/rv32-hypervisor-csr-names.s b/llvm/test/MC/RISCV/rv32-hypervisor-csr-names.s index aadee4fb4f3ad..79d87b3f2471c 100644 --- a/llvm/test/MC/RISCV/rv32-hypervisor-csr-names.s +++ b/llvm/test/MC/RISCV/rv32-hypervisor-csr-names.s @@ -219,3 +219,21 @@ csrrs t2, 0x214, zero csrrs t1, vsiph, zero # uimm12 csrrs t2, 0x254, zero + +## +# Hypervisor Trap Setup +## + +# hedelegh +# name +# CHECK-INST: csrrs t1, hedelegh, zero +# CHECK-ENC: encoding: [0x73,0x23,0x20,0x61] +# CHECK-INST-ALIAS: csrr t1, hedelegh +# uimm12 +# CHECK-INST: csrrs t2, hedelegh, zero +# CHECK-ENC: encoding: [0xf3,0x23,0x20,0x61] +# CHECK-INST-ALIAS: csrr t2, hedelegh +# name +csrrs t1, hedelegh, zero +# uimm12 +csrrs t2, 0x612, zero >From e41e745626caf701b2a21eb2577ead05b922f590 Mon Sep 17 00:00:00 2001 From: dong-miao Date: Sat, 4 Jan 2025 18:05:04 +0800 Subject: [PATCH 03/36] Update rv32-machine-csr-names.s --- llvm/test/MC/RISCV/rv32-machine-csr-names.s | 14 ++ 1 file changed, 14 insertions(+) diff --git a/llvm/test/MC/RISCV/rv32-machine-csr-names.s b/llvm/test/MC/RISCV/rv32-machine-csr-names.s index 3d527e382376e..9e929b7eddeed 100644 --- a/llvm/test/MC/RISCV/rv32-machine-csr-names.s +++ b/llvm/test/MC/RISCV/rv32-machine-csr-names.s @@ -22,6 +22,20 @@ csrrs t1, mstatush, zero # uimm12 csrrs t2, 0x310, zero +# medelegh +# name +# CHECK-INST: csrrs t1, medelegh, zero +# CHECK-ENC: encoding: [0x73,0x23,0x20,0x31] +# CHECK-INST-ALIAS: csrr t1, medelegh +# uimm12 +# CHECK-INST: csrrs t2, medelegh, zero +# CHECK-ENC: encoding: [0xf3,0x23,0x20,0x31] +# CHECK-INST-ALIAS: csrr t2, medelegh +# name +csrrs t1, medelegh, zero +# uimm12 +csrrs t2, 0x312, zero + # # Machine Configuration # >From ea2c1afaa0eede9cf9dfbf68d10fada108b0164b Mon Sep 17 00:00:00 2001 From: dong-miao Date: Sun, 5 Jan 2025 11:12:53 +0800 Subject: [PATCH 04/36] Update RISCVSystemOperands.td --- llvm/lib/Target/RISCV/RISCVSystemOperands.td | 2 ++ 1 file changed, 2 insertions(+) diff --git a/llvm/lib/Target/RISCV/RISCVSystemOperands.td b/llvm/lib/Target/RISCV/RISCVSystemOperands.td index 41b96e1497e70..21f912bbc84d1 100644 --- a/llvm/lib/Target/RISCV/RISCVSystemOperands.td +++ b/llvm/lib/Target/RISCV/RISCVSystemOperands.td @@ -158,6 +158,7 @@ def : SysReg<"hip", 0x644>; def : SysReg<"hvip", 0x645>; def : SysReg<"htinst", 0x64A>; def : SysReg<"hgeip", 0xE12>; +let isRV32Only = 1 in def : SysReg<"hedelegh", 0x612>; //===--===// @@ -240,6 +241,7 @@ def : SysReg<"mbadaddr", 0x343>; def : SysReg<"mip", 0x344>; def : SysReg<"mtinst", 0x34A>; def : SysReg<"mtval2", 0x34B>; +let isRV32Only = 1 in def : SysReg<"medelegh", 0x312>; //===--===// >From 6b074f3d744bdfaf2f4de9fa49484b25f76df3d4 Mon Sep 17 00:00:00 2001 From: dong-miao Date: Sun, 5 Jan 2025 11:30:33 +0800 Subject: [PATCH 05/36] Update rv32-only-csr-names.s --- llvm/test/MC/RISCV/rv32-only-csr-names.s | 4 1 file changed, 4 insertions(+) diff --git a/llvm/test/MC/RISCV/rv32-only-csr-names.s b/llvm/test/MC/RISCV/rv32-only-csr-names.s index db88eacf9396b..1604469210193 100644 --- a/llvm/test/MC/RISCV/rv32-only-csr-names.s +++ b/llvm/test/MC/RISCV/rv32-only-csr-names.s @@ -41,12 +41,16 @@ csrrs t1, henvcfgh, zero # CHECK-NEED-RV32: :[[@LIN
[clang] [llvm] [RISCV] Add Zilsd and Zclsd Extensions (PR #131094)
https://github.com/topperc approved this pull request. LGTM https://github.com/llvm/llvm-project/pull/131094 ___ cfe-commits mailing list cfe-commits@lists.llvm.org https://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-commits
[clang] [llvm] [RISCV] Add Zilsd and Zclsd Extensions (PR #131094)
@@ -0,0 +1,112 @@ +//===-- RISCVInstrInfoZclsd.td -*- tablegen -*-===// +// +// Part of the LLVM Project, under the Apache License v2.0 with LLVM Exceptions. +// See https://llvm.org/LICENSE.txt for license information. +// SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception +// +//===--===// +// +// This file describes the RISC-V instructions from the standard 'Zclsd', +// Compressed Load/Store pair instructions extension. +// +//===--===// + +//===--===// +// Instruction Class Templates +//===--===// + +def GPRPairNoX0RV32Operand : AsmOperandClass { + let Name = "GPRPairNoX0RV32"; + let ParserMethod = "parseGPRPair"; + let PredicateMethod = "isGPRPairNoX0"; + let RenderMethod = "addRegOperands"; +} + +def GPRPairNoX0RV32 : RegisterOperand { + let ParserMatchClass = GPRPairNoX0RV32Operand; +} + +def GPRPairCRV32Operand : AsmOperandClass { + let Name = "GPRPairCRV32"; + let ParserMethod = "parseGPRPair"; + let PredicateMethod = "isGPRPairC"; + let RenderMethod = "addRegOperands"; +} + +def GPRPairCRV32 : RegisterOperand { + let ParserMatchClass = GPRPairCRV32Operand; +} + +let hasSideEffects = 0, mayLoad = 1, mayStore = 0 in +class PairCStackLoad funct3, string OpcodeStr, + DAGOperand RC, DAGOperand opnd> +: RVInst16CI; + +let hasSideEffects = 0, mayLoad = 0, mayStore = 1 in +class PairCStackStore funct3, string OpcodeStr, + DAGOperand RC, DAGOperand opnd> +: RVInst16CSS; + +let hasSideEffects = 0, mayLoad = 1, mayStore = 0 in +class PairCLoad_ri funct3, string OpcodeStr, + DAGOperand RC, DAGOperand opnd> +: RVInst16CL; + +let hasSideEffects = 0, mayLoad = 0, mayStore = 1 in +class PairCStore_rri funct3, string OpcodeStr, + DAGOperand RC, DAGOperand opnd> +: RVInst16CS; + +//===--===// +// Instructions +//===--===// + +let Predicates = [HasStdExtZclsd, IsRV32], DecoderNamespace = "ZcOverlap" in +def C_LDSP_RV32 : PairCStackLoad<0b011, "c.ldsp", GPRPairNoX0RV32, uimm9_lsb000>, + Sched<[WriteLDD, ReadMemBase]> { + let Inst{4-2} = imm{8-6}; +} + +let Predicates = [HasStdExtZclsd, IsRV32], DecoderNamespace = "ZcOverlap" in +def C_SDSP_RV32 : PairCStackStore<0b111, "c.sdsp", GPRPairRV32, uimm9_lsb000>, + Sched<[WriteSTD, ReadStoreData, ReadMemBase]> { + let Inst{9-7} = imm{8-6}; +} + +let Predicates = [HasStdExtZclsd, IsRV32], DecoderNamespace = "ZcOverlap" in +def C_LD_RV32 : PairCLoad_ri<0b011, "c.ld", GPRPairCRV32, uimm8_lsb000>, +Sched<[WriteLDD, ReadMemBase]> { + bits<8> imm; + let Inst{12-10} = imm{5-3}; + let Inst{6-5} = imm{7-6}; +} + +let Predicates = [HasStdExtZclsd, IsRV32], DecoderNamespace = "ZcOverlap" in +def C_SD_RV32 : PairCStore_rri<0b111, "c.sd", GPRPairCRV32, uimm8_lsb000>, +Sched<[WriteSTD, ReadStoreData, ReadMemBase]> { + bits<8> imm; + let Inst{12-10} = imm{5-3}; + let Inst{6-5} = imm{7-6}; +}// Predicates = [HasStdExtZclsd, IsRV32] + +//===--===// +// Compress Instruction tablegen backend. +//===--===// + +let Predicates = [HasStdExtZclsd, HasStdExtZilsd, IsRV32] in { +def : CompressPat<(LD_RV32 GPRPairNoX0RV32:$rd, SPMem:$rs1, uimm9_lsb000:$imm), + (C_LDSP_RV32 GPRPairNoX0RV32:$rd, SPMem:$rs1, uimm9_lsb000:$imm)>; +def : CompressPat<(SD_RV32 GPRPairRV32:$rs2, SPMem:$rs1, uimm9_lsb000:$imm), + (C_SDSP_RV32 GPRPairRV32:$rs2, SPMem:$rs1, uimm9_lsb000:$imm)>; +} // Predicates = [HasStdExtZclsd, HasStdExtZilsd, IsRV32] + +let Predicates = [HasStdExtZclsd, HasStdExtZilsd, IsRV32] in { dong-miao wrote: Complete relevant modifications. https://github.com/llvm/llvm-project/pull/131094 ___ cfe-commits mailing list cfe-commits@lists.llvm.org https://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-commits
[clang] [llvm] [RISCV] Add Zilsd and Zclsd Extensions (PR #131094)
https://github.com/dong-miao updated https://github.com/llvm/llvm-project/pull/131094 >From bcdf9641037507b855a20a8ba5d26b127dd248e8 Mon Sep 17 00:00:00 2001 From: dong-miao Date: Sat, 4 Jan 2025 17:53:58 +0800 Subject: [PATCH 01/35] Update RISCVSystemOperands.td --- llvm/lib/Target/RISCV/RISCVSystemOperands.td | 2 ++ 1 file changed, 2 insertions(+) diff --git a/llvm/lib/Target/RISCV/RISCVSystemOperands.td b/llvm/lib/Target/RISCV/RISCVSystemOperands.td index 39853cf13a920..41b96e1497e70 100644 --- a/llvm/lib/Target/RISCV/RISCVSystemOperands.td +++ b/llvm/lib/Target/RISCV/RISCVSystemOperands.td @@ -158,6 +158,7 @@ def : SysReg<"hip", 0x644>; def : SysReg<"hvip", 0x645>; def : SysReg<"htinst", 0x64A>; def : SysReg<"hgeip", 0xE12>; +def : SysReg<"hedelegh", 0x612>; //===--===// // Hypervisor Configuration @@ -239,6 +240,7 @@ def : SysReg<"mbadaddr", 0x343>; def : SysReg<"mip", 0x344>; def : SysReg<"mtinst", 0x34A>; def : SysReg<"mtval2", 0x34B>; +def : SysReg<"medelegh", 0x312>; //===--===// // Machine Configuration >From 30e3fbe156581efe49a3c6def9dd444dc546f134 Mon Sep 17 00:00:00 2001 From: dong-miao Date: Sat, 4 Jan 2025 18:02:40 +0800 Subject: [PATCH 02/35] Update rv32-hypervisor-csr-names.s --- llvm/test/MC/RISCV/rv32-hypervisor-csr-names.s | 18 ++ 1 file changed, 18 insertions(+) diff --git a/llvm/test/MC/RISCV/rv32-hypervisor-csr-names.s b/llvm/test/MC/RISCV/rv32-hypervisor-csr-names.s index aadee4fb4f3ad..79d87b3f2471c 100644 --- a/llvm/test/MC/RISCV/rv32-hypervisor-csr-names.s +++ b/llvm/test/MC/RISCV/rv32-hypervisor-csr-names.s @@ -219,3 +219,21 @@ csrrs t2, 0x214, zero csrrs t1, vsiph, zero # uimm12 csrrs t2, 0x254, zero + +## +# Hypervisor Trap Setup +## + +# hedelegh +# name +# CHECK-INST: csrrs t1, hedelegh, zero +# CHECK-ENC: encoding: [0x73,0x23,0x20,0x61] +# CHECK-INST-ALIAS: csrr t1, hedelegh +# uimm12 +# CHECK-INST: csrrs t2, hedelegh, zero +# CHECK-ENC: encoding: [0xf3,0x23,0x20,0x61] +# CHECK-INST-ALIAS: csrr t2, hedelegh +# name +csrrs t1, hedelegh, zero +# uimm12 +csrrs t2, 0x612, zero >From e41e745626caf701b2a21eb2577ead05b922f590 Mon Sep 17 00:00:00 2001 From: dong-miao Date: Sat, 4 Jan 2025 18:05:04 +0800 Subject: [PATCH 03/35] Update rv32-machine-csr-names.s --- llvm/test/MC/RISCV/rv32-machine-csr-names.s | 14 ++ 1 file changed, 14 insertions(+) diff --git a/llvm/test/MC/RISCV/rv32-machine-csr-names.s b/llvm/test/MC/RISCV/rv32-machine-csr-names.s index 3d527e382376e..9e929b7eddeed 100644 --- a/llvm/test/MC/RISCV/rv32-machine-csr-names.s +++ b/llvm/test/MC/RISCV/rv32-machine-csr-names.s @@ -22,6 +22,20 @@ csrrs t1, mstatush, zero # uimm12 csrrs t2, 0x310, zero +# medelegh +# name +# CHECK-INST: csrrs t1, medelegh, zero +# CHECK-ENC: encoding: [0x73,0x23,0x20,0x31] +# CHECK-INST-ALIAS: csrr t1, medelegh +# uimm12 +# CHECK-INST: csrrs t2, medelegh, zero +# CHECK-ENC: encoding: [0xf3,0x23,0x20,0x31] +# CHECK-INST-ALIAS: csrr t2, medelegh +# name +csrrs t1, medelegh, zero +# uimm12 +csrrs t2, 0x312, zero + # # Machine Configuration # >From ea2c1afaa0eede9cf9dfbf68d10fada108b0164b Mon Sep 17 00:00:00 2001 From: dong-miao Date: Sun, 5 Jan 2025 11:12:53 +0800 Subject: [PATCH 04/35] Update RISCVSystemOperands.td --- llvm/lib/Target/RISCV/RISCVSystemOperands.td | 2 ++ 1 file changed, 2 insertions(+) diff --git a/llvm/lib/Target/RISCV/RISCVSystemOperands.td b/llvm/lib/Target/RISCV/RISCVSystemOperands.td index 41b96e1497e70..21f912bbc84d1 100644 --- a/llvm/lib/Target/RISCV/RISCVSystemOperands.td +++ b/llvm/lib/Target/RISCV/RISCVSystemOperands.td @@ -158,6 +158,7 @@ def : SysReg<"hip", 0x644>; def : SysReg<"hvip", 0x645>; def : SysReg<"htinst", 0x64A>; def : SysReg<"hgeip", 0xE12>; +let isRV32Only = 1 in def : SysReg<"hedelegh", 0x612>; //===--===// @@ -240,6 +241,7 @@ def : SysReg<"mbadaddr", 0x343>; def : SysReg<"mip", 0x344>; def : SysReg<"mtinst", 0x34A>; def : SysReg<"mtval2", 0x34B>; +let isRV32Only = 1 in def : SysReg<"medelegh", 0x312>; //===--===// >From 6b074f3d744bdfaf2f4de9fa49484b25f76df3d4 Mon Sep 17 00:00:00 2001 From: dong-miao Date: Sun, 5 Jan 2025 11:30:33 +0800 Subject: [PATCH 05/35] Update rv32-only-csr-names.s --- llvm/test/MC/RISCV/rv32-only-csr-names.s | 4 1 file changed, 4 insertions(+) diff --git a/llvm/test/MC/RISCV/rv32-only-csr-names.s b/llvm/test/MC/RISCV/rv32-only-csr-names.s index db88eacf9396b..1604469210193 100644 --- a/llvm/test/MC/RISCV/rv32-only-csr-names.s +++ b/llvm/test/MC/RISCV/rv32-only-csr-names.s @@ -41,12 +41,16 @@ csrrs t1, henvcfgh, zero # CHECK-NEED-RV32: :[[@LIN
[clang] [llvm] [RISCV] Add Zilsd and Zclsd Extensions (PR #131094)
@@ -176,6 +176,13 @@ def HasStdExtZicfiss : Predicate<"Subtarget->hasStdExtZicfiss()">, "'Zicfiss' (Shadow stack)">; def NoHasStdExtZicfiss : Predicate<"!Subtarget->hasStdExtZicfiss()">; +def FeatureStdExtZilsd +: RISCVExtension<1, 0, + "Load/Store Pair Instructions">; dong-miao wrote: Many instruction sets that are only 32-bit or 64 bit have already been declared and defined in this format. To reduce some code and disrupt the overall definition format, it may not be a good choice. https://github.com/llvm/llvm-project/pull/131094 ___ cfe-commits mailing list cfe-commits@lists.llvm.org https://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-commits
[clang] [llvm] [RISCV] Add Zilsd and Zclsd Extensions (PR #131094)
https://github.com/topperc edited https://github.com/llvm/llvm-project/pull/131094 ___ cfe-commits mailing list cfe-commits@lists.llvm.org https://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-commits
[clang] [llvm] [RISCV] Add Zilsd and Zclsd Extensions (PR #131094)
https://github.com/topperc edited https://github.com/llvm/llvm-project/pull/131094 ___ cfe-commits mailing list cfe-commits@lists.llvm.org https://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-commits
[clang] [llvm] [RISCV] Add Zilsd and Zclsd Extensions (PR #131094)
@@ -19,31 +19,29 @@ # TODO: more exhaustive testing of immediate encoding. -# CHECK-ASM-AND-OBJ: c.ldsp ra, 0(sp) -# CHECK-ASM: encoding: [0x82,0x60] +# CHECK-ASM-AND-OBJ: c.ldsp s0, 0(sp) +# CHECK-ASM: encoding: [0x02,0x64] # CHECK-NO-EXT: error: instruction requires the following: 'C' (Compressed Instructions) or 'Zca' (part of the C extension, excluding compressed floating point loads/stores){{$}} -# CHECK-NO-RV64: error: instruction requires the following: RV64I Base Instruction Set{{$}} -c.ldsp ra, 0(sp) -# CHECK-ASM-AND-OBJ: c.sdsp ra, 504(sp) -# CHECK-ASM: encoding: [0x86,0xff] +# CHECK-NO-RV64: error: instruction requires the following: 'Zclsd' (Compressed Load/Store pair instructions){{$}} topperc wrote: I don't think there's any way to fix this. The system is going to print the missing features from the closest matching instruction. It isn't aggregating across possible matches. I think its uncommon for people to mistakenly compiling code using RV32 when they meant RV64 or vice versa. We can probably trust that their used the right base. https://github.com/llvm/llvm-project/pull/131094 ___ cfe-commits mailing list cfe-commits@lists.llvm.org https://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-commits
[clang] [llvm] [RISCV] Add Zilsd and Zclsd Extensions (PR #131094)
@@ -401,6 +408,14 @@ def FeatureStdExtZcf "Compressed Single-Precision Floating-Point Instructions", [FeatureStdExtF, FeatureStdExtZca]>; +def FeatureStdExtZclsd +: RISCVExtension<1, 0, + "Compressed Load/Store pair instructions", + [FeatureStdExtZilsd,FeatureStdExtZca]>; +def HasStdExtZclsd : Predicate<"Subtarget->hasStdExtZclsd() && !Subtarget->hasStdExtZcf()">, lenary wrote: This is not yet resolved, the check here should be exactly the following: ```suggestion def HasStdExtZclsd : Predicate<"Subtarget->hasStdExtZclsd()">, ``` https://github.com/llvm/llvm-project/pull/131094 ___ cfe-commits mailing list cfe-commits@lists.llvm.org https://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-commits
[clang] [llvm] [RISCV] Add Zilsd and Zclsd Extensions (PR #131094)
@@ -780,6 +780,14 @@ Error RISCVISAInfo::checkDependency() { return getIncompatibleError("xwchc", "zcb"); } + if (Exts.count("zclsd") != 0) { +if (XLen != 32) + return getError("'zclsd' is only supported for 'rv32'"); + +if (Exts.count("zcf") != 0) + return getIncompatibleError("zclsd", "zcf"); + } + lenary wrote: This code is not tested. There should be tests in RISCVISAInfoTest.cpp `TEST(ParseArchString, RejectsConflictingExtensions)` https://github.com/llvm/llvm-project/pull/131094 ___ cfe-commits mailing list cfe-commits@lists.llvm.org https://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-commits
[clang] [llvm] [RISCV] Add Zilsd and Zclsd Extensions (PR #131094)
https://github.com/dong-miao updated https://github.com/llvm/llvm-project/pull/131094 >From bcdf9641037507b855a20a8ba5d26b127dd248e8 Mon Sep 17 00:00:00 2001 From: dong-miao Date: Sat, 4 Jan 2025 17:53:58 +0800 Subject: [PATCH 01/33] Update RISCVSystemOperands.td --- llvm/lib/Target/RISCV/RISCVSystemOperands.td | 2 ++ 1 file changed, 2 insertions(+) diff --git a/llvm/lib/Target/RISCV/RISCVSystemOperands.td b/llvm/lib/Target/RISCV/RISCVSystemOperands.td index 39853cf13a920..41b96e1497e70 100644 --- a/llvm/lib/Target/RISCV/RISCVSystemOperands.td +++ b/llvm/lib/Target/RISCV/RISCVSystemOperands.td @@ -158,6 +158,7 @@ def : SysReg<"hip", 0x644>; def : SysReg<"hvip", 0x645>; def : SysReg<"htinst", 0x64A>; def : SysReg<"hgeip", 0xE12>; +def : SysReg<"hedelegh", 0x612>; //===--===// // Hypervisor Configuration @@ -239,6 +240,7 @@ def : SysReg<"mbadaddr", 0x343>; def : SysReg<"mip", 0x344>; def : SysReg<"mtinst", 0x34A>; def : SysReg<"mtval2", 0x34B>; +def : SysReg<"medelegh", 0x312>; //===--===// // Machine Configuration >From 30e3fbe156581efe49a3c6def9dd444dc546f134 Mon Sep 17 00:00:00 2001 From: dong-miao Date: Sat, 4 Jan 2025 18:02:40 +0800 Subject: [PATCH 02/33] Update rv32-hypervisor-csr-names.s --- llvm/test/MC/RISCV/rv32-hypervisor-csr-names.s | 18 ++ 1 file changed, 18 insertions(+) diff --git a/llvm/test/MC/RISCV/rv32-hypervisor-csr-names.s b/llvm/test/MC/RISCV/rv32-hypervisor-csr-names.s index aadee4fb4f3ad..79d87b3f2471c 100644 --- a/llvm/test/MC/RISCV/rv32-hypervisor-csr-names.s +++ b/llvm/test/MC/RISCV/rv32-hypervisor-csr-names.s @@ -219,3 +219,21 @@ csrrs t2, 0x214, zero csrrs t1, vsiph, zero # uimm12 csrrs t2, 0x254, zero + +## +# Hypervisor Trap Setup +## + +# hedelegh +# name +# CHECK-INST: csrrs t1, hedelegh, zero +# CHECK-ENC: encoding: [0x73,0x23,0x20,0x61] +# CHECK-INST-ALIAS: csrr t1, hedelegh +# uimm12 +# CHECK-INST: csrrs t2, hedelegh, zero +# CHECK-ENC: encoding: [0xf3,0x23,0x20,0x61] +# CHECK-INST-ALIAS: csrr t2, hedelegh +# name +csrrs t1, hedelegh, zero +# uimm12 +csrrs t2, 0x612, zero >From e41e745626caf701b2a21eb2577ead05b922f590 Mon Sep 17 00:00:00 2001 From: dong-miao Date: Sat, 4 Jan 2025 18:05:04 +0800 Subject: [PATCH 03/33] Update rv32-machine-csr-names.s --- llvm/test/MC/RISCV/rv32-machine-csr-names.s | 14 ++ 1 file changed, 14 insertions(+) diff --git a/llvm/test/MC/RISCV/rv32-machine-csr-names.s b/llvm/test/MC/RISCV/rv32-machine-csr-names.s index 3d527e382376e..9e929b7eddeed 100644 --- a/llvm/test/MC/RISCV/rv32-machine-csr-names.s +++ b/llvm/test/MC/RISCV/rv32-machine-csr-names.s @@ -22,6 +22,20 @@ csrrs t1, mstatush, zero # uimm12 csrrs t2, 0x310, zero +# medelegh +# name +# CHECK-INST: csrrs t1, medelegh, zero +# CHECK-ENC: encoding: [0x73,0x23,0x20,0x31] +# CHECK-INST-ALIAS: csrr t1, medelegh +# uimm12 +# CHECK-INST: csrrs t2, medelegh, zero +# CHECK-ENC: encoding: [0xf3,0x23,0x20,0x31] +# CHECK-INST-ALIAS: csrr t2, medelegh +# name +csrrs t1, medelegh, zero +# uimm12 +csrrs t2, 0x312, zero + # # Machine Configuration # >From ea2c1afaa0eede9cf9dfbf68d10fada108b0164b Mon Sep 17 00:00:00 2001 From: dong-miao Date: Sun, 5 Jan 2025 11:12:53 +0800 Subject: [PATCH 04/33] Update RISCVSystemOperands.td --- llvm/lib/Target/RISCV/RISCVSystemOperands.td | 2 ++ 1 file changed, 2 insertions(+) diff --git a/llvm/lib/Target/RISCV/RISCVSystemOperands.td b/llvm/lib/Target/RISCV/RISCVSystemOperands.td index 41b96e1497e70..21f912bbc84d1 100644 --- a/llvm/lib/Target/RISCV/RISCVSystemOperands.td +++ b/llvm/lib/Target/RISCV/RISCVSystemOperands.td @@ -158,6 +158,7 @@ def : SysReg<"hip", 0x644>; def : SysReg<"hvip", 0x645>; def : SysReg<"htinst", 0x64A>; def : SysReg<"hgeip", 0xE12>; +let isRV32Only = 1 in def : SysReg<"hedelegh", 0x612>; //===--===// @@ -240,6 +241,7 @@ def : SysReg<"mbadaddr", 0x343>; def : SysReg<"mip", 0x344>; def : SysReg<"mtinst", 0x34A>; def : SysReg<"mtval2", 0x34B>; +let isRV32Only = 1 in def : SysReg<"medelegh", 0x312>; //===--===// >From 6b074f3d744bdfaf2f4de9fa49484b25f76df3d4 Mon Sep 17 00:00:00 2001 From: dong-miao Date: Sun, 5 Jan 2025 11:30:33 +0800 Subject: [PATCH 05/33] Update rv32-only-csr-names.s --- llvm/test/MC/RISCV/rv32-only-csr-names.s | 4 1 file changed, 4 insertions(+) diff --git a/llvm/test/MC/RISCV/rv32-only-csr-names.s b/llvm/test/MC/RISCV/rv32-only-csr-names.s index db88eacf9396b..1604469210193 100644 --- a/llvm/test/MC/RISCV/rv32-only-csr-names.s +++ b/llvm/test/MC/RISCV/rv32-only-csr-names.s @@ -41,12 +41,16 @@ csrrs t1, henvcfgh, zero # CHECK-NEED-RV32: :[[@LIN
[clang] [llvm] [RISCV] Add Zilsd and Zclsd Extensions (PR #131094)
@@ -176,6 +176,13 @@ def HasStdExtZicfiss : Predicate<"Subtarget->hasStdExtZicfiss()">, "'Zicfiss' (Shadow stack)">; def NoHasStdExtZicfiss : Predicate<"!Subtarget->hasStdExtZicfiss()">; +def FeatureStdExtZilsd +: RISCVExtension<1, 0, + "Load/Store Pair Instructions">; wangpc-pp wrote: No, I meant maybe we can make `FeatureStdExtZilsd` implies `RV32` here, so that we can reduce some checks/predicates. This is because `Zilsd` can only be implemented in RV32. But I don't know if this is right. https://github.com/llvm/llvm-project/pull/131094 ___ cfe-commits mailing list cfe-commits@lists.llvm.org https://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-commits
[clang] [llvm] [RISCV] Add Zilsd and Zclsd Extensions (PR #131094)
@@ -0,0 +1,12 @@ +# RUN: not llvm-mc -triple riscv32 -mattr=+zilsd < %s 2>&1 | FileCheck %s + +# Out of range immediates +## simm12 +ld t1, -2049(a0) # CHECK: :[[@LINE]]:8: error: operand must be a symbol with %lo/%pcrel_lo/%tprel_lo modifier or an integer in the range [-2048, 2047] +sd t1, 2048(a0) # CHECK: :[[@LINE]]:8: error: operand must be a symbol with %lo/%pcrel_lo/%tprel_lo modifier or an integer in the range [-2048, 2047] + +# Invalid register names +ld t2, (4)a0 # CHECK: :[[@LINE]]:4: error: register must be even +ld s3, (4)a0 # CHECK: :[[@LINE]]:4: error: register must be even +sd t2, (10)s2 # CHECK: :[[@LINE]]:4: error: register must be even +sd a7, (10)s2 # CHECK: :[[@LINE]]:4: error: register must be even svs-quic wrote: Nit: Please add a new line at the end of the file https://github.com/llvm/llvm-project/pull/131094 ___ cfe-commits mailing list cfe-commits@lists.llvm.org https://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-commits
[clang] [llvm] [RISCV] Add Zilsd and Zclsd Extensions (PR #131094)
@@ -0,0 +1,18 @@ +# RUN: llvm-mc %s -triple=riscv32 -mattr=+zclsd -M no-aliases -show-encoding \ +# RUN: | FileCheck -check-prefixes=CHECK-ASM,CHECK-ASM-AND-OBJ %s +# RUN: llvm-mc -filetype=obj -triple=riscv32 -mattr=+zclsd< %s \ +# RUN: | llvm-objdump --mattr=+zclsd --no-print-imm-hex -M no-aliases -d -r - \ +# RUN: | FileCheck --check-prefix=CHECK-ASM-AND-OBJ %s + +# CHECK-ASM-AND-OBJ: c.ldsp t1, 176(sp) +# CHECK-ASM: encoding: [0x4a,0x73] +c.ldsp t1, 176(sp) +# CHECK-ASM-AND-OBJ: c.sdsp t1, 360(sp) +# CHECK-ASM: encoding: [0x9a,0xf6] +c.sdsp t1, 360(sp) +# CHECK-ASM-AND-OBJ: c.ld a4, 0(a3) +# CHECK-ASM: encoding: [0x98,0x62] +c.ld a4, 0(a3) +# CHECK-ASM-AND-OBJ: c.sd s0, 248(a3) +# CHECK-ASM: encoding: [0xe0,0xfe] +c.sd s0, 248(a3) svs-quic wrote: Nit: Please add a new line at the end of the file https://github.com/llvm/llvm-project/pull/131094 ___ cfe-commits mailing list cfe-commits@lists.llvm.org https://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-commits
[clang] [llvm] [RISCV] Add Zilsd and Zclsd Extensions (PR #131094)
@@ -205,6 +206,7 @@ on support follow. ``Zihintntl`` Supported ``Zihintpause`` Assembly Support ``Zihpm`` (`See Note <#riscv-i2p1-note>`__) + ``Zilsd`` Supported christian-herber-nxp wrote: Supported would indicate there is also code generation. Otherwise, should state Assembly Support. https://github.com/llvm/llvm-project/pull/131094 ___ cfe-commits mailing list cfe-commits@lists.llvm.org https://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-commits
[clang] [llvm] [RISCV] Add Zilsd and Zclsd Extensions (PR #131094)
https://github.com/wangpc-pp commented: Please add a ReleaseNote. https://github.com/llvm/llvm-project/pull/131094 ___ cfe-commits mailing list cfe-commits@lists.llvm.org https://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-commits
[clang] [llvm] [RISCV] Add Zilsd and Zclsd Extensions (PR #131094)
@@ -19,31 +19,29 @@ # TODO: more exhaustive testing of immediate encoding. -# CHECK-ASM-AND-OBJ: c.ldsp ra, 0(sp) -# CHECK-ASM: encoding: [0x82,0x60] +# CHECK-ASM-AND-OBJ: c.ldsp s0, 0(sp) +# CHECK-ASM: encoding: [0x02,0x64] # CHECK-NO-EXT: error: instruction requires the following: 'C' (Compressed Instructions) or 'Zca' (part of the C extension, excluding compressed floating point loads/stores){{$}} -# CHECK-NO-RV64: error: instruction requires the following: RV64I Base Instruction Set{{$}} -c.ldsp ra, 0(sp) -# CHECK-ASM-AND-OBJ: c.sdsp ra, 504(sp) -# CHECK-ASM: encoding: [0x86,0xff] +# CHECK-NO-RV64: error: instruction requires the following: 'Zclsd' (Compressed Load/Store pair instructions){{$}} wangpc-pp wrote: This message seems to be inaccurate. We should print both Zclsd and RV64? https://github.com/llvm/llvm-project/pull/131094 ___ cfe-commits mailing list cfe-commits@lists.llvm.org https://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-commits
[clang] [llvm] [RISCV] Add Zilsd and Zclsd Extensions (PR #131094)
https://github.com/wangpc-pp edited https://github.com/llvm/llvm-project/pull/131094 ___ cfe-commits mailing list cfe-commits@lists.llvm.org https://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-commits
[clang] [llvm] [RISCV] Add Zilsd and Zclsd Extensions (PR #131094)
@@ -0,0 +1,25 @@ +# RUN: llvm-mc %s -triple=riscv32 -mattr=+zilsd -M no-aliases -show-encoding \ +# RUN: | FileCheck -check-prefixes=CHECK-ASM,CHECK-ASM-AND-OBJ %s +# RUN: llvm-mc -filetype=obj -triple riscv32 -mattr=+zilsd < %s \ +# RUN: | llvm-objdump --mattr=+zilsd --no-print-imm-hex -M no-aliases -d -r - \ +# RUN: | FileCheck --check-prefix=CHECK-ASM-AND-OBJ %s + +# CHECK-ASM-AND-OBJ: ld t1, 12(a0) +# CHECK-ASM: encoding: [0x03,0x33,0xc5,0x00] +ld t1, 12(a0) +# CHECK-ASM-AND-OBJ: ld a0, 4(a2) +# CHECK-ASM: encoding: [0x03,0x35,0x46,0x00] +ld a0, +4(a2) +# CHECK-ASM-AND-OBJ: ld t1, -2048(a4) +# CHECK-ASM: encoding: [0x03,0x33,0x07,0x80] +ld t1, -2048(a4) +# CHECK-ASM-AND-OBJ: ld t1, 2047(a4) +# CHECK-ASM: encoding: [0x03,0x33,0xf7,0x7f] +ld t1, 2047(a4) + +# CHECK-ASM-AND-OBJ: sd s0, 2047(a0) +# CHECK-ASM: encoding: [0xa3,0x3f,0x85,0x7e] +sd s0, 2047(a0) +# CHECK-ASM-AND-OBJ: sd a0, -2048(a2) +# CHECK-ASM: encoding: [0x23,0x30,0xa6,0x80] +sd a0, -2048(a2) dong-miao wrote: Relevant modifications have been completed. https://github.com/llvm/llvm-project/pull/131094 ___ cfe-commits mailing list cfe-commits@lists.llvm.org https://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-commits
[clang] [llvm] [RISCV] Add Zilsd and Zclsd Extensions (PR #131094)
https://github.com/dong-miao updated https://github.com/llvm/llvm-project/pull/131094 >From bcdf9641037507b855a20a8ba5d26b127dd248e8 Mon Sep 17 00:00:00 2001 From: dong-miao Date: Sat, 4 Jan 2025 17:53:58 +0800 Subject: [PATCH 01/30] Update RISCVSystemOperands.td --- llvm/lib/Target/RISCV/RISCVSystemOperands.td | 2 ++ 1 file changed, 2 insertions(+) diff --git a/llvm/lib/Target/RISCV/RISCVSystemOperands.td b/llvm/lib/Target/RISCV/RISCVSystemOperands.td index 39853cf13a920..41b96e1497e70 100644 --- a/llvm/lib/Target/RISCV/RISCVSystemOperands.td +++ b/llvm/lib/Target/RISCV/RISCVSystemOperands.td @@ -158,6 +158,7 @@ def : SysReg<"hip", 0x644>; def : SysReg<"hvip", 0x645>; def : SysReg<"htinst", 0x64A>; def : SysReg<"hgeip", 0xE12>; +def : SysReg<"hedelegh", 0x612>; //===--===// // Hypervisor Configuration @@ -239,6 +240,7 @@ def : SysReg<"mbadaddr", 0x343>; def : SysReg<"mip", 0x344>; def : SysReg<"mtinst", 0x34A>; def : SysReg<"mtval2", 0x34B>; +def : SysReg<"medelegh", 0x312>; //===--===// // Machine Configuration >From 30e3fbe156581efe49a3c6def9dd444dc546f134 Mon Sep 17 00:00:00 2001 From: dong-miao Date: Sat, 4 Jan 2025 18:02:40 +0800 Subject: [PATCH 02/30] Update rv32-hypervisor-csr-names.s --- llvm/test/MC/RISCV/rv32-hypervisor-csr-names.s | 18 ++ 1 file changed, 18 insertions(+) diff --git a/llvm/test/MC/RISCV/rv32-hypervisor-csr-names.s b/llvm/test/MC/RISCV/rv32-hypervisor-csr-names.s index aadee4fb4f3ad..79d87b3f2471c 100644 --- a/llvm/test/MC/RISCV/rv32-hypervisor-csr-names.s +++ b/llvm/test/MC/RISCV/rv32-hypervisor-csr-names.s @@ -219,3 +219,21 @@ csrrs t2, 0x214, zero csrrs t1, vsiph, zero # uimm12 csrrs t2, 0x254, zero + +## +# Hypervisor Trap Setup +## + +# hedelegh +# name +# CHECK-INST: csrrs t1, hedelegh, zero +# CHECK-ENC: encoding: [0x73,0x23,0x20,0x61] +# CHECK-INST-ALIAS: csrr t1, hedelegh +# uimm12 +# CHECK-INST: csrrs t2, hedelegh, zero +# CHECK-ENC: encoding: [0xf3,0x23,0x20,0x61] +# CHECK-INST-ALIAS: csrr t2, hedelegh +# name +csrrs t1, hedelegh, zero +# uimm12 +csrrs t2, 0x612, zero >From e41e745626caf701b2a21eb2577ead05b922f590 Mon Sep 17 00:00:00 2001 From: dong-miao Date: Sat, 4 Jan 2025 18:05:04 +0800 Subject: [PATCH 03/30] Update rv32-machine-csr-names.s --- llvm/test/MC/RISCV/rv32-machine-csr-names.s | 14 ++ 1 file changed, 14 insertions(+) diff --git a/llvm/test/MC/RISCV/rv32-machine-csr-names.s b/llvm/test/MC/RISCV/rv32-machine-csr-names.s index 3d527e382376e..9e929b7eddeed 100644 --- a/llvm/test/MC/RISCV/rv32-machine-csr-names.s +++ b/llvm/test/MC/RISCV/rv32-machine-csr-names.s @@ -22,6 +22,20 @@ csrrs t1, mstatush, zero # uimm12 csrrs t2, 0x310, zero +# medelegh +# name +# CHECK-INST: csrrs t1, medelegh, zero +# CHECK-ENC: encoding: [0x73,0x23,0x20,0x31] +# CHECK-INST-ALIAS: csrr t1, medelegh +# uimm12 +# CHECK-INST: csrrs t2, medelegh, zero +# CHECK-ENC: encoding: [0xf3,0x23,0x20,0x31] +# CHECK-INST-ALIAS: csrr t2, medelegh +# name +csrrs t1, medelegh, zero +# uimm12 +csrrs t2, 0x312, zero + # # Machine Configuration # >From ea2c1afaa0eede9cf9dfbf68d10fada108b0164b Mon Sep 17 00:00:00 2001 From: dong-miao Date: Sun, 5 Jan 2025 11:12:53 +0800 Subject: [PATCH 04/30] Update RISCVSystemOperands.td --- llvm/lib/Target/RISCV/RISCVSystemOperands.td | 2 ++ 1 file changed, 2 insertions(+) diff --git a/llvm/lib/Target/RISCV/RISCVSystemOperands.td b/llvm/lib/Target/RISCV/RISCVSystemOperands.td index 41b96e1497e70..21f912bbc84d1 100644 --- a/llvm/lib/Target/RISCV/RISCVSystemOperands.td +++ b/llvm/lib/Target/RISCV/RISCVSystemOperands.td @@ -158,6 +158,7 @@ def : SysReg<"hip", 0x644>; def : SysReg<"hvip", 0x645>; def : SysReg<"htinst", 0x64A>; def : SysReg<"hgeip", 0xE12>; +let isRV32Only = 1 in def : SysReg<"hedelegh", 0x612>; //===--===// @@ -240,6 +241,7 @@ def : SysReg<"mbadaddr", 0x343>; def : SysReg<"mip", 0x344>; def : SysReg<"mtinst", 0x34A>; def : SysReg<"mtval2", 0x34B>; +let isRV32Only = 1 in def : SysReg<"medelegh", 0x312>; //===--===// >From 6b074f3d744bdfaf2f4de9fa49484b25f76df3d4 Mon Sep 17 00:00:00 2001 From: dong-miao Date: Sun, 5 Jan 2025 11:30:33 +0800 Subject: [PATCH 05/30] Update rv32-only-csr-names.s --- llvm/test/MC/RISCV/rv32-only-csr-names.s | 4 1 file changed, 4 insertions(+) diff --git a/llvm/test/MC/RISCV/rv32-only-csr-names.s b/llvm/test/MC/RISCV/rv32-only-csr-names.s index db88eacf9396b..1604469210193 100644 --- a/llvm/test/MC/RISCV/rv32-only-csr-names.s +++ b/llvm/test/MC/RISCV/rv32-only-csr-names.s @@ -41,12 +41,16 @@ csrrs t1, henvcfgh, zero # CHECK-NEED-RV32: :[[@LIN
[clang] [llvm] [RISCV] Add Zilsd and Zclsd Extensions (PR #131094)
@@ -0,0 +1,22 @@ +# RUN: not llvm-mc -triple=riscv32 -mattr=+zclsd < %s 2>&1 | FileCheck %s + +## GPRPairC +c.ld t1, 4(sp) # CHECK: :[[@LINE]]:6: error: invalid operand for instruction +c.sd s2, 4(sp) # CHECK: :[[@LINE]]:6: error: invalid operand for instruction + +## GPRPairNoX0 +c.ldsp x0, 4(sp) # CHECK: :[[@LINE]]:9: error: invalid operand for instruction +c.ldsp zero, 4(sp) # CHECK: :[[@LINE]]:9: error: invalid operand for instruction + +## uimm9_lsb000 +c.ldsp t1, 512(sp) # CHECK: :[[@LINE]]:12: error: immediate must be a multiple of 8 bytes in the range [0, 504] +c.sdsp t1, -8(sp) # CHECK: :[[@LINE]]:12: error: immediate must be a multiple of 8 bytes in the range [0, 504] +## uimm8_lsb000 +c.ld s0, -8(sp) # CHECK: :[[@LINE]]:11: error: immediate must be a multiple of 8 bytes in the range [0, 248] +c.sd s0, 256(sp) # CHECK: :[[@LINE]]:11: error: immediate must be a multiple of 8 bytes in the range [0, 248] + +# Invalid register names +c.ld a1, 4(sp) # CHECK: :[[@LINE]]:6: error: register must be even +c.sd a3, 4(sp) # CHECK: :[[@LINE]]:6: error: register must be even +c.ldsp ra, 4(sp) # CHECK: :[[@LINE]]:8: error: register must be even +c.ldsp t0, 4(sp) # CHECK: :[[@LINE]]:8: error: register must be even svs-quic wrote: Nit: Please add a new line at the end of the file https://github.com/llvm/llvm-project/pull/131094 ___ cfe-commits mailing list cfe-commits@lists.llvm.org https://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-commits
[clang] [llvm] [RISCV] Add Zilsd and Zclsd Extensions (PR #131094)
@@ -0,0 +1,25 @@ +# RUN: llvm-mc %s -triple=riscv32 -mattr=+zilsd -M no-aliases -show-encoding \ +# RUN: | FileCheck -check-prefixes=CHECK-ASM,CHECK-ASM-AND-OBJ %s +# RUN: llvm-mc -filetype=obj -triple riscv32 -mattr=+zilsd < %s \ +# RUN: | llvm-objdump --mattr=+zilsd --no-print-imm-hex -M no-aliases -d -r - \ +# RUN: | FileCheck --check-prefix=CHECK-ASM-AND-OBJ %s + +# CHECK-ASM-AND-OBJ: ld t1, 12(a0) +# CHECK-ASM: encoding: [0x03,0x33,0xc5,0x00] +ld t1, 12(a0) +# CHECK-ASM-AND-OBJ: ld a0, 4(a2) +# CHECK-ASM: encoding: [0x03,0x35,0x46,0x00] +ld a0, +4(a2) +# CHECK-ASM-AND-OBJ: ld t1, -2048(a4) +# CHECK-ASM: encoding: [0x03,0x33,0x07,0x80] +ld t1, -2048(a4) +# CHECK-ASM-AND-OBJ: ld t1, 2047(a4) +# CHECK-ASM: encoding: [0x03,0x33,0xf7,0x7f] +ld t1, 2047(a4) + +# CHECK-ASM-AND-OBJ: sd s0, 2047(a0) +# CHECK-ASM: encoding: [0xa3,0x3f,0x85,0x7e] +sd s0, 2047(a0) +# CHECK-ASM-AND-OBJ: sd a0, -2048(a2) +# CHECK-ASM: encoding: [0x23,0x30,0xa6,0x80] +sd a0, -2048(a2) svs-quic wrote: Nit: Please add a new line at the end of the file https://github.com/llvm/llvm-project/pull/131094 ___ cfe-commits mailing list cfe-commits@lists.llvm.org https://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-commits
[clang] [llvm] [RISCV] Add Zilsd and Zclsd Extensions (PR #131094)
https://github.com/dong-miao updated https://github.com/llvm/llvm-project/pull/131094 >From bcdf9641037507b855a20a8ba5d26b127dd248e8 Mon Sep 17 00:00:00 2001 From: dong-miao Date: Sat, 4 Jan 2025 17:53:58 +0800 Subject: [PATCH 01/29] Update RISCVSystemOperands.td --- llvm/lib/Target/RISCV/RISCVSystemOperands.td | 2 ++ 1 file changed, 2 insertions(+) diff --git a/llvm/lib/Target/RISCV/RISCVSystemOperands.td b/llvm/lib/Target/RISCV/RISCVSystemOperands.td index 39853cf13a920..41b96e1497e70 100644 --- a/llvm/lib/Target/RISCV/RISCVSystemOperands.td +++ b/llvm/lib/Target/RISCV/RISCVSystemOperands.td @@ -158,6 +158,7 @@ def : SysReg<"hip", 0x644>; def : SysReg<"hvip", 0x645>; def : SysReg<"htinst", 0x64A>; def : SysReg<"hgeip", 0xE12>; +def : SysReg<"hedelegh", 0x612>; //===--===// // Hypervisor Configuration @@ -239,6 +240,7 @@ def : SysReg<"mbadaddr", 0x343>; def : SysReg<"mip", 0x344>; def : SysReg<"mtinst", 0x34A>; def : SysReg<"mtval2", 0x34B>; +def : SysReg<"medelegh", 0x312>; //===--===// // Machine Configuration >From 30e3fbe156581efe49a3c6def9dd444dc546f134 Mon Sep 17 00:00:00 2001 From: dong-miao Date: Sat, 4 Jan 2025 18:02:40 +0800 Subject: [PATCH 02/29] Update rv32-hypervisor-csr-names.s --- llvm/test/MC/RISCV/rv32-hypervisor-csr-names.s | 18 ++ 1 file changed, 18 insertions(+) diff --git a/llvm/test/MC/RISCV/rv32-hypervisor-csr-names.s b/llvm/test/MC/RISCV/rv32-hypervisor-csr-names.s index aadee4fb4f3ad..79d87b3f2471c 100644 --- a/llvm/test/MC/RISCV/rv32-hypervisor-csr-names.s +++ b/llvm/test/MC/RISCV/rv32-hypervisor-csr-names.s @@ -219,3 +219,21 @@ csrrs t2, 0x214, zero csrrs t1, vsiph, zero # uimm12 csrrs t2, 0x254, zero + +## +# Hypervisor Trap Setup +## + +# hedelegh +# name +# CHECK-INST: csrrs t1, hedelegh, zero +# CHECK-ENC: encoding: [0x73,0x23,0x20,0x61] +# CHECK-INST-ALIAS: csrr t1, hedelegh +# uimm12 +# CHECK-INST: csrrs t2, hedelegh, zero +# CHECK-ENC: encoding: [0xf3,0x23,0x20,0x61] +# CHECK-INST-ALIAS: csrr t2, hedelegh +# name +csrrs t1, hedelegh, zero +# uimm12 +csrrs t2, 0x612, zero >From e41e745626caf701b2a21eb2577ead05b922f590 Mon Sep 17 00:00:00 2001 From: dong-miao Date: Sat, 4 Jan 2025 18:05:04 +0800 Subject: [PATCH 03/29] Update rv32-machine-csr-names.s --- llvm/test/MC/RISCV/rv32-machine-csr-names.s | 14 ++ 1 file changed, 14 insertions(+) diff --git a/llvm/test/MC/RISCV/rv32-machine-csr-names.s b/llvm/test/MC/RISCV/rv32-machine-csr-names.s index 3d527e382376e..9e929b7eddeed 100644 --- a/llvm/test/MC/RISCV/rv32-machine-csr-names.s +++ b/llvm/test/MC/RISCV/rv32-machine-csr-names.s @@ -22,6 +22,20 @@ csrrs t1, mstatush, zero # uimm12 csrrs t2, 0x310, zero +# medelegh +# name +# CHECK-INST: csrrs t1, medelegh, zero +# CHECK-ENC: encoding: [0x73,0x23,0x20,0x31] +# CHECK-INST-ALIAS: csrr t1, medelegh +# uimm12 +# CHECK-INST: csrrs t2, medelegh, zero +# CHECK-ENC: encoding: [0xf3,0x23,0x20,0x31] +# CHECK-INST-ALIAS: csrr t2, medelegh +# name +csrrs t1, medelegh, zero +# uimm12 +csrrs t2, 0x312, zero + # # Machine Configuration # >From ea2c1afaa0eede9cf9dfbf68d10fada108b0164b Mon Sep 17 00:00:00 2001 From: dong-miao Date: Sun, 5 Jan 2025 11:12:53 +0800 Subject: [PATCH 04/29] Update RISCVSystemOperands.td --- llvm/lib/Target/RISCV/RISCVSystemOperands.td | 2 ++ 1 file changed, 2 insertions(+) diff --git a/llvm/lib/Target/RISCV/RISCVSystemOperands.td b/llvm/lib/Target/RISCV/RISCVSystemOperands.td index 41b96e1497e70..21f912bbc84d1 100644 --- a/llvm/lib/Target/RISCV/RISCVSystemOperands.td +++ b/llvm/lib/Target/RISCV/RISCVSystemOperands.td @@ -158,6 +158,7 @@ def : SysReg<"hip", 0x644>; def : SysReg<"hvip", 0x645>; def : SysReg<"htinst", 0x64A>; def : SysReg<"hgeip", 0xE12>; +let isRV32Only = 1 in def : SysReg<"hedelegh", 0x612>; //===--===// @@ -240,6 +241,7 @@ def : SysReg<"mbadaddr", 0x343>; def : SysReg<"mip", 0x344>; def : SysReg<"mtinst", 0x34A>; def : SysReg<"mtval2", 0x34B>; +let isRV32Only = 1 in def : SysReg<"medelegh", 0x312>; //===--===// >From 6b074f3d744bdfaf2f4de9fa49484b25f76df3d4 Mon Sep 17 00:00:00 2001 From: dong-miao Date: Sun, 5 Jan 2025 11:30:33 +0800 Subject: [PATCH 05/29] Update rv32-only-csr-names.s --- llvm/test/MC/RISCV/rv32-only-csr-names.s | 4 1 file changed, 4 insertions(+) diff --git a/llvm/test/MC/RISCV/rv32-only-csr-names.s b/llvm/test/MC/RISCV/rv32-only-csr-names.s index db88eacf9396b..1604469210193 100644 --- a/llvm/test/MC/RISCV/rv32-only-csr-names.s +++ b/llvm/test/MC/RISCV/rv32-only-csr-names.s @@ -41,12 +41,16 @@ csrrs t1, henvcfgh, zero # CHECK-NEED-RV32: :[[@LIN
[clang] [llvm] [RISCV] Add Zilsd and Zclsd Extensions (PR #131094)
https://github.com/dong-miao updated https://github.com/llvm/llvm-project/pull/131094 >From bcdf9641037507b855a20a8ba5d26b127dd248e8 Mon Sep 17 00:00:00 2001 From: dong-miao Date: Sat, 4 Jan 2025 17:53:58 +0800 Subject: [PATCH 01/26] Update RISCVSystemOperands.td --- llvm/lib/Target/RISCV/RISCVSystemOperands.td | 2 ++ 1 file changed, 2 insertions(+) diff --git a/llvm/lib/Target/RISCV/RISCVSystemOperands.td b/llvm/lib/Target/RISCV/RISCVSystemOperands.td index 39853cf13a920..41b96e1497e70 100644 --- a/llvm/lib/Target/RISCV/RISCVSystemOperands.td +++ b/llvm/lib/Target/RISCV/RISCVSystemOperands.td @@ -158,6 +158,7 @@ def : SysReg<"hip", 0x644>; def : SysReg<"hvip", 0x645>; def : SysReg<"htinst", 0x64A>; def : SysReg<"hgeip", 0xE12>; +def : SysReg<"hedelegh", 0x612>; //===--===// // Hypervisor Configuration @@ -239,6 +240,7 @@ def : SysReg<"mbadaddr", 0x343>; def : SysReg<"mip", 0x344>; def : SysReg<"mtinst", 0x34A>; def : SysReg<"mtval2", 0x34B>; +def : SysReg<"medelegh", 0x312>; //===--===// // Machine Configuration >From 30e3fbe156581efe49a3c6def9dd444dc546f134 Mon Sep 17 00:00:00 2001 From: dong-miao Date: Sat, 4 Jan 2025 18:02:40 +0800 Subject: [PATCH 02/26] Update rv32-hypervisor-csr-names.s --- llvm/test/MC/RISCV/rv32-hypervisor-csr-names.s | 18 ++ 1 file changed, 18 insertions(+) diff --git a/llvm/test/MC/RISCV/rv32-hypervisor-csr-names.s b/llvm/test/MC/RISCV/rv32-hypervisor-csr-names.s index aadee4fb4f3ad..79d87b3f2471c 100644 --- a/llvm/test/MC/RISCV/rv32-hypervisor-csr-names.s +++ b/llvm/test/MC/RISCV/rv32-hypervisor-csr-names.s @@ -219,3 +219,21 @@ csrrs t2, 0x214, zero csrrs t1, vsiph, zero # uimm12 csrrs t2, 0x254, zero + +## +# Hypervisor Trap Setup +## + +# hedelegh +# name +# CHECK-INST: csrrs t1, hedelegh, zero +# CHECK-ENC: encoding: [0x73,0x23,0x20,0x61] +# CHECK-INST-ALIAS: csrr t1, hedelegh +# uimm12 +# CHECK-INST: csrrs t2, hedelegh, zero +# CHECK-ENC: encoding: [0xf3,0x23,0x20,0x61] +# CHECK-INST-ALIAS: csrr t2, hedelegh +# name +csrrs t1, hedelegh, zero +# uimm12 +csrrs t2, 0x612, zero >From e41e745626caf701b2a21eb2577ead05b922f590 Mon Sep 17 00:00:00 2001 From: dong-miao Date: Sat, 4 Jan 2025 18:05:04 +0800 Subject: [PATCH 03/26] Update rv32-machine-csr-names.s --- llvm/test/MC/RISCV/rv32-machine-csr-names.s | 14 ++ 1 file changed, 14 insertions(+) diff --git a/llvm/test/MC/RISCV/rv32-machine-csr-names.s b/llvm/test/MC/RISCV/rv32-machine-csr-names.s index 3d527e382376e..9e929b7eddeed 100644 --- a/llvm/test/MC/RISCV/rv32-machine-csr-names.s +++ b/llvm/test/MC/RISCV/rv32-machine-csr-names.s @@ -22,6 +22,20 @@ csrrs t1, mstatush, zero # uimm12 csrrs t2, 0x310, zero +# medelegh +# name +# CHECK-INST: csrrs t1, medelegh, zero +# CHECK-ENC: encoding: [0x73,0x23,0x20,0x31] +# CHECK-INST-ALIAS: csrr t1, medelegh +# uimm12 +# CHECK-INST: csrrs t2, medelegh, zero +# CHECK-ENC: encoding: [0xf3,0x23,0x20,0x31] +# CHECK-INST-ALIAS: csrr t2, medelegh +# name +csrrs t1, medelegh, zero +# uimm12 +csrrs t2, 0x312, zero + # # Machine Configuration # >From ea2c1afaa0eede9cf9dfbf68d10fada108b0164b Mon Sep 17 00:00:00 2001 From: dong-miao Date: Sun, 5 Jan 2025 11:12:53 +0800 Subject: [PATCH 04/26] Update RISCVSystemOperands.td --- llvm/lib/Target/RISCV/RISCVSystemOperands.td | 2 ++ 1 file changed, 2 insertions(+) diff --git a/llvm/lib/Target/RISCV/RISCVSystemOperands.td b/llvm/lib/Target/RISCV/RISCVSystemOperands.td index 41b96e1497e70..21f912bbc84d1 100644 --- a/llvm/lib/Target/RISCV/RISCVSystemOperands.td +++ b/llvm/lib/Target/RISCV/RISCVSystemOperands.td @@ -158,6 +158,7 @@ def : SysReg<"hip", 0x644>; def : SysReg<"hvip", 0x645>; def : SysReg<"htinst", 0x64A>; def : SysReg<"hgeip", 0xE12>; +let isRV32Only = 1 in def : SysReg<"hedelegh", 0x612>; //===--===// @@ -240,6 +241,7 @@ def : SysReg<"mbadaddr", 0x343>; def : SysReg<"mip", 0x344>; def : SysReg<"mtinst", 0x34A>; def : SysReg<"mtval2", 0x34B>; +let isRV32Only = 1 in def : SysReg<"medelegh", 0x312>; //===--===// >From 6b074f3d744bdfaf2f4de9fa49484b25f76df3d4 Mon Sep 17 00:00:00 2001 From: dong-miao Date: Sun, 5 Jan 2025 11:30:33 +0800 Subject: [PATCH 05/26] Update rv32-only-csr-names.s --- llvm/test/MC/RISCV/rv32-only-csr-names.s | 4 1 file changed, 4 insertions(+) diff --git a/llvm/test/MC/RISCV/rv32-only-csr-names.s b/llvm/test/MC/RISCV/rv32-only-csr-names.s index db88eacf9396b..1604469210193 100644 --- a/llvm/test/MC/RISCV/rv32-only-csr-names.s +++ b/llvm/test/MC/RISCV/rv32-only-csr-names.s @@ -41,12 +41,16 @@ csrrs t1, henvcfgh, zero # CHECK-NEED-RV32: :[[@LIN
[clang] [llvm] [RISCV] Add Zilsd and Zclsd Extensions (PR #131094)
https://github.com/dong-miao updated https://github.com/llvm/llvm-project/pull/131094 >From bcdf9641037507b855a20a8ba5d26b127dd248e8 Mon Sep 17 00:00:00 2001 From: dong-miao Date: Sat, 4 Jan 2025 17:53:58 +0800 Subject: [PATCH 01/28] Update RISCVSystemOperands.td --- llvm/lib/Target/RISCV/RISCVSystemOperands.td | 2 ++ 1 file changed, 2 insertions(+) diff --git a/llvm/lib/Target/RISCV/RISCVSystemOperands.td b/llvm/lib/Target/RISCV/RISCVSystemOperands.td index 39853cf13a920..41b96e1497e70 100644 --- a/llvm/lib/Target/RISCV/RISCVSystemOperands.td +++ b/llvm/lib/Target/RISCV/RISCVSystemOperands.td @@ -158,6 +158,7 @@ def : SysReg<"hip", 0x644>; def : SysReg<"hvip", 0x645>; def : SysReg<"htinst", 0x64A>; def : SysReg<"hgeip", 0xE12>; +def : SysReg<"hedelegh", 0x612>; //===--===// // Hypervisor Configuration @@ -239,6 +240,7 @@ def : SysReg<"mbadaddr", 0x343>; def : SysReg<"mip", 0x344>; def : SysReg<"mtinst", 0x34A>; def : SysReg<"mtval2", 0x34B>; +def : SysReg<"medelegh", 0x312>; //===--===// // Machine Configuration >From 30e3fbe156581efe49a3c6def9dd444dc546f134 Mon Sep 17 00:00:00 2001 From: dong-miao Date: Sat, 4 Jan 2025 18:02:40 +0800 Subject: [PATCH 02/28] Update rv32-hypervisor-csr-names.s --- llvm/test/MC/RISCV/rv32-hypervisor-csr-names.s | 18 ++ 1 file changed, 18 insertions(+) diff --git a/llvm/test/MC/RISCV/rv32-hypervisor-csr-names.s b/llvm/test/MC/RISCV/rv32-hypervisor-csr-names.s index aadee4fb4f3ad..79d87b3f2471c 100644 --- a/llvm/test/MC/RISCV/rv32-hypervisor-csr-names.s +++ b/llvm/test/MC/RISCV/rv32-hypervisor-csr-names.s @@ -219,3 +219,21 @@ csrrs t2, 0x214, zero csrrs t1, vsiph, zero # uimm12 csrrs t2, 0x254, zero + +## +# Hypervisor Trap Setup +## + +# hedelegh +# name +# CHECK-INST: csrrs t1, hedelegh, zero +# CHECK-ENC: encoding: [0x73,0x23,0x20,0x61] +# CHECK-INST-ALIAS: csrr t1, hedelegh +# uimm12 +# CHECK-INST: csrrs t2, hedelegh, zero +# CHECK-ENC: encoding: [0xf3,0x23,0x20,0x61] +# CHECK-INST-ALIAS: csrr t2, hedelegh +# name +csrrs t1, hedelegh, zero +# uimm12 +csrrs t2, 0x612, zero >From e41e745626caf701b2a21eb2577ead05b922f590 Mon Sep 17 00:00:00 2001 From: dong-miao Date: Sat, 4 Jan 2025 18:05:04 +0800 Subject: [PATCH 03/28] Update rv32-machine-csr-names.s --- llvm/test/MC/RISCV/rv32-machine-csr-names.s | 14 ++ 1 file changed, 14 insertions(+) diff --git a/llvm/test/MC/RISCV/rv32-machine-csr-names.s b/llvm/test/MC/RISCV/rv32-machine-csr-names.s index 3d527e382376e..9e929b7eddeed 100644 --- a/llvm/test/MC/RISCV/rv32-machine-csr-names.s +++ b/llvm/test/MC/RISCV/rv32-machine-csr-names.s @@ -22,6 +22,20 @@ csrrs t1, mstatush, zero # uimm12 csrrs t2, 0x310, zero +# medelegh +# name +# CHECK-INST: csrrs t1, medelegh, zero +# CHECK-ENC: encoding: [0x73,0x23,0x20,0x31] +# CHECK-INST-ALIAS: csrr t1, medelegh +# uimm12 +# CHECK-INST: csrrs t2, medelegh, zero +# CHECK-ENC: encoding: [0xf3,0x23,0x20,0x31] +# CHECK-INST-ALIAS: csrr t2, medelegh +# name +csrrs t1, medelegh, zero +# uimm12 +csrrs t2, 0x312, zero + # # Machine Configuration # >From ea2c1afaa0eede9cf9dfbf68d10fada108b0164b Mon Sep 17 00:00:00 2001 From: dong-miao Date: Sun, 5 Jan 2025 11:12:53 +0800 Subject: [PATCH 04/28] Update RISCVSystemOperands.td --- llvm/lib/Target/RISCV/RISCVSystemOperands.td | 2 ++ 1 file changed, 2 insertions(+) diff --git a/llvm/lib/Target/RISCV/RISCVSystemOperands.td b/llvm/lib/Target/RISCV/RISCVSystemOperands.td index 41b96e1497e70..21f912bbc84d1 100644 --- a/llvm/lib/Target/RISCV/RISCVSystemOperands.td +++ b/llvm/lib/Target/RISCV/RISCVSystemOperands.td @@ -158,6 +158,7 @@ def : SysReg<"hip", 0x644>; def : SysReg<"hvip", 0x645>; def : SysReg<"htinst", 0x64A>; def : SysReg<"hgeip", 0xE12>; +let isRV32Only = 1 in def : SysReg<"hedelegh", 0x612>; //===--===// @@ -240,6 +241,7 @@ def : SysReg<"mbadaddr", 0x343>; def : SysReg<"mip", 0x344>; def : SysReg<"mtinst", 0x34A>; def : SysReg<"mtval2", 0x34B>; +let isRV32Only = 1 in def : SysReg<"medelegh", 0x312>; //===--===// >From 6b074f3d744bdfaf2f4de9fa49484b25f76df3d4 Mon Sep 17 00:00:00 2001 From: dong-miao Date: Sun, 5 Jan 2025 11:30:33 +0800 Subject: [PATCH 05/28] Update rv32-only-csr-names.s --- llvm/test/MC/RISCV/rv32-only-csr-names.s | 4 1 file changed, 4 insertions(+) diff --git a/llvm/test/MC/RISCV/rv32-only-csr-names.s b/llvm/test/MC/RISCV/rv32-only-csr-names.s index db88eacf9396b..1604469210193 100644 --- a/llvm/test/MC/RISCV/rv32-only-csr-names.s +++ b/llvm/test/MC/RISCV/rv32-only-csr-names.s @@ -41,12 +41,16 @@ csrrs t1, henvcfgh, zero # CHECK-NEED-RV32: :[[@LIN
[clang] [llvm] [RISCV] Add Zilsd and Zclsd Extensions (PR #131094)
https://github.com/dong-miao updated https://github.com/llvm/llvm-project/pull/131094 >From bcdf9641037507b855a20a8ba5d26b127dd248e8 Mon Sep 17 00:00:00 2001 From: dong-miao Date: Sat, 4 Jan 2025 17:53:58 +0800 Subject: [PATCH 01/27] Update RISCVSystemOperands.td --- llvm/lib/Target/RISCV/RISCVSystemOperands.td | 2 ++ 1 file changed, 2 insertions(+) diff --git a/llvm/lib/Target/RISCV/RISCVSystemOperands.td b/llvm/lib/Target/RISCV/RISCVSystemOperands.td index 39853cf13a920..41b96e1497e70 100644 --- a/llvm/lib/Target/RISCV/RISCVSystemOperands.td +++ b/llvm/lib/Target/RISCV/RISCVSystemOperands.td @@ -158,6 +158,7 @@ def : SysReg<"hip", 0x644>; def : SysReg<"hvip", 0x645>; def : SysReg<"htinst", 0x64A>; def : SysReg<"hgeip", 0xE12>; +def : SysReg<"hedelegh", 0x612>; //===--===// // Hypervisor Configuration @@ -239,6 +240,7 @@ def : SysReg<"mbadaddr", 0x343>; def : SysReg<"mip", 0x344>; def : SysReg<"mtinst", 0x34A>; def : SysReg<"mtval2", 0x34B>; +def : SysReg<"medelegh", 0x312>; //===--===// // Machine Configuration >From 30e3fbe156581efe49a3c6def9dd444dc546f134 Mon Sep 17 00:00:00 2001 From: dong-miao Date: Sat, 4 Jan 2025 18:02:40 +0800 Subject: [PATCH 02/27] Update rv32-hypervisor-csr-names.s --- llvm/test/MC/RISCV/rv32-hypervisor-csr-names.s | 18 ++ 1 file changed, 18 insertions(+) diff --git a/llvm/test/MC/RISCV/rv32-hypervisor-csr-names.s b/llvm/test/MC/RISCV/rv32-hypervisor-csr-names.s index aadee4fb4f3ad..79d87b3f2471c 100644 --- a/llvm/test/MC/RISCV/rv32-hypervisor-csr-names.s +++ b/llvm/test/MC/RISCV/rv32-hypervisor-csr-names.s @@ -219,3 +219,21 @@ csrrs t2, 0x214, zero csrrs t1, vsiph, zero # uimm12 csrrs t2, 0x254, zero + +## +# Hypervisor Trap Setup +## + +# hedelegh +# name +# CHECK-INST: csrrs t1, hedelegh, zero +# CHECK-ENC: encoding: [0x73,0x23,0x20,0x61] +# CHECK-INST-ALIAS: csrr t1, hedelegh +# uimm12 +# CHECK-INST: csrrs t2, hedelegh, zero +# CHECK-ENC: encoding: [0xf3,0x23,0x20,0x61] +# CHECK-INST-ALIAS: csrr t2, hedelegh +# name +csrrs t1, hedelegh, zero +# uimm12 +csrrs t2, 0x612, zero >From e41e745626caf701b2a21eb2577ead05b922f590 Mon Sep 17 00:00:00 2001 From: dong-miao Date: Sat, 4 Jan 2025 18:05:04 +0800 Subject: [PATCH 03/27] Update rv32-machine-csr-names.s --- llvm/test/MC/RISCV/rv32-machine-csr-names.s | 14 ++ 1 file changed, 14 insertions(+) diff --git a/llvm/test/MC/RISCV/rv32-machine-csr-names.s b/llvm/test/MC/RISCV/rv32-machine-csr-names.s index 3d527e382376e..9e929b7eddeed 100644 --- a/llvm/test/MC/RISCV/rv32-machine-csr-names.s +++ b/llvm/test/MC/RISCV/rv32-machine-csr-names.s @@ -22,6 +22,20 @@ csrrs t1, mstatush, zero # uimm12 csrrs t2, 0x310, zero +# medelegh +# name +# CHECK-INST: csrrs t1, medelegh, zero +# CHECK-ENC: encoding: [0x73,0x23,0x20,0x31] +# CHECK-INST-ALIAS: csrr t1, medelegh +# uimm12 +# CHECK-INST: csrrs t2, medelegh, zero +# CHECK-ENC: encoding: [0xf3,0x23,0x20,0x31] +# CHECK-INST-ALIAS: csrr t2, medelegh +# name +csrrs t1, medelegh, zero +# uimm12 +csrrs t2, 0x312, zero + # # Machine Configuration # >From ea2c1afaa0eede9cf9dfbf68d10fada108b0164b Mon Sep 17 00:00:00 2001 From: dong-miao Date: Sun, 5 Jan 2025 11:12:53 +0800 Subject: [PATCH 04/27] Update RISCVSystemOperands.td --- llvm/lib/Target/RISCV/RISCVSystemOperands.td | 2 ++ 1 file changed, 2 insertions(+) diff --git a/llvm/lib/Target/RISCV/RISCVSystemOperands.td b/llvm/lib/Target/RISCV/RISCVSystemOperands.td index 41b96e1497e70..21f912bbc84d1 100644 --- a/llvm/lib/Target/RISCV/RISCVSystemOperands.td +++ b/llvm/lib/Target/RISCV/RISCVSystemOperands.td @@ -158,6 +158,7 @@ def : SysReg<"hip", 0x644>; def : SysReg<"hvip", 0x645>; def : SysReg<"htinst", 0x64A>; def : SysReg<"hgeip", 0xE12>; +let isRV32Only = 1 in def : SysReg<"hedelegh", 0x612>; //===--===// @@ -240,6 +241,7 @@ def : SysReg<"mbadaddr", 0x343>; def : SysReg<"mip", 0x344>; def : SysReg<"mtinst", 0x34A>; def : SysReg<"mtval2", 0x34B>; +let isRV32Only = 1 in def : SysReg<"medelegh", 0x312>; //===--===// >From 6b074f3d744bdfaf2f4de9fa49484b25f76df3d4 Mon Sep 17 00:00:00 2001 From: dong-miao Date: Sun, 5 Jan 2025 11:30:33 +0800 Subject: [PATCH 05/27] Update rv32-only-csr-names.s --- llvm/test/MC/RISCV/rv32-only-csr-names.s | 4 1 file changed, 4 insertions(+) diff --git a/llvm/test/MC/RISCV/rv32-only-csr-names.s b/llvm/test/MC/RISCV/rv32-only-csr-names.s index db88eacf9396b..1604469210193 100644 --- a/llvm/test/MC/RISCV/rv32-only-csr-names.s +++ b/llvm/test/MC/RISCV/rv32-only-csr-names.s @@ -41,12 +41,16 @@ csrrs t1, henvcfgh, zero # CHECK-NEED-RV32: :[[@LIN
[clang] [llvm] [RISCV] Add Zilsd and Zclsd Extensions (PR #131094)
https://github.com/dong-miao updated https://github.com/llvm/llvm-project/pull/131094 >From bcdf9641037507b855a20a8ba5d26b127dd248e8 Mon Sep 17 00:00:00 2001 From: dong-miao Date: Sat, 4 Jan 2025 17:53:58 +0800 Subject: [PATCH 01/25] Update RISCVSystemOperands.td --- llvm/lib/Target/RISCV/RISCVSystemOperands.td | 2 ++ 1 file changed, 2 insertions(+) diff --git a/llvm/lib/Target/RISCV/RISCVSystemOperands.td b/llvm/lib/Target/RISCV/RISCVSystemOperands.td index 39853cf13a920..41b96e1497e70 100644 --- a/llvm/lib/Target/RISCV/RISCVSystemOperands.td +++ b/llvm/lib/Target/RISCV/RISCVSystemOperands.td @@ -158,6 +158,7 @@ def : SysReg<"hip", 0x644>; def : SysReg<"hvip", 0x645>; def : SysReg<"htinst", 0x64A>; def : SysReg<"hgeip", 0xE12>; +def : SysReg<"hedelegh", 0x612>; //===--===// // Hypervisor Configuration @@ -239,6 +240,7 @@ def : SysReg<"mbadaddr", 0x343>; def : SysReg<"mip", 0x344>; def : SysReg<"mtinst", 0x34A>; def : SysReg<"mtval2", 0x34B>; +def : SysReg<"medelegh", 0x312>; //===--===// // Machine Configuration >From 30e3fbe156581efe49a3c6def9dd444dc546f134 Mon Sep 17 00:00:00 2001 From: dong-miao Date: Sat, 4 Jan 2025 18:02:40 +0800 Subject: [PATCH 02/25] Update rv32-hypervisor-csr-names.s --- llvm/test/MC/RISCV/rv32-hypervisor-csr-names.s | 18 ++ 1 file changed, 18 insertions(+) diff --git a/llvm/test/MC/RISCV/rv32-hypervisor-csr-names.s b/llvm/test/MC/RISCV/rv32-hypervisor-csr-names.s index aadee4fb4f3ad..79d87b3f2471c 100644 --- a/llvm/test/MC/RISCV/rv32-hypervisor-csr-names.s +++ b/llvm/test/MC/RISCV/rv32-hypervisor-csr-names.s @@ -219,3 +219,21 @@ csrrs t2, 0x214, zero csrrs t1, vsiph, zero # uimm12 csrrs t2, 0x254, zero + +## +# Hypervisor Trap Setup +## + +# hedelegh +# name +# CHECK-INST: csrrs t1, hedelegh, zero +# CHECK-ENC: encoding: [0x73,0x23,0x20,0x61] +# CHECK-INST-ALIAS: csrr t1, hedelegh +# uimm12 +# CHECK-INST: csrrs t2, hedelegh, zero +# CHECK-ENC: encoding: [0xf3,0x23,0x20,0x61] +# CHECK-INST-ALIAS: csrr t2, hedelegh +# name +csrrs t1, hedelegh, zero +# uimm12 +csrrs t2, 0x612, zero >From e41e745626caf701b2a21eb2577ead05b922f590 Mon Sep 17 00:00:00 2001 From: dong-miao Date: Sat, 4 Jan 2025 18:05:04 +0800 Subject: [PATCH 03/25] Update rv32-machine-csr-names.s --- llvm/test/MC/RISCV/rv32-machine-csr-names.s | 14 ++ 1 file changed, 14 insertions(+) diff --git a/llvm/test/MC/RISCV/rv32-machine-csr-names.s b/llvm/test/MC/RISCV/rv32-machine-csr-names.s index 3d527e382376e..9e929b7eddeed 100644 --- a/llvm/test/MC/RISCV/rv32-machine-csr-names.s +++ b/llvm/test/MC/RISCV/rv32-machine-csr-names.s @@ -22,6 +22,20 @@ csrrs t1, mstatush, zero # uimm12 csrrs t2, 0x310, zero +# medelegh +# name +# CHECK-INST: csrrs t1, medelegh, zero +# CHECK-ENC: encoding: [0x73,0x23,0x20,0x31] +# CHECK-INST-ALIAS: csrr t1, medelegh +# uimm12 +# CHECK-INST: csrrs t2, medelegh, zero +# CHECK-ENC: encoding: [0xf3,0x23,0x20,0x31] +# CHECK-INST-ALIAS: csrr t2, medelegh +# name +csrrs t1, medelegh, zero +# uimm12 +csrrs t2, 0x312, zero + # # Machine Configuration # >From ea2c1afaa0eede9cf9dfbf68d10fada108b0164b Mon Sep 17 00:00:00 2001 From: dong-miao Date: Sun, 5 Jan 2025 11:12:53 +0800 Subject: [PATCH 04/25] Update RISCVSystemOperands.td --- llvm/lib/Target/RISCV/RISCVSystemOperands.td | 2 ++ 1 file changed, 2 insertions(+) diff --git a/llvm/lib/Target/RISCV/RISCVSystemOperands.td b/llvm/lib/Target/RISCV/RISCVSystemOperands.td index 41b96e1497e70..21f912bbc84d1 100644 --- a/llvm/lib/Target/RISCV/RISCVSystemOperands.td +++ b/llvm/lib/Target/RISCV/RISCVSystemOperands.td @@ -158,6 +158,7 @@ def : SysReg<"hip", 0x644>; def : SysReg<"hvip", 0x645>; def : SysReg<"htinst", 0x64A>; def : SysReg<"hgeip", 0xE12>; +let isRV32Only = 1 in def : SysReg<"hedelegh", 0x612>; //===--===// @@ -240,6 +241,7 @@ def : SysReg<"mbadaddr", 0x343>; def : SysReg<"mip", 0x344>; def : SysReg<"mtinst", 0x34A>; def : SysReg<"mtval2", 0x34B>; +let isRV32Only = 1 in def : SysReg<"medelegh", 0x312>; //===--===// >From 6b074f3d744bdfaf2f4de9fa49484b25f76df3d4 Mon Sep 17 00:00:00 2001 From: dong-miao Date: Sun, 5 Jan 2025 11:30:33 +0800 Subject: [PATCH 05/25] Update rv32-only-csr-names.s --- llvm/test/MC/RISCV/rv32-only-csr-names.s | 4 1 file changed, 4 insertions(+) diff --git a/llvm/test/MC/RISCV/rv32-only-csr-names.s b/llvm/test/MC/RISCV/rv32-only-csr-names.s index db88eacf9396b..1604469210193 100644 --- a/llvm/test/MC/RISCV/rv32-only-csr-names.s +++ b/llvm/test/MC/RISCV/rv32-only-csr-names.s @@ -41,12 +41,16 @@ csrrs t1, henvcfgh, zero # CHECK-NEED-RV32: :[[@LIN
[clang] [llvm] [RISCV] Add Zilsd and Zclsd Extensions (PR #131094)
https://github.com/dong-miao updated https://github.com/llvm/llvm-project/pull/131094 >From bcdf9641037507b855a20a8ba5d26b127dd248e8 Mon Sep 17 00:00:00 2001 From: dong-miao Date: Sat, 4 Jan 2025 17:53:58 +0800 Subject: [PATCH 01/25] Update RISCVSystemOperands.td --- llvm/lib/Target/RISCV/RISCVSystemOperands.td | 2 ++ 1 file changed, 2 insertions(+) diff --git a/llvm/lib/Target/RISCV/RISCVSystemOperands.td b/llvm/lib/Target/RISCV/RISCVSystemOperands.td index 39853cf13a920..41b96e1497e70 100644 --- a/llvm/lib/Target/RISCV/RISCVSystemOperands.td +++ b/llvm/lib/Target/RISCV/RISCVSystemOperands.td @@ -158,6 +158,7 @@ def : SysReg<"hip", 0x644>; def : SysReg<"hvip", 0x645>; def : SysReg<"htinst", 0x64A>; def : SysReg<"hgeip", 0xE12>; +def : SysReg<"hedelegh", 0x612>; //===--===// // Hypervisor Configuration @@ -239,6 +240,7 @@ def : SysReg<"mbadaddr", 0x343>; def : SysReg<"mip", 0x344>; def : SysReg<"mtinst", 0x34A>; def : SysReg<"mtval2", 0x34B>; +def : SysReg<"medelegh", 0x312>; //===--===// // Machine Configuration >From 30e3fbe156581efe49a3c6def9dd444dc546f134 Mon Sep 17 00:00:00 2001 From: dong-miao Date: Sat, 4 Jan 2025 18:02:40 +0800 Subject: [PATCH 02/25] Update rv32-hypervisor-csr-names.s --- llvm/test/MC/RISCV/rv32-hypervisor-csr-names.s | 18 ++ 1 file changed, 18 insertions(+) diff --git a/llvm/test/MC/RISCV/rv32-hypervisor-csr-names.s b/llvm/test/MC/RISCV/rv32-hypervisor-csr-names.s index aadee4fb4f3ad..79d87b3f2471c 100644 --- a/llvm/test/MC/RISCV/rv32-hypervisor-csr-names.s +++ b/llvm/test/MC/RISCV/rv32-hypervisor-csr-names.s @@ -219,3 +219,21 @@ csrrs t2, 0x214, zero csrrs t1, vsiph, zero # uimm12 csrrs t2, 0x254, zero + +## +# Hypervisor Trap Setup +## + +# hedelegh +# name +# CHECK-INST: csrrs t1, hedelegh, zero +# CHECK-ENC: encoding: [0x73,0x23,0x20,0x61] +# CHECK-INST-ALIAS: csrr t1, hedelegh +# uimm12 +# CHECK-INST: csrrs t2, hedelegh, zero +# CHECK-ENC: encoding: [0xf3,0x23,0x20,0x61] +# CHECK-INST-ALIAS: csrr t2, hedelegh +# name +csrrs t1, hedelegh, zero +# uimm12 +csrrs t2, 0x612, zero >From e41e745626caf701b2a21eb2577ead05b922f590 Mon Sep 17 00:00:00 2001 From: dong-miao Date: Sat, 4 Jan 2025 18:05:04 +0800 Subject: [PATCH 03/25] Update rv32-machine-csr-names.s --- llvm/test/MC/RISCV/rv32-machine-csr-names.s | 14 ++ 1 file changed, 14 insertions(+) diff --git a/llvm/test/MC/RISCV/rv32-machine-csr-names.s b/llvm/test/MC/RISCV/rv32-machine-csr-names.s index 3d527e382376e..9e929b7eddeed 100644 --- a/llvm/test/MC/RISCV/rv32-machine-csr-names.s +++ b/llvm/test/MC/RISCV/rv32-machine-csr-names.s @@ -22,6 +22,20 @@ csrrs t1, mstatush, zero # uimm12 csrrs t2, 0x310, zero +# medelegh +# name +# CHECK-INST: csrrs t1, medelegh, zero +# CHECK-ENC: encoding: [0x73,0x23,0x20,0x31] +# CHECK-INST-ALIAS: csrr t1, medelegh +# uimm12 +# CHECK-INST: csrrs t2, medelegh, zero +# CHECK-ENC: encoding: [0xf3,0x23,0x20,0x31] +# CHECK-INST-ALIAS: csrr t2, medelegh +# name +csrrs t1, medelegh, zero +# uimm12 +csrrs t2, 0x312, zero + # # Machine Configuration # >From ea2c1afaa0eede9cf9dfbf68d10fada108b0164b Mon Sep 17 00:00:00 2001 From: dong-miao Date: Sun, 5 Jan 2025 11:12:53 +0800 Subject: [PATCH 04/25] Update RISCVSystemOperands.td --- llvm/lib/Target/RISCV/RISCVSystemOperands.td | 2 ++ 1 file changed, 2 insertions(+) diff --git a/llvm/lib/Target/RISCV/RISCVSystemOperands.td b/llvm/lib/Target/RISCV/RISCVSystemOperands.td index 41b96e1497e70..21f912bbc84d1 100644 --- a/llvm/lib/Target/RISCV/RISCVSystemOperands.td +++ b/llvm/lib/Target/RISCV/RISCVSystemOperands.td @@ -158,6 +158,7 @@ def : SysReg<"hip", 0x644>; def : SysReg<"hvip", 0x645>; def : SysReg<"htinst", 0x64A>; def : SysReg<"hgeip", 0xE12>; +let isRV32Only = 1 in def : SysReg<"hedelegh", 0x612>; //===--===// @@ -240,6 +241,7 @@ def : SysReg<"mbadaddr", 0x343>; def : SysReg<"mip", 0x344>; def : SysReg<"mtinst", 0x34A>; def : SysReg<"mtval2", 0x34B>; +let isRV32Only = 1 in def : SysReg<"medelegh", 0x312>; //===--===// >From 6b074f3d744bdfaf2f4de9fa49484b25f76df3d4 Mon Sep 17 00:00:00 2001 From: dong-miao Date: Sun, 5 Jan 2025 11:30:33 +0800 Subject: [PATCH 05/25] Update rv32-only-csr-names.s --- llvm/test/MC/RISCV/rv32-only-csr-names.s | 4 1 file changed, 4 insertions(+) diff --git a/llvm/test/MC/RISCV/rv32-only-csr-names.s b/llvm/test/MC/RISCV/rv32-only-csr-names.s index db88eacf9396b..1604469210193 100644 --- a/llvm/test/MC/RISCV/rv32-only-csr-names.s +++ b/llvm/test/MC/RISCV/rv32-only-csr-names.s @@ -41,12 +41,16 @@ csrrs t1, henvcfgh, zero # CHECK-NEED-RV32: :[[@LIN
[clang] [llvm] [RISCV] Add Zilsd and Zclsd Extensions (PR #131094)
@@ -0,0 +1,90 @@ +//===-- RISCVInstrInfoZclsd.td -*- tablegen -*-===// +// +// Part of the LLVM Project, under the Apache License v2.0 with LLVM Exceptions. +// See https://llvm.org/LICENSE.txt for license information. +// SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception +// +//===--===// +// This file describes the RISC-V instructions from the standard 'Zclsd', +// Compressed Load/Store pair instructions extension. +//===--===// +// Instruction Class Templates +//===--===// + +def GPRPairNoX0RV32Operand : AsmOperandClass { + let Name = "GPRPairNoX0RV32"; + let ParserMethod = "parseGPRPair"; + let PredicateMethod = "isGPRPairNoX0"; + let RenderMethod = "addRegOperands"; +} + +def GPRPairNoX0RV32 : RegisterOperand { + let ParserMatchClass = GPRPairNoX0RV32Operand; +} + +def GPRPairCRV32Operand : AsmOperandClass { + let Name = "GPRPairCRV32"; + let ParserMethod = "parseGPRPair"; + let PredicateMethod = "isGPRPairC"; + let RenderMethod = "addRegOperands"; +} + +def GPRPairCRV32 : RegisterOperand { + let ParserMatchClass = GPRPairCRV32Operand; +} + +let hasSideEffects = 0, mayLoad = 1, mayStore = 0 in +class PairCStackLoad funct3, string OpcodeStr, + DAGOperand RC, DAGOperand opnd> +: RVInst16CI; + +let hasSideEffects = 0, mayLoad = 0, mayStore = 1 in +class PairCStackStore funct3, string OpcodeStr, + DAGOperand RC, DAGOperand opnd> +: RVInst16CSS; + +let hasSideEffects = 0, mayLoad = 1, mayStore = 0 in +class PairCLoad_ri funct3, string OpcodeStr, + DAGOperand RC, DAGOperand opnd> +: RVInst16CL; + +let hasSideEffects = 0, mayLoad = 0, mayStore = 1 in +class PairCStore_rri funct3, string OpcodeStr, + DAGOperand RC, DAGOperand opnd> +: RVInst16CS; + +//===--===// +// Instructions +//===--===// + +let Predicates = [HasStdExtZclsd, IsRV32], DecoderNamespace = "ZcOverlap" in +def C_LDSP_RV32 : PairCStackLoad<0b011, "c.ldsp", GPRPairNoX0RV32, uimm9_lsb000>, + Sched<[WriteLDD, ReadMemBase]> { topperc wrote: Align `Sched` with `PairCStackLoad` on previous line https://github.com/llvm/llvm-project/pull/131094 ___ cfe-commits mailing list cfe-commits@lists.llvm.org https://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-commits
[clang] [llvm] [RISCV] Add Zilsd and Zclsd Extensions (PR #131094)
https://github.com/dong-miao ready_for_review https://github.com/llvm/llvm-project/pull/131094 ___ cfe-commits mailing list cfe-commits@lists.llvm.org https://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-commits
[clang] [llvm] [RISCV] Add Zilsd and Zclsd Extensions (PR #131094)
https://github.com/dong-miao updated https://github.com/llvm/llvm-project/pull/131094 >From bcdf9641037507b855a20a8ba5d26b127dd248e8 Mon Sep 17 00:00:00 2001 From: dong-miao Date: Sat, 4 Jan 2025 17:53:58 +0800 Subject: [PATCH 01/22] Update RISCVSystemOperands.td --- llvm/lib/Target/RISCV/RISCVSystemOperands.td | 2 ++ 1 file changed, 2 insertions(+) diff --git a/llvm/lib/Target/RISCV/RISCVSystemOperands.td b/llvm/lib/Target/RISCV/RISCVSystemOperands.td index 39853cf13a920..41b96e1497e70 100644 --- a/llvm/lib/Target/RISCV/RISCVSystemOperands.td +++ b/llvm/lib/Target/RISCV/RISCVSystemOperands.td @@ -158,6 +158,7 @@ def : SysReg<"hip", 0x644>; def : SysReg<"hvip", 0x645>; def : SysReg<"htinst", 0x64A>; def : SysReg<"hgeip", 0xE12>; +def : SysReg<"hedelegh", 0x612>; //===--===// // Hypervisor Configuration @@ -239,6 +240,7 @@ def : SysReg<"mbadaddr", 0x343>; def : SysReg<"mip", 0x344>; def : SysReg<"mtinst", 0x34A>; def : SysReg<"mtval2", 0x34B>; +def : SysReg<"medelegh", 0x312>; //===--===// // Machine Configuration >From 30e3fbe156581efe49a3c6def9dd444dc546f134 Mon Sep 17 00:00:00 2001 From: dong-miao Date: Sat, 4 Jan 2025 18:02:40 +0800 Subject: [PATCH 02/22] Update rv32-hypervisor-csr-names.s --- llvm/test/MC/RISCV/rv32-hypervisor-csr-names.s | 18 ++ 1 file changed, 18 insertions(+) diff --git a/llvm/test/MC/RISCV/rv32-hypervisor-csr-names.s b/llvm/test/MC/RISCV/rv32-hypervisor-csr-names.s index aadee4fb4f3ad..79d87b3f2471c 100644 --- a/llvm/test/MC/RISCV/rv32-hypervisor-csr-names.s +++ b/llvm/test/MC/RISCV/rv32-hypervisor-csr-names.s @@ -219,3 +219,21 @@ csrrs t2, 0x214, zero csrrs t1, vsiph, zero # uimm12 csrrs t2, 0x254, zero + +## +# Hypervisor Trap Setup +## + +# hedelegh +# name +# CHECK-INST: csrrs t1, hedelegh, zero +# CHECK-ENC: encoding: [0x73,0x23,0x20,0x61] +# CHECK-INST-ALIAS: csrr t1, hedelegh +# uimm12 +# CHECK-INST: csrrs t2, hedelegh, zero +# CHECK-ENC: encoding: [0xf3,0x23,0x20,0x61] +# CHECK-INST-ALIAS: csrr t2, hedelegh +# name +csrrs t1, hedelegh, zero +# uimm12 +csrrs t2, 0x612, zero >From e41e745626caf701b2a21eb2577ead05b922f590 Mon Sep 17 00:00:00 2001 From: dong-miao Date: Sat, 4 Jan 2025 18:05:04 +0800 Subject: [PATCH 03/22] Update rv32-machine-csr-names.s --- llvm/test/MC/RISCV/rv32-machine-csr-names.s | 14 ++ 1 file changed, 14 insertions(+) diff --git a/llvm/test/MC/RISCV/rv32-machine-csr-names.s b/llvm/test/MC/RISCV/rv32-machine-csr-names.s index 3d527e382376e..9e929b7eddeed 100644 --- a/llvm/test/MC/RISCV/rv32-machine-csr-names.s +++ b/llvm/test/MC/RISCV/rv32-machine-csr-names.s @@ -22,6 +22,20 @@ csrrs t1, mstatush, zero # uimm12 csrrs t2, 0x310, zero +# medelegh +# name +# CHECK-INST: csrrs t1, medelegh, zero +# CHECK-ENC: encoding: [0x73,0x23,0x20,0x31] +# CHECK-INST-ALIAS: csrr t1, medelegh +# uimm12 +# CHECK-INST: csrrs t2, medelegh, zero +# CHECK-ENC: encoding: [0xf3,0x23,0x20,0x31] +# CHECK-INST-ALIAS: csrr t2, medelegh +# name +csrrs t1, medelegh, zero +# uimm12 +csrrs t2, 0x312, zero + # # Machine Configuration # >From ea2c1afaa0eede9cf9dfbf68d10fada108b0164b Mon Sep 17 00:00:00 2001 From: dong-miao Date: Sun, 5 Jan 2025 11:12:53 +0800 Subject: [PATCH 04/22] Update RISCVSystemOperands.td --- llvm/lib/Target/RISCV/RISCVSystemOperands.td | 2 ++ 1 file changed, 2 insertions(+) diff --git a/llvm/lib/Target/RISCV/RISCVSystemOperands.td b/llvm/lib/Target/RISCV/RISCVSystemOperands.td index 41b96e1497e70..21f912bbc84d1 100644 --- a/llvm/lib/Target/RISCV/RISCVSystemOperands.td +++ b/llvm/lib/Target/RISCV/RISCVSystemOperands.td @@ -158,6 +158,7 @@ def : SysReg<"hip", 0x644>; def : SysReg<"hvip", 0x645>; def : SysReg<"htinst", 0x64A>; def : SysReg<"hgeip", 0xE12>; +let isRV32Only = 1 in def : SysReg<"hedelegh", 0x612>; //===--===// @@ -240,6 +241,7 @@ def : SysReg<"mbadaddr", 0x343>; def : SysReg<"mip", 0x344>; def : SysReg<"mtinst", 0x34A>; def : SysReg<"mtval2", 0x34B>; +let isRV32Only = 1 in def : SysReg<"medelegh", 0x312>; //===--===// >From 6b074f3d744bdfaf2f4de9fa49484b25f76df3d4 Mon Sep 17 00:00:00 2001 From: dong-miao Date: Sun, 5 Jan 2025 11:30:33 +0800 Subject: [PATCH 05/22] Update rv32-only-csr-names.s --- llvm/test/MC/RISCV/rv32-only-csr-names.s | 4 1 file changed, 4 insertions(+) diff --git a/llvm/test/MC/RISCV/rv32-only-csr-names.s b/llvm/test/MC/RISCV/rv32-only-csr-names.s index db88eacf9396b..1604469210193 100644 --- a/llvm/test/MC/RISCV/rv32-only-csr-names.s +++ b/llvm/test/MC/RISCV/rv32-only-csr-names.s @@ -41,12 +41,16 @@ csrrs t1, henvcfgh, zero # CHECK-NEED-RV32: :[[@LIN
[clang] [llvm] [RISCV] Add Zilsd and Zclsd Extensions (PR #131094)
dong-miao wrote: > This should fix your failures > > ``` > diff --git a/llvm/lib/Target/RISCV/Disassembler/RISCVDisassembler.cpp > b/llvm/lib/Target/RISCV/Disassembler/RISCVDisassembler.cpp > index 214378d4b554..59ab59703ac7 100644 > --- a/llvm/lib/Target/RISCV/Disassembler/RISCVDisassembler.cpp > +++ b/llvm/lib/Target/RISCV/Disassembler/RISCVDisassembler.cpp > @@ -763,7 +763,7 @@ DecodeStatus RISCVDisassembler::getInstruction16(MCInst > &MI, uint64_t &Size, >TRY_TO_DECODE_AND_ADD_SP(true, DecoderTableRISCV32Only_16, > "RISCV32Only_16 (16-bit Instruction)"); >// Zc* instructions incompatible with Zcf or Zcd. > - TRY_TO_DECODE(true, DecoderTableZcOverlap16, > + TRY_TO_DECODE_AND_ADD_SP(true, DecoderTableZcOverlap16, > "ZcOverlap (16-bit Instructions overlapping with Zcf/Zcd)"); > >return MCDisassembler::Fail; > diff --git a/llvm/test/MC/RISCV/rv64c-valid.s > b/llvm/test/MC/RISCV/rv64c-valid.s > index f8736e5d5453..b0d2bc576be9 100644 > --- a/llvm/test/MC/RISCV/rv64c-valid.s > +++ b/llvm/test/MC/RISCV/rv64c-valid.s > @@ -19,26 +19,26 @@ > > # TODO: more exhaustive testing of immediate encoding. > > -# CHECK-ASM-AND-OBJ: c.ldsp ra, 0(sp) > -# CHECK-ASM: encoding: [0x82,0x60] > +# CHECK-ASM-AND-OBJ: c.ldsp s0, 0(sp) > +# CHECK-ASM: encoding: [0x02,0x64] > # CHECK-NO-EXT: error: instruction requires the following: 'C' (Compressed > Instructions) or 'Zca' (part of the C extension, excluding compressed > floating point loads/stores){{$}} > -# CHECK-NO-RV64: error: instruction requires the following: RV64I Base > Instruction Set{{$}} > -c.ldsp ra, 0(sp) > -# CHECK-ASM-AND-OBJ: c.sdsp ra, 504(sp) > -# CHECK-ASM: encoding: [0x86,0xff] > +# CHECK-NO-RV64: error: instruction requires the following: 'Zclsd' > (Compressed Load/Store pair instructions){{$}} > +c.ldsp s0, 0(sp) > +# CHECK-ASM-AND-OBJ: c.sdsp s2, 504(sp) > +# CHECK-ASM: encoding: [0xca,0xff] > # CHECK-NO-EXT: error: instruction requires the following: 'C' (Compressed > Instructions) or 'Zca' (part of the C extension, excluding compressed > floating point loads/stores){{$}} > -# CHECK-NO-RV64: error: instruction requires the following: RV64I Base > Instruction Set{{$}} > -c.sdsp ra, 504(sp) > +# CHECK-NO-RV64: error: instruction requires the following: 'Zclsd' > (Compressed Load/Store pair instructions){{$}} > +c.sdsp s2, 504(sp) > # CHECK-ASM-AND-OBJ: c.ld a4, 0(a3) > # CHECK-ASM: encoding: [0x98,0x62] > # CHECK-NO-EXT: error: instruction requires the following: 'C' (Compressed > Instructions) or 'Zca' (part of the C extension, excluding compressed > floating point loads/stores){{$}} > -# CHECK-NO-RV64: error: instruction requires the following: RV64I Base > Instruction Set{{$}} > +# CHECK-NO-RV64: error: instruction requires the following: 'Zclsd' > (Compressed Load/Store pair instructions){{$}} > c.ld a4, 0(a3) > -# CHECK-ASM-AND-OBJ: c.sd a5, 248(a3) > -# CHECK-ASM: encoding: [0xfc,0xfe] > +# CHECK-ASM-AND-OBJ: c.sd a2, 248(a3) > +# CHECK-ASM: encoding: [0xf0,0xfe] > # CHECK-NO-EXT: error: instruction requires the following: 'C' (Compressed > Instructions) or 'Zca' (part of the C extension, excluding compressed > floating point loads/stores){{$}} > -# CHECK-NO-RV64: error: instruction requires the following: RV64I Base > Instruction Set{{$}} > -c.sd a5, 248(a3) > +# CHECK-NO-RV64: error: instruction requires the following: 'Zclsd' > (Compressed Load/Store pair instructions){{$}} > +c.sd a2, 248(a3) > > # CHECK-ASM-AND-OBJ: c.subw a3, a4 > # CHECK-ASM: encoding: [0x99,0x9e] > ``` Thanks for your help. I have successfully solved the problem. https://github.com/llvm/llvm-project/pull/131094 ___ cfe-commits mailing list cfe-commits@lists.llvm.org https://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-commits
[clang] [llvm] [RISCV] Add Zilsd and Zclsd Extensions (PR #131094)
dong-miao wrote: > commented Thanks for your help. I have successfully solved the problem. https://github.com/llvm/llvm-project/pull/131094 ___ cfe-commits mailing list cfe-commits@lists.llvm.org https://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-commits
[clang] [llvm] [RISCV] Add Zilsd and Zclsd Extensions (PR #131094)
https://github.com/dong-miao updated https://github.com/llvm/llvm-project/pull/131094 >From bcdf9641037507b855a20a8ba5d26b127dd248e8 Mon Sep 17 00:00:00 2001 From: dong-miao Date: Sat, 4 Jan 2025 17:53:58 +0800 Subject: [PATCH 01/25] Update RISCVSystemOperands.td --- llvm/lib/Target/RISCV/RISCVSystemOperands.td | 2 ++ 1 file changed, 2 insertions(+) diff --git a/llvm/lib/Target/RISCV/RISCVSystemOperands.td b/llvm/lib/Target/RISCV/RISCVSystemOperands.td index 39853cf13a920..41b96e1497e70 100644 --- a/llvm/lib/Target/RISCV/RISCVSystemOperands.td +++ b/llvm/lib/Target/RISCV/RISCVSystemOperands.td @@ -158,6 +158,7 @@ def : SysReg<"hip", 0x644>; def : SysReg<"hvip", 0x645>; def : SysReg<"htinst", 0x64A>; def : SysReg<"hgeip", 0xE12>; +def : SysReg<"hedelegh", 0x612>; //===--===// // Hypervisor Configuration @@ -239,6 +240,7 @@ def : SysReg<"mbadaddr", 0x343>; def : SysReg<"mip", 0x344>; def : SysReg<"mtinst", 0x34A>; def : SysReg<"mtval2", 0x34B>; +def : SysReg<"medelegh", 0x312>; //===--===// // Machine Configuration >From 30e3fbe156581efe49a3c6def9dd444dc546f134 Mon Sep 17 00:00:00 2001 From: dong-miao Date: Sat, 4 Jan 2025 18:02:40 +0800 Subject: [PATCH 02/25] Update rv32-hypervisor-csr-names.s --- llvm/test/MC/RISCV/rv32-hypervisor-csr-names.s | 18 ++ 1 file changed, 18 insertions(+) diff --git a/llvm/test/MC/RISCV/rv32-hypervisor-csr-names.s b/llvm/test/MC/RISCV/rv32-hypervisor-csr-names.s index aadee4fb4f3ad..79d87b3f2471c 100644 --- a/llvm/test/MC/RISCV/rv32-hypervisor-csr-names.s +++ b/llvm/test/MC/RISCV/rv32-hypervisor-csr-names.s @@ -219,3 +219,21 @@ csrrs t2, 0x214, zero csrrs t1, vsiph, zero # uimm12 csrrs t2, 0x254, zero + +## +# Hypervisor Trap Setup +## + +# hedelegh +# name +# CHECK-INST: csrrs t1, hedelegh, zero +# CHECK-ENC: encoding: [0x73,0x23,0x20,0x61] +# CHECK-INST-ALIAS: csrr t1, hedelegh +# uimm12 +# CHECK-INST: csrrs t2, hedelegh, zero +# CHECK-ENC: encoding: [0xf3,0x23,0x20,0x61] +# CHECK-INST-ALIAS: csrr t2, hedelegh +# name +csrrs t1, hedelegh, zero +# uimm12 +csrrs t2, 0x612, zero >From e41e745626caf701b2a21eb2577ead05b922f590 Mon Sep 17 00:00:00 2001 From: dong-miao Date: Sat, 4 Jan 2025 18:05:04 +0800 Subject: [PATCH 03/25] Update rv32-machine-csr-names.s --- llvm/test/MC/RISCV/rv32-machine-csr-names.s | 14 ++ 1 file changed, 14 insertions(+) diff --git a/llvm/test/MC/RISCV/rv32-machine-csr-names.s b/llvm/test/MC/RISCV/rv32-machine-csr-names.s index 3d527e382376e..9e929b7eddeed 100644 --- a/llvm/test/MC/RISCV/rv32-machine-csr-names.s +++ b/llvm/test/MC/RISCV/rv32-machine-csr-names.s @@ -22,6 +22,20 @@ csrrs t1, mstatush, zero # uimm12 csrrs t2, 0x310, zero +# medelegh +# name +# CHECK-INST: csrrs t1, medelegh, zero +# CHECK-ENC: encoding: [0x73,0x23,0x20,0x31] +# CHECK-INST-ALIAS: csrr t1, medelegh +# uimm12 +# CHECK-INST: csrrs t2, medelegh, zero +# CHECK-ENC: encoding: [0xf3,0x23,0x20,0x31] +# CHECK-INST-ALIAS: csrr t2, medelegh +# name +csrrs t1, medelegh, zero +# uimm12 +csrrs t2, 0x312, zero + # # Machine Configuration # >From ea2c1afaa0eede9cf9dfbf68d10fada108b0164b Mon Sep 17 00:00:00 2001 From: dong-miao Date: Sun, 5 Jan 2025 11:12:53 +0800 Subject: [PATCH 04/25] Update RISCVSystemOperands.td --- llvm/lib/Target/RISCV/RISCVSystemOperands.td | 2 ++ 1 file changed, 2 insertions(+) diff --git a/llvm/lib/Target/RISCV/RISCVSystemOperands.td b/llvm/lib/Target/RISCV/RISCVSystemOperands.td index 41b96e1497e70..21f912bbc84d1 100644 --- a/llvm/lib/Target/RISCV/RISCVSystemOperands.td +++ b/llvm/lib/Target/RISCV/RISCVSystemOperands.td @@ -158,6 +158,7 @@ def : SysReg<"hip", 0x644>; def : SysReg<"hvip", 0x645>; def : SysReg<"htinst", 0x64A>; def : SysReg<"hgeip", 0xE12>; +let isRV32Only = 1 in def : SysReg<"hedelegh", 0x612>; //===--===// @@ -240,6 +241,7 @@ def : SysReg<"mbadaddr", 0x343>; def : SysReg<"mip", 0x344>; def : SysReg<"mtinst", 0x34A>; def : SysReg<"mtval2", 0x34B>; +let isRV32Only = 1 in def : SysReg<"medelegh", 0x312>; //===--===// >From 6b074f3d744bdfaf2f4de9fa49484b25f76df3d4 Mon Sep 17 00:00:00 2001 From: dong-miao Date: Sun, 5 Jan 2025 11:30:33 +0800 Subject: [PATCH 05/25] Update rv32-only-csr-names.s --- llvm/test/MC/RISCV/rv32-only-csr-names.s | 4 1 file changed, 4 insertions(+) diff --git a/llvm/test/MC/RISCV/rv32-only-csr-names.s b/llvm/test/MC/RISCV/rv32-only-csr-names.s index db88eacf9396b..1604469210193 100644 --- a/llvm/test/MC/RISCV/rv32-only-csr-names.s +++ b/llvm/test/MC/RISCV/rv32-only-csr-names.s @@ -41,12 +41,16 @@ csrrs t1, henvcfgh, zero # CHECK-NEED-RV32: :[[@LIN
[clang] [llvm] [RISCV] Add Zilsd and Zclsd Extensions (PR #131094)
https://github.com/dong-miao updated https://github.com/llvm/llvm-project/pull/131094 >From bcdf9641037507b855a20a8ba5d26b127dd248e8 Mon Sep 17 00:00:00 2001 From: dong-miao Date: Sat, 4 Jan 2025 17:53:58 +0800 Subject: [PATCH 01/24] Update RISCVSystemOperands.td --- llvm/lib/Target/RISCV/RISCVSystemOperands.td | 2 ++ 1 file changed, 2 insertions(+) diff --git a/llvm/lib/Target/RISCV/RISCVSystemOperands.td b/llvm/lib/Target/RISCV/RISCVSystemOperands.td index 39853cf13a920..41b96e1497e70 100644 --- a/llvm/lib/Target/RISCV/RISCVSystemOperands.td +++ b/llvm/lib/Target/RISCV/RISCVSystemOperands.td @@ -158,6 +158,7 @@ def : SysReg<"hip", 0x644>; def : SysReg<"hvip", 0x645>; def : SysReg<"htinst", 0x64A>; def : SysReg<"hgeip", 0xE12>; +def : SysReg<"hedelegh", 0x612>; //===--===// // Hypervisor Configuration @@ -239,6 +240,7 @@ def : SysReg<"mbadaddr", 0x343>; def : SysReg<"mip", 0x344>; def : SysReg<"mtinst", 0x34A>; def : SysReg<"mtval2", 0x34B>; +def : SysReg<"medelegh", 0x312>; //===--===// // Machine Configuration >From 30e3fbe156581efe49a3c6def9dd444dc546f134 Mon Sep 17 00:00:00 2001 From: dong-miao Date: Sat, 4 Jan 2025 18:02:40 +0800 Subject: [PATCH 02/24] Update rv32-hypervisor-csr-names.s --- llvm/test/MC/RISCV/rv32-hypervisor-csr-names.s | 18 ++ 1 file changed, 18 insertions(+) diff --git a/llvm/test/MC/RISCV/rv32-hypervisor-csr-names.s b/llvm/test/MC/RISCV/rv32-hypervisor-csr-names.s index aadee4fb4f3ad..79d87b3f2471c 100644 --- a/llvm/test/MC/RISCV/rv32-hypervisor-csr-names.s +++ b/llvm/test/MC/RISCV/rv32-hypervisor-csr-names.s @@ -219,3 +219,21 @@ csrrs t2, 0x214, zero csrrs t1, vsiph, zero # uimm12 csrrs t2, 0x254, zero + +## +# Hypervisor Trap Setup +## + +# hedelegh +# name +# CHECK-INST: csrrs t1, hedelegh, zero +# CHECK-ENC: encoding: [0x73,0x23,0x20,0x61] +# CHECK-INST-ALIAS: csrr t1, hedelegh +# uimm12 +# CHECK-INST: csrrs t2, hedelegh, zero +# CHECK-ENC: encoding: [0xf3,0x23,0x20,0x61] +# CHECK-INST-ALIAS: csrr t2, hedelegh +# name +csrrs t1, hedelegh, zero +# uimm12 +csrrs t2, 0x612, zero >From e41e745626caf701b2a21eb2577ead05b922f590 Mon Sep 17 00:00:00 2001 From: dong-miao Date: Sat, 4 Jan 2025 18:05:04 +0800 Subject: [PATCH 03/24] Update rv32-machine-csr-names.s --- llvm/test/MC/RISCV/rv32-machine-csr-names.s | 14 ++ 1 file changed, 14 insertions(+) diff --git a/llvm/test/MC/RISCV/rv32-machine-csr-names.s b/llvm/test/MC/RISCV/rv32-machine-csr-names.s index 3d527e382376e..9e929b7eddeed 100644 --- a/llvm/test/MC/RISCV/rv32-machine-csr-names.s +++ b/llvm/test/MC/RISCV/rv32-machine-csr-names.s @@ -22,6 +22,20 @@ csrrs t1, mstatush, zero # uimm12 csrrs t2, 0x310, zero +# medelegh +# name +# CHECK-INST: csrrs t1, medelegh, zero +# CHECK-ENC: encoding: [0x73,0x23,0x20,0x31] +# CHECK-INST-ALIAS: csrr t1, medelegh +# uimm12 +# CHECK-INST: csrrs t2, medelegh, zero +# CHECK-ENC: encoding: [0xf3,0x23,0x20,0x31] +# CHECK-INST-ALIAS: csrr t2, medelegh +# name +csrrs t1, medelegh, zero +# uimm12 +csrrs t2, 0x312, zero + # # Machine Configuration # >From ea2c1afaa0eede9cf9dfbf68d10fada108b0164b Mon Sep 17 00:00:00 2001 From: dong-miao Date: Sun, 5 Jan 2025 11:12:53 +0800 Subject: [PATCH 04/24] Update RISCVSystemOperands.td --- llvm/lib/Target/RISCV/RISCVSystemOperands.td | 2 ++ 1 file changed, 2 insertions(+) diff --git a/llvm/lib/Target/RISCV/RISCVSystemOperands.td b/llvm/lib/Target/RISCV/RISCVSystemOperands.td index 41b96e1497e70..21f912bbc84d1 100644 --- a/llvm/lib/Target/RISCV/RISCVSystemOperands.td +++ b/llvm/lib/Target/RISCV/RISCVSystemOperands.td @@ -158,6 +158,7 @@ def : SysReg<"hip", 0x644>; def : SysReg<"hvip", 0x645>; def : SysReg<"htinst", 0x64A>; def : SysReg<"hgeip", 0xE12>; +let isRV32Only = 1 in def : SysReg<"hedelegh", 0x612>; //===--===// @@ -240,6 +241,7 @@ def : SysReg<"mbadaddr", 0x343>; def : SysReg<"mip", 0x344>; def : SysReg<"mtinst", 0x34A>; def : SysReg<"mtval2", 0x34B>; +let isRV32Only = 1 in def : SysReg<"medelegh", 0x312>; //===--===// >From 6b074f3d744bdfaf2f4de9fa49484b25f76df3d4 Mon Sep 17 00:00:00 2001 From: dong-miao Date: Sun, 5 Jan 2025 11:30:33 +0800 Subject: [PATCH 05/24] Update rv32-only-csr-names.s --- llvm/test/MC/RISCV/rv32-only-csr-names.s | 4 1 file changed, 4 insertions(+) diff --git a/llvm/test/MC/RISCV/rv32-only-csr-names.s b/llvm/test/MC/RISCV/rv32-only-csr-names.s index db88eacf9396b..1604469210193 100644 --- a/llvm/test/MC/RISCV/rv32-only-csr-names.s +++ b/llvm/test/MC/RISCV/rv32-only-csr-names.s @@ -41,12 +41,16 @@ csrrs t1, henvcfgh, zero # CHECK-NEED-RV32: :[[@LIN
[clang] [llvm] [RISCV] Add Zilsd and Zclsd Extensions (PR #131094)
https://github.com/dong-miao updated https://github.com/llvm/llvm-project/pull/131094 >From bcdf9641037507b855a20a8ba5d26b127dd248e8 Mon Sep 17 00:00:00 2001 From: dong-miao Date: Sat, 4 Jan 2025 17:53:58 +0800 Subject: [PATCH 01/23] Update RISCVSystemOperands.td --- llvm/lib/Target/RISCV/RISCVSystemOperands.td | 2 ++ 1 file changed, 2 insertions(+) diff --git a/llvm/lib/Target/RISCV/RISCVSystemOperands.td b/llvm/lib/Target/RISCV/RISCVSystemOperands.td index 39853cf13a920..41b96e1497e70 100644 --- a/llvm/lib/Target/RISCV/RISCVSystemOperands.td +++ b/llvm/lib/Target/RISCV/RISCVSystemOperands.td @@ -158,6 +158,7 @@ def : SysReg<"hip", 0x644>; def : SysReg<"hvip", 0x645>; def : SysReg<"htinst", 0x64A>; def : SysReg<"hgeip", 0xE12>; +def : SysReg<"hedelegh", 0x612>; //===--===// // Hypervisor Configuration @@ -239,6 +240,7 @@ def : SysReg<"mbadaddr", 0x343>; def : SysReg<"mip", 0x344>; def : SysReg<"mtinst", 0x34A>; def : SysReg<"mtval2", 0x34B>; +def : SysReg<"medelegh", 0x312>; //===--===// // Machine Configuration >From 30e3fbe156581efe49a3c6def9dd444dc546f134 Mon Sep 17 00:00:00 2001 From: dong-miao Date: Sat, 4 Jan 2025 18:02:40 +0800 Subject: [PATCH 02/23] Update rv32-hypervisor-csr-names.s --- llvm/test/MC/RISCV/rv32-hypervisor-csr-names.s | 18 ++ 1 file changed, 18 insertions(+) diff --git a/llvm/test/MC/RISCV/rv32-hypervisor-csr-names.s b/llvm/test/MC/RISCV/rv32-hypervisor-csr-names.s index aadee4fb4f3ad..79d87b3f2471c 100644 --- a/llvm/test/MC/RISCV/rv32-hypervisor-csr-names.s +++ b/llvm/test/MC/RISCV/rv32-hypervisor-csr-names.s @@ -219,3 +219,21 @@ csrrs t2, 0x214, zero csrrs t1, vsiph, zero # uimm12 csrrs t2, 0x254, zero + +## +# Hypervisor Trap Setup +## + +# hedelegh +# name +# CHECK-INST: csrrs t1, hedelegh, zero +# CHECK-ENC: encoding: [0x73,0x23,0x20,0x61] +# CHECK-INST-ALIAS: csrr t1, hedelegh +# uimm12 +# CHECK-INST: csrrs t2, hedelegh, zero +# CHECK-ENC: encoding: [0xf3,0x23,0x20,0x61] +# CHECK-INST-ALIAS: csrr t2, hedelegh +# name +csrrs t1, hedelegh, zero +# uimm12 +csrrs t2, 0x612, zero >From e41e745626caf701b2a21eb2577ead05b922f590 Mon Sep 17 00:00:00 2001 From: dong-miao Date: Sat, 4 Jan 2025 18:05:04 +0800 Subject: [PATCH 03/23] Update rv32-machine-csr-names.s --- llvm/test/MC/RISCV/rv32-machine-csr-names.s | 14 ++ 1 file changed, 14 insertions(+) diff --git a/llvm/test/MC/RISCV/rv32-machine-csr-names.s b/llvm/test/MC/RISCV/rv32-machine-csr-names.s index 3d527e382376e..9e929b7eddeed 100644 --- a/llvm/test/MC/RISCV/rv32-machine-csr-names.s +++ b/llvm/test/MC/RISCV/rv32-machine-csr-names.s @@ -22,6 +22,20 @@ csrrs t1, mstatush, zero # uimm12 csrrs t2, 0x310, zero +# medelegh +# name +# CHECK-INST: csrrs t1, medelegh, zero +# CHECK-ENC: encoding: [0x73,0x23,0x20,0x31] +# CHECK-INST-ALIAS: csrr t1, medelegh +# uimm12 +# CHECK-INST: csrrs t2, medelegh, zero +# CHECK-ENC: encoding: [0xf3,0x23,0x20,0x31] +# CHECK-INST-ALIAS: csrr t2, medelegh +# name +csrrs t1, medelegh, zero +# uimm12 +csrrs t2, 0x312, zero + # # Machine Configuration # >From ea2c1afaa0eede9cf9dfbf68d10fada108b0164b Mon Sep 17 00:00:00 2001 From: dong-miao Date: Sun, 5 Jan 2025 11:12:53 +0800 Subject: [PATCH 04/23] Update RISCVSystemOperands.td --- llvm/lib/Target/RISCV/RISCVSystemOperands.td | 2 ++ 1 file changed, 2 insertions(+) diff --git a/llvm/lib/Target/RISCV/RISCVSystemOperands.td b/llvm/lib/Target/RISCV/RISCVSystemOperands.td index 41b96e1497e70..21f912bbc84d1 100644 --- a/llvm/lib/Target/RISCV/RISCVSystemOperands.td +++ b/llvm/lib/Target/RISCV/RISCVSystemOperands.td @@ -158,6 +158,7 @@ def : SysReg<"hip", 0x644>; def : SysReg<"hvip", 0x645>; def : SysReg<"htinst", 0x64A>; def : SysReg<"hgeip", 0xE12>; +let isRV32Only = 1 in def : SysReg<"hedelegh", 0x612>; //===--===// @@ -240,6 +241,7 @@ def : SysReg<"mbadaddr", 0x343>; def : SysReg<"mip", 0x344>; def : SysReg<"mtinst", 0x34A>; def : SysReg<"mtval2", 0x34B>; +let isRV32Only = 1 in def : SysReg<"medelegh", 0x312>; //===--===// >From 6b074f3d744bdfaf2f4de9fa49484b25f76df3d4 Mon Sep 17 00:00:00 2001 From: dong-miao Date: Sun, 5 Jan 2025 11:30:33 +0800 Subject: [PATCH 05/23] Update rv32-only-csr-names.s --- llvm/test/MC/RISCV/rv32-only-csr-names.s | 4 1 file changed, 4 insertions(+) diff --git a/llvm/test/MC/RISCV/rv32-only-csr-names.s b/llvm/test/MC/RISCV/rv32-only-csr-names.s index db88eacf9396b..1604469210193 100644 --- a/llvm/test/MC/RISCV/rv32-only-csr-names.s +++ b/llvm/test/MC/RISCV/rv32-only-csr-names.s @@ -41,12 +41,16 @@ csrrs t1, henvcfgh, zero # CHECK-NEED-RV32: :[[@LIN
[clang] [llvm] [RISCV] Add Zilsd and Zclsd Extensions (PR #131094)
topperc wrote: This should fix your failures ``` diff --git a/llvm/lib/Target/RISCV/Disassembler/RISCVDisassembler.cpp b/llvm/lib/Target/RISCV/Disassembler/RISCVDisassembler.cpp index 214378d4b554..59ab59703ac7 100644 --- a/llvm/lib/Target/RISCV/Disassembler/RISCVDisassembler.cpp +++ b/llvm/lib/Target/RISCV/Disassembler/RISCVDisassembler.cpp @@ -763,7 +763,7 @@ DecodeStatus RISCVDisassembler::getInstruction16(MCInst &MI, uint64_t &Size, TRY_TO_DECODE_AND_ADD_SP(true, DecoderTableRISCV32Only_16, "RISCV32Only_16 (16-bit Instruction)"); // Zc* instructions incompatible with Zcf or Zcd. - TRY_TO_DECODE(true, DecoderTableZcOverlap16, + TRY_TO_DECODE_AND_ADD_SP(true, DecoderTableZcOverlap16, "ZcOverlap (16-bit Instructions overlapping with Zcf/Zcd)"); return MCDisassembler::Fail; diff --git a/llvm/test/MC/RISCV/rv64c-valid.s b/llvm/test/MC/RISCV/rv64c-valid.s index f8736e5d5453..b0d2bc576be9 100644 --- a/llvm/test/MC/RISCV/rv64c-valid.s +++ b/llvm/test/MC/RISCV/rv64c-valid.s @@ -19,26 +19,26 @@ # TODO: more exhaustive testing of immediate encoding. -# CHECK-ASM-AND-OBJ: c.ldsp ra, 0(sp) -# CHECK-ASM: encoding: [0x82,0x60] +# CHECK-ASM-AND-OBJ: c.ldsp s0, 0(sp) +# CHECK-ASM: encoding: [0x02,0x64] # CHECK-NO-EXT: error: instruction requires the following: 'C' (Compressed Instructions) or 'Zca' (part of the C extension, excluding compressed floating point loads/stores){{$}} -# CHECK-NO-RV64: error: instruction requires the following: RV64I Base Instruction Set{{$}} -c.ldsp ra, 0(sp) -# CHECK-ASM-AND-OBJ: c.sdsp ra, 504(sp) -# CHECK-ASM: encoding: [0x86,0xff] +# CHECK-NO-RV64: error: instruction requires the following: 'Zclsd' (Compressed Load/Store pair instructions){{$}} +c.ldsp s0, 0(sp) +# CHECK-ASM-AND-OBJ: c.sdsp s2, 504(sp) +# CHECK-ASM: encoding: [0xca,0xff] # CHECK-NO-EXT: error: instruction requires the following: 'C' (Compressed Instructions) or 'Zca' (part of the C extension, excluding compressed floating point loads/stores){{$}} -# CHECK-NO-RV64: error: instruction requires the following: RV64I Base Instruction Set{{$}} -c.sdsp ra, 504(sp) +# CHECK-NO-RV64: error: instruction requires the following: 'Zclsd' (Compressed Load/Store pair instructions){{$}} +c.sdsp s2, 504(sp) # CHECK-ASM-AND-OBJ: c.ld a4, 0(a3) # CHECK-ASM: encoding: [0x98,0x62] # CHECK-NO-EXT: error: instruction requires the following: 'C' (Compressed Instructions) or 'Zca' (part of the C extension, excluding compressed floating point loads/stores){{$}} -# CHECK-NO-RV64: error: instruction requires the following: RV64I Base Instruction Set{{$}} +# CHECK-NO-RV64: error: instruction requires the following: 'Zclsd' (Compressed Load/Store pair instructions){{$}} c.ld a4, 0(a3) -# CHECK-ASM-AND-OBJ: c.sd a5, 248(a3) -# CHECK-ASM: encoding: [0xfc,0xfe] +# CHECK-ASM-AND-OBJ: c.sd a2, 248(a3) +# CHECK-ASM: encoding: [0xf0,0xfe] # CHECK-NO-EXT: error: instruction requires the following: 'C' (Compressed Instructions) or 'Zca' (part of the C extension, excluding compressed floating point loads/stores){{$}} -# CHECK-NO-RV64: error: instruction requires the following: RV64I Base Instruction Set{{$}} -c.sd a5, 248(a3) +# CHECK-NO-RV64: error: instruction requires the following: 'Zclsd' (Compressed Load/Store pair instructions){{$}} +c.sd a2, 248(a3) # CHECK-ASM-AND-OBJ: c.subw a3, a4 # CHECK-ASM: encoding: [0x99,0x9e] ``` https://github.com/llvm/llvm-project/pull/131094 ___ cfe-commits mailing list cfe-commits@lists.llvm.org https://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-commits
[clang] [llvm] [RISCV] Add Zilsd and Zclsd Extensions (PR #131094)
https://github.com/dong-miao updated https://github.com/llvm/llvm-project/pull/131094 >From bcdf9641037507b855a20a8ba5d26b127dd248e8 Mon Sep 17 00:00:00 2001 From: dong-miao Date: Sat, 4 Jan 2025 17:53:58 +0800 Subject: [PATCH 01/24] Update RISCVSystemOperands.td --- llvm/lib/Target/RISCV/RISCVSystemOperands.td | 2 ++ 1 file changed, 2 insertions(+) diff --git a/llvm/lib/Target/RISCV/RISCVSystemOperands.td b/llvm/lib/Target/RISCV/RISCVSystemOperands.td index 39853cf13a920..41b96e1497e70 100644 --- a/llvm/lib/Target/RISCV/RISCVSystemOperands.td +++ b/llvm/lib/Target/RISCV/RISCVSystemOperands.td @@ -158,6 +158,7 @@ def : SysReg<"hip", 0x644>; def : SysReg<"hvip", 0x645>; def : SysReg<"htinst", 0x64A>; def : SysReg<"hgeip", 0xE12>; +def : SysReg<"hedelegh", 0x612>; //===--===// // Hypervisor Configuration @@ -239,6 +240,7 @@ def : SysReg<"mbadaddr", 0x343>; def : SysReg<"mip", 0x344>; def : SysReg<"mtinst", 0x34A>; def : SysReg<"mtval2", 0x34B>; +def : SysReg<"medelegh", 0x312>; //===--===// // Machine Configuration >From 30e3fbe156581efe49a3c6def9dd444dc546f134 Mon Sep 17 00:00:00 2001 From: dong-miao Date: Sat, 4 Jan 2025 18:02:40 +0800 Subject: [PATCH 02/24] Update rv32-hypervisor-csr-names.s --- llvm/test/MC/RISCV/rv32-hypervisor-csr-names.s | 18 ++ 1 file changed, 18 insertions(+) diff --git a/llvm/test/MC/RISCV/rv32-hypervisor-csr-names.s b/llvm/test/MC/RISCV/rv32-hypervisor-csr-names.s index aadee4fb4f3ad..79d87b3f2471c 100644 --- a/llvm/test/MC/RISCV/rv32-hypervisor-csr-names.s +++ b/llvm/test/MC/RISCV/rv32-hypervisor-csr-names.s @@ -219,3 +219,21 @@ csrrs t2, 0x214, zero csrrs t1, vsiph, zero # uimm12 csrrs t2, 0x254, zero + +## +# Hypervisor Trap Setup +## + +# hedelegh +# name +# CHECK-INST: csrrs t1, hedelegh, zero +# CHECK-ENC: encoding: [0x73,0x23,0x20,0x61] +# CHECK-INST-ALIAS: csrr t1, hedelegh +# uimm12 +# CHECK-INST: csrrs t2, hedelegh, zero +# CHECK-ENC: encoding: [0xf3,0x23,0x20,0x61] +# CHECK-INST-ALIAS: csrr t2, hedelegh +# name +csrrs t1, hedelegh, zero +# uimm12 +csrrs t2, 0x612, zero >From e41e745626caf701b2a21eb2577ead05b922f590 Mon Sep 17 00:00:00 2001 From: dong-miao Date: Sat, 4 Jan 2025 18:05:04 +0800 Subject: [PATCH 03/24] Update rv32-machine-csr-names.s --- llvm/test/MC/RISCV/rv32-machine-csr-names.s | 14 ++ 1 file changed, 14 insertions(+) diff --git a/llvm/test/MC/RISCV/rv32-machine-csr-names.s b/llvm/test/MC/RISCV/rv32-machine-csr-names.s index 3d527e382376e..9e929b7eddeed 100644 --- a/llvm/test/MC/RISCV/rv32-machine-csr-names.s +++ b/llvm/test/MC/RISCV/rv32-machine-csr-names.s @@ -22,6 +22,20 @@ csrrs t1, mstatush, zero # uimm12 csrrs t2, 0x310, zero +# medelegh +# name +# CHECK-INST: csrrs t1, medelegh, zero +# CHECK-ENC: encoding: [0x73,0x23,0x20,0x31] +# CHECK-INST-ALIAS: csrr t1, medelegh +# uimm12 +# CHECK-INST: csrrs t2, medelegh, zero +# CHECK-ENC: encoding: [0xf3,0x23,0x20,0x31] +# CHECK-INST-ALIAS: csrr t2, medelegh +# name +csrrs t1, medelegh, zero +# uimm12 +csrrs t2, 0x312, zero + # # Machine Configuration # >From ea2c1afaa0eede9cf9dfbf68d10fada108b0164b Mon Sep 17 00:00:00 2001 From: dong-miao Date: Sun, 5 Jan 2025 11:12:53 +0800 Subject: [PATCH 04/24] Update RISCVSystemOperands.td --- llvm/lib/Target/RISCV/RISCVSystemOperands.td | 2 ++ 1 file changed, 2 insertions(+) diff --git a/llvm/lib/Target/RISCV/RISCVSystemOperands.td b/llvm/lib/Target/RISCV/RISCVSystemOperands.td index 41b96e1497e70..21f912bbc84d1 100644 --- a/llvm/lib/Target/RISCV/RISCVSystemOperands.td +++ b/llvm/lib/Target/RISCV/RISCVSystemOperands.td @@ -158,6 +158,7 @@ def : SysReg<"hip", 0x644>; def : SysReg<"hvip", 0x645>; def : SysReg<"htinst", 0x64A>; def : SysReg<"hgeip", 0xE12>; +let isRV32Only = 1 in def : SysReg<"hedelegh", 0x612>; //===--===// @@ -240,6 +241,7 @@ def : SysReg<"mbadaddr", 0x343>; def : SysReg<"mip", 0x344>; def : SysReg<"mtinst", 0x34A>; def : SysReg<"mtval2", 0x34B>; +let isRV32Only = 1 in def : SysReg<"medelegh", 0x312>; //===--===// >From 6b074f3d744bdfaf2f4de9fa49484b25f76df3d4 Mon Sep 17 00:00:00 2001 From: dong-miao Date: Sun, 5 Jan 2025 11:30:33 +0800 Subject: [PATCH 05/24] Update rv32-only-csr-names.s --- llvm/test/MC/RISCV/rv32-only-csr-names.s | 4 1 file changed, 4 insertions(+) diff --git a/llvm/test/MC/RISCV/rv32-only-csr-names.s b/llvm/test/MC/RISCV/rv32-only-csr-names.s index db88eacf9396b..1604469210193 100644 --- a/llvm/test/MC/RISCV/rv32-only-csr-names.s +++ b/llvm/test/MC/RISCV/rv32-only-csr-names.s @@ -41,12 +41,16 @@ csrrs t1, henvcfgh, zero # CHECK-NEED-RV32: :[[@LIN
[clang] [llvm] [RISCV] Add Zilsd and Zclsd Extensions (PR #131094)
https://github.com/dong-miao updated https://github.com/llvm/llvm-project/pull/131094 >From bcdf9641037507b855a20a8ba5d26b127dd248e8 Mon Sep 17 00:00:00 2001 From: dong-miao Date: Sat, 4 Jan 2025 17:53:58 +0800 Subject: [PATCH 01/23] Update RISCVSystemOperands.td --- llvm/lib/Target/RISCV/RISCVSystemOperands.td | 2 ++ 1 file changed, 2 insertions(+) diff --git a/llvm/lib/Target/RISCV/RISCVSystemOperands.td b/llvm/lib/Target/RISCV/RISCVSystemOperands.td index 39853cf13a920..41b96e1497e70 100644 --- a/llvm/lib/Target/RISCV/RISCVSystemOperands.td +++ b/llvm/lib/Target/RISCV/RISCVSystemOperands.td @@ -158,6 +158,7 @@ def : SysReg<"hip", 0x644>; def : SysReg<"hvip", 0x645>; def : SysReg<"htinst", 0x64A>; def : SysReg<"hgeip", 0xE12>; +def : SysReg<"hedelegh", 0x612>; //===--===// // Hypervisor Configuration @@ -239,6 +240,7 @@ def : SysReg<"mbadaddr", 0x343>; def : SysReg<"mip", 0x344>; def : SysReg<"mtinst", 0x34A>; def : SysReg<"mtval2", 0x34B>; +def : SysReg<"medelegh", 0x312>; //===--===// // Machine Configuration >From 30e3fbe156581efe49a3c6def9dd444dc546f134 Mon Sep 17 00:00:00 2001 From: dong-miao Date: Sat, 4 Jan 2025 18:02:40 +0800 Subject: [PATCH 02/23] Update rv32-hypervisor-csr-names.s --- llvm/test/MC/RISCV/rv32-hypervisor-csr-names.s | 18 ++ 1 file changed, 18 insertions(+) diff --git a/llvm/test/MC/RISCV/rv32-hypervisor-csr-names.s b/llvm/test/MC/RISCV/rv32-hypervisor-csr-names.s index aadee4fb4f3ad..79d87b3f2471c 100644 --- a/llvm/test/MC/RISCV/rv32-hypervisor-csr-names.s +++ b/llvm/test/MC/RISCV/rv32-hypervisor-csr-names.s @@ -219,3 +219,21 @@ csrrs t2, 0x214, zero csrrs t1, vsiph, zero # uimm12 csrrs t2, 0x254, zero + +## +# Hypervisor Trap Setup +## + +# hedelegh +# name +# CHECK-INST: csrrs t1, hedelegh, zero +# CHECK-ENC: encoding: [0x73,0x23,0x20,0x61] +# CHECK-INST-ALIAS: csrr t1, hedelegh +# uimm12 +# CHECK-INST: csrrs t2, hedelegh, zero +# CHECK-ENC: encoding: [0xf3,0x23,0x20,0x61] +# CHECK-INST-ALIAS: csrr t2, hedelegh +# name +csrrs t1, hedelegh, zero +# uimm12 +csrrs t2, 0x612, zero >From e41e745626caf701b2a21eb2577ead05b922f590 Mon Sep 17 00:00:00 2001 From: dong-miao Date: Sat, 4 Jan 2025 18:05:04 +0800 Subject: [PATCH 03/23] Update rv32-machine-csr-names.s --- llvm/test/MC/RISCV/rv32-machine-csr-names.s | 14 ++ 1 file changed, 14 insertions(+) diff --git a/llvm/test/MC/RISCV/rv32-machine-csr-names.s b/llvm/test/MC/RISCV/rv32-machine-csr-names.s index 3d527e382376e..9e929b7eddeed 100644 --- a/llvm/test/MC/RISCV/rv32-machine-csr-names.s +++ b/llvm/test/MC/RISCV/rv32-machine-csr-names.s @@ -22,6 +22,20 @@ csrrs t1, mstatush, zero # uimm12 csrrs t2, 0x310, zero +# medelegh +# name +# CHECK-INST: csrrs t1, medelegh, zero +# CHECK-ENC: encoding: [0x73,0x23,0x20,0x31] +# CHECK-INST-ALIAS: csrr t1, medelegh +# uimm12 +# CHECK-INST: csrrs t2, medelegh, zero +# CHECK-ENC: encoding: [0xf3,0x23,0x20,0x31] +# CHECK-INST-ALIAS: csrr t2, medelegh +# name +csrrs t1, medelegh, zero +# uimm12 +csrrs t2, 0x312, zero + # # Machine Configuration # >From ea2c1afaa0eede9cf9dfbf68d10fada108b0164b Mon Sep 17 00:00:00 2001 From: dong-miao Date: Sun, 5 Jan 2025 11:12:53 +0800 Subject: [PATCH 04/23] Update RISCVSystemOperands.td --- llvm/lib/Target/RISCV/RISCVSystemOperands.td | 2 ++ 1 file changed, 2 insertions(+) diff --git a/llvm/lib/Target/RISCV/RISCVSystemOperands.td b/llvm/lib/Target/RISCV/RISCVSystemOperands.td index 41b96e1497e70..21f912bbc84d1 100644 --- a/llvm/lib/Target/RISCV/RISCVSystemOperands.td +++ b/llvm/lib/Target/RISCV/RISCVSystemOperands.td @@ -158,6 +158,7 @@ def : SysReg<"hip", 0x644>; def : SysReg<"hvip", 0x645>; def : SysReg<"htinst", 0x64A>; def : SysReg<"hgeip", 0xE12>; +let isRV32Only = 1 in def : SysReg<"hedelegh", 0x612>; //===--===// @@ -240,6 +241,7 @@ def : SysReg<"mbadaddr", 0x343>; def : SysReg<"mip", 0x344>; def : SysReg<"mtinst", 0x34A>; def : SysReg<"mtval2", 0x34B>; +let isRV32Only = 1 in def : SysReg<"medelegh", 0x312>; //===--===// >From 6b074f3d744bdfaf2f4de9fa49484b25f76df3d4 Mon Sep 17 00:00:00 2001 From: dong-miao Date: Sun, 5 Jan 2025 11:30:33 +0800 Subject: [PATCH 05/23] Update rv32-only-csr-names.s --- llvm/test/MC/RISCV/rv32-only-csr-names.s | 4 1 file changed, 4 insertions(+) diff --git a/llvm/test/MC/RISCV/rv32-only-csr-names.s b/llvm/test/MC/RISCV/rv32-only-csr-names.s index db88eacf9396b..1604469210193 100644 --- a/llvm/test/MC/RISCV/rv32-only-csr-names.s +++ b/llvm/test/MC/RISCV/rv32-only-csr-names.s @@ -41,12 +41,16 @@ csrrs t1, henvcfgh, zero # CHECK-NEED-RV32: :[[@LIN
[clang] [llvm] [RISCV] Add Zilsd and Zclsd Extensions (PR #131094)
dong-miao wrote: When I tested with `sudo ninja - C build check lvm` locally, there were two testing errors that I couldn't solve. For rv32zclsd-valid. s, errors may occur during the disassembly process because the test file does not report errors when I remove Check-ASM-AND-OBJ. [Error record.txt](https://github.com/user-attachments/files/19243231/Error.record.txt) https://github.com/llvm/llvm-project/pull/131094 ___ cfe-commits mailing list cfe-commits@lists.llvm.org https://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-commits
[clang] [llvm] [RISCV] Add Zilsd and Zclsd Extensions (PR #131094)
https://github.com/dong-miao updated https://github.com/llvm/llvm-project/pull/131094 >From bcdf9641037507b855a20a8ba5d26b127dd248e8 Mon Sep 17 00:00:00 2001 From: dong-miao Date: Sat, 4 Jan 2025 17:53:58 +0800 Subject: [PATCH 01/11] Update RISCVSystemOperands.td --- llvm/lib/Target/RISCV/RISCVSystemOperands.td | 2 ++ 1 file changed, 2 insertions(+) diff --git a/llvm/lib/Target/RISCV/RISCVSystemOperands.td b/llvm/lib/Target/RISCV/RISCVSystemOperands.td index 39853cf13a920..41b96e1497e70 100644 --- a/llvm/lib/Target/RISCV/RISCVSystemOperands.td +++ b/llvm/lib/Target/RISCV/RISCVSystemOperands.td @@ -158,6 +158,7 @@ def : SysReg<"hip", 0x644>; def : SysReg<"hvip", 0x645>; def : SysReg<"htinst", 0x64A>; def : SysReg<"hgeip", 0xE12>; +def : SysReg<"hedelegh", 0x612>; //===--===// // Hypervisor Configuration @@ -239,6 +240,7 @@ def : SysReg<"mbadaddr", 0x343>; def : SysReg<"mip", 0x344>; def : SysReg<"mtinst", 0x34A>; def : SysReg<"mtval2", 0x34B>; +def : SysReg<"medelegh", 0x312>; //===--===// // Machine Configuration >From 30e3fbe156581efe49a3c6def9dd444dc546f134 Mon Sep 17 00:00:00 2001 From: dong-miao Date: Sat, 4 Jan 2025 18:02:40 +0800 Subject: [PATCH 02/11] Update rv32-hypervisor-csr-names.s --- llvm/test/MC/RISCV/rv32-hypervisor-csr-names.s | 18 ++ 1 file changed, 18 insertions(+) diff --git a/llvm/test/MC/RISCV/rv32-hypervisor-csr-names.s b/llvm/test/MC/RISCV/rv32-hypervisor-csr-names.s index aadee4fb4f3ad..79d87b3f2471c 100644 --- a/llvm/test/MC/RISCV/rv32-hypervisor-csr-names.s +++ b/llvm/test/MC/RISCV/rv32-hypervisor-csr-names.s @@ -219,3 +219,21 @@ csrrs t2, 0x214, zero csrrs t1, vsiph, zero # uimm12 csrrs t2, 0x254, zero + +## +# Hypervisor Trap Setup +## + +# hedelegh +# name +# CHECK-INST: csrrs t1, hedelegh, zero +# CHECK-ENC: encoding: [0x73,0x23,0x20,0x61] +# CHECK-INST-ALIAS: csrr t1, hedelegh +# uimm12 +# CHECK-INST: csrrs t2, hedelegh, zero +# CHECK-ENC: encoding: [0xf3,0x23,0x20,0x61] +# CHECK-INST-ALIAS: csrr t2, hedelegh +# name +csrrs t1, hedelegh, zero +# uimm12 +csrrs t2, 0x612, zero >From e41e745626caf701b2a21eb2577ead05b922f590 Mon Sep 17 00:00:00 2001 From: dong-miao Date: Sat, 4 Jan 2025 18:05:04 +0800 Subject: [PATCH 03/11] Update rv32-machine-csr-names.s --- llvm/test/MC/RISCV/rv32-machine-csr-names.s | 14 ++ 1 file changed, 14 insertions(+) diff --git a/llvm/test/MC/RISCV/rv32-machine-csr-names.s b/llvm/test/MC/RISCV/rv32-machine-csr-names.s index 3d527e382376e..9e929b7eddeed 100644 --- a/llvm/test/MC/RISCV/rv32-machine-csr-names.s +++ b/llvm/test/MC/RISCV/rv32-machine-csr-names.s @@ -22,6 +22,20 @@ csrrs t1, mstatush, zero # uimm12 csrrs t2, 0x310, zero +# medelegh +# name +# CHECK-INST: csrrs t1, medelegh, zero +# CHECK-ENC: encoding: [0x73,0x23,0x20,0x31] +# CHECK-INST-ALIAS: csrr t1, medelegh +# uimm12 +# CHECK-INST: csrrs t2, medelegh, zero +# CHECK-ENC: encoding: [0xf3,0x23,0x20,0x31] +# CHECK-INST-ALIAS: csrr t2, medelegh +# name +csrrs t1, medelegh, zero +# uimm12 +csrrs t2, 0x312, zero + # # Machine Configuration # >From ea2c1afaa0eede9cf9dfbf68d10fada108b0164b Mon Sep 17 00:00:00 2001 From: dong-miao Date: Sun, 5 Jan 2025 11:12:53 +0800 Subject: [PATCH 04/11] Update RISCVSystemOperands.td --- llvm/lib/Target/RISCV/RISCVSystemOperands.td | 2 ++ 1 file changed, 2 insertions(+) diff --git a/llvm/lib/Target/RISCV/RISCVSystemOperands.td b/llvm/lib/Target/RISCV/RISCVSystemOperands.td index 41b96e1497e70..21f912bbc84d1 100644 --- a/llvm/lib/Target/RISCV/RISCVSystemOperands.td +++ b/llvm/lib/Target/RISCV/RISCVSystemOperands.td @@ -158,6 +158,7 @@ def : SysReg<"hip", 0x644>; def : SysReg<"hvip", 0x645>; def : SysReg<"htinst", 0x64A>; def : SysReg<"hgeip", 0xE12>; +let isRV32Only = 1 in def : SysReg<"hedelegh", 0x612>; //===--===// @@ -240,6 +241,7 @@ def : SysReg<"mbadaddr", 0x343>; def : SysReg<"mip", 0x344>; def : SysReg<"mtinst", 0x34A>; def : SysReg<"mtval2", 0x34B>; +let isRV32Only = 1 in def : SysReg<"medelegh", 0x312>; //===--===// >From 6b074f3d744bdfaf2f4de9fa49484b25f76df3d4 Mon Sep 17 00:00:00 2001 From: dong-miao Date: Sun, 5 Jan 2025 11:30:33 +0800 Subject: [PATCH 05/11] Update rv32-only-csr-names.s --- llvm/test/MC/RISCV/rv32-only-csr-names.s | 4 1 file changed, 4 insertions(+) diff --git a/llvm/test/MC/RISCV/rv32-only-csr-names.s b/llvm/test/MC/RISCV/rv32-only-csr-names.s index db88eacf9396b..1604469210193 100644 --- a/llvm/test/MC/RISCV/rv32-only-csr-names.s +++ b/llvm/test/MC/RISCV/rv32-only-csr-names.s @@ -41,12 +41,16 @@ csrrs t1, henvcfgh, zero # CHECK-NEED-RV32: :[[@LIN
[clang] [llvm] [RISCV] Add Zilsd and Zclsd Extensions (PR #131094)
https://github.com/dong-miao updated https://github.com/llvm/llvm-project/pull/131094 >From bcdf9641037507b855a20a8ba5d26b127dd248e8 Mon Sep 17 00:00:00 2001 From: dong-miao Date: Sat, 4 Jan 2025 17:53:58 +0800 Subject: [PATCH 01/21] Update RISCVSystemOperands.td --- llvm/lib/Target/RISCV/RISCVSystemOperands.td | 2 ++ 1 file changed, 2 insertions(+) diff --git a/llvm/lib/Target/RISCV/RISCVSystemOperands.td b/llvm/lib/Target/RISCV/RISCVSystemOperands.td index 39853cf13a920..41b96e1497e70 100644 --- a/llvm/lib/Target/RISCV/RISCVSystemOperands.td +++ b/llvm/lib/Target/RISCV/RISCVSystemOperands.td @@ -158,6 +158,7 @@ def : SysReg<"hip", 0x644>; def : SysReg<"hvip", 0x645>; def : SysReg<"htinst", 0x64A>; def : SysReg<"hgeip", 0xE12>; +def : SysReg<"hedelegh", 0x612>; //===--===// // Hypervisor Configuration @@ -239,6 +240,7 @@ def : SysReg<"mbadaddr", 0x343>; def : SysReg<"mip", 0x344>; def : SysReg<"mtinst", 0x34A>; def : SysReg<"mtval2", 0x34B>; +def : SysReg<"medelegh", 0x312>; //===--===// // Machine Configuration >From 30e3fbe156581efe49a3c6def9dd444dc546f134 Mon Sep 17 00:00:00 2001 From: dong-miao Date: Sat, 4 Jan 2025 18:02:40 +0800 Subject: [PATCH 02/21] Update rv32-hypervisor-csr-names.s --- llvm/test/MC/RISCV/rv32-hypervisor-csr-names.s | 18 ++ 1 file changed, 18 insertions(+) diff --git a/llvm/test/MC/RISCV/rv32-hypervisor-csr-names.s b/llvm/test/MC/RISCV/rv32-hypervisor-csr-names.s index aadee4fb4f3ad..79d87b3f2471c 100644 --- a/llvm/test/MC/RISCV/rv32-hypervisor-csr-names.s +++ b/llvm/test/MC/RISCV/rv32-hypervisor-csr-names.s @@ -219,3 +219,21 @@ csrrs t2, 0x214, zero csrrs t1, vsiph, zero # uimm12 csrrs t2, 0x254, zero + +## +# Hypervisor Trap Setup +## + +# hedelegh +# name +# CHECK-INST: csrrs t1, hedelegh, zero +# CHECK-ENC: encoding: [0x73,0x23,0x20,0x61] +# CHECK-INST-ALIAS: csrr t1, hedelegh +# uimm12 +# CHECK-INST: csrrs t2, hedelegh, zero +# CHECK-ENC: encoding: [0xf3,0x23,0x20,0x61] +# CHECK-INST-ALIAS: csrr t2, hedelegh +# name +csrrs t1, hedelegh, zero +# uimm12 +csrrs t2, 0x612, zero >From e41e745626caf701b2a21eb2577ead05b922f590 Mon Sep 17 00:00:00 2001 From: dong-miao Date: Sat, 4 Jan 2025 18:05:04 +0800 Subject: [PATCH 03/21] Update rv32-machine-csr-names.s --- llvm/test/MC/RISCV/rv32-machine-csr-names.s | 14 ++ 1 file changed, 14 insertions(+) diff --git a/llvm/test/MC/RISCV/rv32-machine-csr-names.s b/llvm/test/MC/RISCV/rv32-machine-csr-names.s index 3d527e382376e..9e929b7eddeed 100644 --- a/llvm/test/MC/RISCV/rv32-machine-csr-names.s +++ b/llvm/test/MC/RISCV/rv32-machine-csr-names.s @@ -22,6 +22,20 @@ csrrs t1, mstatush, zero # uimm12 csrrs t2, 0x310, zero +# medelegh +# name +# CHECK-INST: csrrs t1, medelegh, zero +# CHECK-ENC: encoding: [0x73,0x23,0x20,0x31] +# CHECK-INST-ALIAS: csrr t1, medelegh +# uimm12 +# CHECK-INST: csrrs t2, medelegh, zero +# CHECK-ENC: encoding: [0xf3,0x23,0x20,0x31] +# CHECK-INST-ALIAS: csrr t2, medelegh +# name +csrrs t1, medelegh, zero +# uimm12 +csrrs t2, 0x312, zero + # # Machine Configuration # >From ea2c1afaa0eede9cf9dfbf68d10fada108b0164b Mon Sep 17 00:00:00 2001 From: dong-miao Date: Sun, 5 Jan 2025 11:12:53 +0800 Subject: [PATCH 04/21] Update RISCVSystemOperands.td --- llvm/lib/Target/RISCV/RISCVSystemOperands.td | 2 ++ 1 file changed, 2 insertions(+) diff --git a/llvm/lib/Target/RISCV/RISCVSystemOperands.td b/llvm/lib/Target/RISCV/RISCVSystemOperands.td index 41b96e1497e70..21f912bbc84d1 100644 --- a/llvm/lib/Target/RISCV/RISCVSystemOperands.td +++ b/llvm/lib/Target/RISCV/RISCVSystemOperands.td @@ -158,6 +158,7 @@ def : SysReg<"hip", 0x644>; def : SysReg<"hvip", 0x645>; def : SysReg<"htinst", 0x64A>; def : SysReg<"hgeip", 0xE12>; +let isRV32Only = 1 in def : SysReg<"hedelegh", 0x612>; //===--===// @@ -240,6 +241,7 @@ def : SysReg<"mbadaddr", 0x343>; def : SysReg<"mip", 0x344>; def : SysReg<"mtinst", 0x34A>; def : SysReg<"mtval2", 0x34B>; +let isRV32Only = 1 in def : SysReg<"medelegh", 0x312>; //===--===// >From 6b074f3d744bdfaf2f4de9fa49484b25f76df3d4 Mon Sep 17 00:00:00 2001 From: dong-miao Date: Sun, 5 Jan 2025 11:30:33 +0800 Subject: [PATCH 05/21] Update rv32-only-csr-names.s --- llvm/test/MC/RISCV/rv32-only-csr-names.s | 4 1 file changed, 4 insertions(+) diff --git a/llvm/test/MC/RISCV/rv32-only-csr-names.s b/llvm/test/MC/RISCV/rv32-only-csr-names.s index db88eacf9396b..1604469210193 100644 --- a/llvm/test/MC/RISCV/rv32-only-csr-names.s +++ b/llvm/test/MC/RISCV/rv32-only-csr-names.s @@ -41,12 +41,16 @@ csrrs t1, henvcfgh, zero # CHECK-NEED-RV32: :[[@LIN
[clang] [llvm] [RISCV] Add Zilsd and Zclsd Extensions (PR #131094)
https://github.com/dong-miao updated https://github.com/llvm/llvm-project/pull/131094 >From bcdf9641037507b855a20a8ba5d26b127dd248e8 Mon Sep 17 00:00:00 2001 From: dong-miao Date: Sat, 4 Jan 2025 17:53:58 +0800 Subject: [PATCH 01/20] Update RISCVSystemOperands.td --- llvm/lib/Target/RISCV/RISCVSystemOperands.td | 2 ++ 1 file changed, 2 insertions(+) diff --git a/llvm/lib/Target/RISCV/RISCVSystemOperands.td b/llvm/lib/Target/RISCV/RISCVSystemOperands.td index 39853cf13a920..41b96e1497e70 100644 --- a/llvm/lib/Target/RISCV/RISCVSystemOperands.td +++ b/llvm/lib/Target/RISCV/RISCVSystemOperands.td @@ -158,6 +158,7 @@ def : SysReg<"hip", 0x644>; def : SysReg<"hvip", 0x645>; def : SysReg<"htinst", 0x64A>; def : SysReg<"hgeip", 0xE12>; +def : SysReg<"hedelegh", 0x612>; //===--===// // Hypervisor Configuration @@ -239,6 +240,7 @@ def : SysReg<"mbadaddr", 0x343>; def : SysReg<"mip", 0x344>; def : SysReg<"mtinst", 0x34A>; def : SysReg<"mtval2", 0x34B>; +def : SysReg<"medelegh", 0x312>; //===--===// // Machine Configuration >From 30e3fbe156581efe49a3c6def9dd444dc546f134 Mon Sep 17 00:00:00 2001 From: dong-miao Date: Sat, 4 Jan 2025 18:02:40 +0800 Subject: [PATCH 02/20] Update rv32-hypervisor-csr-names.s --- llvm/test/MC/RISCV/rv32-hypervisor-csr-names.s | 18 ++ 1 file changed, 18 insertions(+) diff --git a/llvm/test/MC/RISCV/rv32-hypervisor-csr-names.s b/llvm/test/MC/RISCV/rv32-hypervisor-csr-names.s index aadee4fb4f3ad..79d87b3f2471c 100644 --- a/llvm/test/MC/RISCV/rv32-hypervisor-csr-names.s +++ b/llvm/test/MC/RISCV/rv32-hypervisor-csr-names.s @@ -219,3 +219,21 @@ csrrs t2, 0x214, zero csrrs t1, vsiph, zero # uimm12 csrrs t2, 0x254, zero + +## +# Hypervisor Trap Setup +## + +# hedelegh +# name +# CHECK-INST: csrrs t1, hedelegh, zero +# CHECK-ENC: encoding: [0x73,0x23,0x20,0x61] +# CHECK-INST-ALIAS: csrr t1, hedelegh +# uimm12 +# CHECK-INST: csrrs t2, hedelegh, zero +# CHECK-ENC: encoding: [0xf3,0x23,0x20,0x61] +# CHECK-INST-ALIAS: csrr t2, hedelegh +# name +csrrs t1, hedelegh, zero +# uimm12 +csrrs t2, 0x612, zero >From e41e745626caf701b2a21eb2577ead05b922f590 Mon Sep 17 00:00:00 2001 From: dong-miao Date: Sat, 4 Jan 2025 18:05:04 +0800 Subject: [PATCH 03/20] Update rv32-machine-csr-names.s --- llvm/test/MC/RISCV/rv32-machine-csr-names.s | 14 ++ 1 file changed, 14 insertions(+) diff --git a/llvm/test/MC/RISCV/rv32-machine-csr-names.s b/llvm/test/MC/RISCV/rv32-machine-csr-names.s index 3d527e382376e..9e929b7eddeed 100644 --- a/llvm/test/MC/RISCV/rv32-machine-csr-names.s +++ b/llvm/test/MC/RISCV/rv32-machine-csr-names.s @@ -22,6 +22,20 @@ csrrs t1, mstatush, zero # uimm12 csrrs t2, 0x310, zero +# medelegh +# name +# CHECK-INST: csrrs t1, medelegh, zero +# CHECK-ENC: encoding: [0x73,0x23,0x20,0x31] +# CHECK-INST-ALIAS: csrr t1, medelegh +# uimm12 +# CHECK-INST: csrrs t2, medelegh, zero +# CHECK-ENC: encoding: [0xf3,0x23,0x20,0x31] +# CHECK-INST-ALIAS: csrr t2, medelegh +# name +csrrs t1, medelegh, zero +# uimm12 +csrrs t2, 0x312, zero + # # Machine Configuration # >From ea2c1afaa0eede9cf9dfbf68d10fada108b0164b Mon Sep 17 00:00:00 2001 From: dong-miao Date: Sun, 5 Jan 2025 11:12:53 +0800 Subject: [PATCH 04/20] Update RISCVSystemOperands.td --- llvm/lib/Target/RISCV/RISCVSystemOperands.td | 2 ++ 1 file changed, 2 insertions(+) diff --git a/llvm/lib/Target/RISCV/RISCVSystemOperands.td b/llvm/lib/Target/RISCV/RISCVSystemOperands.td index 41b96e1497e70..21f912bbc84d1 100644 --- a/llvm/lib/Target/RISCV/RISCVSystemOperands.td +++ b/llvm/lib/Target/RISCV/RISCVSystemOperands.td @@ -158,6 +158,7 @@ def : SysReg<"hip", 0x644>; def : SysReg<"hvip", 0x645>; def : SysReg<"htinst", 0x64A>; def : SysReg<"hgeip", 0xE12>; +let isRV32Only = 1 in def : SysReg<"hedelegh", 0x612>; //===--===// @@ -240,6 +241,7 @@ def : SysReg<"mbadaddr", 0x343>; def : SysReg<"mip", 0x344>; def : SysReg<"mtinst", 0x34A>; def : SysReg<"mtval2", 0x34B>; +let isRV32Only = 1 in def : SysReg<"medelegh", 0x312>; //===--===// >From 6b074f3d744bdfaf2f4de9fa49484b25f76df3d4 Mon Sep 17 00:00:00 2001 From: dong-miao Date: Sun, 5 Jan 2025 11:30:33 +0800 Subject: [PATCH 05/20] Update rv32-only-csr-names.s --- llvm/test/MC/RISCV/rv32-only-csr-names.s | 4 1 file changed, 4 insertions(+) diff --git a/llvm/test/MC/RISCV/rv32-only-csr-names.s b/llvm/test/MC/RISCV/rv32-only-csr-names.s index db88eacf9396b..1604469210193 100644 --- a/llvm/test/MC/RISCV/rv32-only-csr-names.s +++ b/llvm/test/MC/RISCV/rv32-only-csr-names.s @@ -41,12 +41,16 @@ csrrs t1, henvcfgh, zero # CHECK-NEED-RV32: :[[@LIN
[clang] [llvm] [RISCV] Add Zilsd and Zclsd Extensions (PR #131094)
@@ -0,0 +1,90 @@ +//===-- RISCVInstrInfoZclsd.td -*- tablegen -*-===// +// +// Part of the LLVM Project, under the Apache License v2.0 with LLVM Exceptions. +// See https://llvm.org/LICENSE.txt for license information. +// SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception +// +//===--===// +// This file describes the RISC-V instructions from the standard 'Zclsd', +// Compressed Load/Store pair instructions extension. +//===--===// +// Instruction Class Templates +//===--===// + +def GPRPairNoX0RV32Operand : AsmOperandClass { + let Name = "GPRPairNoX0RV32"; + let ParserMethod = "parseGPRPair"; + let PredicateMethod = "isGPRPairNoX0"; + let RenderMethod = "addRegOperands"; +} + +def GPRPairNoX0RV32 : RegisterOperand { + let ParserMatchClass = GPRPairNoX0RV32Operand; +} + +def GPRPairCRV32Operand : AsmOperandClass { + let Name = "GPRPairCRV32"; + let ParserMethod = "parseGPRPair"; + let PredicateMethod = "isGPRPairC"; + let RenderMethod = "addRegOperands"; +} + +def GPRPairCRV32 : RegisterOperand { + let ParserMatchClass = GPRPairCRV32Operand; +} + +let hasSideEffects = 0, mayLoad = 1, mayStore = 0 in +class PairCStackLoad funct3, string OpcodeStr, + DAGOperand RC, DAGOperand opnd> +: RVInst16CI; + +let hasSideEffects = 0, mayLoad = 0, mayStore = 1 in +class PairCStackStore funct3, string OpcodeStr, + DAGOperand RC, DAGOperand opnd> +: RVInst16CSS; + +let hasSideEffects = 0, mayLoad = 1, mayStore = 0 in +class PairCLoad_ri funct3, string OpcodeStr, + DAGOperand RC, DAGOperand opnd> +: RVInst16CL; + +let hasSideEffects = 0, mayLoad = 0, mayStore = 1 in +class PairCStore_rri funct3, string OpcodeStr, + DAGOperand RC, DAGOperand opnd> +: RVInst16CS; + +//===--===// +// Instructions +//===--===// + +let Predicates = [HasStdExtZclsd, IsRV32], DecoderNamespace = "ZcOverlap" in +def C_LDSP_RV32 : PairCStackLoad<0b011, "c.ldsp", GPRPairNoX0RV32, uimm9_lsb000>, + Sched<[WriteLDD, ReadMemBase]> { + let Inst{4-2} = imm{8-6}; + } + +let Predicates = [HasStdExtZclsd, IsRV32], DecoderNamespace = "ZcOverlap" in +def C_SDSP_RV32 : PairCStackStore<0b111, "c.sdsp", GPRPairRV32, uimm9_lsb000>, + Sched<[WriteSTD, ReadStoreData, ReadMemBase]> { + let Inst{9-7} = imm{8-6}; + } + +let Predicates = [HasStdExtZclsd, IsRV32], DecoderNamespace = "ZcOverlap" in +def C_LD_RV32 : PairCLoad_ri<0b011, "c.ld", GPRPairCRV32, uimm8_lsb000>, + Sched<[WriteLDD, ReadMemBase]> { + bits<8> imm; + let Inst{12-10} = imm{5-3}; + let Inst{6-5} = imm{7-6}; +} + +let Predicates = [HasStdExtZclsd, IsRV32], DecoderNamespace = "ZcOverlap" in +def C_SD_RV32 : PairCStore_rri<0b111, "c.sd", GPRPairCRV32, uimm8_lsb000>, + Sched<[WriteSTD, ReadStoreData, ReadMemBase]> { + bits<8> imm; + let Inst{12-10} = imm{5-3}; + let Inst{6-5} = imm{7-6}; +}// Predicates = [HasStdExtZclsd, IsRV32] topperc wrote: Go ahead and add RISCVInstrinInfoZclsd.td after RISCVInstrinInfoZilsd.td. I'll investigate if we should change the order. https://github.com/llvm/llvm-project/pull/131094 ___ cfe-commits mailing list cfe-commits@lists.llvm.org https://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-commits
[clang] [llvm] [RISCV] Add Zilsd and Zclsd Extensions (PR #131094)
https://github.com/topperc edited https://github.com/llvm/llvm-project/pull/131094 ___ cfe-commits mailing list cfe-commits@lists.llvm.org https://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-commits
[clang] [llvm] [RISCV] Add Zilsd and Zclsd Extensions (PR #131094)
@@ -0,0 +1,90 @@ +//===-- RISCVInstrInfoZclsd.td -*- tablegen -*-===// +// +// Part of the LLVM Project, under the Apache License v2.0 with LLVM Exceptions. +// See https://llvm.org/LICENSE.txt for license information. +// SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception +// +//===--===// +// This file describes the RISC-V instructions from the standard 'Zclsd', +// Compressed Load/Store pair instructions extension. +//===--===// +// Instruction Class Templates +//===--===// + +def GPRPairNoX0RV32Operand : AsmOperandClass { + let Name = "GPRPairNoX0RV32"; + let ParserMethod = "parseGPRPair"; + let PredicateMethod = "isGPRPairNoX0"; + let RenderMethod = "addRegOperands"; +} + +def GPRPairNoX0RV32 : RegisterOperand { + let ParserMatchClass = GPRPairNoX0RV32Operand; +} + +def GPRPairCRV32Operand : AsmOperandClass { + let Name = "GPRPairCRV32"; + let ParserMethod = "parseGPRPair"; + let PredicateMethod = "isGPRPairC"; + let RenderMethod = "addRegOperands"; +} + +def GPRPairCRV32 : RegisterOperand { + let ParserMatchClass = GPRPairCRV32Operand; +} + +let hasSideEffects = 0, mayLoad = 1, mayStore = 0 in +class PairCStackLoad funct3, string OpcodeStr, + DAGOperand RC, DAGOperand opnd> +: RVInst16CI; + +let hasSideEffects = 0, mayLoad = 0, mayStore = 1 in +class PairCStackStore funct3, string OpcodeStr, + DAGOperand RC, DAGOperand opnd> +: RVInst16CSS; + +let hasSideEffects = 0, mayLoad = 1, mayStore = 0 in +class PairCLoad_ri funct3, string OpcodeStr, + DAGOperand RC, DAGOperand opnd> +: RVInst16CL; + +let hasSideEffects = 0, mayLoad = 0, mayStore = 1 in +class PairCStore_rri funct3, string OpcodeStr, + DAGOperand RC, DAGOperand opnd> +: RVInst16CS; + +//===--===// +// Instructions +//===--===// + +let Predicates = [HasStdExtZclsd, IsRV32], DecoderNamespace = "ZcOverlap" in +def C_LDSP_RV32 : PairCStackLoad<0b011, "c.ldsp", GPRPairNoX0RV32, uimm9_lsb000>, + Sched<[WriteLDD, ReadMemBase]> { + let Inst{4-2} = imm{8-6}; + } + +let Predicates = [HasStdExtZclsd, IsRV32], DecoderNamespace = "ZcOverlap" in +def C_SDSP_RV32 : PairCStackStore<0b111, "c.sdsp", GPRPairRV32, uimm9_lsb000>, + Sched<[WriteSTD, ReadStoreData, ReadMemBase]> { + let Inst{9-7} = imm{8-6}; + } + +let Predicates = [HasStdExtZclsd, IsRV32], DecoderNamespace = "ZcOverlap" in +def C_LD_RV32 : PairCLoad_ri<0b011, "c.ld", GPRPairCRV32, uimm8_lsb000>, + Sched<[WriteLDD, ReadMemBase]> { + bits<8> imm; + let Inst{12-10} = imm{5-3}; + let Inst{6-5} = imm{7-6}; +} + +let Predicates = [HasStdExtZclsd, IsRV32], DecoderNamespace = "ZcOverlap" in +def C_SD_RV32 : PairCStore_rri<0b111, "c.sd", GPRPairCRV32, uimm8_lsb000>, + Sched<[WriteSTD, ReadStoreData, ReadMemBase]> { + bits<8> imm; + let Inst{12-10} = imm{5-3}; + let Inst{6-5} = imm{7-6}; +}// Predicates = [HasStdExtZclsd, IsRV32] dong-miao wrote: I added it, but due to the file reference order in llvm/lib/Target/RISCVInstrInfo.td, an error occurred: Variable not defined: 'LD_RV32' `def : CompressPat<(LD_RV32 GPRPairNoX0RV32:$rd, SPMem:$rs1, uimm9_lsb000:$imm)`. May I ask what I should do? Do I need to directly add 'RISCVInstrinInfoZclsd. td' after 'RISCVInstrinInfoZilsd. td'? But this will disrupt the order of file references in RISCVInstrInfo.td. https://github.com/llvm/llvm-project/pull/131094 ___ cfe-commits mailing list cfe-commits@lists.llvm.org https://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-commits
[clang] [llvm] [RISCV] Add Zilsd and Zclsd Extensions (PR #131094)
@@ -0,0 +1,36 @@ +//===-- RISCVInstrInfoZilsd.td -*- tablegen -*-===// +// +// Part of the LLVM Project, under the Apache License v2.0 with LLVM Exceptions. +// See https://llvm.org/LICENSE.txt for license information. +// SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception +// +//===--===// +// +// This file describes the RISC-V instructions from the standard 'Zilsd', +// Load/Store pair instructions extension. +// +//===--===// +// Instruction Class Templates +//===--===// + +let hasSideEffects = 0, mayLoad = 1, mayStore = 0 in +class ld_r +: RVInstI<0b011, OPC_LOAD, (outs RC:$rd), +(ins GPRMem:$rs1, simm12:$imm12), + opcodestr, "${rd}, ${imm12}(${rs1})">; + +let hasSideEffects = 0, mayLoad = 0, mayStore = 1 in +class sd_r topperc wrote: > I don't understand why the naming suffix is' _r 'or' _ri 'or' _rri '. It > seems to be related to' ins'. Is my guess correct? Yes. https://github.com/llvm/llvm-project/pull/131094 ___ cfe-commits mailing list cfe-commits@lists.llvm.org https://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-commits
[clang] [llvm] [RISCV] Add Zilsd and Zclsd Extensions (PR #131094)
@@ -0,0 +1,36 @@ +//===-- RISCVInstrInfoZilsd.td -*- tablegen -*-===// +// +// Part of the LLVM Project, under the Apache License v2.0 with LLVM Exceptions. +// See https://llvm.org/LICENSE.txt for license information. +// SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception +// +//===--===// +// +// This file describes the RISC-V instructions from the standard 'Zilsd', +// Load/Store pair instructions extension. +// +//===--===// +// Instruction Class Templates +//===--===// + +let hasSideEffects = 0, mayLoad = 1, mayStore = 0 in +class ld_r +: RVInstI<0b011, OPC_LOAD, (outs RC:$rd), +(ins GPRMem:$rs1, simm12:$imm12), + opcodestr, "${rd}, ${imm12}(${rs1})">; + +let hasSideEffects = 0, mayLoad = 0, mayStore = 1 in +class sd_r dong-miao wrote: I don't understand why the naming suffix is' _r 'or' _ri 'or' _rri '. It seems to be related to' ins'. Is my guess correct? https://github.com/llvm/llvm-project/pull/131094 ___ cfe-commits mailing list cfe-commits@lists.llvm.org https://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-commits
[clang] [llvm] [RISCV] Add Zilsd and Zclsd Extensions (PR #131094)
https://github.com/dong-miao updated https://github.com/llvm/llvm-project/pull/131094 >From bcdf9641037507b855a20a8ba5d26b127dd248e8 Mon Sep 17 00:00:00 2001 From: dong-miao Date: Sat, 4 Jan 2025 17:53:58 +0800 Subject: [PATCH 01/10] Update RISCVSystemOperands.td --- llvm/lib/Target/RISCV/RISCVSystemOperands.td | 2 ++ 1 file changed, 2 insertions(+) diff --git a/llvm/lib/Target/RISCV/RISCVSystemOperands.td b/llvm/lib/Target/RISCV/RISCVSystemOperands.td index 39853cf13a920..41b96e1497e70 100644 --- a/llvm/lib/Target/RISCV/RISCVSystemOperands.td +++ b/llvm/lib/Target/RISCV/RISCVSystemOperands.td @@ -158,6 +158,7 @@ def : SysReg<"hip", 0x644>; def : SysReg<"hvip", 0x645>; def : SysReg<"htinst", 0x64A>; def : SysReg<"hgeip", 0xE12>; +def : SysReg<"hedelegh", 0x612>; //===--===// // Hypervisor Configuration @@ -239,6 +240,7 @@ def : SysReg<"mbadaddr", 0x343>; def : SysReg<"mip", 0x344>; def : SysReg<"mtinst", 0x34A>; def : SysReg<"mtval2", 0x34B>; +def : SysReg<"medelegh", 0x312>; //===--===// // Machine Configuration >From 30e3fbe156581efe49a3c6def9dd444dc546f134 Mon Sep 17 00:00:00 2001 From: dong-miao Date: Sat, 4 Jan 2025 18:02:40 +0800 Subject: [PATCH 02/10] Update rv32-hypervisor-csr-names.s --- llvm/test/MC/RISCV/rv32-hypervisor-csr-names.s | 18 ++ 1 file changed, 18 insertions(+) diff --git a/llvm/test/MC/RISCV/rv32-hypervisor-csr-names.s b/llvm/test/MC/RISCV/rv32-hypervisor-csr-names.s index aadee4fb4f3ad..79d87b3f2471c 100644 --- a/llvm/test/MC/RISCV/rv32-hypervisor-csr-names.s +++ b/llvm/test/MC/RISCV/rv32-hypervisor-csr-names.s @@ -219,3 +219,21 @@ csrrs t2, 0x214, zero csrrs t1, vsiph, zero # uimm12 csrrs t2, 0x254, zero + +## +# Hypervisor Trap Setup +## + +# hedelegh +# name +# CHECK-INST: csrrs t1, hedelegh, zero +# CHECK-ENC: encoding: [0x73,0x23,0x20,0x61] +# CHECK-INST-ALIAS: csrr t1, hedelegh +# uimm12 +# CHECK-INST: csrrs t2, hedelegh, zero +# CHECK-ENC: encoding: [0xf3,0x23,0x20,0x61] +# CHECK-INST-ALIAS: csrr t2, hedelegh +# name +csrrs t1, hedelegh, zero +# uimm12 +csrrs t2, 0x612, zero >From e41e745626caf701b2a21eb2577ead05b922f590 Mon Sep 17 00:00:00 2001 From: dong-miao Date: Sat, 4 Jan 2025 18:05:04 +0800 Subject: [PATCH 03/10] Update rv32-machine-csr-names.s --- llvm/test/MC/RISCV/rv32-machine-csr-names.s | 14 ++ 1 file changed, 14 insertions(+) diff --git a/llvm/test/MC/RISCV/rv32-machine-csr-names.s b/llvm/test/MC/RISCV/rv32-machine-csr-names.s index 3d527e382376e..9e929b7eddeed 100644 --- a/llvm/test/MC/RISCV/rv32-machine-csr-names.s +++ b/llvm/test/MC/RISCV/rv32-machine-csr-names.s @@ -22,6 +22,20 @@ csrrs t1, mstatush, zero # uimm12 csrrs t2, 0x310, zero +# medelegh +# name +# CHECK-INST: csrrs t1, medelegh, zero +# CHECK-ENC: encoding: [0x73,0x23,0x20,0x31] +# CHECK-INST-ALIAS: csrr t1, medelegh +# uimm12 +# CHECK-INST: csrrs t2, medelegh, zero +# CHECK-ENC: encoding: [0xf3,0x23,0x20,0x31] +# CHECK-INST-ALIAS: csrr t2, medelegh +# name +csrrs t1, medelegh, zero +# uimm12 +csrrs t2, 0x312, zero + # # Machine Configuration # >From ea2c1afaa0eede9cf9dfbf68d10fada108b0164b Mon Sep 17 00:00:00 2001 From: dong-miao Date: Sun, 5 Jan 2025 11:12:53 +0800 Subject: [PATCH 04/10] Update RISCVSystemOperands.td --- llvm/lib/Target/RISCV/RISCVSystemOperands.td | 2 ++ 1 file changed, 2 insertions(+) diff --git a/llvm/lib/Target/RISCV/RISCVSystemOperands.td b/llvm/lib/Target/RISCV/RISCVSystemOperands.td index 41b96e1497e70..21f912bbc84d1 100644 --- a/llvm/lib/Target/RISCV/RISCVSystemOperands.td +++ b/llvm/lib/Target/RISCV/RISCVSystemOperands.td @@ -158,6 +158,7 @@ def : SysReg<"hip", 0x644>; def : SysReg<"hvip", 0x645>; def : SysReg<"htinst", 0x64A>; def : SysReg<"hgeip", 0xE12>; +let isRV32Only = 1 in def : SysReg<"hedelegh", 0x612>; //===--===// @@ -240,6 +241,7 @@ def : SysReg<"mbadaddr", 0x343>; def : SysReg<"mip", 0x344>; def : SysReg<"mtinst", 0x34A>; def : SysReg<"mtval2", 0x34B>; +let isRV32Only = 1 in def : SysReg<"medelegh", 0x312>; //===--===// >From 6b074f3d744bdfaf2f4de9fa49484b25f76df3d4 Mon Sep 17 00:00:00 2001 From: dong-miao Date: Sun, 5 Jan 2025 11:30:33 +0800 Subject: [PATCH 05/10] Update rv32-only-csr-names.s --- llvm/test/MC/RISCV/rv32-only-csr-names.s | 4 1 file changed, 4 insertions(+) diff --git a/llvm/test/MC/RISCV/rv32-only-csr-names.s b/llvm/test/MC/RISCV/rv32-only-csr-names.s index db88eacf9396b..1604469210193 100644 --- a/llvm/test/MC/RISCV/rv32-only-csr-names.s +++ b/llvm/test/MC/RISCV/rv32-only-csr-names.s @@ -41,12 +41,16 @@ csrrs t1, henvcfgh, zero # CHECK-NEED-RV32: :[[@LIN
[clang] [llvm] [RISCV] Add Zilsd and Zclsd Extensions (PR #131094)
@@ -0,0 +1,36 @@ +//===-- RISCVInstrInfoZilsd.td -*- tablegen -*-===// +// +// Part of the LLVM Project, under the Apache License v2.0 with LLVM Exceptions. +// See https://llvm.org/LICENSE.txt for license information. +// SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception +// +//===--===// +// +// This file describes the RISC-V instructions from the standard 'Zilsd', +// Load/Store pair instructions extension. +// +//===--===// +// Instruction Class Templates +//===--===// + +let hasSideEffects = 0, mayLoad = 1, mayStore = 0 in +class ld_r +: RVInstI<0b011, OPC_LOAD, (outs RC:$rd), +(ins GPRMem:$rs1, simm12:$imm12), topperc wrote: The `ins` need to be indented 2 more spaced to align with `0b011` on the previous line. https://github.com/llvm/llvm-project/pull/131094 ___ cfe-commits mailing list cfe-commits@lists.llvm.org https://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-commits
[clang] [llvm] [RISCV] Add Zilsd and Zclsd Extensions (PR #131094)
@@ -0,0 +1,90 @@ +//===-- RISCVInstrInfoZclsd.td -*- tablegen -*-===// +// +// Part of the LLVM Project, under the Apache License v2.0 with LLVM Exceptions. +// See https://llvm.org/LICENSE.txt for license information. +// SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception +// +//===--===// +// This file describes the RISC-V instructions from the standard 'Zclsd', +// Compressed Load/Store pair instructions extension. +//===--===// +// Instruction Class Templates +//===--===// + +def GPRPairNoX0RV32Operand : AsmOperandClass { + let Name = "GPRPairNoX0RV32"; + let ParserMethod = "parseGPRPair"; + let PredicateMethod = "isGPRPairNoX0"; + let RenderMethod = "addRegOperands"; +} + +def GPRPairNoX0RV32 : RegisterOperand { + let ParserMatchClass = GPRPairNoX0RV32Operand; +} + +def GPRPairCRV32Operand : AsmOperandClass { + let Name = "GPRPairCRV32"; + let ParserMethod = "parseGPRPair"; + let PredicateMethod = "isGPRPairC"; + let RenderMethod = "addRegOperands"; +} + +def GPRPairCRV32 : RegisterOperand { + let ParserMatchClass = GPRPairCRV32Operand; +} + +let hasSideEffects = 0, mayLoad = 1, mayStore = 0 in +class PairCStackLoad funct3, string OpcodeStr, + DAGOperand RC, DAGOperand opnd> +: RVInst16CI; + +let hasSideEffects = 0, mayLoad = 0, mayStore = 1 in +class PairCStackStore funct3, string OpcodeStr, + DAGOperand RC, DAGOperand opnd> +: RVInst16CSS; + +let hasSideEffects = 0, mayLoad = 1, mayStore = 0 in +class PairCLoad_ri funct3, string OpcodeStr, + DAGOperand RC, DAGOperand opnd> +: RVInst16CL; + +let hasSideEffects = 0, mayLoad = 0, mayStore = 1 in +class PairCStore_rri funct3, string OpcodeStr, + DAGOperand RC, DAGOperand opnd> +: RVInst16CS; + +//===--===// +// Instructions +//===--===// + +let Predicates = [HasStdExtZclsd, IsRV32], DecoderNamespace = "ZcOverlap" in +def C_LDSP_RV32 : PairCStackLoad<0b011, "c.ldsp", GPRPairNoX0RV32, uimm9_lsb000>, + Sched<[WriteLDD, ReadMemBase]> { + let Inst{4-2} = imm{8-6}; + } + +let Predicates = [HasStdExtZclsd, IsRV32], DecoderNamespace = "ZcOverlap" in +def C_SDSP_RV32 : PairCStackStore<0b111, "c.sdsp", GPRPairRV32, uimm9_lsb000>, + Sched<[WriteSTD, ReadStoreData, ReadMemBase]> { + let Inst{9-7} = imm{8-6}; + } + +let Predicates = [HasStdExtZclsd, IsRV32], DecoderNamespace = "ZcOverlap" in +def C_LD_RV32 : PairCLoad_ri<0b011, "c.ld", GPRPairCRV32, uimm8_lsb000>, + Sched<[WriteLDD, ReadMemBase]> { + bits<8> imm; + let Inst{12-10} = imm{5-3}; + let Inst{6-5} = imm{7-6}; +} + +let Predicates = [HasStdExtZclsd, IsRV32], DecoderNamespace = "ZcOverlap" in +def C_SD_RV32 : PairCStore_rri<0b111, "c.sd", GPRPairCRV32, uimm8_lsb000>, + Sched<[WriteSTD, ReadStoreData, ReadMemBase]> { + bits<8> imm; + let Inst{12-10} = imm{5-3}; + let Inst{6-5} = imm{7-6}; +}// Predicates = [HasStdExtZclsd, IsRV32] topperc wrote: Missing CompressPats? They're considered part of the MC layer since they effect the assembler. https://github.com/llvm/llvm-project/pull/131094 ___ cfe-commits mailing list cfe-commits@lists.llvm.org https://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-commits
[clang] [llvm] [RISCV] Add Zilsd and Zclsd Extensions (PR #131094)
@@ -0,0 +1,36 @@ +//===-- RISCVInstrInfoZilsd.td -*- tablegen -*-===// +// +// Part of the LLVM Project, under the Apache License v2.0 with LLVM Exceptions. +// See https://llvm.org/LICENSE.txt for license information. +// SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception +// +//===--===// +// +// This file describes the RISC-V instructions from the standard 'Zilsd', +// Load/Store pair instructions extension. +// +//===--===// +// Instruction Class Templates +//===--===// + +let hasSideEffects = 0, mayLoad = 1, mayStore = 0 in +class ld_r +: RVInstI<0b011, OPC_LOAD, (outs RC:$rd), +(ins GPRMem:$rs1, simm12:$imm12), + opcodestr, "${rd}, ${imm12}(${rs1})">; + +let hasSideEffects = 0, mayLoad = 0, mayStore = 1 in +class sd_r +: RVInstS<0b011, OPC_STORE, (outs), + (ins RC:$rs2, GPRMem:$rs1, simm12:$imm12), topperc wrote: Indent `ins` one more space https://github.com/llvm/llvm-project/pull/131094 ___ cfe-commits mailing list cfe-commits@lists.llvm.org https://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-commits
[clang] [llvm] [RISCV] Add Zilsd and Zclsd Extensions (PR #131094)
@@ -0,0 +1,90 @@ +//===-- RISCVInstrInfoZclsd.td -*- tablegen -*-===// +// +// Part of the LLVM Project, under the Apache License v2.0 with LLVM Exceptions. +// See https://llvm.org/LICENSE.txt for license information. +// SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception +// +//===--===// +// This file describes the RISC-V instructions from the standard 'Zclsd', +// Compressed Load/Store pair instructions extension. +//===--===// +// Instruction Class Templates topperc wrote: Please add a blank line and another horizontal line to separate this from the file header. https://github.com/llvm/llvm-project/pull/131094 ___ cfe-commits mailing list cfe-commits@lists.llvm.org https://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-commits
[clang] [llvm] [RISCV] Add Zilsd and Zclsd Extensions (PR #131094)
@@ -0,0 +1,36 @@ +//===-- RISCVInstrInfoZilsd.td -*- tablegen -*-===// +// +// Part of the LLVM Project, under the Apache License v2.0 with LLVM Exceptions. +// See https://llvm.org/LICENSE.txt for license information. +// SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception +// +//===--===// +// +// This file describes the RISC-V instructions from the standard 'Zilsd', +// Load/Store pair instructions extension. +// +//===--===// +// Instruction Class Templates +//===--===// + +let hasSideEffects = 0, mayLoad = 1, mayStore = 0 in +class ld_r +: RVInstI<0b011, OPC_LOAD, (outs RC:$rd), +(ins GPRMem:$rs1, simm12:$imm12), + opcodestr, "${rd}, ${imm12}(${rs1})">; + +let hasSideEffects = 0, mayLoad = 0, mayStore = 1 in +class sd_r topperc wrote: PairStore_rri? https://github.com/llvm/llvm-project/pull/131094 ___ cfe-commits mailing list cfe-commits@lists.llvm.org https://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-commits
[clang] [llvm] [RISCV] Add Zilsd and Zclsd Extensions (PR #131094)
@@ -0,0 +1,36 @@ +//===-- RISCVInstrInfoZilsd.td -*- tablegen -*-===// +// +// Part of the LLVM Project, under the Apache License v2.0 with LLVM Exceptions. +// See https://llvm.org/LICENSE.txt for license information. +// SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception +// +//===--===// +// +// This file describes the RISC-V instructions from the standard 'Zilsd', +// Load/Store pair instructions extension. +// +//===--===// +// Instruction Class Templates +//===--===// + +let hasSideEffects = 0, mayLoad = 1, mayStore = 0 in +class ld_r topperc wrote: ld_r -> PairLoad_ri? https://github.com/llvm/llvm-project/pull/131094 ___ cfe-commits mailing list cfe-commits@lists.llvm.org https://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-commits
[clang] [llvm] [RISCV] Add Zilsd and Zclsd Extensions (PR #131094)
@@ -0,0 +1,90 @@ +//===-- RISCVInstrInfoZclsd.td -*- tablegen -*-===// +// +// Part of the LLVM Project, under the Apache License v2.0 with LLVM Exceptions. +// See https://llvm.org/LICENSE.txt for license information. +// SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception +// +//===--===// +// This file describes the RISC-V instructions from the standard 'Zclsd', +// Compressed Load/Store pair instructions extension. +//===--===// +// Instruction Class Templates +//===--===// + +def GPRPairNoX0RV32Operand : AsmOperandClass { + let Name = "GPRPairNoX0RV32"; + let ParserMethod = "parseGPRPair"; + let PredicateMethod = "isGPRPairNoX0"; + let RenderMethod = "addRegOperands"; +} + +def GPRPairNoX0RV32 : RegisterOperand { + let ParserMatchClass = GPRPairNoX0RV32Operand; +} + +def GPRPairCRV32Operand : AsmOperandClass { + let Name = "GPRPairCRV32"; + let ParserMethod = "parseGPRPair"; + let PredicateMethod = "isGPRPairC"; + let RenderMethod = "addRegOperands"; +} + +def GPRPairCRV32 : RegisterOperand { + let ParserMatchClass = GPRPairCRV32Operand; +} + +let hasSideEffects = 0, mayLoad = 1, mayStore = 0 in +class PairCStackLoad funct3, string OpcodeStr, + DAGOperand RC, DAGOperand opnd> +: RVInst16CI; + +let hasSideEffects = 0, mayLoad = 0, mayStore = 1 in +class PairCStackStore funct3, string OpcodeStr, + DAGOperand RC, DAGOperand opnd> +: RVInst16CSS; + +let hasSideEffects = 0, mayLoad = 1, mayStore = 0 in +class PairCLoad_ri funct3, string OpcodeStr, + DAGOperand RC, DAGOperand opnd> +: RVInst16CL; + +let hasSideEffects = 0, mayLoad = 0, mayStore = 1 in +class PairCStore_rri funct3, string OpcodeStr, + DAGOperand RC, DAGOperand opnd> +: RVInst16CS; + +//===--===// +// Instructions +//===--===// + +let Predicates = [HasStdExtZclsd, IsRV32], DecoderNamespace = "ZcOverlap" in +def C_LDSP_RV32 : PairCStackLoad<0b011, "c.ldsp", GPRPairNoX0RV32, uimm9_lsb000>, + Sched<[WriteLDD, ReadMemBase]> { + let Inst{4-2} = imm{8-6}; + } topperc wrote: Closing curly brace should be at the start of the line. https://github.com/llvm/llvm-project/pull/131094 ___ cfe-commits mailing list cfe-commits@lists.llvm.org https://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-commits
[clang] [llvm] [RISCV] Add Zilsd and Zclsd Extensions (PR #131094)
@@ -401,6 +408,14 @@ def FeatureStdExtZcf "Compressed Single-Precision Floating-Point Instructions", [FeatureStdExtF, FeatureStdExtZca]>; +def FeatureStdExtZclsd +: RISCVExtension<1, 0, + "Compressed Load/Store pair instructions", + [FeatureStdExtZilsd,FeatureStdExtZca]>; +def HasStdExtZclsd : Predicate<"Subtarget->hasStdExtZclsd() && !Subtarget->hasStdExtZcf()">, topperc wrote: The conflict with Zcf needs to be checked in `RISCVISAInfo::checkDependency` in llvm/lib/TargetParser/RISCVISAInfo.cpp https://github.com/llvm/llvm-project/pull/131094 ___ cfe-commits mailing list cfe-commits@lists.llvm.org https://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-commits
[clang] [llvm] [RISCV] Add Zilsd and Zclsd Extensions (PR #131094)
https://github.com/dong-miao updated https://github.com/llvm/llvm-project/pull/131094 >From bcdf9641037507b855a20a8ba5d26b127dd248e8 Mon Sep 17 00:00:00 2001 From: dong-miao Date: Sat, 4 Jan 2025 17:53:58 +0800 Subject: [PATCH 01/19] Update RISCVSystemOperands.td --- llvm/lib/Target/RISCV/RISCVSystemOperands.td | 2 ++ 1 file changed, 2 insertions(+) diff --git a/llvm/lib/Target/RISCV/RISCVSystemOperands.td b/llvm/lib/Target/RISCV/RISCVSystemOperands.td index 39853cf13a920..41b96e1497e70 100644 --- a/llvm/lib/Target/RISCV/RISCVSystemOperands.td +++ b/llvm/lib/Target/RISCV/RISCVSystemOperands.td @@ -158,6 +158,7 @@ def : SysReg<"hip", 0x644>; def : SysReg<"hvip", 0x645>; def : SysReg<"htinst", 0x64A>; def : SysReg<"hgeip", 0xE12>; +def : SysReg<"hedelegh", 0x612>; //===--===// // Hypervisor Configuration @@ -239,6 +240,7 @@ def : SysReg<"mbadaddr", 0x343>; def : SysReg<"mip", 0x344>; def : SysReg<"mtinst", 0x34A>; def : SysReg<"mtval2", 0x34B>; +def : SysReg<"medelegh", 0x312>; //===--===// // Machine Configuration >From 30e3fbe156581efe49a3c6def9dd444dc546f134 Mon Sep 17 00:00:00 2001 From: dong-miao Date: Sat, 4 Jan 2025 18:02:40 +0800 Subject: [PATCH 02/19] Update rv32-hypervisor-csr-names.s --- llvm/test/MC/RISCV/rv32-hypervisor-csr-names.s | 18 ++ 1 file changed, 18 insertions(+) diff --git a/llvm/test/MC/RISCV/rv32-hypervisor-csr-names.s b/llvm/test/MC/RISCV/rv32-hypervisor-csr-names.s index aadee4fb4f3ad..79d87b3f2471c 100644 --- a/llvm/test/MC/RISCV/rv32-hypervisor-csr-names.s +++ b/llvm/test/MC/RISCV/rv32-hypervisor-csr-names.s @@ -219,3 +219,21 @@ csrrs t2, 0x214, zero csrrs t1, vsiph, zero # uimm12 csrrs t2, 0x254, zero + +## +# Hypervisor Trap Setup +## + +# hedelegh +# name +# CHECK-INST: csrrs t1, hedelegh, zero +# CHECK-ENC: encoding: [0x73,0x23,0x20,0x61] +# CHECK-INST-ALIAS: csrr t1, hedelegh +# uimm12 +# CHECK-INST: csrrs t2, hedelegh, zero +# CHECK-ENC: encoding: [0xf3,0x23,0x20,0x61] +# CHECK-INST-ALIAS: csrr t2, hedelegh +# name +csrrs t1, hedelegh, zero +# uimm12 +csrrs t2, 0x612, zero >From e41e745626caf701b2a21eb2577ead05b922f590 Mon Sep 17 00:00:00 2001 From: dong-miao Date: Sat, 4 Jan 2025 18:05:04 +0800 Subject: [PATCH 03/19] Update rv32-machine-csr-names.s --- llvm/test/MC/RISCV/rv32-machine-csr-names.s | 14 ++ 1 file changed, 14 insertions(+) diff --git a/llvm/test/MC/RISCV/rv32-machine-csr-names.s b/llvm/test/MC/RISCV/rv32-machine-csr-names.s index 3d527e382376e..9e929b7eddeed 100644 --- a/llvm/test/MC/RISCV/rv32-machine-csr-names.s +++ b/llvm/test/MC/RISCV/rv32-machine-csr-names.s @@ -22,6 +22,20 @@ csrrs t1, mstatush, zero # uimm12 csrrs t2, 0x310, zero +# medelegh +# name +# CHECK-INST: csrrs t1, medelegh, zero +# CHECK-ENC: encoding: [0x73,0x23,0x20,0x31] +# CHECK-INST-ALIAS: csrr t1, medelegh +# uimm12 +# CHECK-INST: csrrs t2, medelegh, zero +# CHECK-ENC: encoding: [0xf3,0x23,0x20,0x31] +# CHECK-INST-ALIAS: csrr t2, medelegh +# name +csrrs t1, medelegh, zero +# uimm12 +csrrs t2, 0x312, zero + # # Machine Configuration # >From ea2c1afaa0eede9cf9dfbf68d10fada108b0164b Mon Sep 17 00:00:00 2001 From: dong-miao Date: Sun, 5 Jan 2025 11:12:53 +0800 Subject: [PATCH 04/19] Update RISCVSystemOperands.td --- llvm/lib/Target/RISCV/RISCVSystemOperands.td | 2 ++ 1 file changed, 2 insertions(+) diff --git a/llvm/lib/Target/RISCV/RISCVSystemOperands.td b/llvm/lib/Target/RISCV/RISCVSystemOperands.td index 41b96e1497e70..21f912bbc84d1 100644 --- a/llvm/lib/Target/RISCV/RISCVSystemOperands.td +++ b/llvm/lib/Target/RISCV/RISCVSystemOperands.td @@ -158,6 +158,7 @@ def : SysReg<"hip", 0x644>; def : SysReg<"hvip", 0x645>; def : SysReg<"htinst", 0x64A>; def : SysReg<"hgeip", 0xE12>; +let isRV32Only = 1 in def : SysReg<"hedelegh", 0x612>; //===--===// @@ -240,6 +241,7 @@ def : SysReg<"mbadaddr", 0x343>; def : SysReg<"mip", 0x344>; def : SysReg<"mtinst", 0x34A>; def : SysReg<"mtval2", 0x34B>; +let isRV32Only = 1 in def : SysReg<"medelegh", 0x312>; //===--===// >From 6b074f3d744bdfaf2f4de9fa49484b25f76df3d4 Mon Sep 17 00:00:00 2001 From: dong-miao Date: Sun, 5 Jan 2025 11:30:33 +0800 Subject: [PATCH 05/19] Update rv32-only-csr-names.s --- llvm/test/MC/RISCV/rv32-only-csr-names.s | 4 1 file changed, 4 insertions(+) diff --git a/llvm/test/MC/RISCV/rv32-only-csr-names.s b/llvm/test/MC/RISCV/rv32-only-csr-names.s index db88eacf9396b..1604469210193 100644 --- a/llvm/test/MC/RISCV/rv32-only-csr-names.s +++ b/llvm/test/MC/RISCV/rv32-only-csr-names.s @@ -41,12 +41,16 @@ csrrs t1, henvcfgh, zero # CHECK-NEED-RV32: :[[@LIN
[clang] [llvm] [RISCV] Add Zilsd and Zclsd Extensions (PR #131094)
https://github.com/dong-miao updated https://github.com/llvm/llvm-project/pull/131094 >From bcdf9641037507b855a20a8ba5d26b127dd248e8 Mon Sep 17 00:00:00 2001 From: dong-miao Date: Sat, 4 Jan 2025 17:53:58 +0800 Subject: [PATCH 01/18] Update RISCVSystemOperands.td --- llvm/lib/Target/RISCV/RISCVSystemOperands.td | 2 ++ 1 file changed, 2 insertions(+) diff --git a/llvm/lib/Target/RISCV/RISCVSystemOperands.td b/llvm/lib/Target/RISCV/RISCVSystemOperands.td index 39853cf13a920..41b96e1497e70 100644 --- a/llvm/lib/Target/RISCV/RISCVSystemOperands.td +++ b/llvm/lib/Target/RISCV/RISCVSystemOperands.td @@ -158,6 +158,7 @@ def : SysReg<"hip", 0x644>; def : SysReg<"hvip", 0x645>; def : SysReg<"htinst", 0x64A>; def : SysReg<"hgeip", 0xE12>; +def : SysReg<"hedelegh", 0x612>; //===--===// // Hypervisor Configuration @@ -239,6 +240,7 @@ def : SysReg<"mbadaddr", 0x343>; def : SysReg<"mip", 0x344>; def : SysReg<"mtinst", 0x34A>; def : SysReg<"mtval2", 0x34B>; +def : SysReg<"medelegh", 0x312>; //===--===// // Machine Configuration >From 30e3fbe156581efe49a3c6def9dd444dc546f134 Mon Sep 17 00:00:00 2001 From: dong-miao Date: Sat, 4 Jan 2025 18:02:40 +0800 Subject: [PATCH 02/18] Update rv32-hypervisor-csr-names.s --- llvm/test/MC/RISCV/rv32-hypervisor-csr-names.s | 18 ++ 1 file changed, 18 insertions(+) diff --git a/llvm/test/MC/RISCV/rv32-hypervisor-csr-names.s b/llvm/test/MC/RISCV/rv32-hypervisor-csr-names.s index aadee4fb4f3ad..79d87b3f2471c 100644 --- a/llvm/test/MC/RISCV/rv32-hypervisor-csr-names.s +++ b/llvm/test/MC/RISCV/rv32-hypervisor-csr-names.s @@ -219,3 +219,21 @@ csrrs t2, 0x214, zero csrrs t1, vsiph, zero # uimm12 csrrs t2, 0x254, zero + +## +# Hypervisor Trap Setup +## + +# hedelegh +# name +# CHECK-INST: csrrs t1, hedelegh, zero +# CHECK-ENC: encoding: [0x73,0x23,0x20,0x61] +# CHECK-INST-ALIAS: csrr t1, hedelegh +# uimm12 +# CHECK-INST: csrrs t2, hedelegh, zero +# CHECK-ENC: encoding: [0xf3,0x23,0x20,0x61] +# CHECK-INST-ALIAS: csrr t2, hedelegh +# name +csrrs t1, hedelegh, zero +# uimm12 +csrrs t2, 0x612, zero >From e41e745626caf701b2a21eb2577ead05b922f590 Mon Sep 17 00:00:00 2001 From: dong-miao Date: Sat, 4 Jan 2025 18:05:04 +0800 Subject: [PATCH 03/18] Update rv32-machine-csr-names.s --- llvm/test/MC/RISCV/rv32-machine-csr-names.s | 14 ++ 1 file changed, 14 insertions(+) diff --git a/llvm/test/MC/RISCV/rv32-machine-csr-names.s b/llvm/test/MC/RISCV/rv32-machine-csr-names.s index 3d527e382376e..9e929b7eddeed 100644 --- a/llvm/test/MC/RISCV/rv32-machine-csr-names.s +++ b/llvm/test/MC/RISCV/rv32-machine-csr-names.s @@ -22,6 +22,20 @@ csrrs t1, mstatush, zero # uimm12 csrrs t2, 0x310, zero +# medelegh +# name +# CHECK-INST: csrrs t1, medelegh, zero +# CHECK-ENC: encoding: [0x73,0x23,0x20,0x31] +# CHECK-INST-ALIAS: csrr t1, medelegh +# uimm12 +# CHECK-INST: csrrs t2, medelegh, zero +# CHECK-ENC: encoding: [0xf3,0x23,0x20,0x31] +# CHECK-INST-ALIAS: csrr t2, medelegh +# name +csrrs t1, medelegh, zero +# uimm12 +csrrs t2, 0x312, zero + # # Machine Configuration # >From ea2c1afaa0eede9cf9dfbf68d10fada108b0164b Mon Sep 17 00:00:00 2001 From: dong-miao Date: Sun, 5 Jan 2025 11:12:53 +0800 Subject: [PATCH 04/18] Update RISCVSystemOperands.td --- llvm/lib/Target/RISCV/RISCVSystemOperands.td | 2 ++ 1 file changed, 2 insertions(+) diff --git a/llvm/lib/Target/RISCV/RISCVSystemOperands.td b/llvm/lib/Target/RISCV/RISCVSystemOperands.td index 41b96e1497e70..21f912bbc84d1 100644 --- a/llvm/lib/Target/RISCV/RISCVSystemOperands.td +++ b/llvm/lib/Target/RISCV/RISCVSystemOperands.td @@ -158,6 +158,7 @@ def : SysReg<"hip", 0x644>; def : SysReg<"hvip", 0x645>; def : SysReg<"htinst", 0x64A>; def : SysReg<"hgeip", 0xE12>; +let isRV32Only = 1 in def : SysReg<"hedelegh", 0x612>; //===--===// @@ -240,6 +241,7 @@ def : SysReg<"mbadaddr", 0x343>; def : SysReg<"mip", 0x344>; def : SysReg<"mtinst", 0x34A>; def : SysReg<"mtval2", 0x34B>; +let isRV32Only = 1 in def : SysReg<"medelegh", 0x312>; //===--===// >From 6b074f3d744bdfaf2f4de9fa49484b25f76df3d4 Mon Sep 17 00:00:00 2001 From: dong-miao Date: Sun, 5 Jan 2025 11:30:33 +0800 Subject: [PATCH 05/18] Update rv32-only-csr-names.s --- llvm/test/MC/RISCV/rv32-only-csr-names.s | 4 1 file changed, 4 insertions(+) diff --git a/llvm/test/MC/RISCV/rv32-only-csr-names.s b/llvm/test/MC/RISCV/rv32-only-csr-names.s index db88eacf9396b..1604469210193 100644 --- a/llvm/test/MC/RISCV/rv32-only-csr-names.s +++ b/llvm/test/MC/RISCV/rv32-only-csr-names.s @@ -41,12 +41,16 @@ csrrs t1, henvcfgh, zero # CHECK-NEED-RV32: :[[@LIN
[clang] [llvm] [RISCV] Add Zilsd and Zclsd Extensions (PR #131094)
https://github.com/dong-miao updated https://github.com/llvm/llvm-project/pull/131094 >From bcdf9641037507b855a20a8ba5d26b127dd248e8 Mon Sep 17 00:00:00 2001 From: dong-miao Date: Sat, 4 Jan 2025 17:53:58 +0800 Subject: [PATCH 01/17] Update RISCVSystemOperands.td --- llvm/lib/Target/RISCV/RISCVSystemOperands.td | 2 ++ 1 file changed, 2 insertions(+) diff --git a/llvm/lib/Target/RISCV/RISCVSystemOperands.td b/llvm/lib/Target/RISCV/RISCVSystemOperands.td index 39853cf13a920..41b96e1497e70 100644 --- a/llvm/lib/Target/RISCV/RISCVSystemOperands.td +++ b/llvm/lib/Target/RISCV/RISCVSystemOperands.td @@ -158,6 +158,7 @@ def : SysReg<"hip", 0x644>; def : SysReg<"hvip", 0x645>; def : SysReg<"htinst", 0x64A>; def : SysReg<"hgeip", 0xE12>; +def : SysReg<"hedelegh", 0x612>; //===--===// // Hypervisor Configuration @@ -239,6 +240,7 @@ def : SysReg<"mbadaddr", 0x343>; def : SysReg<"mip", 0x344>; def : SysReg<"mtinst", 0x34A>; def : SysReg<"mtval2", 0x34B>; +def : SysReg<"medelegh", 0x312>; //===--===// // Machine Configuration >From 30e3fbe156581efe49a3c6def9dd444dc546f134 Mon Sep 17 00:00:00 2001 From: dong-miao Date: Sat, 4 Jan 2025 18:02:40 +0800 Subject: [PATCH 02/17] Update rv32-hypervisor-csr-names.s --- llvm/test/MC/RISCV/rv32-hypervisor-csr-names.s | 18 ++ 1 file changed, 18 insertions(+) diff --git a/llvm/test/MC/RISCV/rv32-hypervisor-csr-names.s b/llvm/test/MC/RISCV/rv32-hypervisor-csr-names.s index aadee4fb4f3ad..79d87b3f2471c 100644 --- a/llvm/test/MC/RISCV/rv32-hypervisor-csr-names.s +++ b/llvm/test/MC/RISCV/rv32-hypervisor-csr-names.s @@ -219,3 +219,21 @@ csrrs t2, 0x214, zero csrrs t1, vsiph, zero # uimm12 csrrs t2, 0x254, zero + +## +# Hypervisor Trap Setup +## + +# hedelegh +# name +# CHECK-INST: csrrs t1, hedelegh, zero +# CHECK-ENC: encoding: [0x73,0x23,0x20,0x61] +# CHECK-INST-ALIAS: csrr t1, hedelegh +# uimm12 +# CHECK-INST: csrrs t2, hedelegh, zero +# CHECK-ENC: encoding: [0xf3,0x23,0x20,0x61] +# CHECK-INST-ALIAS: csrr t2, hedelegh +# name +csrrs t1, hedelegh, zero +# uimm12 +csrrs t2, 0x612, zero >From e41e745626caf701b2a21eb2577ead05b922f590 Mon Sep 17 00:00:00 2001 From: dong-miao Date: Sat, 4 Jan 2025 18:05:04 +0800 Subject: [PATCH 03/17] Update rv32-machine-csr-names.s --- llvm/test/MC/RISCV/rv32-machine-csr-names.s | 14 ++ 1 file changed, 14 insertions(+) diff --git a/llvm/test/MC/RISCV/rv32-machine-csr-names.s b/llvm/test/MC/RISCV/rv32-machine-csr-names.s index 3d527e382376e..9e929b7eddeed 100644 --- a/llvm/test/MC/RISCV/rv32-machine-csr-names.s +++ b/llvm/test/MC/RISCV/rv32-machine-csr-names.s @@ -22,6 +22,20 @@ csrrs t1, mstatush, zero # uimm12 csrrs t2, 0x310, zero +# medelegh +# name +# CHECK-INST: csrrs t1, medelegh, zero +# CHECK-ENC: encoding: [0x73,0x23,0x20,0x31] +# CHECK-INST-ALIAS: csrr t1, medelegh +# uimm12 +# CHECK-INST: csrrs t2, medelegh, zero +# CHECK-ENC: encoding: [0xf3,0x23,0x20,0x31] +# CHECK-INST-ALIAS: csrr t2, medelegh +# name +csrrs t1, medelegh, zero +# uimm12 +csrrs t2, 0x312, zero + # # Machine Configuration # >From ea2c1afaa0eede9cf9dfbf68d10fada108b0164b Mon Sep 17 00:00:00 2001 From: dong-miao Date: Sun, 5 Jan 2025 11:12:53 +0800 Subject: [PATCH 04/17] Update RISCVSystemOperands.td --- llvm/lib/Target/RISCV/RISCVSystemOperands.td | 2 ++ 1 file changed, 2 insertions(+) diff --git a/llvm/lib/Target/RISCV/RISCVSystemOperands.td b/llvm/lib/Target/RISCV/RISCVSystemOperands.td index 41b96e1497e70..21f912bbc84d1 100644 --- a/llvm/lib/Target/RISCV/RISCVSystemOperands.td +++ b/llvm/lib/Target/RISCV/RISCVSystemOperands.td @@ -158,6 +158,7 @@ def : SysReg<"hip", 0x644>; def : SysReg<"hvip", 0x645>; def : SysReg<"htinst", 0x64A>; def : SysReg<"hgeip", 0xE12>; +let isRV32Only = 1 in def : SysReg<"hedelegh", 0x612>; //===--===// @@ -240,6 +241,7 @@ def : SysReg<"mbadaddr", 0x343>; def : SysReg<"mip", 0x344>; def : SysReg<"mtinst", 0x34A>; def : SysReg<"mtval2", 0x34B>; +let isRV32Only = 1 in def : SysReg<"medelegh", 0x312>; //===--===// >From 6b074f3d744bdfaf2f4de9fa49484b25f76df3d4 Mon Sep 17 00:00:00 2001 From: dong-miao Date: Sun, 5 Jan 2025 11:30:33 +0800 Subject: [PATCH 05/17] Update rv32-only-csr-names.s --- llvm/test/MC/RISCV/rv32-only-csr-names.s | 4 1 file changed, 4 insertions(+) diff --git a/llvm/test/MC/RISCV/rv32-only-csr-names.s b/llvm/test/MC/RISCV/rv32-only-csr-names.s index db88eacf9396b..1604469210193 100644 --- a/llvm/test/MC/RISCV/rv32-only-csr-names.s +++ b/llvm/test/MC/RISCV/rv32-only-csr-names.s @@ -41,12 +41,16 @@ csrrs t1, henvcfgh, zero # CHECK-NEED-RV32: :[[@LIN
[clang] [llvm] [RISCV] Add Zilsd and Zclsd Extensions (PR #131094)
https://github.com/dong-miao updated https://github.com/llvm/llvm-project/pull/131094 >From bcdf9641037507b855a20a8ba5d26b127dd248e8 Mon Sep 17 00:00:00 2001 From: dong-miao Date: Sat, 4 Jan 2025 17:53:58 +0800 Subject: [PATCH 01/16] Update RISCVSystemOperands.td --- llvm/lib/Target/RISCV/RISCVSystemOperands.td | 2 ++ 1 file changed, 2 insertions(+) diff --git a/llvm/lib/Target/RISCV/RISCVSystemOperands.td b/llvm/lib/Target/RISCV/RISCVSystemOperands.td index 39853cf13a920..41b96e1497e70 100644 --- a/llvm/lib/Target/RISCV/RISCVSystemOperands.td +++ b/llvm/lib/Target/RISCV/RISCVSystemOperands.td @@ -158,6 +158,7 @@ def : SysReg<"hip", 0x644>; def : SysReg<"hvip", 0x645>; def : SysReg<"htinst", 0x64A>; def : SysReg<"hgeip", 0xE12>; +def : SysReg<"hedelegh", 0x612>; //===--===// // Hypervisor Configuration @@ -239,6 +240,7 @@ def : SysReg<"mbadaddr", 0x343>; def : SysReg<"mip", 0x344>; def : SysReg<"mtinst", 0x34A>; def : SysReg<"mtval2", 0x34B>; +def : SysReg<"medelegh", 0x312>; //===--===// // Machine Configuration >From 30e3fbe156581efe49a3c6def9dd444dc546f134 Mon Sep 17 00:00:00 2001 From: dong-miao Date: Sat, 4 Jan 2025 18:02:40 +0800 Subject: [PATCH 02/16] Update rv32-hypervisor-csr-names.s --- llvm/test/MC/RISCV/rv32-hypervisor-csr-names.s | 18 ++ 1 file changed, 18 insertions(+) diff --git a/llvm/test/MC/RISCV/rv32-hypervisor-csr-names.s b/llvm/test/MC/RISCV/rv32-hypervisor-csr-names.s index aadee4fb4f3ad..79d87b3f2471c 100644 --- a/llvm/test/MC/RISCV/rv32-hypervisor-csr-names.s +++ b/llvm/test/MC/RISCV/rv32-hypervisor-csr-names.s @@ -219,3 +219,21 @@ csrrs t2, 0x214, zero csrrs t1, vsiph, zero # uimm12 csrrs t2, 0x254, zero + +## +# Hypervisor Trap Setup +## + +# hedelegh +# name +# CHECK-INST: csrrs t1, hedelegh, zero +# CHECK-ENC: encoding: [0x73,0x23,0x20,0x61] +# CHECK-INST-ALIAS: csrr t1, hedelegh +# uimm12 +# CHECK-INST: csrrs t2, hedelegh, zero +# CHECK-ENC: encoding: [0xf3,0x23,0x20,0x61] +# CHECK-INST-ALIAS: csrr t2, hedelegh +# name +csrrs t1, hedelegh, zero +# uimm12 +csrrs t2, 0x612, zero >From e41e745626caf701b2a21eb2577ead05b922f590 Mon Sep 17 00:00:00 2001 From: dong-miao Date: Sat, 4 Jan 2025 18:05:04 +0800 Subject: [PATCH 03/16] Update rv32-machine-csr-names.s --- llvm/test/MC/RISCV/rv32-machine-csr-names.s | 14 ++ 1 file changed, 14 insertions(+) diff --git a/llvm/test/MC/RISCV/rv32-machine-csr-names.s b/llvm/test/MC/RISCV/rv32-machine-csr-names.s index 3d527e382376e..9e929b7eddeed 100644 --- a/llvm/test/MC/RISCV/rv32-machine-csr-names.s +++ b/llvm/test/MC/RISCV/rv32-machine-csr-names.s @@ -22,6 +22,20 @@ csrrs t1, mstatush, zero # uimm12 csrrs t2, 0x310, zero +# medelegh +# name +# CHECK-INST: csrrs t1, medelegh, zero +# CHECK-ENC: encoding: [0x73,0x23,0x20,0x31] +# CHECK-INST-ALIAS: csrr t1, medelegh +# uimm12 +# CHECK-INST: csrrs t2, medelegh, zero +# CHECK-ENC: encoding: [0xf3,0x23,0x20,0x31] +# CHECK-INST-ALIAS: csrr t2, medelegh +# name +csrrs t1, medelegh, zero +# uimm12 +csrrs t2, 0x312, zero + # # Machine Configuration # >From ea2c1afaa0eede9cf9dfbf68d10fada108b0164b Mon Sep 17 00:00:00 2001 From: dong-miao Date: Sun, 5 Jan 2025 11:12:53 +0800 Subject: [PATCH 04/16] Update RISCVSystemOperands.td --- llvm/lib/Target/RISCV/RISCVSystemOperands.td | 2 ++ 1 file changed, 2 insertions(+) diff --git a/llvm/lib/Target/RISCV/RISCVSystemOperands.td b/llvm/lib/Target/RISCV/RISCVSystemOperands.td index 41b96e1497e70..21f912bbc84d1 100644 --- a/llvm/lib/Target/RISCV/RISCVSystemOperands.td +++ b/llvm/lib/Target/RISCV/RISCVSystemOperands.td @@ -158,6 +158,7 @@ def : SysReg<"hip", 0x644>; def : SysReg<"hvip", 0x645>; def : SysReg<"htinst", 0x64A>; def : SysReg<"hgeip", 0xE12>; +let isRV32Only = 1 in def : SysReg<"hedelegh", 0x612>; //===--===// @@ -240,6 +241,7 @@ def : SysReg<"mbadaddr", 0x343>; def : SysReg<"mip", 0x344>; def : SysReg<"mtinst", 0x34A>; def : SysReg<"mtval2", 0x34B>; +let isRV32Only = 1 in def : SysReg<"medelegh", 0x312>; //===--===// >From 6b074f3d744bdfaf2f4de9fa49484b25f76df3d4 Mon Sep 17 00:00:00 2001 From: dong-miao Date: Sun, 5 Jan 2025 11:30:33 +0800 Subject: [PATCH 05/16] Update rv32-only-csr-names.s --- llvm/test/MC/RISCV/rv32-only-csr-names.s | 4 1 file changed, 4 insertions(+) diff --git a/llvm/test/MC/RISCV/rv32-only-csr-names.s b/llvm/test/MC/RISCV/rv32-only-csr-names.s index db88eacf9396b..1604469210193 100644 --- a/llvm/test/MC/RISCV/rv32-only-csr-names.s +++ b/llvm/test/MC/RISCV/rv32-only-csr-names.s @@ -41,12 +41,16 @@ csrrs t1, henvcfgh, zero # CHECK-NEED-RV32: :[[@LIN
[clang] [llvm] [RISCV] Add Zilsd and Zclsd Extensions (PR #131094)
https://github.com/dong-miao updated https://github.com/llvm/llvm-project/pull/131094 >From bcdf9641037507b855a20a8ba5d26b127dd248e8 Mon Sep 17 00:00:00 2001 From: dong-miao Date: Sat, 4 Jan 2025 17:53:58 +0800 Subject: [PATCH 01/13] Update RISCVSystemOperands.td --- llvm/lib/Target/RISCV/RISCVSystemOperands.td | 2 ++ 1 file changed, 2 insertions(+) diff --git a/llvm/lib/Target/RISCV/RISCVSystemOperands.td b/llvm/lib/Target/RISCV/RISCVSystemOperands.td index 39853cf13a920..41b96e1497e70 100644 --- a/llvm/lib/Target/RISCV/RISCVSystemOperands.td +++ b/llvm/lib/Target/RISCV/RISCVSystemOperands.td @@ -158,6 +158,7 @@ def : SysReg<"hip", 0x644>; def : SysReg<"hvip", 0x645>; def : SysReg<"htinst", 0x64A>; def : SysReg<"hgeip", 0xE12>; +def : SysReg<"hedelegh", 0x612>; //===--===// // Hypervisor Configuration @@ -239,6 +240,7 @@ def : SysReg<"mbadaddr", 0x343>; def : SysReg<"mip", 0x344>; def : SysReg<"mtinst", 0x34A>; def : SysReg<"mtval2", 0x34B>; +def : SysReg<"medelegh", 0x312>; //===--===// // Machine Configuration >From 30e3fbe156581efe49a3c6def9dd444dc546f134 Mon Sep 17 00:00:00 2001 From: dong-miao Date: Sat, 4 Jan 2025 18:02:40 +0800 Subject: [PATCH 02/13] Update rv32-hypervisor-csr-names.s --- llvm/test/MC/RISCV/rv32-hypervisor-csr-names.s | 18 ++ 1 file changed, 18 insertions(+) diff --git a/llvm/test/MC/RISCV/rv32-hypervisor-csr-names.s b/llvm/test/MC/RISCV/rv32-hypervisor-csr-names.s index aadee4fb4f3ad..79d87b3f2471c 100644 --- a/llvm/test/MC/RISCV/rv32-hypervisor-csr-names.s +++ b/llvm/test/MC/RISCV/rv32-hypervisor-csr-names.s @@ -219,3 +219,21 @@ csrrs t2, 0x214, zero csrrs t1, vsiph, zero # uimm12 csrrs t2, 0x254, zero + +## +# Hypervisor Trap Setup +## + +# hedelegh +# name +# CHECK-INST: csrrs t1, hedelegh, zero +# CHECK-ENC: encoding: [0x73,0x23,0x20,0x61] +# CHECK-INST-ALIAS: csrr t1, hedelegh +# uimm12 +# CHECK-INST: csrrs t2, hedelegh, zero +# CHECK-ENC: encoding: [0xf3,0x23,0x20,0x61] +# CHECK-INST-ALIAS: csrr t2, hedelegh +# name +csrrs t1, hedelegh, zero +# uimm12 +csrrs t2, 0x612, zero >From e41e745626caf701b2a21eb2577ead05b922f590 Mon Sep 17 00:00:00 2001 From: dong-miao Date: Sat, 4 Jan 2025 18:05:04 +0800 Subject: [PATCH 03/13] Update rv32-machine-csr-names.s --- llvm/test/MC/RISCV/rv32-machine-csr-names.s | 14 ++ 1 file changed, 14 insertions(+) diff --git a/llvm/test/MC/RISCV/rv32-machine-csr-names.s b/llvm/test/MC/RISCV/rv32-machine-csr-names.s index 3d527e382376e..9e929b7eddeed 100644 --- a/llvm/test/MC/RISCV/rv32-machine-csr-names.s +++ b/llvm/test/MC/RISCV/rv32-machine-csr-names.s @@ -22,6 +22,20 @@ csrrs t1, mstatush, zero # uimm12 csrrs t2, 0x310, zero +# medelegh +# name +# CHECK-INST: csrrs t1, medelegh, zero +# CHECK-ENC: encoding: [0x73,0x23,0x20,0x31] +# CHECK-INST-ALIAS: csrr t1, medelegh +# uimm12 +# CHECK-INST: csrrs t2, medelegh, zero +# CHECK-ENC: encoding: [0xf3,0x23,0x20,0x31] +# CHECK-INST-ALIAS: csrr t2, medelegh +# name +csrrs t1, medelegh, zero +# uimm12 +csrrs t2, 0x312, zero + # # Machine Configuration # >From ea2c1afaa0eede9cf9dfbf68d10fada108b0164b Mon Sep 17 00:00:00 2001 From: dong-miao Date: Sun, 5 Jan 2025 11:12:53 +0800 Subject: [PATCH 04/13] Update RISCVSystemOperands.td --- llvm/lib/Target/RISCV/RISCVSystemOperands.td | 2 ++ 1 file changed, 2 insertions(+) diff --git a/llvm/lib/Target/RISCV/RISCVSystemOperands.td b/llvm/lib/Target/RISCV/RISCVSystemOperands.td index 41b96e1497e70..21f912bbc84d1 100644 --- a/llvm/lib/Target/RISCV/RISCVSystemOperands.td +++ b/llvm/lib/Target/RISCV/RISCVSystemOperands.td @@ -158,6 +158,7 @@ def : SysReg<"hip", 0x644>; def : SysReg<"hvip", 0x645>; def : SysReg<"htinst", 0x64A>; def : SysReg<"hgeip", 0xE12>; +let isRV32Only = 1 in def : SysReg<"hedelegh", 0x612>; //===--===// @@ -240,6 +241,7 @@ def : SysReg<"mbadaddr", 0x343>; def : SysReg<"mip", 0x344>; def : SysReg<"mtinst", 0x34A>; def : SysReg<"mtval2", 0x34B>; +let isRV32Only = 1 in def : SysReg<"medelegh", 0x312>; //===--===// >From 6b074f3d744bdfaf2f4de9fa49484b25f76df3d4 Mon Sep 17 00:00:00 2001 From: dong-miao Date: Sun, 5 Jan 2025 11:30:33 +0800 Subject: [PATCH 05/13] Update rv32-only-csr-names.s --- llvm/test/MC/RISCV/rv32-only-csr-names.s | 4 1 file changed, 4 insertions(+) diff --git a/llvm/test/MC/RISCV/rv32-only-csr-names.s b/llvm/test/MC/RISCV/rv32-only-csr-names.s index db88eacf9396b..1604469210193 100644 --- a/llvm/test/MC/RISCV/rv32-only-csr-names.s +++ b/llvm/test/MC/RISCV/rv32-only-csr-names.s @@ -41,12 +41,16 @@ csrrs t1, henvcfgh, zero # CHECK-NEED-RV32: :[[@LIN
[clang] [llvm] [RISCV] Add Zilsd and Zclsd Extensions (PR #131094)
https://github.com/dong-miao updated https://github.com/llvm/llvm-project/pull/131094 >From bcdf9641037507b855a20a8ba5d26b127dd248e8 Mon Sep 17 00:00:00 2001 From: dong-miao Date: Sat, 4 Jan 2025 17:53:58 +0800 Subject: [PATCH 01/12] Update RISCVSystemOperands.td --- llvm/lib/Target/RISCV/RISCVSystemOperands.td | 2 ++ 1 file changed, 2 insertions(+) diff --git a/llvm/lib/Target/RISCV/RISCVSystemOperands.td b/llvm/lib/Target/RISCV/RISCVSystemOperands.td index 39853cf13a920..41b96e1497e70 100644 --- a/llvm/lib/Target/RISCV/RISCVSystemOperands.td +++ b/llvm/lib/Target/RISCV/RISCVSystemOperands.td @@ -158,6 +158,7 @@ def : SysReg<"hip", 0x644>; def : SysReg<"hvip", 0x645>; def : SysReg<"htinst", 0x64A>; def : SysReg<"hgeip", 0xE12>; +def : SysReg<"hedelegh", 0x612>; //===--===// // Hypervisor Configuration @@ -239,6 +240,7 @@ def : SysReg<"mbadaddr", 0x343>; def : SysReg<"mip", 0x344>; def : SysReg<"mtinst", 0x34A>; def : SysReg<"mtval2", 0x34B>; +def : SysReg<"medelegh", 0x312>; //===--===// // Machine Configuration >From 30e3fbe156581efe49a3c6def9dd444dc546f134 Mon Sep 17 00:00:00 2001 From: dong-miao Date: Sat, 4 Jan 2025 18:02:40 +0800 Subject: [PATCH 02/12] Update rv32-hypervisor-csr-names.s --- llvm/test/MC/RISCV/rv32-hypervisor-csr-names.s | 18 ++ 1 file changed, 18 insertions(+) diff --git a/llvm/test/MC/RISCV/rv32-hypervisor-csr-names.s b/llvm/test/MC/RISCV/rv32-hypervisor-csr-names.s index aadee4fb4f3ad..79d87b3f2471c 100644 --- a/llvm/test/MC/RISCV/rv32-hypervisor-csr-names.s +++ b/llvm/test/MC/RISCV/rv32-hypervisor-csr-names.s @@ -219,3 +219,21 @@ csrrs t2, 0x214, zero csrrs t1, vsiph, zero # uimm12 csrrs t2, 0x254, zero + +## +# Hypervisor Trap Setup +## + +# hedelegh +# name +# CHECK-INST: csrrs t1, hedelegh, zero +# CHECK-ENC: encoding: [0x73,0x23,0x20,0x61] +# CHECK-INST-ALIAS: csrr t1, hedelegh +# uimm12 +# CHECK-INST: csrrs t2, hedelegh, zero +# CHECK-ENC: encoding: [0xf3,0x23,0x20,0x61] +# CHECK-INST-ALIAS: csrr t2, hedelegh +# name +csrrs t1, hedelegh, zero +# uimm12 +csrrs t2, 0x612, zero >From e41e745626caf701b2a21eb2577ead05b922f590 Mon Sep 17 00:00:00 2001 From: dong-miao Date: Sat, 4 Jan 2025 18:05:04 +0800 Subject: [PATCH 03/12] Update rv32-machine-csr-names.s --- llvm/test/MC/RISCV/rv32-machine-csr-names.s | 14 ++ 1 file changed, 14 insertions(+) diff --git a/llvm/test/MC/RISCV/rv32-machine-csr-names.s b/llvm/test/MC/RISCV/rv32-machine-csr-names.s index 3d527e382376e..9e929b7eddeed 100644 --- a/llvm/test/MC/RISCV/rv32-machine-csr-names.s +++ b/llvm/test/MC/RISCV/rv32-machine-csr-names.s @@ -22,6 +22,20 @@ csrrs t1, mstatush, zero # uimm12 csrrs t2, 0x310, zero +# medelegh +# name +# CHECK-INST: csrrs t1, medelegh, zero +# CHECK-ENC: encoding: [0x73,0x23,0x20,0x31] +# CHECK-INST-ALIAS: csrr t1, medelegh +# uimm12 +# CHECK-INST: csrrs t2, medelegh, zero +# CHECK-ENC: encoding: [0xf3,0x23,0x20,0x31] +# CHECK-INST-ALIAS: csrr t2, medelegh +# name +csrrs t1, medelegh, zero +# uimm12 +csrrs t2, 0x312, zero + # # Machine Configuration # >From ea2c1afaa0eede9cf9dfbf68d10fada108b0164b Mon Sep 17 00:00:00 2001 From: dong-miao Date: Sun, 5 Jan 2025 11:12:53 +0800 Subject: [PATCH 04/12] Update RISCVSystemOperands.td --- llvm/lib/Target/RISCV/RISCVSystemOperands.td | 2 ++ 1 file changed, 2 insertions(+) diff --git a/llvm/lib/Target/RISCV/RISCVSystemOperands.td b/llvm/lib/Target/RISCV/RISCVSystemOperands.td index 41b96e1497e70..21f912bbc84d1 100644 --- a/llvm/lib/Target/RISCV/RISCVSystemOperands.td +++ b/llvm/lib/Target/RISCV/RISCVSystemOperands.td @@ -158,6 +158,7 @@ def : SysReg<"hip", 0x644>; def : SysReg<"hvip", 0x645>; def : SysReg<"htinst", 0x64A>; def : SysReg<"hgeip", 0xE12>; +let isRV32Only = 1 in def : SysReg<"hedelegh", 0x612>; //===--===// @@ -240,6 +241,7 @@ def : SysReg<"mbadaddr", 0x343>; def : SysReg<"mip", 0x344>; def : SysReg<"mtinst", 0x34A>; def : SysReg<"mtval2", 0x34B>; +let isRV32Only = 1 in def : SysReg<"medelegh", 0x312>; //===--===// >From 6b074f3d744bdfaf2f4de9fa49484b25f76df3d4 Mon Sep 17 00:00:00 2001 From: dong-miao Date: Sun, 5 Jan 2025 11:30:33 +0800 Subject: [PATCH 05/12] Update rv32-only-csr-names.s --- llvm/test/MC/RISCV/rv32-only-csr-names.s | 4 1 file changed, 4 insertions(+) diff --git a/llvm/test/MC/RISCV/rv32-only-csr-names.s b/llvm/test/MC/RISCV/rv32-only-csr-names.s index db88eacf9396b..1604469210193 100644 --- a/llvm/test/MC/RISCV/rv32-only-csr-names.s +++ b/llvm/test/MC/RISCV/rv32-only-csr-names.s @@ -41,12 +41,16 @@ csrrs t1, henvcfgh, zero # CHECK-NEED-RV32: :[[@LIN
[clang] [llvm] [RISCV] Add Zilsd and Zclsd Extensions (PR #131094)
https://github.com/dong-miao updated https://github.com/llvm/llvm-project/pull/131094 >From bcdf9641037507b855a20a8ba5d26b127dd248e8 Mon Sep 17 00:00:00 2001 From: dong-miao Date: Sat, 4 Jan 2025 17:53:58 +0800 Subject: [PATCH 1/9] Update RISCVSystemOperands.td --- llvm/lib/Target/RISCV/RISCVSystemOperands.td | 2 ++ 1 file changed, 2 insertions(+) diff --git a/llvm/lib/Target/RISCV/RISCVSystemOperands.td b/llvm/lib/Target/RISCV/RISCVSystemOperands.td index 39853cf13a920..41b96e1497e70 100644 --- a/llvm/lib/Target/RISCV/RISCVSystemOperands.td +++ b/llvm/lib/Target/RISCV/RISCVSystemOperands.td @@ -158,6 +158,7 @@ def : SysReg<"hip", 0x644>; def : SysReg<"hvip", 0x645>; def : SysReg<"htinst", 0x64A>; def : SysReg<"hgeip", 0xE12>; +def : SysReg<"hedelegh", 0x612>; //===--===// // Hypervisor Configuration @@ -239,6 +240,7 @@ def : SysReg<"mbadaddr", 0x343>; def : SysReg<"mip", 0x344>; def : SysReg<"mtinst", 0x34A>; def : SysReg<"mtval2", 0x34B>; +def : SysReg<"medelegh", 0x312>; //===--===// // Machine Configuration >From 30e3fbe156581efe49a3c6def9dd444dc546f134 Mon Sep 17 00:00:00 2001 From: dong-miao Date: Sat, 4 Jan 2025 18:02:40 +0800 Subject: [PATCH 2/9] Update rv32-hypervisor-csr-names.s --- llvm/test/MC/RISCV/rv32-hypervisor-csr-names.s | 18 ++ 1 file changed, 18 insertions(+) diff --git a/llvm/test/MC/RISCV/rv32-hypervisor-csr-names.s b/llvm/test/MC/RISCV/rv32-hypervisor-csr-names.s index aadee4fb4f3ad..79d87b3f2471c 100644 --- a/llvm/test/MC/RISCV/rv32-hypervisor-csr-names.s +++ b/llvm/test/MC/RISCV/rv32-hypervisor-csr-names.s @@ -219,3 +219,21 @@ csrrs t2, 0x214, zero csrrs t1, vsiph, zero # uimm12 csrrs t2, 0x254, zero + +## +# Hypervisor Trap Setup +## + +# hedelegh +# name +# CHECK-INST: csrrs t1, hedelegh, zero +# CHECK-ENC: encoding: [0x73,0x23,0x20,0x61] +# CHECK-INST-ALIAS: csrr t1, hedelegh +# uimm12 +# CHECK-INST: csrrs t2, hedelegh, zero +# CHECK-ENC: encoding: [0xf3,0x23,0x20,0x61] +# CHECK-INST-ALIAS: csrr t2, hedelegh +# name +csrrs t1, hedelegh, zero +# uimm12 +csrrs t2, 0x612, zero >From e41e745626caf701b2a21eb2577ead05b922f590 Mon Sep 17 00:00:00 2001 From: dong-miao Date: Sat, 4 Jan 2025 18:05:04 +0800 Subject: [PATCH 3/9] Update rv32-machine-csr-names.s --- llvm/test/MC/RISCV/rv32-machine-csr-names.s | 14 ++ 1 file changed, 14 insertions(+) diff --git a/llvm/test/MC/RISCV/rv32-machine-csr-names.s b/llvm/test/MC/RISCV/rv32-machine-csr-names.s index 3d527e382376e..9e929b7eddeed 100644 --- a/llvm/test/MC/RISCV/rv32-machine-csr-names.s +++ b/llvm/test/MC/RISCV/rv32-machine-csr-names.s @@ -22,6 +22,20 @@ csrrs t1, mstatush, zero # uimm12 csrrs t2, 0x310, zero +# medelegh +# name +# CHECK-INST: csrrs t1, medelegh, zero +# CHECK-ENC: encoding: [0x73,0x23,0x20,0x31] +# CHECK-INST-ALIAS: csrr t1, medelegh +# uimm12 +# CHECK-INST: csrrs t2, medelegh, zero +# CHECK-ENC: encoding: [0xf3,0x23,0x20,0x31] +# CHECK-INST-ALIAS: csrr t2, medelegh +# name +csrrs t1, medelegh, zero +# uimm12 +csrrs t2, 0x312, zero + # # Machine Configuration # >From ea2c1afaa0eede9cf9dfbf68d10fada108b0164b Mon Sep 17 00:00:00 2001 From: dong-miao Date: Sun, 5 Jan 2025 11:12:53 +0800 Subject: [PATCH 4/9] Update RISCVSystemOperands.td --- llvm/lib/Target/RISCV/RISCVSystemOperands.td | 2 ++ 1 file changed, 2 insertions(+) diff --git a/llvm/lib/Target/RISCV/RISCVSystemOperands.td b/llvm/lib/Target/RISCV/RISCVSystemOperands.td index 41b96e1497e70..21f912bbc84d1 100644 --- a/llvm/lib/Target/RISCV/RISCVSystemOperands.td +++ b/llvm/lib/Target/RISCV/RISCVSystemOperands.td @@ -158,6 +158,7 @@ def : SysReg<"hip", 0x644>; def : SysReg<"hvip", 0x645>; def : SysReg<"htinst", 0x64A>; def : SysReg<"hgeip", 0xE12>; +let isRV32Only = 1 in def : SysReg<"hedelegh", 0x612>; //===--===// @@ -240,6 +241,7 @@ def : SysReg<"mbadaddr", 0x343>; def : SysReg<"mip", 0x344>; def : SysReg<"mtinst", 0x34A>; def : SysReg<"mtval2", 0x34B>; +let isRV32Only = 1 in def : SysReg<"medelegh", 0x312>; //===--===// >From 6b074f3d744bdfaf2f4de9fa49484b25f76df3d4 Mon Sep 17 00:00:00 2001 From: dong-miao Date: Sun, 5 Jan 2025 11:30:33 +0800 Subject: [PATCH 5/9] Update rv32-only-csr-names.s --- llvm/test/MC/RISCV/rv32-only-csr-names.s | 4 1 file changed, 4 insertions(+) diff --git a/llvm/test/MC/RISCV/rv32-only-csr-names.s b/llvm/test/MC/RISCV/rv32-only-csr-names.s index db88eacf9396b..1604469210193 100644 --- a/llvm/test/MC/RISCV/rv32-only-csr-names.s +++ b/llvm/test/MC/RISCV/rv32-only-csr-names.s @@ -41,12 +41,16 @@ csrrs t1, henvcfgh, zero # CHECK-NEED-RV32: :[[@LINE]]:11: e
[clang] [llvm] [RISCV] Add Zilsd and Zclsd Extensions (PR #131094)
https://github.com/dong-miao updated https://github.com/llvm/llvm-project/pull/131094 >From bcdf9641037507b855a20a8ba5d26b127dd248e8 Mon Sep 17 00:00:00 2001 From: dong-miao Date: Sat, 4 Jan 2025 17:53:58 +0800 Subject: [PATCH 1/8] Update RISCVSystemOperands.td --- llvm/lib/Target/RISCV/RISCVSystemOperands.td | 2 ++ 1 file changed, 2 insertions(+) diff --git a/llvm/lib/Target/RISCV/RISCVSystemOperands.td b/llvm/lib/Target/RISCV/RISCVSystemOperands.td index 39853cf13a920..41b96e1497e70 100644 --- a/llvm/lib/Target/RISCV/RISCVSystemOperands.td +++ b/llvm/lib/Target/RISCV/RISCVSystemOperands.td @@ -158,6 +158,7 @@ def : SysReg<"hip", 0x644>; def : SysReg<"hvip", 0x645>; def : SysReg<"htinst", 0x64A>; def : SysReg<"hgeip", 0xE12>; +def : SysReg<"hedelegh", 0x612>; //===--===// // Hypervisor Configuration @@ -239,6 +240,7 @@ def : SysReg<"mbadaddr", 0x343>; def : SysReg<"mip", 0x344>; def : SysReg<"mtinst", 0x34A>; def : SysReg<"mtval2", 0x34B>; +def : SysReg<"medelegh", 0x312>; //===--===// // Machine Configuration >From 30e3fbe156581efe49a3c6def9dd444dc546f134 Mon Sep 17 00:00:00 2001 From: dong-miao Date: Sat, 4 Jan 2025 18:02:40 +0800 Subject: [PATCH 2/8] Update rv32-hypervisor-csr-names.s --- llvm/test/MC/RISCV/rv32-hypervisor-csr-names.s | 18 ++ 1 file changed, 18 insertions(+) diff --git a/llvm/test/MC/RISCV/rv32-hypervisor-csr-names.s b/llvm/test/MC/RISCV/rv32-hypervisor-csr-names.s index aadee4fb4f3ad..79d87b3f2471c 100644 --- a/llvm/test/MC/RISCV/rv32-hypervisor-csr-names.s +++ b/llvm/test/MC/RISCV/rv32-hypervisor-csr-names.s @@ -219,3 +219,21 @@ csrrs t2, 0x214, zero csrrs t1, vsiph, zero # uimm12 csrrs t2, 0x254, zero + +## +# Hypervisor Trap Setup +## + +# hedelegh +# name +# CHECK-INST: csrrs t1, hedelegh, zero +# CHECK-ENC: encoding: [0x73,0x23,0x20,0x61] +# CHECK-INST-ALIAS: csrr t1, hedelegh +# uimm12 +# CHECK-INST: csrrs t2, hedelegh, zero +# CHECK-ENC: encoding: [0xf3,0x23,0x20,0x61] +# CHECK-INST-ALIAS: csrr t2, hedelegh +# name +csrrs t1, hedelegh, zero +# uimm12 +csrrs t2, 0x612, zero >From e41e745626caf701b2a21eb2577ead05b922f590 Mon Sep 17 00:00:00 2001 From: dong-miao Date: Sat, 4 Jan 2025 18:05:04 +0800 Subject: [PATCH 3/8] Update rv32-machine-csr-names.s --- llvm/test/MC/RISCV/rv32-machine-csr-names.s | 14 ++ 1 file changed, 14 insertions(+) diff --git a/llvm/test/MC/RISCV/rv32-machine-csr-names.s b/llvm/test/MC/RISCV/rv32-machine-csr-names.s index 3d527e382376e..9e929b7eddeed 100644 --- a/llvm/test/MC/RISCV/rv32-machine-csr-names.s +++ b/llvm/test/MC/RISCV/rv32-machine-csr-names.s @@ -22,6 +22,20 @@ csrrs t1, mstatush, zero # uimm12 csrrs t2, 0x310, zero +# medelegh +# name +# CHECK-INST: csrrs t1, medelegh, zero +# CHECK-ENC: encoding: [0x73,0x23,0x20,0x31] +# CHECK-INST-ALIAS: csrr t1, medelegh +# uimm12 +# CHECK-INST: csrrs t2, medelegh, zero +# CHECK-ENC: encoding: [0xf3,0x23,0x20,0x31] +# CHECK-INST-ALIAS: csrr t2, medelegh +# name +csrrs t1, medelegh, zero +# uimm12 +csrrs t2, 0x312, zero + # # Machine Configuration # >From ea2c1afaa0eede9cf9dfbf68d10fada108b0164b Mon Sep 17 00:00:00 2001 From: dong-miao Date: Sun, 5 Jan 2025 11:12:53 +0800 Subject: [PATCH 4/8] Update RISCVSystemOperands.td --- llvm/lib/Target/RISCV/RISCVSystemOperands.td | 2 ++ 1 file changed, 2 insertions(+) diff --git a/llvm/lib/Target/RISCV/RISCVSystemOperands.td b/llvm/lib/Target/RISCV/RISCVSystemOperands.td index 41b96e1497e70..21f912bbc84d1 100644 --- a/llvm/lib/Target/RISCV/RISCVSystemOperands.td +++ b/llvm/lib/Target/RISCV/RISCVSystemOperands.td @@ -158,6 +158,7 @@ def : SysReg<"hip", 0x644>; def : SysReg<"hvip", 0x645>; def : SysReg<"htinst", 0x64A>; def : SysReg<"hgeip", 0xE12>; +let isRV32Only = 1 in def : SysReg<"hedelegh", 0x612>; //===--===// @@ -240,6 +241,7 @@ def : SysReg<"mbadaddr", 0x343>; def : SysReg<"mip", 0x344>; def : SysReg<"mtinst", 0x34A>; def : SysReg<"mtval2", 0x34B>; +let isRV32Only = 1 in def : SysReg<"medelegh", 0x312>; //===--===// >From 6b074f3d744bdfaf2f4de9fa49484b25f76df3d4 Mon Sep 17 00:00:00 2001 From: dong-miao Date: Sun, 5 Jan 2025 11:30:33 +0800 Subject: [PATCH 5/8] Update rv32-only-csr-names.s --- llvm/test/MC/RISCV/rv32-only-csr-names.s | 4 1 file changed, 4 insertions(+) diff --git a/llvm/test/MC/RISCV/rv32-only-csr-names.s b/llvm/test/MC/RISCV/rv32-only-csr-names.s index db88eacf9396b..1604469210193 100644 --- a/llvm/test/MC/RISCV/rv32-only-csr-names.s +++ b/llvm/test/MC/RISCV/rv32-only-csr-names.s @@ -41,12 +41,16 @@ csrrs t1, henvcfgh, zero # CHECK-NEED-RV32: :[[@LINE]]:11: e
[clang] [llvm] [RISCV] Add Zilsd and Zclsd Extensions (PR #131094)
https://github.com/dong-miao converted_to_draft https://github.com/llvm/llvm-project/pull/131094 ___ cfe-commits mailing list cfe-commits@lists.llvm.org https://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-commits
[clang] [llvm] [RISCV] Add Zilsd and Zclsd Extensions (PR #131094)
github-actions[bot] wrote: :warning: C/C++ code formatter, clang-format found issues in your code. :warning: You can test this locally with the following command: ``bash git-clang-format --diff 8d1e260fc419e31bb11cb5a2f1f872a2b679d217 2c3440f10357b41e9a19ddacf63f161c58bc5f45 --extensions cpp,c -- clang/test/Driver/print-supported-extensions-riscv.c clang/test/Preprocessor/riscv-target-features.c llvm/lib/Target/RISCV/AsmParser/RISCVAsmParser.cpp llvm/lib/Target/RISCV/Disassembler/RISCVDisassembler.cpp llvm/unittests/TargetParser/RISCVISAInfoTest.cpp `` View the diff from clang-format here. ``diff diff --git a/llvm/lib/Target/RISCV/AsmParser/RISCVAsmParser.cpp b/llvm/lib/Target/RISCV/AsmParser/RISCVAsmParser.cpp index 1e51314f90..8603cd59ae 100644 --- a/llvm/lib/Target/RISCV/AsmParser/RISCVAsmParser.cpp +++ b/llvm/lib/Target/RISCV/AsmParser/RISCVAsmParser.cpp @@ -219,7 +219,7 @@ class RISCVAsmParser : public MCTargetAsmParser { ParseStatus parseRegReg(OperandVector &Operands); ParseStatus parseRetval(OperandVector &Operands); ParseStatus parseZcmpStackAdj(OperandVector &Operands, -bool ExpectNegative = false); +bool ExpectNegative = false); ParseStatus parseZcmpNegStackAdj(OperandVector &Operands) { return parseZcmpStackAdj(Operands, /*ExpectNegative*/ true); } diff --git a/llvm/lib/Target/RISCV/Disassembler/RISCVDisassembler.cpp b/llvm/lib/Target/RISCV/Disassembler/RISCVDisassembler.cpp index 8631bed8ae..d342260a9d 100644 --- a/llvm/lib/Target/RISCV/Disassembler/RISCVDisassembler.cpp +++ b/llvm/lib/Target/RISCV/Disassembler/RISCVDisassembler.cpp @@ -224,16 +224,16 @@ static DecodeStatus DecodeGPRPairCRegisterClass(MCInst &Inst, uint32_t RegNo, return MCDisassembler::Success; } -static DecodeStatus DecodeGPRPairNoX0RegisterClass(MCInst &Inst, uint32_t RegNo, - uint64_t Address, - const MCDisassembler *Decoder) { -if (RegNo == 0) { - return MCDisassembler::Fail; -} - -return DecodeGPRPairRegisterClass(Inst, RegNo, Address, Decoder); -} - +static DecodeStatus +DecodeGPRPairNoX0RegisterClass(MCInst &Inst, uint32_t RegNo, uint64_t Address, + const MCDisassembler *Decoder) { + if (RegNo == 0) { +return MCDisassembler::Fail; + } + + return DecodeGPRPairRegisterClass(Inst, RegNo, Address, Decoder); +} + static DecodeStatus DecodeGPRPairRegisterClass(MCInst &Inst, uint32_t RegNo, uint64_t Address, const MCDisassembler *Decoder) { `` https://github.com/llvm/llvm-project/pull/131094 ___ cfe-commits mailing list cfe-commits@lists.llvm.org https://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-commits
[clang] [llvm] [RISCV] Add Zilsd and Zclsd Extensions (PR #131094)
https://github.com/dong-miao created https://github.com/llvm/llvm-project/pull/131094 This commit adds the Load/Store pair instructions (Zilsd) and Compressed Load/Store pair instructions (Zclsd). [Specification link](https://github.com/riscv/riscv-isa-manual/blob/main/src/zilsd.adoc). >From bcdf9641037507b855a20a8ba5d26b127dd248e8 Mon Sep 17 00:00:00 2001 From: dong-miao Date: Sat, 4 Jan 2025 17:53:58 +0800 Subject: [PATCH 1/7] Update RISCVSystemOperands.td --- llvm/lib/Target/RISCV/RISCVSystemOperands.td | 2 ++ 1 file changed, 2 insertions(+) diff --git a/llvm/lib/Target/RISCV/RISCVSystemOperands.td b/llvm/lib/Target/RISCV/RISCVSystemOperands.td index 39853cf13a920..41b96e1497e70 100644 --- a/llvm/lib/Target/RISCV/RISCVSystemOperands.td +++ b/llvm/lib/Target/RISCV/RISCVSystemOperands.td @@ -158,6 +158,7 @@ def : SysReg<"hip", 0x644>; def : SysReg<"hvip", 0x645>; def : SysReg<"htinst", 0x64A>; def : SysReg<"hgeip", 0xE12>; +def : SysReg<"hedelegh", 0x612>; //===--===// // Hypervisor Configuration @@ -239,6 +240,7 @@ def : SysReg<"mbadaddr", 0x343>; def : SysReg<"mip", 0x344>; def : SysReg<"mtinst", 0x34A>; def : SysReg<"mtval2", 0x34B>; +def : SysReg<"medelegh", 0x312>; //===--===// // Machine Configuration >From 30e3fbe156581efe49a3c6def9dd444dc546f134 Mon Sep 17 00:00:00 2001 From: dong-miao Date: Sat, 4 Jan 2025 18:02:40 +0800 Subject: [PATCH 2/7] Update rv32-hypervisor-csr-names.s --- llvm/test/MC/RISCV/rv32-hypervisor-csr-names.s | 18 ++ 1 file changed, 18 insertions(+) diff --git a/llvm/test/MC/RISCV/rv32-hypervisor-csr-names.s b/llvm/test/MC/RISCV/rv32-hypervisor-csr-names.s index aadee4fb4f3ad..79d87b3f2471c 100644 --- a/llvm/test/MC/RISCV/rv32-hypervisor-csr-names.s +++ b/llvm/test/MC/RISCV/rv32-hypervisor-csr-names.s @@ -219,3 +219,21 @@ csrrs t2, 0x214, zero csrrs t1, vsiph, zero # uimm12 csrrs t2, 0x254, zero + +## +# Hypervisor Trap Setup +## + +# hedelegh +# name +# CHECK-INST: csrrs t1, hedelegh, zero +# CHECK-ENC: encoding: [0x73,0x23,0x20,0x61] +# CHECK-INST-ALIAS: csrr t1, hedelegh +# uimm12 +# CHECK-INST: csrrs t2, hedelegh, zero +# CHECK-ENC: encoding: [0xf3,0x23,0x20,0x61] +# CHECK-INST-ALIAS: csrr t2, hedelegh +# name +csrrs t1, hedelegh, zero +# uimm12 +csrrs t2, 0x612, zero >From e41e745626caf701b2a21eb2577ead05b922f590 Mon Sep 17 00:00:00 2001 From: dong-miao Date: Sat, 4 Jan 2025 18:05:04 +0800 Subject: [PATCH 3/7] Update rv32-machine-csr-names.s --- llvm/test/MC/RISCV/rv32-machine-csr-names.s | 14 ++ 1 file changed, 14 insertions(+) diff --git a/llvm/test/MC/RISCV/rv32-machine-csr-names.s b/llvm/test/MC/RISCV/rv32-machine-csr-names.s index 3d527e382376e..9e929b7eddeed 100644 --- a/llvm/test/MC/RISCV/rv32-machine-csr-names.s +++ b/llvm/test/MC/RISCV/rv32-machine-csr-names.s @@ -22,6 +22,20 @@ csrrs t1, mstatush, zero # uimm12 csrrs t2, 0x310, zero +# medelegh +# name +# CHECK-INST: csrrs t1, medelegh, zero +# CHECK-ENC: encoding: [0x73,0x23,0x20,0x31] +# CHECK-INST-ALIAS: csrr t1, medelegh +# uimm12 +# CHECK-INST: csrrs t2, medelegh, zero +# CHECK-ENC: encoding: [0xf3,0x23,0x20,0x31] +# CHECK-INST-ALIAS: csrr t2, medelegh +# name +csrrs t1, medelegh, zero +# uimm12 +csrrs t2, 0x312, zero + # # Machine Configuration # >From ea2c1afaa0eede9cf9dfbf68d10fada108b0164b Mon Sep 17 00:00:00 2001 From: dong-miao Date: Sun, 5 Jan 2025 11:12:53 +0800 Subject: [PATCH 4/7] Update RISCVSystemOperands.td --- llvm/lib/Target/RISCV/RISCVSystemOperands.td | 2 ++ 1 file changed, 2 insertions(+) diff --git a/llvm/lib/Target/RISCV/RISCVSystemOperands.td b/llvm/lib/Target/RISCV/RISCVSystemOperands.td index 41b96e1497e70..21f912bbc84d1 100644 --- a/llvm/lib/Target/RISCV/RISCVSystemOperands.td +++ b/llvm/lib/Target/RISCV/RISCVSystemOperands.td @@ -158,6 +158,7 @@ def : SysReg<"hip", 0x644>; def : SysReg<"hvip", 0x645>; def : SysReg<"htinst", 0x64A>; def : SysReg<"hgeip", 0xE12>; +let isRV32Only = 1 in def : SysReg<"hedelegh", 0x612>; //===--===// @@ -240,6 +241,7 @@ def : SysReg<"mbadaddr", 0x343>; def : SysReg<"mip", 0x344>; def : SysReg<"mtinst", 0x34A>; def : SysReg<"mtval2", 0x34B>; +let isRV32Only = 1 in def : SysReg<"medelegh", 0x312>; //===--===// >From 6b074f3d744bdfaf2f4de9fa49484b25f76df3d4 Mon Sep 17 00:00:00 2001 From: dong-miao Date: Sun, 5 Jan 2025 11:30:33 +0800 Subject: [PATCH 5/7] Update rv32-only-csr-names.s --- llvm/test/MC/RISCV/rv32-only-csr-names.s | 4 1 file changed, 4 insertions(+) diff --git a/llvm/test/MC/RISCV/rv32-only-csr-names.s b/llvm/test/MC/RISCV/rv32-only-csr-names.s index db88ea