pro64-contrib
[Top] [All Lists]

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

To: "Pro64 Contrib" <pro64-contrib@xxxxxxxxxxx>, "Benedict R. Gaster" <benedict.gaster@xxxxxx>
Subject: Re: Porting the compiler to an ISA that does not support bundles.
From: lesniak@xxxxxxxxxxxxxxxxxxxxx (Ken Lesniak)
Date: Tue, 5 Jun 2001 10:47:06 -0400 (EDT)
Cc: "Benedict. Gaster@St. Com" <benedict.gaster@xxxxxx>
Reply-to: lesniak@xxxxxxxxxxxxxxxxxxxxx
Sender: owner-pro64-contrib@xxxxxxxxxxx
>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.

That's exactly what you want to do.

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

Try using this as a template for isa_bundles.cxx:

============================================================
#include <stddef.h>
#include "topcode.h"
#include "isa_bundle_gen.h"

main()
{
  ISA_EXEC_UNIT_TYPE
    Any_Unit;   // Any unit

  ISA_Bundle_Begin("your-arch-name-here", 32);

  /* ===== Specification for bundle packing  ===== */
  ISA_Bundle_Pack_Create(ISA_Bundle_Pack_Big_Endian);
  Pack_Slot(0, 0, 0, 32);

  /* ===== Specification for Any_Unit Type ===== */    
  Any_Unit = ISA_Exec_Unit_Type_Create("Any_Unit", NULL);
  Instruction_Exec_Unit_Group(Any_Unit,
//
// >>>>>>>>>>>>>>>>>> list ALL of your topcodes here <<<<<<<<<<<<<<<<
//
                              TOP_UNDEFINED);
 
  /* ===== Specification for template 0 ===== */   
  ISA_Bundle_Type_Create("any", "any", 1);
  Slot (0, Any_Unit);

  ISA_Bundle_End();
  return 0;
}
============================================================

Ken

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