search for: finalizebundle

Displaying 20 results from an estimated 24 matches for "finalizebundle".

2012 Mar 29
2
[LLVMdev] VLIWPacketizerList: failing to schedule terminators
...ent > couple target hooks. isSchedulingBoundary is one of them. Also try to > disable that assert and see what happens. It sounds strange, but in some > cases that assert is overly restrictive. Thanks, I disabled that assert, and I got a little farther. I hit some more assertion failures finalizeBundle, because the instructions were still using virtual registers. I'm not sure why finalizeBundle doesn't currently handle virtual registers, maybe the implementation isn't complete yet? If I remove those asserts in finalizeBundle, I can get the program to compile, and it has the VLIW bun...
2013 Feb 02
0
[LLVMdev] Asserts in bundleWithPred() and bundleWithSucc()
...g a connection even if it already exist? The intention was to identify code that may have been converted from the old style a little too quickly. I wanted to avoid bugs from a global s/setIsInsideBundle/bundleWithPred/g search and replace. > My problem with them > happens when I try to call finalizeBundle() on an existing bundle to which I > have added a new instruction. The goal - a new bundle header with liveness > abbreviation, but because of these asserts I now have to unbundle all, and > re-bundle them right back again for no obvious benefit... finalizeBundle is calling 'MIBundleB...
2012 Mar 29
0
[LLVMdev] VLIWPacketizerList: failing to schedule terminators
...hooks. isSchedulingBoundary is one of them. Also try to >> disable that assert and see what happens. It sounds strange, but in some >> cases that assert is overly restrictive. > > Thanks, I disabled that assert, and I got a little farther. I hit > some more assertion failures finalizeBundle, because the > instructions were still using virtual registers. I'm not sure why > finalizeBundle doesn't currently handle virtual registers, maybe the > implementation isn't complete yet? > > If I remove those asserts in finalizeBundle, I can get the program > to co...
2013 Feb 01
4
[LLVMdev] Asserts in bundleWithPred() and bundleWithSucc()
Jakob, I have a question about the following (four) asserts recently added in bundleWithPred() and bundleWithSucc() (see below). What is the real danger of reasserting a connection even if it already exist? My problem with them happens when I try to call finalizeBundle() on an existing bundle to which I have added a new instruction. The goal - a new bundle header with liveness abbreviation, but because of these asserts I now have to unbundle all, and re-bundle them right back again for no obvious benefit... In other words, may I suggest removing them rather tha...
2013 Feb 04
2
[LLVMdev] Asserts in bundleWithPred() and bundleWithSucc()
Jakob, > The intention was to identify code that may have been converted from > the old style a little too quickly. I wanted to avoid bugs from a > global s/setIsInsideBundle/bundleWithPred/g search and replace. This is a good intent. Maybe a bit temporal but sound nevertheless. > finalizeBundle is calling 'MIBundleBuilder Bundle(MBB, FirstMI, > LastMI)' which ought to work with pre-bundled instructions. Not exactly. Let me illustrate couple cases here (for illustration purposes "^" means "isBundledWithPred()" and "v" means "isBundledWithSucc...
2012 Mar 30
1
[LLVMdev] VLIWPacketizerList: failing to schedule terminators
...ry is one of them. Also try to > >> disable that assert and see what happens. It sounds strange, but in some > >> cases that assert is overly restrictive. > > > > Thanks, I disabled that assert, and I got a little farther. I hit > > some more assertion failures finalizeBundle, because the > > instructions were still using virtual registers. I'm not sure why > > finalizeBundle doesn't currently handle virtual registers, maybe the > > implementation isn't complete yet? > > > > If I remove those asserts in finalizeBundle, I can g...
2013 Feb 04
0
[LLVMdev] Asserts in bundleWithPred() and bundleWithSucc()
...n was to identify code that may have been converted from >> the old style a little too quickly. I wanted to avoid bugs from a >> global s/setIsInsideBundle/bundleWithPred/g search and replace. > > This is a good intent. Maybe a bit temporal but sound nevertheless. > >> finalizeBundle is calling 'MIBundleBuilder Bundle(MBB, FirstMI, >> LastMI)' which ought to work with pre-bundled instructions. > > Not exactly. Let me illustrate couple cases here (for illustration purposes > "^" means "isBundledWithPred()" and "v" means &quo...
2014 Jan 09
2
[LLVMdev] basic block missing after MachineInstr packetizing
Sergei, Thank you for your attention. My target is a custom VLIW DSP. I am not sure dependency dag is correct when it gets scheduled and packetized. Months ago, I submitted a bug at http://llvm.org/bugs/show_bug.cgi?id=17894 which explained more details. I am not sure my understanding of this bug is proper, but modified my local codes this way and it works for my target when scheduling and
2012 Mar 29
0
[LLVMdev] VLIWPacketizerList: failing to schedule terminators
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 hooks. isSchedulingBoundary is one of them. Also try to disable that assert and see what happens. It
2012 Mar 29
2
[LLVMdev] VLIWPacketizerList: failing to schedule terminators
On Thu, Mar 29, 2012 at 01:50:58PM -0500, Sergei Larin wrote: > Tom, > > What is in your isSchedulingBoundary? If it contains isLabel you might > need to disable that assert: > > assert(!MI->isTerminator() && !MI->isLabel() && > "Cannot schedule terminators or labels!"); > > Sergei Larin > > -- > Qualcomm
2017 Feb 23
2
Bundling MachineInstr instructions before register allocation seems to always give errors
...invoked before the "Eliminate PHI nodes for register allocation" pass. If however, there is a simple possibility to bundle MachineInstr before RA, please let me know. Thank you, Alex PS: Is there a possibility to bundle MachineInstr instructions before RA and use llvm::finalizeBundle() on these bundles in a pass invoked after RA?
2015 Nov 17
2
DFAPacketzer, Hexagon and bundles with 1 instruction
...cket - End the current packet, bundle packet instructions and reset // DFA state. void VLIWPacketizerList::endPacket(MachineBasicBlock *MBB, MachineInstr *MI) { if (CurrentPacketMIs.size() > 1) { MachineInstr *MIFirst = CurrentPacketMIs.front(); finalizeBundle(*MBB, MIFirst, MI); } CurrentPacketMIs.clear(); ResourceTracker->clearResources(); } Based on this, it looks like packets with one instruction are not finalized (finalizeBundle is the one which inserts a BUNDLE instruction). So what happens with packets that have only 1 instruction? Is th...
2017 Mar 07
2
Specifying conditional blocks for the back end
Hello. Because I experience optimizations (DCE, OoO schedule) which mess the correct semantics of the list of instructions lowered in ISelLowering from the VSELECT LLVM instruction, and these bad transformations happen even before scheduling, at later I-sel subpasses, I try to fix this problem by lowering VSELECT to only one pseudo-instruction and LATER translate it to a list of
2013 Feb 04
2
[LLVMdev] Asserts in bundleWithPred() and bundleWithSucc()
...may have been converted from > >> the old style a little too quickly. I wanted to avoid bugs from a > >> global s/setIsInsideBundle/bundleWithPred/g search and replace. > > > > This is a good intent. Maybe a bit temporal but sound nevertheless. > > > >> finalizeBundle is calling 'MIBundleBuilder Bundle(MBB, FirstMI, > >> LastMI)' which ought to work with pre-bundled instructions. > > > > Not exactly. Let me illustrate couple cases here (for illustration > > purposes "^" means "isBundledWithPred()" and &quot...
2016 Oct 28
0
Understanding and Cleaning Up Machine Instruction Bundles
...Using the pass today does not even work as the MachineVerifier will reject the > intermediate unfinalized state (missing internal read markers). I'd suggest to get > rid of the pass and the idea of delegating finalization to an own pass, any objections? No objections. Also, the existing finalizeBundle function works on Hexagon mostly by luck. Hexagon's packet semantics is "mostly" parallel. In general all registers are read before any register updates take place. The current function works by scanning the bundle sequentially. That doesn't cause problems for us, mostly becau...
2016 Jan 20
2
a bundle with one instruction
...cket - End the current packet, bundle packet instructions and reset // DFA state. void VLIWPacketizerList::endPacket(MachineBasicBlock *MBB, MachineInstr *MI) { if (CurrentPacketMIs.size() > 1) { MachineInstr *MIFirst = CurrentPacketMIs.front(); finalizeBundle(*MBB, MIFirst, MI); } CurrentPacketMIs.clear(); ResourceTracker->clearResources(); } My initial idea was to simply add a NOP instruction to the CurrentPacketMIs, but it is proving to be more difficult than I thought. Would anyone care to help? -- Rail Shafigulin Software Engineer Esenci...
2016 Oct 27
4
Understanding and Cleaning Up Machine Instruction Bundles
I am using machine instruction bundles [1] before register allocation. This appears not to be too common today and I'd really like some input on the intentions and plans of the current system. And would like some input on clean up proposals. [1] I am currently experimenting to use machine instruction bundles to reliably form macroop fusion opportunities without spills, reloads, splits or
2016 Oct 28
2
Understanding and Cleaning Up Machine Instruction Bundles
...nds 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. That may all be true. However I'd like to point out that this is the status quo! finalizeBundle() will give you the BUNDLE instruction in the header and it is used by everyone using bundles: ARM, and AMDGPU target and the DFAPacketizer (which is used by Hexagon). Not using BUNDLE and correctly using MIBundleOperands at the right places in the register allocator is not where the code is today...
2016 Oct 28
0
Understanding and Cleaning Up Machine Instruction Bundles
...ruction 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. > > That may all be true. However I'd like to point out that this is the status quo! finalizeBundle() will give you the BUNDLE instruction in the header and it is used by everyone using bundles: ARM, and AMDGPU target and the DFAPacketizer (which is used by Hexagon). > > Not using BUNDLE and correctly using MIBundleOperands at the right places in the register allocator is not where the cod...
2016 Oct 28
2
Understanding and Cleaning Up Machine Instruction Bundles
...day does not even work as the MachineVerifier will reject the >> intermediate unfinalized state (missing internal read markers). I'd suggest to get >> rid of the pass and the idea of delegating finalization to an own pass, any objections? > > No objections. Also, the existing finalizeBundle function works on Hexagon mostly by luck. Hexagon's packet semantics is "mostly" parallel. In general all registers are read before any register updates take place. The current function works by scanning the bundle sequentially. That doesn't cause problems for us, mostly because t...