Maamoun TK <maamoun...@googlemail.com> writes: > Sure. According to Power ISA 2.07: > The lvsl and lvsr instructions can be used to create the permute control > vector to be used by a subsequent vperm instruction. > > So the lvsl and lvsr instructions check 'sh' value in order to fill the > vector register, if 'sh' is 0 the vector register will be populated as > follow > 0x000102030405060708090A0B0C0D0E0F > this can be done using the following instructions > li r9, 0 > lvsl LE_MASK, r9, r9 > Now we xor each byte with 3 using these instructions > vspltisb LE_TEMP, 0x03 > vxor LE_MASK, LE_MASK, LE_TEMP > The value of the vector register is now > 0x03020100070605040B0A09080F0E0D0C
Thanks. I've added some comments about this. I've also extended the fat setup to check for altivec, using the logic hwcap = getauxval(AT_HWCAP); ... /* We also need VSX instructions, mainly for load and store. */ features->have_altivec = ((hwcap & (PPC_FEATURE_HAS_ALTIVEC | PPC_FEATURE_HAS_VSX)) == (PPC_FEATURE_HAS_ALTIVEC | PPC_FEATURE_HAS_VSX)); For now, gnu/linux only, patches to get detection working also on freebsd and aix welcome (I think needed fixes will be close to trivial, but I have no easy way to test, and I don't want to commit untested code). For non-fat builds, the new code is disabled by default, with a configure option --enable-power-altivec. And I've merged the changes to the master branch. I have some work-in progress code to do 2 or 4 chacha blocks in parallel, but not sure when I will get that into working shape. Regards, /Niels -- Niels Möller. PGP-encrypted email is preferred. Keyid 368C6677. Internet email is subject to wholesale government surveillance. _______________________________________________ nettle-bugs mailing list nettle-bugs@lists.lysator.liu.se http://lists.lysator.liu.se/mailman/listinfo/nettle-bugs