[all-commits] [llvm/llvm-project] 4ee45a: [LV] Invalidate cost model decisions along with in...

Florian Hahn via All-commits all-commits at lists.llvm.org
Sat Apr 18 02:24:37 PDT 2020


  Branch: refs/heads/master
  Home:   https://github.com/llvm/llvm-project
  Commit: 4ee45ab60f8639375296f8b7b96e2eb5e8a2c9d3
      https://github.com/llvm/llvm-project/commit/4ee45ab60f8639375296f8b7b96e2eb5e8a2c9d3
  Author: Florian Hahn <flo at fhahn.com>
  Date:   2020-04-18 (Sat, 18 Apr 2020)

  Changed paths:
    M llvm/include/llvm/Analysis/VectorUtils.h
    M llvm/lib/Analysis/VectorUtils.cpp
    M llvm/lib/Transforms/Vectorize/LoopVectorize.cpp
    A llvm/test/Transforms/LoopVectorize/Hexagon/invalidate-cm-after-invalidating-interleavegroups.ll

  Log Message:
  -----------
  [LV] Invalidate cost model decisions along with interleave groups.

Cost-modeling decisions are tied to the compute interleave groups
(widening decisions, scalar and uniform values). When invalidating the
interleave groups, those decisions also need to be invalidated.

Otherwise there is a mis-match during VPlan construction.
VPWidenMemoryRecipes created initially are left around w/o converting them
into VPInterleave recipes. Such a conversion indeed should not take place,
and these gather/scatter recipes may in fact be right. The crux is leaving around
obsolete CM_Interleave (and dependent) markings of instructions along with
their costs, instead of recalculating decisions, costs, and recipes.

Alternatively to forcing a complete recompute later on, we could try
to selectively invalidate the decisions connected to the interleave
groups. But we would likely need to run the uniform/scalar value
detection parts again anyways and the extra complexity is probably not
worth it.

Fixes PR45572.

Reviewers: gilr, rengolin, Ayal, hsaito

Reviewed By: Ayal

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




More information about the All-commits mailing list