- Oct 04, 2005
-
-
Nate Begeman authored
Neither of us have yet figured out why this code is necessary, but stuff breaks if its not there. Still tracking this down... llvm-svn: 23617
-
Chris Lattner authored
and more correct than use_empty(). This fixes PR635 and SimplifyCFG/2005-10-02-InvokeSimplify.ll llvm-svn: 23616
-
Chris Lattner authored
llvm-svn: 23615
-
Chris Lattner authored
constant arrays in place instead of reallocating them and replaceAllUsesOf'ing the result. This speeds up a release build of the bcreader from: 136.987u 120.866s 4:24.38 to 49.790u 49.890s 1:40.14 ... a 2.6x speedup parsing a large python bc file. llvm-svn: 23614
-
- Oct 03, 2005
-
-
Chris Lattner authored
llvm-svn: 23613
-
Chris Lattner authored
llvm-svn: 23612
-
Chris Lattner authored
lookups instead of linear time lookups. This speeds up bc parsing of a large file from 137.834u 118.256s 4:27.96 to 132.611u 114.436s 4:08.53 with a release build. llvm-svn: 23611
-
Jim Laskey authored
llvm-svn: 23610
-
Chris Lattner authored
llvm-svn: 23609
-
Chris Lattner authored
for globals llvm-svn: 23608
-
Chris Lattner authored
llvm-svn: 23606
-
Chris Lattner authored
llvm-svn: 23605
-
Chris Lattner authored
particular, it should realize that phi's use their values in the pred block not the phi block itself. This change turns our em3d loop from this: _test: cmpwi cr0, r4, 0 bgt cr0, LBB_test_2 ; entry.no_exit_crit_edge LBB_test_1: ; entry.loopexit_crit_edge li r2, 0 b LBB_test_6 ; loopexit LBB_test_2: ; entry.no_exit_crit_edge li r6, 0 LBB_test_3: ; no_exit or r2, r6, r6 lwz r6, 0(r3) cmpw cr0, r6, r5 beq cr0, LBB_test_6 ; loopexit LBB_test_4: ; endif addi r3, r3, 4 addi r6, r2, 1 cmpw cr0, r6, r4 blt cr0, LBB_test_3 ; no_exit LBB_test_5: ; endif.loopexit.loopexit_crit_edge addi r3, r2, 1 blr LBB_test_6: ; loopexit or r3, r2, r2 blr into: _test: cmpwi cr0, r4, 0 bgt cr0, LBB_test_2 ; entry.no_exit_crit_edge LBB_test_1: ; entry.loopexit_crit_edge li r2, 0 b LBB_test_5 ; loopexit LBB_test_2: ; entry.no_exit_crit_edge li r6, 0 LBB_test_3: ; no_exit lwz r2, 0(r3) cmpw cr0, r2, r5 or r2, r6, r6 beq cr0, LBB_test_5 ; loopexit LBB_test_4: ; endif addi r3, r3, 4 addi r6, r6, 1 cmpw cr0, r6, r4 or r2, r6, r6 blt cr0, LBB_test_3 ; no_exit LBB_test_5: ; loopexit or r3, r2, r2 blr Unfortunately, this is actually worse code, because the register coallescer is getting confused somehow. If it were doing its job right, it could turn the code into this: _test: cmpwi cr0, r4, 0 bgt cr0, LBB_test_2 ; entry.no_exit_crit_edge LBB_test_1: ; entry.loopexit_crit_edge li r6, 0 b LBB_test_5 ; loopexit LBB_test_2: ; entry.no_exit_crit_edge li r6, 0 LBB_test_3: ; no_exit lwz r2, 0(r3) cmpw cr0, r2, r5 beq cr0, LBB_test_5 ; loopexit LBB_test_4: ; endif addi r3, r3, 4 addi r6, r6, 1 cmpw cr0, r6, r4 blt cr0, LBB_test_3 ; no_exit LBB_test_5: ; loopexit or r3, r6, r6 blr ... which I'll work on next. :) llvm-svn: 23604
-
Chris Lattner authored
llvm-svn: 23603
-
Chris Lattner authored
memoizing code when IV's are used by phinodes outside of loops. In a simple example, we were getting this code before (note that r6 and r7 are isomorphic IV's): li r6, 0 or r7, r6, r6 LBB_test_3: ; no_exit lwz r2, 0(r3) cmpw cr0, r2, r5 or r2, r7, r7 beq cr0, LBB_test_5 ; loopexit LBB_test_4: ; endif addi r2, r7, 1 addi r7, r7, 1 addi r3, r3, 4 addi r6, r6, 1 cmpw cr0, r6, r4 blt cr0, LBB_test_3 ; no_exit Now we get: li r6, 0 LBB_test_3: ; no_exit or r2, r6, r6 lwz r6, 0(r3) cmpw cr0, r6, r5 beq cr0, LBB_test_6 ; loopexit LBB_test_4: ; endif addi r3, r3, 4 addi r6, r2, 1 cmpw cr0, r6, r4 blt cr0, LBB_test_3 ; no_exit this was noticed in em3d. llvm-svn: 23602
-
Chris Lattner authored
check the presplit pred, not the post-split pred. This was causing us to make the wrong decision in some cases, leaving the critical edge block in the loop. llvm-svn: 23601
-
Chris Lattner authored
llvm-svn: 23600
-
- Oct 02, 2005
-
-
Chris Lattner authored
llvm-svn: 23599
-
Chris Lattner authored
large basic blocks because it was purely recursive. This switches it to an iterative/recursive hybrid. llvm-svn: 23596
-
Chris Lattner authored
llvm-svn: 23595
-
Chris Lattner authored
llvm-svn: 23594
-
Chris Lattner authored
llvm-svn: 23593
-
Chris Lattner authored
llvm-svn: 23592
-
Chris Lattner authored
compile with an assertion that the tables are not sorted! llvm-svn: 23591
-
Chris Lattner authored
up between defs and uses. llvm-svn: 23590
-
Chris Lattner authored
the comparison to be 64-bits. This is fine because extensions from float to double are free. llvm-svn: 23589
-
Chris Lattner authored
split the FSEL family into 4 things instead of just two. llvm-svn: 23588
-
Chris Lattner authored
llvm-svn: 23587
-
Chris Lattner authored
destination vreg. llvm-svn: 23586
-
Chris Lattner authored
llvm-svn: 23585
-
Chris Lattner authored
llvm-svn: 23584
-
Chris Lattner authored
llvm-svn: 23583
-
Chris Lattner authored
we're in a single-mbb loop, make sure to emit the backwards branch as the conditional branch instead of the uncond branch. For example, emit this: LBBl29_z__44: stw r9, 0(r15) stw r9, 4(r15) stw r9, 8(r15) stw r9, 12(r15) addi r15, r15, 16 addi r8, r8, 1 cmpw cr0, r8, r28 ble cr0, LBBl29_z__44 b LBBl29_z__48 *** NOT PART OF LOOP Instead of: LBBl29_z__44: stw r9, 0(r15) stw r9, 4(r15) stw r9, 8(r15) stw r9, 12(r15) addi r15, r15, 16 addi r8, r8, 1 cmpw cr0, r8, r28 bgt cr0, LBBl29_z__48 *** PART OF LOOP! b LBBl29_z__44 The former sequence has one fewer dispatch group for the loop body. llvm-svn: 23582
-
Chris Lattner authored
llvm-svn: 23581
-
- Oct 01, 2005
-
-
Chris Lattner authored
For instructions that define multiple results, use the right regclass to define the result, not always the rc of result #0 llvm-svn: 23580
-
Jeff Cohen authored
llvm-svn: 23579
-
Chris Lattner authored
llvm-svn: 23578
-
Chris Lattner authored
These are used to represent float and double values, and the two regclasses contain the same physical registers. llvm-svn: 23577
-
Chris Lattner authored
This is Jim's feature implemented so that graphs could 'opt-in' and get this behavior. This is currently used by selection dags. llvm-svn: 23576
-
Chris Lattner authored
llvm-svn: 23575
-