[all-commits] [llvm/llvm-project] 6e9c24: [RISCV] Lower insert subvector shuffles as vslideups

Luke Lau via All-commits all-commits at lists.llvm.org
Fri Mar 24 10:31:26 PDT 2023


  Branch: refs/heads/main
  Home:   https://github.com/llvm/llvm-project
  Commit: 6e9c24edf052756e1f14d6080bf5af7fb75f17e7
      https://github.com/llvm/llvm-project/commit/6e9c24edf052756e1f14d6080bf5af7fb75f17e7
  Author: Luke Lau <luke at igalia.com>
  Date:   2023-03-24 (Fri, 24 Mar 2023)

  Changed paths:
    M llvm/lib/Target/RISCV/RISCVISelLowering.cpp
    M llvm/test/CodeGen/RISCV/rvv/fixed-vectors-fp-buildvec.ll
    M llvm/test/CodeGen/RISCV/rvv/fixed-vectors-int-shuffles.ll
    M llvm/test/CodeGen/RISCV/rvv/fixed-vectors-shufflevector-vnsrl.ll
    M llvm/test/CodeGen/RISCV/rvv/vector-deinterleave-fixed.ll

  Log Message:
  -----------
  [RISCV] Lower insert subvector shuffles as vslideups

A shuffle with an insert subvector mask is functionally equivalent to:
(insert_subvector v0, (extract_subvector v1, len), index)
We can emulate by doing a vslideup on v1 into the right index, and
carefully selecting VL so that we don't overwrite any more destination
elements than what we have to.
This avoids the need for a select with a mask.


  Commit: d3e8bd919fbef0392650c27f69c7a79e1b73ca47
      https://github.com/llvm/llvm-project/commit/d3e8bd919fbef0392650c27f69c7a79e1b73ca47
  Author: Luke Lau <luke at igalia.com>
  Date:   2023-03-24 (Fri, 24 Mar 2023)

  Changed paths:
    M llvm/test/CodeGen/RISCV/rvv/fixed-vectors-int-shuffles.ll

  Log Message:
  -----------
  [RISCV][NFC] Rename some test cases

Since they no longer involve a merge


  Commit: 33d24fe3d3828a5761dd7fb3271ab991f3955c39
      https://github.com/llvm/llvm-project/commit/33d24fe3d3828a5761dd7fb3271ab991f3955c39
  Author: Luke Lau <luke at igalia.com>
  Date:   2023-03-24 (Fri, 24 Mar 2023)

  Changed paths:
    A llvm/test/Analysis/CostModel/RISCV/shuffle-insert.ll
    A llvm/test/Analysis/CostModel/RISCV/shuffle-select.ll

  Log Message:
  -----------
  [RISCV] Add test cases for modeling more shuffle kinds

These map to SK_InsertSubvector and SK_Select shuffle kinds


  Commit: 40b408cb0548bb679b491d2e074942561c629531
      https://github.com/llvm/llvm-project/commit/40b408cb0548bb679b491d2e074942561c629531
  Author: Luke Lau <luke at igalia.com>
  Date:   2023-03-24 (Fri, 24 Mar 2023)

  Changed paths:
    M llvm/test/Transforms/SLPVectorizer/RISCV/reductions.ll

  Log Message:
  -----------
  [RISCV] Enable SLP in RISC-V SLP reduction tests

Horizontal reduction can still kick in even when the max VF is set to 0,
but strange stuff can happen as it affects the cost model.
Enable it for these tests as eventually the goal will be to have SLP
enabled.


  Commit: 1c9094a20170a6aa6a6ee46281e5467dabee4d72
      https://github.com/llvm/llvm-project/commit/1c9094a20170a6aa6a6ee46281e5467dabee4d72
  Author: Luke Lau <luke at igalia.com>
  Date:   2023-03-24 (Fri, 24 Mar 2023)

  Changed paths:
    M llvm/test/Transforms/SLPVectorizer/RISCV/reductions.ll

  Log Message:
  -----------
  [RISCV] Add test case for two equivalent reductions

They are functionally equivalent but currently one fails to vectorize
because the cost of an insert subvector shuffle is too expensive.
D146747 will update the cost of these types of shuffles, so add a test
case for it.


  Commit: f23ea4cbd443601a0d6666a5fae6558243051348
      https://github.com/llvm/llvm-project/commit/f23ea4cbd443601a0d6666a5fae6558243051348
  Author: Luke Lau <luke at igalia.com>
  Date:   2023-03-24 (Fri, 24 Mar 2023)

  Changed paths:
    M llvm/lib/Target/RISCV/RISCVTargetTransformInfo.cpp
    M llvm/test/Analysis/CostModel/RISCV/rvv-shuffle.ll
    M llvm/test/Analysis/CostModel/RISCV/shuffle-insert.ll
    M llvm/test/Analysis/CostModel/RISCV/shuffle-interleave.ll
    M llvm/test/Analysis/CostModel/RISCV/shuffle-select.ll
    M llvm/test/Transforms/SLPVectorizer/RISCV/math-function.ll
    M llvm/test/Transforms/SLPVectorizer/RISCV/reductions.ll

  Log Message:
  -----------
  [RISCV] Model select and insertsubvector shuffle kinds

Selects get lowered to a vmerge with a mask, and insertsubvectors get
lowered to a vslideup.

Differential Revision: https://reviews.llvm.org/D146747


Compare: https://github.com/llvm/llvm-project/compare/33be83415c9b...f23ea4cbd443


More information about the All-commits mailing list