@@ -402,97 +402,124 @@ multiclass VIndexLoadStore<list<int> EEWList> {
402402
403403multiclass VALU_IV_V_X_I<string opcodestr, bits<6> funct6, Operand optype = simm5, string vw = "v"> {
404404 def V : VALUVV<funct6, OPIVV, opcodestr # "." # vw # "v">,
405- Sched<[WriteVIALUV, ReadVIALUV, ReadVIALUV, ReadVMask]>;
405+ Sched<[WriteVIALUV_UpperBound, ReadVIALUV_UpperBound,
406+ ReadVIALUV_UpperBound, ReadVMask]>;
406407 def X : VALUVX<funct6, OPIVX, opcodestr # "." # vw # "x">,
407- Sched<[WriteVIALUX, ReadVIALUV, ReadVIALUX, ReadVMask]>;
408+ Sched<[WriteVIALUX_UpperBound, ReadVIALUV_UpperBound,
409+ ReadVIALUX_UpperBound, ReadVMask]>;
408410 def I : VALUVI<funct6, opcodestr # "." # vw # "i", optype>,
409- Sched<[WriteVIALUI, ReadVIALUV, ReadVMask]>;
411+ Sched<[WriteVIALUI_UpperBound, ReadVIALUV_UpperBound,
412+ ReadVMask]>;
410413}
411414
412415multiclass VALU_IV_V_X<string opcodestr, bits<6> funct6, string vw = "v"> {
413416 def V : VALUVV<funct6, OPIVV, opcodestr # "." # vw # "v">,
414- Sched<[WriteVIALUV, ReadVIALUV, ReadVIALUV, ReadVMask]>;
417+ Sched<[WriteVIALUV_UpperBound, ReadVIALUV_UpperBound,
418+ ReadVIALUV_UpperBound, ReadVMask]>;
415419 def X : VALUVX<funct6, OPIVX, opcodestr # "." # vw # "x">,
416- Sched<[WriteVIALUX, ReadVIALUV, ReadVIALUX, ReadVMask]>;
420+ Sched<[WriteVIALUX_UpperBound, ReadVIALUV_UpperBound,
421+ ReadVIALUX_UpperBound, ReadVMask]>;
417422}
418423
419424multiclass VALU_IV_X_I<string opcodestr, bits<6> funct6, Operand optype = simm5, string vw = "v"> {
420425 def X : VALUVX<funct6, OPIVX, opcodestr # "." # vw # "x">,
421- Sched<[WriteVIALUV, ReadVIALUV, ReadVIALUX, ReadVMask]>;
426+ Sched<[WriteVIALUV_UpperBound, ReadVIALUV_UpperBound,
427+ ReadVIALUX_UpperBound, ReadVMask]>;
422428 def I : VALUVI<funct6, opcodestr # "." # vw # "i", optype>,
423- Sched<[WriteVIALUI, ReadVIALUV, ReadVMask]>;
429+ Sched<[WriteVIALUI_UpperBound, ReadVIALUV_UpperBound,
430+ ReadVMask]>;
424431}
425432
426433multiclass VALU_MV_V_X<string opcodestr, bits<6> funct6, string vw = "v"> {
427434 def V : VALUVV<funct6, OPMVV, opcodestr # "." # vw # "v">,
428- Sched<[WriteVIWALUV, ReadVIWALUV, ReadVIWALUV, ReadVMask]>;
435+ Sched<[WriteVIWALUV_UpperBound, ReadVIWALUV_UpperBound,
436+ ReadVIWALUV_UpperBound, ReadVMask]>;
429437 def X : VALUVX<funct6, OPMVX, opcodestr # "." # vw # "x">,
430- Sched<[WriteVIWALUX, ReadVIWALUV, ReadVIWALUX, ReadVMask]>;
438+ Sched<[WriteVIWALUX_UpperBound, ReadVIWALUV_UpperBound,
439+ ReadVIWALUX_UpperBound, ReadVMask]>;
431440}
432441
433442multiclass VMAC_MV_V_X<string opcodestr, bits<6> funct6, string vw = "v"> {
434443 def V : VALUrVV<funct6, OPMVV, opcodestr # "." # vw # "v">,
435- Sched<[WriteVIMulAddV, ReadVIMulAddV, ReadVIMulAddV, ReadVMask]>;
444+ Sched<[WriteVIMulAddV_UpperBound, ReadVIMulAddV_UpperBound,
445+ ReadVIMulAddV_UpperBound, ReadVMask]>;
436446 def X : VALUrVX<funct6, OPMVX, opcodestr # "." # vw # "x">,
437- Sched<[WriteVIMulAddX, ReadVIMulAddV, ReadVIMulAddX, ReadVMask]>;
447+ Sched<[WriteVIMulAddX_UpperBound, ReadVIMulAddV_UpperBound,
448+ ReadVIMulAddX_UpperBound, ReadVMask]>;
438449}
439450
440451multiclass VWMAC_MV_V_X<string opcodestr, bits<6> funct6, string vw = "v"> {
441452 def V : VALUrVV<funct6, OPMVV, opcodestr # "." # vw # "v">,
442- Sched<[WriteVIWMulAddV, ReadVIWMulAddV, ReadVIWMulAddV, ReadVMask]>;
453+ Sched<[WriteVIWMulAddV_UpperBound, ReadVIWMulAddV_UpperBound,
454+ ReadVIWMulAddV_UpperBound, ReadVMask]>;
443455 def X : VALUrVX<funct6, OPMVX, opcodestr # "." # vw # "x">,
444- Sched<[WriteVIWMulAddX, ReadVIWMulAddV, ReadVIWMulAddX, ReadVMask]>;
456+ Sched<[WriteVIWMulAddX_UpperBound, ReadVIWMulAddV_UpperBound,
457+ ReadVIWMulAddX_UpperBound, ReadVMask]>;
445458}
446459
447460multiclass VWMAC_MV_X<string opcodestr, bits<6> funct6, string vw = "v"> {
448461 def X : VALUrVX<funct6, OPMVX, opcodestr # "." # vw # "x">,
449- Sched<[WriteVIWMulAddX, ReadVIWMulAddV, ReadVIWMulAddX, ReadVMask]>;
462+ Sched<[WriteVIWMulAddX_UpperBound, ReadVIWMulAddV_UpperBound,
463+ ReadVIWMulAddX_UpperBound, ReadVMask]>;
450464}
451465
452466multiclass VALU_MV_VS2<string opcodestr, bits<6> funct6, bits<5> vs1> {
453467 def "" : VALUVs2<funct6, vs1, OPMVV, opcodestr>,
454- Sched<[WriteVExtV, ReadVExtV, ReadVMask]>;
468+ Sched<[WriteVExtV_UpperBound, ReadVExtV_UpperBound,
469+ ReadVMask]>;
455470}
456471
457472multiclass VALUm_IV_V_X_I<string opcodestr, bits<6> funct6> {
458473 def VM : VALUmVV<funct6, OPIVV, opcodestr # ".vvm">,
459- Sched<[WriteVICALUV, ReadVICALUV, ReadVICALUV, ReadVMask]>;
474+ Sched<[WriteVICALUV_UpperBound, ReadVICALUV_UpperBound,
475+ ReadVICALUV_UpperBound, ReadVMask]>;
460476 def XM : VALUmVX<funct6, OPIVX, opcodestr # ".vxm">,
461- Sched<[WriteVICALUX, ReadVICALUV, ReadVICALUX, ReadVMask]>;
477+ Sched<[WriteVICALUX_UpperBound, ReadVICALUV_UpperBound,
478+ ReadVICALUX_UpperBound, ReadVMask]>;
462479 def IM : VALUmVI<funct6, opcodestr # ".vim">,
463- Sched<[WriteVICALUI, ReadVICALUV, ReadVMask]>;
480+ Sched<[WriteVICALUI_UpperBound, ReadVICALUV_UpperBound,
481+ ReadVMask]>;
464482}
465483
466484multiclass VMRG_IV_V_X_I<string opcodestr, bits<6> funct6> {
467485 def VM : VALUmVV<funct6, OPIVV, opcodestr # ".vvm">,
468- Sched<[WriteVIMergeV, ReadVIMergeV, ReadVIMergeV, ReadVMask]>;
486+ Sched<[WriteVIMergeV_UpperBound, ReadVIMergeV_UpperBound,
487+ ReadVIMergeV_UpperBound, ReadVMask]>;
469488 def XM : VALUmVX<funct6, OPIVX, opcodestr # ".vxm">,
470- Sched<[WriteVIMergeX, ReadVIMergeV, ReadVIMergeX, ReadVMask]>;
489+ Sched<[WriteVIMergeX_UpperBound, ReadVIMergeV_UpperBound,
490+ ReadVIMergeX_UpperBound, ReadVMask]>;
471491 def IM : VALUmVI<funct6, opcodestr # ".vim">,
472- Sched<[WriteVIMergeI, ReadVIMergeV, ReadVMask]>;
492+ Sched<[WriteVIMergeI_UpperBound, ReadVIMergeV_UpperBound,
493+ ReadVMask]>;
473494}
474495
475496multiclass VALUm_IV_V_X<string opcodestr, bits<6> funct6> {
476497 def VM : VALUmVV<funct6, OPIVV, opcodestr # ".vvm">,
477- Sched<[WriteVICALUV, ReadVICALUV, ReadVICALUV, ReadVMask]>;
498+ Sched<[WriteVICALUV_UpperBound, ReadVICALUV_UpperBound,
499+ ReadVICALUV_UpperBound, ReadVMask]>;
478500 def XM : VALUmVX<funct6, OPIVX, opcodestr # ".vxm">,
479- Sched<[WriteVICALUX, ReadVICALUV, ReadVICALUX, ReadVMask]>;
501+ Sched<[WriteVICALUX_UpperBound, ReadVICALUV_UpperBound,
502+ ReadVICALUX_UpperBound, ReadVMask]>;
480503}
481504
482505multiclass VALUNoVm_IV_V_X_I<string opcodestr, bits<6> funct6, Operand optype = simm5> {
483506 def V : VALUVVNoVm<funct6, OPIVV, opcodestr # ".vv">,
484- Sched<[WriteVICALUV, ReadVICALUV, ReadVICALUV]>;
507+ Sched<[WriteVICALUV_UpperBound, ReadVICALUV_UpperBound,
508+ ReadVICALUV_UpperBound]>;
485509 def X : VALUVXNoVm<funct6, OPIVX, opcodestr # ".vx">,
486- Sched<[WriteVICALUX, ReadVICALUV, ReadVICALUX]>;
510+ Sched<[WriteVICALUX_UpperBound, ReadVICALUV_UpperBound
511+ , ReadVICALUX_UpperBound]>;
487512 def I : VALUVINoVm<funct6, opcodestr # ".vi", optype>,
488- Sched<[WriteVICALUI, ReadVICALUV ]>;
513+ Sched<[WriteVICALUI_UpperBound, ReadVICALUV_UpperBound ]>;
489514}
490515
491516multiclass VALUNoVm_IV_V_X<string opcodestr, bits<6> funct6> {
492517 def V : VALUVVNoVm<funct6, OPIVV, opcodestr # ".vv">,
493- Sched<[WriteVICALUV, ReadVICALUV, ReadVICALUV]>;
518+ Sched<[WriteVICALUV_UpperBound, ReadVICALUV_UpperBound,
519+ ReadVICALUV_UpperBound]>;
494520 def X : VALUVXNoVm<funct6, OPIVX, opcodestr # ".vx">,
495- Sched<[WriteVICALUX, ReadVICALUV, ReadVICALUX]>;
521+ Sched<[WriteVICALUX_UpperBound, ReadVICALUV_UpperBound,
522+ ReadVICALUX_UpperBound]>;
496523}
497524
498525multiclass VALU_FV_V_F<string opcodestr, bits<6> funct6, string vw = "v"> {
@@ -675,64 +702,83 @@ multiclass VMIOT_MV_V<string opcodestr, bits<6> funct6, bits<5> vs1> {
675702
676703multiclass VSHT_IV_V_X_I<string opcodestr, bits<6> funct6, Operand optype = simm5, string vw = "v"> {
677704 def V : VALUVV<funct6, OPIVV, opcodestr # "." # vw # "v">,
678- Sched<[WriteVShiftV, ReadVShiftV, ReadVShiftV, ReadVMask]>;
705+ Sched<[WriteVShiftV_UpperBound, ReadVShiftV_UpperBound,
706+ ReadVShiftV_UpperBound, ReadVMask]>;
679707 def X : VALUVX<funct6, OPIVX, opcodestr # "." # vw # "x">,
680- Sched<[WriteVShiftX, ReadVShiftV, ReadVShiftX, ReadVMask]>;
708+ Sched<[WriteVShiftX_UpperBound, ReadVShiftV_UpperBound,
709+ ReadVShiftX_UpperBound, ReadVMask]>;
681710 def I : VALUVI<funct6, opcodestr # "." # vw # "i", optype>,
682- Sched<[WriteVShiftI, ReadVShiftV, ReadVMask]>;
711+ Sched<[WriteVShiftI_UpperBound, ReadVShiftV_UpperBound,
712+ ReadVMask]>;
683713}
684714
685715multiclass VNSHT_IV_V_X_I<string opcodestr, bits<6> funct6, Operand optype = simm5, string vw = "v"> {
686716 def V : VALUVV<funct6, OPIVV, opcodestr # "." # vw # "v">,
687- Sched<[WriteVNShiftV, ReadVNShiftV, ReadVNShiftV, ReadVMask]>;
717+ Sched<[WriteVNShiftV_UpperBound, ReadVNShiftV_UpperBound,
718+ ReadVNShiftV_UpperBound, ReadVMask]>;
688719 def X : VALUVX<funct6, OPIVX, opcodestr # "." # vw # "x">,
689- Sched<[WriteVNShiftX, ReadVNShiftV, ReadVNShiftX, ReadVMask]>;
720+ Sched<[WriteVNShiftX_UpperBound, ReadVNShiftV_UpperBound,
721+ ReadVNShiftX_UpperBound, ReadVMask]>;
690722 def I : VALUVI<funct6, opcodestr # "." # vw # "i", optype>,
691- Sched<[WriteVNShiftI, ReadVNShiftV, ReadVMask]>;
723+ Sched<[WriteVNShiftI_UpperBound, ReadVNShiftV_UpperBound,
724+ ReadVMask]>;
692725}
693726
694727multiclass VCMP_IV_V_X_I<string opcodestr, bits<6> funct6, Operand optype = simm5, string vw = "v"> {
695728 def V : VALUVV<funct6, OPIVV, opcodestr # "." # vw # "v">,
696- Sched<[WriteVICmpV, ReadVICmpV, ReadVICmpV, ReadVMask]>;
729+ Sched<[WriteVICmpV_UpperBound, ReadVICmpV_UpperBound,
730+ ReadVICmpV_UpperBound, ReadVMask]>;
697731 def X : VALUVX<funct6, OPIVX, opcodestr # "." # vw # "x">,
698- Sched<[WriteVICmpX, ReadVICmpV, ReadVICmpX, ReadVMask]>;
732+ Sched<[WriteVICmpX_UpperBound, ReadVICmpV_UpperBound,
733+ ReadVICmpX_UpperBound, ReadVMask]>;
699734 def I : VALUVI<funct6, opcodestr # "." # vw # "i", optype>,
700- Sched<[WriteVICmpI, ReadVICmpV, ReadVMask]>;
735+ Sched<[WriteVICmpI_UpperBound, ReadVICmpV_UpperBound,
736+ ReadVMask]>;
701737}
702738
703739multiclass VCMP_IV_X_I<string opcodestr, bits<6> funct6, Operand optype = simm5, string vw = "v"> {
704740 def X : VALUVX<funct6, OPIVX, opcodestr # "." # vw # "x">,
705- Sched<[WriteVICmpV, ReadVICmpV, ReadVICmpX, ReadVMask]>;
741+ Sched<[WriteVICmpV_UpperBound, ReadVICmpV_UpperBound,
742+ ReadVICmpX_UpperBound, ReadVMask]>;
706743 def I : VALUVI<funct6, opcodestr # "." # vw # "i", optype>,
707- Sched<[WriteVICmpI, ReadVICmpV, ReadVMask]>;
744+ Sched<[WriteVICmpI_UpperBound, ReadVICmpV_UpperBound,
745+ ReadVMask]>;
708746}
709747
710748multiclass VCMP_IV_V_X<string opcodestr, bits<6> funct6, string vw = "v"> {
711749 def V : VALUVV<funct6, OPIVV, opcodestr # "." # vw # "v">,
712- Sched<[WriteVICmpV, ReadVICmpV, ReadVICmpV, ReadVMask]>;
750+ Sched<[WriteVICmpV_UpperBound, ReadVICmpV_UpperBound,
751+ ReadVICmpV_UpperBound, ReadVMask]>;
713752 def X : VALUVX<funct6, OPIVX, opcodestr # "." # vw # "x">,
714- Sched<[WriteVICmpX, ReadVICmpV, ReadVICmpX, ReadVMask]>;
753+ Sched<[WriteVICmpX_UpperBound, ReadVICmpV_UpperBound,
754+ ReadVICmpX_UpperBound, ReadVMask]>;
715755}
716756
717757multiclass VMUL_MV_V_X<string opcodestr, bits<6> funct6, string vw = "v"> {
718758 def V : VALUVV<funct6, OPMVV, opcodestr # "." # vw # "v">,
719- Sched<[WriteVIMulV, ReadVIMulV, ReadVIMulV, ReadVMask]>;
759+ Sched<[WriteVIMulV_UpperBound, ReadVIMulV_UpperBound,
760+ ReadVIMulV_UpperBound, ReadVMask]>;
720761 def X : VALUVX<funct6, OPMVX, opcodestr # "." # vw # "x">,
721- Sched<[WriteVIMulX, ReadVIMulV, ReadVIMulX, ReadVMask]>;
762+ Sched<[WriteVIMulX_UpperBound, ReadVIMulV_UpperBound,
763+ ReadVIMulX_UpperBound, ReadVMask]>;
722764}
723765
724766multiclass VWMUL_MV_V_X<string opcodestr, bits<6> funct6, string vw = "v"> {
725767 def V : VALUVV<funct6, OPMVV, opcodestr # "." # vw # "v">,
726- Sched<[WriteVIWMulV, ReadVIWMulV, ReadVIWMulV, ReadVMask]>;
768+ Sched<[WriteVIWMulV_UpperBound, ReadVIWMulV_UpperBound,
769+ ReadVIWMulV_UpperBound, ReadVMask]>;
727770 def X : VALUVX<funct6, OPMVX, opcodestr # "." # vw # "x">,
728- Sched<[WriteVIWMulX, ReadVIWMulV, ReadVIWMulX, ReadVMask]>;
771+ Sched<[WriteVIWMulX_UpperBound, ReadVIWMulV_UpperBound,
772+ ReadVIWMulX_UpperBound, ReadVMask]>;
729773}
730774
731775multiclass VDIV_MV_V_X<string opcodestr, bits<6> funct6, string vw = "v"> {
732776 def V : VALUVV<funct6, OPMVV, opcodestr # "." # vw # "v">,
733- Sched<[WriteVIDivV, ReadVIDivV, ReadVIDivV, ReadVMask]>;
777+ Sched<[WriteVIDivV_UpperBound, ReadVIDivV_UpperBound,
778+ ReadVIDivV_UpperBound, ReadVMask]>;
734779 def X : VALUVX<funct6, OPMVX, opcodestr # "." # vw # "x">,
735- Sched<[WriteVIDivX, ReadVIDivV, ReadVIDivX, ReadVMask]>;
780+ Sched<[WriteVIDivX_UpperBound, ReadVIDivV_UpperBound,
781+ ReadVIDivX_UpperBound, ReadVMask]>;
736782}
737783
738784multiclass VSALU_IV_V_X_I<string opcodestr, bits<6> funct6, Operand optype = simm5, string vw = "v"> {
@@ -1126,15 +1172,15 @@ let hasSideEffects = 0, mayLoad = 0, mayStore = 0, vs2 = 0, vm = 1,
11261172// op vd, vs1
11271173def VMV_V_V : RVInstVV<0b010111, OPIVV, (outs VR:$vd),
11281174 (ins VR:$vs1), "vmv.v.v", "$vd, $vs1">,
1129- Sched<[WriteVIMovV, ReadVIMovV ]>;
1175+ Sched<[WriteVIMovV_UpperBound, ReadVIMovV_UpperBound ]>;
11301176// op vd, rs1
11311177def VMV_V_X : RVInstVX<0b010111, OPIVX, (outs VR:$vd),
11321178 (ins GPR:$rs1), "vmv.v.x", "$vd, $rs1">,
1133- Sched<[WriteVIMovX, ReadVIMovX ]>;
1179+ Sched<[WriteVIMovX_UpperBound, ReadVIMovX_UpperBound ]>;
11341180// op vd, imm
11351181def VMV_V_I : RVInstIVI<0b010111, (outs VR:$vd),
11361182 (ins simm5:$imm), "vmv.v.i", "$vd, $imm">,
1137- Sched<[WriteVIMovI ]>;
1183+ Sched<[WriteVIMovI_UpperBound ]>;
11381184} // hasSideEffects = 0, mayLoad = 0, mayStore = 0
11391185
11401186// Vector Fixed-Point Arithmetic Instructions
0 commit comments