Files
Arquivotheca.SunOS-4.1.4/usr.etc/fpa/microcode+/cr.u
seta75D ff309bfe1c Init
2021-10-11 18:37:13 -03:00

1062 lines
44 KiB
Plaintext

|* @(#)cr.u 1.1 94/10/31 Copyright Sun Microsystems, Inc. 1988
|*
|* Command Register Instructions
|* Single Precision
|* reg1 <-- reg2
|*
routine cs.cpreg 001000100000 halt; regtotmp; rcssp imm2;
; halt; ; ptr1;
call idle1; halt; tmptoreg; rcssp ptr1;
|*
|* Command Register Instructions
|* Double Precision
|* reg1 <-- reg2
|*
routine cd.cpreg 001000100001 dnop halt; regtotmp; rcsmsw imm2;
; dnop halt; regtotmp; rcslsw imm2;
; dnop halt; ; ptr1;
; dnop halt; tmptoreg; rcsmsw ptr1;
call idle1; dnop halt; tmptoreg; rcslsw ptr1;
|*
|* Command Register Instructions
|* Single Precision
|* reg1 <-- reg3 + ( reg2 * reg4 )
|*
routine cs.r3Ar2Mr4 001000100010 enra halt; regtoti; rcssp imm2;
; smul enrb halt; regtoti; rcssp ptr4;
; smul; regtotmp; rcssp ptr1;
jtierr hang cstat; sadd aluamul enrb halt; regtoti; rcssp ptr3;
; ; ; ptr1;
jtierr ser1 cstat; tioe tisp halt; titoreg; rcssp ptr1;
pipe idl1; halt; ; imm2;
|*
|* Command Register Instructions
|* Double Precision
|* reg1 <-- reg3 + ( reg2 * reg4 )
|*
routine cd.r3Ar2Mr4 001000100011 dnop enra loaddp halt; regtoti; rcsmsw imm2;
; dnop enra loaddp halt; regtoti; rcslsw imm2;
; dnop enrb loaddp halt; regtoti; rcsmsw ptr4;
; dmul enrb loaddp halt; regtoti; rcslsw ptr4;
; dmul; regtotmp; rcslsw ptr1;
; dnop enrb loaddp halt; regtoti; rcsmsw ptr3;
jtierr hang cstat; dadd aluamul enrb loaddp halt; regtoti; rcslsw ptr3;
; dnop; ; ptr1;
jtierr der1 cstat; dnop tioe tilsw halt; titoreg; rcslsw ptr1;
call idle1; dnop tioe timsw halt; titoreg; rcsmsw ptr1;
|*
|* Command Register Instructions
|* Single Precision
|* reg1 <-- reg3 - ( reg2 * reg4 )
|*
routine cs.r3Sr2Mr4 001000100100 enra halt; regtoti; rcssp imm2;
; smul enrb halt; regtoti; rcssp ptr4;
; smul; regtotmp; rcssp ptr1;
jtierr hang cstat; srsub aluamul enrb halt; regtoti; rcssp ptr3;
; ; ; ptr1;
jtierr ser1 cstat; tioe tisp halt; titoreg; rcssp ptr1;
pipe idl1; halt; ; imm2;
|*
|* Command Register Instructions
|* Double Precision
|* reg1 <-- reg3 - ( reg2 * reg4 )
|*
routine cd.r3Sr2Mr4 001000100101 dnop enra loaddp halt; regtoti; rcsmsw imm2;
; dnop enra loaddp halt; regtoti; rcslsw imm2;
; dnop enrb loaddp halt; regtoti; rcsmsw ptr4;
; dmul enrb loaddp halt; regtoti; rcslsw ptr4;
; dmul; regtotmp; rcslsw ptr1;
; dnop enrb loaddp halt; regtoti; rcsmsw ptr3;
jtierr hang cstat; drsub aluamul enrb loaddp halt; regtoti; rcslsw ptr3;
; dnop; ; ptr1;
jtierr der1 cstat; dnop tioe tilsw halt; titoreg; rcslsw ptr1;
call idle1; dnop tioe timsw halt; titoreg; rcsmsw ptr1;
|*
|* Command Register Instructions
|* Single Precision
|* reg1 <-- - reg3 + ( reg2 * reg4 )
|*
routine cs.Nr3Sr2Mr4 001000100110 enra halt; regtoti; rcssp imm2;
; smul enrb halt; regtoti; rcssp ptr4;
; smul; regtotmp; rcssp ptr1;
jtierr hang cstat; ssub aluamul enrb halt; regtoti; rcssp ptr3;
; ; ; ptr1;
jtierr ser1 cstat; tioe tisp halt; titoreg; rcssp ptr1;
pipe idl1; halt; ; imm2;
|*
|* Command Register Instructions
|* Double Precision
|* reg1 <-- - reg3 + ( reg2 * reg4 )
|*
routine cd.Nr3Sr2Mr4 001000100111 dnop enra loaddp halt; regtoti; rcsmsw imm2;
; dnop enra loaddp halt; regtoti; rcslsw imm2;
; dnop enrb loaddp halt; regtoti; rcsmsw ptr4;
; dmul enrb loaddp halt; regtoti; rcslsw ptr4;
; dmul; regtotmp; rcslsw ptr1;
; dnop enrb loaddp halt; regtoti; rcsmsw ptr3;
jtierr hang cstat; dsub aluamul enrb loaddp halt; regtoti; rcslsw ptr3;
; dnop; ; ptr1;
jtierr der1 cstat; dnop tioe tilsw halt; titoreg; rcslsw ptr1;
call idle1; dnop tioe timsw halt; titoreg; rcsmsw ptr1;
|*
|* Command Register Instructions
|* Single Precision
|* reg1 <-- reg3 * ( reg2 + reg4 )
|*
routine cs.r3Mr2Ar4 001000101000 enra halt; regtoti; rcssp imm2;
; sadd enrb halt; regtoti; rcssp ptr4;
; sadd; regtotmp; rcssp ptr1;
jtierr hang cstat; smul mulaalu enrb halt; regtoti; rcssp ptr3;
; ; ; ptr1;
jtierr ser1 cstat; tioe tisp halt; titoreg; rcssp ptr1;
pipe idl1; halt; ; imm2;
|*
|* Command Register Instructions
|* Double Precision
|* reg1 <-- reg3 * ( reg2 + reg4 )
|*
routine cd.r3Mr2Ar4 001000101001 dnop enra loaddp halt; regtoti; rcsmsw imm2;
; dnop enra loaddp halt; regtoti; rcslsw imm2;
; dnop enrb loaddp halt; regtoti; rcsmsw ptr4;
; dadd enrb loaddp halt; regtoti; rcslsw ptr4;
; dadd; regtotmp; rcslsw ptr1;
jtierr hang cstat; dnop enrb loaddp halt; regtoti; rcsmsw ptr3;
; dmul mulaalu enrb loaddp halt; regtoti; rcslsw ptr3;
; dmul; ; ;
; dnop halt; ; ;
jtierr der1 cstat; dnop tioe tilsw halt; titoreg; rcslsw ptr1;
call idle1; dnop tioe timsw halt; titoreg; rcsmsw ptr1;
|*
|* Command Register Instructions
|* Single Precision
|* reg1 <-- reg3 * ( reg2 - reg4 )
|*
routine cs.r3Mr2Sr4 001000101010 enra halt; regtoti; rcssp imm2;
; ssub enrb halt; regtoti; rcssp ptr4;
; ssub; regtotmp; rcssp ptr1;
jtierr hang cstat; smul mulaalu enrb halt; regtoti; rcssp ptr3;
; ; ; ptr1;
jtierr ser1 cstat; tioe tisp halt; titoreg; rcssp ptr1;
pipe idl1; halt; ; imm2;
|*
|* Command Register Instructions
|* Double Precision
|* reg1 <-- reg3 * ( reg2 - reg4 )
|*
routine cd.r3Mr2Sr4 001000101011 dnop enra loaddp halt; regtoti; rcsmsw imm2;
; dnop enra loaddp halt; regtoti; rcslsw imm2;
; dnop enrb loaddp halt; regtoti; rcsmsw ptr4;
; dsub enrb loaddp halt; regtoti; rcslsw ptr4;
; dsub; regtotmp; rcslsw ptr1;
jtierr hang cstat; dnop enrb loaddp halt; regtoti; rcsmsw ptr3;
; dmul mulaalu enrb loaddp halt; regtoti; rcslsw ptr3;
; dmul; ; ;
; dnop halt; ; ptr1;
jtierr der1 cstat; dnop tioe tilsw halt; titoreg; rcslsw ptr1;
call idle1; dnop tioe timsw halt; titoreg; rcsmsw ptr1;
|*
|* Command Register Instructions
|* Single Precision
|* reg1 <-- reg3 * ( - reg2 + reg4 )
|*
routine cs.r3MNr2Ar4 001000101100 enra halt; regtoti; rcssp imm2;
; srsub enrb halt; regtoti; rcssp ptr4;
; srsub; regtotmp; rcssp ptr1;
jtierr hang cstat; smul mulaalu enrb halt; regtoti; rcssp ptr3;
; ; ; ptr1;
jtierr ser1 cstat; tioe tisp halt; titoreg; rcssp ptr1;
pipe idl1; halt; ; imm2;
|*
|* Command Register Instructions
|* Double Precision
|* reg1 <-- reg3 * ( - reg2 + reg4 )
|*
routine cd.r3MNr2Ar4 001000101101 dnop enra loaddp halt; regtoti; rcsmsw imm2;
; dnop enra loaddp halt; regtoti; rcslsw imm2;
; dnop enrb loaddp halt; regtoti; rcsmsw ptr4;
; drsub enrb loaddp halt; regtoti; rcslsw ptr4;
; drsub; ; ptr3;
jtierr hang cstat; dnop enrb loaddp halt; regtoti; rcsmsw ptr3;
; dmul mulaalu enrb loaddp halt; regtoti; rcslsw ptr3;
; dmul; regtotmp; rcslsw ptr1;
; dnop halt; ; ;
jtierr der1 cstat; dnop tioe tilsw halt; titoreg; rcslsw ptr1;
call idle1; dnop tioe timsw halt; titoreg; rcsmsw ptr1;
|*
|* Command Register Instructions
|* Single Precision Matrix Operation
|* reg1 <-- (reg2) * (reg3) + (reg2 + 1) * (reg3 + 1)
|*
routine cs.X2 001000101110 enra halt; regtoti; rcssp imm2;
; smul enrb halt; regtoti; rcssp ptr3; ptr2+
; smul; ; ptr2;
jtierr hang cstat; enra srccmul clkcc halt; regtoti; rcssp ptr2; ptr3+
; smul enrb srccmul halt; regtoti; rcssp ptr3;
; smul; regtotmp; rcssp ptr1;
jtierr hang cstat; sadd aluamul alubcreg halt; ; ;
; ; ; ptr1;
jtierr ser1 cstat; tioe tisp halt; titoreg; rcssp ptr1;
pipe idl1; halt; ; imm2;
|*
|* Command Register Instructions
|* Double Precision Matrix Operation
|* reg1 <-- (reg2) * (reg3) + (reg2 + 1) * (reg3 + 1)
|*
routine cd.X2 001000101111 dnop enra loaddp halt; regtoti; rcsmsw imm2;
; dnop enra loaddp halt; regtoti; rcslsw imm2;
; dnop enrb loaddp halt; regtoti; rcsmsw ptr3; ptr2+
; dmul enrb loaddp halt; regtoti; rcslsw ptr3;
; dmul; ; ptr2; ptr3+
; dnop enra loaddp halt; regtoti; rcsmsw ptr2;
jtierr hang cstat; dnop enra srccmul clkcc loaddp halt;regtoti; rcslsw ptr2;
; dnop enrb srccmul loaddp halt; regtoti; rcsmsw ptr3;
; dmul enrb loaddp halt; regtoti; rcslsw ptr3;
; dmul; regtotmp; rcslsw ptr1;
; dnop halt; ; ;
jtierr hang cstat; dadd aluamul alubcreg halt; ; ;
; dnop; ; ptr1;
jtierr der1 cstat; dnop tioe tilsw halt; titoreg; rcslsw ptr1;
call idle1; dnop tioe timsw halt; titoreg; rcsmsw ptr1;
|*
|* Command Register Instructions
|* Single Precision Matrix Operation
|* reg1 <-- (reg2)*(reg3) + (reg2 + 1)*(reg3 + 1)
|* + (reg2 + 2)*(reg3 + 2)
|*
routine cs.X3 001000110000 enra halt; regtoti; rcssp imm2;
; smul enrb halt; regtoti; rcssp ptr3; ptr2+
; smul; ; ptr2; ptr3+
jtierr hang cstat; enra srccmul clkcc halt; regtoti; rcssp ptr2;
; smul enrb srccmul halt; regtoti; rcssp ptr3; ptr2+
; ; ; ; ptr3+
jtierr hang cstat; sadd aluamul alubcreg halt; ; ;
; ; ; ;
X3fins:
jtierr hang cstat; tioe tisp halt; titotmp; rcssp ptr2;
; enra halt; regtoti; rcssp ptr2;
; smul enrb halt; regtoti; rcssp ptr3;
; smul; ; rcssp ptr1;
jtierr hang cstat; sadd aluamul enrb halt; tmptoti; rcssp ptr1;
; sadd aluamul halt; regtotmp; rcssp ptr1;
; halt; ; ptr1;
jtierr ser1 cstat; tioe tisp halt; titoreg; rcssp ptr1;
pipe idl1; halt; ; imm2;
|*
|* Command Register Instructions
|* Double Precision Matrix Operation
|* reg1 <-- (reg2)*(reg3) + (reg2 + 1)*(reg3 + 1)
|* + (reg2 + 2)*(reg3 + 2)
|*
routine cd.X3 001000110001 dnop enra loaddp halt; regtoti; rcsmsw imm2;
; dnop enra loaddp halt; regtoti; rcslsw imm2;
; dnop enrb loaddp halt; regtoti; rcsmsw ptr3; ptr2+
; dmul enrb loaddp halt; regtoti; rcslsw ptr3;
; dmul; ; ptr2; ptr3+
; dnop enra loaddp halt; regtoti; rcsmsw ptr2;
jtierr hang cstat; dnop enra srccmul clkcc loaddp halt;regtoti; rcslsw ptr2;
; dnop enrb srccmul loaddp halt; regtoti; rcsmsw ptr3; ptr2+
; dmul enrb loaddp halt; regtoti; rcslsw ptr3;
; dmul; ; ; ptr3+
; dnop halt; ; ;
jtierr hang cstat; dadd aluamul alubcreg halt; ; ;
; dnop; ; ;
X3find:
jtierr hang cstat; dnop tioe tilsw halt; titotmp; rcslsw;
; dnop tioe timsw halt; titotmp; rcsmsw ptr2;
; dnop enra loaddp halt; regtoti; rcsmsw ptr2;
; dnop enra loaddp halt; regtoti; rcslsw ptr2;
; dnop enrb loaddp halt; regtoti; rcsmsw ptr3;
; dmul enrb loaddp halt; regtoti; rcslsw ptr3;
; dmul; ; ;
; dnop enrb loaddp halt; tmptoti; rcsmsw;
jtierr hang cstat; dadd aluamul enrb loaddp halt; tmptoti; rcslsw;
; dnop halt; regtotmp; rcslsw ptr1;
; dnop halt; ; ptr1;
jtierr der1 cstat; dnop tioe tilsw halt; titoreg; rcslsw ptr1;
call idle1; dnop tioe timsw halt; titoreg; rcsmsw ptr1;
|*
|* Command Register Instructions
|* Single Precision Matrix Operation
|* reg1 <-- (reg2)*(reg3) + (reg2 + 1)*(reg3 + 1)
|* + (reg2 + 2)*(reg3 + 2) + (reg2 +3)*(reg3+3)
|*
routine cs.X4 001000110010 enra halt; regtoti; rcssp imm2;
; smul enrb halt; regtoti; rcssp ptr3; ptr2+
; smul; ; ptr2; ptr3+
jtierr hang cstat; enra srccmul clkcc halt; regtoti; rcssp ptr2;
; smul enrb srccmul halt; regtoti; rcssp ptr3; ptr2+
; smul; ; ; ptr3+
jtierr hang cstat; sadd aluamul alubcreg halt; ; ;
; ; ; ;
jtierr hang cstat; tioe tisp halt; titotmp; rcssp ptr2;
; enra halt; regtoti; rcssp ptr2;
; smul enrb halt; regtoti; rcssp ptr3; ptr2+
; smul; ; ; ptr3+
jtierr hang cstat; sadd aluamul enrb halt; tmptoti; ;
call X3fins; sadd aluamul; ; ;
|*
|* Command Register Instructions
|* Double Precision Matrix Operation
|* reg1 <-- (reg2)*(reg3) + (reg2 + 1)*(reg3 + 1)
|* + (reg2 + 2)*(reg3 + 2) + (reg2 +3)*(reg3+3)
|*
routine cd.X4 001000110011 dnop enra loaddp halt; regtoti; rcsmsw imm2;
; dnop enra loaddp halt; regtoti; rcslsw imm2;
; dnop enrb loaddp halt; regtoti; rcsmsw ptr3; ptr2+
; dmul enrb loaddp halt; regtoti; rcslsw ptr3;
; dmul; ; ptr2; ptr3+
; dnop enra loaddp halt; regtoti; rcsmsw ptr2;
jtierr hang cstat; dnop enra srccmul clkcc loaddp halt;regtoti; rcslsw ptr2;
; dnop enrb srccmul loaddp halt; regtoti; rcsmsw ptr3; ptr2+
; dmul enrb loaddp halt; regtoti; rcslsw ptr3;
; dmul; ; ; ptr3+
; dnop halt; ; ;
jtierr hang cstat; dadd aluamul alubcreg halt; ; ;
; dnop; ; ;
jtierr hang cstat; dnop tioe tilsw halt; titotmp; rcslsw;
; dnop tioe timsw halt; titotmp; rcsmsw;
; dnop enra loaddp halt; regtoti; rcsmsw ptr2;
; dnop enra loaddp halt; regtoti; rcslsw ptr2;
; dnop enrb loaddp halt; regtoti; rcsmsw ptr3; ptr2+
; dmul enrb loaddp halt; regtoti; rcslsw ptr3;
; dmul; ; ; ptr3+
; dnop enrb loaddp halt; tmptoti; rcsmsw;
jtierr hang cstat; dadd aluamul enrb loaddp halt; tmptoti; rcslsw;
call X3find; dnop; ; ;
|*
|*
|* 2 X 2, 3 X 3, 4 X 4 Matrix Move
|* Single Precision
|* Moves elements from ptr2 to ptr1
|*
routine cs.MV2 001001100010 halt; ; ;
; halt; ; ptr2; lpreg!4
call msmovelp; halt; regtotmp; rcssp ptr2;
routine cs.MV3 001001100100 halt; ; ;
; halt; ; ptr2; lpreg!9
call msmovelp; halt; regtotmp; rcssp ptr2;
routine cs.MV4 001001100110 halt; ; ;
; halt; ; ptr2; lpreg!16
call msmovelp; halt; regtotmp; rcssp ptr2;
|* Move matrix at ptr2 to ptr1
msmovelp:
; halt; ; ptr1; ptr2+
; halt; tmptoreg; rcssp ptr1; lpreg-
jloop msmovelp; halt; ; ptr2; ptr1+
; halt; regtotmp; rcssp ptr2;
pipe idl1; halt; ; imm2;
|*
|* 2 X 2, 3 X 3, 4 X 4 Matrix Move
|* Double Precision
|* Moves elements from ptr2 to ptr1
|*
routine cd.MV2 001001100011 halt; ; ;
; halt; ; ptr2; lpreg!4
call mdmovelp; halt; regtotmp; rcsmsw ptr2;
routine cd.MV3 001001100101 halt; ; ;
; halt; ; ptr2; lpreg!9
call mdmovelp; halt; regtotmp; rcsmsw ptr2;
routine cd.MV4 001001100111 halt; ; ;
; halt; ; ptr2; lpreg!16
call mdmovelp; halt; regtotmp; rcsmsw ptr2;
|* Move matrix at ptr2 to ptr1
mdmovelp:
; halt; regtotmp; rcslsw ptr2;
; halt; ; ptr1; ptr2+
; halt; tmptoreg; rcsmsw ptr1; lpreg-
; halt; tmptoreg; rcslsw ptr1;
jloop mdmovelp; halt; ; ptr2; ptr1+
; halt; regtotmp; rcsmsw ptr2;
pipe idl1; halt; ; imm2;
|*
|* 2 X 2 Matrix Transpose
|* Single Precision
|*
routine cs.TR2 001001101000 halt; ; ;
|* load ptr5 with 0x700+D0 - 1, since ptr5 is increased at beginning of loop.
; halt; ; ; ptr5!0x700+0xCF
; halt; ; ; lpreg!0x02
call tsmovelp; halt; ; ptr1; ptr1+
; halt; ; ; ptr5!0x700+0xD0
call tsmove; halt; ; ptr5;
|* Note: Do not need to reload ptr5, since tsmove incremented it by 1.
call tsmove; halt; ; ptr5;
pipe idl1; halt; ; imm2;
|*
|* 3 X 3 Matrix Transpose
|* Single Precision
|*
routine cs.TR3 001001101010 halt; ; ;
; halt; ; ; ptr5!0x700+0xCF
; halt; ; ; lpreg!0x07
call tsmovelp; halt; ; ptr1; ptr1+
; halt; ; ; ptr5!0x700+0xD4
call tsmove; halt; ; ptr5;
; halt; ; ; ptr5!0x700+0xD1
call tsmove; halt; ; ptr5;
; halt; ; ; ptr5!0x700+0xD6
call tsmove; halt; ; ptr5;
|* Do not need to reload element 2,2, as it's not transposed. Just decrease the pointer and move the
|* Next element
; halt; ; ; ptr5!0x700+0xD0
call tsmove; halt; ; ptr5; ptr1-
; halt; ; ; ptr5!0x700+0xD5
call tsmove; halt; ; ptr5;
; halt; ; ; ptr5!0x700+0xD2
call tsmove; halt; ; ptr5;
pipe idl1; halt; ; imm2;
|*
|* 4 X 4 Matrix Transpose
|* Single Precision
|*
routine cs.TR4 001001101100 halt; ; ;
; halt; ; ; ptr5!0x700+0xCF
; halt; ; ; lpreg!0xE
call tsmovelp; halt; ; ptr1; ptr1+
; halt; ; ; ptr5!0x700+0xDA
call tsmove; halt; ; ptr5;
; halt; ; ; ptr5!0x700+0xD6
call tsmove; halt; ; ptr5;
; halt; ; ; ptr5!0x700+0xD2
call tsmove; halt; ; ptr5;
; halt; ; ; ptr5!0x700+0xDD
call tsmove; halt; ; ptr5;
|* Do not need to reload element 3,3, as it's not transposed. Just decrease the pointer and move the
|* Next element
; halt; ; ; ptr5!0x700+0xD5
call tsmove; halt; ; ptr5; ptr1-
; halt; ; ; ptr5!0x700+0xD1
call tsmove; halt; ; ptr5;
; halt; ; ; ptr5!0x700+0xDC
call tsmove; halt; ; ptr5;
; halt; ; ; ptr5!0x700+0xD8
call tsmove; halt; ; ptr5;
|* Do not need to reload element 2,2, as it's not transposed. Just decrease the pointer and move the
|* Next element
; halt; ; ; ptr5!0x700+0xD0
call tsmove; halt; ; ptr5; ptr1-
; halt; ; ; ptr5!0x700+0xDB
call tsmove; halt; ; ptr5;
; halt; ; ; ptr5!0x700+0xD7
call tsmove; halt; ; ptr5;
; halt; ; ; ptr5!0x700+0xD3
call tsmove; halt; ; ptr5;
pipe idl1; halt; ; imm2;
|*
tsmovelp:
; halt; regtotmp; rcssp ptr1; ptr5+
; halt; ; ptr5; lpreg-
jloop tsmovelp; halt; tmptoreg; rcssp ptr5; ptr1+
rtn; halt; ; ptr1;
|* move element from ptr5 to ptr1
|* ptr1 is decremented at beginning of loop, since 'tsmovelp' incremented it at end of loop
tsmove:
; halt; regtotmp; rcssp ptr5; ptr1-
; halt; ; ptr1; ptr5+
rtn; halt; tmptoreg; rcssp ptr1;
|*
|* 2 X 2 Matrix Transpose
|* Double Precision
|*
routine cd.TR2 001001101001 halt; ; ;
|* load ptr5 with 0x700+D0 - 1, since ptr5 is increased at beginning of loop.
; halt; ; ; ptr5!0x700+0xCF
; halt; ; ; lpreg!0x02
call tdmovelp; halt; ; ptr1; ptr1+
; halt; ; ; ptr5!0x700+0xD0
call tdmove; halt; ; ptr5;
|* Note: Do not need to reload ptr5, since tdmove incremented it by 1.
call tdmove; halt; ; ptr5;
call idle1; halt; ; ;
|*
|* 3 X 3 Matrix Transpose
|* Double Precision
|*
routine cd.TR3 001001101011 halt; ; ;
; halt; ; ; ptr5!0x700+0xCF
; halt; ; ; lpreg!0x07
call tdmovelp; halt; ; ptr1; ptr1+
; halt; ; ; ptr5!0x700+0xD4
call tdmove; halt; ; ptr5;
; halt; ; ; ptr5!0x700+0xD1
call tdmove; halt; ; ptr5;
; halt; ; ; ptr5!0x700+0xD6
call tdmove; halt; ; ptr5;
|* Do not need to reload element 2,2, as it's not transposed. Just decrease the pointer and move the
|* Next element
; halt; ; ; ptr5!0x700+0xD0
call tdmove; halt; ; ptr5; ptr1-
; halt; ; ; ptr5!0x700+0xD5
call tdmove; halt; ; ptr5;
; halt; ; ; ptr5!0x700+0xD2
call tdmove; halt; ; ptr5;
pipe idl1; halt; ; imm2;
|*
|* 4 X 4 Matrix Transpose
|* Double Precision
|*
routine cd.TR4 001001101101 halt; ; ;
; halt; ; ; ptr5!0x700+0xCF
; halt; ; ; lpreg!0xE
call tdmovelp; halt; ; ptr1; ptr1+
; halt; ; ; ptr5!0x700+0xDA
call tdmove; halt; ; ptr5;
; halt; ; ; ptr5!0x700+0xD6
call tdmove; halt; ; ptr5;
; halt; ; ; ptr5!0x700+0xD2
call tdmove; halt; ; ptr5;
; halt; ; ; ptr5!0x700+0xDD
call tdmove; halt; ; ptr5;
|* Do not need to reload element 3,3, as it's not transposed. Just decrease the pointer and move the
|* Next element
; halt; ; ; ptr5!0x700+0xD5
call tdmove; halt; ; ptr5; ptr1-
; halt; ; ; ptr5!0x700+0xD1
call tdmove; halt; ; ptr5;
; halt; ; ; ptr5!0x700+0xDC
call tdmove; halt; ; ptr5;
; halt; ; ; ptr5!0x700+0xD8
call tdmove; halt; ; ptr5;
|* Do not need to reload element 2,2, as it's not transposed. Just decrease the pointer and move the
|* Next element
; halt; ; ; ptr5!0x700+0xD0
call tdmove; halt; ; ptr5; ptr1-
; halt; ; ; ptr5!0x700+0xDB
call tdmove; halt; ; ptr5;
; halt; ; ; ptr5!0x700+0xD7
call tdmove; halt; ; ptr5;
; halt; ; ; ptr5!0x700+0xD3
call tdmove; halt; ; ptr5;
pipe idl1; halt; ; imm2;
|*
|* move matrix at ptr1 to ptr 5.
|* ptr5 is incremented at beginning of loop, ptr1 at end of loop
tdmovelp:
; halt; regtotmp; rcsmsw ptr1; ptr5+
; halt; regtotmp; rcslsw ptr1;
; halt; ; ptr5; lpreg-
; halt; tmptoreg; rcsmsw ptr5; ptr1+
jloop tdmovelp; halt; tmptoreg; rcslsw ptr5;
rtn; halt; ; ptr1;
|* move element from ptr5 to ptr1
|* ptr1 is decremented at beginning of loop, since 'tdmovelp' incremented it at end of loop
tdmove:
; halt; regtotmp; rcsmsw ptr5; ptr1-
; halt; regtotmp; rcslsw ptr5;
; halt; ; ptr1; ptr5+
; halt; tmptoreg; rcsmsw ptr1;
rtn; halt; tmptoreg; rcslsw ptr1;
|*
|* Command Register instruction
|* reg1 <- square root (reg2)
|* Single Precision
|*
routine cs.sqrt 001000010000 sqrt enra halt; regtoti; rcssp imm2;
; ; ; ptr1;
; halt; regtotmp; rcssp ptr1;
; ; ; ;
; ; ; ;
; ; ; ;
; halt; ; ptr1;
jtierr ser1 cstat; tioe tisp halt; titoreg; rcssp ptr1;
pipe idl1; halt; ; imm2;
|*
|* Command Register instruction
|* reg1 <- square root (reg2)
|* Double Precision
|*
routine cd.sqrt 001000010001 dnop enra loaddp halt; regtoti; rcsmsw imm2;
; dsqrt enra loaddp halt; regtoti; rcslsw imm2;
; dnop; ; ptr1;
; dnop halt; regtotmp; rcslsw ptr1;
; dnop; ; ;
; dnop; ; ;
; dnop; ; ;
; dmul; ; ;
; dmul; ; ;
; dmul; ; ptr1;
jtierr der1 cstat; dnop tioe tilsw halt; titoreg; rcslsw ptr1;
call idle1; dnop tioe timsw halt; titoreg; rcsmsw ptr1;
|*
|* Command Register instruction
|* reg1 <- hyptoenuse (reg2, reg3)
|* Single Precision
|*
routine cs.hypot 001000010010 scvtd enra halt; regtoti; rcsmsw imm2;
; scvtd enra halt; regtoti; rcsmsw imm2;
; dnop tioe timsw; ; ;
; dnop enra enrb tioe timsw loaddp halt;; ;
; dmul enra enrb tioe tilsw loaddp halt;; ;
; dmul; ; ;
; dnop tioe timsw; ; ;
; dnop tioe timsw halt; titotmp; rcsmsw;
jtierr hang cstat; dnop tioe tilsw halt; titotmp; rcslsw;
; scvtd enra halt; regtoti; rcssp ptr3;
; scvtd enra halt; regtoti; rcssp ptr3;
; dnop tioe timsw; ; ;
; dnop enra enrb tioe timsw loaddp halt;; ;
; dmul enra enrb tioe tilsw loaddp halt;; ;
; dmul; ; ;
; dnop enrb loaddp halt; tmptoti; rcsmsw;
jtierr hang cstat; dadd aluamul enrb loaddp halt; tmptoti; rcslsw;
; dnop tioe timsw; ; ;
jtierr hang cstat; dnop enra tioe timsw loaddp halt;; ;
; dsqrt enra tioe tilsw loaddp halt;; ;
; dnop; ; ;
; dnop halt; ; ;
; dnop; ; ;
; dnop; ; ;
; dnop; ; ;
; dmul; ; ;
; dmul; ; ;
; dmul tioe timsw; ; ;
jtierr hang cstat; dnop tioe timsw halt; titotmp; rcsmsw;
; dnop tioe tilsw halt; titotmp; rcslsw;
; dnop halt; ; ;
; dnop enra loaddp halt; tmptoti; rcsmsw;
; dcvts enra loaddp halt; tmptoti; rcslsw;
; dcvts; ; ;
jtierr hang cstat; dnop tioe timsw halt; ; ptr1;
call idle1; dnop tioe timsw halt; titoreg; rcssp ptr1;
|*
|* Command Register instruction
|* reg1 <- hypotenuse (reg2, reg3)
|* Double Precision
|*
routine cd.hypot 001000010011 dnop enra enrb loaddp halt; regtoti; rcsmsw imm2;
; dmul enra enrb loaddp halt; regtoti; rcslsw imm2;
; dmul; ; ;
; dmul; ; ; lpreg!0x01
jtierr dhardway; dnop tioe timsw halt; titotmp; rcsmsw;
; dnop tioe tilsw halt; titotmp; rcslsw;
; dnop enra enrb loaddp halt; regtoti; rcsmsw ptr3;
; dmul enra enrb loaddp halt; regtoti; rcslsw ptr3;
; dmul; ; ;
; dnop enrb loaddp halt; tmptoti; rcsmsw;
jtierr dhardway; dadd aluamul enrb loaddp halt; tmptoti; rcslsw;
; dnop; ; ;
jtierr dhard2; dnop enra tioe timsw loaddp halt;; ;
; dsqrt enra tioe tilsw loaddp halt;; ;
; dnop; ; ptr1;
; dnop halt; regtotmp; rcslsw ptr1;
; dnop; ; ptr5; ptr5!0x700+0xD2
; dnop; tmptoreg; rcslsw ptr5;
; dnop; ; ; lpreg!0x0
; dmul; ; ;
; dmul; ; ;
; dmul; ; ptr1;
jtierr dhardway cstat; dnop tioe tilsw halt; titoreg; rcslsw ptr1;
call idle1; dnop tioe timsw halt; titoreg; rcsmsw ptr1;
dhard2:
; dnop; ; ;
; dnop; ; ;
; dnop; ; ;
; dnop; ; ;
; dnop; ; ;
; dnop; ; ;
; dnop; ; ;
; dnop halt; ; ;
dhardway:
|* compare abs(reg2) to abs(operand)
; dnop; ; ;
; dnop enrb loaddp halt; regtoti; rcsmsw ptr3;
; dnop enrb loaddp halt; regtoti; rcslsw ptr3;
; dnop enra loaddp halt; regtoti; rcsmsw ptr2;
; dcmpm enra loaddp halt; regtoti; rcslsw ptr2;
; dcmpm; ; ;
jtierr cklpreg cstat; dcmpm halt; ; ;
; dnop halt; ; ;
jge dhyptyox; dnop enra loaddp halt; regtoti; rcsmsw ptr3;
; dnop enra loaddp halt; regtoti; rcslsw ptr3;
; ddiv enrb loaddp halt; regtoti; rcsmsw ptr2;
; ddiv enrb loaddp halt; regtoti; rcslsw ptr2;
; dnop; ; ptr1;
; dnop halt; regtotmp; rcslsw ptr1;
; dnop; ; ptr5; ptr5!0x700+0xD2
; dnop; tmptoreg; rcslsw ptr5;
; dnop; ; ;
; dmul; ; ;
; dmul halt; ; ;
; dnop tioe timsw halt; titotmp; rcsmsw;
; dnop tioe tilsw halt; titotmp; rcslsw;
; dnop halt; ; ;
; dnop enra enrb loaddp halt; tmptoti; rcsmsw;
; dmul enra enrb loaddp halt; tmptoti; rcslsw;
; dmul; ; ;
; dnop; ; ptr5; ptr5!0x700+0xD0
; dnop tioe timsw halt; titoreg; rcsmsw ptr5;
; dnop tioe tilsw halt; titoreg; rcslsw ptr5;
; dnop enra loaddp halt; regtoti; rcsmsw ptr2;
; dabs enra loaddp halt; regtoti; rcslsw ptr2;
; dnop; ; ptr5; ptr5!0x700+0xD1
; dnop tioe timsw halt; titoreg; rcsmsw ptr5;
call dfinhypot; dnop tioe tilsw halt; titoreg; rcslsw ptr5;
dhyptyox:
; dnop enra loaddp halt; regtoti; rcsmsw ptr2;
; dnop enra loaddp halt; regtoti; rcslsw ptr2;
; dnop; ; ;
; ddiv enrb loaddp halt; regtoti; rcsmsw ptr3;
; ddiv enrb loaddp halt; regtoti; rcslsw ptr3;
; dnop; ; ptr1;
; dnop halt; regtotmp; rcslsw ptr1;
; dnop; ; ptr5; ptr5!0x700+0xD2
; dnop; tmptoreg; rcslsw ptr5;
; dnop; ; ;
; dmul; ; ;
; dmul halt; ; ;
; dnop tioe timsw halt; titotmp; rcsmsw;
; dnop tioe tilsw halt; titotmp; rcslsw;
; dnop halt; ; ;
; dnop enra enrb loaddp halt; tmptoti; rcsmsw;
; dmul enra enrb loaddp halt; tmptoti; rcslsw;
; dmul; ; ;
; dnop; ; ptr5; ptr5!0x700+0xD0
; dnop tioe timsw halt; titoreg; rcsmsw ptr5;
; dnop tioe tilsw halt; titoreg; rcslsw ptr5;
; dnop enra loaddp halt; regtoti; rcsmsw ptr3;
; dabs enra loaddp halt; regtoti; rcslsw ptr3;
; dnop; ; ptr5; ptr5!0x700+0xD1
; dnop tioe timsw halt; titoreg; rcsmsw ptr5;
call dfinhypot; dnop tioe tilsw halt; titoreg; rcslsw ptr5;
dfinhypot:
; dnop; ; ptr5; ptr5!done
; dnop enra loaddp halt; regtoti; rcsmsw ptr5;
; dnop enra loaddp halt; regtoti; rcslsw ptr5;
; dnop; ; ptr5; ptr5!0x700+0xD0
; dnop enrb loaddp halt; regtoti; rcsmsw ptr5;
; dadd enrb loaddp halt; regtoti; rcslsw ptr5;
; dnop; ; ;
; dnop enra tioe timsw loaddp halt;; ;
; dsqrt enra tioe tilsw loaddp halt;; ;
; dnop; ; ;
; dnop halt; ; ;
; dnop; ; ;
; dnop; ; ;
; dnop; ; ;
; dmul; ; ;
; dmul; ; ;
; dmul; ; ;
; dnop tioe timsw halt; titotmp; rcsmsw;
; dnop tioe tilsw halt; titotmp; rcslsw;
; dnop halt; ; ;
; dnop enra loaddp halt; tmptoti; rcsmsw;
; dnop enra loaddp halt; tmptoti; rcslsw;
; dnop; ; ptr5; ptr5!done
; dnop enrb loaddp halt; regtoti; rcsmsw ptr5;
; dadd enrb loaddp halt; regtoti; rcslsw ptr5;
; dnop; ; ;
; dnop tioe timsw halt; titotmp; rcsmsw;
; dnop tioe tilsw halt; titotmp; rcslsw;
; dnop; ; ptr5; ptr5!0x700+0xD0
; dnop enra loaddp halt; regtoti; rcsmsw ptr5;
; dnop enra loaddp halt; regtoti; rcslsw ptr5;
; dnop; ; ;
; ddiv enrb loaddp halt; tmptoti; rcsmsw;
; ddiv enrb loaddp halt; tmptoti; rcslsw;
; dnop; ; ;
; dnop halt; ; ;
; dnop; ; ;
; dnop; ; ;
; dnop; ; ;
; dmul; ; ;
; dmul halt; ; ;
; dnop tioe timsw halt; titotmp; rcsmsw;
; dnop tioe tilsw halt; titotmp; rcslsw;
; dnop halt; ; ;
; dnop enra loaddp halt; tmptoti; rcsmsw; ptr5!0x700+0xD1
; dnop enra loaddp halt; tmptoti; rcslsw ptr5;
; dnop enrb loaddp halt; regtoti; rcsmsw ptr5;
; dmul enrb loaddp halt; regtoti; rcslsw ptr5;
; dmul; ; ;
; dadd aluamul; ; ;
; dadd aluamul; ; ptr1;
jtierr ser15 cstat; dnop tioe tilsw halt; titoreg; rcslsw ptr1;
call idle1; dnop tioe timsw halt; titoreg; rcsmsw ptr1;
|*
|* Command Register Instruction
|* reg1 <-- - reg2
|* Complex Instruction: MSW of operand has real part
|* LSW of operand has imag part
routine c.neg 001000010101 sneg enra halt; regtoti; rcsmsw imm2;
; ; ; ptr1;
; tioe tisp halt; titoreg; rcsmsw ptr1;
; ; ; ptr2;
; sneg enra halt; regtoti; rcslsw ptr2;
; ; ; ptr1;
call idle1; tioe tisp halt; titoreg; rcslsw ptr1;
|*
|* Command Register Instruction
|* reg1 <-- cabs (reg2)
|* Complex Instruction: MSW of operand has real part
|* LSW of operand has imag part
routine c.abs 001000010111 scvtd enra loaddp halt; regtoti; rcsmsw imm2;
; scvtd enra loaddp halt; regtoti; rcsmsw imm2;
; dnop; ; ;
; dnop enra enrb tioe timsw loaddp halt;; ;
; dmul enra enrb tioe tilsw loaddp halt;; ;
; dmul; ; ;
; dmul; ; ;
jtierr bail.out; dmul tioe timsw halt; titotmp; rcsmsw;
; dmul tioe tilsw halt; titotmp; rcslsw;
; scvtd enra loaddp halt; regtoti; rcslsw ptr2;
; scvtd enra loaddp halt; regtoti; rcslsw ptr2;
; dnop; ; ;
; dnop enra enrb tioe timsw loaddp halt;; ;
; dmul enra enrb tioe tilsw loaddp halt;; ;
; dmul; ; ;
; dnop enrb loaddp halt; tmptoti; rcsmsw;
jtierr bail.out; dadd aluamul enrb loaddp halt; tmptoti; rcslsw;
; dnop; ; ;
jtierr bail.out; dnop enra tioe timsw loaddp halt;; ;
; dsqrt enra tioe tilsw loaddp halt;; ;
; dnop; ; ;
; dnop halt; ; ;
; dnop; ; ;
; dnop; ; ;
; dnop; ; ;
; dmul; ; ;
; dmul; ; ;
; dmul; ; ;
jtierr hang cstat; dnop tioe timsw halt; titotmp; rcsmsw;
; dnop tioe tilsw halt; titotmp; rcslsw;
; dnop halt; ; ;
; dnop enra loaddp halt; tmptoti; rcsmsw;
; dcvts enra loaddp halt; tmptoti; rcslsw;
; dcvts; ; ;
jtierr bail.out; dnop tioe tisp halt; ; ptr1;
call idle1; dnop tioe tisp halt; titoreg; rcssp ptr1;
|*
|* Command Register Instruction
|* reg1 <-- reg2 + reg3
|* Complex Instruction: MSW of operand has real part
|* LSW of operand has imag part
routine c.add 001000011001 enra halt; regtoti; rcsmsw imm2;
; sadd enrb halt; regtoti; rcsmsw ptr3;
; sadd; ; ;
jtierr hang cstat; halt; ; ptr1;
; tioe tisp halt; titoreg; rcsmsw ptr1;
; enra halt; regtoti; rcslsw ptr2;
; sadd enrb halt; regtoti; rcslsw ptr3;
; sadd; ; ;
jtierr hang cstat; halt; ; ptr1;
call idle1; tioe tisp halt; titoreg; rcslsw ptr1;
|*
|* Command Register Instruction
|* reg1 <-- reg2 - reg3
|* Complex Instruction: MSW of operand has real part
|* LSW of operand has imag part
routine c.sub 001000011011 enra halt; regtoti; rcsmsw imm2;
; ssub enrb halt; regtoti; rcsmsw ptr3;
; ssub; ; ;
jtierr hang cstat; halt; ; ptr1;
; tioe tisp halt; titoreg; rcsmsw ptr1;
; enra halt; regtoti; rcslsw ptr2;
; ssub enrb halt; regtoti; rcslsw ptr3;
; ssub; ; ;
jtierr hang cstat; halt; ; ptr1;
call idle1; tioe tisp halt; titoreg; rcslsw ptr1;
|*
|* Command Register Instruction
|* reg1 <-- reg2 * reg3
|* Complex Instruction: MSW of operand has real part
|* LSW of operand has imag part
routine c.mul 001000011101 scvtd enra loaddp halt; regtoti; rcsmsw imm3;
; scvtd enra loaddp halt; regtoti; rcsmsw imm3;
; dnop tioe timsw; ; ptr5; ptr5!0x700+0xD2
; dnop tioe timsw halt; titoreg; rcsmsw ptr5;
; dnop tioe tilsw halt; titoreg; rcslsw ptr5;
; scvtd enra loaddp halt; regtoti; rcsmsw ptr2;
; scvtd enra loaddp halt; regtoti; rcsmsw ptr2;
; dnop; ; ptr5; ptr5!0x700+0xD0
; dnop tioe timsw halt; titoreg; rcsmsw ptr5;
; dnop tioe tilsw halt; titoreg; rcslsw ptr5;
; scvtd enra loaddp halt; regtoti; rcslsw ptr2;
; scvtd enra loaddp halt; regtoti; rcslsw ptr2;
; dnop; ; ptr5; ptr5!0x700+0xD1
; dnop enrb tioe timsw loaddp halt;titoreg; rcsmsw ptr5;
; dnop enrb tioe tilsw loaddp halt;titoreg; rcslsw ptr5;
; scvtd enra loaddp halt; regtoti; rcslsw ptr3;
; scvtd enra loaddp halt; regtoti; rcslsw ptr3;
; dnop; ; ptr5; ptr5!0x700+0xD3
; dnop enra tioe timsw loaddp halt;titoreg; rcsmsw ptr5;
; dmul enra tioe tilsw loaddp halt;titoreg; rcslsw ptr5;
; dmul; ; ;
; dnop; ; ;
jtierr hang cstat; dnop tioe timsw halt; titotmp; rcsmsw;
; dnop tioe tilsw halt; titotmp; rcslsw;
; dnop; ; ptr5; ptr5!0x700+0xD0
; dnop enra loaddp halt; regtoti; rcsmsw ptr5;
; dnop enra loaddp halt; regtoti; rcslsw ptr5;
; dnop; ; ptr5; ptr5!0x700+0xD2
; dnop enrb loaddp halt; regtoti; rcsmsw ptr5;
; dmul enrb loaddp halt; regtoti; rcslsw ptr5;
; dmul; ; ;
; dnop enrb loaddp halt; tmptoti; rcsmsw;
jtierr hang cstat; dsub aluamul enrb loaddp halt; tmptoti; rcslsw;
; dnop; ; ;
jtierr hang cstat; dnop enra tioe timsw loaddp halt;; ;
; dcvts enra tioe tilsw loaddp halt;; ;
; dcvts; ; ;
jtierr hang cstat; dnop halt; ; ptr1;
; dnop tioe tisp halt; titoreg; rcsmsw ptr1;
; dnop; ; ptr5; ptr5!0x700+0xD2
; dnop enra loaddp halt; regtoti; rcsmsw ptr5;
; dnop enra loaddp halt; regtoti; rcslsw ptr5;
; dnop; ; ptr5; ptr5!0x700+0xD1
; dnop enrb loaddp halt; regtoti; rcsmsw ptr5;
; dmul enrb loaddp halt; regtoti; rcslsw ptr5;
; dmul; ; ;
; dnop; ; ;
jtierr hang cstat; dnop tioe timsw halt; titotmp; rcsmsw;
; dnop tioe tilsw halt; titotmp; rcslsw;
; dnop; ; ptr5; ptr5!0x700+0xD0
; dnop enra loaddp halt; regtoti; rcsmsw ptr5;
; dnop enra loaddp halt; regtoti; rcslsw ptr5;
; dnop; ; ptr5; ptr5!0x700+0xD3
; dnop enrb loaddp halt; regtoti; rcsmsw ptr5;
; dmul enrb loaddp halt; regtoti; rcslsw ptr5;
; dmul; ; ;
; dnop enrb loaddp halt; tmptoti; rcsmsw;
jtierr hang cstat; dadd aluamul enrb loaddp halt; tmptoti; rcslsw;
; dnop; ; ;
jtierr hang cstat; dnop enra tioe timsw loaddp halt;; ;
; dcvts enra tioe tilsw loaddp halt;; ;
; dcvts; ; ;
jtierr hang cstat; dnop halt; ; ptr1;
call idle1; dnop tioe tisp halt; titoreg; rcslsw ptr1;
|*
|* Command Register Instruction
|*
|* Complex Instruction: MSW of operand has real part
|* LSW of operand has imag part
routine c.div 001000011111 snop enra halt; regtoti; rcslsw imm3;
; ; ; ; ptr5!szero
; scmp enrb halt; regtoti; rcssp ptr5;
; ; ; ;
jeq cimzero; scvtd enra loaddp halt; regtoti; rcsmsw imm3;
; scvtd enra loaddp halt; regtoti; rcsmsw imm3;
; dnop; ; ptr5; ptr5!0x700+0xD2
; dnop tioe timsw halt; titoreg; rcsmsw ptr5;
; dnop tioe tilsw halt; titoreg; rcslsw ptr5;
; scvtd enra loaddp halt; regtoti; rcsmsw ptr2;
; scvtd enra loaddp halt; regtoti; rcsmsw ptr2;
; dnop; ; ptr5; ptr5!0x700+0xD0
; dnop tioe timsw halt; titoreg; rcsmsw ptr5;
; dnop tioe tilsw halt; titoreg; rcslsw ptr5;
; scvtd enra loaddp halt; regtoti; rcslsw ptr2;
; scvtd enra loaddp halt; regtoti; rcslsw ptr2;
; dnop; ; ptr5; ptr5!0x700+0xD1
; dnop enrb tioe timsw loaddp halt;titoreg; rcsmsw ptr5;
; dnop enrb tioe tilsw loaddp halt;titoreg; rcslsw ptr5;
; scvtd enra loaddp halt; regtoti; rcslsw ptr3;
; scvtd enra loaddp halt; regtoti; rcslsw ptr3;
; dnop; ; ptr5; ptr5!0x700+0xD3
; dnop enra enrb tioe timsw loaddp halt;titoreg; rcsmsw ptr5;
; dmul enra enrb tioe tilsw loaddp halt;titoreg; rcslsw ptr5;
; dmul; ; ;
; dnop; ; ;
jtierr hang cstat; dnop tioe timsw halt; titotmp; rcsmsw;
; dnop tioe tilsw halt; titotmp; rcslsw;
; dnop; ; ptr5; ptr5!0x700+0xD2
; dnop enra enrb loaddp halt; regtoti; rcsmsw ptr5;
; dmul enra enrb loaddp halt; regtoti; rcslsw ptr5;
; dmul; ; ;
jtierr hang cstat; dnop enrb loaddp halt; tmptoti; rcsmsw;
; dadd aluamul enrb loaddp halt; tmptoti; rcslsw;
; dnop; ; ptr5; ptr5!0x700+0xD4
jtierr hang cstat; dnop tioe timsw halt; titoreg; rcsmsw ptr5;
; dnop tioe tilsw halt; titoreg; rcslsw ptr5;
; dnop; ; ptr5; ptr5!0x700+0xD3
; dnop enra loaddp halt; regtoti; rcsmsw ptr5;
; dnop enra loaddp halt; regtoti; rcslsw ptr5;
; dnop; ; ptr5; ptr5!0x700+0xD1
; dnop enrb loaddp halt; regtoti; rcsmsw ptr5;
; dmul enrb loaddp halt; regtoti; rcslsw ptr5;
; dmul; ; ;
; dnop; ; ;
jtierr hang cstat; dnop tioe timsw halt; titotmp; rcsmsw;
; dnop tioe tilsw halt; titotmp; rcslsw; ptr5!0x700+0xD2
; dnop enra loaddp halt; regtoti; rcsmsw ptr5;
; dnop enra loaddp halt; regtoti; rcslsw ptr5;
; dnop; ; ptr5; ptr5!0x700+0xD0
; dnop enrb loaddp halt; regtoti; rcsmsw ptr5;
; dmul enrb loaddp halt; regtoti; rcslsw ptr5;
; dmul; ; ;
jtierr hang cstat; dnop enrb loaddp halt; tmptoti; rcsmsw;
; dadd aluamul enrb loaddp halt; tmptoti; rcslsw;
; dnop; ; ;
jtierr hang cstat; dnop enra tioe timsw loaddp halt;; ;
; dnop enra tioe tilsw loaddp halt;; ptr5; ptr5!0x700+0xD4
; ddiv enrb loaddp halt; regtoti; rcsmsw ptr5;
; ddiv enrb loaddp halt; regtoti; rcslsw ptr5;
; dnop; ; ;
; dnop halt; ; ;
; dnop; ; ;
; dnop; ; ;
; dnop; ; ;
; dmul; ; ;
; dmul halt; ; ;
jtierr hang cstat; dnop tioe timsw halt; titotmp; rcsmsw;
; dnop tioe tilsw halt; titotmp; rcslsw;
; dnop halt; ; ;
jtierr hang cstat; dnop enra loaddp halt; tmptoti; rcsmsw;
; dcvts enra loaddp halt; tmptoti; rcslsw;
; dcvts; ; ; ptr5!0x700+0xD2
jtierr hang cstat; dnop halt; ; ptr1;
; dnop tioe tisp halt; titoreg; rcsmsw ptr1;
; dnop enra loaddp halt; regtoti; rcsmsw ptr5;
; dnop enra loaddp halt; regtoti; rcslsw ptr5;
; dnop; ; ptr5; ptr5!0x700+0xD1
; dnop enrb loaddp halt; regtoti; rcsmsw ptr5;
; dmul enrb loaddp halt; regtoti; rcslsw ptr5;
; dmul; ; ;
; dnop; ; ;
jtierr hang cstat; dnop tioe timsw halt; titotmp; rcsmsw;
; dnop tioe tilsw halt; titotmp; rcslsw; ptr5!0x700+0xD3
; dnop enra loaddp halt; regtoti; rcsmsw ptr5;
; dnop enra loaddp halt; regtoti; rcslsw ptr5;
; dnop; ; ptr5; ptr5!0x700+0xD0
; dnop enrb loaddp halt; regtoti; rcsmsw ptr5;
; dmul enrb loaddp halt; regtoti; rcslsw ptr5;
; dmul; ; ;
; dnop enrb loaddp halt; tmptoti; rcsmsw;
jtierr hang cstat; drsub aluamul enrb loaddp halt; tmptoti; rcslsw;
; dnop; ; ;
jtierr hang cstat; dnop enra tioe timsw loaddp halt;; ;
; dnop enra tioe tilsw loaddp halt;; ptr5; ptr5!0x700+0xD4
; ddiv enrb loaddp halt; regtoti; rcsmsw ptr5;
; ddiv enrb loaddp halt; regtoti; rcslsw ptr5;
; dnop; ; ;
; dnop halt; ; ;
; dnop; ; ;
; dnop; ; ;
; dnop; ; ;
; dmul; ; ;
; dmul halt; ; ;
jtierr hang cstat; dnop tioe timsw halt; titotmp; rcsmsw;
; dnop tioe tilsw halt; titotmp; rcslsw;
; dnop halt; ; ;
jtierr hang cstat; dnop enra loaddp halt; tmptoti; rcsmsw;
; dcvts enra loaddp halt; tmptoti; rcslsw;
; dcvts; ; ;
jtierr hang cstat; dnop halt; ; ptr1;
call idle1; dnop tioe tisp halt; titoreg; rcslsw ptr1;
cimzero:
|* get here if y.im == 0
; enra halt; regtoti; rcsmsw ptr2;
; sdiv enrb halt; regtoti; rcsmsw ptr3;
; halt; ; ;
; halt; ; ;
; ; ; ;
; ; ; ;
; halt; ; ptr1;
; tioe tisp halt; titoreg; rcsmsw ptr1;
; enra halt; regtoti; rcslsw ptr2;
; sdiv enrb halt; regtoti; rcsmsw ptr3;
; halt; ; ;
; halt; ; ;
; ; ; ;
; ; ; ;
; halt; ; ptr1;
call idle1; tioe tisp halt; titoreg; rcslsw ptr1;