Skip to content
  1. Aug 04, 2014
    • Chandler Carruth's avatar
      [x86] Implement more aggressive use of PACKUS chains for lowering common · 06e6f1ca
      Chandler Carruth authored
      patterns of v16i8 shuffles.
      
      This implements one of the more important FIXMEs for the SSE2 support in
      the new shuffle lowering. We now generate the optimal shuffle sequence
      for truncate-derived shuffles which show up essentially everywhere.
      
      Unfortunately, this exposes a weakness in other parts of the shuffle
      logic -- we can no longer form PSHUFB here. I'll add the necessary
      support for that and other things in a subsequent commit.
      
      llvm-svn: 214702
      06e6f1ca
    • Benjamin Kramer's avatar
      [clang-tidy] Make the named parameter check only warn on declarations if a definition is visible. · 610ba533
      Benjamin Kramer authored
      Summary:
      This allows us to copy the parameter name from the definition (as a comment)
      or insert /*unused*/ in both places.
      
      Reviewers: alexfh, klimek
      
      Subscribers: cfe-commits
      
      Differential Revision: http://reviews.llvm.org/D4772
      
      llvm-svn: 214701
      610ba533
    • Benjamin Kramer's avatar
      Update links to the gcc and java documentation that 404'd. · 2abde4f9
      Benjamin Kramer authored
      llvm-svn: 214700
      2abde4f9
    • David Majnemer's avatar
      AST: Fix the mangling for unqualified-blocks · 11d2427b
      David Majnemer authored
      CXXNameMangler::mangleUnqualifiedBlock believed that
      MangleContext::getBlockId returned something that used Itanium-style
      discriminator numbers.
      
      Discriminator numbers start their numberign from 1 and the first
      mangling that actually gets any sort of number mangled in is the second
      discriminator.
      
      However, Block IDs start from zero.  The logic for omitting the mangling
      number did a ' > 1' instead of a ' > 0' comparison; this could
      potentially cause mangling conflicts.
      
      llvm-svn: 214699
      11d2427b
    • David Majnemer's avatar
      AST: Propagate 'AlignIsRequired' though many levels of typedefs · 37bffb6f
      David Majnemer authored
      A typedef of a typedef should have AlignIsRequired if *either* typedef
      has an AlignAttr attached to it.
      
      llvm-svn: 214698
      37bffb6f
    • Kevin Qin's avatar
      Revert "r214669 - MachineCombiner Pass for selecting faster instruction" · f31ecf3f
      Kevin Qin authored
      This commit broke "make check" for several hours, so get it reverted.
      
      llvm-svn: 214697
      f31ecf3f
    • NAKAMURA Takumi's avatar
      MemoryBuffer: Don't use mmap when FileSize is multiple of 4k on Cygwin. · 56bc3419
      NAKAMURA Takumi authored
      On Cygwin, getpagesize() returns 64k(AllocationGranularity).
      
      In r214580, the size of X86GenInstrInfo.inc became 1499136.
      
      FIXME: We should reorganize again getPageSize() on Win32.
      MapFile allocates address along AllocationGranularity but view is mapped by physical page.
      
      llvm-svn: 214681
      56bc3419
    • Chandler Carruth's avatar
      [x86] Handle single input shuffles in the SSSE3 case more intelligently. · 37a18821
      Chandler Carruth authored
      I spent some time looking into a better or more principled way to handle
      this. For example, by detecting arbitrary "unneeded" ORs... But really,
      there wasn't any point. We just shouldn't build blatantly wrong code so
      late in the pipeline rather than adding more stages and logic later on
      to fix it. Avoiding this is just too simple.
      
      llvm-svn: 214680
      37a18821
    • Chandler Carruth's avatar
      [x86] Fix the test case added in r214670 and tweaked in r214674 further. · 7bbfd245
      Chandler Carruth authored
      Fundamentally, there isn't a really portable way to test the constant
      pool contents. Instead, pin this test to the bare-metal triple. This
      also makes it a 64-bit triple which allows us to only match a single
      constant pool rather than two. It can also just hard code the '.' prefix
      as the format should be stable now that it has a fixed triple. Finally,
      I've switched it to use CHECK-NEXT to be more precise in the instruction
      sequence expected and to use variables rather than hard coding decisions
      by the register allocator.
      
      llvm-svn: 214679
      7bbfd245
    • Richard Smith's avatar
      PR11778: Fix the rejects-valid half of this bug. We still produce the same · 077d083b
      Richard Smith authored
      poorly-worded warning for a case value that is not a possible value of the
      switched-on expression.
      
      llvm-svn: 214678
      077d083b
    • Peter Zotov's avatar
      [OCaml] Add Llvm.{string_of_const,const_element}. · 454b8560
      Peter Zotov authored
      llvm-svn: 214677
      454b8560
    • Peter Zotov's avatar
      [LLVM-C] Add LLVM{IsConstantString,GetAsString,GetElementAsConstant}. · f9aa882c
      Peter Zotov authored
      llvm-svn: 214676
      f9aa882c
    • Richard Smith's avatar
      Don't destroy MacroInfos if we find the macro definition is invalid; it'll get · 06f621d3
      Richard Smith authored
      destroyed on shutdown regardless. Fixes a double-delete.
      
      llvm-svn: 214675
      06f621d3
    • Sanjay Patel's avatar
      Account for possible leading '.' in label string. · 065cabf4
      Sanjay Patel authored
      llvm-svn: 214674
      065cabf4
    • Chandler Carruth's avatar
      [x86] Don't add nodes to the combined set (and prune subsequent · cde4eb56
      Chandler Carruth authored
      combines) until they are legal.
      
      Doing it the old way could, when the stars align *just* right, cause
      a node to get into the combine set prior to being legalized. Then, when
      the same node showed up as an operand to another node later on (but not
      so much later on that it had been deleted as dead) we would fail to add
      it back to the worklist thinking it had already been combined. This
      would in turn cause it to not be legalized. Fortunately, we can also
      walk the operands looking for uncombined (and thus potentially
      un-legalized) nodes late. It will still ensure that we walk all operands
      of all nodes and send all of them through both the legalizer without
      changes and the combiner at least once. (Which was the original goal of
      this).
      
      I have a test case for this bug, but it is terribly brittle. For
      example, it will stop finding the bug the moment I enable the new
      shuffle lowering. I don't yet have any test case that reliably exercises
      this bug, and it isn't clear that it will be possible to craft one. It
      is entirely possible that with the new shuffle lowering the two forms of
      doing this are precisely equivalent. That doesn't mean we shouldn't take
      the more conservative approach of insisting on things in the combined
      set having survived the legalizer.
      
      llvm-svn: 214673
      cde4eb56
    • Saleem Abdulrasool's avatar
      X86: silence warning (-Wparentheses) · 557023e3
      Saleem Abdulrasool authored
      GCC 4.8.2 points out the ambiguity in evaluation of the assertion condition:
      
      lib/Target/X86/X86FloatingPoint.cpp:949:49: warning: suggest parentheses around ‘&&’ within ‘||’ [-Wparentheses]
         assert(STReturns == 0 || isMask_32(STReturns) && N <= 2);
      
      llvm-svn: 214672
      557023e3
    • Saleem Abdulrasool's avatar
      CodeGen: silence a warning · befa2153
      Saleem Abdulrasool authored
      GCC 4.8.2 objects to the tautological condition in the assert as the unsigned
      value is guaranteed to be >= 0.  Simplify the assertion by dropping the
      tautological condition.
      
      llvm-svn: 214671
      befa2153
    • Sanjay Patel's avatar
      fix for PR20354 - Miscompile of fabs due to vectorization · 2ef67440
      Sanjay Patel authored
      This is intended to be the minimal change needed to fix PR20354 ( http://llvm.org/bugs/show_bug.cgi?id=20354 ). The check for a vector operation was wrong; we need to check that the fabs itself is not a vector operation.
      
      This patch will not generate the optimal code. A constant pool load and 'and' op will be generated instead of just returning a value that we can calculate in advance (as we do for the scalar case). I've put a 'TODO' comment for that here and expect to have that patch ready soon.
      
      There is a very similar optimization that we can do in visitFNEG, so I've put another 'TODO' there and expect to have another patch for that too.
      
      llvm-svn: 214670
      2ef67440
    • Gerolf Hoflehner's avatar
      MachineCombiner Pass for selecting faster instruction · 35ba4671
      Gerolf Hoflehner authored
       sequence -  AArch64 target support
      
       This patch turns off madd/msub generation in the DAGCombiner and generates
       them in the MachineCombiner instead. It replaces the original code sequence
       with the combined sequence when it is beneficial to do so.
      
       When there is no machine model support it always generates the madd/msub
       instruction. This is true also when the objective is to optimize for code
       size: when the combined sequence is shorter is always chosen and does not
       get evaluated.
      
       When there is a machine model the combined instruction sequence
       is evaluated for critical path and resource length using machine
       trace metrics and the original code sequence is replaced when it is
       determined to be faster.
      
       rdar://16319955
      
      llvm-svn: 214669
      35ba4671
  2. Aug 03, 2014
    • Justin Bogner's avatar
      Driver: Simplify a use of the path API · 6bcf724f
      Justin Bogner authored
      It's a bit more obvious what's going on if we use path::filename
      rather than decrementing an iterator here.
      
      llvm-svn: 214668
      6bcf724f
    • Jason Molenda's avatar
      Change ProcessGDBRemote::DidLaunchOrAttach to · 921c01b5
      Jason Molenda authored
      call Target::SetArchitecture instead of modifying a
      reference to the target's architecture so that the
      target logging can show that the arch has been changed.
      
      llvm-svn: 214667
      921c01b5
    • Gerolf Hoflehner's avatar
      MachineCombiner Pass for selecting faster instruction · 5e1207e5
      Gerolf Hoflehner authored
       sequence -  target independent framework
      
       When the DAGcombiner selects instruction sequences
       it could increase the critical path or resource len.
      
       For example, on arm64 there are multiply-accumulate instructions (madd,
       msub). If e.g. the equivalent  multiply-add sequence is not on the
       crictial path it makes sense to select it instead of  the combined,
       single accumulate instruction (madd/msub). The reason is that the
       conversion from add+mul to the madd could lengthen the critical path
       by the latency of the multiply.
      
       But the DAGCombiner would always combine and select the madd/msub
       instruction.
      
       This patch uses machine trace metrics to estimate critical path length
       and resource length of an original instruction sequence vs a combined
       instruction sequence and picks the faster code based on its estimates.
      
       This patch only commits the target independent framework that evaluates
       and selects code sequences. The machine instruction combiner is turned
       off for all targets and expected to evolve over time by gradually
       handling DAGCombiner pattern in the target specific code.
      
       This framework lays the groundwork for fixing
       rdar://16319955
      
      llvm-svn: 214666
      5e1207e5
    • Tobias Grosser's avatar
      Do allow negative offsets in the outermost array dimension · f57d63f9
      Tobias Grosser authored
      There is no needed for neither 1-dimensional nor higher dimensional arrays to
      require positive offsets in the outermost array dimension.
      
      We originally introduced this assumption with the support for delinearizing
      multi-dimensional arrays.
      
      llvm-svn: 214665
      f57d63f9
    • Saleem Abdulrasool's avatar
      MC: virtualise EmitWindowsUnwindTables · 4544c16e
      Saleem Abdulrasool authored
      This makes EmitWindowsUnwindTables a virtual function and lowers the
      implementation of the function to the X86WinCOFFStreamer.  This method is a
      target specific operation.  This enables making the behaviour target dependent
      by isolating it entirely to the target specific streamer.
      
      llvm-svn: 214664
      4544c16e
    • Saleem Abdulrasool's avatar
      MC: rename Win64EHFrameInfo to WinEH::FrameInfo · b3be7371
      Saleem Abdulrasool authored
      The frame information stored in this structure is driven by the requirements for
      Windows NT unwinding rather than Windows 64 specifically.  As a result, this
      type can be shared across multiple architectures (ARM, AXP, MIPS, PPC, SH).
      Rename this class in preparation for adding support for supporting unwinding
      information for Windows on ARM.
      
      Take the opportunity to constify the members as everything except the
      ChainedParent is read-only.  This required some adjustment to the label
      handling.
      
      llvm-svn: 214663
      b3be7371
    • Simon Atanasyan's avatar
      [Mips] Add the `mips64-linux-gnu` target to the test case to check `in128` · 3ab94b91
      Simon Atanasyan authored
      type handling.
      
      llvm-svn: 214662
      3ab94b91
    • Matt Arsenault's avatar
      R600/SI: Fix extra whitespace in asm str · 9215b17e
      Matt Arsenault authored
      This slipped in in r214467, so something like
      
      V_MOV_B32_e32  v0, ... is now printed with 2 spaces
      between the instruction name and first operand.
      
      llvm-svn: 214660
      9215b17e
    • Johannes Doerfert's avatar
      Fix the modifiable access creation · a63b2579
      Johannes Doerfert authored
        + Remove the class IslGenerator which duplicates the functionality of
          IslExprBuilder.
        + Use the IslExprBuilder to create code for memory access relations.
          + Also handle array types during access creation.
        + Enable scev codegen for one of the transformed memory access tests,
          thus access creation without canonical induction variables available.
        + Update one test case to the new output.
      
      llvm-svn: 214659
      a63b2579
    • Johannes Doerfert's avatar
      Allow the IslExprBuilder to generate access operations · ed878311
      Johannes Doerfert authored
      llvm-svn: 214658
      ed878311
    • Johannes Doerfert's avatar
      Update the jscop tests and port them to isl codegen. · b5d1c322
      Johannes Doerfert authored
        The updated tests use a different context than the old ones did.
        Other than that only their path and the code generation we use
        changed.
      
      llvm-svn: 214657
      b5d1c322
    • NAKAMURA Takumi's avatar
    • Manman Ren's avatar
      [SimplifyCFG] fix accessing deleted PHINodes in switch-to-table conversion. · 062f58d5
      Manman Ren authored
      When we have a covered lookup table, make sure we don't delete PHINodes that
      are cached in PHIs.
      
      rdar://17887153
      
      llvm-svn: 214642
      062f58d5
  3. Aug 02, 2014
Loading