Deutsch English Français Italiano |
<veelbd$9gnd$2@dont-email.me> View for Bookmarking (what is this?) Look up another Usenet article |
Path: ...!news.roellig-ltd.de!open-news-network.org!weretis.net!feeder8.news.weretis.net!eternal-september.org!feeder3.eternal-september.org!news.eternal-september.org!.POSTED!not-for-mail From: BGB <cr88192@gmail.com> Newsgroups: comp.arch Subject: Re: Tonights Tradeoff - Carry and Overflow Date: Sat, 12 Oct 2024 15:14:36 -0500 Organization: A noiseless patient Spider Lines: 71 Message-ID: <veelbd$9gnd$2@dont-email.me> References: <vbgdms$152jq$1@dont-email.me> <vbog6d$2p2rc$1@dont-email.me> <f2d99c60ba76af28c8b63b9628fb56fa@www.novabbs.org> <vc61e6$21skv$1@dont-email.me> <vc8gl4$2m5tp$1@dont-email.me> <vcv5uj$3arh6$1@dont-email.me> <37067f65c5982e4d03825b997b23c128@www.novabbs.org> <vd352q$3s1e$1@dont-email.me> <5f8ee3d3b2321ffa7e6c570882686b57@www.novabbs.org> <vd6a5e$o0aj$2@dont-email.me> <vdnpg4$3c9e$2@dont-email.me> <2024Oct4.081931@mips.complang.tuwien.ac.at> <vdp343$9d38$1@dont-email.me> <2024Oct5.114309@mips.complang.tuwien.ac.at> <ve5mpq$2jt5k$1@dont-email.me> <vedg1s$43mp$1@dont-email.me> <ebe5b174d1e95801af623a450c464504@www.novabbs.org> MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8; format=flowed Content-Transfer-Encoding: 8bit Injection-Date: Sat, 12 Oct 2024 22:14:38 +0200 (CEST) Injection-Info: dont-email.me; posting-host="49ba8ae5553edb0f18c63300f704f6f1"; logging-data="312045"; mail-complaints-to="abuse@eternal-september.org"; posting-account="U2FsdGVkX1+2GzgT6MCvn7nrosZ2zgl3CvlvwFdEkzo=" User-Agent: Mozilla Thunderbird Cancel-Lock: sha1:4eRZyBkmRqNpSzSVIQQ+iTaLsvQ= In-Reply-To: <ebe5b174d1e95801af623a450c464504@www.novabbs.org> Content-Language: en-US Bytes: 3832 On 10/12/2024 1:50 PM, MitchAlsup1 wrote: > On Sat, 12 Oct 2024 9:38:01 +0000, Robert Finch wrote: > >> On 2024-10-09 6:44 a.m., Robert Finch wrote: >> Mulled over carry and overflow in arithmetic operations. Looked at >> widening the datapath to 66-bits to hold carry and overflow bits. >> Thinking it may increase the size of the design by over 3% just to >> support carry and overflow. For now, an instruction, ADDGC, was added to >> generate the carry bit as a result. A 256-bit add looks like: >> >> ; 256 bit add >> ; A = r1,r2,r3,r4 >> ; B = r5,r6,r7,r8 >> ; S = r9,r10,r11,r12 >> >> add r9,r1,r5,r0 >> addgc r13,r1,r5,r0 >> add r10,r2,r6,r13 >> addgc r13,r2,r6,r13 >> add r11,r7,r3,r13 >> addgc r13,r7,r3,r13 >> add r12,r8,r4,r13 > > My 66000 version:: > > CARRY R8,{{IO}{IO}{IO}{O}} > ADD R4,R12,R16 > ADD R5,R13,R17 > ADD R6,R14,R18 > ADD R7,R15,R19 > // R{8,7,6,5,4} contain the 257-bit result. > > 256-bit add giving 257-bit result. BJX2 / XG2, assuming in-register (A/D=R4..R7, B=R20..R23): CLRT ADDC R20, R4 ADDC R21, R5 ADDC R22, R6 ADDC R23, R7 Or, D=R16..R19 MOV.X R4, R16 MOV.X R6, R18 CLRT ADDC R20, R16 ADDC R21, R17 ADDC R22, R18 ADDC R23, R19 ADDC is itself mostly a holdover from SH. Could almost make sense to make it have a 3R form though and move it to updating SR.S instead, since SR.T is likely better left exclusively to predication (vs mostly predication, and obscure edge-case ops like ADDC/SUBC/ROTCL/...). Could almost add an ADDC.X op which operates 128 bits at a time, say: CLRT ADDC.X R4, R20, R16 ADDC.X R6, R22, R18 Except that it would be rarely used enough to make its existence debatable at best. >> >> Not very elegant a solution, but it is simple. I think it requires >> minimal hardware. Three input ADD is already present and ADDGC just >> routes the carry bit to the output.