Skip to content
  1. Jul 05, 2008
    • Bruno Cardoso Lopes's avatar
      Several changes to Mips backend, experimental fp support being the most · c9c3f499
      Bruno Cardoso Lopes authored
      important.
      - Cleanup in the Subtarget info with addition of new features, not all support
        yet, but they allow the future inclusion of features easier. Among new features,
        we have : Arch family info (mips1, mips2, ...), ABI info (o32, eabi), 64-bit
        integer
        and float registers, allegrex vector FPU (VFPU), single float only support.
      - TargetMachine now detects allegrex core.
      - Added allegrex (Mips32r2) sext_inreg instructions.
      - *Added Float Point Instructions*, handling single float only, and
        aliased accesses for 32-bit FPUs.
      - Some cleanup in FP instruction formats and FP register classes.
      - Calling conventions improved to support mips 32-bit EABI.
      - Added Asm Printer support for fp cond codes.
      - Added support for sret copy to a return register.
      - EABI support added into LowerCALL and FORMAL_ARGS.
      - MipsFunctionInfo now keeps a virtual register per function to track the
        sret on function entry until function ret.
      - MipsInstrInfo FP support into methods (isMoveInstr, isLoadFromStackSlot, ...),
        FP cond codes mapping and initial FP Branch Analysis.
      - Two new Mips SDNode to handle fp branch and compare instructions : FPBrcond,
        FPCmp
      - MipsTargetLowering : handling different FP classes, Allegrex support, sret
        return copy, no homing location within EABI, non 32-bit stack objects
        arguments, and asm constraint for float.
      
      llvm-svn: 53146
      c9c3f499
  2. Jul 03, 2008
    • Evan Cheng's avatar
      - Remove calls to copyKillDeadInfo which is an N^2 function. Instead,... · 7d98a48f
      Evan Cheng authored
      - Remove calls to copyKillDeadInfo which is an N^2 function. Instead, propagate kill / dead markers as new instructions are constructed in foldMemoryOperand, convertToThressAddress, etc.
      - Also remove LiveVariables::instructionChanged, etc. Replace all calls with cheaper calls which update VarInfo kill list.
      
      llvm-svn: 53097
      7d98a48f
  3. Jul 01, 2008
    • Dan Gohman's avatar
      Split ISD::LABEL into ISD::DBG_LABEL and ISD::EH_LABEL, eliminating · fb19f940
      Dan Gohman authored
      the need for a flavor operand, and add a new SDNode subclass,
      LabelSDNode, for use with them to eliminate the need for a label id
      operand.
      
      Change instruction selection to let these label nodes through
      unmodified instead of creating copies of them. Teach the MachineInstr
      emitter how to emit a MachineInstr directly from an ISD label node.
      
      This avoids the need for allocating SDNodes for the label id and
      flavor value, as well as SDNodes for each of the post-isel label,
      label id, and label flavor.
      
      llvm-svn: 52943
      fb19f940
  4. Jun 30, 2008
    • Dan Gohman's avatar
      Rename ISD::LOCATION to ISD::DBG_STOPPOINT to better reflect its · 5c73a886
      Dan Gohman authored
      purpose, and give it a custom SDNode subclass so that it doesn't
      need to have line number, column number, filename string, and
      directory string, all existing as individual SDNodes to be the
      operands.
      
      This was the only user of ISD::STRING, StringSDNode, etc., so
      remove those and some associated code.
      
      This makes stop-points considerably easier to read in
      -view-legalize-dags output, and reduces overhead (creating new
      nodes and copying std::strings into them) on code containing
      debugging information.
      
      llvm-svn: 52924
      5c73a886
    • Evan Cheng's avatar
      Split scheduling from instruction selection. · 0711d68f
      Evan Cheng authored
      llvm-svn: 52923
      0711d68f
    • Duncan Sands's avatar
      Revert the SelectionDAG optimization that makes · 1ae6ef83
      Duncan Sands authored
      it impossible to create a MERGE_VALUES node with
      only one result: sometimes it is useful to be able
      to create a node with only one result out of one of
      the results of a node with more than one result, for
      example because the new node will eventually be used
      to replace a one-result node using ReplaceAllUsesWith,
      cf X86TargetLowering::ExpandFP_TO_SINT.  On the other
      hand, most users of MERGE_VALUES don't need this and
      for them the optimization was valuable.  So add a new
      utility method getMergeValues for creating MERGE_VALUES
      nodes which by default performs the optimization.
      Change almost everywhere to use getMergeValues (and
      tidy some stuff up at the same time).
      
      llvm-svn: 52893
      1ae6ef83
  5. Jun 19, 2008
  6. Jun 08, 2008
  7. Jun 07, 2008
  8. Jun 06, 2008
    • Duncan Sands's avatar
      Wrap MVT::ValueType in a struct to get type safety · 13237ac3
      Duncan Sands authored
      and better control the abstraction.  Rename the type
      to MVT.  To update out-of-tree patches, the main
      thing to do is to rename MVT::ValueType to MVT, and
      rewrite expressions like MVT::getSizeInBits(VT) in
      the form VT.getSizeInBits().  Use VT.getSimpleVT()
      to extract a MVT::SimpleValueType for use in switch
      statements (you will get an assert failure if VT is
      an extended value type - these shouldn't exist after
      type legalization).
      This results in a small speedup of codegen and no
      new testsuite failures (x86-64 linux).
      
      llvm-svn: 52044
      13237ac3
    • Bruno Cardoso Lopes's avatar
      Added custom isel for MUL, SDIVREM, UDIVREM, SMUL_LOHI and UMUL_LOHI nodes · 1a6e0d61
      Bruno Cardoso Lopes authored
      MUL is not anymore directly matched because its a pseudoinstruction.
      LogicI class fixed to zero-extend immediates. 
      
      llvm-svn: 52036
      1a6e0d61
    • Bruno Cardoso Lopes's avatar
      Added custom SELECT_CC lowering · 4eed3afd
      Bruno Cardoso Lopes authored
      Added special isel for ADDE,SUBE and new patterns to match SUBC,ADDC
      
      llvm-svn: 52031
      4eed3afd
  9. Jun 04, 2008
  10. Jun 01, 2008
  11. May 14, 2008
  12. May 13, 2008
  13. Apr 12, 2008
    • Dan Gohman's avatar
      Drop ISD::MEMSET, ISD::MEMMOVE, and ISD::MEMCPY, which are not Legal · 544ab2c5
      Dan Gohman authored
      on any current target and aren't optimized in DAGCombiner. Instead
      of using intermediate nodes, expand the operations, choosing between
      simple loads/stores, target-specific code, and library calls,
      immediately.
      
      Previously, the code to emit optimized code for these operations
      was only used at initial SelectionDAG construction time; now it is
      used at all times. This fixes some cases where rep;movs was being
      used for small copies where simple loads/stores would be better.
      
      This also cleans up code that checks for alignments less than 4;
      let the targets make that decision instead of doing it in
      target-independent code. This allows x86 to use rep;movs in
      low-alignment cases.
      
      Also, this fixes a bug that resulted in the use of rep;stos for
      memsets of 0 with non-constant memory size when the alignment was
      at least 4. It's better to use the library in this case, which
      can be significantly faster when the size is large.
      
      This also preserves more SourceValue information when memory
      intrinsics are lowered into simple loads/stores.
      
      llvm-svn: 49572
      544ab2c5
  14. Mar 31, 2008
  15. Mar 30, 2008
  16. Mar 25, 2008
  17. Mar 17, 2008
  18. Mar 15, 2008
  19. Mar 11, 2008
  20. Mar 10, 2008
  21. Mar 08, 2008
  22. Feb 28, 2008
  23. Feb 27, 2008
  24. Feb 26, 2008
  25. Feb 16, 2008
  26. Feb 10, 2008
  27. Feb 08, 2008
  28. Feb 05, 2008
  29. Feb 02, 2008
    • Evan Cheng's avatar
      Get rid of the annoying blank lines before labels. · 32e5347e
      Evan Cheng authored
      llvm-svn: 46667
      32e5347e
    • Evan Cheng's avatar
      SDIsel processes llvm.dbg.declare by recording the variable debug information... · efd142a9
      Evan Cheng authored
      SDIsel processes llvm.dbg.declare by recording the variable debug information descriptor and its corresponding stack frame index in MachineModuleInfo. This only works if the local variable is "homed" in the stack frame. It does not work for byval parameter, etc.
      Added ISD::DECLARE node type to represent llvm.dbg.declare intrinsic. Now the intrinsic calls are lowered into a SDNode and lives on through out the codegen passes.
      For now, since all the debugging information recording is done at isel time, when a ISD::DECLARE node is selected, it has the side effect of also recording the variable. This is a short term solution that should be fixed in time.
      
      llvm-svn: 46659
      efd142a9
  30. Jan 22, 2008
  31. Jan 17, 2008
    • Chris Lattner's avatar
      This commit changes: · 1ea55cf8
      Chris Lattner authored
      1. Legalize now always promotes truncstore of i1 to i8. 
      2. Remove patterns and gunk related to truncstore i1 from targets.
      3. Rename the StoreXAction stuff to TruncStoreAction in TLI.
      4. Make the TLI TruncStoreAction table a 2d table to handle from/to conversions.
      5. Mark a wide variety of invalid truncstores as such in various targets, e.g.
         X86 currently doesn't support truncstore of any of its integer types.
      6. Add legalize support for truncstores with invalid value input types.
      7. Add a dag combine transform to turn store(truncate) into truncstore when
         safe.
      
      The later allows us to compile CodeGen/X86/storetrunc-fp.ll to:
      
      _foo:
      	fldt	20(%esp)
      	fldt	4(%esp)
      	faddp	%st(1)
      	movl	36(%esp), %eax
      	fstps	(%eax)
      	ret
      
      instead of:
      
      _foo:
      	subl	$4, %esp
      	fldt	24(%esp)
      	fldt	8(%esp)
      	faddp	%st(1)
      	fstps	(%esp)
      	movl	40(%esp), %eax
      	movss	(%esp), %xmm0
      	movss	%xmm0, (%eax)
      	addl	$4, %esp
      	ret
      
      llvm-svn: 46140
      1ea55cf8
  32. Jan 07, 2008
Loading