This is the mail archive of the
mailing list for the GCC project.
Re: Problem in split_basic_block
- From: Jim Wilson <wilson at tuliptree dot org>
- To: Richard Kenner <kenner at vlsi1 dot ultra dot nyu dot edu>
- Cc: gcc at gcc dot gnu dot org
- Date: Sat, 09 Aug 2003 23:52:03 -0700
- Subject: Re: Problem in split_basic_block
- References: <10308080152.AA10195@vlsi1.ultra.nyu.edu>
Richard Kenner wrote:
Interesting. I don't know the ia64 instruction set, but I'd always
thought of the addp4 stuff as a horrible kludge. I'm kind of curious
about this myself now.
The upper three bits of an IA-64 address indicate the segment (region).
This is somewhat similar to the VAX I believe. If you don't want
segments you can define them in the obvious way to get a flat address space.
addp4 does a 32-bit add and then copies the 2 most significant bits of
the 32-bit result (31 and 30) into the 2 most significant bits of the
target register (63 and 62). This gives you access to 4 segments (regions).
You really should have some understanding of the IA-64 ISA if you are
trying to do a port. IA-64 architecture manuals are available here:
See Vol 2 Section 4.1.9 32-bit Virtual Addressing. This documents how
to do zero-extend, sign-extend, or pointer-swizzling addressing via
addp4. All 3 are supported by the architecture.
Jim Wilson, GNU Tools Support, http://www.SpecifixInc.com