search for: finalizemachinebundles

Displaying 11 results from an estimated 11 matches for "finalizemachinebundles".

2016 Oct 27
4
Understanding and Cleaning Up Machine Instruction Bundles
...ic block iterator moves from bundle to bundle skipping the instructions inside the bundle. Iterating over the operands will only give us the operands of the BUNDLE instruction but that is fine, because it basically has a copy of everything inside the bundle. == When to finalize bundles; Remove the FinalizeMachineBundles pass? == However there is a number of remaining questions/confusion: The RFC indicates that the finalization step is done as a separate pass at the end of the register allocation pipeline. In fact a FinalizeMachineBundles pass exists but is not used by anyone. There is no in-tree target doing bund...
2016 Oct 28
0
Understanding and Cleaning Up Machine Instruction Bundles
...ing over the operands > will only give us the operands of the BUNDLE instruction but that is fine, > because it basically has a copy of everything inside the bundle. The BUNDLE instruction simply isn’t necessary to do anything you just described. > == When to finalize bundles; Remove the FinalizeMachineBundles pass? == > > However there is a number of remaining questions/confusion: The RFC indicates > that the finalization step is done as a separate pass at the end of the > register allocation pipeline. In fact a FinalizeMachineBundles pass exists but > is not used by anyone. There is no...
2012 Mar 29
0
[LLVMdev] VLIWPacketizerList: failing to schedule terminators
...edges crossing the boundary. 2) Scheduler and bundler operate on the same scope (an entire block): isSchedulingBoundary = false and all instructions must be correctly handled by the DAG builder. DAG edges will be built for all instructions within the block. --- Now, regarding bundle creation. The FinalizeMachineBundles pass will "finalize" bundles for you after regalloc. You can enable that in your target config. e.g. bool MyTargetPassConfig::addFinalizeRegAlloc() { addPass(FinalizeMachineBundlesID); } This does not create bundles, rather it wraps bundles in an extra layer of abstraction by copyin...
2015 May 27
3
[LLVMdev] RFC: Separate machine IR from lib/CodeGen into lib/MIR
...ink that they will pose such a big problem. I have a brief list of things that have to be done before I can move the Machine IR stuff from CodeGen to some other library: - Move the SplitCriticalEdge method from MachineBasicBlock ( http://reviews.llvm.org/D10064). - Move the UnpackMachineBundles and FinalizeMachineBundles passes from MachineInstrBundle.cpp. (http://reviews.llvm.org/D10070 + 1 upcoming patch). - Refactor SlotIndexes.h: keep the SlotIndexes pass and move the rest to SlotIndex.h. Introduce a new container class in SlotIndex.h that will extract the map between machine instructions and slot indexes fro...
2015 May 27
0
[LLVMdev] RFC: Separate machine IR from lib/CodeGen into lib/MIR
...will pose such a big problem. > I have a brief list of things that have to be done before I can move the Machine IR stuff from CodeGen to some other library: > - Move the SplitCriticalEdge method from MachineBasicBlock (http://reviews.llvm.org/D10064). > - Move the UnpackMachineBundles and FinalizeMachineBundles passes from MachineInstrBundle.cpp. (http://reviews.llvm.org/D10070 + 1 upcoming patch). > - Refactor SlotIndexes.h: keep the SlotIndexes pass and move the rest to SlotIndex.h. Introduce a new container class in SlotIndex.h that will extract the map > between machine instructions and slot i...
2012 Mar 29
2
[LLVMdev] VLIWPacketizerList: failing to schedule terminators
On Thu, Mar 29, 2012 at 02:57:27PM -0500, Sergei Larin wrote: > Tom, > > I do not have your call stack, but packetizer calls > ScheduleDAGInstrs::buildSchedGraph to create dependency model. If this is > the first time you use the new MI sched infrastructure (like your target has > not implemented misched yet) there might be some work needed to implement > couple target
2015 May 27
1
[LLVMdev] RFC: Separate machine IR from lib/CodeGen into lib/MIR
...ch a big problem. >> I have a brief list of things that have to be done before I can move the Machine IR stuff from CodeGen to some other library: >> - Move the SplitCriticalEdge method from MachineBasicBlock (http://reviews.llvm.org/D10064). >> - Move the UnpackMachineBundles and FinalizeMachineBundles passes from MachineInstrBundle.cpp. (http://reviews.llvm.org/D10070 + 1 upcoming patch). >> - Refactor SlotIndexes.h: keep the SlotIndexes pass and move the rest to SlotIndex.h. Introduce a new container class in SlotIndex.h that will extract the map >> between machine instructions and...
2012 Mar 30
1
[LLVMdev] VLIWPacketizerList: failing to schedule terminators
...ry. > > 2) Scheduler and bundler operate on the same scope (an entire block): isSchedulingBoundary = false and all instructions must be correctly handled by the DAG builder. DAG edges will be built for all instructions within the block. > > --- > Now, regarding bundle creation. The FinalizeMachineBundles pass will "finalize" bundles for you after regalloc. You can enable that in your target config. e.g. > > bool MyTargetPassConfig::addFinalizeRegAlloc() { > addPass(FinalizeMachineBundlesID); > } > > This does not create bundles, rather it wraps bundles in an extra...
2016 Oct 28
2
Understanding and Cleaning Up Machine Instruction Bundles
...! I believe that we are far enough away from it that we should rather fix the status quo first to avoid all the confusion and then move forward to the header-less scheme in a targetted change. That is why I added the last paragraph in my mail. > >> == When to finalize bundles; Remove the FinalizeMachineBundles pass? == >> >> However there is a number of remaining questions/confusion: The RFC indicates >> that the finalization step is done as a separate pass at the end of the >> register allocation pipeline. In fact a FinalizeMachineBundles pass exists but >> is not used by...
2013 Sep 26
1
[LLVMdev] Enabling MI Scheduler on x86 (was Experimental Evaluation of the Schedulers in LLVM 3.3)
Hi, Thanks for your explanations! How is the big picture for supporting in-order VLIW architectures and the like though? I am asking because I am currently implementing instruction scheduling in our own backend for our custom Patmos processor, for which I need to support both branch delay slots and bundles, some restrictions regarding bundles. For the moment, I am quite happy with a simple
2015 May 27
3
[LLVMdev] RFC: Separate machine IR from lib/CodeGen into lib/MIR
On Wed, May 27, 2015 at 8:15 AM Chris Lattner <clattner at apple.com> wrote: > On May 26, 2015, at 11:20 PM, Quentin Colombet <qcolombet at apple.com> > wrote: > > +1. > > Could those two be subdirectories of one “Machine-Related-Stuff” directory? > E.g., > MachineStuff/IR > MachineStuff/CodeGen > > Where MachineStuff is something meaningful :). >