@@ -468,30 +468,35 @@ class QCIStore_ScaleIdx<bits<4> funct4, string opcodestr>
468468class QCIRVInstI<bits<4> funct4, string opcodestr>
469469 : RVInstIUnary<{0b000, funct4, 0b00000}, 0b011, OPC_CUSTOM_0,
470470 (outs GPRNoX0:$rd), (ins GPRNoX0:$rs1), opcodestr,
471- "$rd, $rs1">;
471+ "$rd, $rs1">,
472+ Sched<[WriteIALU, ReadIALU]>;
472473
473474class QCIRVInstR<bits<4> funct4, string opcodestr>
474475 : RVInstR<{0b000, funct4}, 0b011, OPC_CUSTOM_0, (outs GPRNoX0:$rd),
475- (ins GPRNoX0:$rs1), opcodestr, "$rd, $rs1"> {
476+ (ins GPRNoX0:$rs1), opcodestr, "$rd, $rs1">,
477+ Sched<[WriteIALU, ReadIALU]> {
476478 let rs2 = 0;
477479}
478480
479481class QCIRVInstRR<bits<5> funct5, DAGOperand InTyRs1, string opcodestr>
480482 : RVInstR<{0b00, funct5}, 0b011, OPC_CUSTOM_0, (outs GPRNoX0:$rd),
481- (ins InTyRs1:$rs1, GPRNoX0:$rs2), opcodestr, "$rd, $rs1, $rs2">;
483+ (ins InTyRs1:$rs1, GPRNoX0:$rs2), opcodestr, "$rd, $rs1, $rs2">,
484+ Sched<[WriteIALU, ReadIALU, ReadIALU]>;
482485
483486class QCIRVInstRRTied<bits<5> funct5, DAGOperand InTyRs1, string opcodestr>
484487 : RVInstR<{0b00, funct5}, 0b011, OPC_CUSTOM_0, (outs GPRNoX0:$rd_wb),
485488 (ins GPRNoX0:$rd, InTyRs1:$rs1, GPRNoX0:$rs2), opcodestr,
486- "$rd, $rs1, $rs2"> {
489+ "$rd, $rs1, $rs2">,
490+ Sched<[WriteIALU, ReadIALU, ReadIALU, ReadIALU]> {
487491 let Constraints = "$rd = $rd_wb";
488492}
489493
490494class QCIBitManipRII<bits<3> funct3, bits<2> funct2,
491495 DAGOperand InTyRs1, string opcodestr>
492496 : RVInstIBase<funct3, OPC_CUSTOM_0, (outs GPRNoX0:$rd),
493497 (ins InTyRs1:$rs1, uimm5_plus1:$width, uimm5:$shamt),
494- opcodestr, "$rd, $rs1, $width, $shamt"> {
498+ opcodestr, "$rd, $rs1, $width, $shamt">,
499+ Sched<[WriteIALU, ReadIALU]> {
495500 bits<5> shamt;
496501 bits<5> width;
497502
@@ -504,7 +509,8 @@ class QCIBitManipRIITied<bits<3> funct3, bits<2> funct2,
504509 DAGOperand InTyRs1, string opcodestr>
505510 : RVInstIBase<funct3, OPC_CUSTOM_0, (outs GPRNoX0:$rd_wb), (ins GPRNoX0:$rd,
506511 InTyRs1:$rs1, uimm5_plus1:$width, uimm5:$shamt),
507- opcodestr, "$rd, $rs1, $width, $shamt"> {
512+ opcodestr, "$rd, $rs1, $width, $shamt">,
513+ Sched<[WriteIALU, ReadIALU, ReadIALU]> {
508514 let Constraints = "$rd = $rd_wb";
509515 bits<5> shamt;
510516 bits<5> width;
@@ -518,7 +524,8 @@ class QCIRVInstRI<bits<1> funct1, DAGOperand InTyImm11,
518524 string opcodestr>
519525 : RVInstIBase<0b000, OPC_CUSTOM_0, (outs GPRNoX0:$rd_wb),
520526 (ins GPRNoX0:$rd, GPRNoX0:$rs1, InTyImm11:$imm11), opcodestr,
521- "$rd, $rs1, $imm11"> {
527+ "$rd, $rs1, $imm11">,
528+ Sched<[WriteIALU, ReadIALU, ReadIALU]> {
522529 let Constraints = "$rd = $rd_wb";
523530 bits<11> imm11;
524531
@@ -530,7 +537,8 @@ let hasSideEffects = 0, mayLoad = 0, mayStore = 0, isCommutable = 1 in
530537class QCISELECTIICC<bits<3> funct3, string opcodestr>
531538 : RVInstR4<0b00, funct3, OPC_CUSTOM_2, (outs GPRNoX0:$rd_wb),
532539 (ins GPRNoX0:$rd, GPRNoX0:$rs1, simm5:$simm1, simm5:$simm2),
533- opcodestr, "$rd, $rs1, $simm1, $simm2"> {
540+ opcodestr, "$rd, $rs1, $simm1, $simm2">,
541+ Sched<[WriteIALU, ReadIALU, ReadIALU]> {
534542 let Constraints = "$rd = $rd_wb";
535543 bits<5> simm1;
536544 bits<5> simm2;
@@ -543,7 +551,8 @@ let hasSideEffects = 0, mayLoad = 0, mayStore = 0, isCommutable = 1 in
543551class QCISELECTICC<bits<3> funct3, string opcodestr>
544552 : RVInstR4<0b01, funct3, OPC_CUSTOM_2, (outs GPRNoX0:$rd_wb),
545553 (ins GPRNoX0:$rd, GPRNoX0:$rs1, GPRNoX0:$rs2, simm5:$simm2),
546- opcodestr, "$rd, $rs1, $rs2, $simm2"> {
554+ opcodestr, "$rd, $rs1, $rs2, $simm2">,
555+ Sched<[WriteIALU, ReadIALU, ReadIALU, ReadIALU]> {
547556 let Constraints = "$rd = $rd_wb";
548557 bits<5> simm2;
549558
@@ -554,7 +563,8 @@ let hasSideEffects = 0, mayLoad = 0, mayStore = 0 in
554563class QCISELECTCCI<bits<3> funct3, string opcodestr>
555564 : RVInstR4<0b10, funct3, OPC_CUSTOM_2, (outs GPRNoX0:$rd_wb),
556565 (ins GPRNoX0:$rd, simm5:$imm, GPRNoX0:$rs2, GPRNoX0:$rs3),
557- opcodestr, "$rd, $imm, $rs2, $rs3"> {
566+ opcodestr, "$rd, $imm, $rs2, $rs3">,
567+ Sched<[WriteIALU, ReadIALU, ReadIALU, ReadIALU]> {
558568 let Constraints = "$rd = $rd_wb";
559569 bits<5> imm;
560570
@@ -565,7 +575,8 @@ let hasSideEffects = 0, mayLoad = 0, mayStore = 0 in
565575class QCISELECTICCI<bits<3> funct3, string opcodestr>
566576 : RVInstR4<0b11, funct3, OPC_CUSTOM_2, (outs GPRNoX0:$rd_wb),
567577 (ins GPRNoX0:$rd, simm5:$imm, GPRNoX0:$rs2, simm5:$simm2),
568- opcodestr, "$rd, $imm, $rs2, $simm2"> {
578+ opcodestr, "$rd, $imm, $rs2, $simm2">,
579+ Sched<[WriteIALU, ReadIALU, ReadIALU]> {
569580 let Constraints = "$rd = $rd_wb";
570581 bits<5> imm;
571582 bits<5> simm2;
@@ -610,15 +621,17 @@ let hasSideEffects = 0, mayLoad = 0, mayStore = 0, isCommutable = 1 in
610621class QCIMVCC<bits<3> funct3, string opcodestr>
611622 : RVInstR4<0b00, funct3, OPC_CUSTOM_2, (outs GPRNoX0:$rd_wb),
612623 (ins GPRNoX0:$rd, GPRNoX0:$rs1, GPRNoX0:$rs2, GPRNoX0:$rs3),
613- opcodestr, "$rd, $rs1, $rs2, $rs3"> {
624+ opcodestr, "$rd, $rs1, $rs2, $rs3">,
625+ Sched<[WriteIALU, ReadIALU, ReadIALU, ReadIALU, ReadIALU]> {
614626 let Constraints = "$rd = $rd_wb";
615627}
616628
617629let hasSideEffects = 0, mayLoad = 0, mayStore = 0, isCommutable = 1 in
618630class QCIMVCCI<bits<3> funct3, string opcodestr, DAGOperand immType>
619631 : RVInstR4<0b10, funct3, OPC_CUSTOM_2, (outs GPRNoX0:$rd_wb),
620632 (ins GPRNoX0:$rd, GPRNoX0:$rs1, immType:$imm, GPRNoX0:$rs3),
621- opcodestr, "$rd, $rs1, $imm, $rs3"> {
633+ opcodestr, "$rd, $rs1, $imm, $rs3">,
634+ Sched<[WriteIALU, ReadIALU, ReadIALU, ReadIALU]> {
622635 bits<5> imm;
623636
624637 let Constraints = "$rd = $rd_wb";
@@ -782,7 +795,8 @@ class QCIRVInstESStore<bits<3> funct3, bits<2> funct2, string opcodestr>
782795
783796class QCIRVInstEAI<bits<3> funct3, bits<1> funct1, string opcodestr>
784797 : RVInst48<(outs GPRNoX0:$rd_wb), (ins GPRNoX0:$rd, bare_simm32:$imm),
785- opcodestr, "$rd, $imm", [], InstFormatOther> {
798+ opcodestr, "$rd, $imm", [], InstFormatOther>,
799+ Sched<[WriteIALU, ReadIALU]> {
786800 bits<5> rd;
787801 bits<32> imm;
788802
@@ -797,7 +811,8 @@ class QCIRVInstEAI<bits<3> funct3, bits<1> funct1, string opcodestr>
797811class QCIRVInstEI<bits<3> funct3, bits<2> funct2, string opcodestr>
798812 : QCIRVInstEIBase<funct3, funct2, (outs GPRNoX0:$rd),
799813 (ins GPRNoX0:$rs1, simm26:$imm), opcodestr,
800- "$rd, $rs1, $imm">;
814+ "$rd, $rs1, $imm">,
815+ Sched<[WriteIALU, ReadIALU]>;
801816
802817let hasSideEffects = 0, mayLoad = 0, mayStore = 0 in
803818class QCIRVInst48EJ<bits<2> func2, string opcodestr>
@@ -892,7 +907,8 @@ let hasSideEffects = 0, mayLoad = 0, mayStore = 0 in {
892907 def QC_WRAP : QCIRVInstRR<0b10010, GPR, "qc.wrap">;
893908 def QC_WRAPI : RVInstI<0b000, OPC_CUSTOM_0, (outs GPRNoX0:$rd),
894909 (ins GPRNoX0:$rs1, uimm11:$imm11), "qc.wrapi",
895- "$rd, $rs1, $imm11"> {
910+ "$rd, $rs1, $imm11">,
911+ Sched<[WriteIALU, ReadIALU]> {
896912 bits<11> imm11;
897913
898914 let imm12 = {0b0, imm11};
@@ -926,7 +942,8 @@ let hasSideEffects = 0, mayLoad = 0, mayStore = 0 in {
926942 def QC_INSBI : RVInstIBase<0b001, OPC_CUSTOM_0, (outs GPRNoX0:$rd_wb),
927943 (ins GPRNoX0:$rd, simm5:$imm5, uimm5_plus1:$width,
928944 uimm5:$shamt), "qc.insbi",
929- "$rd, $imm5, $width, $shamt"> {
945+ "$rd, $imm5, $width, $shamt">,
946+ Sched<[WriteIALU, ReadIALU]> {
930947 let Constraints = "$rd = $rd_wb";
931948 bits<5> imm5;
932949 bits<5> shamt;
@@ -959,11 +976,14 @@ let hasSideEffects = 0, mayLoad = 0, mayStore = 0 in {
959976 def QC_CLO : QCIRVInstI<0b0100, "qc.clo">;
960977 def QC_CTO : QCIRVInstI<0b0101, "qc.cto">;
961978 def QC_BREV32 : QCIRVInstI<0b0110, "qc.brev32">;
962- def QC_C_BEXTI : QCI_RVInst16CB_BM<0b00, "qc.c.bexti">;
963- def QC_C_BSETI : QCI_RVInst16CB_BM<0b01, "qc.c.bseti">;
979+ def QC_C_BEXTI : QCI_RVInst16CB_BM<0b00, "qc.c.bexti">,
980+ Sched<[WriteIALU, ReadIALU]>;
981+ def QC_C_BSETI : QCI_RVInst16CB_BM<0b01, "qc.c.bseti">,
982+ Sched<[WriteIALU, ReadIALU]>;
964983 def QC_C_EXTU : RVInst16CI<0b000, 0b10, (outs GPRNoX0:$rd_wb),
965984 (ins GPRNoX0:$rd, uimm5ge6_plus1:$width),
966- "qc.c.extu", "$rd, $width"> {
985+ "qc.c.extu", "$rd, $width">,
986+ Sched<[WriteIALU, ReadIALU]> {
967987 bits<5> rd;
968988 bits<5> width;
969989 let Constraints = "$rd = $rd_wb";
@@ -978,7 +998,8 @@ let Predicates = [HasVendorXqciac, IsRV32] in {
978998let hasSideEffects = 0, mayLoad = 0, mayStore = 0 in {
979999 def QC_C_MULIADD : RVInst16CL<0b001, 0b10, (outs GPRC:$rd_wb),
9801000 (ins GPRC:$rd, GPRC:$rs1, uimm5:$uimm),
981- "qc.c.muliadd", "$rd, $rs1, $uimm"> {
1001+ "qc.c.muliadd", "$rd, $rs1, $uimm">,
1002+ Sched<[WriteIALU, ReadIALU, ReadIALU]> {
9821003 let Constraints = "$rd = $rd_wb";
9831004 bits<5> uimm;
9841005
@@ -989,13 +1010,15 @@ let hasSideEffects = 0, mayLoad = 0, mayStore = 0 in {
9891010
9901011 def QC_MULIADD : RVInstI<0b110, OPC_CUSTOM_0, (outs GPRNoX0:$rd_wb),
9911012 (ins GPRNoX0:$rd, GPRNoX0:$rs1, simm12_lo:$imm12),
992- "qc.muliadd", "$rd, $rs1, $imm12"> {
1013+ "qc.muliadd", "$rd, $rs1, $imm12">,
1014+ Sched<[WriteIALU, ReadIALU, ReadIALU]> {
9931015 let Constraints = "$rd = $rd_wb";
9941016 }
9951017
9961018 def QC_SHLADD : RVInstRBase<0b011, OPC_CUSTOM_0, (outs GPRNoX0:$rd),
9971019 (ins GPRNoX0:$rs1, GPRNoX0:$rs2, uimm5gt3:$shamt),
998- "qc.shladd", "$rd, $rs1, $rs2, $shamt"> {
1020+ "qc.shladd", "$rd, $rs1, $rs2, $shamt">,
1021+ Sched<[WriteIALU, ReadIALU, ReadIALU]> {
9991022 bits<5> shamt;
10001023
10011024 let Inst{31-30} = 0b01;
@@ -1027,26 +1050,39 @@ let Predicates = [HasVendorXqcilsm, IsRV32] in {
10271050} // Predicates = [HasVendorXqcilsm, IsRV32]
10281051
10291052let Predicates = [HasVendorXqcicli, IsRV32] in {
1030- def QC_LIEQ : QCILICC<0b000, 0b01, GPRNoX0, "qc.lieq">;
1031- def QC_LINE : QCILICC<0b001, 0b01, GPRNoX0, "qc.line">;
1032- def QC_LILT : QCILICC<0b100, 0b01, GPRNoX0, "qc.lilt">;
1033- def QC_LIGE : QCILICC<0b101, 0b01, GPRNoX0, "qc.lige">;
1034- def QC_LILTU : QCILICC<0b110, 0b01, GPRNoX0, "qc.liltu">;
1035- def QC_LIGEU : QCILICC<0b111, 0b01, GPRNoX0, "qc.ligeu">;
1036-
1037- def QC_LIEQI : QCILICC<0b000, 0b11, simm5, "qc.lieqi">;
1038- def QC_LINEI : QCILICC<0b001, 0b11, simm5, "qc.linei">;
1039- def QC_LILTI : QCILICC<0b100, 0b11, simm5, "qc.lilti">;
1040- def QC_LIGEI : QCILICC<0b101, 0b11, simm5, "qc.ligei">;
1041- def QC_LILTUI : QCILICC<0b110, 0b11, uimm5, "qc.liltui">;
1042- def QC_LIGEUI : QCILICC<0b111, 0b11, uimm5, "qc.ligeui">;
1053+ def QC_LIEQ : QCILICC<0b000, 0b01, GPRNoX0, "qc.lieq">,
1054+ Sched<[WriteIALU, ReadIALU, ReadIALU, ReadIALU]>;
1055+ def QC_LINE : QCILICC<0b001, 0b01, GPRNoX0, "qc.line">,
1056+ Sched<[WriteIALU, ReadIALU, ReadIALU, ReadIALU]>;
1057+ def QC_LILT : QCILICC<0b100, 0b01, GPRNoX0, "qc.lilt">,
1058+ Sched<[WriteIALU, ReadIALU, ReadIALU, ReadIALU]>;
1059+ def QC_LIGE : QCILICC<0b101, 0b01, GPRNoX0, "qc.lige">,
1060+ Sched<[WriteIALU, ReadIALU, ReadIALU, ReadIALU]>;
1061+ def QC_LILTU : QCILICC<0b110, 0b01, GPRNoX0, "qc.liltu">,
1062+ Sched<[WriteIALU, ReadIALU, ReadIALU, ReadIALU]>;
1063+ def QC_LIGEU : QCILICC<0b111, 0b01, GPRNoX0, "qc.ligeu">,
1064+ Sched<[WriteIALU, ReadIALU, ReadIALU, ReadIALU]>;
1065+
1066+ def QC_LIEQI : QCILICC<0b000, 0b11, simm5, "qc.lieqi">,
1067+ Sched<[WriteIALU, ReadIALU, ReadIALU]>;
1068+ def QC_LINEI : QCILICC<0b001, 0b11, simm5, "qc.linei">,
1069+ Sched<[WriteIALU, ReadIALU, ReadIALU]>;
1070+ def QC_LILTI : QCILICC<0b100, 0b11, simm5, "qc.lilti">,
1071+ Sched<[WriteIALU, ReadIALU, ReadIALU]>;
1072+ def QC_LIGEI : QCILICC<0b101, 0b11, simm5, "qc.ligei">,
1073+ Sched<[WriteIALU, ReadIALU, ReadIALU]>;
1074+ def QC_LILTUI : QCILICC<0b110, 0b11, uimm5, "qc.liltui">,
1075+ Sched<[WriteIALU, ReadIALU, ReadIALU]>;
1076+ def QC_LIGEUI : QCILICC<0b111, 0b11, uimm5, "qc.ligeui">,
1077+ Sched<[WriteIALU, ReadIALU, ReadIALU]>;
10431078} // Predicates = [HasVendorXqcicli, IsRV32]
10441079
10451080let Predicates = [HasVendorXqcicm, IsRV32] in {
10461081let hasSideEffects = 0, mayLoad = 0, mayStore = 0 in
10471082 def QC_C_MVEQZ : RVInst16CL<0b101, 0b10, (outs GPRC:$rd_wb),
10481083 (ins GPRC:$rd, GPRC:$rs1),
1049- "qc.c.mveqz", "$rd, $rs1"> {
1084+ "qc.c.mveqz", "$rd, $rs1">,
1085+ Sched<[WriteIALU, ReadIALU, ReadIALU]> {
10501086 let Constraints = "$rd = $rd_wb";
10511087
10521088 let Inst{12-10} = 0b011;
@@ -1154,14 +1190,15 @@ let Predicates = [HasVendorXqcilb, IsRV32] in {
11541190let Predicates = [HasVendorXqcili, IsRV32] in {
11551191let hasSideEffects = 0, mayLoad = 0, mayStore = 0 in {
11561192 def QC_LI : RVInstU<OPC_OP_IMM_32, (outs GPRNoX0:$rd), (ins simm20_li:$imm20),
1157- "qc.li", "$rd, $imm20"> {
1193+ "qc.li", "$rd, $imm20">, Sched<[WriteIALU]> {
11581194 let Inst{31} = imm20{19};
11591195 let Inst{30-16} = imm20{14-0};
11601196 let Inst{15-12} = imm20{18-15};
11611197 }
11621198
11631199 def QC_E_LI : RVInst48<(outs GPRNoX0:$rd), (ins bare_simm32:$imm),
1164- "qc.e.li", "$rd, $imm", [], InstFormatQC_EAI> {
1200+ "qc.e.li", "$rd, $imm", [], InstFormatQC_EAI>,
1201+ Sched<[WriteIALU]> {
11651202 bits<5> rd;
11661203 bits<32> imm;
11671204
0 commit comments