[all-commits] [llvm/llvm-project] 404251: [ARM][MVE] Tail predicate in the presence of vcmp

Sam Parker via All-commits all-commits at lists.llvm.org
Fri Dec 20 00:43:05 PST 2019


  Branch: refs/heads/master
  Home:   https://github.com/llvm/llvm-project
  Commit: 404251833521770732646c4348f774b94b40df72
      https://github.com/llvm/llvm-project/commit/404251833521770732646c4348f774b94b40df72
  Author: Sam Parker <sam.parker at arm.com>
  Date:   2019-12-20 (Fri, 20 Dec 2019)

  Changed paths:
    M llvm/lib/Target/ARM/ARMLowOverheadLoops.cpp
    M llvm/lib/Target/ARM/MVEVPTBlockPass.cpp
    M llvm/lib/Target/ARM/Utils/ARMBaseInfo.h
    M llvm/test/CodeGen/Thumb2/LowOverheadLoops/cond-vector-reduce-mve-codegen.ll
    A llvm/test/CodeGen/Thumb2/LowOverheadLoops/disjoint-vcmp.mir
    A llvm/test/CodeGen/Thumb2/LowOverheadLoops/vctp-in-vpt-2.mir
    A llvm/test/CodeGen/Thumb2/LowOverheadLoops/vctp-in-vpt.mir

  Log Message:
  -----------
  [ARM][MVE] Tail predicate in the presence of vcmp

Record the discovered VPT blocks while checking for validity and, for
now, only handle blocks that begin with VPST and not VPT. We're now
allowing more than one instruction to define vpr, but each block must
somehow be predicated using the vctp. This leaves us with several
scenarios which need fixing up:
1) A VPT block with is only predicated by the vctp and has no
   internal vpr defs.
2) A VPT block which is only predicated by the vctp but has an
   internal vpr def.
3) A VPT block which is predicated upon the vctp as well as another
   vpr def.
4) A VPT block which is not predicated upon a vctp, but contains it
   and all instructions within the block are predicated upon in.

The changes needed are, for:
1) The easy one, just remove the vpst and unpredicate the
   instructions in the block.
2) Remove the vpst and unpredicate the instructions up to the
   internal vpr def. Need insert a new vpst to predicate the
   remaining instructions.
3) No nothing.
4) The vctp will be inside a vpt and the instruction will be removed,
   so adjust the size of the mask on the vpst.

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




More information about the All-commits mailing list