HomePhabricator

[ARM][LowOverheadLoops] Add checks for narrowing

Authored by samparker on Mar 24 2020, 1:41 AM.

Description

[ARM][LowOverheadLoops] Add checks for narrowing

Modify ValidateLiveOuts to track 'FalseLaneZeros' more precisely,
including checks on specific operations that can generate non-zeros
from zero values, e.g VMVN. We can then check that any instructions
that retain some information in their output register (all narrowing
instructions) that they only use and def registers that always have
zeros in their falsely predicated bytes, whether or not tail
predication happens.

Most of the logic remains the same, just the names of the data
structures and helpers have been renamed to reflect the change in
logic. The key change, apart from the opcode checkers, is that the
FalseZeros set now strictly contains only instructions which will
always generate zeros, and not instructions that could also have
their false bytes masked away later.

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

Details

Committed
samparkerMar 24 2020, 1:41 AM
Differential Revision
D76235: [ARM][LowOverheadLoops] Add checks for narrowing
Parents
rG6f86e6bf4043: [ARM][MVE] Add target flag for narrowing insts
Branches
Unknown
Tags
Unknown