[llvm] [RISCV] Assign different scheduling classes for VMADC/VMSBC (PR #113009)
Min-Yih Hsu via llvm-commits
llvm-commits at lists.llvm.org
Mon Oct 21 08:50:48 PDT 2024
================
@@ -630,31 +630,43 @@ multiclass VMRG_IV_V_X_I<string opcodestr, bits<6> funct6> {
}
multiclass VALUm_IV_V_X<string opcodestr, bits<6> funct6> {
+ // if LSB of funct6 is 1, it's a mask-producing instruction that
+ // uses a different scheduling class.
+ defvar WritePrefix = !if(funct6{0}, "WriteVICALUM", "WriteVICALU");
def VM : VALUmVV<funct6, OPIVV, opcodestr # ".vvm">,
- SchedBinaryMC<"WriteVICALUV", "ReadVICALUV", "ReadVICALUV">;
+ SchedBinaryMC<WritePrefix#"V", "ReadVICALUV", "ReadVICALUV">;
def XM : VALUmVX<funct6, OPIVX, opcodestr # ".vxm">,
- SchedBinaryMC<"WriteVICALUX", "ReadVICALUV", "ReadVICALUX">;
+ SchedBinaryMC<WritePrefix#"X", "ReadVICALUV", "ReadVICALUX">;
}
multiclass VALUm_IV_V_X_I<string opcodestr, bits<6> funct6>
: VALUm_IV_V_X<opcodestr, funct6> {
+ // if LSB of funct6 is 1, it's a mask-producing instruction that
+ // uses a different scheduling class.
+ defvar WriteSched = !if(funct6{0}, "WriteVICALUMI", "WriteVICALUI");
def IM : VALUmVI<funct6, opcodestr # ".vim">,
- SchedUnaryMC<"WriteVICALUI", "ReadVICALUV">;
+ SchedUnaryMC<WriteSched, "ReadVICALUV">;
}
multiclass VALUNoVm_IV_V_X<string opcodestr, bits<6> funct6> {
+ // if LSB of funct6 is 1, it's a mask-producing instruction that
+ // uses a different scheduling class.
+ defvar WritePrefix = !if(funct6{0}, "WriteVICALUM", "WriteVICALU");
def V : VALUVVNoVm<funct6, OPIVV, opcodestr # ".vv">,
- SchedBinaryMC<"WriteVICALUV", "ReadVICALUV", "ReadVICALUV",
+ SchedBinaryMC<WritePrefix#"V", "ReadVICALUV", "ReadVICALUV",
forceMasked=0>;
def X : VALUVXNoVm<funct6, OPIVX, opcodestr # ".vx">,
- SchedBinaryMC<"WriteVICALUX", "ReadVICALUV", "ReadVICALUX",
+ SchedBinaryMC<WritePrefix#"X", "ReadVICALUV", "ReadVICALUX",
forceMasked=0>;
}
multiclass VALUNoVm_IV_V_X_I<string opcodestr, bits<6> funct6>
: VALUNoVm_IV_V_X<opcodestr, funct6> {
+ // if LSB of funct6 is 1, it's a mask-producing instruction that
----------------
mshockwave wrote:
good catch! It's fixed now.
https://github.com/llvm/llvm-project/pull/113009
More information about the llvm-commits
mailing list