- Oct 17, 2006
-
-
Chris Lattner authored
branch folding can now compile stuff like this: void foo(int W, int X, int Y, int Z) { if (W & 1) { for (; X;--X) bar(); } else if (W & 2) { for (; Y;--Y) bar(); } else if (W & 4) { for (; Z;--Z) bar(); } else if (W & 8) { for (; W;--W) bar(); } if (W) { bar(); } } contrived testcase where loops exits all end up merging together. To have the loop merges be: ... cmplw cr0, r30, r27 bne cr0, LBB1_14 ;bb38 LBB1_16: ;cond_next48.loopexit mr r27, r29 LBB1_20: ;cond_next48 cmplwi cr0, r27, 0 beq cr0, LBB1_22 ;UnifiedReturnBlock ... instead of: ... cmplw cr0, r30, r27 bne cr0, LBB1_14 ;bb38 LBB1_16: ;cond_next48.loopexit mr r27, r29 b LBB1_20 ;cond_next48 LBB1_17: ;cond_next48.loopexit1 b LBB1_20 ;cond_next48 LBB1_18: ;cond_next48.loopexit2 b LBB1_20 ;cond_next48 LBB1_19: ;cond_next48.loopexit3 LBB1_20: ;cond_next48 cmplwi cr0, r27, 0 beq cr0, LBB1_22 ;UnifiedReturnBlock ... This is CodeGen/PowerPC/branch-opt.ll llvm-svn: 31006
-
Chris Lattner authored
llvm-svn: 31005
-
Chris Lattner authored
llvm-svn: 31003
-
Rafael Espindola authored
llvm-svn: 31002
-
Jim Laskey authored
llvm-svn: 31001
-
Chris Lattner authored
It now correctly deletes unreachable blocks and blocks that are empty. llvm-svn: 31000
-
Evan Cheng authored
llvm-svn: 30999
-
Rafael Espindola authored
llvm-svn: 30998
-
Jim Laskey authored
llvm-svn: 30997
-
Rafael Espindola authored
llvm-svn: 30996
-
Rafael Espindola authored
llvm-svn: 30995
-
Jim Laskey authored
llvm-svn: 30994
-
Evan Cheng authored
llvm-svn: 30993
-
Evan Cheng authored
llvm-svn: 30992
-
Reid Spencer authored
llvm-svn: 30991
-
Evan Cheng authored
llvm-svn: 30990
-
Evan Cheng authored
(vector_shuffle (vbitconvert (vbuildvector (copyfromreg v4f32), 1, v4f32), 4, f32), (undef, undef, undef, undef), (0, 0, 0, 0), 4, f32) to the vbitconvert is a very bad idea. llvm-svn: 30989
-
- Oct 16, 2006
-
-
Rafael Espindola authored
llvm-svn: 30988
-
Rafael Espindola authored
llvm-svn: 30987
-
Evan Cheng authored
llvm-svn: 30986
-
-
Jim Laskey authored
llvm-svn: 30984
-
Chris Lattner authored
llvm-svn: 30983
-
Jim Laskey authored
llvm-svn: 30982
-
Rafael Espindola authored
llvm-svn: 30981
-
Rafael Espindola authored
llvm-svn: 30980
-
Rafael Espindola authored
llvm-svn: 30979
-
Rafael Espindola authored
llvm-svn: 30978
-
Rafael Espindola authored
llvm-svn: 30977
-
Rafael Espindola authored
llvm-svn: 30976
-
Rafael Espindola authored
llvm-svn: 30975
-
Evan Cheng authored
llvm-svn: 30974
-
Evan Cheng authored
llvm-svn: 30973
-
Evan Cheng authored
Passing isel root and use operands to ComplexPattern functions, these should do the usual load folding checks as well. llvm-svn: 30972
-
Chris Lattner authored
llvm-svn: 30971
-
Chris Lattner authored
llvm-svn: 30970
-
Chris Lattner authored
llvm-svn: 30969
-
Chris Lattner authored
llvm-svn: 30968
-
Chris Lattner authored
llvm-svn: 30967
-
- Oct 15, 2006
-
-
Chris Lattner authored
llvm-svn: 30966
-