Skip to content
  1. Nov 05, 2008
  2. Oct 31, 2008
  3. Oct 30, 2008
  4. Oct 28, 2008
  5. Oct 24, 2008
    • Duncan Sands's avatar
      Fix translateX86CC: if SetCCOpcode is SETULE and · 014f5bba
      Duncan Sands authored
      LHS is a foldable load, then LHS and RHS are swapped
      and SetCCOpcode is changed to SETUGT.  But the later
      code is expecting operands to be the wrong way round
      for SETUGT, but they are not in this case, resulting
      in an inverted compare.  The solution is to move the
      load normalization before the correction for SETUGT.
      This bug was tickled by LegalizeTypes which happened
      to legalize the testcase slightly differently to
      LegalizeDAG.
      
      llvm-svn: 58092
      014f5bba
  6. Oct 22, 2008
  7. Oct 21, 2008
    • Dale Johannesen's avatar
      Add an SSE2 algorithm for uint64->f64 conversion. · 28929589
      Dale Johannesen authored
      The same one Apple gcc uses, faster.  Also gets the
      extreme case in gcc.c-torture/execute/ieee/rbug.c
      correct which we weren't before; this is not
      sufficient to get the test to pass though, there
      is another bug.
      
      llvm-svn: 57926
      28929589
    • Dan Gohman's avatar
      Don't create TargetGlobalAddress nodes with offsets that don't fit · 269246b0
      Dan Gohman authored
      in the 32-bit signed offset field of addresses. Even though this
      may be intended, some linkers refuse to relocate code where the
      relocated address computation overflows.
      
      Also, fix the sign-extension of constant offsets to use the
      actual pointer size, rather than the size of the GlobalAddress
      node, which may be different, for example on x86-64 where MVT::i32
      is used when the address is being fit into the 32-bit displacement
      field.
      
      llvm-svn: 57885
      269246b0
    • Dan Gohman's avatar
      Optimized FCMP_OEQ and FCMP_UNE for x86. · 97d95d6d
      Dan Gohman authored
      Where previously LLVM might emit code like this:
      
              ucomisd %xmm1, %xmm0
              setne   %al
              setp    %cl
              orb     %al, %cl
              jne     .LBB4_2
      
      it now emits this:
      
              ucomisd %xmm1, %xmm0
              jne     .LBB4_2
              jp      .LBB4_2
      
      It has fewer instructions and uses fewer registers, but it does
      have more branches. And in the case that this code is followed by
      a non-fallthrough edge, it may be followed by a jmp instruction,
      resulting in three branch instructions in sequence. Some effort
      is made to avoid this situation.
      
      To achieve this, X86ISelLowering.cpp now recognizes FCMP_OEQ and
      FCMP_UNE in lowered form, and replace them with code that emits
      two branches, except in the case where it would require converting
      a fall-through edge to an explicit branch.
      
      Also, X86InstrInfo.cpp's branch analysis and transform code now
      knows now to handle blocks with multiple conditional branches. It
      uses loops instead of having fixed checks for up to two
      instructions. It can now analyze and transform code generated
      from FCMP_OEQ and FCMP_UNE.
      
      llvm-svn: 57873
      97d95d6d
  8. Oct 20, 2008
    • Duncan Sands's avatar
      Have X86 custom lowering for LegalizeTypes use · 1d20ab57
      Duncan Sands authored
      LowerOperation if it doesn't know what else to do.
      This methods should probably be factorized some,
      but this is good enough for the moment.  Have
      LowerATOMIC_BINARY_64 use EXTRACT_ELEMENT rather
      than assuming the operand is a BUILD_PAIR (if it
      is then getNode will automagically simplify the
      EXTRACT_ELEMENT).  This way LowerATOMIC_BINARY_64
      usable from LegalizeTypes.
      
      llvm-svn: 57831
      1d20ab57
  9. Oct 18, 2008
    • Dan Gohman's avatar
      Teach DAGCombine to fold constant offsets into GlobalAddress nodes, · 2fe6bee5
      Dan Gohman authored
      and add a TargetLowering hook for it to use to determine when this
      is legal (i.e. not in PIC mode, etc.)
      
      This allows instruction selection to emit folded constant offsets
      in more cases, such as the included testcase, eliminating the need
      for explicit arithmetic instructions.
      
      This eliminates the need for the C++ code in X86ISelDAGToDAG.cpp
      that attempted to achieve the same effect, but wasn't as effective.
      
      Also, fix handling of offsets in GlobalAddressSDNodes in several
      places, including changing GlobalAddressSDNode's offset from
      int to int64_t.
      
      The Mips, Alpha, Sparc, and CellSPU targets appear to be
      unaware of GlobalAddress offsets currently, so set the hook to
      false on those targets.
      
      llvm-svn: 57748
      2fe6bee5
  10. Oct 17, 2008
  11. Oct 16, 2008
  12. Oct 15, 2008
    • Evan Cheng's avatar
      - Add target lowering hooks that specify which setcc conditions are illegal, · 3b0f5e4d
      Evan Cheng authored
      i.e. conditions that cannot be checked with a single instruction. For example,
      SETONE and SETUEQ on x86.
      - Teach legalizer to implement *illegal* setcc as a and / or of a number of
      legal setcc nodes. For now, only implement FP conditions. e.g. SETONE is
      implemented as SETO & SETNE, SETUEQ is SETUO | SETEQ.
      - Move x86 target over.
      
      llvm-svn: 57542
      3b0f5e4d
    • Dan Gohman's avatar
      FastISel support for exception-handling constructs. · e7ced745
      Dan Gohman authored
       - Move the EH landing-pad code and adjust it so that it works
         with FastISel as well as with SDISel.
       - Add FastISel support for @llvm.eh.exception and
         @llvm.eh.selector.
      
      llvm-svn: 57539
      e7ced745
  13. Oct 14, 2008
  14. Oct 12, 2008
  15. Oct 10, 2008
  16. Oct 06, 2008
  17. Oct 04, 2008
  18. Oct 03, 2008
  19. Oct 02, 2008
  20. Oct 01, 2008
  21. Sep 30, 2008
  22. Sep 27, 2008
    • Evan Cheng's avatar
      Re-apply 56683 with fixes. · 3774b2f2
      Evan Cheng authored
      llvm-svn: 56748
      3774b2f2
    • Bill Wendling's avatar
      Temporarily reverting r56683. This is causing a failure during the build of llvm-gcc: · c966a737
      Bill Wendling authored
      /Volumes/Gir/devel/llvm/clean/llvm-gcc.obj/./gcc/xgcc -B/Volumes/Gir/devel/llvm/clean/llvm-gcc.obj/./gcc/ -B/Volumes/Gir/devel/llvm/clean/llvm-gcc.install/i386-apple-darwin9.5.0/bin/ -B/Volumes/Gir/devel/llvm/clean/llvm-gcc.install/i386-apple-darwin9.5.0/lib/ -isystem /Volumes/Gir/devel/llvm/clean/llvm-gcc.install/i386-apple-darwin9.5.0/include -isystem /Volumes/Gir/devel/llvm/clean/llvm-gcc.install/i386-apple-darwin9.5.0/sys-include -mmacosx-version-min=10.4 -O2  -O2 -g -O2  -DIN_GCC    -W -Wall -Wwrite-strings -Wstrict-prototypes -Wmissing-prototypes -Wold-style-definition  -isystem ./include  -fPIC -pipe -g -DHAVE_GTHR_DEFAULT -DIN_LIBGCC2 -D__GCC_FLOAT_NOT_NEEDED  -I. -I. -I../../llvm-gcc.src/gcc -I../../llvm-gcc.src/gcc/. -I../../llvm-gcc.src/gcc/../include -I./../intl -I../../llvm-gcc.src/gcc/../libcpp/include  -I../../llvm-gcc.src/gcc/../libdecnumber -I../libdecnumber -I/Volumes/Gir/devel/llvm/clean/llvm.obj/include -I/Volumes/Gir/devel/llvm/clean/llvm.src/include -fexceptions -fvisibility=hidden -DHIDE_EXPORTS -c ../../llvm-gcc.src/gcc/unwind-dw2-fde-darwin.c -o libgcc/./unwind-dw2-fde-darwin.o
      Assertion failed: (TargetRegisterInfo::isVirtualRegister(regA) && TargetRegisterInfo::isVirtualRegister(regB) && "cannot update physical register live information"), function runOnMachineFunction, file /Volumes/Gir/devel/llvm/clean/llvm.src/lib/CodeGen/TwoAddressInstructionPass.cpp, line 311.
      ../../llvm-gcc.src/gcc/unwind-dw2.c:1527: internal compiler error: Abort trap
      Please submit a full bug report,
      with preprocessed source if appropriate.
      See <URL:http://developer.apple.com/bugreporter> for instructions.
      {standard input}:3521:non-relocatable subtraction expression, "_dwarf_reg_size_table" minus "L20$pb"
      {standard input}:3521:symbol: "_dwarf_reg_size_table" can't be undefined in a subtraction expression
      {standard input}:3520:non-relocatable subtraction expression, "_dwarf_reg_size_table" minus "L20$pb"
      ...
      
      llvm-svn: 56703
      c966a737
  23. Sep 26, 2008
  24. Sep 25, 2008
Loading