> /<<PKGBUILDDIR>>/libi2pd/Crypto.cpp: In member function 'virtual void 
> i2p::crypto::ECBEncryptionAESNI::Encrypt(const i2p::crypto::ChipherBlock*, 
> i2p::crypto::ChipherBlock*)':
> /<<PKGBUILDDIR>>/libi2pd/Crypto.cpp:611:4: error: unknown register name 
> '%xmm0' in 'asm'
>    );

The issue here is helper functions that are called only from one
multiversioned variant, but have no __target__ themselves.  Adding that
attribute would be 1. pointless as they have no generic versions, 2.
problematic as I don't know how GCC can handle them being called from asm
code.  Thus, they should be regular functions.

Turns out a nice solution at https://gcc.gnu.org/wiki/FunctionSpecificOpt
is a time-wasting trap, as __option__ was a GCC branch that never got
merged.

bunk suggested turning the helper functions into macros, this would produce
macros several pages long, not nice.

Evicting the helpers into a separate file and compiling on their own with
appropriate -m would inhibit inlining.


I got other bugs higher on the TODO list, so I'm out for now -- you probably
know a lot more about this as I never used multiversioning myself.  Once you
have an opinion, please tell me if there's anything I can do.


喵!
-- 
⢀⣴⠾⠻⢶⣦⠀ 
⣾⠁⢰⠒⠀⣿⡁ Imagine there are bandits in your house, your kid is bleeding out,
⢿⡄⠘⠷⠚⠋⠀ the house is on fire, and seven big-ass trumpets are playing in the
⠈⠳⣄⠀⠀⠀⠀ sky.  Your cat demands food.  The priority should be obvious...

Reply via email to