Displaying 9 results from an estimated 9 matches for "someinstruction".
Did you mean:
moveinstruction
2006 Jun 04
3
[LLVMdev] [PATCH] BasicBlock::getFirstNonPHI
Hi,
everytime one has to add instruction at the beginning of a basic block, one
has to skip past PHI nodes that are already there. How about adding a new
method to BasicBlock, to get that first non-PHI instruction? So, adding an
instruction will be as simple as:
new SomeInstruction(............., BB->getFirstNonPHI())
Patch attached. Comments?
- Volodya
-------------- next part --------------
A non-text attachment was scrubbed...
Name: BasicBlock.diff
Type: text/x-diff
Size: 1679 bytes
Desc: not available
URL: <http://lists.llvm.org/pipermail/llvm-dev/attachments/2006...
2006 Jun 04
0
[LLVMdev] [PATCH] BasicBlock::getFirstNonPHI
...:
> everytime one has to add instruction at the beginning of a basic block, one
> has to skip past PHI nodes that are already there. How about adding a new
> method to BasicBlock, to get that first non-PHI instruction? So, adding an
> instruction will be as simple as:
>
> new SomeInstruction(............., BB->getFirstNonPHI())
Sure, sounds good. A couple requests:
1. Please add a const version that returns a const Instruction* also.
2. There is no need to check for running off the end of the basic block,
you are guaranteed that a block has a terminator, which is not a PHI.
-Ch...
2013 Sep 17
4
[LLVMdev] Is it safe to insert instructions in batches into BBs?
...is:
IRBuilder<> IB(Context);
Vector.push_back(IB.CreateXXX());
Vector.push_back(IB.CreateXXX());
Vector.push_back(IB.CreateXXX());
...
// Other stuff
for (SmallVectorImpl<Instruction*>::iterator I = Vector.begin(), E =
Vector.end(); I != E; ++I) {
SomeBB->getInstList().insert(SomeInstruction, *I);
}
If I add the instructions like this I get strange results. It's like if
llvm gets corrupted or something similar, because in the backend strange
things happen, like MCRegisterInfo returning wrong register aliasing
information in a random fashion (sometimes happens and sometimes doe...
2006 Jun 04
1
[LLVMdev] [PATCH] BasicBlock::getFirstNonPHI
...ction at the beginning of a basic
>> block, one
>> has to skip past PHI nodes that are already there. How about adding a new
>> method to BasicBlock, to get that first non-PHI instruction? So,
>> adding an
>> instruction will be as simple as:
>>
>> new SomeInstruction(............., BB->getFirstNonPHI())
>
> 2. There is no need to check for running off the end of the basic block,
> you are guaranteed that a block has a terminator, which is not a PHI.
Assuming it's a valid BasicBlock. Which, if I understand correctly,
isn't always true in mi...
2006 Jun 05
2
[LLVMdev] Re: [PATCH] BasicBlock::getFirstNonPHI
...has to add instruction at the beginning of a basic block,
>> one has to skip past PHI nodes that are already there. How about adding a
>> new method to BasicBlock, to get that first non-PHI instruction? So,
>> adding an instruction will be as simple as:
>>
>> new SomeInstruction(............., BB->getFirstNonPHI())
>
> Sure, sounds good. A couple requests:
>
> 1. Please add a const version that returns a const Instruction* also.
I was considering it, but then decided that given that you can't pass 'const
Instruction*' as 'insert before...
2016 Oct 28
2
Understanding and Cleaning Up Machine Instruction Bundles
...confusin in-between state
>> that we have today.
>>
>> - Matthias
>
> I’m not sure what you mean by changing MachineInstr::iterator. You mean mop_iterator?
Oh sorry, I was talking about mop_iterator indeed. The thing you get when you use
`for (MachineOperand &MO : someinstruction.operands()) { ... }` which is the standard for the majority of codegen passes today.
>
> You can’t replace an instr iterator with a bundle iterator without breaking some basic invariants:
> MI == MI->operands_begin()->getParent()
>
> That’s why passes should explicitly ask f...
2016 Oct 28
0
Understanding and Cleaning Up Machine Instruction Bundles
...;>> that we have today.
>>>
>>> - Matthias
>>
>> I’m not sure what you mean by changing MachineInstr::iterator. You mean mop_iterator?
> Oh sorry, I was talking about mop_iterator indeed. The thing you get when you use
> `for (MachineOperand &MO : someinstruction.operands()) { ... }` which is the standard for the majority of codegen passes today.
>
>>
>> You can’t replace an instr iterator with a bundle iterator without breaking some basic invariants:
>> MI == MI->operands_begin()->getParent()
>>
>> That’s why passe...
2016 Oct 28
0
Understanding and Cleaning Up Machine Instruction Bundles
> On Oct 27, 2016, at 2:33 PM, Matthias Braun <mbraun at apple.com> wrote:
>
> == BUNDLE instruction / operands ==
> For many backend passes a bundle can appear as a single unit. However one important tool
> here is having an iterator over all operands of this unit.
>
> The original RFC indicates that to achieve this without changing a big number
> of passes an
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