Displaying 20 results from an estimated 23 matches for "reg1030".
2010 Sep 07
3
[LLVMdev] MachineMemOperand and dependence information
I have two questions regarding MachineMemOperands and dependence
information.
Q1) I noticed that MachineMemOperands are lost when two LDRs are combined
and a LDRD is generated in ARMPreAllocLoadStoreOpt:::RescheduleOps.
(before optimization)
%reg1033<def> = LDR %reg1030, %reg0, 4100, pred:14, pred:%reg0;
mem:LD4[%uglygep10]
%reg1054<def> = LDR %reg1030, %reg0, 4104, pred:14, pred:%reg0;
mem:LD4[%uglygep2021]
(after optimization)
%reg1054<def>, %reg1033<def> = LDRD %reg1030, %reg0, 264, pred:14,
pred:%reg0
Are there any reasons they need to be r...
2010 Sep 07
0
[LLVMdev] MachineMemOperand and dependence information
...gt; I have two questions regarding MachineMemOperands and dependence information.
>
> Q1) I noticed that MachineMemOperands are lost when two LDRs are combined and a LDRD is generated in ARMPreAllocLoadStoreOpt:::RescheduleOps.
>
> (before optimization)
> %reg1033<def> = LDR %reg1030, %reg0, 4100, pred:14, pred:%reg0; mem:LD4[%uglygep10]
> %reg1054<def> = LDR %reg1030, %reg0, 4104, pred:14, pred:%reg0; mem:LD4[%uglygep2021]
>
> (after optimization)
> %reg1054<def>, %reg1033<def> = LDRD %reg1030, %reg0, 264, pred:14, pred:%reg0
>
> Are there...
2009 Apr 20
4
[LLVMdev] Unnecessary moves after sign-extension in 2-address target
...output from LLVM shows this:
********** REWRITING TWO-ADDR INSTRS **********
********** Function: sext
%reg1028<def> = sextb_r %reg1025<kill>
prepend: %reg1028<def> = mov_rr %reg1025<kill>
rewrite to: %reg1028<def> = sextb_r %reg1028
...
%reg1030<def> = sextw_r %reg1026<kill>
prepend: %reg1030<def> = mov_rr %reg1026<kill>
rewrite to: %reg1030<def> = sextw_r %reg1030
Because sextb_r and sextw_r have destination tied to source operands,
TwoAddressInstructionPass thinks it needs a copy. How...
2010 Sep 07
1
[LLVMdev] MachineMemOperand and dependence information
...g MachineMemOperands and dependence
> information.
> >
> > Q1) I noticed that MachineMemOperands are lost when two LDRs are combined
> and a LDRD is generated in ARMPreAllocLoadStoreOpt:::RescheduleOps.
> >
> > (before optimization)
> > %reg1033<def> = LDR %reg1030, %reg0, 4100, pred:14, pred:%reg0;
> mem:LD4[%uglygep10]
> > %reg1054<def> = LDR %reg1030, %reg0, 4104, pred:14, pred:%reg0;
> mem:LD4[%uglygep2021]
> >
> > (after optimization)
> > %reg1054<def>, %reg1033<def> = LDRD %reg1030, %reg0, 264, pred:14,
&g...
2006 Jun 30
3
[LLVMdev] Removing dead code
...-------
entry (0x8605ba0, LLVM BB @0x8602d30):
%reg1024 = OR4 %r3, %r3
%reg1025 = OR4 %r4, %r4
%reg1026 = LWZ 0, %reg1025
%reg1027 = LIS <ga:.str_1>
%reg1028 = LIS <ga:.str_2>
%reg1029 = LBZ 0, %reg1026
ADJCALLSTACKDOWN 56
%reg1030 = IMPLICIT_DEF_GPR
%reg1031 = LA %reg1027, <ga:.str_1>
%r3 = OR4 %reg1031, %reg1031
BL <ga:printf>, %r3
%reg1032 = OR4 %r3, %r3 <-------------------
%reg1033 = EXTSB %reg1029
%reg1034 = LA %reg1028, <ga:.str_2>
ADJCAL...
2009 Apr 21
0
[LLVMdev] Unnecessary moves after sign-extension in 2-address target
...********** REWRITING TWO-ADDR INSTRS **********
> ********** Function: sext
> %reg1028<def> = sextb_r %reg1025<kill>
> prepend: %reg1028<def> = mov_rr %reg1025<kill>
> rewrite to: %reg1028<def> = sextb_r %reg1028
> ...
> %reg1030<def> = sextw_r %reg1026<kill>
> prepend: %reg1030<def> = mov_rr %reg1026<kill>
> rewrite to: %reg1030<def> = sextw_r %reg1030
>
> Because sextb_r and sextw_r have destination tied to source operands,
> TwoAddressInstructionPass thin...
2009 Jan 09
2
[LLVMdev] implicit CC register Defs cause "physreg was not killed in defining block!" assert
...imp-def>
%reg1097<def> = addC %reg1033<kill>, 0, %CCFLAGS<imp-def>
%reg1098<def> = addC %reg1028<kill>, 0, %CCFLAGS<imp-def>
%reg1099<def> = addC %reg1031<kill>, 0, %CCFLAGS<imp-def>
%reg1100<def> = addC %reg1030, 0, %CCFLAGS<imp-def>
%reg1101<def> = addC %reg1032<kill>, 0, %CCFLAGS<imp-def>
%reg1102<def> = addC %reg1030<kill>, 0, %CCFLAGS<imp-def>
br mbb<ifcont267,0x12bc518>
Successors according to CFG: 0x12bc518 (#4)
Do you hav...
2008 Sep 03
2
[LLVMdev] Codegen/Register allocation question.
...t;imp-def>, %ECX<imp-def,dead>, %EDI<imp-def,dead>,
%EDX<imp-def,dead>, %ESI<imp-def,dead>
108 ADJCALLSTACKUP 0, 0, %ESP<imp-def>, %EFLAGS<imp-def,dead>, %ESP<imp-use>
116 %reg1029<def,dead> = MOV32rr %EAX, %RAX<imp-use,kill>
124 %reg1030<def> = MOV32r0 %EFLAGS<imp-def,dead>
132 %EAX<def> = MOV32rr %reg1030<kill>
140 RET %EAX<imp-use,kill>, %AX<imp-use,kill>
********** REGISTER MAP **********
[reg1024 -> EAX]
[reg1025 -> R10]
[reg1026 -> AH]
[reg1027 -> XMM10]
[reg1028 ->...
2008 Sep 04
0
[LLVMdev] Codegen/Register allocation question.
...def,dead>, %EDI<imp-def,dead>,
> %EDX<imp-def,dead>, %ESI<imp-def,dead>
> 108 ADJCALLSTACKUP 0, 0, %ESP<imp-def>, %EFLAGS<imp-def,dead>,
> %ESP<imp-use>
> 116 %reg1029<def,dead> = MOV32rr %EAX, %RAX<imp-use,kill>
> 124 %reg1030<def> = MOV32r0 %EFLAGS<imp-def,dead>
> 132 %EAX<def> = MOV32rr %reg1030<kill>
> 140 RET %EAX<imp-use,kill>, %AX<imp-use,kill>
>
>
> ********** REGISTER MAP **********
> [reg1024 -> EAX]
> [reg1025 -> R10]
> [reg1026 -> AH]...
2009 Jan 09
0
[LLVMdev] implicit CC register Defs cause "physreg was not killed in defining block!" assert
...%reg1097<def> = addC %reg1033<kill>, 0, %CCFLAGS<imp-def>
> %reg1098<def> = addC %reg1028<kill>, 0, %CCFLAGS<imp-def>
> %reg1099<def> = addC %reg1031<kill>, 0, %CCFLAGS<imp-def>
> %reg1100<def> = addC %reg1030, 0, %CCFLAGS<imp-def>
> %reg1101<def> = addC %reg1032<kill>, 0, %CCFLAGS<imp-def>
> %reg1102<def> = addC %reg1030<kill>, 0, %CCFLAGS<imp-def>
> br mbb<ifcont267,0x12bc518>
> Successors according to CFG: 0x12bc518 (#...
2006 Jun 30
0
[LLVMdev] Removing dead code
On Thu, 29 Jun 2006, Fernando Magno Quintao Pereira wrote:
> I am working in a register allocator for LLVM, and I realized that,
> after I perform register allocation, there is many move instructions that
> are dead code, and can safely be removed. It is easy for the RA algorithm
> to remove these instructions. It seems to me that the only instructions
> with dead definitions
2009 Feb 13
3
[LLVMdev] Modeling GPU vector registers, again (with my implementation)
...ck into one vetor operation.
// each %reg is a sub-register
// r1, r2, r3, r4 here are virtual register number
mul %reg1024, r1, r2 // x
mul %reg1025, r1, r2 // y
mul %reg1026, r1, r2 // z
add %reg1027, r3, r4 // w
sub %reg1028, %reg1024, r1
sub %reg1029, %reg1025, r1
sub %reg1030, %reg1026, r1
sub %reg1031, %reg1027, r1
So I decided to model each 4-element register as one Register in *.td file.
Here are the details.
Since all the 4 elements of a vector register occupy the same 'alloca',
during the conversion of shader assembly to LLVM IR, I check if a vector
re...
2006 Jun 30
2
[LLVMdev] Removing dead code
Dear guys,
I am working in a register allocator for LLVM, and I realized that,
after I perform register allocation, there is many move instructions that
are dead code, and can safely be removed. It is easy for the RA algorithm
to remove these instructions. It seems to me that the only instructions
with dead definitions that I should not remove are the calls. Is it true?
I would like to know
2010 Aug 11
1
[LLVMdev] Need advice on writing scheduling pass
...ccording to CFG: BB#2 BB#3
%reg1026<def> = MOVr %reg1038<kill>, pred:14, pred:%reg0, opt:%reg0
%reg1027<def> = MOVr %reg1039<kill>, pred:14, pred:%reg0, opt:%reg0
%reg1028<def> = MOVr %reg1040<kill>, pred:14, pred:%reg0, opt:%reg0
%reg1030<def> = MOVr %reg1027<kill>, pred:14, pred:%reg0, opt:%reg0
%reg1037<def>, %reg1030<def> = LDR_POST %reg1030, %reg0, 4, pred:14,
pred:%reg0
%reg1029<def> = ADDrr %reg1037<kill>, %reg1028, pred:14, pred:%reg0,
opt:%reg0
%reg1031<def> =...
2009 Feb 13
0
[LLVMdev] Modeling GPU vector registers, again (with my implementation)
...b-register
> // r1, r2, r3, r4 here are virtual register number
>
> mul %reg1024, r1, r2 // x
> mul %reg1025, r1, r2 // y
> mul %reg1026, r1, r2 // z
>
> add %reg1027, r3, r4 // w
>
> sub %reg1028, %reg1024, r1
> sub %reg1029, %reg1025, r1
> sub %reg1030, %reg1026, r1
> sub %reg1031, %reg1027, r1
>
> So I decided to model each 4-element register as one Register in
> *.td file.
>
> Here are the details.
>
> Since all the 4 elements of a vector register occupy the same
> 'alloca',
> during the conversion of...
2004 Jul 06
1
[LLVMdev] Moving between registers of different classes
...ed to align an address register to even boundary. Since address
register can't be AND-ed with anything, I move the value into general purpose
register, to "and" and then move it into address register. Unfortunately, the
register allocator crashes. Here's machine code:
%reg1030 = - %reg1027, 1
%reg1031 = move %reg1030
%reg1032 = + %reg1031, -2
%reg1033 = move %reg1032
%ar1 = load64 %gr1<def>, %reg1033
and here's assertion:
llc: LiveIntervals.cpp:507: void llvm::LiveIntervals::joinIntervals():
Assertion `rcA == rcB && &q...
2009 Jan 12
1
[LLVMdev] implicit CC register Defs cause "physreg was not killed in defining block!" assert
...1097<def> = addC %reg1033<kill>, 0, %CCFLAGS<imp-def>
>> %reg1098<def> = addC %reg1028<kill>, 0, %CCFLAGS<imp-def>
>> %reg1099<def> = addC %reg1031<kill>, 0, %CCFLAGS<imp-def>
>> %reg1100<def> = addC %reg1030, 0, %CCFLAGS<imp-def>
>> %reg1101<def> = addC %reg1032<kill>, 0, %CCFLAGS<imp-def>
>> %reg1102<def> = addC %reg1030<kill>, 0, %CCFLAGS<imp-def>
>> br mbb<ifcont267,0x12bc518>
--
sorry about that, bu...
2010 May 18
2
[LLVMdev] Fast register allocation
...elps reduce the number of register copies when setting up parameters for a call:
%reg1028<def> = MOV32rm <fi#2>, 1, %reg0, 0, %reg0
%reg1029<def> = MOV32rm <fi#2>, 1, %reg0, 4, %reg0
ADJCALLSTACKDOWN64 0, %RSP<imp-def>, %EFLAGS<imp-def>, %RSP<imp-use>
%reg1030<def> = LEA64r %RIP, 1, %reg0, <ga:@.str>
%reg1031<def> = MOV8r0 %EFLAGS<imp-def,dead>
%RDI<def> = MOV64rr %reg1030
%ESI<def> = MOV32rr %reg1028
%EDX<def> = MOV32rr %reg1029
%AL<def> = MOV8rr %reg1031
CALL64pcrel32 <ga:@printf>, %RDI, %ESI,...
2007 Jul 12
1
[LLVMdev] backend problem with LiveInterval::removeRange
...VM BB @0x88be168, ID#1:
Predecessors according to CFG: 0x88c7918 (#0)
%reg1028 = LW 0, <fi#1>
%reg1029 = LW 4, %reg1028
ADJCALLSTACKDOWN 0, %SP<imp-def>, %SP<imp-use>
%4 = ADDu %ZERO, %reg1029
JAL <ga:atoi>
ADJCALLSTACKUP 0, %SP<imp-def>, %SP<imp-use>
%reg1030 = ADDu %ZERO, %2
SW %reg1030, 0, <fi#3>
J mbb<cond_next,0x88c7e48>
Successors according to CFG: 0x88c7e48 (#3)
Total amount of phi nodes to update: 0
Lowered selection DAG:
SelectionDAG has 5 nodes:
0x88c8eb0: ch = EntryToken
0x88c8f08: i32 = Constant <17000>
0x...
2004 Jun 22
3
[LLVMdev] Linearscan allocator bug?
...%reg1027 = load <fi#-4>
%reg1028 = move 1
setcc %reg1024, %reg1028
if v< goto %disp(label entry.selecttrue)
%reg1071 = move 0
goto %disp(label entry.selectcont)
entry.selecttrue (0x80659d0, LLVM BB @0x80639b0):
%reg1070 = move 1
entry.selectcont (0x8065a30, LLVM BB @0x80638b0):
%reg1030 = phi %reg1070, mbb<entry.selecttrue,0x80659d0>, %reg1071, mbb<entry,0x8065970>
%reg1029 = move %reg1030
shortcirc_next.0 (0x8065a90, LLVM BB @0x805ffc8):
%reg1031 = move 1
setcc %reg1026, %reg1031
if v< goto %disp(label shortcirc_next.0.selecttrue)
%reg1073 = move 0
goto %dis...