[all-commits] [llvm/llvm-project] 5e51f7: [ARM] Favour post inc for MVE loops

David Green via All-commits all-commits at lists.llvm.org
Sun Jan 19 23:47:24 PST 2020


  Branch: refs/heads/master
  Home:   https://github.com/llvm/llvm-project
  Commit: 5e51f755421761b56453d756e5a89bbed784141a
      https://github.com/llvm/llvm-project/commit/5e51f755421761b56453d756e5a89bbed784141a
  Author: David Green <david.green at arm.com>
  Date:   2020-01-20 (Mon, 20 Jan 2020)

  Changed paths:
    M llvm/lib/Target/ARM/ARMTargetTransformInfo.cpp
    M llvm/lib/Target/ARM/ARMTargetTransformInfo.h
    M llvm/test/CodeGen/Thumb2/LowOverheadLoops/fast-fp-loops.ll
    M llvm/test/CodeGen/Thumb2/LowOverheadLoops/mve-float-loops.ll
    M llvm/test/CodeGen/Thumb2/LowOverheadLoops/mve-tail-data-types.ll
    M llvm/test/CodeGen/Thumb2/LowOverheadLoops/vector-arith-codegen.ll
    M llvm/test/CodeGen/Thumb2/mve-gather-ptrs.ll
    M llvm/test/CodeGen/Thumb2/mve-shifts-scalar.ll
    M llvm/test/CodeGen/Thumb2/mve-vldst4.ll
    M llvm/test/CodeGen/Thumb2/mve-vmla.ll

  Log Message:
  -----------
  [ARM] Favour post inc for MVE loops

We were previously not necessarily favouring postinc for the MVE loads
and stores, leading to extra code prior to the loop to set up the
preinc. MVE in general can benefit from postinc (as we don't have
unrolled loops), and certain instructions like the VLD2's only post-inc
versions are available.

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


  Commit: d6075726b90184c2f3ff111991e92b21ee6b1475
      https://github.com/llvm/llvm-project/commit/d6075726b90184c2f3ff111991e92b21ee6b1475
  Author: David Green <david.green at arm.com>
  Date:   2020-01-20 (Mon, 20 Jan 2020)

  Changed paths:
    M llvm/test/CodeGen/Thumb2/mve-intrinsics/vld24.ll
    A llvm/test/CodeGen/Thumb2/mve-vld2-post.ll
    A llvm/test/CodeGen/Thumb2/mve-vld4-post.ll
    A llvm/test/CodeGen/Thumb2/mve-vst2-post.ll
    A llvm/test/CodeGen/Thumb2/mve-vst4-post.ll

  Log Message:
  -----------
  [ARM] MVE VLDn post inc tests. NFC


  Commit: ff2e67a4f708e786b8c39f35756d843ed6a822e7
      https://github.com/llvm/llvm-project/commit/ff2e67a4f708e786b8c39f35756d843ed6a822e7
  Author: David Green <david.green at arm.com>
  Date:   2020-01-20 (Mon, 20 Jan 2020)

  Changed paths:
    M llvm/include/llvm/IR/IntrinsicsARM.td
    M llvm/lib/Target/ARM/ARMISelDAGToDAG.cpp
    M llvm/lib/Target/ARM/ARMISelLowering.cpp
    M llvm/lib/Target/ARM/ARMInstrMVE.td
    M llvm/test/CodeGen/Thumb2/mve-intrinsics/vld24.ll
    M llvm/test/CodeGen/Thumb2/mve-multivec-spill.ll
    M llvm/test/CodeGen/Thumb2/mve-vld2-post.ll
    M llvm/test/CodeGen/Thumb2/mve-vld2.ll
    M llvm/test/CodeGen/Thumb2/mve-vld4-post.ll
    M llvm/test/CodeGen/Thumb2/mve-vld4.ll
    M llvm/test/CodeGen/Thumb2/mve-vst2-post.ll
    M llvm/test/CodeGen/Thumb2/mve-vst2.ll
    M llvm/test/CodeGen/Thumb2/mve-vst4-post.ll
    M llvm/test/CodeGen/Thumb2/mve-vst4.ll

  Log Message:
  -----------
  [ARM] MVE VLDn postinc

This adds Post inc variants of the VLD2/4 and VST2/4 instructions in
MVE. It uses the same mechanism/nodes as Neon, transforming the
intrinsic+add pair into a ARMISD::VLD2_UPD, which gets selected to a
post-inc instruction. The code to do that is mostly taken from the
existing Neon code, but simplified as less variants are needed.

It also fills in some getTgtMemIntrinsic for the arm.mve.vld2/4
instrinsics, which allow the nodes to have MMO's, calculated as the full
length to the memory being loaded/stored.

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


Compare: https://github.com/llvm/llvm-project/compare/eaab1bf21e1d...ff2e67a4f708


More information about the All-commits mailing list