<div dir="ltr">Try using "Yk" instead of "k". That should pick from k1-k7.<div><br clear="all"><div><div dir="ltr" class="gmail_signature" data-smartmail="gmail_signature">~Craig</div></div><br></div></div><br><div class="gmail_quote"><div dir="ltr" class="gmail_attr">On Thu, Nov 4, 2021 at 9:14 AM Scott Manley via llvm-dev <<a href="mailto:llvm-dev@lists.llvm.org">llvm-dev@lists.llvm.org</a>> wrote:<br></div><blockquote class="gmail_quote" style="margin:0px 0px 0px 0.8ex;border-left:1px solid rgb(204,204,204);padding-left:1ex"><div dir="ltr">Hi, <div><br></div><div>I am getting an abort in llc with 'main' and LLVM 13.0 when I run clang at -O0 for the following test case:<br><br><font face="monospace">#include <immintrin.h><br>void small(float *b, __m512 c, __mmask16 mask)<br>{<br>  __m512 a = _mm512_setzero_ps();<br>  asm("vfmadd231ps (%1), %2, %0 %{%3%}": "+v"(a): "r"(b), "v"(c), "k" (mask));<br>  _mm512_mask_storeu_ps(b, mask, a);<br>}<br><br>clang -S bug.c -march=skylake-avx512 -O0<br><br>bug.c:6:7: error: Register k0 can't be used as write mask<br>  asm("vfmadd231ps (%1), %2, %0 %{%3%}": "+v"(a): "r"(b), "v"(c), "k" (mask));<br>      ^<br><inline asm>:1:36: note: instantiated into assembly here<br>        vfmadd231ps (%rax), %zmm1, %zmm0 {%k0}<br><br><br>Works: clang -S bug.c -march=skylake-avx512 -O2 // chooses k1</font><br><br>The first observation I have is that there is no write of k0 on the fma instruction. So even if I wrote my test case to explicitly use k0, there is still the abort at -O0. This feels like a bug.<br><br>The second thing I have -- is it required that I specify the mask register I want since k0 is "special"? Or is llc incorrectly choosing the k0 register in the first place?<br><br>Thanks!<br><br>Scott<br></div></div>
_______________________________________________<br>
LLVM Developers mailing list<br>
<a href="mailto:llvm-dev@lists.llvm.org" target="_blank">llvm-dev@lists.llvm.org</a><br>
<a href="https://lists.llvm.org/cgi-bin/mailman/listinfo/llvm-dev" rel="noreferrer" target="_blank">https://lists.llvm.org/cgi-bin/mailman/listinfo/llvm-dev</a><br>
</blockquote></div>