Skip to content
  1. May 04, 2013
  2. May 03, 2013
    • Bill Wendling's avatar
      67758579
    • 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
    • Akira Hatanaka's avatar
      [mips] Split the DSP control register and define one register for each field of · e86bd4f6
      Akira Hatanaka authored
      its fields.
      
      This removes false dependencies between DSP instructions which access different
      fields of the the control register. Implicit register operands are added to
      instructions RDDSP and WRDSP after instruction selection, depending on the
      value of the mask operand.
      
      llvm-svn: 181041
      e86bd4f6
    • Nadav Rotem's avatar
      LoopVectorizer: Add support for if-conversion of PHINodes with 3+ incoming values. · 4ce060b3
      Nadav Rotem authored
      By supporting the vectorization of PHINodes with more than two incoming values we can increase the complexity of nested if statements.
      
      We can now vectorize this loop:
      
      int foo(int *A, int *B, int n) {
        for (int i=0; i < n; i++) {
          int x = 9;
          if (A[i] > B[i]) {
            if (A[i] > 19) {
              x = 3;
            } else if (B[i] < 4 ) {
              x = 4;
            } else {
              x = 5;
            }
          }
          A[i] = x;
        }
      }
      
      llvm-svn: 181037
      4ce060b3
    • Tom Stellard's avatar
      R600: Expand vector or, shl, srl, and xor nodes · 4489b85f
      Tom Stellard authored
      llvm-svn: 181035
      4489b85f
Loading