| Commit message (Collapse) | Author | Age | Files | Lines | |
|---|---|---|---|---|---|
| * | Adjust to CopyFromReg changes, implement deletion of truncating/extending | Chris Lattner | 2005-01-14 | 3 | -6/+38 |
| | | | | | | | stores/loads. llvm-svn: 19562 | ||||
| * | Adjust to CopyFromREg changes. | Chris Lattner | 2005-01-14 | 1 | -2/+14 |
| | | | | | llvm-svn: 19561 | ||||
| * | Change CopyFromReg to take and produce a chain node, allowing it to be used | Chris Lattner | 2005-01-14 | 2 | -17/+12 |
| | | | | | | | with physregs that are not live across the entire block. llvm-svn: 19560 | ||||
| * | Start implementing truncating stores and extending loads. | Chris Lattner | 2005-01-14 | 2 | -7/+72 |
| | | | | | llvm-svn: 19559 | ||||
| * | Start adding some new operators, give IMPLICIT_DEF a chain operand. | Chris Lattner | 2005-01-14 | 2 | -29/+110 |
| | | | | | llvm-svn: 19558 | ||||
| * | Fix Regression/CodeGen/PowerPC/2005-01-14-UndefLong.ll | Chris Lattner | 2005-01-14 | 1 | -0/+2 |
| | | | | | llvm-svn: 19557 | ||||
| * | New testcase, problem found by Rob. | Chris Lattner | 2005-01-14 | 1 | -0/+3 |
| | | | | | llvm-svn: 19556 | ||||
| * | Fix: Regression/CodeGen/PowerPC/2005-01-14-SetSelectCrash.ll | Chris Lattner | 2005-01-14 | 1 | -1/+2 |
| | | | | | llvm-svn: 19555 | ||||
| * | Testcase that crashes the PPC backend. Thanks to Rob for finding this. | Chris Lattner | 2005-01-14 | 1 | -0/+8 |
| | | | | | llvm-svn: 19554 | ||||
| * | Fix some bugs in an xform added yesterday. This fixes Prolangs-C/allroots. | Chris Lattner | 2005-01-14 | 1 | -2/+2 |
| | | | | | llvm-svn: 19553 | ||||
| * | Fix a compile crash on spiff | Chris Lattner | 2005-01-14 | 1 | -7/+4 |
| | | | | | llvm-svn: 19552 | ||||
| * | Allow the Echo and EchoCmd variables to be overridden. | Reid Spencer | 2005-01-14 | 1 | -2/+2 |
| | | | | | llvm-svn: 19551 | ||||
| * | Fix the path from ../lib/Debug to ../Debug/lib per changes to Makefiles. | Reid Spencer | 2005-01-14 | 1 | -1/+1 |
| | | | | | llvm-svn: 19550 | ||||
| * | Improve compatibility with acc | Chris Lattner | 2005-01-14 | 1 | -2/+2 |
| | | | | | llvm-svn: 19549 | ||||
| * | Make this compatible with the HP/intel compiler. Fix by Duraid, thanks! | Chris Lattner | 2005-01-14 | 1 | -1/+1 |
| | | | | | llvm-svn: 19548 | ||||
| * | Correctly update configure to configure the llvm-java project | Alkis Evlogimenos | 2005-01-14 | 1 | -2/+2 |
| | | | | | llvm-svn: 19546 | ||||
| * | Fix and improve win32 path validation. | Jeff Cohen | 2005-01-14 | 1 | -10/+22 |
| | | | | | llvm-svn: 19545 | ||||
| * | Make asctime_r work for HP/UX. | Reid Spencer | 2005-01-14 | 1 | -0/+4 |
| | | | | | llvm-svn: 19544 | ||||
| * | More testcases | Chris Lattner | 2005-01-14 | 1 | -0/+15 |
| | | | | | llvm-svn: 19543 | ||||
| * | if two gep comparisons only differ by one index, compare that index directly. | Chris Lattner | 2005-01-14 | 1 | -0/+28 |
| | | | | | | | This allows us to better optimize begin() -> end() comparisons in common cases. llvm-svn: 19542 | ||||
| * | Do not overrun iterators. This fixes a 176.gcc crash | Chris Lattner | 2005-01-13 | 1 | -2/+1 |
| | | | | | llvm-svn: 19541 | ||||
| * | Add a method | Chris Lattner | 2005-01-13 | 1 | -0/+5 |
| | | | | | llvm-svn: 19540 | ||||
| * | new testcase | Chris Lattner | 2005-01-13 | 1 | -0/+17 |
| | | | | | llvm-svn: 19539 | ||||
| * | Add a method | Chris Lattner | 2005-01-13 | 1 | -1/+7 |
| | | | | | llvm-svn: 19538 | ||||
| * | Turn select C, (X+Y), (X-Y) --> (X+(select C, Y, (-Y))). This occurs in | Chris Lattner | 2005-01-13 | 1 | -0/+53 |
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | the 'sim' program and probably elsewhere. In sim, it comes up for cases like this: #define round(x) ((x)>0.0 ? (x)+0.5 : (x)-0.5) double G; void T(double X) { G = round(X); } (it uses the round macro a lot). This changes the LLVM code from: %tmp.1 = setgt double %X, 0.000000e+00 ; <bool> [#uses=1] %tmp.4 = add double %X, 5.000000e-01 ; <double> [#uses=1] %tmp.6 = sub double %X, 5.000000e-01 ; <double> [#uses=1] %mem_tmp.0 = select bool %tmp.1, double %tmp.4, double %tmp.6 store double %mem_tmp.0, double* %G to: %tmp.1 = setgt double %X, 0.000000e+00 ; <bool> [#uses=1] %mem_tmp.0.p = select bool %tmp.1, double 5.000000e-01, double -5.000000e-01 %mem_tmp.0 = add double %mem_tmp.0.p, %X store double %mem_tmp.0, double* %G ret void llvm-svn: 19537 | ||||
| * | Implement an optimization for == and != comparisons like this: | Chris Lattner | 2005-01-13 | 1 | -1/+63 |
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | _Bool test2(int X, int Y) { return &arr[X][Y] == arr; } instead of generating this: bool %test2(int %X, int %Y) { %tmp.3.idx = mul int %X, 160 ; <int> [#uses=1] %tmp.3.idx1 = shl int %Y, ubyte 2 ; <int> [#uses=1] %tmp.3.offs2 = sub int 0, %tmp.3.idx ; <int> [#uses=1] %tmp.7 = seteq int %tmp.3.idx1, %tmp.3.offs2 ; <bool> [#uses=1] ret bool %tmp.7 } generate this: bool %test2(int %X, int %Y) { seteq int %X, 0 ; <bool>:0 [#uses=1] seteq int %Y, 0 ; <bool>:1 [#uses=1] %tmp.7 = and bool %0, %1 ; <bool> [#uses=1] ret bool %tmp.7 } This idiom occurs in C++ programs when iterating from begin() to end(), in a vector or array. For example, we now compile this: void test(int X, int Y) { for (int *i = arr; i != arr+100; ++i) foo(*i); } to this: no_exit: ; preds = %entry, %no_exit ... %exitcond = seteq uint %indvar.next, 100 ; <bool> [#uses=1] br bool %exitcond, label %return, label %no_exit instead of this: no_exit: ; preds = %entry, %no_exit ... %inc5 = getelementptr [100 x [40 x int]]* %arr, int 0, int 0, int %inc.rec ; <int*> [#uses=1] %tmp.8 = seteq int* %inc5, getelementptr ([100 x [40 x int]]* %arr, int 0, int 100, int 0) ; <bool> [#uses=1] %indvar.next = add uint %indvar, 1 ; <uint> [#uses=1] br bool %tmp.8, label %return, label %no_exit llvm-svn: 19536 | ||||
| * | Add new ImplicitDef node, rename CopyRegSDNode class to RegSDNode. | Chris Lattner | 2005-01-13 | 7 | -22/+42 |
| | | | | | llvm-svn: 19535 | ||||
| * | Fix some bugs in code I didn't mean to check in. | Chris Lattner | 2005-01-13 | 1 | -5/+12 |
| | | | | | llvm-svn: 19534 | ||||
| * | Fix a crash compiling 129.compress | Chris Lattner | 2005-01-13 | 1 | -6/+109 |
| | | | | | llvm-svn: 19533 | ||||
| * | Codegen factor nodes more intelligently according to perceived register ↵ | Chris Lattner | 2005-01-13 | 1 | -2/+14 |
| | | | | | | | pressure. llvm-svn: 19532 | ||||
| * | Don't forget the existing root. | Chris Lattner | 2005-01-13 | 1 | -4/+2 |
| | | | | | llvm-svn: 19531 | ||||
| * | Update the documentation about -enable-llcbeta vs. -enable-linscan | Reid Spencer | 2005-01-13 | 1 | -1/+1 |
| | | | | | llvm-svn: 19530 | ||||
| * | Initial trivial (but stupid) codegen for this node. | Chris Lattner | 2005-01-13 | 1 | -0/+4 |
| | | | | | llvm-svn: 19529 | ||||
| * | Codegen independent ops as being independent. | Chris Lattner | 2005-01-13 | 1 | -7/+21 |
| | | | | | llvm-svn: 19528 | ||||
| * | Legalize new node, add assertion. | Chris Lattner | 2005-01-13 | 1 | -0/+16 |
| | | | | | llvm-svn: 19527 | ||||
| * | Print new node. | Chris Lattner | 2005-01-13 | 1 | -0/+1 |
| | | | | | llvm-svn: 19526 | ||||
| * | Add a new node type, add comments. | Chris Lattner | 2005-01-13 | 2 | -4/+13 |
| | | | | | llvm-svn: 19525 | ||||
| * | Turn on LOADABLE_MODULE so that profile.so can be loaded dynamically by | Reid Spencer | 2005-01-13 | 1 | -0/+1 |
| | | | | | | | the JIT. llvm-svn: 19524 | ||||
| * | Re-enable libprofile now that llvm-ar is working better. | Reid Spencer | 2005-01-13 | 1 | -1/+1 |
| | | | | | llvm-svn: 19523 | ||||
| * | Add some really pedantic assertions to the load folding code. Fix a bunch | Chris Lattner | 2005-01-13 | 1 | -35/+43 |
| | | | | | | | | of cases where we accidentally emitted a load folded once and unfolded elsewhere. llvm-svn: 19522 | ||||
| * | Do not fold (zero_ext (sign_ext V)) -> (sign_ext V), they are not the same. | Chris Lattner | 2005-01-12 | 1 | -2/+2 |
| | | | | | | | This fixes llvm-test/SingleSource/Regression/C/casts.c llvm-svn: 19519 | ||||
| * | We can only fold a load into an op if there is exactly one use of the value. | Chris Lattner | 2005-01-12 | 1 | -1/+2 |
| | | | | | | | | Checking to see if the load has two uses is not equivalent, as the chain value may have zero uses. llvm-svn: 19518 | ||||
| * | New method | Chris Lattner | 2005-01-12 | 1 | -0/+33 |
| | | | | | llvm-svn: 19517 | ||||
| * | New method. | Chris Lattner | 2005-01-12 | 1 | -0/+5 |
| | | | | | llvm-svn: 19516 | ||||
| * | Fix sign extend to long. When coming from sbyte, we used to generate: | Chris Lattner | 2005-01-12 | 1 | -2/+2 |
| | | | | | | | | | | | | | | | | | movsbl 4(%esp), %eax movl %eax, %edx sarl $7, %edx Now we generate: movsbl 4(%esp), %eax movl %eax, %edx sarl $31, %edx Which is right. llvm-svn: 19515 | ||||
| * | Update comments to indicate CopyFrom/ToReg take physregs as well as vregs. | Chris Lattner | 2005-01-12 | 2 | -7/+7 |
| | | | | | llvm-svn: 19514 | ||||
| * | Try both ways to fold an add together. This allows us to generate this code | Chris Lattner | 2005-01-12 | 1 | -0/+4 |
| | | | | | | | | | | | | | | | | | | | | | | imul %EAX, %EAX, 400 add %ECX, %EAX add %ESI, DWORD PTR [%ECX + 4*%EDX] inc %EDX cmp %EDX, 100 instead of this: imul %EAX, %EAX, 400 add %ECX, %EAX mov %EAX, %EDX shl %EAX, 2 add %ECX, %EAX add %ESI, DWORD PTR [%ECX] inc %EDX cmp %EDX, 100 llvm-svn: 19513 | ||||
| * | Shut up warnings with GCC 3.4.3 about uninitialized variables. | Reid Spencer | 2005-01-12 | 1 | -2/+1 |
| | | | | | llvm-svn: 19512 | ||||
| * | Fix a major miscompilation where we were overwriting the scale reg. | Chris Lattner | 2005-01-12 | 1 | -1/+1 |
| | | | | | llvm-svn: 19511 | ||||
| * | Do not use the type of the RHS constant to determine the type of the operation. | Chris Lattner | 2005-01-12 | 1 | -1/+1 |
| | | | | | | | This fails for shifts because the constant is always 8 bits. llvm-svn: 19508 | ||||

