[llvm] [SelectionDAG]: Deduce known bits from SMIN and SMAX (PR #85722)

via llvm-commits llvm-commits at lists.llvm.org
Thu Mar 21 06:49:40 PDT 2024


================
@@ -267,18 +267,31 @@ define i32 @smin_known_nonzero(i32 %xx, i32 %yy) {
   ret i32 %r
 }
 
+define i32 @smin_known_zero_2(i32 %x, i32 %y) {
+; CHECK-LABEL: smin_known_zero_2:
+; CHECK:       # %bb.0:
+; CHECK-NEXT:    cmpl $-54, %edi
+; CHECK-NEXT:    movl $-54, %eax
+; CHECK-NEXT:    cmovll %edi, %eax
+; CHECK-NEXT:    rep bsfl %eax, %eax
+; CHECK-NEXT:    retq
+  %z = call i32 @llvm.smin.i32(i32 %x, i32 -54)
+  %r = call i32 @llvm.cttz.i32(i32 %z, i1 false)
+  ret i32 %r
+}
+
----------------
AtariDreams wrote:

@llvm.cttz.i32 does not work on vectors/is not vectorizable

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


More information about the llvm-commits mailing list