From mboxrd@z Thu Jan 1 00:00:00 1970 Message-ID: <8f2a08f3fdef3a1a5ab430265782f80f@vitanuova.com> From: C H Forsyth Date: Fri, 14 May 2004 06:30:50 +0100 To: 9fans@cse.psu.edu Subject: Re: [9fans] brucee's 8c on sources? In-Reply-To: <40A435AA.3030908@chunder.com> MIME-Version: 1.0 Content-Type: text/plain; charset="US-ASCII" Content-Transfer-Encoding: 7bit Topicbox-Message-UUID: 7aa06ff4-eacd-11e9-9e20-41e7f4b1d025 >>another good speedup is a simple vlong assignment, >>which used to be MOVL; CLD; REP; MOVSL; and is now another example is conversion between 32-bit and 64-bit values. loading vlong as long from memory as in g((ulong)x); /* x vlong */ should just be loading the correct half of the vlong, shouldn't it, but it was MOVL x+-8(SP),CX MOVL CX,(SP) MOVL x+-4(SP),CX MOVL CX,4(SP) CALL ,_v2ul+0(SB) MOVL AX,.safe+-16(SP) MOVL .safe+-16(SP),AX MOVL AX,(SP) CALL ,g+0(SB) and now is MOVL x+-8(SP),AX MOVL AX,(SP) CALL ,g+0(SB) ie, it does the obvious thing the original scheme was easy to implement and was adequate when there were few 64-bit values in sight, but once offsets were vlong everywhere, and Qid.path was vlong, they began to spread fairly widely through the code.