Path: csiph.com!eternal-september.org!feeder.eternal-september.org!nntp.eternal-september.org!.POSTED!not-for-mail From: John Ames Newsgroups: comp.lang.forth,comp.arch Subject: Re: adding overflow and carry to every GPR (was Re: OT: Epic RISC-V rant) Date: Wed, 2 Sep 2026 08:23:15 -0700 Organization: A place where nothing fits quite right Lines: 29 Message-ID: <20260902082315.000009c7@gmail.com> References: <87qzk0nejz.fsf@nightsong.com> <116d89d$27baf$1@paganini.bofh.team> <2026Aug24.095510@mips.complang.tuwien.ac.at> <87a4q0afu7.fsf_-_@debian> <20260901143106.00006dd7@gmail.com> <1788314691-5857@newsgrouper.org> MIME-Version: 1.0 Content-Type: text/plain; charset=US-ASCII Content-Transfer-Encoding: 7bit Injection-Date: Wed, 02 Sep 2026 15:23:20 +0000 (UTC) Injection-Info: dont-email.me; logging-data="3006913"; mail-complaints-to="abuse@eternal-september.org"; posting-account="U2FsdGVkX1+xWs4WwslXtOqjGr9nRIMNcJ96lz+ofPE="; posting-host="a5be106239955fff7d800935a3691b72" Cancel-Lock: sha1:neKlR9nyS+GFG95PCK84q14AwHw= sha256:Q98hJQ1Sgzf2gRcLVJnFMfzqR+PSXQo7ISk8306inps= sha1:6OEv1TR99I+j4yLkW5YvaVI2Avw= sha256:Zhd40wSbnXC3pqySte1InO5wjlDROBJM2BM5uJP0QHQ= X-Newsreader: Claws Mail 4.3.0 (GTK 3.24.42; x86_64-w64-mingw32) Xref: csiph.com comp.lang.forth:135527 comp.arch:117737 On Wed, 02 Sep 2026 02:04:51 GMT MitchAlsup wrote: > > The idea I had last time I dabbled with this stuff was to extend the > > basic add/subtract instructions with an option to save the > > carry/borrow value in another GPR, instead - but I never gave any > > thought to how to represent overflow that way. Hmm. > > That is what CARRY does. The Rd register in CARRY supplies a register > used to carry the additional values from calculation to calculation. > The Immediate in CARRY selects which instruction consume Rd {i}, > which instructions generate the next Rd {o} and which do both {io} > and which do neither {}. > > For ADD, carry Rd contains only 1 bit, but for others, it contains > "all the bits that did not make it into the standard result". This > makes CARRY suitable for all integer multiprecision arithmetic and > for significant quantities of FP arithmetic. > [...] > Multi-precisions shifts use carry Yes, exactly - add/subtract set the designated overflow/carry register to 1 on a carry/borrow (which can then be added/subtracted from the next more significant word) but e.g. multiply can set it to the whole most- significant half of the product, multi-place shifts can catch all the bits that fall off one end in the other so that rotate becomes shift- and-OR, etc. Very flexible, especially if you have the capability to branch on the value of a GPR.