<div dir="ltr">Is the address of the call here supposed to be 0?<div><br></div><div>

<span style="color:rgb(34,34,34);font-family:arial,sans-serif;font-size:12.8px;font-style:normal;font-variant-ligatures:normal;font-variant-caps:normal;font-weight:400;letter-spacing:normal;text-align:start;text-indent:0px;text-transform:none;white-space:normal;word-spacing:0px;background-color:rgb(255,255,255);text-decoration-style:initial;text-decoration-color:initial;float:none;display:inline">  245:         movabsq $0, %rax</span><br style="color:rgb(34,34,34);font-family:arial,sans-serif;font-size:12.8px;font-style:normal;font-variant-ligatures:normal;font-variant-caps:normal;font-weight:400;letter-spacing:normal;text-align:start;text-indent:0px;text-transform:none;white-space:normal;word-spacing:0px;background-color:rgb(255,255,255);text-decoration-style:initial;text-decoration-color:initial"><span style="color:rgb(34,34,34);font-family:arial,sans-serif;font-size:12.8px;font-style:normal;font-variant-ligatures:normal;font-variant-caps:normal;font-weight:400;letter-spacing:normal;text-align:start;text-indent:0px;text-transform:none;white-space:normal;word-spacing:0px;background-color:rgb(255,255,255);text-decoration-style:initial;text-decoration-color:initial;float:none;display:inline">  255:         callq   *%rax</span>

<br></div></div><div class="gmail_extra"><br clear="all"><div><div class="gmail_signature" data-smartmail="gmail_signature">~Craig</div></div>
<br><div class="gmail_quote">On Fri, Apr 20, 2018 at 8:54 AM, Tom Hudson via Phabricator <span dir="ltr"><<a href="mailto:reviews@reviews.llvm.org" target="_blank">reviews@reviews.llvm.org</a>></span> wrote:<br><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex">tomhudson added a comment.<br>
<br>
The simplest example I have of what's breaking is the llvmpipe test code; src/gallium/drivers/llvmpipe/<wbr>lp_test_blend.c from <a href="https://cgit.freedesktop.org/mesa/mesa/" rel="noreferrer" target="_blank">https://cgit.freedesktop.org/<wbr>mesa/mesa/</a>. Both 17.0.3 and 18.0.0 break.<br>
<br>
llvmpipe was explicitly issuing sse2.psubs and sse2.padds in src/gallium/auxiliary/gallivm/<wbr>lp_bld_arit.c; that produced working code before this patch, but after this patch immediately crashes. By removing the issue of the sse2 padds/psubs our test case works again.<br>
<br>
Debug output looks like this:<br>
<br>
llc -mattr option(s): +sse2,+cx16,+sahf,-tbm,-<wbr>avx512ifma,-sha,-gfni,-fma4,-<wbr>vpclmulqdq,-prfchw,+bmi2,-<wbr>cldemote,+fsgsbase,-xsavec,+<wbr>popcnt,+aes,-avx512bitalg,-<wbr>xsaves,-avx512er,-avx512vnni,-<wbr>avx512vpopcntdq,-clwb,-<wbr>avx512f,-clzero,-pku,+mmx,-<wbr>lwp,-rdpid,-xop,-rdseed,-ibt,-<wbr>sse4a,-avx512bw,-clflushopt,+<wbr>xsave,-avx512vbmi2,-avx512vl,-<wbr>avx512cd,+avx,-vaes,-rtm,+fma,<wbr>+bmi,+rdrnd,-mwaitx,+sse4.1,+<wbr>sse4.2,+avx2,-wbnoinvd,+sse,+<wbr>lzcnt,+pclmul,-prefetchwt1,+<wbr>f16c,+ssse3,-sgx,-shstk,+cmov,<wbr>-avx512vbmi,+movbe,+xsaveopt,-<wbr>avx512dq,-adx,-avx512pf,+sse3<br>
llc -mcpu option: haswell<br>
<br>
test:<br>
<br>
    0:         pushq   %rbp<br>
    1:         movq    %rsp, %rbp<br>
    4:         pushq   %rbx<br>
    5:         subq    $40, %rsp<br>
    9:         movq    %r8, %rbx<br>
   12:         vmovdqa (%rdi), %xmm0<br>
   16:         vmovdqa (%rdx), %xmm1<br>
   20:         movabsq $140737174016000, %rax<br>
   30:         vpand   (%rax), %xmm0, %xmm2<br>
   34:         vpsrld  $8, %xmm2, %xmm3<br>
   39:         vpor    %xmm2, %xmm3, %xmm2<br>
   43:         vpcmpeqd        %xmm3, %xmm3, %xmm3<br>
   47:         vpxor   %xmm3, %xmm0, %xmm3<br>
   51:         movabsq $140737174016032, %rax<br>
   61:         vpbroadcastd    (%rax), %xmm4<br>
   66:         vmovdqa %xmm4, -48(%rbp)<br>
   71:         vpblendvb       %xmm4, (%rsi), %xmm3, %xmm3<br>
   77:         vpsrld  $16, %xmm2, %xmm4<br>
   82:         vpor    %xmm2, %xmm4, %xmm2<br>
   86:         vpmovzxbw       %xmm0, %xmm4<br>
   91:         vpxor   %xmm5, %xmm5, %xmm5<br>
   95:         vpunpckhbw      %xmm5, %xmm0, %xmm0<br>
   99:         vpmovzxbw       %xmm2, %xmm6<br>
  104:         vpmullw %xmm4, %xmm6, %xmm4<br>
  108:         vpunpckhbw      %xmm5, %xmm2, %xmm2<br>
  112:         vpmullw %xmm0, %xmm2, %xmm0<br>
  116:         vpsrlw  $8, %xmm4, %xmm2<br>
  121:         movabsq $140737174016016, %rax<br>
  131:         vmovdqa (%rax), %xmm6<br>
  135:         vpaddw  %xmm6, %xmm4, %xmm4<br>
  139:         vpaddw  %xmm4, %xmm2, %xmm2<br>
  143:         vpsrlw  $8, %xmm2, %xmm2<br>
  148:         vpsrlw  $8, %xmm0, %xmm4<br>
  153:         vpaddw  %xmm6, %xmm0, %xmm0<br>
  157:         vpaddw  %xmm0, %xmm4, %xmm0<br>
  161:         vpsrlw  $8, %xmm0, %xmm0<br>
  166:         vpackuswb       %xmm0, %xmm2, %xmm0<br>
  170:         vpmovzxbw       %xmm1, %xmm2<br>
  175:         vpunpckhbw      %xmm5, %xmm1, %xmm1<br>
  179:         vpmovzxbw       %xmm3, %xmm4<br>
  184:         vpmullw %xmm4, %xmm2, %xmm2<br>
  188:         vpunpckhbw      %xmm5, %xmm3, %xmm3<br>
  192:         vpmullw %xmm3, %xmm1, %xmm1<br>
  196:         vpsrlw  $8, %xmm2, %xmm3<br>
  201:         vpaddw  %xmm6, %xmm2, %xmm2<br>
  205:         vpaddw  %xmm2, %xmm3, %xmm2<br>
  209:         vpsrlw  $8, %xmm2, %xmm2<br>
  214:         vpsrlw  $8, %xmm1, %xmm3<br>
  219:         vpaddw  %xmm6, %xmm1, %xmm1<br>
  223:         vpaddw  %xmm1, %xmm3, %xmm1<br>
  227:         vpsrlw  $8, %xmm1, %xmm1<br>
  232:         vpackuswb       %xmm1, %xmm2, %xmm1<br>
  236:         vpminub %xmm1, %xmm0, %xmm2<br>
  240:         vmovdqa %xmm2, -32(%rbp)<br>
  245:         movabsq $0, %rax<br>
  255:         callq   *%rax<br>
  257:         vmovdqa -48(%rbp), %xmm1<br>
  262:         vpblendvb       %xmm1, -32(%rbp), %xmm0, %xmm0<br>
  269:         vmovdqa %xmm0, (%rbx)<br>
  273:         addq    $40, %rsp<br>
  277:         popq    %rbx<br>
  278:         popq    %rbp<br>
  279:         retq<br>
<br>
After we return from the callq, we seem to have a corrupt stack.<br>
<div class="HOEnZb"><div class="h5"><br>
<br>
Repository:<br>
  rL LLVM<br>
<br>
<a href="https://reviews.llvm.org/D44785" rel="noreferrer" target="_blank">https://reviews.llvm.org/<wbr>D44785</a><br>
<br>
<br>
<br>
</div></div></blockquote></div><br></div>