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
    • 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
      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
    • David Greene's avatar
      Fix Name Access · 3a20f5a6
      David Greene authored
      Get the Record name by string explicitly to avoid potential asserts.
      
      llvm-svn: 142514
      3a20f5a6
    • David Greene's avatar
      Disambiguate Numbers and Identifiers · 5c9fa026
      David Greene authored
      Use lookahead to determine whether a number is really a number or is
      part of something forming an identifier.  This won't come into play
      until the paste operator is recognized as a unique token.
      
      llvm-svn: 142513
      5c9fa026
    • David Greene's avatar
      Add Peek · 9ba42085
      David Greene authored
      Add a peek function to let the Lexer look at a character arbitrarily
      far ahead in the stream without consuming anything.  We need this to
      disambiguate numbers and operands of a paste operation.  For example:
      
      def foo#8i
      
      Without lookahead the lexer will treat '8' as a number rather than as
      part of a string to be pasted to form an identifier.
      
      llvm-svn: 142512
      9ba42085
    • David Greene's avatar
      Resolve Record Names · 9effff28
      David Greene authored
      When resolving Record values, be sure to update the Record name as it
      may contain references to the value.
      
      llvm-svn: 142511
      9effff28
    • David Greene's avatar
      Allow Names Changes on Unregistered Records · f651a2a5
      David Greene authored
      Add Record names to be changed even on Records that aren't yet
      registered.  We need to be able to do this for paste functionality
      because we do not want to register def names before they are unique
      and that can only happen once all paste operations are done.  This
      change lets us update Record names formed by paste operations and
      register the result later.
      
      llvm-svn: 142510
      f651a2a5
    • David Greene's avatar
      Fix Name Access · 077d84e6
      David Greene authored
      Ask for the Record name as a string explicitly to avoid a possible assert.
      
      llvm-svn: 142506
      077d84e6
    • David Greene's avatar
      Fix Name Access · 98be78ae
      David Greene authored
      Ask for the Record name as a string explicitly to avoid a possible
      assert.
      
      llvm-svn: 142505
      98be78ae
    • David Greene's avatar
      Fix Name Access · 658a4b71
      David Greene authored
      Ask for the record name as a string explicitly to avoid a potential
      assert.
      
      llvm-svn: 142504
      658a4b71
    • David Greene's avatar
      Add Record Init · b77fc0d9
      David Greene authored
      Add an init function to be shared among Record constructors.
      
      llvm-svn: 142501
      b77fc0d9
    • David Greene's avatar
      Make Template Arg Names Inits · db10e691
      David Greene authored
      Allow template arg names to be Inits.  This is further work to
      implement paste as it allows template names to participate in paste
      operations.
      
      llvm-svn: 142500
      db10e691
    • David Greene's avatar
      Let SetValue Take and Init Name · 3ca42126
      David Greene authored
      Convert SetValue to take the value name as an Init.  This allows us to
      set values for variables whose names are not yet fully resolved.
      
      llvm-svn: 142499
      3ca42126
    • David Greene's avatar
      Add Utility to Scope Names · e714512c
      David Greene authored
      Add a couple of utility functions to take a variable name and qualify
      it with the namespace of the enclosing class and/or multiclass.  This
      is inpreparation for making template arg names first-class Inits.
      
      llvm-svn: 142498
      e714512c
    • David Greene's avatar
      Make VarInit Name an Init · 914adf0e
      David Greene authored
      Make the VarInit name an Init itself.  We need this to implement paste
      functionality so we can reference variables whose names are not yet
      completely resolved.
      
      llvm-svn: 142497
      914adf0e
Loading