Hi, For the following loop represented in llvm IR: for.body.lr.ph: ; preds = %if.end19 %conv23 = zext i8 %conv2 to i32 %3 = zext i8 %ucInputNum.addr.0 to i64 %4 = shl i64 %3, 2 br label %for.body for.body: ; preds = %for.body, %for.body.lr.ph %lsr.iv = phi i64 [ %lsr.iv.next, %for.body ], [ 0, %for.body.lr.ph ] %ulTemp.0101 = phi i32 [ 0, %for.body.lr.ph ], [ %phitmp, %for.body ] ...... %not.cmp39 = xor i1 %cmp39, true %cond48 = zext i1 %not.cmp39 to i32 %add49 = add nuw nsw i32 %ulTemp.0101, %cond48 %phitmp = and i32 %add49, 65535 <------ A %lsr.iv.next = add nuw nsw i64 %lsr.iv, 4 %tmp = trunc i64 %lsr.iv.next to i32 %tmp106 = trunc i64 %4 to i32 %exitcond = icmp eq i32 %tmp106, %tmp br i1 %exitcond, label %for.end, label %for.body for.end: ...... The instruction A: %phitmp = and i32 %add49, 65535 is redundant and can be removed, because the trip count is at most 10 bits, and %add49 (from 0) is incremented by at most 1 per iteration. That is %add49 is at most 10 bits and there is no need for the 16-bit mask of and operation. Where and how should this optimization implemented? Thanks. Best, Ning [cid:image001.jpg at 01D25BA7.447BB630] Ning Xie Huawei Canada Research Centre O. +1 905-944-5000 ext. 7587 Email: ning.xie at huawei.com<mailto:ning.xie at huawei.com> www.huawei.ca<http://www.huawei.ca/> [Facebook] <https://www.facebook.com/HuaweimobileCAN/> [Instagram] <https://www.instagram.com/huaweicanada/> [LinkedIn] <https://www.linkedin.com/company-beta/3014?pathWildcard=3014> [Twitter] <https://twitter.com/huawei_canada?lang=en> This e-mail is intended only for the named recipient(s) and may contain information that is privileged, confidential to Huawei Technologies Canada Co., Ltd. and/or exempt from disclosure under applicable law. No waiver of privilege, confidence or otherwise is intended by virtue of communication via the internet. Any unauthorized use, dissemination or copying is strictly prohibited. If you have received this e-mail in error, or are not named as a recipient, please immediately notify the sender and destroy all copies of this e-mail. -------------- next part -------------- An HTML attachment was scrubbed... URL: <http://lists.llvm.org/pipermail/llvm-dev/attachments/20190206/b403a501/attachment.html> -------------- next part -------------- A non-text attachment was scrubbed... Name: image001.jpg Type: image/jpeg Size: 4841 bytes Desc: image001.jpg URL: <http://lists.llvm.org/pipermail/llvm-dev/attachments/20190206/b403a501/attachment.jpg> -------------- next part -------------- A non-text attachment was scrubbed... Name: image002.jpg Type: image/jpeg Size: 724 bytes Desc: image002.jpg URL: <http://lists.llvm.org/pipermail/llvm-dev/attachments/20190206/b403a501/attachment-0001.jpg> -------------- next part -------------- A non-text attachment was scrubbed... Name: image003.jpg Type: image/jpeg Size: 768 bytes Desc: image003.jpg URL: <http://lists.llvm.org/pipermail/llvm-dev/attachments/20190206/b403a501/attachment-0002.jpg> -------------- next part -------------- A non-text attachment was scrubbed... Name: image004.jpg Type: image/jpeg Size: 744 bytes Desc: image004.jpg URL: <http://lists.llvm.org/pipermail/llvm-dev/attachments/20190206/b403a501/attachment-0003.jpg> -------------- next part -------------- A non-text attachment was scrubbed... Name: image005.jpg Type: image/jpeg Size: 749 bytes Desc: image005.jpg URL: <http://lists.llvm.org/pipermail/llvm-dev/attachments/20190206/b403a501/attachment-0004.jpg>