1. Jul 17, 2020
    • Thomas Lively's avatar
      [WebAssembly] Autogenerate tests for simd-select.ll · f7868f87
      Thomas Lively authored
      Updating the simd-select.ll tests manually with consistent named
      regexps for the register numbers was taking more time than it was
      worth, so this patch updates that test file to have autogenerated
      output. This is not a significant readability regression because the
      tests in that file are all very small.
      
      Depends on D83734.
      
      Differential Revision: https://reviews.llvm.org/D83736
      f7868f87
    • Thomas Lively's avatar
      [WebAssembly] Lower vselect to v128.bitselect · f0f97876
      Thomas Lively authored
      We were previously expanding vselect and matching on the expansion to
      generate bitselects, but in some cases the expansion would be further
      combined and a bitselect would not get generated. This patch improves
      codegen in those cases by legalizing vselect and lowering it to
      v128.bitselect. The old pattern that matches the expansion is still
      useful for lowering IR that already uses the expansion rather than a
      select operation.
      
      Differential Revision: https://reviews.llvm.org/D83734
      f0f97876
    • Craig Topper's avatar
      [X86] Add test case for PR46455. · 9adf7461
      Craig Topper authored
      9adf7461
    • Matt Arsenault's avatar
      DAG: Try scalarizing when expanding saturating add/sub · 9d3e56e2
      Matt Arsenault authored
      In an upcoming AMDGPU patch, the scalar cases will be legal and vector
      ops should be scalarized, rather than producing a long sequence of
      vector ops which will also need to be scalarized.
      
      Use a lazy heuristic that seems to work and improves the thumb2 MVE
      test.
      9d3e56e2
    • George Rokos's avatar
      [clang] Fix compilation warnings in OpenMP declare mapper codegen. · fc47c0e0
      George Rokos authored
      This patch fixes the compilation warnings that L is not a reference.
      Thanks to Lingda Li for providing the patch.
      
      Differential Revision: https://reviews.llvm.org/D83959
      fc47c0e0
    • Denis Antrushin's avatar
      MIR Statepoint refactoring. Part 1: Basic MI level changes. · ef658ebd
      Denis Antrushin authored
      Basic support for variadic-def MIR Statepoint:
      - Change TableGen STATEPOINT description to variadic out list
        (For self-documentation purpose; by itself it does not affect
        code generation in any way).
      - Update StatepointOpers helper class to handle variadic defs.
      - Update MachineVerifier to properly handle them, too.
      
      With this change, new Statepoint instruction can be passed through
      backend (excluding ISEL) without errors.
      
      Full change set is available at D81603.
      Reviewed By: reames
      Differential Revision: https://reviews.llvm.org/D81645
      ef658ebd
    • Matt Arsenault's avatar
      d909764c
    • Matt Arsenault's avatar
      IR: Rename Argument::hasPassPointeeByValueAttr to prepare for byref · 023883a8
      Matt Arsenault authored
      When the byref attribute is added, there will need to be two similar
      functions for the existing cases which have an associate value copy,
      and byref which does not. Most, but not all of the existing uses will
      use the existing version.
      
      The associated size function added by D82679 also needs to
      contextually differ, and will help eliminate a few places still
      relying on pointee element types.
      023883a8
    • Matt Arsenault's avatar
      ValueTracking: Fix isKnownNonZero for non-0 null pointers for byval · 0347039a
      Matt Arsenault authored
      The IR doesn't have a proper concept of invalid pointers, and "null"
      constants are just all zeros (though it really needs one).
      
      I think it's not possible to break this for AMDGPU due to the copy
      semantics of byval. If you have an original stack object at 0, the
      byval copy will be placed above it so I don't think it's really
      possible to hit a 0 address.
      0347039a
    • Julian Lettner's avatar
      [Darwin] Fix OS version checks inside simulators · b16dfbea
      Julian Lettner authored
      compiler-rt checks OS versions by querying the Darwin kernel version.
      This is not necessarily correct inside the simulators if the simulator
      runtime is not aligned with the host macOS.  Let's instead check the
      `SIMULATOR_RUNTIME_VERSION` env var.
      
      Note that we still use the old code path as a fallback in case the
      `SIMULATOR_RUNTIME_VERSION` environment variable isn't set.
      
      rdar://63031937
      
      Reviewers: delcypher
      
      Differential Revision: https://reviews.llvm.org/D79979
      b16dfbea
    • Nico Weber's avatar
      [gn build] Fix merge script mishap · d9b7a18e
      Nico Weber authored
      d9b7a18e
    • Fred Riss's avatar
      [lldb/ObjectFileMachO] Fetch shared cache images from our own shared cache · 8113a8bb
      Fred Riss authored
      Summary:
      On macOS 11, the libraries that have been integrated in the system
      shared cache are not present on the filesystem anymore. LLDB was
      using those files to get access to the symbols of those libraries.
      LLDB can get the images from the target process memory though.
      
      This has 2 consequences:
       - LLDB cannot load the images before the process starts, reporting
         an error if someone tries to break on a system symbol.
       - Loading the symbols by downloading the data from the inferior
         is super slow. It takes tens of seconds at the start of the
         debug session to populate the Module list.
      
      To fix this, we can use the library images LLDB has in its own
      mapping of the shared cache. Shared cache images are somewhat
      special as their LINKEDIT segment is moved to the end of the cache
      and thus the images are not contiguous in memory. All of this can
      hidden in ObjectFileMachO.
      
      This patch fixes a number of test failures on macOS 11 due to the
      first problem described above and adds some specific unittesting
      for the new SharedCache Host utilities.
      
      Reviewers: jasonmolenda, labath
      
      Subscribers: llvm-commits, lldb-commits
      
      Tags: #lldb, #llvm
      
      Differential Revision: https://reviews.llvm.org/D83023
      8113a8bb
    • Matt Arsenault's avatar
      AMDGPU: Rename gfx9 version of v_add_i32/v_sub_i32 · 219a9fea
      Matt Arsenault authored
      The carry-out opcode is renamed, so eliminate the deceptive _gfx9,
      which looked like the encoded instruction. The real encoded version
      was named _gfx9_gfx9.
      
      Move it into the VI encoding namespace. The gfx9 namespace is just to
      deal with the renamed instructions that reinterpret the opcode. When
      codegened, it would fail to find the real instruction since it wasn't
      in the right namespace.
      219a9fea
    • Jinsong Ji's avatar
      [docs] fix ident in llvm-exegesis.rst · 32d36d9e
      Jinsong Ji authored
      32d36d9e
    • Matt Arsenault's avatar
      AMDGPU: Rename add/sub with carry out instructions · 79f67cae
      Matt Arsenault authored
      The hardware has created a real mess in the naming for add/sub, which
      have been renamed basically every generation. Switch the carry out
      pseudos to have the gfx9/gfx10 names. We were using the original SI/CI
      v_add_i32/v_sub_i32 names. Later targets reintroduced these names as
      carryless instructions with a saturating clamp bit, which we do not
      define. Do this rename so we can unambiguously add these missing
      instructions.
      
      The carry-in versions should also be renamed, but at least those had a
      consistent _u32 name to begin with. The 16-bit instructions were also
      renamed, but aren't ambiguous.
      
      This does regress assembler error message quality in some cases. In
      mismatched wave32/wave64 situations, this will switch from
      "unsupported instruction" to "invalid operand", with the error
      pointing at the wrong position. I couldn't quite follow how the
      assembler selects these, but the previous behavior seemed accidental
      to me. It looked like there was a partial attempt to handle this which
      was never completed (i.e. there is an AMDGPUOperand::isBoolReg but it
      isn't used for anything).
      79f67cae
    • Jinsong Ji's avatar
      [docs][lldb] Fix lldb item in releasenotes · 971dd3f1
      Jinsong Ji authored
      Reviewed By: JDevlieghere
      
      Differential Revision: https://reviews.llvm.org/D83962
      971dd3f1
    • Michael Forster's avatar
      Add hashing support for std::tuple · 199af46e
      Michael Forster authored
      Summary:
      All tuple values are passed directly to hash_combine. This is inspired by the implementation used for Swift:
      
      https://github.com/llvm/llvm-project-staging/commit/4a1b4edbe1d1969284c1528e2950ac81b25edc8f
      https://github.com/llvm/llvm-project-staging/commit/845f3829b91522920a59c351b9011af01c5c7f87
      
      Reviewers: gribozavr2
      
      Reviewed By: gribozavr2
      
      Subscribers: dexonsmith, llvm-commits
      
      Tags: #llvm
      
      Differential Revision: https://reviews.llvm.org/D83887
      199af46e
    • Florian Hahn's avatar
      f0a4ceb2
    • Louis Dionne's avatar
      ff0d4367
    • Kostya Kortchinsky's avatar
      [scudo][standalone] Release smaller blocks less often · 79de8f84
      Kostya Kortchinsky authored
      Summary:
      Releasing smaller blocks is costly and only yields significant
      results when there is a large percentage of free bytes for a given
      size class (see numbers below).
      
      This CL introduces a couple of additional checks for sizes lower
      than 256. First we want to make sure that there is enough free bytes,
      relatively to the amount of allocated bytes. We are looking at 8X% to
      9X% (smaller blocks require higher percentage). We also want to make
      sure there has been enough activity with the freelist to make it
      worth the time, so we now check that the bytes pushed to the freelist
      is at least 1/16th of the allocated bytes for those classes.
      
      Additionally, we clear batches before destroying them now - this
      could have prevented some releases to occur (class id 0 rarely
      releases anyway).
      
      Here are the numbers, for about 1M allocations in multiple threads:
      
      Size: 16
      85% freed -> 0% released
      86% freed -> 0% released
      87% freed -> 0% released
      88% freed -> 0% released
      89% freed -> 0% released
      90% freed -> 0% released
      91% freed -> 0% released
      92% freed -> 0% released
      93% freed -> 0% released
      94% freed -> 0% released
      95% freed -> 0% released
      96% freed -> 0% released
      97% freed -> 2% released
      98% freed -> 7% released
      99% freed -> 27% released
      Size: 32
      85% freed -> 0% released
      86% freed -> 0% released
      87% freed -> 0% released
      88% freed -> 0% released
      89% freed -> 0% released
      90% freed -> 0% released
      91% freed -> 0% released
      92% freed -> 0% released
      93% freed -> 0% released
      94% freed -> 0% released
      95% freed -> 1% released
      96% freed -> 3% released
      97% freed -> 7% released
      98% freed -> 17% released
      99% freed -> 41% released
      Size: 48
      85% freed -> 0% released
      86% freed -> 0% released
      87% freed -> 0% released
      88% freed -> 0% released
      89% freed -> 0% released
      90% freed -> 0% released
      91% freed -> 0% released
      92% freed -> 0% released
      93% freed -> 0% released
      94% freed -> 1% released
      95% freed -> 3% released
      96% freed -> 7% released
      97% freed -> 13% released
      98% freed -> 27% released
      99% freed -> 52% released
      Size: 64
      85% freed -> 0% released
      86% freed -> 0% released
      87% freed -> 0% released
      88% freed -> 0% released
      89% freed -> 0% released
      90% freed -> 0% released
      91% freed -> 0% released
      92% freed -> 1% released
      93% freed -> 2% released
      94% freed -> 3% released
      95% freed -> 6% released
      96% freed -> 11% released
      97% freed -> 20% released
      98% freed -> 35% released
      99% freed -> 59% released
      Size: 80
      85% freed -> 0% released
      86% freed -> 0% released
      87% freed -> 0% released
      88% freed -> 0% released
      89% freed -> 0% released
      90% freed -> 1% released
      91% freed -> 1% released
      92% freed -> 2% released
      93% freed -> 4% released
      94% freed -> 6% released
      95% freed -> 10% released
      96% freed -> 17% released
      97% freed -> 26% released
      98% freed -> 41% released
      99% freed -> 64% released
      Size: 96
      85% freed -> 0% released
      86% freed -> 0% released
      87% freed -> 0% released
      88% freed -> 0% released
      89% freed -> 1% released
      90% freed -> 1% released
      91% freed -> 3% released
      92% freed -> 4% released
      93% freed -> 6% released
      94% freed -> 10% released
      95% freed -> 14% released
      96% freed -> 21% released
      97% freed -> 31% released
      98% freed -> 47% released
      99% freed -> 68% released
      Size: 112
      85% freed -> 0% released
      86% freed -> 1% released
      87% freed -> 1% released
      88% freed -> 2% released
      89% freed -> 3% released
      90% freed -> 4% released
      91% freed -> 6% released
      92% freed -> 8% released
      93% freed -> 11% released
      94% freed -> 16% released
      95% freed -> 22% released
      96% freed -> 30% released
      97% freed -> 40% released
      98% freed -> 55% released
      99% freed -> 74% released
      Size: 128
      85% freed -> 0% released
      86% freed -> 1% released
      87% freed -> 1% released
      88% freed -> 2% released
      89% freed -> 3% released
      90% freed -> 4% released
      91% freed -> 6% released
      92% freed -> 8% released
      93% freed -> 11% released
      94% freed -> 16% released
      95% freed -> 22% released
      96% freed -> 30% released
      97% freed -> 40% released
      98% freed -> 55% released
      99% freed -> 74% released
      Size: 144
      85% freed -> 1% released
      86% freed -> 2% released
      87% freed -> 3% released
      88% freed -> 4% released
      89% freed -> 6% released
      90% freed -> 7% released
      91% freed -> 10% released
      92% freed -> 13% released
      93% freed -> 17% released
      94% freed -> 22% released
      95% freed -> 28% released
      96% freed -> 37% released
      97% freed -> 47% released
      98% freed -> 61% released
      99% freed -> 78% released
      Size: 160
      85% freed -> 1% released
      86% freed -> 2% released
      87% freed -> 3% released
      88% freed -> 4% released
      89% freed -> 5% released
      90% freed -> 7% released
      91% freed -> 10% released
      92% freed -> 13% released
      93% freed -> 17% released
      94% freed -> 22% released
      95% freed -> 28% released
      96% freed -> 37% released
      97% freed -> 47% released
      98% freed -> 61% released
      99% freed -> 78% released
      Size: 176
      85% freed -> 2% released
      86% freed -> 3% released
      87% freed -> 4% released
      88% freed -> 6% released
      89% freed -> 7% released
      90% freed -> 9% released
      91% freed -> 12% released
      92% freed -> 15% released
      93% freed -> 20% released
      94% freed -> 25% released
      95% freed -> 32% released
      96% freed -> 40% released
      97% freed -> 51% released
      98% freed -> 64% released
      99% freed -> 80% released
      Size: 192
      85% freed -> 4% released
      86% freed -> 5% released
      87% freed -> 6% released
      88% freed -> 8% released
      89% freed -> 10% released
      90% freed -> 13% released
      91% freed -> 16% released
      92% freed -> 20% released
      93% freed -> 24% released
      94% freed -> 30% released
      95% freed -> 37% released
      96% freed -> 45% released
      97% freed -> 55% released
      98% freed -> 68% released
      99% freed -> 82% released
      Size: 224
      85% freed -> 8% released
      86% freed -> 10% released
      87% freed -> 12% released
      88% freed -> 14% released
      89% freed -> 17% released
      90% freed -> 20% released
      91% freed -> 23% released
      92% freed -> 28% released
      93% freed -> 33% released
      94% freed -> 39% released
      95% freed -> 46% released
      96% freed -> 53% released
      97% freed -> 63% released
      98% freed -> 73% released
      99% freed -> 85% released
      Size: 240
      85% freed -> 8% released
      86% freed -> 10% released
      87% freed -> 12% released
      88% freed -> 14% released
      89% freed -> 17% released
      90% freed -> 20% released
      91% freed -> 23% released
      92% freed -> 28% released
      93% freed -> 33% released
      94% freed -> 39% released
      95% freed -> 46% released
      96% freed -> 54% released
      97% freed -> 63% released
      98% freed -> 73% released
      99% freed -> 85% released
      
      Reviewers: cferris, pcc, hctim, eugenis
      
      Subscribers: #sanitizers, llvm-commits
      
      Tags: #sanitizers
      
      Differential Revision: https://reviews.llvm.org/D82031
      79de8f84
    • Louis Dionne's avatar
      [libc++abi] NFC: Fix indentation · 3f05a485
      Louis Dionne authored
      3f05a485
    • Dmitri Gribenko's avatar
      Use TestClangConfig in AST Matchers tests and run them in more configurations · 4f244c4b
      Dmitri Gribenko authored
      Summary:
      I am changing tests for AST Matchers to run in multiple language standards
      versions, and under multiple triples that have different behavior with regards
      to templates. This change is similar to https://reviews.llvm.org/D82179.
      
      To keep the size of the patch manageable, in this patch I'm only migrating one
      file to get the process started and get feedback on this approach.
      
      Reviewers: ymandel
      
      Reviewed By: ymandel
      
      Subscribers: cfe-commits
      
      Tags: #clang
      
      Differential Revision: https://reviews.llvm.org/D83868
      4f244c4b
    • Rahul Joshi's avatar
    • Rahul Joshi's avatar
      [MLIR][TableGen] Add default value for named attributes for 2 more build methods · 764931d2
      Rahul Joshi authored
      - Added more default values for `attributes` parameter for 2 more build methods
      - Extend the op-decls.td unit test to test these build methods.
      
      Differential Revision: https://reviews.llvm.org/D83839
      764931d2
    • David Green's avatar
      [BasicAA] Fix -basicaa-recphi for geps with negative offsets · 311fafd2
      David Green authored
      As shown in D82998, the basic-aa-recphi option can cause miscompiles for
      gep's with negative constants. The option checks for recursive phi, that
      recurse through a contant gep. If it finds one, it performs aliasing
      calculations using the other phi operands with an unknown size, to
      specify that an unknown number of elements after the initial value are
      potentially accessed. This works fine expect where the constant is
      negative, as the size is still considered to be positive. So this patch
      expands the check to make sure that the constant is also positive.
      
      Differential Revision: https://reviews.llvm.org/D83576
      311fafd2
    • LLVM GN Syncbot's avatar
      [gn build] Port 1360e140 · c74cfd40
      LLVM GN Syncbot authored
      c74cfd40
    • Vy Nguyen's avatar
      [llvm-exegesis] Add benchmark latency option on X86 that uses LBR for more... · 1360e140
      Vy Nguyen authored
          [llvm-exegesis] Add benchmark latency option on X86 that uses LBR for more precise measurements.
      
          Starting with Skylake, the LBR contains the precise number of cycles between the two
          consecutive branches.
          Making use of this will hopefully make the measurements more precise than the
          existing methods of using RDTSC.
      
                  Differential Revision: https://reviews.llvm.org/D77422
      1360e140
  2. Jul 16, 2020