Displaying 18 results from an estimated 18 matches for "reg16390".
2010 Nov 08
2
[LLVMdev] [LLVMDev] Register Allocation and copy instructions
...to machine code.
For instance I come across (1) and I reduce it to (2). However a copy
instruction cannot move from EDX to CX. What mechanics in LLVM will tell me
that I cannot make this move during register allocation, or how can I tell
from (1) that I cannot execute %reg16385<def> = COPY %reg16390. Furthermore,
how should I handle this case.
1:
# Machine code for function test5:
Frame Objects:
fi#-2: size=2, align=4, fixed, at location [SP+8]
fi#-1: size=2, align=8, fixed, at location [SP+4]
Function Live Outs: %AX
BB#0: derived from LLVM BB %entry
%reg16390<def> = MOVZX3...
2010 Nov 08
0
[LLVMdev] [LLVMDev] Register Allocation and copy instructions
...code.
>
> For instance I come across (1) and I reduce it to (2). However a copy instruction cannot move from EDX to CX. What mechanics in LLVM will tell me that I cannot make this move during register allocation, or how can I tell from (1) that I cannot execute %reg16385<def> = COPY %reg16390. Furthermore, how should I handle this case.
> BB#0: derived from LLVM BB %entry
> %reg16390<def> = MOVZX32rm16 <fi#-2>, 1, %reg0, 0, %reg0; mem:LD2[FixedStack-2] GR32:%reg16390
> %reg16385<def> = COPY %reg16390:sub_16bit<kill>; GR16:%reg16385 GR32:...
2010 Sep 29
2
[LLVMdev] comparison pattern trouble
...s
ends up being compiled as
%reg16384<def> = LDWi <fi#-2>, 0; mem:LD4[FixedStack-2] I32Regs:%reg16384
%reg16385<def> = LDWi <fi#-1>, 0; mem:LD4[FixedStack-1] I32Regs:%reg16385
%reg16386<def> = COPY %reg16384; I32Regs:%reg16386,16384
%reg16390<def> = NErrb %reg16384, %reg16385; I1Regs:%reg16390 I32Regs:%reg16384,16385
which just compares ALL BITS of the variables.
Any idea what is causing this and how this could be fixed?
2010 Dec 15
2
[LLVMdev] Optimization passes break machine instructions on new backend
...ived from LLVM BB %entry
Live Ins: %R0 %R1 %R2 %R3
%reg16387<def> = COPY %R3; IntRegs:%reg16387
%reg16386<def> = COPY %R2; IntRegs:%reg16386
%reg16385<def> = COPY %R1; IntRegs:%reg16385
%reg16384<def> = COPY %R0; IntRegs:%reg16384
%reg16390<def> = MOVE %reg16386; IntRegs:%reg16390,16386
%reg16388<def> = CMPrr %reg16384, %reg16385, %CFR<imp-def,dead>;
IntRegs:%reg16388,16384,16385
SKIPCOND 1, %CFR<imp-use>
Successors according to CFG: BB#2 BB#1
BB#1: derived from LLVM BB %entry
Predecess...
2010 Sep 29
1
[LLVMdev] comparison pattern trouble - might be a bug in LLVM 2.8?
...as
>
>
> %reg16384<def> = LDWi <fi#-2>, 0; mem:LD4[FixedStack-2] I32Regs:%reg16384
> %reg16385<def> = LDWi <fi#-1>, 0; mem:LD4[FixedStack-1] I32Regs:%reg16385
> %reg16386<def> = COPY %reg16384; I32Regs:%reg16386,16384
> %reg16390<def> = NErrb %reg16384, %reg16385; I1Regs:%reg16390 I32Regs:%reg16384,16385
>
>
> which just compares ALL BITS of the variables.
I also have a pattern:
def XORrrb : InstTCE<(outs I1Regs:$op3), (ins I32Regs:$op1,I32Regs:$op2), "", [(set I1Regs:$op3, (trunc (xor I32...
2010 Jul 28
3
[LLVMdev] Subregister coalescing
...REG %reg16392<undef>, %reg16388<kill>, 1
76 %reg16394<def> = LDWr %reg16386<kill>, 0; mem:LD4[<unknown>]
116 %reg16400<def> = MOVEV %reg16392<kill>
124 %reg16400<def> = INSERT_SUBREG %reg16400, %reg16394<kill>, 2
132 %reg16401<def> = LDWr %reg16390<kill>, 0; mem:LD4[<unknown>]
164 %reg16404<def> = MOVEV %reg16400<kill>
172 %reg16404<def> = INSERT_SUBREG %reg16404, %reg16401<kill>, 3
180 %reg16405<def> = LDWr %reg16398<kill>, 0; mem:LD4[<unknown>]
212 %reg16408<def> = MOVEV %reg16404&...
2010 Oct 01
2
[LLVMdev] Illegal optimization in LLVM 2.8 during SelectionDAG? (Re: comparison pattern trouble - might be a bug in LLVM 2.8?)
...4<def> = LDWi <fi#-2>, 0; mem:LD4[FixedStack-2] I32Regs:%reg16384
>>>>> %reg16385<def> = LDWi <fi#-1>, 0; mem:LD4[FixedStack-1] I32Regs:%reg16385
>>>>> %reg16386<def> = COPY %reg16384; I32Regs:%reg16386,16384
>>>>> %reg16390<def> = NErrb %reg16384, %reg16385; I1Regs:%reg16390 I32Regs:%reg16384,16385
>>>>>
>>>>> which just compares ALL BITS of the variables.
>>>> I also have a pattern:
>>>>
>>>> def XORrrb : InstTCE<(outs I1Regs:$op3), (ins I32...
2010 Sep 05
2
[LLVMdev] Possible missed optimization?
...ll>
44L %reg16388<def>, %CPSR<def,dead> = tEOR %reg16388, %reg16387<kill>, pred:14, pred:%reg0
56L %reg16389<def> = COPY %reg16384<kill>
64L %reg16389<def>, %CPSR<def,dead> = tEOR %reg16389, %reg16386<kill>, pred:14, pred:%reg0
76L %reg16390<def>, %CPSR<def,dead> = tMOVi8 18, pred:14, pred:%reg0
88L %reg16391<def> = COPY %reg16390<kill>
96L %reg16391<def>, %CPSR<def,dead> = tEOR %reg16391, %reg16389<kill>, pred:14, pred:%reg0
108L %R0<def> = COPY %reg16391<kill>
116L %...
2010 Oct 04
2
[LLVMdev] Illegal optimization in LLVM 2.8 during SelectionDAG
...ef> = LDWi <fi#-2>, 0; mem:LD4[FixedStack-2] I32Regs:%reg16384
>>>>> %reg16385<def> = LDWi <fi#-1>, 0; mem:LD4[FixedStack-1] I32Regs:%reg16385
>>>>> %reg16386<def> = COPY %reg16384; I32Regs:%reg16386,16384
>>>>> %reg16390<def> = NErrb %reg16384, %reg16385; I1Regs:%reg16390 I32Regs:%reg16384,16385
>>>>>
>>>>> which just compares ALL BITS of the variables.
>>>> I also have a pattern:
>>>>
>>>> def XORrrb : InstTCE<(outs I1Regs:$op3), (ins I32Re...
2010 Sep 05
0
[LLVMdev] Possible missed optimization?
On Sat, Sep 4, 2010 at 1:31 PM, Jakob Stoklund Olesen <stoklund at 2pi.dk> wrote:
>
> On Sep 4, 2010, at 11:21 AM, Borja Ferrer wrote:
>
>> I've noticed this pattern happening with other operators aswell, but used xor in this example. As i said before, i tried with different register allocation orders, but it will produce always the same result. GCC is emitting longer
2010 Nov 27
3
[LLVMdev] Register Pairing
...; = COPY %reg16384:ssub_0; GPR8:%reg16387 WDREGS:%reg16384
// EXTRACT LO BYTE OF A
%reg16388<def> = COPY %reg16385:ssub_0; GPR8:%reg16388 WDREGS:%reg16385
// EXTRACT LO BYTE OF B
%reg16389<def> = COPY %reg16384:ssub_1; GPR8:%reg16389 WDREGS:%reg16384
// EXTRACT HI BYTE OF A
%reg16390<def> = COPY %reg16385:ssub_1; GPR8:%reg16390 WDREGS:%reg16385
// EXTRACT HI BYTE OF B
%reg16391<def> = ADDRdRr %reg16388, %reg16387<kill>, %SREG<imp-def>;
GPR8:%reg16391,16388,16387 // ADD LO BYTES
%reg16392<def> = ADCRdRr %reg16390, %reg16389<kill>,
%SRE...
2010 Sep 29
0
[LLVMdev] comparison pattern trouble - might be a bug in LLVM 2.8?
...t;
>> %reg16384<def> = LDWi <fi#-2>, 0; mem:LD4[FixedStack-2] I32Regs:%reg16384
>> %reg16385<def> = LDWi <fi#-1>, 0; mem:LD4[FixedStack-1] I32Regs:%reg16385
>> %reg16386<def> = COPY %reg16384; I32Regs:%reg16386,16384
>> %reg16390<def> = NErrb %reg16384, %reg16385; I1Regs:%reg16390 I32Regs:%reg16384,16385
>>
>> which just compares ALL BITS of the variables.
>
> I also have a pattern:
>
> def XORrrb : InstTCE<(outs I1Regs:$op3), (ins I32Regs:$op1,I32Regs:$op2), "", [(set I1Regs:$o...
2010 Sep 30
4
[LLVMdev] Illegal optimization in LLVM 2.8 during SelectionDAG? (Re: comparison pattern trouble - might be a bug in LLVM 2.8?)
...%reg16384<def> = LDWi <fi#-2>, 0; mem:LD4[FixedStack-2] I32Regs:%reg16384
>>> %reg16385<def> = LDWi <fi#-1>, 0; mem:LD4[FixedStack-1] I32Regs:%reg16385
>>> %reg16386<def> = COPY %reg16384; I32Regs:%reg16386,16384
>>> %reg16390<def> = NErrb %reg16384, %reg16385; I1Regs:%reg16390 I32Regs:%reg16384,16385
>>>
>>> which just compares ALL BITS of the variables.
>> I also have a pattern:
>>
>> def XORrrb : InstTCE<(outs I1Regs:$op3), (ins I32Regs:$op1,I32Regs:$op2), "", [(s...
2010 Oct 01
0
[LLVMdev] Illegal optimization in LLVM 2.8 during SelectionDAG? (Re: comparison pattern trouble - might be a bug in LLVM 2.8?)
...eg16384<def> = LDWi <fi#-2>, 0; mem:LD4[FixedStack-2] I32Regs:%reg16384
>>>> %reg16385<def> = LDWi <fi#-1>, 0; mem:LD4[FixedStack-1] I32Regs:%reg16385
>>>> %reg16386<def> = COPY %reg16384; I32Regs:%reg16386,16384
>>>> %reg16390<def> = NErrb %reg16384, %reg16385; I1Regs:%reg16390 I32Regs:%reg16384,16385
>>>>
>>>> which just compares ALL BITS of the variables.
>>> I also have a pattern:
>>>
>>> def XORrrb : InstTCE<(outs I1Regs:$op3), (ins I32Regs:$op1,I32Regs:$o...
2010 Nov 24
1
[LLVMdev] Selecting BRCOND instead of BRCC
...= CopyToReg 0x16d5748, 0x170e860, 0x170e360 [ID=17]
0x16d5748: ch = EntryToken [ORD=1] [ID=0]
0x170e860: i16 = Register %reg16386 [ID=7]
0x170e360: i16,ch = CopyFromReg 0x16d5748, 0x170e260 [ID=14]
0x16d5748: ch = EntryToken [ORD=1] [ID=0]
0x170e260: i16 = Register %reg16390 [ID=4]
0x170ed00: ch = seteq [ORD=1] [ID=9]
0x170dc60: i16,ch = CopyFromReg 0x16d5748, 0x170db60 [ORD=1] [ID=11]
0x16d5748: ch = EntryToken [ORD=1] [ID=0]
0x170db60: i16 = Register %reg16387 [ORD=1] [ID=1]
0x170ec00: i16 = Constant<0> [ORD=1] [ID=8]
0x170ef00: ch = BasicBlock<...
2010 Sep 04
3
[LLVMdev] Possible missed optimization?
On Sep 4, 2010, at 11:21 AM, Borja Ferrer wrote:
> I've noticed this pattern happening with other operators aswell, but used xor in this example. As i said before, i tried with different register allocation orders, but it will produce always the same result. GCC is emitting longer code, but since LLVM is so nearer to the optimal code sequence i wanted to reach it.
In LLVM, copies are
2010 Oct 04
0
[LLVMdev] Illegal optimization in LLVM 2.8 during SelectionDAG
...LDWi <fi#-2>, 0; mem:LD4[FixedStack-2] I32Regs:%reg16384
>>>>>> %reg16385<def> = LDWi <fi#-1>, 0; mem:LD4[FixedStack-1] I32Regs:%reg16385
>>>>>> %reg16386<def> = COPY %reg16384; I32Regs:%reg16386,16384
>>>>>> %reg16390<def> = NErrb %reg16384, %reg16385; I1Regs:%reg16390 I32Regs:%reg16384,16385
>>>>>>
>>>>>> which just compares ALL BITS of the variables.
>>>>> I also have a pattern:
>>>>>
>>>>> def XORrrb : InstTCE<(outs I1...
2010 Jul 28
0
[LLVMdev] Subregister coalescing
...med into:
>
> 36 %reg16404:1<def> = LDWr %reg16384, 0; mem:LD4[<unknown>]
> 76 %reg16394<def> = LDWr %reg16386<kill>, 0; mem:LD4[<unknown>]
> 124 %reg16404<def> = INSERT_SUBREG %reg16404, %reg16394<kill>, 2
> 132 %reg16401<def> = LDWr %reg16390<kill>, 0; mem:LD4[<unknown>]
> 172 %reg16404<def> = INSERT_SUBREG %reg16404, %reg16401<kill>, 3
> 180 %reg16405<def> = LDWr %reg16398<kill>, 0; mem:LD4[<unknown>]
> 220 %reg16404<def> = INSERT_SUBREG %reg16404, %reg16405<kill>, 4
>...