Skip to content
  1. Dec 13, 2007
  2. Dec 12, 2007
  3. Dec 11, 2007
  4. Dec 10, 2007
  5. Dec 09, 2007
  6. Dec 08, 2007
  7. Dec 07, 2007
  8. Dec 06, 2007
  9. Dec 05, 2007
  10. Dec 02, 2007
  11. Dec 01, 2007
  12. Nov 27, 2007
  13. 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
  14. Nov 24, 2007
    • Chris Lattner's avatar
      remove bogus assertion that broke CodeGen/Generic/cast-fp.ll on x86 · f72ad162
      Chris Lattner authored
      among others.
      
      llvm-svn: 44302
      f72ad162
    • Chris Lattner's avatar
      Several changes: · f81d5886
      Chris Lattner authored
      1) Change the interface to TargetLowering::ExpandOperationResult to 
         take and return entire NODES that need a result expanded, not just
         the value.  This allows us to handle things like READCYCLECOUNTER,
         which returns two values.
      2) Implement (extremely limited) support in LegalizeDAG::ExpandOp for MERGE_VALUES.
      3) Reimplement custom lowering in LegalizeDAGTypes in terms of the new
         ExpandOperationResult.  This makes the result simpler and fully 
         general.
      4) Implement (fully general) expand support for MERGE_VALUES in LegalizeDAGTypes.
      5) Implement ExpandOperationResult support for ARM f64->i64 bitconvert and ARM
         i64 shifts, allowing them to work with LegalizeDAGTypes.
      6) Implement ExpandOperationResult support for X86 READCYCLECOUNTER and FP_TO_SINT,
         allowing them to work with LegalizeDAGTypes.
      
      LegalizeDAGTypes now passes several more X86 codegen tests when enabled and when
      type legalization in LegalizeDAG is ifdef'd out.
      
      llvm-svn: 44300
      f81d5886
    • Chris Lattner's avatar
      add a note · ab98c413
      Chris Lattner authored
      llvm-svn: 44299
      ab98c413
  15. Nov 21, 2007
  16. Nov 17, 2007
  17. Nov 16, 2007
  18. Nov 14, 2007
  19. Nov 13, 2007
Loading