Skip to content
  1. Aug 28, 2018
  2. Aug 27, 2018
    • Zachary Turner's avatar
      Update the Visual Studio Integration from user feedback. · 522f9aec
      Zachary Turner authored
      This patch removes the MSBuild warnings about options that
      clang-cl ignores.  It also adds several additional fields to
      the LLVM Configuration options page.  The first is that it
      adds support for LLD!  To give the user flexibility though,
      we don't want to force LLD to always-on, and if we're not
      forcing LLD then we might as well not force clang-cl either.
      So we add options that can enable or disable lld, clang-cl,
      or any combination of the two.  Whenever one is disabled,
      it falls back to the Microsoft equivalent.
      
      Additionally, for each of clang-cl and lld-link, we add a new
      configuration setting that allows Additional Options to be
      passed for that specific tool only.  This is similar to the
      C/C++ > Command Line > Additional Options entry box, but
      it serves the use case where a user switches back and forth
      between the toolsets in their vcxproj, but where cl.exe
      won't accept some options that clang-cl will.  In this case
      you can pass those options in the clang-cl additional options
      and whenever clang-cl is disabled (or the other toolset is
      selected entirely), those options won't get passed at all.
      
      llvm-svn: 340780
      522f9aec
    • Roman Tereshin's avatar
      Revert "[SCEV][NFC] Check NoWrap flags before lexicographical comparison of SCEVs" · 02320eee
      Roman Tereshin authored
      This reverts r319889.
      
      Unfortunately, wrapping flags are not a part of SCEV's identity (they
      do not participate in computing a hash value or in equality
      comparisons) and in fact they could be assigned after the fact w/o
      rebuilding a SCEV.
      
      Grep for const_cast's to see quite a few of examples, apparently all
      for AddRec's at the moment.
      
      So, if 2 expressions get built in 2 slightly different ways: one with
      flags set in the beginning, the other with the flags attached later
      on, we may end up with 2 expressions which are exactly the same but
      have their operands swapped in one of the commutative N-ary
      expressions, and at least one of them will have "sorted by complexity"
      invariant broken.
      
      2 identical SCEV's won't compare equal by pointer comparison as they
      are supposed to.
      
      A real-world reproducer is added as a regression test: the issue
      described causes 2 identical SCEV expressions to have different order
      of operands and therefore compare not equal, which in its turn
      prevents LoadStoreVectorizer from vectorizing a pair of consecutive
      loads.
      
      On a larger example (the source of the test attached, which is a
      bugpoint) I have seen even weirder behavior: adding a constant to an
      existing SCEV changes the order of the existing terms, for instance,
      getAddExpr(1, ((A * B) + (C * D))) returns (1 + (C * D) + (A * B)).
      
      Differential Revision: https://reviews.llvm.org/D40645
      
      llvm-svn: 340777
      02320eee
    • Zachary Turner's avatar
      Set line endings to Windows on MSBuild files. · 4e039d64
      Zachary Turner authored
      Normally we force Unix line endings in the repository, but since these are Windows files which are consumed by Microsoft tools that we don't have the source of, we should probably err on the side of caution and force CRLF.
      
      llvm-svn: 340776
      4e039d64
    • Craig Topper's avatar
      [X86] Reverse the check prefixes in the test added in r340774. · 171c6fe6
      Craig Topper authored
      The 32-bit and 64-bit checks were reversed.
      
      llvm-svn: 340775
      171c6fe6
    • Craig Topper's avatar
      [X86] Add test cases to show current codegen of v2i32 div/rem in 32-bit and 64-bit modes · 76b18bee
      Craig Topper authored
      In particular this shows that we end up using libcalls in 32-bit mode even for division by constant.
      
      llvm-svn: 340774
      76b18bee
    • Sanjay Patel's avatar
      [x86] add tests for possibly avoiding scalar->vector move; NFC · 7b6df506
      Sanjay Patel authored
      llvm-svn: 340773
      7b6df506
    • Andrea Di Biagio's avatar
      [llvm-mca] Remove unused include. NFC · 1a87a80d
      Andrea Di Biagio authored
      llvm-svn: 340768
      1a87a80d
    • Matt Arsenault's avatar
      DAG: Check transformed type for forming fminnum/fmaxnum from vselect · cea7c696
      Matt Arsenault authored
      Follow up to r340655 to fix vector types which are split.
      
      llvm-svn: 340766
      cea7c696
    • Matt Arsenault's avatar
      MachineVerifier: Fix assert on implicit virtreg use · 9eb3dda0
      Matt Arsenault authored
      If the liveness of a physical register was invalid, this
      was attempting to iterate the subregisters of all register
      uses of the instruction, which would assert when it
      encountered an implicit virtual register operand.
      
      llvm-svn: 340763
      9eb3dda0
    • Matt Arsenault's avatar
      LangRef: Clarify expected sNaN behavior for minnum/maxnum · 937003cf
      Matt Arsenault authored
      This matches the de-facto behavior based on constant folding
      and the default lowering to fmin/fmax.
      
      llvm-svn: 340762
      937003cf
    • Sean Fertile's avatar
      [PowerPC][MC] Support expressions in getMemRIX16Encoding. · a2f095f1
      Sean Fertile authored
      Loosens an assert in getMemRIX16Encoding that restricts DQ-form instructions to
      using an immediate, so that we can assemble instructions like lxv/stxv where the
      offset is an expression.
      
      Differential Revision: https://reviews.llvm.org/D51122
      
      llvm-svn: 340761
      a2f095f1
    • Benjamin Kramer's avatar
      [NVPTX] Implement isLegalToVectorizeLoadChain · 759e7d98
      Benjamin Kramer authored
      This lets LSV nicely split up underaligned chains.
      
      Differential Revision: https://reviews.llvm.org/D51306
      
      llvm-svn: 340760
      759e7d98
    • Craig Topper's avatar
      [X86] When lowering v32i8 MULHS/MULHU, shuffle after the PACKUS rather than before. · 4be11c05
      Craig Topper authored
      We're using a 256-bit PACKUS to do the truncation, but that instruction operates on 128-bit lanes. So previously we shuffled first to rearrange the lanes. But that requires 2 shuffles. Instead we can shuffle after the PACKUS using a single VPERMQ. This matches what our normal LowerTRUNCATE code does when it uses PACKUS.
      
      Differential Revision: https://reviews.llvm.org/D51284
      
      llvm-svn: 340757
      4be11c05
    • Craig Topper's avatar
      [X86] Add support for matching paddus patterns where one of the vectors is a constant. · fff90377
      Craig Topper authored
      InstCombine mucks these up a bit. So we need to do some additional pattern matching to fix it. There are a still a few special cases not handled, but this covers the general case.
      
      Differential Revision: https://reviews.llvm.org/D50952
      
      llvm-svn: 340756
      fff90377
    • Matt Davis's avatar
      [llvm-mca] Introduce the llvm-mca library and organize the directory accordingly. NFC. · 271ce763
      Matt Davis authored
      Summary:
      This patch introduces llvm-mca as a library.  The driver (llvm-mca.cpp), views, and stats, are not part of the library. 
      Those are separate components that are not required for the functioning of llvm-mca.
      
      The directory has been organized as follows:
      All library source files now reside in:
        - `lib/HardwareUnits/` - All subclasses of HardwareUnit (these represent the simulated hardware components of a backend).
            (LSUnit does not inherit from HardwareUnit, but Scheduler does which uses LSUnit).  
        - `lib/Stages/` - All subclasses of the pipeline stages.
        - `lib/` - This is the root of the library and contains library code that does not fit into the Stages or HardwareUnit subdirs.
      
      All library header files now reside in the `include` directory and mimic the same layout as the `lib` directory mentioned above.
      
      In the (near) future we would like to move the library (include and lib) contents from tools and into the core of llvm somewhere.
      That change would allow various analysis and optimization passes to make use of MCA  functionality for things like cost modeling.
      
      I left all of the non-library code just where it has always been, in the root of the llvm-mca directory. 
      The include directives for the non-library source file have been updated to refer to the llvm-mca library headers.
      I updated the llvm-mca/CMakeLists.txt file to include the library headers, but I made the non-library code
      explicitly reference the library's 'include' directory.  Once we eventually (hopefully) migrate the MCA library
      components into llvm the include directives used by the non-library source files will be updated to point to the
      proper location in llvm.
      
      Reviewers: andreadb, courbet, RKSimon
      
      Reviewed By: andreadb
      
      Subscribers: mgorny, javed.absar, tschuett, gbedwell, llvm-commits
      
      Differential Revision: https://reviews.llvm.org/D50929
      
      llvm-svn: 340755
      271ce763
    • Matt Davis's avatar
      [llvm-mca] Remove unused method. NFC. · b09ecf93
      Matt Davis authored
      llvm-svn: 340754
      b09ecf93
    • Stella Stamenova's avatar
      [lit, python] Remove quotes around %python in cache.ll · 79a40ebb
      Stella Stamenova authored
      Summary: We needed quotes around %python before to make python work correctly (on Windows) if the path contains spaces. I recently made a change so that %python now inherently has quotes, so now adding quotes around %python makes the test fail because the quotes cancel each other.
      
      Reviewers: asmith, inglorion
      
      Subscribers: mehdi_amini, eraman, steven_wu, dexonsmith, llvm-commits
      
      Differential Revision: https://reviews.llvm.org/D51244
      
      llvm-svn: 340753
      79a40ebb
    • Hans Wennborg's avatar
      Use a lambda for calls to ::open in RetryAfterSignal · 0a0e4112
      Hans Wennborg authored
      In Bionic, open can be overloaded for _FORTIFY_SOURCE support, causing
      compile errors of RetryAfterSignal due to overload resolution. Wrapping
      the call in a lambda avoids this.
      
      Based on a patch by Chih-Wei Huang <cwhuang@linux.org.tw>!
      
      llvm-svn: 340751
      0a0e4112
    • Wouter van Oortmerssen's avatar
      [WebAssembly] Added default stack-only instruction mode for MC. · 8a9cb242
      Wouter van Oortmerssen authored
      Summary:
      Made it convert from register to stack based instructions, and removed the registers.
      Fixes to related code that was expecting register based instructions.
      Added the correct testing flag to all tests, depending on what the
      format they were expecting so far.
      Translated one test to stack format as example: reg-stackify-stack.ll
      
      tested:
      llvm-lit -v `find test -name WebAssembly`
      unittests/MC/*
      
      Reviewers: dschuff, sunfish
      
      Subscribers: sbc100, jgravelle-google, eraman, aheejin, llvm-commits, jfb
      
      Differential Revision: https://reviews.llvm.org/D51241
      
      llvm-svn: 340750
      8a9cb242
    • Andrea Di Biagio's avatar
      [llvm-mca] Improved report generated by the SchedulerStatistics view. · b89b96c1
      Andrea Di Biagio authored
      Before this patch, the SchedulerStatistics only printed the maximum number of
      buffer entries consumed in each scheduler's queue at a given point of the
      simulation.
      
      This patch restructures the reported table, and adds an extra field named
      "Average number of used buffer entries" to it.
      This patch also uses different colors to help identifying bottlenecks caused by
      high scheduler's buffer pressure.
      
      llvm-svn: 340746
      b89b96c1
    • Nico Weber's avatar
      fix comment typo · e75fd1b1
      Nico Weber authored
      llvm-svn: 340744
      e75fd1b1
    • Sanjay Patel's avatar
      [SelectionDAG] add helper query for binops; NFC · f6459278
      Sanjay Patel authored
      We will also use this in a planned enhancement for vector insertelement.
      
      llvm-svn: 340741
      f6459278
Loading