Skip to content
  1. Feb 18, 2015
    • Bradley Smith's avatar
      [ARM] Add missing M/R class CPUs · 26c9922a
      Bradley Smith authored
      Add some of the missing M and R class Cortex CPUs, namely:
      
      Cortex-M0+ (called Cortex-M0plus for GCC compatibility)
      Cortex-M1
      SC000
      SC300
      Cortex-R5
      
      llvm-svn: 229660
      26c9922a
    • Michael Kuperstein's avatar
      Fixes two issue in SimplifyDemandedBits of sext_in_reg: · af9befa6
      Michael Kuperstein authored
      1) We should not try to simplify if the sext has multiple uses
      2) There is no need to simplify is the source value is already sign-extended.
      
      Patch by Gil Rapaport <gil.rapaport@intel.com>
      
      Differential Revision: http://reviews.llvm.org/D6949
      
      llvm-svn: 229659
      af9befa6
    • Ulrich Weigand's avatar
      [SystemZ] Clean up warning · b7e5909a
      Ulrich Weigand authored
      Removed (unreachable) default case in switch to clean up warning:
      
      lib/Target/SystemZ/SystemZISelLowering.cpp:1974:5:
      error: default label in switch which covers all enumeration values
      [-Werror,-Wcovered-switch-default]
      
      llvm-svn: 229658
      b7e5909a
    • Dmitry Vyukov's avatar
      2a804370
    • Mohit K. Bhakkad's avatar
      [MSan][MIPS] Fix for some failing tests on MIPS64 · b40fed04
      Mohit K. Bhakkad authored
      Enabling internal ptrace for mips, which fixes some
      ptrace related tests. Along with this fixing some
      other failures.
      
      Reviewers: Reviewers: eugenis, kcc, samsonov
      
      Subscribers: dsanders, sagar, lldb-commits
      
      Differential Revision: http://reviews.llvm.org/D7332
      
      llvm-svn: 229656
      b40fed04
    • Chandler Carruth's avatar
      [x86] Refactor the bit shift code the same as I just did the byte shift · 48cc6c62
      Chandler Carruth authored
      code.
      
      While this didn't have the miscompile (it used MatchLeft consistently)
      it missed some cases where it could use right shifts. I've added a test
      case Craig Topper came up with to exercise the right shift matching.
      
      This code is really identical between the two. I'm going to merge them
      next so that we don't keep two copies of all of this logic.
      
      llvm-svn: 229655
      48cc6c62
    • Ulrich Weigand's avatar
      [SystemZ] Support all TLS access models - CodeGen part · 7db6918e
      Ulrich Weigand authored
      The current SystemZ back-end only supports the local-exec TLS access model.
      This patch adds all required CodeGen support for the other TLS models, which
      means in particular:
      
      - Expand initial-exec TLS accesses by loading TLS offsets from the GOT
        using @indntpoff relocations.
      
      - Expand general-dynamic and local-dynamic accesses by generating the
        appropriate calls to __tls_get_offset.  Note that this routine has
        a non-standard ABI and requires loading the GOT pointer into %r12,
        so the patch also adds support for the GLOBAL_OFFSET_TABLE ISD node.
      
      - Add a new platform-specific optimization pass to remove redundant
        __tls_get_offset calls in the local-dynamic model (modeled after
        the corresponding X86 pass).
      
      - Add test cases verifying all access models and optimizations.
      
      llvm-svn: 229654
      7db6918e
    • Igor Laevsky's avatar
      Testing commit access · b2b31cfc
      Igor Laevsky authored
      llvm-svn: 229653
      b2b31cfc
    • Ulrich Weigand's avatar
      [SystemZ] Support all TLS access models - MC part · 7bdd7c23
      Ulrich Weigand authored
      The current SystemZ back-end only supports the local-exec TLS access model.
      This patch adds all required MC support for the other TLS models, which
      means in particular:
      
      - Support additional relocation types for
        Initial-exec model: R_390_TLS_IEENT
        Local-dynamic-model: R_390_TLS_LDO32, R_390_TLS_LDO64,
                             R_390_TLS_LDM32, R_390_TLS_LDM64, R_390_TLS_LDCALL
        General-dynamic model: R_390_TLS_GD32, R_390_TLS_GD64, R_390_TLS_GDCALL
      
      - Support assembler syntax to generate additional relocations
        for use with __tls_get_offset calls:
          :tls_gdcall:
          :tls_ldcall:
      
      The patch also adds a new test to verify fixups and relocations,
      and removes the (already unused) FK_390_PLT16DBL/FK_390_PLT32DBL
      fixup kinds.
      
      llvm-svn: 229652
      7bdd7c23
    • NAKAMURA Takumi's avatar
      Reformat. · a250484c
      NAKAMURA Takumi authored
      llvm-svn: 229651
      a250484c
    • NAKAMURA Takumi's avatar
      Revert r229622: "[LoopAccesses] Make VectorizerParams global" and others.... · fa520c5f
      NAKAMURA Takumi authored
      Revert r229622: "[LoopAccesses] Make VectorizerParams global" and others. r229622 brought cyclic dependencies between Analysis and Vector.
      
        r229622: "[LoopAccesses] Make VectorizerParams global"
        r229623: "[LoopAccesses] Stash the report from the analysis rather than emitting it"
        r229624: "[LoopAccesses] Cache the result of canVectorizeMemory"
        r229626: "[LoopAccesses] Create the analysis pass"
        r229628: "[LoopAccesses] Change debug messages from LV to LAA"
        r229630: "[LoopAccesses] Add canAnalyzeLoop"
        r229631: "[LoopAccesses] Add missing const to APIs in VectorizationReport"
        r229632: "[LoopAccesses] Split out LoopAccessReport from VectorizerReport"
        r229633: "[LoopAccesses] Add -analyze support"
        r229634: "[LoopAccesses] Change LAA:getInfo to return a constant reference"
        r229638: "Analysis: fix buildbots"
      
      llvm-svn: 229650
      fa520c5f
    • Daniel Jasper's avatar
      NFC: Use range-based for loops and more consistent naming. · ed9eb720
      Daniel Jasper authored
      No functional changes intended.
      
      (I plan on doing some modifications to this function and would like to
      have as few unrelated changes as possible in the patch)
      
      llvm-svn: 229649
      ed9eb720
    • Daniel Jasper's avatar
      Remove experimental options to control machine block placement. · 4d7b0438
      Daniel Jasper authored
      This reverts r226034. Benchmarking with those flags has not revealed
      anything interesting.
      
      llvm-svn: 229648
      4d7b0438
    • Elena Demikhovsky's avatar
      Minor fix after 229495. · 6ddd9985
      Elena Demikhovsky authored
      Removed metadata and function attributes from the test.
      
      llvm-svn: 229647
      6ddd9985
    • Sanjoy Das's avatar
      Address post commit review on r229600. · c1065b9a
      Sanjoy Das authored
      llvm-svn: 229646
      c1065b9a
    • Elena Demikhovsky's avatar
      AVX-512: Added support for FP instructions with embedded rounding mode. · 714f23bc
      Elena Demikhovsky authored
      By Asaf Badouh <asaf.badouh@intel.com>
      
      llvm-svn: 229645
      714f23bc
    • David Majnemer's avatar
      Itanium ABI: Mangle <mangled-name> according to the ABI · 7ff7eb70
      David Majnemer authored
      We attempted to be compatible with GCC's buggy mangling for templates
      with a declaration for a template argument.
      
      However, we weren't completely successful in copying their bug in cases
      like:
        char foo;
        template <char &C> decltype(C) f() { return foo; };
        template char &f<foo>();
      
      Instead, just follow the ABI specification.  This fixes PR22621.
      
      llvm-svn: 229644
      7ff7eb70
    • Craig Topper's avatar
      [X86] Add another test case for the bug fixed in r229642. With the bug a... · 55ac4242
      Craig Topper authored
      [X86] Add another test case for the bug fixed in r229642. With the bug a vpsrldq was emitted instead of pslldq.
      
      llvm-svn: 229643
      55ac4242
    • Chandler Carruth's avatar
      [x86] Rewrite the byte shift detection to not use boolean variables to · 55553f52
      Chandler Carruth authored
      track state.
      
      I didn't like this in the code review because the pattern tends to be
      error prone, but I didn't see a clear way to rewrite it. Turns out that
      there were bugs here, I found them when fuzz testing our shuffle
      lowering for correctness on x86.
      
      The core of the problem is that we need to consistently test all our
      preconditions for the same directionality of shift and the same input
      vector. Instead, formulate this as two predicates (one doesn't depend on
      the input in any way), pass things like the directionality and input
      vector as inputs, and loop over the alternatives.
      
      This fixes a pattern of very rare miscompiles coming out of this code.
      Turned up roughly 4 out of every 1 million v8 shuffles in my fuzz
      testing. The new code is over half a million test runs with no failures
      yet. I've also fuzzed every other function in the lowering code with
      over 3.5 million test cases and not discovered any other miscompiles.
      
      llvm-svn: 229642
      55553f52
    • Craig Topper's avatar
      [X86] Remove AVX512 pslldq/psrldq shift intrinsics. They aren't implemented... · 1348f172
      Craig Topper authored
      [X86] Remove AVX512 pslldq/psrldq shift intrinsics. They aren't implemented yet and when they are they should be done with shuffles like SSE2 and AVX2.
      
      llvm-svn: 229641
      1348f172
    • Craig Topper's avatar
      [X86] Remove AVX2 and SSE2 pslldq and psrldq intrinsics. We can represent them... · b324e43a
      Craig Topper authored
      [X86] Remove AVX2 and SSE2 pslldq and psrldq intrinsics. We can represent them in IR with vector shuffles now. All their uses have been removed from clang in favor of shuffles.
      
      llvm-svn: 229640
      b324e43a
    • Nico Weber's avatar
      Port r163224 to C++. · 4486d61c
      Nico Weber authored
      The motivation is to fix a crash on
      
        struct S {} s;
        Foo S::~S() { s.~S(); }
      
      What was happening here was that S::~S() was marked as invalid since its
      return type is invalid, and as a consequence CheckFunctionDeclaration() wasn't
      called and S::~S() didn't get merged into S's implicit destructor.  This way,
      the class ended up with two destructors, which confused the overload printer
      when it suddenly had to print two possible destructors for `s.~S()`.
      
      In addition to fixing the crash, this change also seems to improve diagnostics
      in a few other places, see test changes.
      
      Crash found by SLi's bot.
      
      llvm-svn: 229639
      4486d61c
    • Saleem Abdulrasool's avatar
      Analysis: fix buildbots · 90b1d152
      Saleem Abdulrasool authored
      This should fix the compilation failure on the MSVC buildbots which find a
      std::make_unique and llvm::make_unique via ADL, resulting in ambiguity.
      
      llvm-svn: 229638
      90b1d152
    • Nico Weber's avatar
      Wrap to 80 columns. No behavior change. · 6b05f386
      Nico Weber authored
      llvm-svn: 229637
      6b05f386
    • Saleem Abdulrasool's avatar
      Sema: partially address post-commit comments · b47d606e
      Saleem Abdulrasool authored
      Un-parameterize the warning as there is exactly one attribute added in C++14.
      Partially addresses post-commit review comments from Richard Smith.
      
      llvm-svn: 229636
      b47d606e
    • Davide Italiano's avatar
      [ELF] Demangle: don't expose raw info when getter is available. · 6d86bb2f
      Davide Italiano authored
      Differential Revision:	D7693
      Reviewed by:	shankarke
      
      llvm-svn: 229635
      6d86bb2f
    • Adam Nemet's avatar
      [LoopAccesses] Change LAA:getInfo to return a constant reference · 85fd9f8d
      Adam Nemet authored
      As expected, this required a few more const-correctness fixes.
      
      Based on Hal's feedback on D7684.
      
      llvm-svn: 229634
      85fd9f8d
    • Adam Nemet's avatar
      [LoopAccesses] Add -analyze support · 75bc2d11
      Adam Nemet authored
      The LoopInfo in combination with depth_first is used to enumerate the
      loops.
      
      Right now -analyze is not yet complete.  It only prints the result of
      the analysis, the report and the run-time checks.  Printing the unsafe
      depedences will require a bit more reshuffling which I'd like to do in a
      follow-on to this patchset.  Unsafe dependences are currently checked
      via -debug-only=loop-accesses in the new test.
      
      This is part of the patchset that converts LoopAccessAnalysis into an
      actual analysis pass.
      
      llvm-svn: 229633
      75bc2d11
    • Adam Nemet's avatar
      [LoopAccesses] Split out LoopAccessReport from VectorizerReport · d7350dbb
      Adam Nemet authored
      The only difference between these two is that VectorizerReport adds a
      vectorizer-specific prefix to its messages.  When LAA is used in the
      vectorizer context the prefix is added when we promote the
      LoopAccessReport into a VectorizerReport via one of the constructors.
      
      This is part of the patchset that converts LoopAccessAnalysis into an
      actual analysis pass.
      
      llvm-svn: 229632
      d7350dbb
    • Adam Nemet's avatar
      [LoopAccesses] Add missing const to APIs in VectorizationReport · 8b12afbe
      Adam Nemet authored
      When I split out LoopAccessReport from this, I need to create some temps
      so constness becomes necessary.
      
      This is part of the patchset that converts LoopAccessAnalysis into an
      actual analysis pass.
      
      llvm-svn: 229631
      8b12afbe
    • Adam Nemet's avatar
      [LoopAccesses] Add canAnalyzeLoop · 450d417e
      Adam Nemet authored
      This allows the analysis to be attempted with any loop.  This feature
      will be used with -analysis.  (LV only requests the analysis on loops
      that have already satisfied these tests.)
      
      This is part of the patchset that converts LoopAccessAnalysis into an
      actual analysis pass.
      
      llvm-svn: 229630
      450d417e
    • Adam Nemet's avatar
      [LoopAccesses] Factor out RuntimePointerCheck::needsChecking · a8945b77
      Adam Nemet authored
      Will be used by the new RuntimePointerCheck::print.
      
      This is part of the patchset that converts LoopAccessAnalysis into an
      actual analysis pass.
      
      llvm-svn: 229629
      a8945b77
    • Adam Nemet's avatar
      [LoopAccesses] Change debug messages from LV to LAA · d0db4c13
      Adam Nemet authored
      Also add pass name as an argument to VectorizationReport::emitAnalysis.
      
      This is part of the patchset that converts LoopAccessAnalysis into an
      actual analysis pass.
      
      llvm-svn: 229628
      d0db4c13
    • Adam Nemet's avatar
      [LoopAccesses] Modify test to also check symbolic strides with memchecks · acd22e16
      Adam Nemet authored
      See the comment in the code.
      
      This is part of the patchset that converts LoopAccessAnalysis into an
      actual analysis pass.
      
      llvm-svn: 229627
      acd22e16
    • Adam Nemet's avatar
      [LoopAccesses] Create the analysis pass · d6b7e298
      Adam Nemet authored
      This is a function pass that runs the analysis on demand.  The analysis
      can be initiated by querying the loop access info via LAA::getInfo.  It
      either returns the cached info or runs the analysis.
      
      Symbolic stride information continues to reside outside of this analysis
      pass. We may move it inside later but it's not a priority for me right
      now.  The idea is that Loop Distribution won't support run-time stride
      checking at least initially.
      
      This means that when querying the analysis, symbolic stride information
      can be provided optionally.  Whether stride information is used can
      invalidate the cache entry and rerun the analysis.  Note that if the
      loop does not have any symbolic stride, the entry should be preserved
      across Loop Distribution and LV.
      
      Since currently the only user of the pass is LV, I just check that the
      symbolic stride information didn't change when using a cached result.
      
      On the LV side, LoopVectorizationLegality requests the info object
      corresponding to the loop from the analysis pass.  A large chunk of the
      diff is due to LAI becoming a pointer from a reference.
      
      A test will be added as part of the -analyze patch.
      
      Also tested that with AVX, we generate identical assembly output for the
      testsuite (including the external testsuite) before and after.
      
      This is part of the patchset that converts LoopAccessAnalysis into an
      actual analysis pass.
      
      llvm-svn: 229626
      d6b7e298
    • Adam Nemet's avatar
      [LoopAccesses] Make blockNeedsPredication static · 01abb2c3
      Adam Nemet authored
      blockNeedsPredication is in LoopAccess in order to share it with the
      vectorizer.  It's a utility needed by LoopAccess not strictly provided
      by it but it's a good place to share it.  This makes the function static
      so that it no longer required to create an LoopAccessInfo instance in
      order to access it from LV.
      
      This was actually causing problems because it would have required
      creating LAI much earlier that LV::canVectorizeMemory().
      
      This is part of the patchset that converts LoopAccessAnalysis into an
      actual analysis pass.
      
      llvm-svn: 229625
      01abb2c3
    • Adam Nemet's avatar
      [LoopAccesses] Cache the result of canVectorizeMemory · 3cf32ad6
      Adam Nemet authored
      LAA will be an on-demand analysis pass, so we need to cache the result
      of the analysis.  canVectorizeMemory is renamed to analyzeLoop which
      computes the result.  canVectorizeMemory becomes the query function for
      the cached result.
      
      This is part of the patchset that converts LoopAccessAnalysis into an
      actual analysis pass.
      
      llvm-svn: 229624
      3cf32ad6
    • Adam Nemet's avatar
      [LoopAccesses] Stash the report from the analysis rather than emitting it · 5474be2c
      Adam Nemet authored
      The transformation passes will query this and then emit them as part of
      their own report.  The currently only user LV is modified to do just
      that.
      
      This is part of the patchset that converts LoopAccessAnalysis into an
      actual analysis pass.
      
      llvm-svn: 229623
      5474be2c
    • Adam Nemet's avatar
      [LoopAccesses] Make VectorizerParams global · 4f3ede5a
      Adam Nemet authored
      As LAA is becoming a pass, we can no longer pass the params to its
      constructor.  This changes the command line flags to have external
      storage.  These can now be accessed both from LV and LAA.
      
      VectorizerParams is moved out of LoopAccessInfo in order to shorten the
      code to access it.
      
      This is part of the patchset that converts LoopAccessAnalysis into an
      actual analysis pass.
      
      llvm-svn: 229622
      4f3ede5a
    • Adam Nemet's avatar
      [LoopAccesses] Rename LoopAccessAnalysis to LoopAccessInfo · 30f16e16
      Adam Nemet authored
      LoopAccessAnalysis will be used as the name of the pass.
      
      This is part of the patchset that converts LoopAccessAnalysis into an
      actual analysis pass.
      
      llvm-svn: 229621
      30f16e16
Loading