Skip to content
  1. Apr 07, 2010
  2. Apr 05, 2010
    • Jakob Stoklund Olesen's avatar
      Replace TSFlagsFields and TSFlagsShifts with a simpler TSFlags field. · b93331f3
      Jakob Stoklund Olesen authored
      When a target instruction wants to set target-specific flags, it should simply
      set bits in the TSFlags bit vector defined in the Instruction TableGen class.
      
      This works well because TableGen resolves member references late:
      
      class I : Instruction {
        AddrMode AM = AddrModeNone;
        let TSFlags{3-0} = AM.Value;
      }
      
      let AM = AddrMode4 in
      def ADD : I;
      
      TSFlags gets the expected bits from AddrMode4 in this example.
      
      llvm-svn: 100384
      b93331f3
  3. Apr 04, 2010
  4. Apr 03, 2010
  5. Mar 29, 2010
    • Chris Lattner's avatar
      Switch pattern sorting predicate from stable sort -> sort, it · f91869b6
      Chris Lattner authored
      doesn't need to be stable because the patterns are fully ordered.
      
      Add a first level sort predicate that orders patterns in this
      order:  1) scalar integer operations 2) scalar floating point 
      3) vector int 4) vector float.  This is a trivial sort on their
      top level pattern type so it is nice and transitive.  The
      benefit of doing this is that simple integer operations are
      much more common than insane vector things and isel was trying
      to match the big complex vector patterns before the simple
      ones because the complexity of the vector operations was much
      higher.  Since they can't both match, it is best (for compile
      time) to try the simple integer ones first.
      
      This cuts down the # failed match attempts on real code by
      quite a bit, for example, this reduces backtracks on crafty
      (as a random example) from 228285 -> 188369.
      
      llvm-svn: 99797
      f91869b6
    • Chris Lattner's avatar
      revert 99795, as mentioned, it is disabled anyway. · 41a15141
      Chris Lattner authored
      llvm-svn: 99796
      41a15141
    • Chris Lattner's avatar
      Check in a (disabled) failed attempt to improve the ordering of · a7926015
      Chris Lattner authored
      patterns within the generated matcher.  This works great except
      that the sort fails because the relation defined isn't 
      transitive.  I have a much simpler solution coming next, but want
      to archive the code.
      
      llvm-svn: 99795
      a7926015
    • Chris Lattner's avatar
      print the complexity of the pattern being matched in the · 05925fe1
      Chris Lattner authored
      comment in the generated table.
      
      llvm-svn: 99794
      05925fe1
  6. Mar 28, 2010
  7. Mar 27, 2010
  8. Mar 25, 2010
    • Jakob Stoklund Olesen's avatar
      Teach TableGen to understand X.Y notation in the TSFlagsFields strings. · f8d7eda6
      Jakob Stoklund Olesen authored
      Remove much horribleness from X86InstrFormats as a result. Similar
      simplifications are probably possible for other targets.
      
      llvm-svn: 99539
      f8d7eda6
    • Chris Lattner's avatar
      Change tblgen to emit FOOISD opcode names as two · 552dddc5
      Chris Lattner authored
      bytes instead of one byte.  This is important because
      we're running up to too many opcodes to fit in a byte
      and it is aggrevated by FIRST_TARGET_MEMORY_OPCODE
      making the numbering sparse.  This just bites the
      bullet and bloats out the table.  In practice, this
      increases the size of the x86 isel table from 74.5K
      to 76K.  I think we'll cope :)
      
      This fixes rdar://7791648
      
      llvm-svn: 99494
      552dddc5
    • Jakob Stoklund Olesen's avatar
      Fix evil TableGen bug in template parameters with defaults. · 0e457622
      Jakob Stoklund Olesen authored
      If a TableGen class has an initializer expression containing an X.Y subexpression,
      AND X depends on template parameters,
      AND those template parameters have defaults,
      AND some parameters with defaults are beyond position 1,
      THEN parts of the initializer expression are evaluated prematurely with the default values when the first explicit template parameter is substituted, before the remaining explicit template parameters have been substituted.
      
      llvm-svn: 99492
      0e457622
  9. Mar 24, 2010
  10. Mar 22, 2010
  11. Mar 21, 2010
  12. Mar 20, 2010
Loading