[all-commits] [llvm/llvm-project] 6d103c: [SelectionDAG] Unify scalarizeVectorLoad and Vecto...

LemonBoy via All-commits all-commits at lists.llvm.org
Sat May 2 15:18:53 PDT 2020


  Branch: refs/heads/master
  Home:   https://github.com/llvm/llvm-project
  Commit: 6d103ca855552054f34849ecf0743bb39cebc8a9
      https://github.com/llvm/llvm-project/commit/6d103ca855552054f34849ecf0743bb39cebc8a9
  Author: LemonBoy <thatlemon at gmail.com>
  Date:   2020-05-02 (Sat, 02 May 2020)

  Changed paths:
    M llvm/lib/CodeGen/SelectionDAG/LegalizeVectorOps.cpp
    M llvm/lib/CodeGen/SelectionDAG/TargetLowering.cpp
    M llvm/test/CodeGen/AMDGPU/idot8s.ll
    M llvm/test/CodeGen/Thumb2/mve-pred-bitcast.ll
    M llvm/test/CodeGen/Thumb2/mve-pred-loadstore.ll
    M llvm/test/CodeGen/X86/avx512-extract-subvector-load-store.ll
    M llvm/test/CodeGen/X86/bitcast-vector-bool.ll
    M llvm/test/CodeGen/X86/clear_upper_vector_element_bits.ll
    M llvm/test/CodeGen/X86/load-local-v3i1.ll
    A llvm/test/CodeGen/X86/load-local-v4i5.ll
    M llvm/test/CodeGen/X86/pr15267.ll
    M llvm/test/CodeGen/X86/vector-sext.ll

  Log Message:
  -----------
  [SelectionDAG] Unify scalarizeVectorLoad and VectorLegalizer::ExpandLoad

The two code paths have the same goal, legalizing a load of a non-byte-sized vector by loading the "flattened" representation in memory, slicing off each single element and then building a vector out of those pieces.

The technique employed by `ExpandLoad`  is slightly more convoluted and produces slightly better codegen on ARM, AMDGPU and x86 but suffers from some bugs (D78480) and is wrong for BE machines.

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




More information about the All-commits mailing list