[llvm] [RISCV][TTI] Add shuffle costing for masked slide lowering (PR #128537)
Alexey Bataev via llvm-commits
llvm-commits at lists.llvm.org
Mon Feb 24 11:46:08 PST 2025
================
@@ -413,6 +413,36 @@ bool llvm::getShuffleDemandedElts(int SrcWidth, ArrayRef<int> Mask,
return true;
}
+bool llvm::isMaskedSlidePair(ArrayRef<int> Mask, int NumElts,
+ std::pair<int, int> SrcInfo[2]) {
+ int SignalValue = NumElts * 2;
+ SrcInfo[0] = {-1, SignalValue};
+ SrcInfo[1] = {-1, SignalValue};
+ for (unsigned i = 0; i != Mask.size(); ++i) {
+ int M = Mask[i];
+ if (M < 0)
+ continue;
+ int Src = M >= (int)NumElts;
+ int Diff = (int)i - (M % NumElts);
+ bool Match = false;
+ for (int j = 0; j < 2; j++) {
+ if (SrcInfo[j].first == -1) {
+ assert(SrcInfo[j].second == SignalValue);
+ SrcInfo[j].first = Src;
+ SrcInfo[j].second = Diff;
+ }
+ if (SrcInfo[j].first == Src && SrcInfo[j].second == Diff) {
+ Match = true;
+ break;
+ }
----------------
alexey-bataev wrote:
```suggestion
if (SrcInfo[j].first != Src || SrcInfo[j].second != Diff)
return false;
```
https://github.com/llvm/llvm-project/pull/128537
More information about the llvm-commits
mailing list