[all-commits] [llvm/llvm-project] e73b20: [ARM][MVE] Disallow VPSEL for tail predication
Sam Parker via All-commits
all-commits at lists.llvm.org
Tue Jan 14 03:41:39 PST 2020
Branch: refs/heads/master
Home: https://github.com/llvm/llvm-project
Commit: e73b20c57dc7a8c847ebadeb7e19c08ec84f5bd7
https://github.com/llvm/llvm-project/commit/e73b20c57dc7a8c847ebadeb7e19c08ec84f5bd7
Author: Sam Parker <sam.parker at arm.com>
Date: 2020-01-14 (Tue, 14 Jan 2020)
Changed paths:
M llvm/lib/Target/ARM/ARMInstrMVE.td
M llvm/lib/Target/ARM/ARMLowOverheadLoops.cpp
A llvm/test/CodeGen/Thumb2/LowOverheadLoops/inloop-vpnot-1.mir
A llvm/test/CodeGen/Thumb2/LowOverheadLoops/inloop-vpnot-2.mir
A llvm/test/CodeGen/Thumb2/LowOverheadLoops/inloop-vpnot-3.mir
A llvm/test/CodeGen/Thumb2/LowOverheadLoops/inloop-vpsel-1.mir
A llvm/test/CodeGen/Thumb2/LowOverheadLoops/inloop-vpsel-2.mir
Log Message:
-----------
[ARM][MVE] Disallow VPSEL for tail predication
Due to the current way that we collect predicated instructions, we
can't easily handle vpsel in tail predicated loops. There are a
couple of issues:
1) It will use the VPR as a predicate operand, but doesn't have to be
instead a VPT block, which means we can assert while building up
the VPT block because we don't find another VPST to being a new
one.
2) VPSEL still requires a VPR operand even after tail predicating,
which means we can't remove it unless there is another
instruction, such as vcmp, that can provide the VPR def.
The first issue should be a relatively simple fix in the logic of the
LowOverheadLoops pass, whereas the second will require us to
represent the 'implicit' tail predication with an explicit value.
Differential Revision: https://reviews.llvm.org/D72629
More information about the All-commits
mailing list