<div dir="ltr">Hi Andrew, <div><br></div><div>Did I answer your questions? Do you have more comments on this patch? </div><div><div><br><div class="gmail_quote">On Wed, Mar 11, 2015 at 10:27 AM Jingyue Wu <<a href="mailto:jingyue@google.com">jingyue@google.com</a>> wrote:<br><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex"><div dir="ltr">Hi Andrew, <div><br></div><div>Thanks for the test! </div><div><br></div><div>That's because SLSR noticed main[main_stride] can be folded in an addressing mode for thumbv7-apple-ios. Does this decision sound reasonable? I don't know about this architecture. I changed the target triple to "nvptx64-unknown-unknown" and SLSR started working. </div><div><br></div><div>Another complication is main_stride * 2 is rewritten to main_stride << 1 which is yet to be handled. I have a TODO on that. However, this shouldn't affect %add.ptr4 in your test case. </div></div><div dir="ltr"><div><br></div><div>Jingyue</div></div><div class="gmail_extra"><br><div class="gmail_quote">On Tue, Mar 10, 2015 at 11:29 PM, Andrew Trick <span dir="ltr"><<a href="mailto:atrick@apple.com" target="_blank">atrick@apple.com</a>></span> wrote:<br><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex"><div><div><br>
> On Mar 10, 2015, at 9:09 PM, Jingyue Wu <<a href="mailto:jingyue@google.com" target="_blank">jingyue@google.com</a>> wrote:<br>
><br>
> Adds more comments and makes TTI mandatory<br>
><br>
><br>
> <a href="http://reviews.llvm.org/D7459" target="_blank">http://reviews.llvm.org/D7459</a><br>
><br>
> Files:<br>
>  lib/Transforms/Scalar/StraightLineStrengthReduce.cpp<br>
>  test/Transforms/StraightLineStrengthReduce/X86/lit.local.cfg<br>
>  test/Transforms/StraightLineStrengthReduce/X86/no-slsr.ll<br>
>  test/Transforms/StraightLineStrengthReduce/slsr-gep.ll<br>
>  test/Transforms/StraightLineStrengthReduce/slsr-mul.ll<br>
>  test/Transforms/StraightLineStrengthReduce/slsr.ll<br>
><br>
> EMAIL PREFERENCES<br>
>  <a href="http://reviews.llvm.org/settings/panel/emailpreferences/" target="_blank">http://reviews.llvm.org/settings/panel/emailpreferences/</a><br>
</div></div>> <D7459.21673.patch><br>
<br>
I was wondering about the attached test case… can you comment on why your SLSR pass fails to find a basis for %mul3? It seems that your pass needs more than one address to be scaled using a mul or gep before it will optimize anything.<br>
<br>
  %mul1 = shl nsw i32 %main_stride, 1<br>
  %add.ptr2 = getelementptr inbounds i8, i8* %main, i32 %mul1<br>
  %4 = bitcast i8* %add.ptr2 to <1 x i64>*<br>
  %5 = load <1 x i64>, <1 x i64>* %4, align 8, !tbaa !4<br>
  %mul3 = mul nsw i32 %main_stride, 3<br>
  %add.ptr4 = getelementptr inbounds i8, i8* %main, i32 %mul3<br>
  %6 = bitcast i8* %add.ptr4 to <1 x i64>*<br>
  %7 = load <1 x i64>, <1 x i64>* %6, align 8, !tbaa !4<br>
<br>
</blockquote></div><br></div>
</blockquote></div></div></div></div>