Skip to content
  1. May 05, 2013
  2. May 04, 2013
  3. May 03, 2013
    • Ulrich Weigand's avatar
      · b9d5d073
      Ulrich Weigand authored
      [PowerPC] Avoid using '$' in generated assembler code
      
      PowerPC assemblers are supposed to support a stand-alone '$' symbol
      as an alternative of '.' to refer to the current PC.  This does not
      work in the LLVM assembler parser yet.
      
      To avoid bootstrap failures when using the LLVM assembler as system
      assembler, this patch modifies the assembler source code generated
      by LLVM to avoid using '$' (and simply use '.' instead).
      
      llvm-svn: 181054
      b9d5d073
    • Ulrich Weigand's avatar
      · 2c3a219b
      Ulrich Weigand authored
      [PowerPC] Parse platform-specifc variant kinds in AsmParser
      
      This patch adds support for PowerPC platform-specific variant
      kinds in MCSymbolRefExpr::getVariantKindForName, and also
      adds a test case to verify they are translated to the appropriate
      fixup type.
      
      llvm-svn: 181053
      2c3a219b
    • Ulrich Weigand's avatar
      · 300b6875
      Ulrich Weigand authored
      [PowerPC] Add some Book II instructions to AsmParser
      
      This patch adds a couple of Book II instructions (isync, icbi) to the
      PowerPC assembler parser.  These are needed when bootstrapping clang
      with the integrated assembler forced on, because they are used in
      inline asm statements in the code base.
      
      The test case adds the full list of Book II storage control instructions,
      including associated extended mnemonics.  Again, those that are not yet
      supported as marked as FIXME.
      
      llvm-svn: 181052
      300b6875
    • Ulrich Weigand's avatar
      · d839490f
      Ulrich Weigand authored
      [PowerPC] Support extended mnemonics in AsmParser
      
      This patch adds infrastructure to support extended mnemonics in the
      PowerPC assembler parser.  It adds support specifically for those
      extended mnemonics that LLVM will itself generate.
      
      The test case lists *all* extended mnemonics according to the
      PowerPC ISA v2.06 Book I, but marks those not yet supported
      as FIXME.
      
      llvm-svn: 181051
      d839490f
    • Ulrich Weigand's avatar
      · 640192da
      Ulrich Weigand authored
      [PowerPC] Add assembler parser
      
      This adds assembler parser support to the PowerPC back end.
      
      The parser will run for any powerpc-*-* and powerpc64-*-* triples,
      but was tested only on 64-bit Linux.  The supported syntax is
      intended to be compatible with the GNU assembler.
      
      The parser does not yet support all PowerPC instructions, but
      it does support anything that is generated by LLVM itself.
      There is no support for testing restricted instruction sets yet,
      i.e. the parser will always accept any instructions it knows,
      no matter what feature flags are given.
      
      Instruction operands will be checked for validity and errors
      generated.  (Error handling in general could still be improved.)
      
      The patch adds a number of test cases to verify instruction
      and operand encodings.  The tests currently cover all instructions
      from the following PowerPC ISA v2.06 Book I facilities:
      Branch, Fixed-point, Floating-Point, and Vector. 
      Note that a number of these instructions are not yet supported
      by the back end; they are marked with FIXME.
      
      A number of follow-on check-ins will add extra features.  When
      they are all included, LLVM passes all tests (including bootstrap)
      when using clang -cc1as as the system assembler.
      
      llvm-svn: 181050
      640192da
    • Shuxin Yang's avatar
      Decompose GVN::processNonLocalLoad() (about 400 LOC) into smaller helper... · 637b9beb
      Shuxin Yang authored
      Decompose GVN::processNonLocalLoad() (about 400 LOC) into smaller helper functions. No function change. 
      
      This function consists of following steps:
         1. Collect dependent memory accesses.
         2. Analyze availability.
         3. Perform fully redundancy elimination, or 
         4. Perform PRE, depending on the availability
      
       Step 2, 3 and 4 are now moved to three helper routines.
      
      llvm-svn: 181047
      637b9beb
Loading