https://llvm.org/bugs/show_bug.cgi?id=28668
Bug ID: 28668 Summary: [InstCombine] missing folds for bit manipulation intrinsics Product: libraries Version: trunk Hardware: PC OS: All Status: NEW Severity: normal Priority: P Component: Scalar Optimizations Assignee: unassignedb...@nondot.org Reporter: spatel+l...@rotateright.com CC: llvm-bugs@lists.llvm.org Classification: Unclassified define i1 @ctlz_cmp(i32 %a) { %x = tail call i32 @llvm.ctlz.i32(i32 %a, i1 false) #0 %cmp = icmp eq i32 %x, 0 ; no zeros? --> all ones ret i1 %cmp } define i1 @cttz_cmp(i32 %a) { %x = tail call i32 @llvm.cttz.i32(i32 %a, i1 false) #0 %cmp = icmp eq i32 %x, 0 ; no zeros? --> all ones ret i1 %cmp } define i1 @ctpop_cmp(i32 %a) { %x = tail call i32 @llvm.ctpop.i32(i32 %a) #0 %cmp = icmp eq i32 %x, 32 ; all ones? --> no zeros ret i1 %cmp } ----------------------------------------------------------------------------- $ ./opt -instcombine more_bitz.ll -S (doesn't change anything) Note that these all work: define i1 @ctlz_cmp(i32 %a) { %x = tail call i32 @llvm.ctlz.i32(i32 %a, i1 false) nounwind readnone %cmp = icmp eq i32 %x, 32 ; all zeros? --> no ones ret i1 %cmp } define i1 @cttz_cmp(i32 %a) { %x = tail call i32 @llvm.cttz.i32(i32 %a, i1 false) nounwind readnone %cmp = icmp eq i32 %x, 32 ; all zeros? --> no ones ret i1 %cmp } define i1 @ctpop_cmp(i32 %a) { %x = tail call i32 @llvm.ctpop.i32(i32 %a) nounwind readnone %cmp = icmp eq i32 %x, 0 ; no ones? --> all zeros ret i1 %cmp } $ ./opt -instcombine more_bitz.ll -S ... define i1 @ctlz_cmp(i32 %a) { %cmp = icmp eq i32 %a, 0 ret i1 %cmp } define i1 @cttz_cmp(i32 %a) { %cmp = icmp eq i32 %a, 0 ret i1 %cmp } define i1 @ctpop_cmp(i32 %a) { %cmp = icmp eq i32 %a, 0 ret i1 %cmp } -- You are receiving this mail because: You are on the CC list for the bug.
_______________________________________________ llvm-bugs mailing list llvm-bugs@lists.llvm.org http://lists.llvm.org/cgi-bin/mailman/listinfo/llvm-bugs