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. Nov 24, 2008
    • 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
  3. Nov 23, 2008
  4. Jun 03, 2008
  5. Apr 30, 2008
  6. Mar 06, 2008
  7. Feb 23, 2008
    • Scott Michel's avatar
      Merge current work back to tree to minimize diffs and drift. Major highlights · 7d5eaec6
      Scott Michel authored
      for CellSPU modifications:
      
      - SPUInstrInfo.td refactoring: "multiclass" really is _your_ friend.
      - Other improvements based on refactoring effort in SPUISelLowering.cpp,
        esp. in SPUISelLowering::PerformDAGCombine(), where zero amount shifts and
        rotates are now eliminiated, other scalar-to-vector-to-scalar silliness
        is also eliminated.
      - 64-bit operations are being implemented, _muldi3.c gcc runtime now
        compiles and generates the right code. More work still needs to be done.
      
      llvm-svn: 47532
      7d5eaec6
  8. Jan 30, 2008
    • Scott Michel's avatar
      More cleanups for CellSPU: · bb713ae0
      Scott Michel authored
      - Expand tabs... (poss 80-col violations, will get them later...)
      - Consolidate logic for SelectDFormAddr and SelectDForm2Addr into a single
        function, simplifying maintenance. Also reduced custom instruction
        generation for SPUvecinsert/INSERT_MASK.
      
      llvm-svn: 46544
      bb713ae0
  9. Jan 29, 2008
    • Scott Michel's avatar
      Overhaul Cell SPU's addressing mode internals so that there are now · ceae3bbf
      Scott Michel authored
      only two addressing mode nodes, SPUaform and SPUindirect (vice the
      three previous ones, SPUaform, SPUdform and SPUxform). This improves
      code somewhat because we now avoid using reg+reg addressing when
      it can be avoided. It also simplifies the address selection logic,
      which was the main point for doing this.
      
      Also, for various global variables that would be loaded using SPU's
      A-form addressing, prefer D-form offs[reg] addressing, keeping the
      base in a register if the variable is used more than once.
      
      llvm-svn: 46483
      ceae3bbf
  10. Jan 17, 2008
    • Scott Michel's avatar
      Forward progress: crtbegin.c now compiles successfully! · e4d3e3c0
      Scott Michel authored
      Fixed CellSPU's A-form (local store) address mode, so that all globals,
      externals, constant pool and jump table symbols are now wrapped within
      a SPUISD::AFormAddr pseudo-instruction. This now identifies all local
      store memory addresses, although it requires a bit of legerdemain during
      instruction selection to properly select loads to and stores from local
      store, properly generating "LQA" instructions.
      
      Also added mul_ops.ll test harness for exercising integer multiplication.
      
      llvm-svn: 46142
      e4d3e3c0
  11. Jan 15, 2008
  12. Jan 11, 2008
    • Scott Michel's avatar
      More CellSPU refinement and progress: · 8d5841ae
      Scott Michel authored
      - Cleaned up custom load/store logic, common code is now shared [see note
        below], cleaned up address modes
      
      - More test cases: various intrinsics, structure element access (load/store
        test), updated target data strings, indirect function calls.
      
      Note: This patch contains a refactoring of the LoadSDNode and StoreSDNode
      structures: they now share a common base class, LSBaseSDNode, that
      provides an interface to their common functionality. There is some hackery
      to access the proper operand depending on the derived class; otherwise,
      to do a proper job would require finding and rearranging the SDOperands
      sent to StoreSDNode's constructor. The current refactor errs on the
      side of being conservatively and backwardly compatible while providing
      functionality that reduces redundant code for targets where loads and
      stores are custom-lowered.
      
      llvm-svn: 45851
      8d5841ae
  13. Dec 29, 2007
  14. Dec 05, 2007
Loading