Skip to content
  1. Apr 09, 2010
  2. Apr 07, 2010
  3. Mar 29, 2010
    • Chris Lattner's avatar
      From Kalle Raiskila: · f60c556b
      Chris Lattner authored
      "the bigstack patch for SPU, with testcase. It is essentially the patch committed as 97091, and reverted as 97099, but with the following additions:
      -in vararg handling, registers are marked to be live, to not confuse the register scavenger
      -function prologue and epilogue are not emitted, if the stack size is 16. 16 means it is empty - there is only the register scavenger emergency spill slot, which is not used as there is no stack."
      
      llvm-svn: 99819
      f60c556b
  4. Mar 05, 2010
  5. Jan 19, 2010
  6. Jan 06, 2010
    • Evan Cheng's avatar
      Teach dag combine to fold the following transformation more aggressively: · 166a4e6c
      Evan Cheng authored
      (OP (trunc x), (trunc y)) -> (trunc (OP x, y))
      
      Unfortunately this simple change causes dag combine to infinite looping. The problem is the shrink demanded ops optimization tend to canonicalize expressions in the opposite manner. That is badness. This patch disable those optimizations in dag combine but instead it is done as a late pass in sdisel.
      
      This also exposes some deficiencies in dag combine and x86 setcc / brcond lowering. Teach them to look pass ISD::TRUNCATE in various places.
      
      llvm-svn: 92849
      166a4e6c
  7. Jan 05, 2010
  8. Dec 17, 2009
    • Evan Cheng's avatar
      Revert this dag combine change: · aadf060b
      Evan Cheng authored
      Fold (zext (and x, cst)) -> (and (zext x), cst)
      
      DAG combiner likes to optimize expression in the other way so this would end up cause an infinite looping.
      
      llvm-svn: 91574
      aadf060b
  9. Dec 15, 2009
  10. Dec 09, 2009
  11. Oct 22, 2009
    • Dan Gohman's avatar
      Revert the main portion of r31856. It was causing BranchFolding · ff97acd8
      Dan Gohman authored
      to break up CFG diamonds by banishing one of the blocks to the end of
      the function, which is bad for code density and branch size.
      
      This does pessimize MultiSource/Benchmarks/Ptrdist/yacr2, the
      benchmark cited as the reason for the change, however I've examined
      the code and it looks more like a case of gaming a particular
      branch than of being generally applicable.
      
      llvm-svn: 84803
      ff97acd8
  12. Oct 19, 2009
  13. Sep 11, 2009
  14. Sep 09, 2009
  15. Aug 26, 2009
  16. Aug 25, 2009
  17. Jun 16, 2009
  18. Jun 05, 2009
  19. Mar 25, 2009
  20. Mar 18, 2009
  21. Mar 17, 2009
    • Scott Michel's avatar
      CellSPU: · df52d3d4
      Scott Michel authored
      Revert inadvertent mis-fix of fneg.
      
      llvm-svn: 67084
      df52d3d4
    • Scott Michel's avatar
      CellSPU: · 839ad0a5
      Scott Michel authored
      - Fix fabs, fneg for f32 and f64.
      - Use BuildVectorSDNode.isConstantSplat, now that the functionality exists
      - Continue to improve i64 constant lowering. Lower certain special constants
        to the constant pool when they correspond to SPU's shufb instruction's
        special mask values. This avoids the overhead of performing a shuffle on a
        zero-filled vector just to get the special constant when the memory load
        suffices.
      
      llvm-svn: 67067
      839ad0a5
  22. Mar 16, 2009
    • Scott Michel's avatar
      CellSPU: · d1db1aba
      Scott Michel authored
      Incorporate Tilmann's 128-bit operation patch. Evidently, it gets the
      llvm-gcc bootstrap a bit further along.
      
      llvm-svn: 67048
      d1db1aba
  23. Jan 31, 2009
  24. Jan 26, 2009
    • Scott Michel's avatar
      CellSPU: · 9e3e4a92
      Scott Michel authored
      - Rename fcmp.ll test to fcmp32.ll, start adding new double tests to fcmp64.ll
      - Fix select_bits.ll test
      - Capitulate to the DAGCombiner and move i64 constant loads to instruction
        selection (SPUISelDAGtoDAG.cpp).
      
        <rant>DAGCombiner will insert all kinds of 64-bit optimizations after
        operation legalization occurs and now we have to do most of the work that
        instruction selection should be doing twice (once to determine if v2i64
        build_vector can be handled by SelectCode(), which then runs all of the
        predicates a second time to select the necessary instructions.) But,
        CellSPU is a good citizen.</rant>
      
      llvm-svn: 62990
      9e3e4a92
  25. Jan 21, 2009
    • Duncan Sands's avatar
      Don't rely on grep -w working. · 696f4a85
      Duncan Sands authored
      llvm-svn: 62682
      696f4a85
    • Scott Michel's avatar
      CellSPU: · ed7d79fc
      Scott Michel authored
      - Ensure that (operation) legalization emits proper FDIV libcall when needed.
      - Fix various bugs encountered during llvm-spu-gcc build, along with various
        cleanups.
      - Start supporting double precision comparisons for remaining libgcc2 build.
        Discovered interesting DAGCombiner feature, which is currently solved via
        custom lowering (64-bit constants are not legal on CellSPU, but DAGCombiner
        insists on inserting one anyway.)
      - Update README.
      
      llvm-svn: 62664
      ed7d79fc
  26. Jan 15, 2009
    • Rafael Espindola's avatar
      Add the private linkage. · 6de96a1b
      Rafael Espindola authored
      llvm-svn: 62279
      6de96a1b
    • Scott Michel's avatar
      - Convert remaining i64 custom lowering into custom instruction emission · a292fc6d
      Scott Michel authored
        sequences in SPUDAGToDAGISel.cpp and SPU64InstrInfo.td, killing custom
        DAG node types as needed.
      - i64 mul is now a legal instruction, but emits an instruction sequence
        that stretches tblgen and the imagination, as well as violating laws of
        several small countries and most southern US states (just kidding, but
        looking at a function with 80+ parameters is really weird and just plain
        wrong.)
      - Update tests as needed.
      
      llvm-svn: 62254
      a292fc6d
  27. Jan 08, 2009
  28. Jan 06, 2009
    • Scott Michel's avatar
      CellSPU: · 6887caf1
      Scott Michel authored
      - Fix bugs 3194, 3195: i128 load/stores produce correct code (although, we
        need to ensure that i128 is 16-byte aligned in real life), and 128 zero-
        extends are supported.
      - New td file: SPU128InstrInfo.td: this is where all new i128 support should
        be put in the future.
      - Continue to hammer on i64 operations and test cases; ensure that the only
        remaining problem will be i64 mul.
      
      llvm-svn: 61784
      6887caf1
  29. Jan 05, 2009
    • Scott Michel's avatar
      CellSPU: · 74f24951
      Scott Michel authored
      - Teach SPU64InstrInfo.td about the remaining signed comparisons, update tests
        accordingly.
      
      llvm-svn: 61672
      74f24951
    • Scott Michel's avatar
      CellSPU: · f87d41d8
      Scott Michel authored
      - Add an 8-bit operation test, which doesn't do much at this point.
      
      llvm-svn: 61665
      f87d41d8
    • Scott Michel's avatar
      CellSPU: · a6642404
      Scott Michel authored
      - Fix (brcond (setq ...)) bug, where BRNZ should have been used vice BRZ.
      - Kill unused/unnecessary nodes in SPUNodes.td
      - Beef out the i64operations.c test harness to use a lot of unaligned
        loads, test loops and LLVM loop/basic block optimizations; run the
        test harness successfully on real Cell hardware.
      
      llvm-svn: 61664
      a6642404
  30. Jan 03, 2009
    • Scott Michel's avatar
      CellSPU: · 6a1f6279
      Scott Michel authored
      - Remove custom lowering for BRCOND
      - Add remaining functionality for branches in SPUInstrInfo, such as branch
        condition reversal and load/store folding. Updated BrCond test to reflect
        branch reversal.
      
      llvm-svn: 61597
      6a1f6279
  31. Jan 01, 2009
    • Duncan Sands's avatar
      Fix PR3274: when promoting the condition of a BRCOND node, · 8feb694e
      Duncan Sands authored
      promote from i1 all the way up to the canonical SetCC type.
      In order to discover an appropriate type to use, pass
      MVT::Other to getSetCCResultType.  In order to be able to
      do this, change getSetCCResultType to take a type as an
      argument, not a value (this is also more logical).
      
      llvm-svn: 61542
      8feb694e
  32. Dec 31, 2008
Loading