This is the mail archive of the mailing list for the GCC project.

Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]
Other format: [Raw text]

Re: Problem in split_basic_block

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,

Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]