[all-commits] [llvm/llvm-project] ea83e1: [LV] Assign cost to all interleave members when no...

Florian Hahn via All-commits all-commits at lists.llvm.org
Wed Sep 11 13:07:20 PDT 2024


  Branch: refs/heads/main
  Home:   https://github.com/llvm/llvm-project
  Commit: ea83e1c05a5adee5d8f9e680356ee57556ba64a1
      https://github.com/llvm/llvm-project/commit/ea83e1c05a5adee5d8f9e680356ee57556ba64a1
  Author: Florian Hahn <flo at fhahn.com>
  Date:   2024-09-11 (Wed, 11 Sep 2024)

  Changed paths:
    M llvm/lib/Transforms/Vectorize/LoopVectorize.cpp
    M llvm/test/Analysis/CostModel/X86/interleaved-load-f32-stride-5.ll
    M llvm/test/Analysis/CostModel/X86/interleaved-load-f32-stride-7.ll
    M llvm/test/Analysis/CostModel/X86/interleaved-load-f32-stride-8.ll
    M llvm/test/Analysis/CostModel/X86/interleaved-load-f64-stride-2.ll
    M llvm/test/Analysis/CostModel/X86/interleaved-load-f64-stride-3.ll
    M llvm/test/Analysis/CostModel/X86/interleaved-load-f64-stride-4.ll
    M llvm/test/Analysis/CostModel/X86/interleaved-load-f64-stride-5.ll
    M llvm/test/Analysis/CostModel/X86/interleaved-load-f64-stride-6.ll
    M llvm/test/Analysis/CostModel/X86/interleaved-load-f64-stride-7.ll
    M llvm/test/Analysis/CostModel/X86/interleaved-load-f64-stride-8.ll
    M llvm/test/Analysis/CostModel/X86/interleaved-load-i16-stride-5.ll
    M llvm/test/Analysis/CostModel/X86/interleaved-load-i16-stride-7.ll
    M llvm/test/Analysis/CostModel/X86/interleaved-load-i16-stride-8.ll
    M llvm/test/Analysis/CostModel/X86/interleaved-load-i32-stride-4-indices-01uu.ll
    M llvm/test/Analysis/CostModel/X86/interleaved-load-i32-stride-5.ll
    M llvm/test/Analysis/CostModel/X86/interleaved-load-i32-stride-7.ll
    M llvm/test/Analysis/CostModel/X86/interleaved-load-i32-stride-8.ll
    M llvm/test/Analysis/CostModel/X86/interleaved-load-i64-stride-2.ll
    M llvm/test/Analysis/CostModel/X86/interleaved-load-i64-stride-3.ll
    M llvm/test/Analysis/CostModel/X86/interleaved-load-i64-stride-4.ll
    M llvm/test/Analysis/CostModel/X86/interleaved-load-i64-stride-5.ll
    M llvm/test/Analysis/CostModel/X86/interleaved-load-i64-stride-6.ll
    M llvm/test/Analysis/CostModel/X86/interleaved-load-i64-stride-7.ll
    M llvm/test/Analysis/CostModel/X86/interleaved-load-i64-stride-8.ll
    M llvm/test/Analysis/CostModel/X86/interleaved-load-i8-stride-5.ll
    M llvm/test/Analysis/CostModel/X86/interleaved-load-i8-stride-7.ll
    M llvm/test/Analysis/CostModel/X86/interleaved-load-i8-stride-8.ll
    M llvm/test/Analysis/CostModel/X86/interleaved-store-f64-stride-8.ll
    M llvm/test/Analysis/CostModel/X86/interleaved-store-i64-stride-8.ll
    M llvm/test/Analysis/CostModel/X86/masked-interleaved-store-i16.ll
    M llvm/test/Transforms/LoopVectorize/AArch64/interleaved-vs-scalar.ll
    M llvm/test/Transforms/LoopVectorize/AArch64/interleaved_cost.ll
    M llvm/test/Transforms/LoopVectorize/ARM/mve-interleaved-cost.ll
    M llvm/test/Transforms/LoopVectorize/RISCV/dead-ops-cost.ll
    M llvm/test/Transforms/LoopVectorize/SystemZ/mem-interleaving-costs-03.ll

  Log Message:
  -----------
  [LV] Assign cost to all interleave members when not interleaving.

At the moment, the full cost of all interleave group members is assigned
to the instruction at the group's insert position, even if the decision
was to not form an interleave group.

This can lead to inaccurate cost estimates, e.g. if the instruction at
the insert position is dead. If the decision is to not vectorize but
scalarize or scather/gather, then the cost will be to total cost for all
members. In those cases, assign individual the cost per member, to more
closely reflect to choice per instruction.

This fixes a divergence between legacy and VPlan-based cost model.

Fixes https://github.com/llvm/llvm-project/issues/108098.



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