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