[llvm] [ARM] Use VT vector size, not the array size (PR #79370)
via llvm-commits
llvm-commits at lists.llvm.org
Wed Jan 24 13:39:15 PST 2024
https://github.com/AtariDreams updated https://github.com/llvm/llvm-project/pull/79370
>From 5d6c1570f5446dc3190cc52d779a672c004b0d93 Mon Sep 17 00:00:00 2001
From: Rose <83477269+AtariDreams at users.noreply.github.com>
Date: Wed, 24 Jan 2024 16:20:50 -0500
Subject: [PATCH] [ARM] Use VT vector size, not the array size, for determining
if a shuffle corresponds to a VREV instruction
This logic matches that of AArch64's REVMask detection.
---
llvm/lib/Target/ARM/ARMTargetTransformInfo.h | 3 ++-
1 file changed, 2 insertions(+), 1 deletion(-)
diff --git a/llvm/lib/Target/ARM/ARMTargetTransformInfo.h b/llvm/lib/Target/ARM/ARMTargetTransformInfo.h
index bb4b321b5300916..e83d8b830a43cdc 100644
--- a/llvm/lib/Target/ARM/ARMTargetTransformInfo.h
+++ b/llvm/lib/Target/ARM/ARMTargetTransformInfo.h
@@ -347,6 +347,7 @@ inline bool isVREVMask(ArrayRef<int> M, EVT VT, unsigned BlockSize) {
if (EltSz != 8 && EltSz != 16 && EltSz != 32)
return false;
+ unsigned NumElts = VT.getVectorNumElements();
unsigned BlockElts = M[0] + 1;
// If the first shuffle index is UNDEF, be optimistic.
if (M[0] < 0)
@@ -355,7 +356,7 @@ inline bool isVREVMask(ArrayRef<int> M, EVT VT, unsigned BlockSize) {
if (BlockSize <= EltSz || BlockSize != BlockElts * EltSz)
return false;
- for (unsigned i = 0, e = M.size(); i < e; ++i) {
+ for (unsigned i = 0; i < NumElts; ++i) {
if (M[i] < 0)
continue; // ignore UNDEF indices
if ((unsigned)M[i] != (i - i % BlockElts) + (BlockElts - 1 - i % BlockElts))
More information about the llvm-commits
mailing list