Displaying 11 results from an estimated 11 matches for "subreg_hireg".
2012 Jun 19
2
[LLVMdev] How to define macros in a tablegen file?
...if there is a way to specify macros to help shorten
rewriting patterns like these:
def : Pat <(v4i8 (mul (v4i8 IntRegs:$a), (v4i8 IntRegs:$b))),
(v4i8
(VTRUNEHB
(v4i16
(VTRUNEWH
(v2i32
(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_...
2012 Jul 06
0
[LLVMdev] MachineOperand: Subreg defines and the Undef flag
...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>
// Use the lo subreg that was setup in MI1:
....
....
MI4:: %vreg32<def> = COPY %vreg7; //Not tr...
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?
...writing patterns like these:
>
> def : Pat <(v4i8 (mul (v4i8 IntRegs:$a), (v4i8 IntRegs:$b))),
> (v4i8
> (VTRUNEHB
> (v4i16
> (VTRUNEWH
> (v2i32
> (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_...
2012 Jul 06
2
[LLVMdev] MachineOperand: Subreg defines and the Undef flag
...afe 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>
> // Use the lo subreg that was setup in MI1:
> ....
> ....
> MI4:: %vreg32<def> = COPY %vreg7;...
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 Aug 30
0
[LLVMdev] MC Register mapping question (MCRegUnitIterator )
...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.
These definitions...
2012 Aug 30
2
[LLVMdev] MC Register mapping question (MCRegUnitIterator )
...t;>, 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 o...
2012 Aug 30
0
[LLVMdev] MC Register mapping question (MCRegUnitIterator )
...;
> > 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]>;
> >
> &g...
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)...