Good news is that popvision seem to be working now: I was
able to run several teach files in 64-bit mode. Also,
first test on ARM works OK (but I only looked at part of
canny).
Bad news is that we probably need to recompile binary
files on install. Namely, when optimiziong gcc automatically
intruduces processor specific intructions. So, libraries
compiled on newer processor may fail on older ones. OTOH
compilng for old processors will not use features of new
ones so result would be slower.
We could try to compile for oldest "acceptable" machine
and live with some performance loss. However, since ATM
we have 3 different binary architectures (i386, x86_64, arm)
we still need to handle differences between architecures.
Related to this is question of variables describing target
system (that is system on which we run compiled code).
Curreenty there are 'sys_machine_type', 'sys_os_type'
and 'sys_processor_type'. ATM 'sys_machine_type' is not
very informative, it always return '[pc]', (even on ARM).
'sys_processor_type' is moderatly informative, it does
not distinguish between 32 and 64 bit mode of intel/AMD
processors and for them always gives '[80386]' (on ARM
it gives '[arm]'). I must say that in current times
I find "machine type" almost meaningless: unlike old
times when vendors offered clearly separated lines
of compatible machines currently we have large variety.
It seems that other projects converged on notion
of architeture: "i386" is considered as one architedure
(32-bit Intel, trough names like "i686" are also in use),
"x86_64" is politically correct name of 64-bit AMD
architecture, "arm" is used for 32-bit ARM, etc.
Architecure clearly is about processor, but is more
general than processor type (usually there are several
different processor types of the same architecture).
AFAICS architecture is main parameter, we need different
code generators for different architectures and several
crucial parameters depend on architecture. It is not
clear if we make any real use of processor type, but
correct use would be for conditional code generation
(and possibly optimization hints at higher level),
so it is limited. 'sys_os_type' is important, but
in modern times orthogonal to architecture ("the same"
OS may run on different architectures/processor types).
Current uses seem to be confused, apparently some old
code trues to derive architecure from other data,
popvision uses ad-hoc condition which for Linux just
use 'linux' for architecture depenedent things.
neural have different ad-hockery which gives 'pc'
(that is current content of machine type).
Maybe we should introduce new parameter 'sys_machine_architecture'
and give it appropriate value, and remove uses of
'sys_machine_type'?
--
Waldek Hebisch