Skip to content

Commit 2398e26

Browse files
committed
[RISCV] Add a common class for cm.push, cm.popret, cm.popretz and cm.pop.
Reviewed By: craig.topper Differential Revision: https://reviews.llvm.org/D156092
1 parent e7c9a99 commit 2398e26

File tree

1 file changed

+16
-42
lines changed

1 file changed

+16
-42
lines changed

llvm/lib/Target/RISCV/RISCVInstrInfoZc.td

Lines changed: 16 additions & 42 deletions
Original file line numberDiff line numberDiff line change
@@ -129,10 +129,16 @@ class RVZcArith_r<bits<5> funct5, string OpcodeStr> :
129129
let Constraints = "$rd = $rd_wb";
130130
}
131131

132-
class RVInstZcCPPP<dag outs, dag ins, string opcodestr, string argstr>
133-
: RVInst16<outs, ins, opcodestr, argstr, [], InstFormatOther> {
132+
class RVInstZcCPPP<bits<5> funct5, string opcodestr>
133+
: RVInst16<(outs), (ins rlist:$rlist, spimm:$spimm),
134+
opcodestr, "{$rlist}, $spimm", [], InstFormatOther> {
135+
bits<4> rlist;
136+
bits<16> spimm;
134137

135138
let Inst{1-0} = 0b10;
139+
let Inst{3-2} = spimm{5-4};
140+
let Inst{7-4} = rlist;
141+
let Inst{12-8} = funct5;
136142
let Inst{15-13} = 0b101;
137143
}
138144

@@ -189,49 +195,17 @@ def CM_MVSA01 : RVInst16CA<0b101011, 0b01, 0b10, (outs SR07:$rs1, SR07:$rs2),
189195
} // DecoderNamespace = "RVZcmp", Predicates = [HasStdExtZcmp]...
190196

191197
let DecoderNamespace = "RVZcmp", Predicates = [HasStdExtZcmp] in {
192-
let hasSideEffects = 0, mayLoad = 0, mayStore = 1 in
193-
def CM_PUSH : RVInstZcCPPP<(outs), (ins rlist:$rlist, spimm:$spimm),
194-
"cm.push", "{$rlist}, $spimm"> {
195-
bits<4> rlist;
196-
bits<16> spimm;
197-
198-
let Inst{12-8} = 0b11000;
199-
let Inst{7-4} = rlist;
200-
let Inst{3-2} = spimm{5-4};
201-
}
202-
203-
let hasSideEffects = 0, mayLoad = 1, mayStore = 0 in
204-
def CM_POPRET : RVInstZcCPPP<(outs), (ins rlist:$rlist, spimm:$spimm),
205-
"cm.popret", "{$rlist}, $spimm"> {
206-
bits<4> rlist;
207-
bits<16> spimm;
208-
209-
let Inst{12-8} = 0b11110;
210-
let Inst{7-4} = rlist;
211-
let Inst{3-2} = spimm{5-4};
212-
}
213-
214-
let hasSideEffects = 0, mayLoad = 1, mayStore = 0 in
215-
def CM_POPRETZ : RVInstZcCPPP<(outs), (ins rlist:$rlist, spimm:$spimm),
216-
"cm.popretz", "{$rlist}, $spimm"> {
217-
bits<4> rlist;
218-
bits<16> spimm;
198+
let hasSideEffects = 0, mayLoad = 0, mayStore = 1 in
199+
def CM_PUSH : RVInstZcCPPP<0b11000, "cm.push">;
219200

220-
let Inst{12-8} = 0b11100;
221-
let Inst{7-4} = rlist;
222-
let Inst{3-2} = spimm{5-4};
223-
}
201+
let hasSideEffects = 0, mayLoad = 1, mayStore = 0 in
202+
def CM_POPRET : RVInstZcCPPP<0b11110, "cm.popret">;
224203

225-
let hasSideEffects = 0, mayLoad = 1, mayStore = 0 in
226-
def CM_POP : RVInstZcCPPP<(outs), (ins rlist:$rlist, spimm:$spimm),
227-
"cm.pop", "{$rlist}, $spimm"> {
228-
bits<4> rlist;
229-
bits<16> spimm;
204+
let hasSideEffects = 0, mayLoad = 1, mayStore = 0 in
205+
def CM_POPRETZ : RVInstZcCPPP<0b11100, "cm.popretz">;
230206

231-
let Inst{12-8} = 0b11010;
232-
let Inst{7-4} = rlist;
233-
let Inst{3-2} = spimm{5-4};
234-
}
207+
let hasSideEffects = 0, mayLoad = 1, mayStore = 0 in
208+
def CM_POP : RVInstZcCPPP<0b11010, "cm.pop">;
235209
} // DecoderNamespace = "RVZcmp", Predicates = [HasStdExtZcmp]...
236210

237211
let DecoderNamespace = "RVZcmt", Predicates = [HasStdExtZcmt],

0 commit comments

Comments
 (0)