| Commit message (Collapse) | Author | Age | Files | Lines | |
|---|---|---|---|---|---|
| * | Simplify/generalize the xor+add->sign-extend instcombine. | Eli Friedman | 2010-01-31 | 1 | -35/+19 |
| | | | | | llvm-svn: 94943 | ||||
| * | Add a small transform: transform -(X<<Y) to (-X<<Y) when the shift has a single | Eli Friedman | 2010-01-31 | 1 | -0/+7 |
| | | | | | | | use and X is free to negate. llvm-svn: 94941 | ||||
| * | When the visitSub method was split into visitSub and visitFSub, this xform was | Bill Wendling | 2010-01-13 | 1 | -11/+0 |
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | added to the FSub version. However, the original version of this xform guarded against doing this for floating point (!Op0->getType()->isFPOrFPVector()). This is causing LLVM to perform incorrect xforms for code like: void func(double *rhi, double *rlo, double xh, double xl, double yh, double yl){ double mh, ml; double c = 134217729.0; double up, u1, u2, vp, v1, v2; up = xh*c; u1 = (xh - up) + up; u2 = xh - u1; vp = yh*c; v1 = (yh - vp) + vp; v2 = yh - v1; mh = xh*yh; ml = (((u1*v1 - mh) + (u1*v2)) + (u2*v1)) + (u2*v2); ml += xh*yl + xl*yh; *rhi = mh + ml; *rlo = (mh - (*rhi)) + ml; } The last line was optimized away, but rl is intended to be the difference between the infinitely precise result of mh + ml and after it has been rounded to double precision. llvm-svn: 93369 | ||||
| * | reduce indentation | Chris Lattner | 2010-01-05 | 1 | -15/+18 |
| | | | | | llvm-svn: 92766 | ||||
| * | Convert a ton of simple integer type equality tests to the new predicate. | Benjamin Kramer | 2010-01-05 | 1 | -2/+2 |
| | | | | | llvm-svn: 92760 | ||||
| * | split add/sub out to its own file. Eliminate use of | Chris Lattner | 2010-01-05 | 1 | -0/+748 |
| dyn_castNotVal in the X+~X transform. dyn_castNotVal is dramatic overkill for what the xform needed. llvm-svn: 92704 | |||||

