@@ -535,25 +535,25 @@ let Predicates = [MMA, IsNotISAFuture] in {
535535}
536536
537537let Predicates = [MMA, IsISAFuture], isCodeGenOnly = 1 in {
538+ // For Future and up XXMFACCW and XXMTACCW will not have patterns.
538539 // On Future CPU the wacc registers no longer overlap with the vsr registers
539- // so register allocation need to match 4 vsr registers with one wacc
540- // register. XXMTACC/XXFACC will be aliased to these new instructions.
541- def DMXXMFACC:
542- XForm_AT3<31, 0, 177, (outs wacc:$ATo), (ins wacc:$AT), "dmxxmfacc $AT",
543- IIC_VecGeneral,
544- [(set v512i1:$ATo, (int_ppc_mma_xxmfacc v512i1:$AT))]>,
540+ // and so register allocation would have to know to match 4 vsr registers
541+ // with one wacc register.
542+ // On top of that Future CPU has a more convenient way to move between vsrs
543+ // and wacc registers using xxextfdmr512 and xxinstdmr512.
544+ def XXMFACCW :
545+ XForm_AT3<31, 0, 177, (outs wacc:$ATo), (ins wacc:$AT), "xxmfacc $AT",
546+ IIC_VecGeneral, []>,
545547 RegConstraint<"$ATo = $AT">, NoEncode<"$ATo">;
546- def DMXXMTACC:
547- XForm_AT3<31, 1, 177, (outs wacc:$AT), (ins wacc:$ATi), "dmxxmtacc $AT",
548- IIC_VecGeneral,
549- [(set v512i1:$AT, (int_ppc_mma_xxmtacc v512i1:$ATi))]>,
548+ def XXMTACCW :
549+ XForm_AT3<31, 1, 177, (outs wacc:$AT), (ins wacc:$ATi), "xxmtacc $AT",
550+ IIC_VecGeneral, []>,
550551 RegConstraint<"$ATi = $AT">, NoEncode<"$ATi">;
551552
552553 let isAsCheapAsAMove = 1, isReMaterializable = 1 in {
553- def DMXXSETACCZ:
554+ def DMXXSETACCZ :
554555 XForm_AT3<31, 3, 177, (outs wacc:$AT), (ins), "dmxxsetaccz $AT",
555- IIC_VecGeneral,
556- [(set v512i1:$AT, (int_ppc_mma_xxsetaccz))]>;
556+ IIC_VecGeneral, [(set v512i1:$AT, (int_ppc_mma_xxsetaccz))]>;
557557 }
558558
559559 def XVI8GER4WSPP :
0 commit comments