[all-commits] [llvm/llvm-project] c02476: [X86][CostModel] X86TTIImpl::getMemoryOpCost(): re...

Roman Lebedev via All-commits all-commits at lists.llvm.org
Tue May 11 06:03:16 PDT 2021


  Branch: refs/heads/main
  Home:   https://github.com/llvm/llvm-project
  Commit: c02476f3158f2908ef0a6f628210b5380bd33695
      https://github.com/llvm/llvm-project/commit/c02476f3158f2908ef0a6f628210b5380bd33695
  Author: Roman Lebedev <lebedev.ri at gmail.com>
  Date:   2021-05-11 (Tue, 11 May 2021)

  Changed paths:
    M llvm/lib/Target/X86/X86TargetTransformInfo.cpp
    M llvm/test/Analysis/CostModel/X86/interleaved-load-i16-stride-3.ll
    M llvm/test/Analysis/CostModel/X86/interleaved-store-i16-stride-3.ll
    M llvm/test/Analysis/CostModel/X86/load_store.ll

  Log Message:
  -----------
  [X86][CostModel] X86TTIImpl::getMemoryOpCost(): rewrite vector handling again

Instead of handling power-of-two sized vector chunks,
try handling the large vector in a stream mode,
decreasing the operational vector size
once it no longer works for the elements left to process.

Notably, this improves costs for overaligned loads - loading padding is fine.
This more directly tracks when we need to insert/extract the YMM/XMM subvector,
some costs fluctuate because of that.

Reviewed By: RKSimon, ABataev

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




More information about the All-commits mailing list