<div dir="auto"><div><div class="gmail_quote"><div dir="ltr" class="gmail_attr">On Thu, Jul 1, 2021, 15:28 H.J. Lu 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:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex">On Thu, Jul 1, 2021 at 3:10 PM Joseph Myers <<a href="mailto:joseph@codesourcery.com" target="_blank" rel="noreferrer">joseph@codesourcery.com</a>> wrote:<br>
><br>
> On Thu, 1 Jul 2021, H.J. Lu via Gcc-patches wrote:<br>
><br>
> > 2. Return _Float16 and _Complex _Float16 values in %xmm0/%xmm1 registers.<br>
><br>
> That restricts use of _Float16 to processors with SSE.  Is that what we<br>
> want in the ABI, or should _Float16 be available with base 32-bit x86<br>
> architecture features only, much like _Float128 and the decimal FP types<br>
<br>
Yes, _Float16 requires XMM registers.<br>
<br>
> are?  (If it is restricted to SSE, we can of course ensure relevant libgcc<br>
> functions are built with SSE enabled, and likewise in glibc if that gains<br>
> _Float16 functions, though maybe with some extra complications to get<br>
> relevant testcases to run whenever possible.)<br>
><br>
<br>
_Float16 functions in libgcc should be compiled with SSE enabled.<br>
<br>
BTW, _Float16 software emulation may require more than just SSE<br>
since we need to do _Float16 load and store with XMM registers.<br>
There is no 16bit load/store for XMM registers without AVX512FP16.<br></blockquote></div></div><div dir="auto"><br></div><div dir="auto">Umm, if you just need to load/store 16-bit scalars in XMM registers you can use pextrw and pinsrw which don't require AVX. f16x8 can use any of the standard full-register load/stores.</div><div dir="auto"><br></div><div dir="auto"><a href="https://gcc.godbolt.org/z/ncznr9TM1">https://gcc.godbolt.org/z/ncznr9TM1</a></div><div dir="auto"><br></div><div dir="auto">Jacob</div></div>