]> granicus.if.org Git - llvm/commit
[ARM][MVE] validForTailPredication insts
authorSam Parker <sam.parker@arm.com>
Tue, 15 Oct 2019 13:12:51 +0000 (13:12 +0000)
committerSam Parker <sam.parker@arm.com>
Tue, 15 Oct 2019 13:12:51 +0000 (13:12 +0000)
commitc0b7807290aa3f0c0cf19248bf17ba22d1467c24
treedf73e50e613a543e393579f7ab759da08acc2c9e
parent245690544de2a29297b08f91bdd588867a043ba8
[ARM][MVE] validForTailPredication insts

Reverse the logic for valid tail predication instructions and create
a whitelist instead. Added other instruction groups that aren't
obviously safe:
- instructions that 'narrow' their result.
- lane moves.
- byte swapping instructions.
- interleaving loads and stores.
- cross-beat carries.
- top/bottom instructions.
- complex operations.

Hopefully we should be able to add more of these instructions to the
whitelist, once we have a more concrete idea of the transform.

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

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@374887 91177308-0d34-0410-b5e6-96231b3b80d8
lib/Target/ARM/ARMInstrFormats.td
lib/Target/ARM/ARMInstrMVE.td
lib/Target/ARM/MCTargetDesc/ARMBaseInfo.h
unittests/Target/ARM/CMakeLists.txt
unittests/Target/ARM/MachineInstrTest.cpp