[PATCH] D72629: [ARM][MVE] Disallow VPSEL for tail predication
Sam Parker via Phabricator via llvm-commits
llvm-commits at lists.llvm.org
Mon Jan 13 09:19:12 PST 2020
samparker created this revision.
samparker added reviewers: dmgreen, SjoerdMeijer.
Herald added subscribers: hiraditya, kristof.beyls.
Herald added a project: LLVM.
samparker added parent revisions: D72509: [ARM][LowOverheadLoops] Allow all MVE instrs., D72504: [ARM][LowOverheadLoops] Change predicate inspection.
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.
Repository:
rG LLVM Github Monorepo
https://reviews.llvm.org/D72629
Files:
llvm/lib/Target/ARM/ARMInstrMVE.td
llvm/lib/Target/ARM/ARMLowOverheadLoops.cpp
llvm/test/CodeGen/Thumb2/LowOverheadLoops/inloop-vpnot-1.mir
llvm/test/CodeGen/Thumb2/LowOverheadLoops/inloop-vpnot-2.mir
llvm/test/CodeGen/Thumb2/LowOverheadLoops/inloop-vpnot-3.mir
llvm/test/CodeGen/Thumb2/LowOverheadLoops/inloop-vpsel-1.mir
llvm/test/CodeGen/Thumb2/LowOverheadLoops/inloop-vpsel-2.mir
llvm/test/CodeGen/Thumb2/LowOverheadLoops/inloop-vpsel-3.mir
-------------- next part --------------
A non-text attachment was scrubbed...
Name: D72629.237707.patch
Type: text/x-patch
Size: 83518 bytes
Desc: not available
URL: <http://lists.llvm.org/pipermail/llvm-commits/attachments/20200113/78631a31/attachment.bin>
More information about the llvm-commits
mailing list