Displaying 20 results from an estimated 10000 matches similar to: "[LLVMdev] Immediate dominator"
2007 Dec 10
1
[LLVMdev] MachineDominatorTree
Hi, guys,
what is the interface for finding the immediate dominator of a machine
basic block in LLVM 2.1? I found some methods to check if a node dominates
other in llvm::MachineDominatorTree, but I was looking for something like:
MachineBasicBlock * mbb = ...
MachineBasicBlock * iDom = XXX->getImmediateDominator(mbb);
is there something similar?
best,
Fernando
2006 Sep 25
2
[LLVMdev] Folding instructions on X86
Dear LLVMers,
I need help with one error in my register allocator. I am getting
errors when folding instructions for the x86 (it does not happen when
I use the PowerPC as target). The problem is that, when I execute
something like: mi = mbb->insert(mbb->erase(mi), fmi), where mbb is a
MachineBasicBlock, valgrind gives this error message:
Address 0x42C62B0 is 24 bytes inside a block
2006 Jul 02
2
[LLVMdev] Inserting move instruction
Dear llvmers,
I am trying to insert a move instruction where both source and
destination registers are physical registers. How is the code for this?
I tried this one here:
void PhiDeconstruction_Fer::add_move (
MachineFunction & mf,
MachineBasicBlock & mbb,
unsigned
2006 Aug 14
0
[LLVMdev] Folding instructions
On Aug 13, 2006, at 11:16 PM, Fernando Magno Quintao Pereira wrote:
>
> Dear LLVMers,
>
> I am trying to fold memory operands in the way that is done in
> RegAllocLocal.cpp, or in LiveIntervalAnalysis.cpp, but I am getting
> errors
> that
> I don't know how to fix. Could someone tell me which steps should I
> take
> in order
> to correctly fold memory
2008 Jan 27
0
[LLVMdev] BreakCriticalMachineEdge.h
Fernando,
The code there should be more or less functional, though it's not
currently used by anything. Eventually it should probably be moved to
a method on MachineBasicBlock.
The API breakage you're seeing is because some methods moved around.
Feel free to fix it. :-)
--Owen
On Jan 26, 2008, at 6:31 PM, Fernando Magno Quintao Pereira wrote:
>
> Hi LLVMers,
>
>
2006 Aug 14
2
[LLVMdev] Folding instructions
Dear LLVMers,
I am trying to fold memory operands in the way that is done in
RegAllocLocal.cpp, or in LiveIntervalAnalysis.cpp, but I am getting errors
that
I don't know how to fix. Could someone tell me which steps should I take
in order
to correctly fold memory operands? The code that I am using is:
const TargetMachine & target_machine =
this->machine_function->getTarget();
2007 Feb 22
0
[LLVMdev] Reference to recently created move
copyRegToReg() always insert the move instruction before "iter". Just
use prior(iter) after the insertion to reference the newly created
move instruction.
Evan
On Feb 21, 2007, at 11:17 PM, Fernando Magno Quintao Pereira wrote:
>
> Hey, guys, I am creating some move instructions with
> MRegisterInfo::copyRegToReg. How do I get a pointer to the instruction
> that I just
2007 Jun 22
0
[LLVMdev] df_ext_iterator in LiveIntervalAnalysis
On Thu, 21 Jun 2007, Fernando Magno Quintao Pereira wrote:
> I would like to make a suggestion. In the LiveIntervalAnalysis class,
> instead of numbering the instructions in the order in which basic blocks
> are stored in the machine function, use the df_ext_iterator. It will order
> the instruction according to the dominance tree (or it seems to be doing
> so). There are many
2007 Jun 22
2
[LLVMdev] df_ext_iterator in LiveIntervalAnalysis
Hi,
Just my two cents:
If I recall correctly, in some papers on the linear scan register
allocation people described that they tried different orderings for
instruction numbering, e.g. including DFS or based on the loop nesting
levels, etc. There was no clear winner though.
But let's see the numbers anyway. May be it really brings some improvements.
-Roman
Chris Lattner wrote:
> On
2007 Jun 22
0
[LLVMdev] df_ext_iterator in LiveIntervalAnalysis
Nice idea. Please also try using SmallPtrSet (with a sufficiently
large size) instead of std::set for traversal after everything is
working. Using std::set can really hurt compile time in case of large
basic block numbers.
Is there a way to dynamically adjust "SmallSize" based on number of
basic blocks in the function?
Evan
On Jun 21, 2007, at 10:20 PM, Fernando Magno Quintao
2008 Jan 27
2
[LLVMdev] BreakCriticalMachineEdge.h
Hi LLVMers,
what is the status of breaking critical edges in machine functions? I
just compiled the top of the LLVM tree, and I found
llvm/CodeGen/BreakCriticalMachineEdge.h. But this file seems not to be
up-to-date with the other classes in the top of the tree. For instance, it
calls isTerminatorInstr on llvm::TargetInstrInfo, but this method is no
longer there.
If I want to break
2007 Feb 22
2
[LLVMdev] Reference to recently created move
Hey, guys, I am creating some move instructions with
MRegisterInfo::copyRegToReg. How do I get a pointer to the instruction
that I just created? Is there a way to do something like:
// mbb is MachineBasicBlock, reg_info is MRegisterInfo
MachineBasicBlock::iterator iter = mbb.getFirstTerminator();
reg_info->copyRegToReg(mbb, iter, dst, src, rc);
iter--; (???)
MachineInstr *
2007 Jun 22
4
[LLVMdev] df_ext_iterator in LiveIntervalAnalysis
I would like to make a suggestion. In the LiveIntervalAnalysis class,
instead of numbering the instructions in the order in which basic blocks
are stored in the machine function, use the df_ext_iterator. It will order
the instruction according to the dominance tree (or it seems to be doing
so). There are many advantages in doing this. One of them is that, once
you traverse the dominance tree
2006 Jul 03
2
[LLVMdev] Inserting move instruction
On Sun, 2 Jul 2006, Fernando Magno Quintao Pereira wrote:
> Thank you, chris. But I still do not understand how to insert this move
> instruction :)
You call copyRegToReg, like you are already doing. What you really aren't
understanding is how to pick a regclass, which is a different issue.
> I have the machine function, the basic block, and the
> unsigned descriptors of the
2006 Jul 02
0
[LLVMdev] Inserting move instruction
On Sun, 2 Jul 2006, Fernando Magno Quintao Pereira wrote:
> MachineBasicBlock::iterator iter = mbb.getFirstTerminator();
> const TargetRegisterClass *rc = mf.getSSARegMap()->getRegClass(dst);
> const MRegisterInfo * reg_info = mf.getTarget().getRegisterInfo();
> reg_info->copyRegToReg(mbb, iter, dst, src, rc);
> }
>
> But the getRegClass method seems to
2007 Jul 19
0
[LLVMdev] New Register Allocation Algorithm
Hi Fernando,
On Jul 18, 2007, at 10:57 AM, Fernando Magno Quintao Pereira wrote:
>
> Dear LLVMers,
>
> we here in the UCLA compiler's lab have an implementation of a
> very
> cool register allocator in LLVM. It finds an optimal register
> assignment
> for the x86 machine, via live range splitting, that is, if it is
> possible
> to have a register
2007 Jul 03
2
[LLVMdev] Swaps of FP registers
Dear guys,
what is the best way to implement a swap of floating point registers
in X86? For the integer registers, I am using xchg. Is there a similar
instruction for floating point?
My function to insert swaps is like:
void X86RegisterInfo::swapRegs(
MachineBasicBlock & mbb,
MachineBasicBlock::iterator mi,
unsigned r1,
unsigned r2,
const TargetRegisterClass
2006 Jul 02
2
[LLVMdev] Inserting move instruction
> On Sun, 2 Jul 2006, Fernando Magno Quintao Pereira wrote:
>
> > MachineBasicBlock::iterator iter = mbb.getFirstTerminator();
> > const TargetRegisterClass *rc = mf.getSSARegMap()->getRegClass(dst);
> > const MRegisterInfo * reg_info = mf.getTarget().getRegisterInfo();
> > reg_info->copyRegToReg(mbb, iter, dst, src, rc);
> > }
> >
>
2020 Feb 22
3
The AnghaBench collection of compilable programs
Hi Florian,
we though about using UIUC, like in LLVM. Do you guys know if that
could be a problem, given that we are mining the functions from
github?
> Have you thought about integrating the benchmarks as external tests into LLVM’s test-suite? That would make it very easy to play around with.
We did not think about it actually. But we would be happy to do it, if
the community accepts
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