search for: joincopy

Displaying 13 results from an estimated 13 matches for "joincopy".

2007 Dec 16
3
[LLVMdev] Question about coalescing
Dear guys, I want to coalesce some copies, and I would like to know if there is any method that I can call, like JoinCopy from the old (LLVM 1.9) LiveIntervals class. I found it in SimpleRegisterCoalescing (LLVM 2.1), but I do not want to call this analysis, as I have my own. basically, I can determine that two virtuals do not overlap, and I know that it is safe to join them. In the old v1.9, I simply had to...
2007 Dec 17
2
[LLVMdev] Question about coalescing
...methods, can extend this class privately, or can use a reference to an RegisterCoalescer_Impl object. I wish it would be possible to go even further: given that I know that two virtuals do not interfere, I would like to coalesce them by simply joining their interval representation. When I call JoinCopy, the method does that, but it checks again a lot of information that I already know: do not overlap, are virtuals, etc. best, Fernando > > On Dec 15, 2007, at 4:45 PM, Fernando Magno Quintao Pereira wrote: > >> >> Dear guys, >> >> I want to coalesce some cop...
2007 Dec 17
0
[LLVMdev] Question about coalescing
On Dec 15, 2007, at 4:45 PM, Fernando Magno Quintao Pereira wrote: > > Dear guys, > > I want to coalesce some copies, and I would like to know if > there is > any method that I can call, like JoinCopy from the old (LLVM 1.9) > LiveIntervals class. I found it in SimpleRegisterCoalescing (LLVM > 2.1), > but I do not want to call this analysis, as I have my own. > > basically, I can determine that two virtuals do not overlap, and I > know that it is safe to join them. In the...
2007 Dec 17
0
[LLVMdev] Question about coalescing
...tend this class privately, or can use a reference to > an RegisterCoalescer_Impl object. I wish it would be possible to go even > further: given that I know that two virtuals do not interfere, I would > like to coalesce them by simply joining their interval representation. > When I call JoinCopy, the method does that, but it checks again a lot of > information that I already know: do not overlap, are virtuals, etc. Right. So it does more work than necessary. I haven't verified this, but I suppose it's possible that your (or my) coalescer might things something is legal when S...
2012 Dec 19
0
[LLVMdev] LLVM ERROR: ran out of registers during register allocation
...ion in the coalescer which gave me the surprise of making the regalloc succeed. To show what I mean, I'm attaching two text files that show the debug info generated when this option is enabled and disabled for my target. To push things a bit further, I wrote a dirty hack in RegisterCoalescer::joinCopy() to return false when the dest regclass is too constrained. This allowed me executing the coalescer without crashing the regalloc. Obviously the generated code is not optimal at all, because there are many useless copies around. I'm pretty sure this is not the right fix at all, but it can give...
2012 Aug 06
4
[LLVMdev] Register Coalescer does not preserve TargetFlag
...andForReg();   MO->addTargetFlag(MO_FLAG_NEG);   MO->setReg(MI->getOperand(1).getReg());   MO = next_MO; } As far as I can tell, this works as every register are still virtual when lowering custom Emitter instructions. However the RegisterCoalescer pass does not preserve TargetFlag in the JoinCopy() member function. For instance, here is some output of the regalloc pass (TF=2 corresponds to a Neg TargetFlag) : 352B    %vreg20:sel_x<def,undef> = COPY %vreg16<kill>[TF=2], %vreg20<imp-def>; R600_Reg128:%vreg20 R600_Reg32:%vreg16     Considering merging %vreg16 with %vreg20:se...
2012 Dec 18
2
[LLVMdev] LLVM ERROR: ran out of registers during register allocation
Hello Jakob, > Those are some severe constraints on register allocation, but it ought to > be possible anyway. > Indeed, these constraints aren't playing very well with the register allocator :\ > > You may wan't to investigate how RAGreedy::canEvictInterference() is > behaving. > Ok, this is what I've noticed, not sure if it makes sense at all but, regalloc
2017 Apr 24
3
Debugging UNREACHABLE "Couldn't join subrange" in RegisterCoalescer (out-of-tree backend)
...ni-0/gctools/llvm/lib/CodeGen/RegisterCoalescer.cpp:2832:0 #11 0x0000000001fdd174 (anonymous namespace)::RegisterCoalescer::joinIntervals(llvm::CoalescerPair&) /d/en/johnsoni-0/gctools/llvm/lib/CodeGen/RegisterCoalescer.cpp:2892:0 #12 0x0000000001fd5fc3 (anonymous namespace)::RegisterCoalescer::joinCopy(llvm::MachineInstr*, bool&) /d/en/johnsoni-0/gctools/llvm/lib/CodeGen/RegisterCoalescer.cpp:1468:0 #13 0x0000000001fdd4b6 (anonymous namespace)::RegisterCoalescer::copyCoalesceWorkList(llvm::MutableArrayRef<llvm::MachineInstr*>) /d/en/johnsoni-0/gctools/llvm/lib/CodeGen/RegisterCoalescer....
2012 Dec 19
2
[LLVMdev] LLVM ERROR: ran out of registers during register allocation
...coalescer which gave me the surprise of making the regalloc succeed. To show what I mean, I'm attaching two text files that show the debug info generated when this option is enabled and disabled for my target. > > To push things a bit further, I wrote a dirty hack in RegisterCoalescer::joinCopy() to return false when the dest regclass is too constrained. This allowed me executing the coalescer without crashing the regalloc. Obviously the generated code is not optimal at all, because there are many useless copies around. I'm pretty sure this is not the right fix at all, but it can give...
2012 Oct 20
0
[LLVMdev] RegisterCoalescing pass crashes with ImplicitDef registers
On Oct 20, 2012, at 1:23 PM, Vincent Lejeune <vljn at ovi.com> wrote: > below is an output of "llc -march=r600 -mcpu=cayman -print-before-all -debug-only=regalloc file.shader" command from llvm3.2svn. > The register coalescing pass crashes when joining vreg12:sel_z with vreg13 registers, because it tries to access the interval liveness of vreg13... which is undefined. >
2012 Oct 20
2
[LLVMdev] RegisterCoalescing pass crashes with ImplicitDef registers
...space)::RegisterCoalescer::joinVirtRegs (this=0x21b62b0, CP=...) at RegisterCoalescer.cpp:1861 #7  0x00000000010cb646 in (anonymous namespace)::RegisterCoalescer::joinIntervals (this=0x21b62b0, CP=...) at RegisterCoalescer.cpp:1883 #8  0x00000000010c84b4 in (anonymous namespace)::RegisterCoalescer::joinCopy (this=0x21b62b0, CopyMI=0x21e8cf8, Again=@0x7fffffffd7a2: false) at RegisterCoalescer.cpp:1002 #9  0x00000000010cb830 in (anonymous namespace)::RegisterCoalescer::copyCoalesceWorkList (this=0x21b62b0, From=0) at RegisterCoalescer.cpp:1924 #10 0x00000000010cb9f7 in (anonymous namespace)::RegisterCoa...
2007 Jul 12
1
[LLVMdev] backend problem with LiveInterval::removeRange
...)+0x1a)[0x87cb046] llc((anonymous namespace)::SignalHandler(int)+0x110)[0x87cb30a] [0xb7ef2420] /lib/libc.so.6(abort+0x109)[0xb7c88e19] /lib/libc.so.6(__assert_fail+0xfc)[0xb7c80ecc] llc(llvm::LiveInterval::removeRange(unsigned int, unsigned int)+0xdd)[0x865de03] llc(llvm::SimpleRegisterCoalescing::JoinCopy(llvm::MachineInstr*, unsigned int, unsigned int, bool)+0x8cb)[0x863ede9] llc(llvm::SimpleRegisterCoalescing::CopyCoalesceInMBB(llvm::MachineBasicBlock*, std::vector<llvm::SimpleRegisterCoalescing::CopyRec, std::allocator<llvm::SimpleRegisterCoalescing::CopyRec> >*, bool)+0x132)[0x863f24...
2012 Oct 20
2
[LLVMdev] RegisterCoalescing pass crashes with ImplicitDef registers
Hi, below is an output of "llc -march=r600 -mcpu=cayman -print-before-all -debug-only=regalloc file.shader" command from llvm3.2svn. The register coalescing pass crashes when joining vreg12:sel_z with vreg13 registers, because it tries to access the interval liveness of vreg13... which is undefined. I don't know if it's a bug of the pass, or if my backend should do something