@@ -75,6 +75,8 @@ def riscv_sret_glue : RVSDNode<"SRET_GLUE", SDTNone,
7575 [SDNPHasChain, SDNPOptInGlue]>;
7676def riscv_mret_glue : RVSDNode<"MRET_GLUE", SDTNone,
7777 [SDNPHasChain, SDNPOptInGlue]>;
78+ def riscv_mnret_glue : RVSDNode<"MNRET_GLUE", SDTNone,
79+ [SDNPHasChain, SDNPOptInGlue]>;
7880def riscv_mileaveret_glue : RVSDNode<"QC_C_MILEAVERET_GLUE", SDTNone,
7981 [SDNPHasChain, SDNPOptInGlue]>;
8082
@@ -935,7 +937,6 @@ def MRET : Priv<"mret", 0b0011000>, Sched<[]> {
935937 let rs1 = 0;
936938 let rs2 = 0b00010;
937939}
938- } // isBarrier = 1, isReturn = 1, isTerminator = 1
939940
940941let Predicates = [HasStdExtSmrnmi] in {
941942def MNRET : Priv<"mnret", 0b0111000>, Sched<[]> {
@@ -944,6 +945,8 @@ def MNRET : Priv<"mnret", 0b0111000>, Sched<[]> {
944945 let rs2 = 0b00010;
945946}
946947}// Predicates = [HasStdExtSmrnmi]
948+ } // isBarrier = 1, isReturn = 1, isTerminator = 1
949+
947950
948951def WFI : Priv<"wfi", 0b0001000>, Sched<[]> {
949952 let rd = 0;
@@ -1801,6 +1804,8 @@ def : Pat<(riscv_call texternalsym:$func), (PseudoCALL texternalsym:$func)>;
18011804
18021805def : Pat<(riscv_sret_glue), (SRET)>;
18031806def : Pat<(riscv_mret_glue), (MRET)>;
1807+ let Predicates = [HasStdExtSmrnmi] in
1808+ def : Pat<(riscv_mnret_glue), (MNRET)>;
18041809
18051810let isCall = 1, Defs = [X1] in {
18061811let Predicates = [NoStdExtZicfilp] in
0 commit comments