Torbjorn Granlund <[email protected]> writes: > I'd like to move away from a specifically configured lib to a > default-is-fat model.
Makes sense to me. Either --with-cpu=ALL or --with-cpu=HOST would be a sensible default. > Note that I am not suggesting any change to ABI selection. I think we > should still go for the fastest ABI by default. I disagree, but that's a minor thing in this context. > First, let's admit there will be some overhead. At some level, there > will be a need to jump through a table, initiated for the run-time CPU. > This indirection costs a few cycles each time. But note that in a > shared library, we typically access data through a GOT (global offset > table) and call functions indirectly through a PLT (procedure linkage > table). I think we could stay within the overhead of shared library > calls, if we do things right. (For ELF, that is, where we can control > such things.) I think I suggested, some time ago, that one could overwrite the table entries in the PLT, with no *additional* indirections. But that may not work. If I understand things correctly, there's no *the* PLT, there's a PLT in each loadable object (executable or shared library file). And then I have already forgotten how that is supposed to work with function pointers. But for gmp-internal calls, we can jump through the table in the same way for both static and dynamic linking; the PLT need not be involved. And the overhead should be omitted completely when building for a single cpu type. > To decrease overhead, perhaps mainly in the static library, code > selection can be made not at the calls to the most primitive functions, > but a bit "higher"; we need to compile such functions several times with > fixed primitive functions (i.e., with calls to these going directly, not > through a jump table). Which functions are candidates for this treatment? > 2. When using an optional assembly primitive, use a run-time test if the > optional primitive is provided by *any* but not all configured CPUs, > exclude it if it is never available, and include it without a > run-time test if it is always available. Sounds like the most invasive part of this change. Regards, /Niels -- Niels Möller. PGP-encrypted email is preferred. Keyid C0B98E26. Internet email is subject to wholesale government surveillance. _______________________________________________ gmp-devel mailing list [email protected] http://gmplib.org/mailman/listinfo/gmp-devel
