[llvm] [SLP]Reduce number of alternate instruction, where possible (PR #123360)
Martin Storsjö via llvm-commits
llvm-commits at lists.llvm.org
Sun Feb 2 01:58:32 PST 2025
mstorsjo wrote:
The relanded version of this is causing failed asserts:
```c++
typedef void (*filter_ss_t)(const short *, long long, short *, long long, int);
filter_ss_t pu_0_0;
template <int N, int width, int height>
void interp_vert_ss_c(const short *src, long long srcStride, short *dst,
long long dstStride, int) {
int row, col;
src -= (N / 2 - 1) * srcStride;
row = 0;
for (; row < height; row++) {
col = 0;
for (; col < width; col++) {
int sum = src[col];
sum += src[col + srcStride];
sum += src[col + 2 * srcStride];
sum += src[col + 3 * srcStride];
sum += src[col + 4 * srcStride];
sum += src[col + 5 * srcStride];
sum += src[col + 6 * srcStride] * 6;
sum += src[col + 7 * srcStride] * 7;
dst[col] = sum;
}
src += srcStride;
dst += dstStride;
}
}
void setupFilterPrimitives_c() { pu_0_0 = interp_vert_ss_c<8, 16, 4>; }
```
```console
$ clang -target x86_64-linux-gnu -c -O2 repro.cpp
clang: ../include/llvm/ADT/ArrayRef.h:260: const T& llvm::ArrayRef<T>::operator[](size_t) const [with T = int; size_t = long unsigned int]: Assertion `Index < Length && "Invalid index!"' failed.
```
I can push a revert later today unless you happen to get to fixing it sooner than that.
https://github.com/llvm/llvm-project/pull/123360
More information about the llvm-commits
mailing list