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
    • David Greene's avatar
      Add Value Accessors · 28438acd
      David Greene authored
      Add accessors to get Record values by Init name.  This lets us look up
      Record values whose names are not yet fully resolved.  More work
      toward paste.
      
      llvm-svn: 142496
      28438acd
    • Chandler Carruth's avatar
      Generalize the reading of probability metadata to work for both branches · deac50cb
      Chandler Carruth authored
      and switches, with arbitrary numbers of successors. Still optimized for
      the common case of 2 successors for a conditional branch.
      
      Add a test case for switch metadata showing up in the BlockFrequencyInfo pass.
      
      llvm-svn: 142493
      deac50cb
    • Chandler Carruth's avatar
      Teach the BranchProbabilityInfo analysis pass to read any metadata · d27a7a94
      Chandler Carruth authored
      encoding of probabilities. In the absense of metadata, it continues to
      fall back on static heuristics.
      
      This allows __builtin_expect, after lowering through llvm.expect
      a branch instruction's metadata, to actually enter the branch
      probability model. This is one component of resolving PR2577.
      
      llvm-svn: 142492
      d27a7a94
    • Chandler Carruth's avatar
      Add pass printing support to BlockFrequencyInfo pass. The implementation · 343fad44
      Chandler Carruth authored
      layer already had support for printing the results of this analysis, but
      the wiring was missing.
      
      Now that printing the analysis works, actually bring some of this
      analysis, and the BranchProbabilityInfo analysis that it wraps, under
      test! I'm planning on fixing some bugs and doing other work here, so
      having a nice place to add regression tests and a way to observe the
      results is really useful.
      
      llvm-svn: 142491
      343fad44
    • Nadav Rotem's avatar
      Add support for the vector-widening of vselect and vector-setcc · 6652e22b
      Nadav Rotem authored
      llvm-svn: 142488
      6652e22b
    • Bill Wendling's avatar
    • Bill Wendling's avatar
      Remove some dead code. · 7c163455
      Bill Wendling authored
      llvm-svn: 142484
      7c163455
    • Craig Topper's avatar
      Rename PEXTR to PEXT. Add intrinsics for BMI instructions. · ef309c33
      Craig Topper authored
      llvm-svn: 142480
      ef309c33
    • Joe Abbey's avatar
      Adding dependencies to allow -DBUILD_SHARED_LIBS=true to complete. · c39977d0
      Joe Abbey authored
      llvm-svn: 142464
      c39977d0
    • Bill Wendling's avatar
      Emit the MOVT instruction only if the # LPads is > 64K. · 94f60018
      Bill Wendling authored
      llvm-svn: 142460
      94f60018
    • Bill Wendling's avatar
      For Thumb mode, we need to use a constant pool if the value is too large to be · 64e6bfc1
      Bill Wendling authored
      used with the CMP instruction.
      
      llvm-svn: 142458
      64e6bfc1
Loading