[all-commits] [llvm/llvm-project] ff271d: [RISCV][VLOPT] Fix assertion failure across blocks...

Luke Lau via All-commits all-commits at lists.llvm.org
Tue Jan 28 19:01:12 PST 2025


  Branch: refs/heads/main
  Home:   https://github.com/llvm/llvm-project
  Commit: ff271d04a2fe0af0ad43e9c0bce1cbb10912dc32
      https://github.com/llvm/llvm-project/commit/ff271d04a2fe0af0ad43e9c0bce1cbb10912dc32
  Author: Luke Lau <luke at igalia.com>
  Date:   2025-01-29 (Wed, 29 Jan 2025)

  Changed paths:
    M llvm/lib/Target/RISCV/RISCVVLOptimizer.cpp
    M llvm/test/CodeGen/RISCV/rvv/vl-opt.mir

  Log Message:
  -----------
  [RISCV][VLOPT] Fix assertion failure across blocks (#124734)

Whilst adding a cross-block test, I encountered an assertion failure in
the second pass where we check the instruction popped off the worklist
is a candidate.

The leaf instruction %c in this case will be added to the worklist when
its VL is VLMAX, but during the first pass it will have its VL reduced
to 1.

Then in the second pass when its processed via the worklist, isCandidate
will no longer be true due to its VL == 1.

This fixes it by moving the VL == 1 check to tryReduceVL, keeping it
alongside the other VL check for bailing out early as an optimisation.



To unsubscribe from these emails, change your notification settings at https://github.com/llvm/llvm-project/settings/notifications


More information about the All-commits mailing list