[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