Skip to content
  1. Mar 28, 2010
  2. Mar 19, 2010
  3. Mar 15, 2010
  4. Mar 08, 2010
  5. Nov 24, 2009
  6. Nov 10, 2009
  7. Aug 05, 2009
    • Dan Gohman's avatar
      Major calling convention code refactoring. · f9bbcd1a
      Dan Gohman authored
      Instead of awkwardly encoding calling-convention information with ISD::CALL,
      ISD::FORMAL_ARGUMENTS, ISD::RET, and ISD::ARG_FLAGS nodes, TargetLowering
      provides three virtual functions for targets to override:
      LowerFormalArguments, LowerCall, and LowerRet, which replace the custom
      lowering done on the special nodes. They provide the same information, but
      in a more immediately usable format.
      
      This also reworks much of the target-independent tail call logic. The
      decision of whether or not to perform a tail call is now cleanly split
      between target-independent portions, and the target dependent portion
      in IsEligibleForTailCallOptimization.
      
      This also synchronizes all in-tree targets, to help enable future
      refactoring and feature work.
      
      llvm-svn: 78142
      f9bbcd1a
  8. 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
  9. 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
  10. Jan 26, 2009
    • Scott Michel's avatar
      CellSPU: · 49483188
      Scott Michel authored
      - Update DWARF debugging support.
      
      llvm-svn: 63059
      49483188
    • Scott Michel's avatar
      Untabify code. · 95b2a206
      Scott Michel authored
      llvm-svn: 62991
      95b2a206
    • 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
  11. Jan 21, 2009
    • 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
  12. Jan 15, 2009
    • 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
  13. Jan 07, 2009
    • Scott Michel's avatar
      CellSPU: · 494daa74
      Scott Michel authored
      - Add preliminary support for v2i32; load/store generates the right code but
        there's a lot work to be done to make this vector type operational.
      
      llvm-svn: 61829
      494daa74
  14. 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
  15. Jan 05, 2009
    • 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
  16. Dec 31, 2008
  17. Dec 29, 2008
    • Scott Michel's avatar
      - Various '#if 0' cleanups. · b8ee30de
      Scott Michel authored
      - Move v4i32, i32 mul into SPUInstrInfo.td, with a few more instruction
        cleanups there as well.
      - Make SMUL_LOHI, UMUL_LOHI competely illegal for Cell SPU, to better
        assist Chris to see the problem in bug 3101.
      
      llvm-svn: 61464
      b8ee30de
  18. Dec 27, 2008
    • Scott Michel's avatar
      - Remove Tilmann's custom truncate lowering: it completely hosed over · 8233527b
      Scott Michel authored
        DAGcombine's ability to find reasons to remove truncates when they were not
        needed. Consequently, the CellSPU backend would produce correct, but _really
        slow and horrible_, code.
      
        Replaced with instruction sequences that do the equivalent truncation in
        SPUInstrInfo.td.
      
      - Re-examine how unaligned loads and stores work. Generated unaligned
        load code has been tested on the CellSPU hardware; see the i32operations.c
        and i64operations.c in CodeGen/CellSPU/useful-harnesses.  (While they may be
        toy test code, it does prove that some real world code does compile
        correctly.)
      
      - Fix truncating stores in bug 3193 (note: unpack_df.ll will still make llc
        fault because i64 ult is not yet implemented.)
      
      - Added i64 eq and neq for setcc and select/setcc; started new instruction
        information file for them in SPU64InstrInfo.td. Additional i64 operations
        should be added to this file and not to SPUInstrInfo.td.
      
      llvm-svn: 61447
      8233527b
  19. Dec 10, 2008
    • Scott Michel's avatar
      CellSPU: · a2495508
      Scott Michel authored
      - Fix bug 3185, with misc other cleanups.
      - Needed to implement SPUInstrInfo::InsertBranch(). CAUTION: Not sure what
        gets or needs to get passed to InsertBranch() to insert a conditional
        branch. This will abort for now until a good test case shows up.
      
      llvm-svn: 60811
      a2495508
  20. Dec 04, 2008
    • Scott Michel's avatar
      CellSPU: Fix bug 3055 · ea3c49d4
      Scott Michel authored
      - Add v4f32, v2f64 to LowerVECTOR_SHUFFLE
      - Look for vector rotate in shuffle elements, generate a vector rotate
        instead of a full-blown shuffle when opportunity presents itself.
      - Generate larger test harness and fix a few interesting but obscure bugs.
      
      llvm-svn: 60552
      ea3c49d4
    • 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
  21. Dec 03, 2008
  22. 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
  23. 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
  24. Nov 25, 2008
  25. 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
  26. Nov 23, 2008
  27. 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
  28. Nov 11, 2008
  29. Oct 12, 2008
  30. Jul 22, 2008
  31. Jun 03, 2008
  32. Apr 30, 2008
  33. Mar 20, 2008
  34. Mar 10, 2008
  35. Mar 06, 2008
Loading