================ @@ -19,3 +25,16 @@ def ALLCLEAN : InstSP<(outs), (ins), "allclean", []> { let Inst{18-0} = 0; } } // Predicates = [HasUA2005] + +// UltraSPARC Architecture 2007 Instructions +let Predicates = [HasUA2007] in { +def FMADDS : FourOp<"fmadds", 0b110111, 0b0001, FPRegs>; +def FMADDD : FourOp<"fmaddd", 0b110111, 0b0010, DFPRegs>; +def FMSUBS : FourOp<"fmsubs", 0b110111, 0b0101, FPRegs>; +def FMSUBD : FourOp<"fmsubd", 0b110111, 0b0110, DFPRegs>; + +def FNMADDS : FourOp<"fnmadds", 0b110111, 0b1101, FPRegs>; +def FNMADDD : FourOp<"fnmaddd", 0b110111, 0b1110, DFPRegs>; +def FNMSUBS : FourOp<"fnmsubs", 0b110111, 0b1001, FPRegs>; +def FNMSUBD : FourOp<"fnmsubd", 0b110111, 0b1010, DFPRegs>; +} // Predicates = [HasUA2007] ---------------- s-barannikov wrote:
These are essentially VIS instructions, I would argue they should be placed in `SparcInstrInfoVIS.td`. I'm not sure I understand the motivation for putting this handful of instructions into a separate file. What are the benefits? They share encoding space with other related instructions, so it seems logical to me to put them together with those instructions. https://github.com/llvm/llvm-project/pull/138401 _______________________________________________ llvm-branch-commits mailing list llvm-branch-commits@lists.llvm.org https://lists.llvm.org/cgi-bin/mailman/listinfo/llvm-branch-commits