Relay-Version: version B 2.10 5/3/83; site utzoo.UUCP Path: utzoo!utgpu!water!watmath!clyde!rutgers!husc6!hao!ames!amdahl!amdcad!tim From: tim@amdcad.UUCP Newsgroups: comp.arch Subject: Re: register windows Message-ID: <18903@amdcad.AMD.COM> Date: Wed, 28-Oct-87 19:50:04 EST Article-I.D.: amdcad.18903 Posted: Wed Oct 28 19:50:04 1987 Date-Received: Sat, 31-Oct-87 18:08:03 EST References: <201@PT.CS.CMU.EDU> <28200058@ccvaxa> Reply-To: tim@amdcad.UUCP (Tim Olson) Organization: Advanced Micro Devices Lines: 28 In article <28200058@ccvaxa> aglew@ccvaxa.UUCP writes: | How do you count load/stores with non-zero offsets for the AMD29000, | seeing as it has no such addressing mode? Was this for a design | alternative, that did have indexing? Or do you count by looking at the | number of loads that have an add immediately preceding to the register | used in the address of the load/store? Variations of this last method | would seem to me to be very susceptible to masking by code rearrangement | in the optimizer. Yes, we counted the "offset" loads and stores by looking for an add (dynamic, at runtime) preceding the load or store which computes into the load/store address register. You are correct that this might be suceptible to code rearrangement -- however, our internal compiler doesn't schedule loads, and the only other code motion is due to loop-invarience [not a problem here] and filling branch delay slots [the add, load/store will still be sequential at runtime]. | A while back I posted static counts of address constants on VAX 4.2 BSD. | As I remember it, about 40% were for locals (stack offsets), but 20% were | for pointer+field_offset. How do you optimize those away? Perhaps there is a big difference in static vs dynamic statistics? -- tim