Problems building on HP-UX 11.31/IA
Torbjorn Granlund
tg at gmplib.org
Mon Aug 26 11:40:55 CEST 2013
Let me butt in with some background.
An Itanic bundle consist of 3 instructions (except that one or two
64-bit-field instructions need special 2 instruction bundles).
The main slot types are m, f, i, and b. Some instructions can fit in
either m or i slots, but most instructions fit only one type. E.g.,
memory loads and stores must be in an m slot, but integer add might be
put in ether an m slot or an i slot. There is a handful of bundle
types, mmi, mii, mmb, mib, mmf, mfi, mfb, bbb, and a few more.
That's coding. Then there are various restrictions affecting
performance; ideally two bundles may execute each cycle, but if we put 4
integer store instructions in these two bundles, they will need 4
cycles, IIRC.
And then assemblers.
The HP assemblers are choosy wrt the assembly syntax. The GNU assembler
is much more cooperative and also more powerful. Since several years,
the GMP folks have not had access to Itanic running HPUX, so we have not
been able to please the HP assembler.
I thought HP's assembler did not still require {} around bundles.
Surely, it can cope with completely non-annotated assembly code?
I.e., which if the following code snippets (properly decorated with
.text and whatnot) work:
Variant 1:
ld8 r24 = [r32], 8
add r29 = r15, r25
sub r30 = r15, r25
Variant 2:
.mii; ld8 r24 = [r32], 8
add r29 = r15, r25
sub r30 = r15, r25
Variant 3:
{.mii; ld8 r24 = [r32], 8
add r29 = r15, r25
sub r30 = r15, r25 }
(The first one should get either mmi or mii by assembly magic.)
--
Torbjörn
More information about the gmp-bugs
mailing list