Displaying 20 results from an estimated 2000 matches similar to: "[LLVMdev] MRegisterInfo::eliminateFrameIndex"
2006 May 15
1
[LLVMdev] Re: MRegisterInfo::storeRegToStackSlot question
Chris Lattner wrote:
> On Sat, 13 May 2006, Vladimir Prus wrote:
>> in LLVM CVS the afore-mentioned function has 'const TargetRegisterClass*'
>> parameter, that is not documented.
>>
>> Can somebody explain what does it mean?
>
> Basically, it gives the target more information about the spill. In
> particular, it specifies the register class to use
2017 Aug 15
2
Problem of getting two unused registers in eliminateFrameIndex()
Hello all,
For my custom processor backend I am trying add some instruction using
BuildMI() inside eliminateFrameIndex().
I tried RegScavenger like this:
unsigned RegUnused0 = RS->FindUnusedReg(&LASER::GNPRegsRegClass);
if (!RegUnused0)
RegUnused0 = RS->scavengeRegister(&LASER::GNPRegsRegClass, II, SPAdj);
assert(RegUnused0 && "Register scavenger failed");
2015 Jun 16
2
[LLVMdev] Replacing a Reg MachineOperand with a non-Reg MachineOperand?
I'm not sure I understand what your problem is, but are you calling the
removeRegOperandFromUseList on the machine operand after changing it to GA?
You have to call removeRegOperandFromUseList before changing the operand's
type, as it expects a register operand.
2015-06-16 10:05 GMT-07:00 Ryan Taylor <ryta1203 at gmail.com>:
> @Alex: Thanks. setOffset(0) eliminated any previous
2010 Nov 13
1
[LLVMdev] problem with llvm reverse iterator
Hi,
I am writing an llvm pass wherein I require to iterate MachineBasicBlocks in
reverse. The ilist reverse_iterator is not functioning as expected. Nor is
the ilist iterator working
in reverse (although -- operator is overloaded to do so).
for (MachineFunction::iterator MBBI = mf_->end(), E = mf_->begin();MBBI !=
E; --MBBI)
{
MachineBasicBlock *MBB = MBBI;
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,
>
>
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
2002 Sep 16
1
[LLVMdev] problem with LLVM
Hi, all.
When I run the llvm using the inline option. I always got the
following error message. So I cannot even use inline option.
suna14|~/MP1|[37]% opt -inline < scalarize.llvm.bc > /dev/null
../../../include/Support/ilist:104: failed assertion
`Traits::getNext(NodePtr) != 0 && "Dereferencing end()!"'
Abort
I didn't use my own pass. Please let me know if you
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 04
2
[LLVMdev] Critical edges
On Tue, 4 Jul 2006, Fernando Magno Quintao Pereira wrote:
> However, it does not remove all the critical edges. I am getting a very
> weird dataflow graph (even without the Break Critical edges pass). The
> dataflow generated by MachineFunction::dump() for the program below is
> given here:
> http://compilers.cs.ucla.edu/fernando/projects/soc/images/loop_no_crit2.pdf
...
> The
2015 Jun 16
2
[LLVMdev] Replacing a Reg MachineOperand with a non-Reg MachineOperand?
I have a MachineOperand that could be something other than a Reg: mem,
global address, imm, etc...
I want to replace a reg MachineOperand with this non-reg MachineOperand.
I've tried a few different things, but it doesn't seem like there is some
simple functionality to do this?
"RemoveOperand" and "addOperand" does not work.
There doesn't seem to be a valid
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 Sep 19
4
[LLVMdev] 2.1 Pre-Release Available (testers needed)
On Tue, Sep 18, 2007 at 06:41:38PM +1000, Emil Mikulic wrote:
> The "make check" produced:
> === Summary ===
>
> # of expected passes 2209
> # of unexpected failures 41
> # of expected failures 5
> gmake[1]: *** [check-local] Error 1
> gmake[1]: Leaving directory `/home/emil/ll/objdir-llvm/test'
> gmake: ***
2012 Nov 10
5
[LLVMdev] register scavenger
I'm confused as to the logic used in the register scavenger when it
cannot find a free register.
I would think that it would want to free up the emergency spill slot
immediately after it's use, because otherwise there is a chance of
needing to use the emergency slot again and not be able to.
Instead it tries to restore it only right before register it is freeing up.
Maybe I'm
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);
> > }
> >
>
2015 Jun 16
2
[LLVMdev] Replacing a Reg MachineOperand with a non-Reg MachineOperand?
Tom,
My current example is a global address; however, it could be any operand
in theory. The arch allows for direct mem op support for ex instructions,
so it could be any type of address or any type of imm or any type of
register.
For example, we are using intrinsics for some instructions since LLVM
does not support them. Table gen does not allow for matching to direct mem
op because the
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
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 Jun 27
2
[LLVMdev] Mapping bytecode to X86
> > Thank you Chris. I will try to implement the TwoAddress pass to run on
> > machine code. Why it has not been originally implemented to run on
> > machine code?
>
> I'm not sure what you mean. It definitely does run on machine code.
I was thinking that it only transformed instructions with virtual
registers because of this code in the TwoAddressInstructionPass.cpp:
2007 Sep 19
0
[LLVMdev] 2.1 Pre-Release Available (testers needed)
On Wed, Sep 19, 2007 at 05:24:12PM +1000, Emil Mikulic wrote:
> http://goanna.cs.rmit.edu.au/~emil/llvm2.1-check-debug.txt
Here's an ARM test that cores:
$ llvm-as < /home/emil/ll/llvm-2.1/test/CodeGen/ARM/2007-01-19-InfiniteLoop.ll | llc -march=arm -mattr=+v6,+vfp2
Segmentation fault (core dumped)
$ gdb `which llc` llc.core
[...]
(gdb) where
#0 0x0853d606 in
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();