[llvm] [SelectionDAG] Fix and improve TargetLowering::SimplifySetCC (PR #87646)

via llvm-commits llvm-commits at lists.llvm.org
Mon Apr 15 12:43:27 PDT 2024


AtariDreams wrote:

> > I'm just asking if this is a miscompile or not just to make sure
> 
> No, that particular diff is not due to any miscompile. The DAG used to be something like this:
> 
> ```
>     t24: i32,ch = load<(load (s16) from %ir.y + 1, align 1, basealign 8), zext from i16> t0, t23, undef:i32
>     t21: i1 = setcc t24, Constant:i32<0>, setne:ch
> ```
> 
> and now we get
> 
> ```
>     t24: i32,ch = load<(load (s16) from %ir.y + 1, align 1, basealign 8), zext from i16> t0, t23, undef:i32
>     t26: i32 = shl t24, Constant:i32<8>
>     t21: i1 = setcc t26, Constant:i32<0>, setne:ch
> ```
> 
> So it just shifts out bits that are known to be zero before the compare. Without deeper knowledge about ARM, the result would be equivalent here.

I just looked at the diff, and the code being generated is not equivalent at all.

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


More information about the llvm-commits mailing list