From d76d5c7d892f06fa42b9ec2ea3e90b6f95cc0e7e Mon Sep 17 00:00:00 2001 From: Craig Topper Date: Thu, 20 Jul 2023 00:03:44 -0700 Subject: [PATCH] [RISCV] Sink more common code from RVInst/RVInst16 into RVInstCommon. NFC Reviewed By: wangpc Differential Revision: https://reviews.llvm.org/D155787 --- llvm/lib/Target/RISCV/RISCVInstrFormats.td | 15 ++++++++------- llvm/lib/Target/RISCV/RISCVInstrFormatsC.td | 7 +------ 2 files changed, 9 insertions(+), 13 deletions(-) diff --git a/llvm/lib/Target/RISCV/RISCVInstrFormats.td b/llvm/lib/Target/RISCV/RISCVInstrFormats.td index 470f894..022f7d1 100644 --- a/llvm/lib/Target/RISCV/RISCVInstrFormats.td +++ b/llvm/lib/Target/RISCV/RISCVInstrFormats.td @@ -156,9 +156,15 @@ def OPC_SYSTEM : RISCVOpcode<"SYSTEM", 0b1110011>; def OPC_OP_P : RISCVOpcode<"OP_P", 0b1110111>; def OPC_CUSTOM_3 : RISCVOpcode<"CUSTOM_3", 0b1111011>; -class RVInstCommon : Instruction { +class RVInstCommon pattern, InstFormat format> : Instruction { let Namespace = "RISCV"; + dag OutOperandList = outs; + dag InOperandList = ins; + let AsmString = opcodestr # "\t" # argstr; + let Pattern = pattern; + let TSFlags{4-0} = format.Value; // Defaults @@ -210,7 +216,7 @@ class RVInstCommon : Instruction { class RVInst pattern, InstFormat format> - : RVInstCommon { + : RVInstCommon { field bits<32> Inst; // SoftFail is a field the disassembler can use to provide a way for // instructions to not match without killing the whole decode process. It is @@ -222,11 +228,6 @@ class RVInst Opcode = 0; let Inst{6-0} = Opcode; - - dag OutOperandList = outs; - dag InOperandList = ins; - let AsmString = opcodestr # "\t" # argstr; - let Pattern = pattern; } // Pseudo instructions diff --git a/llvm/lib/Target/RISCV/RISCVInstrFormatsC.td b/llvm/lib/Target/RISCV/RISCVInstrFormatsC.td index ee3621b..9575866 100644 --- a/llvm/lib/Target/RISCV/RISCVInstrFormatsC.td +++ b/llvm/lib/Target/RISCV/RISCVInstrFormatsC.td @@ -12,7 +12,7 @@ class RVInst16 pattern, InstFormat format> - : RVInstCommon { + : RVInstCommon { field bits<16> Inst; // SoftFail is a field the disassembler can use to provide a way for // instructions to not match without killing the whole decode process. It is @@ -22,11 +22,6 @@ class RVInst16 Opcode = 0; - - dag OutOperandList = outs; - dag InOperandList = ins; - let AsmString = opcodestr # "\t" # argstr; - let Pattern = pattern; } class RVInst16CR funct4, bits<2> opcode, dag outs, dag ins, -- 2.7.4