Issue 89669
Summary miscompile of vector double-negation + select by InstCombine
Labels miscompilation, llvm:instcombine
Assignees
Reporter regehr
    https://alive2.llvm.org/ce/z/N1RVAr

this:
```llvm
define <4 x i32> @f(<4 x i32> %0) {
  %2 = sub <4 x i32> zeroinitializer, %0
 %3 = select <4 x i1> <i1 false, i1 true, i1 poison, i1 poison>, <4 x i32> %2, <4 x i32> %0
  %4 = sub <4 x i32> zeroinitializer, %3
  ret <4 x i32> %4
}
```
is being optimized to:
```llvm
define <4 x i32> @f(<4 x i32> %0) {
  ret <4 x i32> %0
}
```
here's Alive's work about what this is wrong:
```
ERROR: Value mismatch

Example:
<4 x i32> %#0 = < #x00000001 (1), poison, poison, poison >

Source:
<4 x i32> %#2 = < #xffffffff (4294967295, -1), poison, poison, poison >
<4 x i32> %#3 = < #x00000001 (1), poison, poison, poison >
<4 x i32> %#4 = < #xffffffff (4294967295, -1), poison, poison, poison >

Target:
Source value: < #xffffffff (4294967295, -1), poison, poison, poison >
Target value: < #x00000001 (1), poison, poison, poison >
```

cc @nunoplopes @hatsunespica


_______________________________________________
llvm-bugs mailing list
llvm-bugs@lists.llvm.org
https://lists.llvm.org/cgi-bin/mailman/listinfo/llvm-bugs

Reply via email to