Displaying 13 results from an estimated 13 matches for "insertnoop".
2007 Jul 13
3
[LLVMdev] NO-OP
...#39;ve built a pass to split critical edges of machine functions, and I have
>> to insert new basic blocks. Some of them will have MBB->begin() ==
>> MBB->end().
>
> Ah, machine basic blocks are different. They *are* allowed to be empty.
>
I would like to build an "insertNoOp" and add it to MRegisterInfo. I would
have one for each target. For the x86 I am moving the stack pointer to
itself. Is there a better "no-op"? A better one would be one that does not
use any register, so it will add absolutely no burden on the register
allocator.
Fernando
2007 Aug 10
2
[LLVMdev] Changing basic blocks
For adding the nop:
TII->insertNoop(*BB, BB->end());
2007/8/9, Chris Lattner <sabre at nondot.org>:
>
> On Thu, 9 Aug 2007, [ISO-8859-1] Emílio Wuerges wrote:
> > I too believe it should not be complicated.
> > But I was not being able to do it.
> > Finally, after some thinking (and tinkering), this...
2009 Jan 20
1
[LLVMdev] HazardRecognizer and RegisterAllocation
Dan:
CellSPU could clearly benefit from the post-RA scheduler. In fact, we
were thinking about writing a machine pass of our own.
One thing that does "disturb" me is that both HazardRecognizer and
post-RA sched assume there's only one kind of NOP. For Cell, there
are two, depending upon the pipeline being filled. Pipe 0 takes
"ENOP" whereas Pipe 1 take
2007 Jul 13
2
[LLVMdev] NO-OP
>> I am in need of a no-op instruction: an instruction that does not do
>> anything, and has no operands. Does LLVM predefine such an instruction? I
>> want to transform the program so that there is no empty basic block.
>
> You can never have an empty basic block. All BBs must have a TerminatorInst.
>
I've built a pass to split critical edges of machine
2007 Jul 13
0
[LLVMdev] NO-OP
On Fri, 13 Jul 2007, Fernando Magno Quintao Pereira wrote:
>> You can never have an empty basic block. All BBs must have a TerminatorInst.
>>
>
> I've built a pass to split critical edges of machine functions, and I have
> to insert new basic blocks. Some of them will have MBB->begin() ==
> MBB->end().
Ah, machine basic blocks are different. They *are* allowed
2007 Jul 13
0
[LLVMdev] NO-OP
...functions,
>>> and I have
>>> to insert new basic blocks. Some of them will have MBB->begin() ==
>>> MBB->end().
>>
>> Ah, machine basic blocks are different. They *are* allowed to be
>> empty.
>>
>
> I would like to build an "insertNoOp" and add it to MRegisterInfo.
> I would
> have one for each target. For the x86 I am moving the stack pointer to
> itself. Is there a better "no-op"? A better one would be one that
> does not
> use any register, so it will add absolutely no burden on the register
&...
2007 Aug 09
0
[LLVMdev] Changing basic blocks
On Thu, 9 Aug 2007, [ISO-8859-1] Em�lio Wuerges wrote:
> I too believe it should not be complicated.
> But I was not being able to do it.
> Finally, after some thinking (and tinkering), this worked like a charm:
>
> MachineInstr* mi = BB->remove(BB->begin());
> BB->push_back(mi);
>
> But, is there a better way to do it?
This is a good way to do a single
2007 Aug 16
0
[LLVMdev] Changing basic blocks
...And this worked. Flawlessly. Without the error. But this is useless ^_^.
Can someone help me to understand this behavior?
PS, beware code above, I just tested it, not proven it correct, hehe.
2007/8/9, Emílio Wuerges <wuerges at gmail.com>:
>
> For adding the nop:
>
> TII->insertNoop(*BB, BB->end());
>
>
> 2007/8/9, Chris Lattner <sabre at nondot.org>:
> >
> > On Thu, 9 Aug 2007, [ISO-8859-1] Emílio Wuerges wrote:
> > > I too believe it should not be complicated.
> > > But I was not being able to do it.
> > > Finally, aft...
2017 Feb 12
2
Pre-RA scheduler does not generate NOPs when getHazardType() returns NoopHazard
Hello.
I am new to the schedulers implemented in the back end of LLVM.
I am trying to handle data hazards in my simple processor, with instructions that
execute in 1 cycle.
I have tried the standard post-RA scheduler, implemented in
lib/CodeGen/PostRASchedulerList.cpp, (with a ScoreboardHazardRecognizer), but I have some
issues with some consecutive instructions that are
2017 Feb 11
2
Specify special cases of delay slots in the back end
...and otherwise, I give:
return ScoreboardHazardRecognizer::getHazardType(SU, Stalls);
- I implemented in [Target]InstrInfo.cpp 2 more methods:
- CreateTargetPostRAHazardRecognizer() to register the
[Target]DispatchGroupSBHazardRecognizer()
- insertNoop() which returns the target's NOP
- note that my vector (and scalar) instructions are inspired from the Mips back
end, which has MSAInst (and MipsInst) with NoItinerary InstrItinClass. Currently I am not
using a [Target]Schedule.td specifying functional units, processor and instruction...
2007 Aug 09
4
[LLVMdev] Changing basic blocks
Hi Tanya and everybody,
Ty for your support.
I too believe it should not be complicated.
But I was not being able to do it.
For instance, I tried to run this code below:
BB->push_back(&(BB->front()));
BB->pop_front();
But it did not work (kinda obvious why).
Nor this:
BB->push_back(BB->begin());
BB->pop_front();
But also did not work. It seams the same
2017 Feb 10
2
Specify special cases of delay slots in the back end
Hello.
I am progressing a bit with difficulty with the post RA scheduler
(PostRASchedulerList.cpp with ScoreboardHazardRecognizer) - the problem I have is that it
doesn't advance at the next available instruction when the overridden
ScoreboardHazardRecognizer::getHazardType() method returns NoopHazard and it gets stuck at
the same instruction (store in my runs).
Just to make sure:
2011 May 06
0
[LLVMdev] Question about linking llvm-mc when porting a new backend
...int)in
libLLVMEBCCodeGen.a(EBCRegisterInfo.cpp.o)
"llvm::TargetLoweringObjectFile::getSectionForConstant(llvm::SectionKind)
const", referenced from:
vtable for llvm::TargetLoweringObjectFileCOFFin
libLLVMCodeGen.a(TargetLoweringObjectFileImpl.cpp.o)
"llvm::TargetInstrInfo::insertNoop(llvm::MachineBasicBlock&,
llvm::ilist_iterator<llvm::MachineInstr>) const", referenced from:
vtable for llvm::EBCInstrInfoin
libLLVMEBCCodeGen.a(EBCTargetMachine.cpp.o)
vtable for llvm::TargetInstrInfoImplin
libLLVMCodeGen.a(TargetInstrInfoImpl.cpp.o)
vtable for llv...