search for: jmpr

Displaying 16 results from an estimated 16 matches for "jmpr".

Did you mean: jmp
2012 Jun 13
2
[LLVMdev] Assert in live update from MI scheduler.
...y pointer") IntRegs:%vreg7,%vreg1 > STriw_GP <ga:@yy_instr>, 0, %vreg7<kill>; mem:ST4[@yy_instr](tbaa=!"any pointer") IntRegs:%vreg7 > %vreg8<def> = IMPLICIT_DEF; IntRegs:%vreg8 > %R0<def> = COPY %vreg8<kill>; IntRegs:%vreg8 > JMPR %PC<imp-def>, %R31<imp-use>, %R0<imp-use,kill> > > Right after the dead vreg is introduced: > > # *** IR Dump After Eliminate PHI nodes for register allocation ***: > # Machine code for function push: Post SSA > Function Live Outs: %R0 > > BB#0: deriv...
2012 Jun 13
0
[LLVMdev] Assert in live update from MI scheduler.
...r.end Predecessors according to CFG: BB#1 %vreg7<def> = LDriw %vreg1<kill>, 0; mem:LD4[%first1](tbaa=!"any pointer") IntRegs:%vreg7,%vreg1 STriw_GP <ga:@yy_instr>, 0, %vreg7<kill>; mem:ST4[@yy_instr](tbaa=!"any pointer") IntRegs:%vreg7 JMPR %PC<imp-def>, %R31<imp-use>, %R0<imp-use,undef> If loop never iterates, vreg10 and vreg1 will hold garbage (as they should!). If it iterates even once, vreg1 use in BB2 will be fine. This exactly matches original C code behavior. If it is a legitimate code sequence, we n...
2012 Jun 14
1
[LLVMdev] Assert in live update from MI scheduler.
...redecessors according to CFG: BB#1 > %vreg7<def> = LDriw %vreg1<kill>, 0; mem:LD4[%first1](tbaa=!"any pointer") IntRegs:%vreg7,%vreg1 > STriw_GP <ga:@yy_instr>, 0, %vreg7<kill>; mem:ST4[@yy_instr](tbaa=!"any pointer") IntRegs:%vreg7 > JMPR %PC<imp-def>, %R31<imp-use>, %R0<imp-use,undef> > > If loop never iterates, vreg10 and vreg1 will hold garbage (as they should!). If it iterates even once, vreg1 use in BB2 will be fine. > This exactly matches original C code behavior. > > If it is a legitimate...
2007 Aug 08
1
[LLVMdev] Destination register needs to be valid after callee saved register restore when tail calling
...invalidated by the restored callee saved registers. ... movl 12(%esp), %esi << 12(%esp) contains the function pointer movl %eax, 44(%esp) movl 32(%esp), %esi << *!# %esi no longer contains the function pointer to be called addl $44, %esp jmp *%esi # TAIL CALL jmpr Is there a way to indicate that the register the tail call instruction uses as destination needs to be valid after the callee saved registers have been restored? (some X86InstrInfo.td foo magic maybe ?) Or do i have to insert code into PEI::saveCalleeSavedRegisters to detect that there is...
2012 Jun 13
0
[LLVMdev] Assert in live update from MI scheduler.
...](tbaa=!"any pointer") IntRegs:%vreg7,%vreg1 STriw_GP <ga:@yy_instr>, 0, %vreg7<kill>; mem:ST4[@yy_instr](tbaa=!"any pointer") IntRegs:%vreg7 %vreg8<def> = IMPLICIT_DEF; IntRegs:%vreg8 %R0<def> = COPY %vreg8<kill>; IntRegs:%vreg8 JMPR %PC<imp-def>, %R31<imp-use>, %R0<imp-use,kill> Right after the dead vreg is introduced: # *** IR Dump After Eliminate PHI nodes for register allocation ***: # Machine code for function push: Post SSA Function Live Outs: %R0 BB#0: derived from LLVM BB %entry %vre...
2012 Jun 13
2
[LLVMdev] Assert in live update from MI scheduler.
On Jun 13, 2012, at 10:49 AM, Sergei Larin <slarin at codeaurora.org> wrote: > So if this early exit is taken: > > // SSA defs do not have output/anti dependencies. > // The current operand is a def, so we have at least one. > if (llvm::next(MRI.def_begin(Reg)) == MRI.def_end()) > return; > > we do not ever get to this point: > >
2012 Jun 12
2
[LLVMdev] Assert in live update from MI scheduler.
...Predecessors according to CFG: BB#1 224B %vreg7<def> = LDriw %vreg1<kill>, 0; mem:LD4[%first1](tbaa=!"any pointer") IntRegs:%vreg7,%vreg1 240B STriw_GP <ga:@yy_instr>, 0, %vreg7<kill>; mem:ST4[@yy_instr](tbaa=!"any pointer") IntRegs:%vreg7 256B JMPR %PC<imp-def>, %R31<imp-use>, %R0<imp-use,undef> Hexagon MI scheduler is working with BB1 and picks this load: %vreg10<def> = LDriw %vreg9<kill>, 0; mem:LD4[%stack.0.in] IntRegs:%vreg10,%vreg9 To be scheduled first (!). Right there after 7 clang 0x0000...
2012 Jun 13
0
[LLVMdev] Assert in live update from MI scheduler.
...to CFG: BB#1 > 224B %vreg7<def> = LDriw %vreg1<kill>, 0; mem:LD4[%first1](tbaa=!"any > pointer") IntRegs:%vreg7,%vreg1 > 240B STriw_GP <ga:@yy_instr>, 0, %vreg7<kill>; > mem:ST4[@yy_instr](tbaa=!"any pointer") IntRegs:%vreg7 > 256B JMPR %PC<imp-def>, %R31<imp-use>, %R0<imp-use,undef> > > Hexagon MI scheduler is working with BB1 and picks this load: > > %vreg10<def> = LDriw %vreg9<kill>, 0; mem:LD4[%stack.0.in] > IntRegs:%vreg10,%vreg9 > > To be scheduled first (!). Right there...
2007 Aug 08
0
[LLVMdev] Destination register needs to be valid after callee saved register restore when tail calling
...the function pointer to (right before the callee saved register restore) but thinking a little further that's nonsense. something like let isCall = 1, isTerminator = 1, isReturn = 1, isBarrier = 1, noResults = 1, ifDestRegisterisCalleeSavedEmitAMoveToECXAndJumpToThat=1 in def TAILJMPr : I<0xFF, MRM4r, (ops GR32:$dst), "jmp {*}$dst # TAIL CALL jmpr", []>; On 8 Aug 2007, at 18:27, Dale Johannesen wrote: > Inserting a pseudo before your tail call that defines all the callee- > saved > registers should work. See FP_REG_KILL. the trick...
2007 Aug 08
4
[LLVMdev] Destination register needs to be valid after callee saved register restore when tail calling
Hello, Arnold. > Is there a way to indicate that the register the tail call > instruction uses as destination needs to be valid after the callee > saved registers have been restored? (some X86InstrInfo.td foo magic > maybe ?) It's wrong way to do the things. Because in this case you either violate the ABI for callee, or you're restricted to do tail call lowering only for
2012 Jun 11
0
[LLVMdev] scoreboard hazard det. and instruction groupings
On Jun 11, 2012, at 12:07 PM, Hal Finkel <hfinkel at anl.gov> wrote: > Looking at VLIWPacketizerList::PacketizeMIs, it seems like the > instructions are first scheduled (via some external scheme?), and then > packetized 'in order'. Is that correct? Anshu? > In the PowerPC grouping scheme, resources are assigned on a group > basis (by the instruction dispatching
2007 Aug 09
1
[LLVMdev] Destination register needs to be valid after callee saved register restore when tail calling
...efore the callee saved register restore) but thinking a little > further that's nonsense. > > something like > let isCall = 1, isTerminator = 1, isReturn = 1, isBarrier = 1, > noResults = 1, > ifDestRegisterisCalleeSavedEmitAMoveToECXAndJumpToThat=1 > in > def TAILJMPr : I<0xFF, MRM4r, (ops GR32:$dst), "jmp {*}$dst # > TAIL CALL jmpr", > []>; > > On 8 Aug 2007, at 18:27, Dale Johannesen wrote: >> Inserting a pseudo before your tail call that defines all the callee- >> saved >> registers should work....
2012 Jun 13
4
[LLVMdev] Assert in live update from MI scheduler.
...%vreg7<def> = LDriw %vreg1<kill>, 0; > mem:LD4[%first1](tbaa=!"any > > pointer") IntRegs:%vreg7,%vreg1 > > 240B STriw_GP <ga:@yy_instr>, 0, %vreg7<kill>; > > mem:ST4[@yy_instr](tbaa=!"any pointer") IntRegs:%vreg7 > > 256B JMPR %PC<imp-def>, %R31<imp-use>, %R0<imp-use,undef> > > > > Hexagon MI scheduler is working with BB1 and picks this load: > > > > %vreg10<def> = LDriw %vreg9<kill>, 0; mem:LD4[%stack.0.in] > > IntRegs:%vreg10,%vreg9 > > > > To be...
2012 Jun 11
3
[LLVMdev] scoreboard hazard det. and instruction groupings
On Mon, 11 Jun 2012 10:48:18 -0700 Andrew Trick <atrick at apple.com> wrote: > On Jun 11, 2012, at 9:30 AM, Hal Finkel <hfinkel at anl.gov> wrote: > > > I'm considering writing more-detailed itineraries for some PowerPC > > CPUs that use the 'traditional' instruction grouping scheme. In > > essence, this means that multiple instructions will stall
2012 Jun 13
0
[LLVMdev] Assert in live update from MI scheduler.
...w %vreg1<kill>, 0; > > mem:LD4[%first1](tbaa=!"any > > > pointer") IntRegs:%vreg7,%vreg1 > > > 240B STriw_GP <ga:@yy_instr>, 0, %vreg7<kill>; > > > mem:ST4[@yy_instr](tbaa=!"any pointer") IntRegs:%vreg7 > > > 256B JMPR %PC<imp-def>, %R31<imp-use>, %R0<imp-use,undef> > > > > > > Hexagon MI scheduler is working with BB1 and picks this load: > > > > > > %vreg10<def> = LDriw %vreg9<kill>, 0; mem:LD4[%stack.0.in] > > > IntRegs:%vreg10,%vreg9 &...
2012 Feb 10
1
[LLVMdev] Question about /llvm/trunk/lib/CodeGen/MachineScheduler.cpp
...gt;>> IntRegs:%vreg1,%vreg9 >>>>> Successors according to CFG: BB#8 >>>>> >>>>> BB#8: derived from LLVM BB %sw.epilog, ADDRESS TAKEN >>>>> Predecessors according to CFG: BB#0 BB#1 BB#7 BB#6 BB#5 BB#4 BB#2 >>>>> JMPR %PC<imp-def,dead>, %R31<imp-use>, %R0<imp-use,undef> >>>>> ... >>>>> >>>>> BB#7 seems to cause a problem when iterating over it with RegionEnd >>>> pointing >>>>> somewhere wrong. Am I breaking some implicit...