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>