llvm-project/llvm/lib/Target/RISCV/MCTargetDesc
Craig Topper b7b4f4cbc3 [RISCV] Make scalable vector FMA commutable for register allocation.
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
2021-02-08 10:05:33 -08:00
..
CMakeLists.txt [RISCV] Merge Utils library into MCTargetDesc 2021-01-14 11:47:30 -08:00
RISCVAsmBackend.cpp [MC][Bugfix] Remove redundant parameter for relaxInstruction 2020-04-21 11:06:55 +08:00
RISCVAsmBackend.h [RISCV] Merge Utils library into MCTargetDesc 2021-01-14 11:47:30 -08:00
RISCVBaseInfo.cpp [RISCV] Move RISCVVPseudosTable from RISCVBaseInfo.h to RISCVInstrInfo.h. NFC 2021-01-27 13:38:26 -08:00
RISCVBaseInfo.h [RISCV] Make scalable vector FMA commutable for register allocation. 2021-02-08 10:05:33 -08:00
RISCVELFObjectWriter.cpp
RISCVELFStreamer.cpp [RISCV] Merge Utils library into MCTargetDesc 2021-01-14 11:47:30 -08:00
RISCVELFStreamer.h [RISCV][AsmParser] Implement .option (no)pic 2020-04-17 12:08:30 +00:00
RISCVFixupKinds.h
RISCVInstPrinter.cpp [llvm] Remove redundant return and continue statements (NFC) 2021-01-14 20:30:34 -08:00
RISCVInstPrinter.h [RISCV] Remove unused method RISCVInstPrinter::printSImm5Plus1. NFC 2021-01-04 12:21:35 -08:00
RISCVMCAsmInfo.cpp [MC][RISCV] Set UseIntegratedAssembler to true 2020-07-12 21:04:48 -07:00
RISCVMCAsmInfo.h
RISCVMCCodeEmitter.cpp [RISCV] Merge Utils library into MCTargetDesc 2021-01-14 11:47:30 -08:00
RISCVMCExpr.cpp [RISCV] Don't include CodeGen layer files in MC layer 2020-11-12 07:45:38 -08:00
RISCVMCExpr.h [RISCV] Remove unused forward declarations. NFC. 2020-04-23 16:30:45 +01:00
RISCVMCTargetDesc.cpp [RISCV] Merge Utils library into MCTargetDesc 2021-01-14 11:47:30 -08:00
RISCVMCTargetDesc.h [RISCV] Remove unused forward declarations. NFC. 2020-04-23 16:30:45 +01:00
RISCVMatInt.cpp [RISCV] Merge Utils library into MCTargetDesc 2021-01-14 11:47:30 -08:00
RISCVMatInt.h [RISCV] Merge Utils library into MCTargetDesc 2021-01-14 11:47:30 -08:00
RISCVTargetStreamer.cpp [RISCV] Update the version number to v0.10 for vector. 2021-01-30 07:20:05 +08:00
RISCVTargetStreamer.h [llvm] Forward-declare formatted_raw_ostream (NFC) 2021-01-28 22:21:13 -08:00