Skip to content
  1. Oct 26, 2012
  2. Oct 25, 2012
    • Nadav Rotem's avatar
      Fix a crash in ValueTracking. Add support for vectors of pointers. · bb4cfb5e
      Nadav Rotem authored
      llvm-svn: 166726
      bb4cfb5e
    • Chad Rosier's avatar
      [ms-inline asm] Perform field lookups with the dot operator. · 240b7b96
      Chad Rosier authored
      llvm-svn: 166724
      240b7b96
    • Reed Kotler's avatar
      implement mips16 patterns for select nodes · 097556d6
      Reed Kotler authored
      llvm-svn: 166721
      097556d6
    • Hal Finkel's avatar
      Begin incorporating target information into BBVectorize. · cbf9365f
      Hal Finkel authored
      This is the first of several steps to incorporate information from the new
      TargetTransformInfo infrastructure into BBVectorize. Two things are done here:
      
       1. Target information is used to determine if it is profitable to fuse two
          instructions. This means that the cost of the vector operation must not
          be more expensive than the cost of the two original operations. Pairs that
          are not profitable are no longer considered (because current cost information
          is incomplete, for intrinsics for example, equal-cost pairs are still
          considered).
      
       2. The 'cost savings' computed for the profitability check are also used to
          rank the DAGs that represent the potential vectorization plans. Specifically,
          for nodes of non-trivial depth, the cost savings is used as the node
          weight.
      
      The next step will be to incorporate the shuffle costs into the DAG weighting;
      this will give the edges of the DAG weights as well. Once that is done, when
      target information is available, we should be able to dispense with the
      depth heuristic.
      
      llvm-svn: 166716
      cbf9365f
    • Nadav Rotem's avatar
    • Chad Rosier's avatar
      [ms-inline asm] Add support for creating AsmRewrites in the target specific · f0e87200
      Chad Rosier authored
      AsmParser logic.  To be used/tested in a subsequent commit.
      
      llvm-svn: 166714
      f0e87200
    • Joerg Sonnenberger's avatar
      Remove exception handling usage from tblgen. · 635debe8
      Joerg Sonnenberger authored
      Most places can use PrintFatalError as the unwinding mechanism was not
      used for anything other than printing the error. The single exception
      was CodeGenDAGPatterns.cpp, where intermediate errors during type
      resolution were ignored to simplify incremental platform development.
      This use is replaced by an error flag in TreePattern and bailout earlier
      in various places if it is set. 
      
      llvm-svn: 166712
      635debe8
    • Jakob Stoklund Olesen's avatar
      Also optimize large switch statements. · 977f41a1
      Jakob Stoklund Olesen authored
      The isValueEqualityComparison() guard at the top of SimplifySwitch()
      only applies to some of the possible transformations.
      
      The newer transformations work just fine on large switches, and the
      check on predecessor count is nonsensical.
      
      llvm-svn: 166710
      977f41a1
    • Nadav Rotem's avatar
      Minor cleanups. · 8b749b23
      Nadav Rotem authored
      llvm-svn: 166706
      8b749b23
    • Chad Rosier's avatar
      911c1f38
    • Joerg Sonnenberger's avatar
      In preparation for removing exception handling in tablegen, add · 356f797d
      Joerg Sonnenberger authored
      PrintFatalError, which combines PrintError with exit(1).
      
      llvm-svn: 166690
      356f797d
    • Benjamin Kramer's avatar
      DependenceAnalysis: Push #includes down into the implementation. · 71a3512d
      Benjamin Kramer authored
      llvm-svn: 166688
      71a3512d
    • Adhemerval Zanella's avatar
      This patch fixes the MC object emission of 'nop' for external function calls · 1be10dc7
      Adhemerval Zanella authored
      and also fixes the R_PPC64_TOC16 and R_PPC64_TOC16_DS relocation offset.
      The 'nop' is needed so a restore TOC instruction (ld r2,40(r1)) can be placed
      by the linker to correct restore the TOC of previous function.
      
      Current code has two issues: it defines in PPCInstr64Bit.td file a LDinto_toc
      and LDtoc_restore as a DSForm_1 with DS_RA=0 where it should be
      DS=2 (the 8 bytes displacement of the TOC saving). It also wrongly emits a
      MC intruction using an uint32_t value while the PPC::BL8_NOP_ELF
      and PPC::BLA8_NOP_ELF are both uint64_t (because of the following 'nop').
      
      This patch corrects the remaining ExecutionEngine using MCJIT:
      
      ExecutionEngine/2002-12-16-ArgTest.ll
      ExecutionEngine/2003-05-07-ArgumentTest.ll
      ExecutionEngine/2005-12-02-TailCallBug.ll
      ExecutionEngine/hello.ll
      ExecutionEngine/hello2.ll
      ExecutionEngine/test-call.ll
      
      llvm-svn: 166682
      1be10dc7
    • Bill Schmidt's avatar
      This patch addresses a PPC64 ELF issue with passing parameters consisting of · 6ed3b99f
      Bill Schmidt authored
      structs having size 3, 5, 6, or 7.  Such a struct must be passed and received
      as right-justified within its register or memory slot.  The problem is only
      present for structs that are passed in registers.
      
      Previously, as part of a patch handling all structs of size less than 8, I
      added logic to rotate the incoming register so that the struct was left-
      justified prior to storing the whole register.  This was incorrect because
      the address of the parameter had already been adjusted earlier to point to
      the right-adjusted value in the storage slot.  Essentially I had accidentally
      accounted for the right-adjustment twice.
      
      In this patch, I removed the incorrect logic and reorganized the code to make
      the flow clearer.
      
      The removal of the rotates changes the expected code generation, so test case
      structsinregs.ll has been modified to reflect this.  I also added a new test
      case, jaggedstructs.ll, to demonstrate that structs of these sizes can now
      be properly received and passed.
      
      I've built and tested the code on powerpc64-unknown-linux-gnu with no new
      regressions.  I also ran the GCC compatibility test suite and verified that
      earlier problems with these structs are now resolved, with no new regressions.
      
      llvm-svn: 166680
      6ed3b99f
    • Adhemerval Zanella's avatar
      PowerPC: Initial support for PowerPC64 MCJIT · 5fc11b35
      Adhemerval Zanella authored
      This patch adds initial support for MCJIT for PPC64-elf-abi. The TOC
      relocation and ODP handling is implemented.
      
      It fixes the following ExecutionEngine testcases:
      
      ExecutionEngine/2003-01-04-ArgumentBug.ll
      ExecutionEngine/2003-01-04-LoopTest.ll
      ExecutionEngine/2003-01-04-PhiTest.ll
      ExecutionEngine/2003-01-09-SARTest.ll
      ExecutionEngine/2003-01-10-FUCOM.ll
      ExecutionEngine/2003-01-15-AlignmentTest.ll
      ExecutionEngine/2003-05-11-PHIRegAllocBug.ll
      ExecutionEngine/2003-06-04-bzip2-bug.ll
      ExecutionEngine/2003-06-05-PHIBug.ll
      ExecutionEngine/2003-08-15-AllocaAssertion.ll
      ExecutionEngine/2003-08-21-EnvironmentTest.ll
      ExecutionEngine/2003-08-23-RegisterAllocatePhysReg.ll
      ExecutionEngine/2003-10-18-PHINode-ConstantExpr-CondCode-Failure.ll
      ExecutionEngine/simplesttest.ll
      ExecutionEngine/simpletest.ll
      ExecutionEngine/stubs.ll
      ExecutionEngine/test-arith.ll
      ExecutionEngine/test-branch.ll
      ExecutionEngine/test-call-no-external-funcs.ll
      ExecutionEngine/test-cast.ll
      ExecutionEngine/test-common-symbols.ll
      ExecutionEngine/test-constantexpr.ll
      ExecutionEngine/test-fp-no-external-funcs.ll
      ExecutionEngine/test-fp.ll
      ExecutionEngine/test-global-init-nonzero.ll
      ExecutionEngine/test-global.ll
      ExecutionEngine/test-loadstore.ll
      ExecutionEngine/test-local.ll
      ExecutionEngine/test-logical.ll
      ExecutionEngine/test-loop.ll
      ExecutionEngine/test-phi.ll
      ExecutionEngine/test-ret.ll
      ExecutionEngine/test-return.ll
      ExecutionEngine/test-setcond-fp.ll
      ExecutionEngine/test-setcond-int.ll
      ExecutionEngine/test-shift.ll
      
      llvm-svn: 166678
      5fc11b35
    • Adhemerval Zanella's avatar
      Initial TOC support for PowerPC64 object creation · f2aceda8
      Adhemerval Zanella authored
      This patch adds initial PPC64 TOC MC object creation using the small mcmodel
      (a single 64K TOC) adding the some TOC relocations (R_PPC64_TOC,
      R_PPC64_TOC16, and R_PPC64_TOC16DS).
      
      The addition of 'undefinedExplicitRelSym' hook on 'MCELFObjectTargetWriter'
      is meant to avoid the creation of an unreferenced ".TOC." symbol (used in
      the .odp creation) as well to set the R_PPC64_TOC relocation target as the
      temporary ".TOC." symbol. On PPC64 ABI, the R_PPC64_TOC relocation should
      not point to any symbol.
      
      llvm-svn: 166677
      f2aceda8
Loading