Skip to content
  1. Jan 17, 2008
    • Chris Lattner's avatar
      * Introduce a new SelectionDAG::getIntPtrConstant method · 72733e57
      Chris Lattner authored
        and switch various codegen pieces and the X86 backend over
        to using it.
      
      * Add some comments to SelectionDAGNodes.h
      
      * Introduce a second argument to FP_ROUND, which indicates
        whether the FP_ROUND changes the value of its input. If
        not it is safe to xform things like fp_extend(fp_round(x)) -> x.
      
      llvm-svn: 46125
      72733e57
  2. Jan 16, 2008
  3. Jan 15, 2008
  4. Jan 13, 2008
  5. Jan 12, 2008
  6. Jan 11, 2008
    • Arnold Schwaighofer's avatar
      hrm - correct spelling. · 06da9e2d
      Arnold Schwaighofer authored
      Actually were not riding any arguments. Sadly there is no semantic spell checker that is going to safe you from such a mistake.
      
      llvm-svn: 45868
      06da9e2d
    • Arnold Schwaighofer's avatar
      Improve tail call optimized call's argument lowering. Before this · 6cf72fbb
      Arnold Schwaighofer authored
      commit all arguments where moved to the stack slot where they would
      reside on a normal function call before the lowering to the tail call
      stack slot. This was done to prevent arguments overwriting each other.
      Now only arguments sourcing from a FORMAL_ARGUMENTS node or a
      CopyFromReg node with virtual register (could also be a caller's
      argument) are lowered indirectly.
      
       --This line, and those below, will be ignored--
      
      M    X86/X86ISelLowering.cpp
      M    X86/README.txt
      
      llvm-svn: 45867
      6cf72fbb
    • Arnold Schwaighofer's avatar
      Correct a copy and paste error. · bf1816ea
      Arnold Schwaighofer authored
      llvm-svn: 45865
      bf1816ea
  7. Jan 10, 2008
  8. Jan 08, 2008
  9. Jan 05, 2008
  10. Jan 03, 2008
  11. Dec 31, 2007
    • Chris Lattner's avatar
      Rename SSARegMap -> MachineRegisterInfo in keeping with the idea · a10fff51
      Chris Lattner authored
      that "machine" classes are used to represent the current state of
      the code being compiled.  Given this expanded name, we can start 
      moving other stuff into it.  For now, move the UsedPhysRegs and
      LiveIn/LoveOuts vectors from MachineFunction into it.
      
      Update all the clients to match.
      
      This also reduces some needless #includes, such as MachineModuleInfo
      from MachineFunction.
      
      llvm-svn: 45467
      a10fff51
    • Chris Lattner's avatar
      Add new shorter predicates for testing machine operands for various types: · a5bb370a
      Chris Lattner authored
      e.g. MO.isMBB() instead of MO.isMachineBasicBlock().  I don't plan on 
      switching everything over, so new clients should just start using the 
      shorter names.
      
      Remove old long accessors, switching everything over to use the short
      accessor: getMachineBasicBlock() -> getMBB(), 
      getConstantPoolIndex() -> getIndex(), setMachineBasicBlock -> setMBB(), etc.
      
      llvm-svn: 45464
      a5bb370a
  12. Dec 29, 2007
  13. Dec 16, 2007
  14. Dec 15, 2007
  15. Dec 14, 2007
  16. Dec 12, 2007
  17. Dec 11, 2007
  18. Dec 07, 2007
  19. Dec 06, 2007
  20. Nov 27, 2007
    • Duncan Sands's avatar
      Fix PR1146: parameter attributes are longer part of · ad0ea2d4
      Duncan Sands authored
      the function type, instead they belong to functions
      and function calls.  This is an updated and slightly
      corrected version of Reid Spencer's original patch.
      The only known problem is that auto-upgrading of
      bitcode files doesn't seem to work properly (see
      test/Bitcode/AutoUpgradeIntrinsics.ll).  Hopefully
      a bitcode guru (who might that be? :) ) will fix it.
      
      llvm-svn: 44359
      ad0ea2d4
  21. Nov 25, 2007
    • Chris Lattner's avatar
      Fix a long standing deficiency in the X86 backend: we would · 5728bdd4
      Chris Lattner authored
      sometimes emit "zero" and "all one" vectors multiple times,
      for example:
      
      _test2:
      	pcmpeqd	%mm0, %mm0
      	movq	%mm0, _M1
      	pcmpeqd	%mm0, %mm0
      	movq	%mm0, _M2
      	ret
      
      instead of:
      
      _test2:
      	pcmpeqd	%mm0, %mm0
      	movq	%mm0, _M1
      	movq	%mm0, _M2
      	ret
      
      This patch fixes this by always arranging for zero/one vectors
      to be defined as v4i32 or v2i32 (SSE/MMX) instead of letting them be
      any random type.  This ensures they get trivially CSE'd on the dag.
      This fix is also important for LegalizeDAGTypes, as it gets unhappy
      when the x86 backend wants BUILD_VECTOR(i64 0) to be legal even when
      'i64' isn't legal.
      
      This patch makes the following changes:
      
      1) X86TargetLowering::LowerBUILD_VECTOR now lowers 0/1 vectors into
         their canonical types.
      2) The now-dead patterns are removed from the SSE/MMX .td files.
      3) All the patterns in the .td file that referred to immAllOnesV or
         immAllZerosV in the wrong form now use *_bc to match them with a
         bitcast wrapped around them.
      4) X86DAGToDAGISel::SelectScalarSSELoad is generalized to handle 
         bitcast'd zero vectors, which simplifies the code actually.
      5) getShuffleVectorZeroOrUndef is updated to generate a shuffle that
         is legal, instead of generating one that is illegal and expecting
         a later legalize pass to clean it up.
      6) isZeroShuffle is generalized to handle bitcast of zeros.
      7) several other minor tweaks.
      
      This patch is definite goodness, but has the potential to cause random
      code quality regressions.  Please be on the lookout for these and let 
      me know if they happen.
      
      llvm-svn: 44310
      5728bdd4
Loading