Skip to content
  1. Dec 04, 2008
    • Scott Michel's avatar
      CellSPU: · 40f54d22
      Scott Michel authored
      - First patch from Nehal Desai, a new contributor at Aerospace. Nehal's patch
        fixes sign/zero/any-extending loads for integers and floating point. Example
        code, compiled w/o debugging or optimization where he first noticed the bug:
      
        int main(void) {
          float a = 99.0;
          printf("%d\n", a);
          return 0;
        }
      
        Verified that this code actually works on a Cell SPU.
      
      Changes by Scott Michel:
      - Fix bug in the value type list constructed by SPUISD::LDRESULT to include
        both the load result's result and chain, not just the chain alone.
      - Simplify LowerLOAD and remove extraneous and unnecessary chains.
      - Remove unused SPUISD pseudo instructions.
      
      llvm-svn: 60526
      40f54d22
  2. Dec 02, 2008
    • Scott Michel's avatar
      CellSPU: · 7364025f
      Scott Michel authored
      - Incorporate Tilmann Scheller's ISD::TRUNCATE custom lowering patch
      - Update SPU calling convention info, even if it's not used yet (but can be
        at some point or another)
      - Ensure that any-extended f32 loads are custom lowered, especially when
        they're promoted for use in printf.
      
      llvm-svn: 60438
      7364025f
  3. Dec 01, 2008
    • Scott Michel's avatar
      CellSPU: · 08a4e204
      Scott Michel authored
      - Fix v2[if]64 vector insertion code before IBM files a bug report.
      - Ensure that zero (0) offsets relative to $sp don't trip an assert
        (add $sp, 0 gets legalized to $sp alone, tripping an assert)
      - Shuffle masks passed to SPUISD::SHUFB are now v16i8 or v4i32
      
      llvm-svn: 60358
      08a4e204
    • Duncan Sands's avatar
      There are no longer any places that require a · 3d960941
      Duncan Sands authored
      MERGE_VALUES node with only one operand, so get
      rid of special code that only existed to handle
      that possibility.
      
      llvm-svn: 60349
      3d960941
    • Duncan Sands's avatar
      Change the interface to the type legalization method · 6ed40141
      Duncan Sands authored
      ReplaceNodeResults: rather than returning a node which
      must have the same number of results as the original
      node (which means mucking around with MERGE_VALUES,
      and which is also easy to get wrong since SelectionDAG
      folding may mean you don't get the node you expect),
      return the results in a vector.
      
      llvm-svn: 60348
      6ed40141
  4. Nov 25, 2008
  5. Nov 24, 2008
    • Scott Michel's avatar
      CellSPU: · 2e5df906
      Scott Michel authored
      (a) Slight rethink on i64 zero/sign/any extend code - use a shuffle to
          directly zero-extend i32 to i64, but use rotates and shifts for
          sign extension. Also ensure unified register consistency.
      (b) Add new test harness for i64 operations: i64ops.ll
      
      llvm-svn: 59970
      2e5df906
    • Scott Michel's avatar
      CellSPU: · efc8c7a2
      Scott Michel authored
      (a) Improve the extract element code: there's no need to do gymnastics with
          rotates into the preferred slot if a shuffle will do the same thing.
      (b) Rename a couple of SPUISD pseudo-instructions for readability and better
          semantic correspondence.
      (c) Fix i64 sign/any/zero extension lowering.
      
      llvm-svn: 59965
      efc8c7a2
  6. Nov 23, 2008
  7. Nov 21, 2008
    • Scott Michel's avatar
      CellSPU: · c6918c1f
      Scott Michel authored
      (a) Fix bgs 3052, 3057
      (b) Incorporate Duncan's suggestions re: i1 promotion
      (c) Indentation updates.
      
      llvm-svn: 59790
      c6918c1f
  8. Nov 20, 2008
  9. Nov 19, 2008
  10. Nov 11, 2008
  11. Nov 05, 2008
  12. Oct 30, 2008
  13. 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
  14. Oct 14, 2008
  15. Oct 12, 2008
  16. Sep 26, 2008
  17. Sep 24, 2008
  18. Sep 22, 2008
  19. Sep 16, 2008
  20. Sep 13, 2008
    • Dan Gohman's avatar
      Define CallSDNode, an SDNode subclass for use with ISD::CALL. · d3fe174c
      Dan Gohman authored
      Currently it just holds the calling convention and flags
      for isVarArgs and isTailCall.
      
      And it has several utility methods, which eliminate magic
      5+2*i and similar index computations in several places.
      
      CallSDNodes are not CSE'd. Teach UpdateNodeOperands to handle
      nodes that are not CSE'd gracefully.
      
      llvm-svn: 56183
      d3fe174c
  21. Sep 12, 2008
  22. Sep 04, 2008
  23. Aug 31, 2008
  24. Aug 28, 2008
  25. Aug 27, 2008
  26. Jul 29, 2008
  27. Jul 27, 2008
  28. Jul 16, 2008
  29. Jul 02, 2008
    • Duncan Sands's avatar
      Add a new getMergeValues method that does not need · 739a0548
      Duncan Sands authored
      to be passed the list of value types, and use this
      where appropriate.  Inappropriate places are where
      the value type list is already known and may be
      long, in which case the existing method is more
      efficient.
      
      llvm-svn: 53035
      739a0548
Loading