llvm-6502/lib
Bill Wendling 22f3b9faac When the visitSub method was split into visitSub and visitFSub, this xform was
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.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@93369 91177308-0d34-0410-b5e6-96231b3b80d8
2010-01-13 23:23:17 +00:00
..
Analysis
Archive
AsmParser
Bitcode Fix comment typo 2010-01-13 21:25:04 +00:00
CodeGen Commit some changes I had managed to lose last night while refactoring the code. Avoid change use of PHI instructions because it's not legal to insert any instructions before them. 2010-01-13 19:16:39 +00:00
CompilerDriver
ExecutionEngine
Linker
MC tidy 2010-01-13 21:21:29 +00:00
Support Introduce Twine::toStringRef, a variant of toVector which avoids the copy if the 2010-01-13 12:45:23 +00:00
System
Target fix ELF section mangling stuff for weak symbols to not use 2010-01-13 21:29:21 +00:00
Transforms When the visitSub method was split into visitSub and visitFSub, this xform was 2010-01-13 23:23:17 +00:00
VMCore Introduce Twine::toStringRef, a variant of toVector which avoids the copy if the 2010-01-13 12:45:23 +00:00
Makefile