[all-commits] [llvm/llvm-project] e93a81: [RISCVRVVInitUndef] Remove implicit single use ass...

Philip Reames via All-commits all-commits at lists.llvm.org
Tue Aug 1 10:50:38 PDT 2023


  Branch: refs/heads/main
  Home:   https://github.com/llvm/llvm-project
  Commit: e93a8137d3046a8b55d23997ffa5f415e8f684d3
      https://github.com/llvm/llvm-project/commit/e93a8137d3046a8b55d23997ffa5f415e8f684d3
  Author: Philip Reames <preames at rivosinc.com>
  Date:   2023-08-01 (Tue, 01 Aug 2023)

  Changed paths:
    M llvm/lib/Target/RISCV/RISCVRVVInitUndef.cpp
    M llvm/test/CodeGen/RISCV/rvv/undef-earlyclobber-chain.ll
    A llvm/test/CodeGen/RISCV/rvv/undef-earlyclobber-chain.mir

  Log Message:
  -----------
  [RISCVRVVInitUndef] Remove implicit single use assumption for IMPLICIT_DEF (try 2)

Reapplying after revert due to sanitizer failure.  Includes fix to avoid querying dead lanes for vreg introduced by previous transform.

The code was written with the implicit assumption that each IMPLICIT_DEF either a) the tied operand, or b) an untied source, but not both. This is true right now, but an upcoming change may allow CSE of IMPLICIT_DEFs in some cases, so let's rewrite the code to handle that possibility.

I added an MIR case which demonstrates the multiple use IMPLICIT_DEF. To my knowledge, this is not a reachable configuration from IR right now.

As an aside, this makes the structure a much closer match with the sub-reg liveness case, and we can probably just merge these routines. (Future work.)

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




More information about the All-commits mailing list