On Sat, 28 Sep 2024 1:44:10 +0000, Paul A. Clayton wrote:[snip]
Another weird concept that came to mind would be providing an
8-bit (e.g.) field that enumerated a set of interesting
conditions.
I use a 64-bit container of conditions
I do not know of any enumeration of conditions that would be
commonly useful. Less than, equal to, greater than might be
somewhat useful for a three-way branch.
On 9/30/24 1:52 AM, MitchAlsup1 wrote:
On Sat, 28 Sep 2024 1:44:10 +0000, Paul A. Clayton wrote:[snip]
Another weird concept that came to mind would be providing an
8-bit (e.g.) field that enumerated a set of interesting
conditions.
I use a 64-bit container of conditions
A enumeration of conditions is different from a bitmask of
conditions. An enumeration could support N-way branching in a
single instruction rather than a tree of single bit-condition
branches.
My 66000's compare result has unused space for multiple such
enumerations.
I do not know of any enumeration of conditions that would be
commonly useful. Less than, equal to, greater than might be
somewhat useful for a three-way branch. Relation to zero as well
as an explicit comparison value might be useful for some multi-way
choices.
Lack of density is also a problem for multi-way branches; the--- Synchronet 3.20a-Linux NewsLink 1.114
encoding will waste space if multiple enumerated states share a
target.
The concept seemed worth mentioning even if I thought it unlikely
to be practically useful.
On 10/16/2024 8:59 AM, Paul A. Clayton wrote:
snip
I do not know of any enumeration of conditions that would be
commonly useful. Less than, equal to, greater than might be
somewhat useful for a three-way branch.
That was the function of the arithmetic if statement in original
Fortran. If it were more useful, it wouldn't have been taken out of the language long ago.
On 10/16/2024 8:59 AM, Paul A. Clayton wrote:
snip
I do not know of any enumeration of conditions that would be
commonly useful. Less than, equal to, greater than might be
somewhat useful for a three-way branch.
That was the function of the arithmetic if statement in original
Fortran. If it were more useful, it wouldn't have been taken out of the language long ago.
Ironically, one of the main arguable use-cases for old Fortran style IF statements is implementing the binary dispatch logic in a binary
subdivided "switch()", but not enough to justify having a dedicated instruction for it.
Say:
MOV Imm, Rt //pivot case
BLT Rt, Rx, .lbl_lo
BGT Rt, Rx, .lbl_hi
BRA .lbl_case
On Wed, 16 Oct 2024 20:23:08 +0000, BGB wrote:
Ironically, one of the main arguable use-cases for old Fortran style IF
statements is implementing the binary dispatch logic in a binary
subdivided "switch()", but not enough to justify having a dedicated
instruction for it.
Say:
MOV Imm, Rt //pivot case
BLT Rt, Rx, .lbl_lo
BGT Rt, Rx, .lbl_hi
BRA .lbl_case
With a 64-bitinstruction one could do::
B3W .lbl_lo,.lbl_zero,.lbl_hi
rather straightforwardly.....
On 10/16/2024 5:16 PM, MitchAlsup1 wrote:
On Wed, 16 Oct 2024 20:23:08 +0000, BGB wrote:
Ironically, one of the main arguable use-cases for old Fortran style IF
statements is implementing the binary dispatch logic in a binary
subdivided "switch()", but not enough to justify having a dedicated
instruction for it.
Say:
MOV Imm, Rt //pivot case
BLT Rt, Rx, .lbl_lo
BGT Rt, Rx, .lbl_hi
BRA .lbl_case
With a 64-bitinstruction one could do::
B3W .lbl_lo,.lbl_zero,.lbl_hi
rather straightforwardly.....
Possibly, but the harder part would be to deal with decoding and feeding
the instruction through the pipeline.
Granted, I guess it could be decoded as if it were a normal 3RI op or similar, but then split up the immediate into multiple parts in EX1.
On Thu, 17 Oct 2024 0:03:26 +0000, BGB wrote:
On 10/16/2024 5:16 PM, MitchAlsup1 wrote:
On Wed, 16 Oct 2024 20:23:08 +0000, BGB wrote:
Ironically, one of the main arguable use-cases for old Fortran style IF >>>> statements is implementing the binary dispatch logic in a binary
subdivided "switch()", but not enough to justify having a dedicated
instruction for it.
Say:
MOV Imm, Rt //pivot case
BLT Rt, Rx, .lbl_lo
BGT Rt, Rx, .lbl_hi
BRA .lbl_case
With a 64-bitinstruction one could do::
B3W .lbl_lo,.lbl_zero,.lbl_hi
rather straightforwardly.....
Possibly, but the harder part would be to deal with decoding and feeding
the instruction through the pipeline.
Feed the 3×15-bit displacements to the branch unit. When the condition resolves, use one of the 2 selected displacements as the target address.
Granted, I guess it could be decoded as if it were a normal 3RI op or
similar, but then split up the immediate into multiple parts in EX1.
Why would you want do make it 3×11-bit displacements when you can
make it 3×16-bit displacements.
+------+-----+-----+----------------+
| Bc | 3W | Rt | .lb_lo |
+------+-----+-----+----------------+
| .lb_zero | .lb_hi |
+------------------+----------------+
On 10/17/2024 9:28 PM, MitchAlsup1 wrote:
Granted, I guess it could be decoded as if it were a normal 3RI op or
similar, but then split up the immediate into multiple parts in EX1.
Why would you want do make it 3×11-bit displacements when you can
make it 3×16-bit displacements.
+------+-----+-----+----------------+
| Bc | 3W | Rt | .lb_lo |
+------+-----+-----+----------------+
| .lb_zero | .lb_hi |
+------------------+----------------+
Neither BJX2 nor RISC-V have the encoding space to pull this off...
Even in a clean-slate ISA, it would be a big ask.
On Mon, 21 Oct 2024 20:13:20 +0000, BGB wrote:
On 10/17/2024 9:28 PM, MitchAlsup1 wrote:
Granted, I guess it could be decoded as if it were a normal 3RI op or
similar, but then split up the immediate into multiple parts in EX1.
Why would you want do make it 3×11-bit displacements when you can
make it 3×16-bit displacements.
+------+-----+-----+----------------+
| Bc | 3W | Rt | .lb_lo |
+------+-----+-----+----------------+
| .lb_zero | .lb_hi |
+------------------+----------------+
Neither BJX2 nor RISC-V have the encoding space to pull this off...
Even in a clean-slate ISA, it would be a big ask.
If you remove compressed instructions from RISC-V, you have enough
room left over to put the entire My 66000 ISA. ... ... ...
Sysop: | DaiTengu |
---|---|
Location: | Appleton, WI |
Users: | 993 |
Nodes: | 10 (0 / 10) |
Uptime: | 207:44:09 |
Calls: | 12,972 |
Calls today: | 1 |
Files: | 186,574 |
Messages: | 3,268,393 |