1. Oct 07, 2023
    • Markus Böck's avatar
      e2a37cd0
    • spupyrev's avatar
      Revert "[CodeLayout] Faster basic block reordering, ext-tsp (#68275)" · 5b39d8d3
      spupyrev authored
      This reverts commit 0a7bf3aa.
      5b39d8d3
    • spupyrev's avatar
      [CodeLayout] Faster basic block reordering, ext-tsp (#68275) · 0a7bf3aa
      spupyrev authored
      Aggressive inlining might produce huge functions with >10K of basic 
      blocks. Since BFI treats _all_ blocks and jumps as "hot" having 
      non-negative (but perhaps small) weight, the current implementation can
      be slow, taking minutes to produce an layout. This change introduces a
      few modifications that significantly (up to 50x on some instances) 
      speeds up the computation. Some notable changes:
      - reduced the maximum chain size to 512 (from the prior 4096);
      - introeuced MaxMergeDensityRatio param to avoid merging chains with
      very differen densities;
      - dropped a couple of params that seem unnecessary.
      
      Looking at some "offline" metrics (e.g., the number of created 
      fall-throughs), there shouldn't be problems; in fact, I do see some
      metrics go up. But it might be hard/impossible to measure perf 
      difference for such small changes. I did test the performance clang-14 
      binary and do not record a perf or i-cache-related differences.
      
      My 5 benchmarks, with ext-tsp runtime (the lower the better) and 
      "tsp-score" (the higher the better).
      **Before**:
      
      - benchmark 1:
        reordering running time is 2486 milliseconds
        score: 125503458 (128.3102%)
      - benchmark 2:
        reordering running time is 3443 milliseconds
        score: 12613997277 (129.7495%)
      - benchmark 2:
        reordering running time is 1978 milliseconds
        score: 1315881613 (105.8991%)
      - benchmark 4:
        reordering running time is 7364 milliseconds
        score: 89513906284 (100.3413%)
      - benchmark 5:
        reordering running time is 372605 milliseconds
        score: 21292505965077 (99.9979%)
      
      **After**:
      - benchmark 1:
        reordering running time is 2498 milliseconds
        score: 125510418 (128.3173%)
      
      - benchmark 2:
        reordering running time is 3201 milliseconds
        score: 12614502162 (129.7547%)
      
      - benchmark 3:
        reordering running time is 2137 milliseconds
        score: 1315938168 (105.9036%)
      
      - benchmark 4:
        reordering running time is 6242 milliseconds
        score: 89518095837 (100.3460%)
      
      - benchmark 5:
        reordering running time is 5819 milliseconds
        score: 21292295939119 (99.9969%)
      0a7bf3aa
    • Stella Laurenzo's avatar
      Revert "[RISCV][CostModel] VPIntrinsics have same cost as their non-vp counterparts (#67178)" · 0abaf3ca
      Stella Laurenzo authored
      This reverts commit fc865c20.
      
      Triggering assert on X86:
      
      ```
      iree-compile: /work/third_party/llvm-project/llvm/include/llvm/Support/Casting.h:662: decltype(auto) llvm::dyn_cast(From *) [To = llvm::PointerType, From = llvm::Type]: Assertion `detail::isPresent(Val) && "dyn_cast on a non-existent value"' failed.
      ```
      
      See PR for comments and full stack trace.
      0abaf3ca
    • PiJoules's avatar
      [compiler-rt] Allow Fuchsia to use 64-bit allocator for RISCV (#68343) · a4d51e5b
      PiJoules authored
      The allocator should be tuned well enough for Fuchsia+RISCV.
      a4d51e5b
    • Nitin John Raj's avatar
      [RISCV][GISel] Select G_SELECT (#67614) · 7f9a50ff
      Nitin John Raj authored
      This patch adds minimal support for selecting G_SELECT. In the future we
      may want to fix this patch to select the other opcodes or handle that in
      the combiner.
      7f9a50ff
    • LLVM GN Syncbot's avatar
      [gn build] Port 8f378ff7 · f3c477ae
      LLVM GN Syncbot authored
      f3c477ae
    • Jonas Devlieghere's avatar
      [lldb] Expose SBPlatform::GetAllProcesses to the SB API (#68378) · 8f378ff7
      Jonas Devlieghere authored
      Add the ability to list all processes through the SB API.
      
      rdar://116188959
      8f378ff7
    • Brandon Wu's avatar
      [RISCV] Support VLS for VCIX (#67289) · 70368eae
      Brandon Wu authored
      70368eae
    • Philip Reames's avatar
      [RISCV] Strip W suffix from ADDIW (#68425) · 86240751
      Philip Reames authored
      The motivation of this change is simply to reduce test duplication. As
      can be seen in the (massive) test delta, we have many tests whose output
      differ only due to the use of addi on rv32 vs addiw on rv64 when the
      high bits are don't care.
      
      As an aside, we don't need to worry about the non-zero immediate
      restriction on the compressed variants because we're not directly
      forming the compressed variants. If we happen to get a zero immediate
      for the ADDI, then either a later optimization will strip the useless
      instruction or the encoder is responsible for not compressing the
      instruction.
      86240751
    • Kazu Hirata's avatar
      [SelectionDAG] Fix an unused variable warning · e9fa1887
      Kazu Hirata authored
      This patch fixes:
      
        llvm/lib/CodeGen/SelectionDAG/SelectionDAG.cpp:10832:12: error:
        variable 'Changed' set but not used
        [-Werror,-Wunused-but-set-variable]
      e9fa1887
    • Abhinav271828's avatar
      [MLIR][Presburger] Fix reduce bug in Fraction class and add tests (#68298) · 014912a7
      Abhinav271828 authored
      Modified `Fraction.reduce()` to work with negative fractions as well.
      Added tests to verify the implementation of arithmetic and relational
      operators on Fractions.
      014912a7
    • Craig Topper's avatar
      [InstCombine] Retain exact instruction name for some cases in SimplifyDemandedUseBits. (#68371) · 98b114d1
      Craig Topper authored
      Retain name for SExt->ZExt and AShr->LShr. Previously SExt->ZExt copied
      the name with a numeric suffix. AShr->LShr dropped it.
      98b114d1
    • Andrzej Warzynski's avatar
      [mlir][vector] Constrain patterns: vector.contract -> vector.outerproduct · c91d3b0b
      Andrzej Warzynski authored
      This patch constrains the patterns for converting `vector.contract` to
      `vector.outerproduct` so that
      
        * the reduction dimension is _not unrolled_ if the corresponding
          dimension is scalable.
      
      This is necessary as the current lowering is incorrect for scalable
      dims. Indeed, the following unrolling for `vector.contract` would be
      invalid if the corresponding dimension was scalable (K is the size of
      the reduction dimension):
      
      ```
        // K times. This is valid if K _is not_ scalable.
        %lhs = vector.extract %LHS[0]
        %rhs = vector.extract %RHS[0]
        vector.outerproduct %lhs, %rhs
      
        %lhs = vector.extract %LHS[1]
        %rhs = vector.extract %RHS[1]
        vector.outerproduct %lhs, %rhs
      
        // ...
      ```
      
      Instead, a `for` loop should be generated:
      ```
      // This would be valid regardless of whether K is scalable or not
      scf.for %k = 0 to K step 1
        %lhs = vector.extract LHS[%k]
        %rhs = vector.extract RHS[%k]
        vector.outerproduct %lhs, %rhs
      ```
      
      However, the lowering of:
      
        * `vector.extract` of vector slices with dynamic indices
      
      is incomplete and hence the implementation proposed above (with
      `scf.for`) wouldn't work just yet, i.e. it wouldn't be possible to lower
      it further. Instead, this patch disables unrolling in cases when the
      reduction dimension is scalable, i.e. where the generated code would be
      functionally incorrect.
      
      In order to document unsupported cases, a dedicated test file is added:
      
        * "vector-contract-to-outerproduct-transforms-unsupported.mlir"
      
      This is the first patch in a series of patches that strives to update
      these patterns (and to test them) for scalable vectors.
      
      Resolves #68400
      c91d3b0b
  2. Oct 06, 2023