Skip to content
  1. Oct 20, 2011
  2. Oct 19, 2011
    • Nadav Rotem's avatar
      Improve code generation for vselect on SSE2: · 8824472a
      Nadav Rotem authored
      When checking the availability of instructions using the TLI, a 'promoted'
      instruction IS available. It means that the value is bitcasted to another type
      for which there is an operation. The correct check for the availablity of an
      instruction is to check if it should be expanded.
      
      llvm-svn: 142542
      8824472a
    • Rafael Espindola's avatar
      Fix parsing of a line with only a # in it. · e0d09083
      Rafael Espindola authored
      llvm-svn: 142537
      e0d09083
    • David Blaikie's avatar
    • James Molloy's avatar
      Use literal pool loads instead of MOVW/MOVT for materializing global addresses... · 2d768fd3
      James Molloy authored
      Use literal pool loads instead of MOVW/MOVT for materializing global addresses when optimizing for size.
      
      On spec/gcc, this caused a codesize improvement of ~1.9% for ARM mode and ~4.9% for Thumb(2) mode. This is
      codesize including literal pools.
      
      The pools themselves doubled in size for ARM mode and quintupled for Thumb mode, leaving suggestion that there
      is still perhaps redundancy in LLVM's use of constant pools that could be decreased by sharing entries.
      
      Fixes PR11087.
      
      llvm-svn: 142530
      2d768fd3
    • David Greene's avatar
      Document Paste · fba251f2
      David Greene authored
      Document paste as a shorthand for !strconcat.
      
      llvm-svn: 142528
      fba251f2
    • David Greene's avatar
      Document NAME · e7c3ea97
      David Greene authored
      Document NAME as a special member of def records that should
      not be defined anywhere else.
      
      llvm-svn: 142527
      e7c3ea97
    • David Greene's avatar
      Add Paste Test · 13c8360c
      David Greene authored
      This tests TableGen's paste functionality.
      
      llvm-svn: 142526
      13c8360c
    • David Greene's avatar
      Implement Paste · 8e85b480
      David Greene authored
      Add a paste operator '#' to take two identifier-like strings and joint
      them.  Internally paste gets represented as a !strconcat() with any
      necessary casts to string added.
      
      This will be used to implement basic for loop functionality as in:
      
      for i = [0, 1, 2, 3, 4, 5, 6, 7] {
        def R#i : Register<...>
      }
      
      llvm-svn: 142525
      8e85b480
    • David Greene's avatar
      Process NAME · 8bf0d72f
      David Greene authored
      During multiclass def instantiation, replace NAME in any expressions
      with the value of the def or defm ID.
      
      llvm-svn: 142524
      8bf0d72f
    • David Greene's avatar
      Process Defm Prefix as Init · 5d5d88cc
      David Greene authored
      Parse and process a defm prefix as an Init expression.  This allows
      paste operations to create defm prefixes.
      
      llvm-svn: 142523
      5d5d88cc
    • David Greene's avatar
      Parse Def ID as Value · 2affd67b
      David Greene authored
      Allow def and defm IDs to be general values.  We need this for paste
      functionality.
      
      llvm-svn: 142522
      2affd67b
    • David Greene's avatar
      Don't Parse Object Body as a Name · b8a7c9d0
      David Greene authored
      Stop parsing a value if we are in name parsing mode and we see a left
      brace.  A left brace indicates the start of an object body when we are
      parsing a name.
      
      llvm-svn: 142521
      b8a7c9d0
    • David Greene's avatar
      Use Parse Mode · 232bd601
      David Greene authored
      Augment the value parser to respect the parse mode and not error if an
      ID doesn't map to an object and we are in name parsing mode.
      
      llvm-svn: 142520
      232bd601
    • David Greene's avatar
      Make ID Parsing More Flexible · d4263a6a
      David Greene authored
      Add a mode control to value and ID parsers.  The two modes are:
      
      - Parse a value.  Expect the parsed ID to map to an existing object.
      
      - Parse a name.  Expect the parsed ID to not map to any existing object.
      
      The first is used when parsing an identifier to be looked up, for
      example a record field or template argument.  The second is used for
      parsing declarations.  Paste functionality implies that declarations
      can contain arbitrary expressions so we need to be able to call into
      the general value parser to parse declarations with paste operators.
      So we need a way to parse a value-like thing without expecting that
      the result will map to some existing object.  This parse mode provides
      that.
      
      llvm-svn: 142519
      d4263a6a
    • David Greene's avatar
      Add NAME Member · d699161a
      David Greene authored
      Add a Value named "NAME" to each Record.  This will be set to the def or defm
      name when instantiating multiclasses.  This will replace the #NAME# processing
      hack once paste functionality is in place.
      
      llvm-svn: 142518
      d699161a
    • David Greene's avatar
      Fix Name Access · 7b6e6411
      David Greene authored
      Get the Record name as a string explicitly to avoid asserts.
      
      llvm-svn: 142517
      7b6e6411
    • David Greene's avatar
      Fix Name Access · 8eed9988
      David Greene authored
      Get the Record name as a string explicitly to avoid asserts.
      
      llvm-svn: 142516
      8eed9988
    • David Greene's avatar
      Fix Name Access · 07e055f9
      David Greene authored
      Get the Record name as a string explicitly to avoid asserts.
      
      llvm-svn: 142515
      07e055f9
Loading