<div dir="auto"><br><div class="gmail_extra" dir="auto"><br><div class="gmail_quote">On Oct 26, 2017 9:04 AM, "emanuel stiebler" <<a href="mailto:emu@e-bbes.com" target="_blank">emu@e-bbes.com</a>> wrote:<br type="attribution"><blockquote class="m_8244701099308911606quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex"><div class="m_8244701099308911606quoted-text">On 2017-10-25 17:59, Ken Phillis Jr wrote:<br>
<br>
<blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex">
New CPUID Flags:<br>
SIMD_INTEGER8<br>
SIMD_INTEGER16<br>
SIMD_INTEGER32<br>
SIMD_INTEGER64<br>
SIMD_HALF_PRECISION_FLOAT<br>
SIMD_SINGLE_PRECISION_FLOAT<br>
SIMD_DOUBLE_PRECISION_FLOAT<br>
<br>
</blockquote>
<br></div>
Just a short one,<br>
for the floating points, I would prefer<br>
<br>
SIMD_FLOAT16<br>
SIMD_FLOAT32<br>
SIMD_FLOAT64<br>
SIMD_FLOAT128<br></blockquote></div></div><div dir="auto"><br></div><div dir="auto">I would suggest shortening those further.</div><div dir="auto"><br></div><div dir="auto">simd.u8</div><div dir="auto">simd.s16</div><div dir="auto">simd.f32</div><div dir="auto">simd.f16</div><div dir="auto"><br></div><div dir="auto">* dot notation is a bit nicer</div><div dir="auto">* u := unsigned</div><div dir="auto">* s := signed</div><div dir="auto">* f32 := IEEE 754 32-bit float</div><div dir="auto">* f16 := half precision</div><div dir="auto">* similarly, f64, u64, ...</div><div dir="auto"><br></div><div dir="auto">BGB - could you mention on the list how the FPU design differs between SH and x86/mmx ?</div><div dir="auto"><br></div><div dir="auto">Having ported FFTW over to ARM neon I'm extensively familiar with it and know it is strikingly similar to mmx. I know that (at least on ARM) the contention you've mentioned is quite significant. Pipeline stalls must be precisely inserted to ensure correct results for simd instructions are obtained at the correct times, etc. Vector loads and stores, cache-prefetching, and i/o alignment were critical.</div><div dir="auto"><br></div><div dir="auto">For A8 that meant fine-tuning the instructions generated by the compiler. There were also some memory barriers, iirc. Mostly hand-written assembly. Intrinsics were ~ meh.</div><div dir="auto"><br></div><div dir="auto">I did work on it before the A9 OOO pipeline was introduced, but also know that having an out-of-order unit helped simd on ARM.<br></div><div dir="auto"><br></div><div dir="auto">Again, I'm really curious how the FPU design differs, because if SH / J-Core can avoid that mess, it would be better off.</div><div dir="auto"><br></div><div dir="auto"><br></div></div>