Path: utzoo!utgpu!jarvis.csri.toronto.edu!mailrus!ames!ames.arc.nasa.gov!lamaster From: lamaster@ames.arc.nasa.gov (Hugh LaMaster) Newsgroups: comp.arch Subject: Re: Register usage [was Re: 80486 vs. 68040 code size] Message-ID: <25127@ames.arc.nasa.gov> Date: 8 May 89 18:54:40 GMT References: <907@aber-cs.UUCP> <25546@amdcad.AMD.COM> Sender: usenet@ames.arc.nasa.gov Distribution: eunet,world Organization: NASA - Ames Research Center Lines: 33 In article <25546@amdcad.AMD.COM> tim@amd.com (Tim Olson) writes: > >The Am29000 calling convention says that global temporary registers are >killed across a procedure call, while values in local registers remain >alive. This certainly is a good way to do it. Is the terminology you use for local and global standard? (It is the opposite of what I have usually heard before, and seems counterintuitive - it seems that the temporaries should be local temporaries, although as you have used it the registers are "global temporary registers" because they are assigned to handle temporaries in all procedures- hence "global".) >A static analysis of 495 functions shows that an average of 6.6 global >registers and an average of 7.0 local registers are used per function, : > 11: 2.83% (14) 11: 3.03% (15) : An interesting set of figures. Using 32 general purpose registers, with 16 for local and 16 for temporaries, would certainly seem to fit, given where the knee of the curve is. Anyway, I wonder what the results look like for things like double precision: Linpack, the Livermore Loops, the NAS kernels, etc. (In other words, 64 bit floating point numeric codes...) ...? Hugh LaMaster, m/s 233-9, UUCP ames!lamaster NASA Ames Research Center ARPA lamaster@ames.arc.nasa.gov Moffett Field, CA 94035 Phone: (415)694-6117