[PATCH] D73643: [WIP] Macro Fusion for RISC-V

Sam Elliott via Phabricator via llvm-commits llvm-commits at lists.llvm.org
Wed Jan 29 11:12:50 PST 2020


lenary added a comment.

Wow, this is really cool! I'm amazed it took so little (target-specific) code.

It would be good to understand the trade-offs of doing this rescheduling when the core doesn't necessarily support fusion. With the current instructions, I don't see many scheduling problems coming from blindly fusing all the time, but maybe this should be a subtarget feature that can be switched on and off in case it creates scheduling issues.



================
Comment at: llvm/lib/Target/RISCV/RISCVTargetMachine.cpp:125
+  createMachineScheduler(MachineSchedContext *C) const override {
+    ScheduleDAGMILive *DAG = createGenericSchedLive(C);
+    DAG->addMutation(createRISCVMacroFusionDAGMutation());
----------------
Is this the default kind of machine scheduler? Does it necessarily make sense to schedule by liveness when RISC-V has so many registers?


Repository:
  rG LLVM Github Monorepo

CHANGES SINCE LAST ACTION
  https://reviews.llvm.org/D73643/new/

https://reviews.llvm.org/D73643





More information about the llvm-commits mailing list