Pentium4 new registers

"jacob navia" <jacob@jacob.remcomp.fr>
20 Oct 2001 22:08:57 -0400

          From comp.compilers

Related articles
Pentium4 new registers jacob@jacob.remcomp.fr (jacob navia) (2001-10-20)
Re: Pentium4 new registers jgd@cix.co.uk (2001-10-21)
| List of all articles for this month |

From: "jacob navia" <jacob@jacob.remcomp.fr>
Newsgroups: comp.compilers
Date: 20 Oct 2001 22:08:57 -0400
Organization: Wanadoo, l'internet avec France Telecom
Keywords: architecture, code, question
Posted-Date: 20 Oct 2001 22:08:57 EDT

Hi
I am the developer of the lcc-win32 compiler and I am adding support for the
new pentium 4 registers (8 128bit registers)
In the context of a C compiler, does anybody here know more about the
calling conventions for saving/restoring this registers? I mean, Intel
proposes a caller save protocol. Of course it is the one that will always
work, but will generate unnecessary savings/restoring of those huge
registers, what I would like to avoid...


All compiler writers for the x86 agreed to always preserve ebx esi and edi,
so they do not have to be saved/restored, this is a callee saves convention,
what is more efficient. Any hints of a similar protocol here?


Does gcc handle this?
What calling conventions does gcc use?


Does Microsoft MSVC use those regs? Which calling conventions do they use?


In another (related) topic, I am thinking of using those regs as:
o 16 floating point registers
o 32 integer registers. They can't be used for addressing though, so they
aren't really equivalent as the 32 bit general purpose registers.


How does gcc use those regs?
How does intel's icc use those regs? (If anyone from intel reads this
newgroup I would be happy to know how they do it :-)


Anyone else has done this in the context of a C compiler?


Thanks in advance for your attention.
The lcc-win32 compiler can be downloaded at no charge from
http://www.cs.virginia.edu/~lcc-win32


Post a followup to this message

Return to the comp.compilers page.
Search the comp.compilers archives again.