Skip to content
  1. Nov 02, 2010
  2. Sep 21, 2010
    • Chris Lattner's avatar
      fix a long standing wart: all the ComplexPattern's were being · 0e023ea0
      Chris Lattner authored
      passed the root of the match, even though only a few patterns
      actually needed this (one in X86, several in ARM [which should
      be refactored anyway], and some in CellSPU that I don't feel 
      like detangling).   Instead of requiring all ComplexPatterns to
      take the dead root, have targets opt into getting the root by
      putting SDNPWantRoot on the ComplexPattern.
      
      llvm-svn: 114471
      0e023ea0
  3. May 25, 2010
  4. May 24, 2010
  5. Mar 19, 2010
  6. Mar 15, 2010
    • Chris Lattner's avatar
      Completely rewrite tblgen's type inference mechanism, · cabe037b
      Chris Lattner authored
      changing the primary datastructure from being a 
      "std::vector<unsigned char>" to being a new TypeSet class
      that actually has (gasp) invariants!
      
      This changes more things than I remember, but one major
      innovation here is that it enforces that named input 
      values agree in type with their output values.
      
      This also eliminates code that transparently assumes (in 
      some cases) that SDNodeXForm input/output types are the
      same, because this is wrong in many case.
      
      This also eliminates a bug which caused a lot of ambiguous
      patterns to go undetected, where a register class would
      sometimes pick the first possible type, causing an
      ambiguous pattern to get arbitrary results.
      
      With all the recent target changes, this causes no 
      functionality change!
      
      llvm-svn: 98534
      cabe037b
  7. Jan 04, 2010
  8. Nov 06, 2009
  9. Aug 11, 2009
  10. Jul 29, 2009
  11. Jul 03, 2009
  12. Jun 02, 2009
    • Dale Johannesen's avatar
      Revert 72707 and 72709, for the moment. · 5234d379
      Dale Johannesen authored
      llvm-svn: 72712
      5234d379
    • Dale Johannesen's avatar
      Make the implicit inputs and outputs of target-independent · 0b8ca792
      Dale Johannesen authored
      ADDC/ADDE use MVT::i1 (later, whatever it gets legalized to)
      instead of MVT::Flag.  Remove CARRY_FALSE in favor of 0; adjust
      all target-independent code to use this format.
      
      Most targets will still produce a Flag-setting target-dependent
      version when selection is done.  X86 is converted to use i32
      instead, which means TableGen needs to produce different code
      in xxxGenDAGISel.inc.  This keys off the new supportsHasI1 bit
      in xxxInstrInfo, currently set only for X86; in principle this
      is temporary and should go away when all other targets have
      been converted.  All relevant X86 instruction patterns are
      modified to represent setting and using EFLAGS explicitly.  The
      same can be done on other targets.
      
      The immediate behavior change is that an ADC/ADD pair are no
      longer tightly coupled in the X86 scheduler; they can be
      separated by instructions that don't clobber the flags (MOV).
      I will soon add some peephole optimizations based on using
      other instructions that set the flags to feed into ADC.
      
      llvm-svn: 72707
      0b8ca792
  13. Apr 13, 2009
  14. Aug 20, 2008
  15. Jun 25, 2008
  16. 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
  17. Apr 03, 2008
    • Dan Gohman's avatar
      Move instruction flag inference out of InstrInfoEmitter and into · fc4ad7de
      Dan Gohman authored
      CodeGenDAGPatterns, where it can be used in other tablegen backends.
      This allows the inference to be done for DAGISelEmitter so that it
      gets accurate mayLoad/mayStore/isSimpleLoad flags. 
      
      This brings MemOperand functionality back to where it was before
      48329. However, it doesn't solve the problem of anonymous patterns
      which expand to code that does loads or stores.
      
      llvm-svn: 49123
      fc4ad7de
  18. Jan 31, 2008
    • Christopher Lamb's avatar
      Allow ComplexExpressions in InstrInfo.td files to be slightly more... complex!... · 0592cf7e
      Christopher Lamb authored
      Allow ComplexExpressions in InstrInfo.td files to be slightly more... complex! ComplexExpressions can now have attributes which affect how TableGen interprets
      the pattern when generating matchin code. 
      
      The first (and currently, only) attribute causes the immediate parent node of the ComplexPattern operand to be passed into the matching code rather than the node at the root of the entire DAG containing the pattern.
      
      llvm-svn: 46606
      0592cf7e
  19. Jan 10, 2008
  20. Jan 06, 2008
    • Chris Lattner's avatar
      Change the 'isStore' inferrer to look for 'SDNPMayStore' · a348f55e
      Chris Lattner authored
      instead of "ISD::STORE".  This allows us to mark target-specific dag
      nodes as storing (such as ppc byteswap stores).  This allows us to remove
      more explicit isStore flags from the .td files.
      
      Finally, add a warning for when a .td file contains an explicit 
      isStore and tblgen is able to infer it.
      
      llvm-svn: 45654
      a348f55e
  21. Jan 05, 2008
  22. Dec 29, 2007
  23. Jul 13, 2007
  24. Jun 04, 2007
  25. Oct 11, 2006
  26. May 18, 2006
  27. May 17, 2006
  28. May 16, 2006
  29. Mar 28, 2006
  30. Jan 27, 2006
Loading