search for: subreg_loreg

Displaying 13 results from an estimated 13 matches for "subreg_loreg".

2012 Jun 19
2
[LLVMdev] How to define macros in a tablegen file?
...(VMPYH (v2i16 (EXTRACT_SUBREG (v4i16 (VSXTBH (v4i8 IntRegs:$a))), subreg_hireg)), (v2i16 (EXTRACT_SUBREG (v4i16 (VSXTBH (v4i8 IntRegs:$b))), subreg_hireg)))), (v2i32 (VMPYH (v2i16 (EXTRACT_SUBREG (v4i16 (VSXTBH (v4i8 IntRegs:$a))), subreg_loreg)), (v2i16 (EXTRACT_SUBREG (v4i16 (VSXTBH (v4i8 IntRegs:$b))), subreg_loreg))))))) )>; Basically if we have a way to name a dag foo to be this: (EXTRACT_SUBREG (v4i16 (VSXTBH $X)), $Y) and bar to stand for this: (v2i32 (VMPYH (v2i16 (foo $X, $Z)), (v2i16 (foo $Y, $Z)))) the...
2012 Jul 06
0
[LLVMdev] MachineOperand: Subreg defines and the Undef flag
...uation. A3 = B0 ..... ..... B1 = A3 <--The copy C And if so, we check if we can merge the two ranges of B into a single range. However, this is not safe if A3 is a subreg define while A3 is not a subreg use. For instance, consider this code (part of a single block loop). MI1:: %vreg7:subreg_loreg<def,undef>, %vreg30<def> = POST_LDriuh %vreg30, 2, // Post Inc. Load. Vreg7 is a 64bit reg. MI2:: %vreg7:subreg_hireg<def> = COPY %vreg32:subreg_hireg<kill> // This is the A3 = B0 above. MI3:: %vreg31<def> = ADD_rr %vreg31<kill>, %vreg32:subreg_loreg<kill&g...
2012 Jul 05
3
[LLVMdev] MachineOperand: Subreg defines and the Undef flag
Hi Jakob, Thanks for your reply. > > The <undef> flag goes on NewMI_1 because the virtual register B isn't live > before that instruction. > > But you probably shouldn't be doing this yourself. Your NewMI code isn't in > SSA form because B has multiple definitions. Just use a REG_SEQUENCE > instruction, and let the register allocator do the transformation
2012 Jun 19
0
[LLVMdev] How to define macros in a tablegen file?
...UBREG (v4i16 (VSXTBH (v4i8 IntRegs:$a))), > subreg_hireg)), > (v2i16 > (EXTRACT_SUBREG (v4i16 (VSXTBH (v4i8 IntRegs:$b))), > subreg_hireg)))), > (v2i32 > (VMPYH > (v2i16 > (EXTRACT_SUBREG (v4i16 (VSXTBH (v4i8 IntRegs:$a))), > subreg_loreg)), > (v2i16 > (EXTRACT_SUBREG (v4i16 (VSXTBH (v4i8 IntRegs:$b))), > subreg_loreg))))))) > )>; > > > Basically if we have a way to name a dag foo to be this: > (EXTRACT_SUBREG (v4i16 (VSXTBH $X)), $Y) > > and bar to stand for this: > (v2i32 (...
2013 Jan 14
2
[LLVMdev] Splitting live ranges of half-defined registers
...ntRegs:%vreg61,%vreg56 %vreg62<def> = LDriuh_indexed %vreg56, 680; IntRegs:%vreg62,%vreg56 %R1<def> = TFRI 1431655766 ADJCALLSTACKDOWN 0, %R29<imp-def>, %R30<imp-def>, %R31<imp-use>, %R30<imp-use>, %R29<imp-use> %vreg304:subreg_loreg<def,read-undef> = ADDri_SUBr_V4 %vreg62, 5, %vreg61; DoubleRegs:%vreg304 IntRegs:%vreg62,%vreg61 %vreg519<def> = TFRI 3148; IntRegs:%vreg519 %vreg523<def> = TFRI64 15; DoubleRegs:%vreg523 %R0<def> = COPY %vreg304:subreg_loreg; DoubleRegs:%vreg304...
2012 Jul 09
0
[LLVMdev] Possible issue with EXPANDING POST-RA PSEUDO INSTRS
On Jul 8, 2012, at 3:42 PM, Sergei Larin <slarin at codeaurora.org> wrote: > ********** EXPANDING POST-RA PSEUDO INSTRS ********** > ********** Function: main > real copy: %R15<def> = COPY %R4, %D2<imp-use,kill>, %D7<imp-use,kill>, > %D7<imp-def> > replaced by: %R15<def> = TFR %R4, %D7<imp-def> > > The R4 is a subreg of D2 double
2012 Jul 08
2
[LLVMdev] Possible issue with EXPANDING POST-RA PSEUDO INSTRS
Hello everyone, I am running into an obscure issue with ExpandPostRA. Does anyone recognizes the following: The pass replaces a real copy with a "transfer" instruction: ********** EXPANDING POST-RA PSEUDO INSTRS ********** ********** Function: main real copy: %R15<def> = COPY %R4, %D2<imp-use,kill>, %D7<imp-use,kill>, %D7<imp-def> replaced by:
2012 May 14
0
[LLVMdev] Register coalescing (Subregs and SuperRegs)
...ne($src1, $src2)", []>; def: Pat<(i64 (or (i64 (shl (i64 DoubleRegs:$srcHigh), (i32 32))), (i64 DoubleRegs:$srcLow))), (i64 (COMBINE_rr (EXTRACT_SUBREG (i64 DoubleRegs:$srcHigh), subreg_loreg), (EXTRACT_SUBREG (i64 DoubleRegs:$srcLow), subreg_loreg)))>; ------------------------------------------------------------------ Thanks, Pranav Qualcomm Innovation Center, (QuIC) is a member of the Code Aurora Forum.
2012 Jul 06
2
[LLVMdev] MachineOperand: Subreg defines and the Undef flag
...B1 = A3 <--The copy C > > And if so, we check if we can merge the two ranges of B into a single range. > However, this is not safe if A3 is a subreg define while A3 is not a subreg > use. > For instance, consider this code (part of a single block loop). > > MI1:: %vreg7:subreg_loreg<def,undef>, %vreg30<def> = POST_LDriuh %vreg30, > 2, // Post Inc. Load. Vreg7 is a 64bit reg. > MI2:: %vreg7:subreg_hireg<def> = COPY %vreg32:subreg_hireg<kill> > // This is the A3 = B0 above. > MI3:: %vreg31<def> = ADD_rr %vreg31<kill>, %vreg32:su...
2012 Aug 30
0
[LLVMdev] MC Register mapping question (MCRegUnitIterator )
...m<[1]>; def R2 : Ri< 2, "r2">, DwarfRegNum<[2]>; def R3 : Ri< 3, "r3">, DwarfRegNum<[3]>; ... ...which could be accessed as double regs in pairs: // Aliases of the R* registers used to hold 64-bit int values (doubles). let SubRegIndices = [subreg_loreg, subreg_hireg] in { def D0 : Rd< 0, "r1:0", [R0, R1]>, DwarfRegNum<[32]>; def D1 : Rd< 2, "r3:2", [R2, R3]>, DwarfRegNum<[34]>; def D2 : Rd< 4, "r5:4", [R4, R5]>, DwarfRegNum<[36]>; So R2:R3 are subregs of D1. The...
2012 Aug 30
2
[LLVMdev] MC Register mapping question (MCRegUnitIterator )
..., "r2">, DwarfRegNum<[2]>; > def R3 : Ri< 3, "r3">, DwarfRegNum<[3]>; > ... > > ...which could be accessed as double regs in pairs: > > // Aliases of the R* registers used to hold 64-bit int values (doubles). > let SubRegIndices = [subreg_loreg, subreg_hireg] in { > def D0 : Rd< 0, "r1:0", [R0, R1]>, DwarfRegNum<[32]>; > def D1 : Rd< 2, "r3:2", [R2, R3]>, DwarfRegNum<[34]>; > def D2 : Rd< 4, "r5:4", [R4, R5]>, DwarfRegNum<[36]>; > > So R2:R3...
2012 Aug 30
0
[LLVMdev] MC Register mapping question (MCRegUnitIterator )
...Num<[2]>; > > def R3 : Ri< 3, "r3">, DwarfRegNum<[3]>; ... > > > > ...which could be accessed as double regs in pairs: > > > > // Aliases of the R* registers used to hold 64-bit int values > (doubles). > > let SubRegIndices = [subreg_loreg, subreg_hireg] in { > > def D0 : Rd< 0, "r1:0", [R0, R1]>, DwarfRegNum<[32]>; > > def D1 : Rd< 2, "r3:2", [R2, R3]>, DwarfRegNum<[34]>; > > def D2 : Rd< 4, "r5:4", [R4, R5]>, DwarfRegNum<[36]>; &gt...
2012 Aug 28
5
[LLVMdev] Assert in LiveInterval update
Andy, Lang, Thanks for the suggestion. I have spent more time with it today, and I do see some strange things in liveness update. I am not at the actual cause yet, but here is what I got so far: I have the following live ranges when I start scheduling a region: R2 = [0B,48r:0)[352r,416r:5)... R3 = [0B,48r:0)[368r,416r:5)... R4 = [0B,32r:0)[384r,416r:4)... R5 = [0B,32r:0)[400r,416r:4)...