Rocksolid Light

Welcome to novaBBS (click a section below)

mail  files  register  newsreader  groups  login

Message-ID:  

You see but you do not observe. Sir Arthur Conan Doyle, in "The Memoirs of Sherlock Holmes"


devel / comp.arch / Operations requiring more than three registers

SubjectAuthor
* Operations requiring more than three registersThomas Koenig
+- Re: Operations requiring more than three registersIvan Godard
+- Re: Operations requiring more than three registersrobf...@gmail.com
+- Re: Operations requiring more than three registersAnton Ertl
+- Re: Operations requiring more than three registersMitchAlsup
+- Re: Operations requiring more than three registersPaul A. Clayton
`* Re: Operations requiring more than three registersJecel Assumpção Jr
 `* Re: Operations requiring more than three registersMitchAlsup
  `* Re: Operations requiring more than three registersJecel Assumpção Jr
   +- Re: Operations requiring more than three registersMichael S
   `- Re: Operations requiring more than three registersBGB

1
Operations requiring more than three registers

<tdssbs$t0e$1@newsreader4.netcologne.de>

  copy mid

https://www.novabbs.com/devel/article-flat.php?id=27435&group=comp.arch#27435

  copy link   Newsgroups: comp.arch
Path: i2pn2.org!i2pn.org!weretis.net!feeder8.news.weretis.net!newsreader4.netcologne.de!news.netcologne.de!.POSTED.2a0a-a540-1faa-0-7285-c2ff-fe6c-992d.ipv6dyn.netcologne.de!not-for-mail
From: tkoe...@netcologne.de (Thomas Koenig)
Newsgroups: comp.arch
Subject: Operations requiring more than three registers
Date: Sun, 21 Aug 2022 09:02:52 -0000 (UTC)
Organization: news.netcologne.de
Distribution: world
Message-ID: <tdssbs$t0e$1@newsreader4.netcologne.de>
Injection-Date: Sun, 21 Aug 2022 09:02:52 -0000 (UTC)
Injection-Info: newsreader4.netcologne.de; posting-host="2a0a-a540-1faa-0-7285-c2ff-fe6c-992d.ipv6dyn.netcologne.de:2a0a:a540:1faa:0:7285:c2ff:fe6c:992d";
logging-data="29710"; mail-complaints-to="abuse@netcologne.de"
User-Agent: slrn/1.0.3 (Linux)
 by: Thomas Koenig - Sun, 21 Aug 2022 09:02 UTC

Here is a (probably incomplete) list of operations which would
require more than three registers on a load/store machine
(however these are implemented, with condition flags, split
instructions, Mitch's CARRY instruction, or any other way).
I am also leaving out load/store instructions.

Integer Addition with carry:
(carry_out, res) = (a + b + carry_in)

More generally, integer three - way addition:
(carry_out, res) = (a + b + c)

Integer multiplication:
(high, low) = a * b

Integer multiply + add:
(high, low) = a * b + c

Select:
res = cond ? a : b

or, related, bit selction:
res = (a & mask) | (b & ~mask)

Bit insertion:
This can be quite complex, one example could be
a<a_from,a_from+len-1> = b<b_from,b_from+len-1>

Floating point multiply + add:
res = a*b + c

The new IEEE augmented operations:

(high, low) = a + b

What else?

Re: Operations requiring more than three registers

<tdsubl$2agrn$1@dont-email.me>

  copy mid

https://www.novabbs.com/devel/article-flat.php?id=27436&group=comp.arch#27436

  copy link   Newsgroups: comp.arch
Path: i2pn2.org!i2pn.org!eternal-september.org!reader01.eternal-september.org!.POSTED!not-for-mail
From: iva...@millcomputing.com (Ivan Godard)
Newsgroups: comp.arch
Subject: Re: Operations requiring more than three registers
Date: Sun, 21 Aug 2022 02:36:53 -0700
Organization: A noiseless patient Spider
Lines: 48
Message-ID: <tdsubl$2agrn$1@dont-email.me>
References: <tdssbs$t0e$1@newsreader4.netcologne.de>
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8; format=flowed
Content-Transfer-Encoding: 7bit
Injection-Date: Sun, 21 Aug 2022 09:36:53 -0000 (UTC)
Injection-Info: reader01.eternal-september.org; posting-host="c6d021357b260fa0ea9a0242d4bbc356";
logging-data="2442103"; mail-complaints-to="abuse@eternal-september.org"; posting-account="U2FsdGVkX1/+AkfEzQuQXC4Y1FiVdu2u"
User-Agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:91.0) Gecko/20100101
Thunderbird/91.12.0
Cancel-Lock: sha1:2lomS937wnkNSLcbyDbTEpiTVDc=
Content-Language: en-US
In-Reply-To: <tdssbs$t0e$1@newsreader4.netcologne.de>
 by: Ivan Godard - Sun, 21 Aug 2022 09:36 UTC

On 8/21/2022 2:02 AM, Thomas Koenig wrote:
> Here is a (probably incomplete) list of operations which would
> require more than three registers on a load/store machine
> (however these are implemented, with condition flags, split
> instructions, Mitch's CARRY instruction, or any other way).
> I am also leaving out load/store instructions.
>
> Integer Addition with carry:
> (carry_out, res) = (a + b + carry_in)
>
> More generally, integer three - way addition:
> (carry_out, res) = (a + b + c)
>
> Integer multiplication:
> (high, low) = a * b
>
> Integer multiply + add:
> (high, low) = a * b + c
>
> Select:
> res = cond ? a : b
>
> or, related, bit selction:
> res = (a & mask) | (b & ~mask)
>
> Bit insertion:
> This can be quite complex, one example could be
> a<a_from,a_from+len-1> = b<b_from,b_from+len-1>
>
> Floating point multiply + add:
> res = a*b + c
>
> The new IEEE augmented operations:
>
> (high, low) = a + b
>
> What else?

Dynamic bit field select: res = a[b..c] where b and c are bit indices
into a scalar

divrem: q,r = a/b

SIMD compose: S = {a,b,c...}
SIMD decompose: {a,b,c,...} = S

bound: res = a < b ? b : a > c ? c : a
bound check: res = (a < b) | a > c) ? !@@#$ : a

Re: Operations requiring more than three registers

<af9ff2af-b29f-4402-bfd5-43dcf32fdea5n@googlegroups.com>

  copy mid

https://www.novabbs.com/devel/article-flat.php?id=27437&group=comp.arch#27437

  copy link   Newsgroups: comp.arch
X-Received: by 2002:ae9:e702:0:b0:6b5:9c37:8b23 with SMTP id m2-20020ae9e702000000b006b59c378b23mr10000126qka.511.1661074764987;
Sun, 21 Aug 2022 02:39:24 -0700 (PDT)
X-Received: by 2002:a05:622a:1388:b0:344:4ff1:dd66 with SMTP id
o8-20020a05622a138800b003444ff1dd66mr11793898qtk.135.1661074764830; Sun, 21
Aug 2022 02:39:24 -0700 (PDT)
Path: i2pn2.org!i2pn.org!usenet.blueworldhosting.com!feed1.usenet.blueworldhosting.com!peer03.iad!feed-me.highwinds-media.com!news.highwinds-media.com!news-out.google.com!nntp.google.com!postnews.google.com!google-groups.googlegroups.com!not-for-mail
Newsgroups: comp.arch
Date: Sun, 21 Aug 2022 02:39:24 -0700 (PDT)
In-Reply-To: <tdssbs$t0e$1@newsreader4.netcologne.de>
Injection-Info: google-groups.googlegroups.com; posting-host=2607:fea8:1dde:6a00:e127:b918:ed3b:2ed6;
posting-account=QId4bgoAAABV4s50talpu-qMcPp519Eb
NNTP-Posting-Host: 2607:fea8:1dde:6a00:e127:b918:ed3b:2ed6
References: <tdssbs$t0e$1@newsreader4.netcologne.de>
User-Agent: G2/1.0
MIME-Version: 1.0
Message-ID: <af9ff2af-b29f-4402-bfd5-43dcf32fdea5n@googlegroups.com>
Subject: Re: Operations requiring more than three registers
From: robfi...@gmail.com (robf...@gmail.com)
Injection-Date: Sun, 21 Aug 2022 09:39:24 +0000
Content-Type: text/plain; charset="UTF-8"
X-Received-Bytes: 2445
 by: robf...@gmail.com - Sun, 21 Aug 2022 09:39 UTC

On Sunday, August 21, 2022 at 5:02:55 AM UTC-4, Thomas Koenig wrote:
> Here is a (probably incomplete) list of operations which would
> require more than three registers on a load/store machine
> (however these are implemented, with condition flags, split
> instructions, Mitch's CARRY instruction, or any other way).
> I am also leaving out load/store instructions.
>
> Integer Addition with carry:
> (carry_out, res) = (a + b + carry_in)
>
> More generally, integer three - way addition:
> (carry_out, res) = (a + b + c)
>
> Integer multiplication:
> (high, low) = a * b
>
> Integer multiply + add:
> (high, low) = a * b + c
>
> Select:
> res = cond ? a : b
>
> or, related, bit selction:
> res = (a & mask) | (b & ~mask)
>
> Bit insertion:
> This can be quite complex, one example could be
> a<a_from,a_from+len-1> = b<b_from,b_from+len-1>
>
> Floating point multiply + add:
> res = a*b + c
>
> The new IEEE augmented operations:
>
> (high, low) = a + b
>
> What else?

Fused dot product: (a * b) + (c * d)
I believe there are some crypto functions that could use three arguments.
Some graphics operations: color blend, point transform

Minimum and maximum of three values.
Majority logic eval

Re: Operations requiring more than three registers

<2022Aug21.133936@mips.complang.tuwien.ac.at>

  copy mid

https://www.novabbs.com/devel/article-flat.php?id=27439&group=comp.arch#27439

  copy link   Newsgroups: comp.arch
Path: i2pn2.org!i2pn.org!eternal-september.org!reader01.eternal-september.org!.POSTED!not-for-mail
From: ant...@mips.complang.tuwien.ac.at (Anton Ertl)
Newsgroups: comp.arch
Subject: Re: Operations requiring more than three registers
Date: Sun, 21 Aug 2022 11:39:36 GMT
Organization: Institut fuer Computersprachen, Technische Universitaet Wien
Lines: 25
Distribution: world
Message-ID: <2022Aug21.133936@mips.complang.tuwien.ac.at>
References: <tdssbs$t0e$1@newsreader4.netcologne.de>
Injection-Info: reader01.eternal-september.org; posting-host="7a15de85e437153afa8ef565c71dee6d";
logging-data="2463659"; mail-complaints-to="abuse@eternal-september.org"; posting-account="U2FsdGVkX18ICF3JXiHcKGZuv/8uKEh+"
Cancel-Lock: sha1:LrWM+ruF3GPvD/FYO48Zruxbtmk=
X-newsreader: xrn 10.00-beta-3
 by: Anton Ertl - Sun, 21 Aug 2022 11:39 UTC

Thomas Koenig <tkoenig@netcologne.de> writes:
>Here is a (probably incomplete) list of operations which would
>require more than three registers on a load/store machine
>(however these are implemented, with condition flags, split
>instructions, Mitch's CARRY instruction, or any other way).
>I am also leaving out load/store instructions.
>
>Integer Addition with carry:
>(carry_out, res) = (a + b + carry_in)

Can be covered with a 65th bit, as discussed earlier
<2021Mar10.110220@mips.complang.tuwien.ac.at> ff. That would mean
that you would have either

res=a+b
res=res carry+ c

or a three-operand

res = a + b carry+ c

- anton
--
'Anyone trying for "industrial quality" ISA should avoid undefined behavior.'
Mitch Alsup, <c17fcd89-f024-40e7-a594-88a85ac10d20o@googlegroups.com>

Re: Operations requiring more than three registers

<f87b2cc8-4687-4791-87bd-813b437676a9n@googlegroups.com>

  copy mid

https://www.novabbs.com/devel/article-flat.php?id=27444&group=comp.arch#27444

  copy link   Newsgroups: comp.arch
X-Received: by 2002:a05:620a:4042:b0:6bb:cdb:eef9 with SMTP id i2-20020a05620a404200b006bb0cdbeef9mr10896034qko.498.1661100634365;
Sun, 21 Aug 2022 09:50:34 -0700 (PDT)
X-Received: by 2002:a05:620a:4482:b0:6bb:c315:9597 with SMTP id
x2-20020a05620a448200b006bbc3159597mr9625402qkp.423.1661100634234; Sun, 21
Aug 2022 09:50:34 -0700 (PDT)
Path: i2pn2.org!i2pn.org!weretis.net!feeder6.news.weretis.net!news.misty.com!border-2.nntp.ord.giganews.com!nntp.giganews.com!news-out.google.com!nntp.google.com!postnews.google.com!google-groups.googlegroups.com!not-for-mail
Newsgroups: comp.arch
Date: Sun, 21 Aug 2022 09:50:34 -0700 (PDT)
In-Reply-To: <tdssbs$t0e$1@newsreader4.netcologne.de>
Injection-Info: google-groups.googlegroups.com; posting-host=2600:1700:291:29f0:ed38:7cf:b605:9e55;
posting-account=H_G_JQkAAADS6onOMb-dqvUozKse7mcM
NNTP-Posting-Host: 2600:1700:291:29f0:ed38:7cf:b605:9e55
References: <tdssbs$t0e$1@newsreader4.netcologne.de>
User-Agent: G2/1.0
MIME-Version: 1.0
Message-ID: <f87b2cc8-4687-4791-87bd-813b437676a9n@googlegroups.com>
Subject: Re: Operations requiring more than three registers
From: MitchAl...@aol.com (MitchAlsup)
Injection-Date: Sun, 21 Aug 2022 16:50:34 +0000
Content-Type: text/plain; charset="UTF-8"
Lines: 63
 by: MitchAlsup - Sun, 21 Aug 2022 16:50 UTC

On Sunday, August 21, 2022 at 4:02:55 AM UTC-5, Thomas Koenig wrote:
> Here is a (probably incomplete) list of operations which would
> require more than three registers on a load/store machine
> (however these are implemented, with condition flags, split
> instructions, Mitch's CARRY instruction, or any other way).
> I am also leaving out load/store instructions.
>
> Integer Addition with carry:
> (carry_out, res) = (a + b + carry_in)
<
; Rcarry contains carry_in
CARRY Rcarry,{{IO}}
ADD Rd,Ra,Rb
; Rcarry contains carry_out
>
> More generally, integer three - way addition:
> (carry_out, res) = (a + b + c)
>
> Integer multiplication:
> (high, low) = a * b
<
CARRY Rhigh,{{O}}
MUL Rlow,Rs,Rb
>
> Integer multiply + add:
> (high, low) = a * b + c
<
CARRY Rc,{{IO}}
MUL Rlow,Rs,Rb
>
>
> Select:
> res = cond ? a : b
<
depending on how cond is evaluated, CMOV or MUX; typically:
<
CMOV Rres,Ra,Rb,Rcond
>
> or, related, bit selction:
> res = (a & mask) | (b & ~mask)
<
This is MUX
>
> Bit insertion:
> This can be quite complex, one example could be
> a<a_from,a_from+len-1> = b<b_from,b_from+len-1>
<
INS Ra,Ra,Rbits,field_def
<
A constant field_def is written <length:offset>
>
> Floating point multiply + add:
> res = a*b + c
<
FMAC Rres,Ra,Rb,Rc
>
> The new IEEE augmented operations:
>
> (high, low) = a + b
<
CARRY Rlow,{{O}}
FADD Rhigh,Ra,Rb
>
> What else?

Re: Operations requiring more than three registers

<tduf31$2f34e$1@dont-email.me>

  copy mid

https://www.novabbs.com/devel/article-flat.php?id=27459&group=comp.arch#27459

  copy link   Newsgroups: comp.arch
Path: i2pn2.org!i2pn.org!eternal-september.org!reader01.eternal-september.org!.POSTED!not-for-mail
From: paaroncl...@gmail.com (Paul A. Clayton)
Newsgroups: comp.arch
Subject: Re: Operations requiring more than three registers
Date: Sun, 21 Aug 2022 19:28:32 -0400
Organization: A noiseless patient Spider
Lines: 10
Message-ID: <tduf31$2f34e$1@dont-email.me>
References: <tdssbs$t0e$1@newsreader4.netcologne.de>
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8; format=flowed
Content-Transfer-Encoding: 7bit
Injection-Date: Sun, 21 Aug 2022 23:28:34 -0000 (UTC)
Injection-Info: reader01.eternal-september.org; posting-host="14d2226ce1c7eb43e75cc17585335620";
logging-data="2591886"; mail-complaints-to="abuse@eternal-september.org"; posting-account="U2FsdGVkX1/VdNi5hc11qzPSx19njAXWWjuFg1W7DSc="
User-Agent: Mozilla/5.0 (X11; Linux x86_64; rv:78.0) Gecko/20100101
Thunderbird/78.0
Cancel-Lock: sha1:20R2WA5M/p/05PZDFnvWWYC0Mmc=
In-Reply-To: <tdssbs$t0e$1@newsreader4.netcologne.de>
 by: Paul A. Clayton - Sun, 21 Aug 2022 23:28 UTC

Thomas Koenig wrote:
> Here is a (probably incomplete) list of operations which would
> require more than three registers on a load/store machine
[snip]
> Integer multiply + add:
> (high, low) = a * b + c

Variable shift and add would merely be a strength reduced version
of MADD (probably with limited utility). Shift and [logical
operation] seems even less likely to be broadly useful.

Re: Operations requiring more than three registers

<fa679122-508e-49f8-b9db-74fa9af21b43n@googlegroups.com>

  copy mid

https://www.novabbs.com/devel/article-flat.php?id=27502&group=comp.arch#27502

  copy link   Newsgroups: comp.arch
X-Received: by 2002:a05:622a:15d4:b0:344:6a92:d8dc with SMTP id d20-20020a05622a15d400b003446a92d8dcmr22083515qty.114.1661307024008;
Tue, 23 Aug 2022 19:10:24 -0700 (PDT)
X-Received: by 2002:a05:620a:2728:b0:6ba:e857:9375 with SMTP id
b40-20020a05620a272800b006bae8579375mr17887651qkp.728.1661307023891; Tue, 23
Aug 2022 19:10:23 -0700 (PDT)
Path: i2pn2.org!i2pn.org!usenet.blueworldhosting.com!feed1.usenet.blueworldhosting.com!peer03.iad!feed-me.highwinds-media.com!news.highwinds-media.com!news-out.google.com!nntp.google.com!postnews.google.com!google-groups.googlegroups.com!not-for-mail
Newsgroups: comp.arch
Date: Tue, 23 Aug 2022 19:10:23 -0700 (PDT)
In-Reply-To: <tdssbs$t0e$1@newsreader4.netcologne.de>
Injection-Info: google-groups.googlegroups.com; posting-host=2804:431:abca:3d01:d85f:d666:11fd:def8;
posting-account=qNYWnwkAAAAV29tnVQXfHVigXdWsZgZ6
NNTP-Posting-Host: 2804:431:abca:3d01:d85f:d666:11fd:def8
References: <tdssbs$t0e$1@newsreader4.netcologne.de>
User-Agent: G2/1.0
MIME-Version: 1.0
Message-ID: <fa679122-508e-49f8-b9db-74fa9af21b43n@googlegroups.com>
Subject: Re: Operations requiring more than three registers
From: jec...@merlintec.com (Jecel Assumpção Jr)
Injection-Date: Wed, 24 Aug 2022 02:10:24 +0000
Content-Type: text/plain; charset="UTF-8"
X-Received-Bytes: 1407
 by: Jecel Assumpção Jr - Wed, 24 Aug 2022 02:10 UTC

In the original ARM instruction set any instruction can specify four registers. You can write something like

adds r2, r5, r1, LSL r3

meaning

r2 = r5 + ( r1 << r3 ) and update the status bits

-- Jecel

Re: Operations requiring more than three registers

<d0a50049-c40f-4f8a-8ab6-ea019b0c26aen@googlegroups.com>

  copy mid

https://www.novabbs.com/devel/article-flat.php?id=27507&group=comp.arch#27507

  copy link   Newsgroups: comp.arch
X-Received: by 2002:a05:622a:389:b0:342:f779:ded8 with SMTP id j9-20020a05622a038900b00342f779ded8mr24137951qtx.111.1661358038924;
Wed, 24 Aug 2022 09:20:38 -0700 (PDT)
X-Received: by 2002:ad4:5fcf:0:b0:496:f82f:f647 with SMTP id
jq15-20020ad45fcf000000b00496f82ff647mr9738909qvb.40.1661358038765; Wed, 24
Aug 2022 09:20:38 -0700 (PDT)
Path: i2pn2.org!rocksolid2!i2pn.org!weretis.net!feeder6.news.weretis.net!1.us.feeder.erje.net!feeder.erje.net!border-1.nntp.ord.giganews.com!nntp.giganews.com!news-out.google.com!nntp.google.com!postnews.google.com!google-groups.googlegroups.com!not-for-mail
Newsgroups: comp.arch
Date: Wed, 24 Aug 2022 09:20:38 -0700 (PDT)
In-Reply-To: <fa679122-508e-49f8-b9db-74fa9af21b43n@googlegroups.com>
Injection-Info: google-groups.googlegroups.com; posting-host=2600:1700:291:29f0:214b:371f:6d62:f3a3;
posting-account=H_G_JQkAAADS6onOMb-dqvUozKse7mcM
NNTP-Posting-Host: 2600:1700:291:29f0:214b:371f:6d62:f3a3
References: <tdssbs$t0e$1@newsreader4.netcologne.de> <fa679122-508e-49f8-b9db-74fa9af21b43n@googlegroups.com>
User-Agent: G2/1.0
MIME-Version: 1.0
Message-ID: <d0a50049-c40f-4f8a-8ab6-ea019b0c26aen@googlegroups.com>
Subject: Re: Operations requiring more than three registers
From: MitchAl...@aol.com (MitchAlsup)
Injection-Date: Wed, 24 Aug 2022 16:20:38 +0000
Content-Type: text/plain; charset="UTF-8"
Lines: 13
 by: MitchAlsup - Wed, 24 Aug 2022 16:20 UTC

On Tuesday, August 23, 2022 at 9:10:25 PM UTC-5, je...@merlintec.com wrote:
> In the original ARM instruction set any instruction can specify four registers. You can write something like
>
> adds r2, r5, r1, LSL r3
>
> meaning
>
> r2 = r5 + ( r1 << r3 ) and update the status bits
>
> -- Jecel
<
We quit "anointing" this stuff when we realized the << takes at least
as much gate-delays as +, so either it takes 2 pipe stages, or the
whole machine runs slow.

Re: Operations requiring more than three registers

<47f978b4-4971-43cb-9115-984303c62037n@googlegroups.com>

  copy mid

https://www.novabbs.com/devel/article-flat.php?id=27513&group=comp.arch#27513

  copy link   Newsgroups: comp.arch
X-Received: by 2002:ae9:e903:0:b0:6ba:e5aa:d59e with SMTP id x3-20020ae9e903000000b006bae5aad59emr1591322qkf.214.1661562510654;
Fri, 26 Aug 2022 18:08:30 -0700 (PDT)
X-Received: by 2002:a05:6214:2aa2:b0:477:1882:3dc with SMTP id
js2-20020a0562142aa200b00477188203dcmr1833414qvb.11.1661562510504; Fri, 26
Aug 2022 18:08:30 -0700 (PDT)
Path: i2pn2.org!i2pn.org!weretis.net!feeder6.news.weretis.net!news.misty.com!border-2.nntp.ord.giganews.com!border-1.nntp.ord.giganews.com!nntp.giganews.com!news-out.google.com!nntp.google.com!postnews.google.com!google-groups.googlegroups.com!not-for-mail
Newsgroups: comp.arch
Date: Fri, 26 Aug 2022 18:08:30 -0700 (PDT)
In-Reply-To: <d0a50049-c40f-4f8a-8ab6-ea019b0c26aen@googlegroups.com>
Injection-Info: google-groups.googlegroups.com; posting-host=2804:431:abca:3d01:d596:7263:d63c:138c;
posting-account=qNYWnwkAAAAV29tnVQXfHVigXdWsZgZ6
NNTP-Posting-Host: 2804:431:abca:3d01:d596:7263:d63c:138c
References: <tdssbs$t0e$1@newsreader4.netcologne.de> <fa679122-508e-49f8-b9db-74fa9af21b43n@googlegroups.com>
<d0a50049-c40f-4f8a-8ab6-ea019b0c26aen@googlegroups.com>
User-Agent: G2/1.0
MIME-Version: 1.0
Message-ID: <47f978b4-4971-43cb-9115-984303c62037n@googlegroups.com>
Subject: Re: Operations requiring more than three registers
From: jec...@merlintec.com (Jecel Assumpção Jr)
Injection-Date: Sat, 27 Aug 2022 01:08:30 +0000
Content-Type: text/plain; charset="UTF-8"
Content-Transfer-Encoding: quoted-printable
Lines: 27
 by: Jecel Assumpção Jr - Sat, 27 Aug 2022 01:08 UTC

On Wednesday, August 24, 2022 at 1:20:40 PM UTC-3, MitchAlsup wrote:
> On Tuesday, August 23, 2022 at 9:10:25 PM UTC-5, Jecel wrote:
> > In the original ARM instruction set any instruction can specify four registers. You can write something like
> >
> > adds r2, r5, r1, LSL r3
> >
> > meaning
> >
> > r2 = r5 + ( r1 << r3 ) and update the status bits
> >
> > -- Jecel
> <
> We quit "anointing" this stuff when we realized the << takes at least
> as much gate-delays as +, so either it takes 2 pipe stages, or the
> whole machine runs slow.

Like branch delay slots, this was one of the ideas that looked cute at the time but which made life more complicated for future implementers. I tried to look up if this had been abandoned in Aarch64 or not but gave up after running into too much vague documentation. I do know that conditional execution of all instructions was removed. Having the PC be a normal register was also eliminated.

My point was that being able to specify four registers in general was considered interesting in at least one commercial processor.

-- Jecel

Re: Operations requiring more than three registers

<d08eec6b-2441-48ff-add9-0a5c73b1428en@googlegroups.com>

  copy mid

https://www.novabbs.com/devel/article-flat.php?id=27522&group=comp.arch#27522

  copy link   Newsgroups: comp.arch
X-Received: by 2002:a05:622a:1455:b0:343:58b7:446f with SMTP id v21-20020a05622a145500b0034358b7446fmr4762378qtx.338.1661629924178;
Sat, 27 Aug 2022 12:52:04 -0700 (PDT)
X-Received: by 2002:a05:620a:371d:b0:6bb:e95e:7c94 with SMTP id
de29-20020a05620a371d00b006bbe95e7c94mr3755640qkb.365.1661629924052; Sat, 27
Aug 2022 12:52:04 -0700 (PDT)
Path: i2pn2.org!i2pn.org!weretis.net!feeder6.news.weretis.net!news.misty.com!border-2.nntp.ord.giganews.com!nntp.giganews.com!news-out.google.com!nntp.google.com!postnews.google.com!google-groups.googlegroups.com!not-for-mail
Newsgroups: comp.arch
Date: Sat, 27 Aug 2022 12:52:03 -0700 (PDT)
In-Reply-To: <47f978b4-4971-43cb-9115-984303c62037n@googlegroups.com>
Injection-Info: google-groups.googlegroups.com; posting-host=2a0d:6fc2:55b0:ca00:91f:8823:f17a:3b6b;
posting-account=ow8VOgoAAAAfiGNvoH__Y4ADRwQF1hZW
NNTP-Posting-Host: 2a0d:6fc2:55b0:ca00:91f:8823:f17a:3b6b
References: <tdssbs$t0e$1@newsreader4.netcologne.de> <fa679122-508e-49f8-b9db-74fa9af21b43n@googlegroups.com>
<d0a50049-c40f-4f8a-8ab6-ea019b0c26aen@googlegroups.com> <47f978b4-4971-43cb-9115-984303c62037n@googlegroups.com>
User-Agent: G2/1.0
MIME-Version: 1.0
Message-ID: <d08eec6b-2441-48ff-add9-0a5c73b1428en@googlegroups.com>
Subject: Re: Operations requiring more than three registers
From: already5...@yahoo.com (Michael S)
Injection-Date: Sat, 27 Aug 2022 19:52:04 +0000
Content-Type: text/plain; charset="UTF-8"
Content-Transfer-Encoding: quoted-printable
Lines: 45
 by: Michael S - Sat, 27 Aug 2022 19:52 UTC

On Saturday, August 27, 2022 at 4:08:31 AM UTC+3, je...@merlintec.com wrote:
> On Wednesday, August 24, 2022 at 1:20:40 PM UTC-3, MitchAlsup wrote:
> > On Tuesday, August 23, 2022 at 9:10:25 PM UTC-5, Jecel wrote:
> > > In the original ARM instruction set any instruction can specify four registers. You can write something like
> > >
> > > adds r2, r5, r1, LSL r3
> > >
> > > meaning
> > >
> > > r2 = r5 + ( r1 << r3 ) and update the status bits
> > >
> > > -- Jecel
> > <
> > We quit "anointing" this stuff when we realized the << takes at least
> > as much gate-delays as +, so either it takes 2 pipe stages, or the
> > whole machine runs slow.
> Like branch delay slots, this was one of the ideas that looked cute at the time but which made life more complicated for future implementers. I tried to look up if this had been abandoned in Aarch64 or not but gave up after running into too much vague documentation. I do know that conditional execution of all instructions was removed. Having the PC be a normal register was also eliminated.

I find "ARM Architecture Reference Manual ARMv8, for ARMv8-A architecture profile"
quite clear/well written.
Left shift by Immediate count is here for all common reg--to-reg arithmetic and
logic operations.
Shift by count in register is gone except, of course, in dedicate shift instructions.

>
> My point was that being able to specify four registers in general was considered interesting in at least one commercial processor.
>

Helped by having 32-bit instructions, but only 16 GPRs. And by lack of experience.
Considering the later, end result was astonishingly good. But not without faults.

> -- Jecel

Re: Operations requiring more than three registers

<tedv53$cl7u$1@dont-email.me>

  copy mid

https://www.novabbs.com/devel/article-flat.php?id=27523&group=comp.arch#27523

  copy link   Newsgroups: comp.arch
Path: i2pn2.org!i2pn.org!eternal-september.org!reader01.eternal-september.org!.POSTED!not-for-mail
From: cr88...@gmail.com (BGB)
Newsgroups: comp.arch
Subject: Re: Operations requiring more than three registers
Date: Sat, 27 Aug 2022 15:34:36 -0500
Organization: A noiseless patient Spider
Lines: 53
Message-ID: <tedv53$cl7u$1@dont-email.me>
References: <tdssbs$t0e$1@newsreader4.netcologne.de>
<fa679122-508e-49f8-b9db-74fa9af21b43n@googlegroups.com>
<d0a50049-c40f-4f8a-8ab6-ea019b0c26aen@googlegroups.com>
<47f978b4-4971-43cb-9115-984303c62037n@googlegroups.com>
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8; format=flowed
Content-Transfer-Encoding: 8bit
Injection-Date: Sat, 27 Aug 2022 20:34:44 -0000 (UTC)
Injection-Info: reader01.eternal-september.org; posting-host="42ae949326d302f94f7afdc71142f0e7";
logging-data="414974"; mail-complaints-to="abuse@eternal-september.org"; posting-account="U2FsdGVkX1/ZEZougUIVTNCb12tR1tGy"
User-Agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:91.0) Gecko/20100101
Thunderbird/91.12.0
Cancel-Lock: sha1:bTyQoO14BvqtkpP1l8BUb6wPnjw=
Content-Language: en-US
In-Reply-To: <47f978b4-4971-43cb-9115-984303c62037n@googlegroups.com>
 by: BGB - Sat, 27 Aug 2022 20:34 UTC

On 8/26/2022 8:08 PM, Jecel Assumpção Jr wrote:
> On Wednesday, August 24, 2022 at 1:20:40 PM UTC-3, MitchAlsup wrote:
>> On Tuesday, August 23, 2022 at 9:10:25 PM UTC-5, Jecel wrote:
>>> In the original ARM instruction set any instruction can specify four registers. You can write something like
>>>
>>> adds r2, r5, r1, LSL r3
>>>
>>> meaning
>>>
>>> r2 = r5 + ( r1 << r3 ) and update the status bits
>>>
>>> -- Jecel
>> <
>> We quit "anointing" this stuff when we realized the << takes at least
>> as much gate-delays as +, so either it takes 2 pipe stages, or the
>> whole machine runs slow.
>
> Like branch delay slots, this was one of the ideas that looked cute at the time but which made life more complicated for future implementers. I tried to look up if this had been abandoned in Aarch64 or not but gave up after running into too much vague documentation. I do know that conditional execution of all instructions was removed. Having the PC be a normal register was also eliminated.
>

Yes. One can also observe that a lot of the ARM based soft-core
processors tend to have lower clock speeds than those for some other ISAs.

The implicit shift and full condition-code predication are very possibly
some of the cause of this.

Also, one spends 12-bits on a "clever" shifted-constant representation
that manages to be less effective on average than a 12-bit integer would
have been.

And, a 4-bit register field which effectively loses 5 of the registers
(4 to the hardware, one to the OS), isn't ideal either.

Being able to encode PC is sometimes useful, but probably not enough to
burn a register.

Possible cases where it is useful:
PC relative Load/Store;
If one encodes register-branch or RTS by overloading MOV;
...

Though, there are other ways to approach these:
Dedicated encodings;
Only certain registers are special in specific contexts;
...

> My point was that being able to specify four registers in general was considered interesting in at least one commercial processor.
>
> -- Jecel

1
server_pubkey.txt

rocksolid light 0.9.81
clearnet tor