<html><head><meta http-equiv="content-type" content="text/html; charset=utf-8"></head><body dir="auto">Luke and team&nbsp;<div><br></div><div>Amazing and looking forward for more contributions from world wide researchers and developers&nbsp;<br><br><div dir="ltr">Sent from my iPhone</div><div dir="ltr"><br><blockquote type="cite">On Mar 7, 2021, at 6:55 PM, Luke Kenneth Casson Leighton &lt;lkcl@lkcl.net&gt; wrote:<br><br></blockquote></div><blockquote type="cite"><div dir="ltr">





with many thanks and congratulations to Cesar for getting the first basic Cray-style Vector Loop operational in HDL, on top of OpenPOWER v3.0B and passing its first unit tests.<div><br></div><div><span style="font-size:15px"><a href="https://urldefense.proofpoint.com/v2/url?u=https-3A__git.libre-2Dsoc.org_-3Fp-3Dsoc.git-3Ba-3Dcommitdiff-3Bh-3D97136d71397f420479d601dcb80f0df4abf73d22&amp;d=DwMFaQ&amp;c=jf_iaSHvJObTbx-siA1ZOg&amp;r=8aBPJ2cn8aSMRvWfaP4ch_5Fm62iY49mlt2OEHhCq_E&amp;m=MZual1p5bGflmxyIvcqV0Xm4jKjI8XIYiv7U3zMkNSE&amp;s=r2H-i9FClOJ4GN8mk78fiMBqhseLNN4WfCgV6Ztmwrk&amp;e=">https://git.libre-soc.org/?p=soc.git;a=commitdiff;h=97136d71397f420479d601dcb80f0df4abf73d22</a></span><br></div><div><span style="font-size:15px"><br></span></div><div><span style="font-size:15px">the Simulator ISACaller was functional three weeks ago and has been used to verify the HDL's functionality through co-simulation:</span></div><div><span style="font-size:15px"><br></span></div><div><span style="font-size:15px"><a href="https://urldefense.proofpoint.com/v2/url?u=https-3A__git.libre-2Dsoc.org_-3Fp-3Dsoc.git-3Ba-3Dcommitdiff-3Bh-3D9078b2935beb4ba89dcd2af91bb5e3a0bcffbe71&amp;d=DwMFaQ&amp;c=jf_iaSHvJObTbx-siA1ZOg&amp;r=8aBPJ2cn8aSMRvWfaP4ch_5Fm62iY49mlt2OEHhCq_E&amp;m=MZual1p5bGflmxyIvcqV0Xm4jKjI8XIYiv7U3zMkNSE&amp;s=O7A0DNnjAaHpfN_nDf2-pJ7TiQVNkLAY8kZaMkVgejA&amp;e=">https://git.libre-soc.org/?p=soc.git;a=commitdiff;h=9078b2935beb4ba89dcd2af91bb5e3a0bcffbe71</a></span><br></div><div><span style="font-size:15px"><br></span></div><div><span style="font-size:15px">the unit tests for the ADD pipeline will build up progressively over time to give operational confidence (extended later with Formal Correctness Proofs).&nbsp; other pipelines will have their own extensive tests as well.</span></div><div><span style="font-size:15px"><br></span></div><div><span style="font-size:15px"><a href="https://urldefense.proofpoint.com/v2/url?u=https-3A__git.libre-2Dsoc.org_-3Fp-3Dsoc.git-3Ba-3Dblob-3Bf-3Dsrc_soc_fu_alu_test_svp64-5Fcases.py-3Bhb-3DHEAD&amp;d=DwMFaQ&amp;c=jf_iaSHvJObTbx-siA1ZOg&amp;r=8aBPJ2cn8aSMRvWfaP4ch_5Fm62iY49mlt2OEHhCq_E&amp;m=MZual1p5bGflmxyIvcqV0Xm4jKjI8XIYiv7U3zMkNSE&amp;s=5xHiIKgB4QeVYT41LiLdhL_IS5sH_jTCZunnNBnsb8U&amp;e=">https://git.libre-soc.org/?p=soc.git;a=blob;f=src/soc/fu/alu/test/svp64_cases.py;hb=HEAD</a></span><br></div><div><span style="font-size:15px"><br></span></div><div><span style="font-size:15px">the unit tests which are deliberately well-commented serve as examples to demonstrate the SVP64 Vectorisation principle.&nbsp; however the hardware unit tests themselves rely on the python-based Simulator, ISACaller, which is co-simulated (above) and so iw not immediately obvious what is occurring. for more explicit unit tests, these are more appropriate:</span></div><div><span style="font-size:15px"><br></span></div><div><span style="font-size:15px"><a href="https://urldefense.proofpoint.com/v2/url?u=https-3A__git.libre-2Dsoc.org_-3Fp-3Dsoc.git-3Ba-3Dblob-3Bf-3Dsrc_soc_decoder_isa_test-5Fcaller-5Fsvp64.py-3Bhb-3DHEAD&amp;d=DwMFaQ&amp;c=jf_iaSHvJObTbx-siA1ZOg&amp;r=8aBPJ2cn8aSMRvWfaP4ch_5Fm62iY49mlt2OEHhCq_E&amp;m=MZual1p5bGflmxyIvcqV0Xm4jKjI8XIYiv7U3zMkNSE&amp;s=IzwH4DgU6EmXThovEonETjLjy4a3GcAf6nAc-lDJIyc&amp;e=">https://git.libre-soc.org/?p=soc.git;a=blob;f=src/soc/decoder/isa/test_caller_svp64.py;hb=HEAD</a></span><br></div><div><span style="font-size:15px"><br></span></div><div><span style="font-size:15px">above is "sv.add." for example which enables Vectorised Rc=1, producing a *Vector* of CR fields that are explicitly verified in the test.</span></div><div><span style="font-size:15px"><br></span></div><div><span style="font-size:15px">this allow</span>s, (unlike VSX which only creates CR6) inherently far greater parallelism (64 computations per clock cycle per issue) without Condition Register Hazards occurring.</div><div><span style="font-size:15px"><br></span></div><div><span style="font-size:15px">with the ISACaller Simulator having rigorous explicit checking of output, this engenders confidence in co-simulation to simply extract and compare the entire contents of all regfiles from both ISACaller and HDL, after each step.</span></div><div><span style="font-size:15px"><br></span></div><div><span style="font-size:15px">an identical co-simulation process is planned to be applied for qemu, power-gem5 and Microwatt when adding SVP64.&nbsp; qemu co-simulation of OpenPOWER v3.0B is *already* performed (and has found obscure bugs in qemu!)</span></div><div><span style="font-size:15px"><br></span></div><div><span style="font-size:15px">our next steps are to add:</span></div><div><span style="font-size:15px"><br></span></div><div><span style="font-size:15px">* LD/ST and other pipeline unit tests</span></div><div><span style="font-size:15px">* Single and Twin Predication</span></div><div><span style="font-size:15px">* Polymorphic Element Width overrides (uint8/16/32, FP16, BF16)</span></div><div>* Saturation, Mapreduce, and other advanced modes</div><div><br></div><div>medium term:</div><div><br></div><div>* Scalar v3.0B Bitmanipulation extensions suitable for cryptographic, Audio and Video and other uses (Vectorisation of these now comes "for free"!)</div><div>* Scalar v3.0B IEEE754 FP Transcendentals (SIN, COS, ATAN2, LOG1P) which again become inherently and automatically Vectorised</div><div>* 3D Texturisation opcodes suitable for Vulkan Khronos Group Compliance</div><div><br></div><div>longer term:</div><div><br></div><div>* SV-REMAP provides 2D and 3D Matrix register remapping</div><div>* Instruction Prefix remapping similar to hardware compression</div><div><br></div><div>A particularly fascinating and powerful combination of the above involves the planned general-purpose Galois Field multiply operation in the bitmanipulation extension, with REMAP Matrix applied, from which Rijndael (AES) "MixColumns" functionality emerges *as a single instruction* without requiring that to be added as an explicit opcode as would normally be done in any other ISA.</div><div><br></div><div>all of this is achieved without modifying the Scalar OpenPOWER v3.0B ISA in any way, without requiring (eliminating and superceding) any of the SIMD (VSX) ISA, merely adding a new "Vector Context" inside v3.1 style EXT01 64 bit prefixes.</div><div><br></div><div>we are tracking the implementation progress here, including gcc, power-gem5 and would love to see Microwatt as well, as time permits:</div><div><br></div><div><span style="font-size:15px"><a href="https://urldefense.proofpoint.com/v2/url?u=https-3A__libre-2Dsoc.org_openpower_sv_implementation&amp;d=DwMFaQ&amp;c=jf_iaSHvJObTbx-siA1ZOg&amp;r=8aBPJ2cn8aSMRvWfaP4ch_5Fm62iY49mlt2OEHhCq_E&amp;m=MZual1p5bGflmxyIvcqV0Xm4jKjI8XIYiv7U3zMkNSE&amp;s=-AW6iTmWvbnZrYeRd3c0Vx4i3gXFxWWzxAqT-FOC0tU&amp;e=">https://libre-soc.org/openpower/sv/implementation</a></span><br></div><div><span style="font-size:15px"><br></span></div><div><span style="font-size:15px">l.</span></div><div><span style="font-size:15px"><br></span></div><br><br>-- <br>---<br>crowd-funded eco-conscious hardware: <a href="https://urldefense.proofpoint.com/v2/url?u=https-3A__www.crowdsupply.com_eoma68&amp;d=DwMFaQ&amp;c=jf_iaSHvJObTbx-siA1ZOg&amp;r=8aBPJ2cn8aSMRvWfaP4ch_5Fm62iY49mlt2OEHhCq_E&amp;m=MZual1p5bGflmxyIvcqV0Xm4jKjI8XIYiv7U3zMkNSE&amp;s=TVNtd2VLUG3DHVxbDtanUuiwBfPuApp7WX3-LPU7HpI&amp;e=" target="_blank">https://www.crowdsupply.com/eoma68</a><br><br>
</div></blockquote></div><BR>
</body></html>