Displaying 20 results from an estimated 600 matches similar to: "[LLVMdev] Virtual Register allocation across functions"
2008 Oct 20
0
[LLVMdev] Virtual Register allocation across functions
No, there isn't something like that right now. What are you trying to
accomplish?
If you wish to implement this, it shouldn't be hard to do. Right now,
MachineRegisterInfo re-starts virtual register number at
TargetRegisterInfo::FirstVirtualRegister. You can add a mechanism to
change that to a variable instead.
Evan
On Oct 20, 2008, at 1:43 PM, Villmow, Micah wrote:
> Is
2008 Oct 20
3
[LLVMdev] Virtual Register allocation across functions
I'm targeting a language that uses virtual registers and not physical
registers. So the easiest way to implement this is to use virtual
registers, except that they are being restarted after each function and
clobbering registers in previous functions. For example:
start function 0
r1024 = mov %var0.0
r1025 = mov %var0.1
lots of intermediate code
call function1 w/ 3 parameters
more
2007 Apr 23
2
[LLVMdev] Register based vector insert/extract
On Apr 23, 2007, at 1:43 PM, Christopher Lamb wrote:
> On Apr 23, 2007, at 1:17 PM, Christopher Lamb wrote:
>
>> On Apr 23, 2007, at 12:31 PM, Chris Lattner wrote:
>>
>>> On Mon, 23 Apr 2007, Christopher Lamb wrote:
>>>> How can one let the back end know how to insert and extract
>>>> elements of
>>>> a vector through sub-register
2009 Jul 07
1
[LLVMdev] LLVM code target dependent generator question
Hello,
I am new to LLVM and I am not sure whether I am writing to the right distribution list or not. Please let me know if this is not the right distribution list.
Question:
- I am having hard time lowering ADD instructions for different purposes. Basically, I want to have different machine instruction for pointer addition vs scalar addition. I am having hard time mapping LLVM add to my machine
2008 Nov 18
3
[LLVMdev] 32 bit boolean results
Is there a way to tell LLVM to treat Boolean results as 32bit values
instead of 1 bit values?
Thanks,
Micah Villmow
Systems Engineer
Advanced Technology & Performance
Advanced Micro Devices Inc.
4555 Great America Pkwy,
Santa Clara, CA. 95054
P: 408-572-6219
F: 408-572-6596
-------------- next part --------------
An HTML attachment was scrubbed...
URL:
2008 Sep 10
3
[LLVMdev] Determining the names of all the functions in a module
I am attemping to figure out how to access the function names that are
stored in a
module so that I know which function I am currently in. I am attempting
to write a
backend that targets a language that only allows integer function names
and I need
to create mapping between the string and the integer. I've looked in the
header files
but I cannot determine how to extract the function
2008 Sep 23
2
[LLVMdev] Determining the register type of a MachineOperand
How do I determine what type of register(i.e. i32, f32, etc..) I am
accessing from a MachineOperand? I.e. how do I get to the MVT struct, or
equivalent information, from a MachineOperand object?
Micah Villmow
Systems Engineer
Advanced Technology & Performance
Advanced Micro Devices Inc.
4555 Great America Pkwy,
Santa Clara, CA. 95054
P: 408-572-6219
F: 408-572-6596
2008 Sep 25
2
[LLVMdev] Going from argument to register and back
I am having trouble trying to figure out two pieces of information from
attempting to map arguments to registers.
How do I determine, based on the argument name, which register the value
is supposed to be assigned to?
I can hard-coded it currently and it will be correct 100% of the time
with the current set of assumptions,
but I would rather determine it dynamically so that I can change my
2008 Oct 14
3
[LLVMdev] CFG modifcations and code gen
As stated in an earlier email, I am working on getting break/continue to
work correctly for my backend, but I ran into another issue with codegen
and the CFG. It seems that code gen is not done based on the CFG, but
rather on the block numbers, and the function call
MachineFunction::RenumberBlocks doesn't renumber the blocks based on the
CFG. So how can I modify the CFG so that when codegen
2008 Oct 24
2
[LLVMdev] SetCC tablegen pattern
I am attempting to match setcc using tablegen w/ the following
patterns:
def FEQ : Instruction<(outs GPRF32:$dst), (ins GPRF32:$src0,
GPRF32:$src1), "eq $dst, $src0, $src1", [(set GPRF32:$dst, (seteq
GPRF32:$src0, GPRF32:$src1))]>;
And it is failing stating that the result must be an integer. Is there a
way around this other than modifying TargetSelectionDAG.td? Also,
2008 Nov 18
0
[LLVMdev] 32 bit boolean results
On Nov 18, 2008, at 11:24 AM, Villmow, Micah wrote:
> Is there a way to tell LLVM to treat Boolean results as 32bit values
> instead of 1 bit values?
LLVM IR doesn't have a concept of C level booleans. What problem are
you trying to solve?
-Chris
>
> Thanks,
>
> Micah Villmow
> Systems Engineer
> Advanced Technology & Performance
> Advanced Micro Devices
2008 Sep 15
3
[LLVMdev] Bad legalization?
I am getting an assert on a bad legalization.
Assertion failed: Result.getValueType() == Op.getValueType() && "Bad
legalization!", file ..\..\lib\CodeGen\SelectionDAG\LegalizeDAG.cpp,
line 3976
Can someone explain to me what this means in term of backend code
generation, how it might be occurring, and possible ways to fix this? I
don't see how the value type of an
2008 Oct 22
2
[LLVMdev] Register class conversions
Is there a simple way to specify the relationship between two different
register classes of various sizes and alignments as being legal to
convert between them?
I have my backend written up using a single register class for i32, i64,
f32 and f64 types, however, because the type information is not
propagated down to the machine instruction register level, it is not
known to me how to determine
2008 Sep 17
2
[LLVMdev] store addrspace qualifier
How do I access the address qualifier from the store instruction.
Given the following code:
define void @test_unary_op_anegate(float %x, float addrspace(11)*
%result) nounwind {
entry:
%neg = sub float -0.000000e+000, %x ; <float>
[#uses=1]
store float %neg, float addrspace(11)* %result
ret void
}
When I attempt to generate this code, I'm
2008 Oct 28
4
[LLVMdev] Using patterns inside patterns
Is there currently a way to use a pattern inside of another pattern?
Micah Villmow
Systems Engineer
Advanced Technology & Performance
Advanced Micro Devices Inc.
4555 Great America Pkwy,
Santa Clara, CA. 95054
P: 408-572-6219
F: 408-572-6596
-------------- next part --------------
An HTML attachment was scrubbed...
URL:
2011 Jan 07
3
[LLVMdev] Increasing TargetRegisterInfo::FirstVirtualRegister?
On 01/07/2011 02:07 AM, Chris Lattner wrote:
>
> Unless your goal is to merge this work onto LLVM mainline, the best thing to do is a local hack in your tree.
>
> -Chris
Yes, I will create a patch for my tree to increase
FirstVirtualRegister. Would this be a good change to include in 2.9?
2008 Oct 14
0
[LLVMdev] CFG modifcations and code gen
On Oct 13, 2008, at 5:14 PMPDT, Villmow, Micah wrote:
> As stated in an earlier email, I am working on getting break/
> continue to work correctly for my backend, but I ran into another
> issue with codegen and the CFG. It seems that code gen is not done
> based on the CFG, but rather on the block numbers, and the function
> call MachineFunction::RenumberBlocks doesn’t
2008 Sep 23
2
[LLVMdev] Store patterns accepting i32 only?
I'm trying to write a store pattern that accepts both i32 and f32,
however, when tablegen generates the code, it only generates the code
for i32 only.
def ADDR : ComplexPattern<i32, 2, "SelectADDR", [], []>;
def MEM : Operand<i32> {
let PrintMethod = "printMemOperand";
let MIOperandInfo = (ops GPR, GPR);
}
def global_st :
2009 Dec 09
5
[LLVMdev] [PATCH] increase the max number of physical registers
On Dec 8, 2009, at 3:31 PM, Jakob Stoklund Olesen wrote:
>
> On Dec 8, 2009, at 11:33 AM, Evan Cheng wrote:
>
>> This caused a massive slow down to post-ra scheduler (llc -O3 on x86, -O2 on ARM). I'm going to revert it for now until it has been addressed.
>
> Probably caused by this member:
>
> /// KillIndices - The index of the most recent kill (proceding
2005 Sep 20
2
[LLVMdev] Requiring LiveIntervals
One of my pass requires LiveIntervals to build the interference graph,
because LiveVariables do not provide an interface to iterate through
all viritual registers. But LiveIntervalAnalysis.h is not in
"include/llvm/CodeGen", so I have to either include it by:
#include "../../llvm/lib/CodeGen/LiveIntervalAnalysis.h"
or point my project include path to