[llvm] [SLP]Reduce number of alternate instruction, where possible (PR #123360)

Florian Hahn via llvm-commits llvm-commits at lists.llvm.org
Wed Jan 22 04:59:10 PST 2025


https://github.com/fhahn commented:

Looks like the current version causes some crashes on AArch64:

```
target datalayout = "e-m:o-p270:32:32-p271:32:32-p272:64:64-i64:64-i128:128-n32:64-S128-Fn32"
target triple = "arm64-apple-macosx13.0.0"

define i32 @test(ptr %c) {
entry:
  %bitlen = getelementptr i8, ptr %c, i64 136
  %0 = load i64, ptr %bitlen, align 8
  %incdec.ptr.4 = getelementptr i8, ptr %c, i64 122
  %shr45.4 = lshr i64 %0, 0
  %conv43.5 = trunc i64 %shr45.4 to i8
  %incdec.ptr.5 = getelementptr i8, ptr %c, i64 121
  store i8 %conv43.5, ptr %incdec.ptr.4, align 1
  %shr45.5 = lshr i64 %0, 0
  %conv43.6 = trunc i64 %shr45.5 to i8
  %incdec.ptr.6 = getelementptr i8, ptr %c, i64 120
  store i8 %conv43.6, ptr %incdec.ptr.5, align 1
  %conv43.7 = trunc i64 %0 to i8
  %incdec.ptr.7 = getelementptr i8, ptr %c, i64 119
  store i8 %conv43.7, ptr %incdec.ptr.6, align 1
  %arrayidx38.1 = getelementptr i8, ptr %c, i64 144
  %1 = load i64, ptr %arrayidx38.1, align 8
  %conv43.145 = trunc i64 %1 to i8
  %incdec.ptr.146 = getelementptr i8, ptr %c, i64 118
  store i8 %conv43.145, ptr %incdec.ptr.7, align 1
  %shr45.147 = lshr i64 %1, 0
  %conv43.1.1 = trunc i64 %shr45.147 to i8
  %incdec.ptr.1.1 = getelementptr i8, ptr %c, i64 117
  store i8 %conv43.1.1, ptr %incdec.ptr.146, align 1
  %shr45.1.1 = lshr i64 %1, 0
  %conv43.2.1 = trunc i64 %shr45.1.1 to i8
  %incdec.ptr.2.1 = getelementptr i8, ptr %c, i64 116
  store i8 %conv43.2.1, ptr %incdec.ptr.1.1, align 1
  %shr45.2.1 = lshr i64 %1, 0
  %conv43.3.1 = trunc i64 %shr45.2.1 to i8
  %incdec.ptr.3.1 = getelementptr i8, ptr %c, i64 115
  store i8 %conv43.3.1, ptr %incdec.ptr.2.1, align 1
  %shr45.3.1 = lshr i64 %1, 0
  %conv43.4.1 = trunc i64 %shr45.3.1 to i8
  store i8 %conv43.4.1, ptr %incdec.ptr.3.1, align 1
  ret i32 0
}

Assertion failed: ((!isa<FixedVectorType>(VTy) || (Index + NumSubElts) <= (int)cast<FixedVectorType>(VTy)->getNumElements()) && "SK_InsertSubvector index out of range"), function getInsertSubvectorOverhead, file BasicTTIImpl.h, line 166.
```

https://github.com/llvm/llvm-project/pull/123360


More information about the llvm-commits mailing list