[PATCH] D72629: [ARM][MVE] Disallow VPSEL for tail predication

Dave Green via Phabricator via llvm-commits llvm-commits at lists.llvm.org
Mon Jan 13 10:26:00 PST 2020


dmgreen added a comment.

Sounds good. I think that if we wanted to make VPSEL work, it would be better to try to convert them to VMOVt in a VPT block. (Although if there is only one of them, creating the block maybe more overhead. Hopefully the VCMP can be folded in).

Does VPNOT not need to be explicitly excluded because they are def's anyway? Might be worth leaving a comment to explain that to others (or us in the future). We might also want to say any instruction with an Else predicate (not a Then predicate) would be invalid too. But we don't generate those anywhere yet, so that can be separate.

There are a lot of large tests and it's hard to see what has changed and what hasn't with the patch. Can you add a quick comment to each that says what it's trying to test? And maybe if the MIR is modified. inloop-vpsel-1.mir and inloop-vpsel-3.mir seem to be the same.



================
Comment at: llvm/test/CodeGen/Thumb2/LowOverheadLoops/inloop-vpnot-2.mir:224
+    MVE_VPST 4, implicit $vpr
+    renamable $vpr = MVE_VPNOT renamable $vpr, 0, killed renamable $vpr
+    renamable $r5 = MVE_VSTRWU32_post renamable $q0, killed renamable $r5, 16, 1, killed renamable $vpr :: (store 16 into %ir.lsr.cast.e, align 4)
----------------
This is a vpnot inside an VPT block? Crazy

This wasn't code-gen'd right? I don't think VPNOT of VPSEL should end up inside a VPT block at present. They are free-standing. (And VPNOT should turn the following instructions into "Else's", not "Then's".


Repository:
  rG LLVM Github Monorepo

CHANGES SINCE LAST ACTION
  https://reviews.llvm.org/D72629/new/

https://reviews.llvm.org/D72629





More information about the llvm-commits mailing list