forked from OSchip/llvm-project
b7b4f4cbc3
This adds support for commuting operands and converting between vfmadd and vfmacc to avoid register copies. To avoid messing up intrinsic behavior, I've added new pseudo instructions that have the isCommutable flag set. These pseudos also force a tail agnostic policy. The intrinsic version still use the tail undisturbed policy. For best results it looks like we need to start with fmadd and only pick fmacc if its beneficial. MachineCSE commutes without contraining the operands and then commutes back if it didn't help with CSE. So I've made sure that when the operand choice isn't constrained, we will keep fmadd for MachineCSE and when it does the second commute, we get back the original instruction. Reviewed By: frasercrmck Differential Revision: https://reviews.llvm.org/D95800 |
||
---|---|---|
.. | ||
CMakeLists.txt | ||
RISCVAsmBackend.cpp | ||
RISCVAsmBackend.h | ||
RISCVBaseInfo.cpp | ||
RISCVBaseInfo.h | ||
RISCVELFObjectWriter.cpp | ||
RISCVELFStreamer.cpp | ||
RISCVELFStreamer.h | ||
RISCVFixupKinds.h | ||
RISCVInstPrinter.cpp | ||
RISCVInstPrinter.h | ||
RISCVMCAsmInfo.cpp | ||
RISCVMCAsmInfo.h | ||
RISCVMCCodeEmitter.cpp | ||
RISCVMCExpr.cpp | ||
RISCVMCExpr.h | ||
RISCVMCTargetDesc.cpp | ||
RISCVMCTargetDesc.h | ||
RISCVMatInt.cpp | ||
RISCVMatInt.h | ||
RISCVTargetStreamer.cpp | ||
RISCVTargetStreamer.h |