Issue 209023
Summary [SLPVectorizer] nuw not dropped when converting sub to add
Labels miscompilation, llvm:SLPVectorizer
Assignees
Reporter nikic
    ```llvm
; RUN: opt -passes=slp-vectorizer -slp-threshold=-1000 -mtriple=x86_64 < %s
define void @src(ptr %p) {
  %p0 = getelementptr inbounds i32, ptr %p, i64 0
  %p1 = getelementptr inbounds i32, ptr %p, i64 1
  %p2 = getelementptr inbounds i32, ptr %p, i64 2
  %p3 = getelementptr inbounds i32, ptr %p, i64 3
  %x0 = load i32, ptr %p0
  %x1 = load i32, ptr %p1
 %x2 = load i32, ptr %p2
  %x3 = load i32, ptr %p3
  %a0 = add nuw i32 %x0, 3
  %a1 = add nuw i32 %x1, 7
  %a2 = add nuw i32 %x2, 1
  %a3 = sub nuw i32 %x3, 5
  store i32 %a0, ptr %p0
  store i32 %a1, ptr %p1
  store i32 %a2, ptr %p2
  store i32 %a3, ptr %p3
  ret void
}

define void @tgt(ptr %p) {
  %p0 = getelementptr inbounds i32, ptr %p, i64 0
  %1 = load <4 x i32>, ptr %p0, align 4
  %2 = add nuw <4 x i32> %1, <i32 3, i32 7, i32 1, i32 -5>
  store <4 x i32> %2, ptr %p0, align 4
  ret void
}
```
Similar to https://github.com/llvm/llvm-project/issues/206474, but for `nuw` we should just always drop the flag when negating.
_______________________________________________
llvm-bugs mailing list
[email protected]
https://lists.llvm.org/cgi-bin/mailman/listinfo/llvm-bugs

Reply via email to