pro64-contrib
[Top] [All Lists]

Porting the compiler to an ISA that does not support bundles.

To: "Pro64 Contrib" <pro64-contrib@xxxxxxxxxxx>
Subject: Porting the compiler to an ISA that does not support bundles.
From: "Benedict R. Gaster" <benedict.gaster@xxxxxx>
Date: Tue, 5 Jun 2001 15:07:24 +0100
Cc: "Benedict. Gaster@St. Com" <benedict.gaster@xxxxxx>
Importance: Normal
Sender: owner-pro64-contrib@xxxxxxxxxxx
Hello!

We are currently looking into retargeting the Pro64 compiler to a ISA that
is not VLIW and thus the processor does not provide support for bunding
instructions into more than one slot pre-instruction cycle.

To represent the fact that the processor does not support bundling by
including the following in out analgous
"common/targ_info/proc/ia64/proc_properties.cxx":

  bundles = PROC_Property_Create("has_bundles");
  Processor_Group(bundles,
                      PROCESSOR_UNDEFINED);

Here we notice that there is no processor included, implying that no target
support for bundles.

Following on from this the packing of bundles, with respect to particular
units, are captured in the analgous implementation of
"common/targ_info/isa/ia64/isa_bundle.cxx". This, however, seems to raise
some problems and some interesting questions. It would seem to make sense
that as support for bundles is switched off, then it would not be necessary
to provide implementation of "isa_bundle.cxx". Taking this approach causes,
during the build of the targ_info directory, the a failure when trying to
build "common/access/ti_bundle.c", which depends on tables provided by
"isa_bundle.[ch]".

It is possible to change the build system not to include,
"common/access/ti_bundle.c"

So it seems the simplest why to solve these problems is to provide an
implementation analgous to "common/targ_info/isa/ia64/isa_bundles.cxx",
however, the problem is that it cannot simply:

int main()
{
        ISA_Bundle_Begin(ARCHITECTURE, BUNDLE_WIDTH);

      ISA_Bundle_End();
}

where BUNDLE_WIDTH is 32, which is the size, in bits, of our instructions.
Building the "targ_info" gives the following error:

   ### Error: no bundle packing specification!

This can be fixed by adding the following line:

        ISA_Bundle_Pack_Create(ISA_Bundle_Pack_Little_Endian);

and then everything compiles ok.

But is this enough for a processor that provides no support for bundles and
thus requires no defining of groupings, registered through
"Instruction_Exec_Unit_Group()"?

Thanks for any information on this subject.


cheers,

ben.


<Prev in Thread] Current Thread [Next in Thread>