search for: superreg

Displaying 20 results from an estimated 32 matches for "superreg".

2012 May 14
0
[LLVMdev] Register coalescing (Subregs and SuperRegs)
...R3:R2 i.e %D0 in the hexagon backend. The question is this possible in the current setup of the Reg. Coalescer and the Reg. Allocator ? Or is there some target hook that'll help me inform the Register coalescer or the allocator ? @Jakob: I noticed your commit last week regarding TRI::getCommonSuperRegClass(). Can that have a role to play here? FWIW, the relevant patterns for COMBINE_rr are shown below. ------------------------------------------------------------------ // Combine. let isPredicable = 1, neverHasSideEffects = 1 in def COMBINE_rr : ALU32_rr<(outs DoubleRegs:$dst),...
2012 May 14
0
[LLVMdev] Register coalescing (Subregs and SuperRegs)
On May 14, 2012, at 4:09 PM, "Pranav Bhandarkar" <pranavb at codeaurora.org> wrote: > Hi, > > Consider this MI code from the hexagon backend. > ------------------------------------------------------------------ > 16B %vreg0<def> = COPY %R0<kill>; IntRegs:%vreg0 > 32B %vreg1<def> = LDriw %vreg0, 0; mem:LD4[%a] >
2012 May 11
2
[LLVMdev] overlaps generation, RA crasch
Hi, Recently on trunk, the ovlaps list for a register got a dual entry on my target, which caused the RA to crash. Reg Subreg1 Subreg b Subreg2 Subreg b I have a register with two subregs that have subreg b in common. This causes the SuperReg to appear twice in the ovelaps list for Subreg b. As this causes a register allocator to crasch (it evicts a register, and then inremenets the *AliasI, but the data structure is then not ready to be re-used, so a dual entry is not expected here), I suggest that TableGen makes the overlaps list a s...
2009 Nov 24
2
[LLVMdev] Need Advice on AVX
Hello, David > How does ${dst:subreg32} work? This is just modifier provided to asmprinting code. Here, it seems, 16 bit register is passed to asmprinter, but it sees modifier and grabs 32-bit superreg. > Can one do the same for sources? Yes, this is just modifier for printing, nothing more... > Is it preferable to use the source modifier or write an EXTRACT_SUBREG > pattern explicitly? It depends what you're want to do. But I guess you need to model subreg access properly... --...
2008 Oct 02
2
[LLVMdev] INSERT_SUBREG node.
What's the value produced by an INSERT_SUBREG node? Is it a chain? Can I use to set a superreg of i16 type with two i8 values, and use the supperreg as an operand somewhere else? - Sanjiv -------------- next part -------------- An HTML attachment was scrubbed... URL: <http://lists.llvm.org/pipermail/llvm-dev/attachments/20081002/f07bc88c/attachment.html>
2008 Oct 13
2
[LLVMdev] INSERT_SUBREG node.
...y an INSERT_SUBREG node? Is it a chain? > > > No, insert_subreg returns a value: > > > v1 = insert_subreg v2, v3, idx > > > v1 and v2 will have the same type, e.g. i16, and v3 must have a > sub-register type, e.g. i8. > > > > > Can I use to set a superreg of i16 type with two i8 values, and use > > the supperreg as an operand somewhere else? > > > Suppose you want to use a pair of i8 v1, v2 to create a i16 v3. The > way to do it is: > > > v4 = insert_subreg implicit_def, v1, 0 > v3 = insert_subreg v4,...
2009 Nov 24
0
[LLVMdev] Need Advice on AVX
On Tuesday 24 November 2009 14:12, Anton Korobeynikov wrote: > Hello, David > > > How does ${dst:subreg32} work? > > This is just modifier provided to asmprinting code. Here, it seems, 16 > bit register is passed to asmprinter, but it sees modifier and grabs > 32-bit superreg. > > > Can one do the same for sources? > > Yes, this is just modifier for printing, nothing more... > > > Is it preferable to use the source modifier or write an EXTRACT_SUBREG > > pattern explicitly? > > It depends what you're want to do. But I guess you ne...
2011 Apr 07
1
[LLVMdev] IMPLICIT_DEF?
Hi, I have a MachineInstr that writes to a subreg, but clobbers the superreg. How should I BuildMI this instruction? I try to do a IMPLICIT_DEF super_reg and then write to a subreg of that super register , but it gets DCE:ed. Is there a way to express this clobbering of a superregister? thanks, Jonas -------------- next part -------------- An HT...
2012 May 11
0
[LLVMdev] overlaps generation, RA crasch
..., > > Recently on trunk, the ovlaps list for a register got a dual entry on my target, which caused the RA to crash. > > Reg > Subreg1 > Subreg b > Subreg2 > Subreg b > > I have a register with two subregs that have subreg b in common. This causes the SuperReg to appear twice in the ovelaps list for Subreg b This should be fixed in r156629. /jakob -------------- next part -------------- An HTML attachment was scrubbed... URL: <http://lists.llvm.org/pipermail/llvm-dev/attachments/20120511/571b7cff/attachment.html>
2008 Oct 02
0
[LLVMdev] INSERT_SUBREG node.
..., Sanjiv.Gupta at microchip.com wrote: > What’s the value produced by an INSERT_SUBREG node? Is it a chain? No, insert_subreg returns a value: v1 = insert_subreg v2, v3, idx v1 and v2 will have the same type, e.g. i16, and v3 must have a sub- register type, e.g. i8. > Can I use to set a superreg of i16 type with two i8 values, and use > the supperreg as an operand somewhere else? Suppose you want to use a pair of i8 v1, v2 to create a i16 v3. The way to do it is: v4 = insert_subreg implicit_def, v1, 0 v3 = insert_subreg v4, v2, 1 Evan > > - Sanjiv > ____...
2008 Oct 14
0
[LLVMdev] INSERT_SUBREG node.
...t;> >> >> No, insert_subreg returns a value: >> >> >> v1 = insert_subreg v2, v3, idx >> >> >> v1 and v2 will have the same type, e.g. i16, and v3 must have a >> sub-register type, e.g. i8. >> >>> >>> Can I use to set a superreg of i16 type with two i8 values, and use >>> the supperreg as an operand somewhere else? >> >> >> Suppose you want to use a pair of i8 v1, v2 to create a i16 v3. The >> way to do it is: >> >> >> v4 = insert_subreg implicit_def, v1, 0 >> v3 = i...
2011 Jul 01
2
[LLVMdev] (no subject)
...t know if it will be helpful or not, to see what the live interval and reg allocator are doing. I'm having trouble debugging this, any idea on where I might want to look? Another question is how do I influence the spill costs? I want to make live in's infinitely expensive to spill, so any superreg or super-super-reg of the live in never gets allocated. Thanks, Micah -------------- next part -------------- An HTML attachment was scrubbed... URL: <http://lists.llvm.org/pipermail/llvm-dev/attachments/20110701/702ffcda/attachment.html> -------------- next part -------------- An embedded...
2018 Jan 30
3
Disable spilling sub-registers in LLVM
Hi Quentin, Let me clarify if I understood this correctly. If the accesses (writes and reads) to sub-registers are expressed always as sub-registers of the super-register register class (e.g., SuperReg.sub1;), then the spilling decision is for the super register. But, if the accesses are in terms of the register class of the sub-registers directly (SubReg;), then the spilling decision will be for the sub-register. So if we forced before register allocation all sub-register accesses to be ac...
2008 Oct 15
2
[LLVMdev] INSERT_SUBREG node.
...gned SubIdx) { // Pick the register class of the subregister TargetRegisterInfo::regclass_iterator I = TRC->subregclasses_begin() + SubIdx-1; assert(I < TRC->subregclasses_end() && "Invalid subregister index for register class"); return *I; } /// getSuperRegisterRegClass - Returns the register class of a superreg A whose /// "SubIdx"'th sub-register class is the specified register class and whose /// type matches the specified type. static const TargetRegisterClass* getSuperRegisterRegClass(const TargetRegisterClass *TRC,...
2011 Jul 01
0
[LLVMdev] (no subject)
...ere I might want to look? It's hard to tell without knowing your target. Why does the allocator think there are no free registers in your register class? > Another question is how do I influence the spill costs? I want to make live in's > > infinitely expensive to spill, so any superreg or super-super-reg of the live in > never gets allocated. It's not clear what you mean here. Spill costs are assigned to virtual registers, and virtual registers don't have sub- or super-registers. If you mean linear scan's emergency spilling of physical registers, that should neve...
2018 Jan 30
3
Disable spilling sub-registers in LLVM
...mede at ece.ubc.ca> wrote: >> >> Hi Quentin, >> >> Let me clarify if I understood this correctly. >> >> If the accesses (writes and reads) to sub-registers are expressed >> always as sub-registers of the super-register register class (e.g., >> SuperReg.sub1;), then the spilling decision is for the super register. >> >> But, if the accesses are in terms of the register class of the >> sub-registers directly (SubReg;), then the spilling decision will be >> for the sub-register. >> >> >> So if we forced...
2018 Jan 30
0
Disable spilling sub-registers in LLVM
...t;>> >>> Hi Quentin, >>> >>> Let me clarify if I understood this correctly. >>> >>> If the accesses (writes and reads) to sub-registers are expressed >>> always as sub-registers of the super-register register class (e.g., >>> SuperReg.sub1;), then the spilling decision is for the super >>> register. >>> >>> But, if the accesses are in terms of the register class of the >>> sub-registers directly (SubReg;), then the spilling decision will be >>> for the sub-register. >>>...
2011 Jul 01
1
[LLVMdev] (no subject)
...n that is failing! If I don't use sub-registers, then I don't have this problem, but then I really can't specify that one register class is a subclass of another. Another question is how do I influence the spill costs? I want to make live in's infinitely expensive to spill, so any superreg or super-super-reg of the live in never gets allocated. It's not clear what you mean here. Spill costs are assigned to virtual registers, and virtual registers don't have sub- or super-registers. If you mean linear scan's emergency spilling of physical registers, that should never hap...
2018 Jan 30
0
Disable spilling sub-registers in LLVM
...On Jan 30, 2018, at 10:21 AM, ahmede <ahmede at ece.ubc.ca> wrote: > > Hi Quentin, > > Let me clarify if I understood this correctly. > > If the accesses (writes and reads) to sub-registers are expressed always as sub-registers of the super-register register class (e.g., SuperReg.sub1;), then the spilling decision is for the super register. > > But, if the accesses are in terms of the register class of the sub-registers directly (SubReg;), then the spilling decision will be for the sub-register. > > > So if we forced before register allocation all sub-regi...
2008 Oct 15
0
[LLVMdev] INSERT_SUBREG node.
...;>>> >>>> v1 = insert_subreg v2, v3, idx >>>> >>>> >>>> v1 and v2 will have the same type, e.g. i16, and v3 must have a >>>> sub-register type, e.g. i8. >>>> >>>>> >>>>> Can I use to set a superreg of i16 type with two i8 values, and >>>>> use >>>>> the supperreg as an operand somewhere else? >>>> >>>> >>>> Suppose you want to use a pair of i8 v1, v2 to create a i16 v3. The >>>> way to do it is: >>>> &...