[all-commits] [llvm/llvm-project] a12d7e: [SLP] getVectorCallCosts - don't provide scalar ar...

Simon Pilgrim via All-commits all-commits at lists.llvm.org
Fri Jan 24 07:13:36 PST 2025


  Branch: refs/heads/main
  Home:   https://github.com/llvm/llvm-project
  Commit: a12d7e4b611f0db2525da68f5576beaeeb6c84ac
      https://github.com/llvm/llvm-project/commit/a12d7e4b611f0db2525da68f5576beaeeb6c84ac
  Author: Simon Pilgrim <llvm-dev at redking.me.uk>
  Date:   2025-01-24 (Fri, 24 Jan 2025)

  Changed paths:
    M llvm/lib/Target/X86/X86TargetTransformInfo.cpp
    M llvm/lib/Transforms/Vectorize/SLPVectorizer.cpp
    M llvm/test/Transforms/SLPVectorizer/X86/arith-fshl-rot.ll
    M llvm/test/Transforms/SLPVectorizer/X86/arith-fshr-rot.ll

  Log Message:
  -----------
  [SLP] getVectorCallCosts - don't provide scalar argument data for vector IntrinsicCostAttributes (#124254)

getVectorCallCosts determines the cost of a vector intrinsic, based off
an existing scalar intrinsic call - but we were including the scalar
argument data to the IntrinsicCostAttributes, which meant that not only
was the cost calculation not type-only based, it was making incorrect
assumptions about constant values etc.

This also exposed an issue that x86 relied on fallback calculations for
funnel shift costs - this is great when we have the argument data as
that improves the accuracy of uniform shift amounts etc., but meant that
type-only costs would default to Cost=2 for all custom lowered funnel
shifts, which was far too cheap.

This is the reverse of #124129 where we weren't including argument data
when we could.

Fixes #63980



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