diff options
| author | David Green <david.green@arm.com> | 2019-08-15 12:54:47 +0000 |
|---|---|---|
| committer | David Green <david.green@arm.com> | 2019-08-15 12:54:47 +0000 |
| commit | 3a99101812de51ac452bd078eab2474eac5d43ce (patch) | |
| tree | 06a1d77ac57e2233fc10412bce599d8d02321757 /llvm/lib/Target/ARM | |
| parent | 57d459309dbbf252dfee7d235f9b17936abca3ad (diff) | |
| download | bcm5719-llvm-3a99101812de51ac452bd078eab2474eac5d43ce.tar.gz bcm5719-llvm-3a99101812de51ac452bd078eab2474eac5d43ce.zip | |
[ARM] Fix alignment checks for BE VLDRH
We need to allow any alignment at least 2, not just exactly 2, so that the big
endian loads and stores can be selected successfully. I've also added extra BE
testing for the load and store tests.
Thanks to Oliver for the report.
Differential Revision: https://reviews.llvm.org/D66222
llvm-svn: 368996
Diffstat (limited to 'llvm/lib/Target/ARM')
| -rw-r--r-- | llvm/lib/Target/ARM/ARMInstrMVE.td | 4 |
1 files changed, 2 insertions, 2 deletions
diff --git a/llvm/lib/Target/ARM/ARMInstrMVE.td b/llvm/lib/Target/ARM/ARMInstrMVE.td index cd670819fad..ce51322f913 100644 --- a/llvm/lib/Target/ARM/ARMInstrMVE.td +++ b/llvm/lib/Target/ARM/ARMInstrMVE.td @@ -4846,11 +4846,11 @@ def aligned32_post_store : PatFrag<(ops node:$val, node:$ptr, node:$offset), }]>; def aligned16_pre_store : PatFrag<(ops node:$val, node:$ptr, node:$offset), (pre_store node:$val, node:$ptr, node:$offset), [{ - return cast<StoreSDNode>(N)->getAlignment() == 2; + return cast<StoreSDNode>(N)->getAlignment() >= 2; }]>; def aligned16_post_store : PatFrag<(ops node:$val, node:$ptr, node:$offset), (post_store node:$val, node:$ptr, node:$offset), [{ - return cast<StoreSDNode>(N)->getAlignment() == 2; + return cast<StoreSDNode>(N)->getAlignment() >= 2; }]>; let Predicates = [HasMVEInt, IsLE] in { |

