pro64-contrib
[Top] [All Lists]

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

To: "Benedict R. Gaster" <benedict.gaster@xxxxxx>, "Pro64 Contrib" <pro64-contrib@xxxxxxxxxxx>
Subject: Re: Porting the compiler to an ISA that does not support bundles.
From: "Fu Chen" <cfu@xxxxxxxxx>
Date: Wed, 6 Jun 2001 08:57:14 +0800
References: <BGEFKPBJFFMJEBBKAGGGKEELCAAA.benedict.gaster@st.com>
Sender: owner-pro64-contrib@xxxxxxxxxxx
Porting is far from a simple work of removing one or two files.

While most the functions in ti_bundle.c are called on behave of
Handle_All_Hazards, which is the function that actually do bundling after
IGLS is done. You can try to remove this functions since there is no bundle
feature in your target.

And if you really want to remove isa_bundle.cxx, there will be another
problem in Assemble_Bundles (cgemit.cxx)
Since it is only called when ISA_MAX_SLOTS>1, you can simply remove it.

Turning off bundling will also cause some problems in SWP. While I'm not
quite familar with that part.

There must be more. Good luck!


----- Original Message -----
From: "Benedict R. Gaster" <benedict.gaster@xxxxxx>
To: "Pro64 Contrib" <pro64-contrib@xxxxxxxxxxx>
Cc: "Benedict. Gaster@St. Com" <benedict.gaster@xxxxxx>
Sent: Tuesday, June 05, 2001 10:07 PM
Subject: Porting the compiler to an ISA that does not support bundles.


> 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>