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

302 lines
9.9 KiB
Plaintext

|* @(#)xsp.u 1.1 94/10/31 Copyright Sun Microsystems, Inc. 1988
|*
|* Single Precision Add Instruction
|* reg1 <-- reg2 + operand
|*
routine xs.add 0100110xxxx0 snop enrb halt; adtoti; imm2;
; sadd enra halt; regtoti; rcssp imm2;
jclr clp idl2; sadd; ; ;
; sadd; ; ;
xsfin:
jtierr hang cstat; halt; ; ptr1;
call idle1; tioe tisp halt; titoreg; rcssp ptr1;
|*
|* Single Precision Subtract Instruction
|* reg1 <-- reg2 - operand
|*
routine xs.sub 0100111xxxx0 snop enrb halt; adtoti; imm2;
; ssub enra halt; regtoti; rcssp imm2;
jclr clp idl2; ssub; ; ;
call xsfin; ssub; ; ;
|*
|* Single Precision Multiply Instruction
|* reg1 <-- reg2 * operand
|*
routine xs.mul 0101000xxxx0 snop enrb halt; adtoti; imm2;
; smul enra halt; regtoti; rcssp imm2;
jclr clp idl2; smul; ; ;
call xsfin; smul; ; ;
|*
|* Single Precision Divide Instruction
|* reg1 <-- reg2 / operand
|*
routine xs.div 0101001xxxx0 enra halt; regtoti; rcssp imm2;
; ; ; ;
; sdiv enrb halt; adtoti; ;
|
| Delay idle 2 as much as possible
|
; halt; ; ;
; halt; ; ;
; ; ; ;
jclr clp idl2; ; ; imm2;
call xdivfin; ; regtotmp; rcssp imm2;
xdivfin:
; halt; ; ptr1;
jtierr ser1 cstat; tioe tisp halt; titoreg; rcssp ptr1;
pipe idl1; snop halt; ; imm2;
|*
|* Single Precision Reverse Divide Instruction
|* reg1 <-- operand / reg2
|*
routine xs.b.div 0101011xxxx0 enra halt; adtoti; imm2;
; sdiv enrb halt; regtoti; rcssp imm2;
; halt; ; ;
; halt; ; ;
; ; ; ;
jclr clp idl2; ; ; imm2;
call xdivfin; ; regtotmp; rcssp imm2;
|*
|* Single Precision Reverse Subtract Instruction
|* reg1 <-- operand - reg2
|*
routine xs.b.sub 0101010xxxx0 snop enrb halt; adtoti; imm2;
; srsub enra halt; regtoti; rcssp imm2;
jclr clp idl2; srsub; ; ;
call xsfin; srsub; ; ;
|*
|* Single Precision Instruction
|* reg1 <-- reg3 + (reg2 * operand)
|*
routine xs.r3Ar2Mop 0110000xxxx0 snop enrb halt; adtoti; imm2;
; smul enra halt; regtoti; rcssp imm2;
; ; ; ;
jclr clp idl2; ; ; imm3;
jtierr hang cstat; sadd aluamul enrb halt; regtoti; rcssp imm3;
; sadd aluamul; ; ;
xs2fin:
jtierr hang cstat; halt; ; ptr1;
call idle1; tioe tisp halt; titoreg; rcssp ptr1;
|*
|* Single Precision Instruction
|* reg1 <-- reg3 - (reg2 * operand)
|*
routine xs.r3Sr2Mop 0110001xxxx0 snop enrb halt; adtoti; imm2;
; smul enra halt; regtoti; rcssp imm2;
; ; ; ;
jclr clp idl2; ; ; imm3;
jtierr hang cstat; srsub aluamul enrb halt; regtoti; rcssp imm3;
call xs2fin; srsub aluamul; ; ;
|*
|* Single Precision Instruction
|* reg1 <-- - reg3 + (reg2 * operand)
|*
routine xs.Nr3Ar2Mop 0110010xxxx0 snop enrb halt; adtoti; imm2;
; smul enra halt; regtoti; rcssp imm2;
; ; ; ;
jclr clp idl2; ; ; imm3;
jtierr hang cstat; ssub aluamul enrb halt; regtoti; rcssp imm3;
call xs2fin; ssub aluamul; ; ;
|*
|* Single Precision Instruction
|* reg1 <-- reg3 * (reg2 + operand)
|*
routine xs.r3Mr2Aop 0110011xxxx0 snop enrb halt; adtoti; imm2;
; sadd enra halt; regtoti; rcssp imm2;
; sadd; ; ;
jclr clp idl2; ; ; imm3;
jtierr hang cstat; smul mulaalu enrb halt; regtoti; rcssp imm3;
call xs2fin; smul mulaalu; ; ;
|*
|* Single Precision Instruction
|* reg1 <-- reg3 * (reg2 - operand)
|*
routine xs.r3Mr2Sop 0110100xxxx0 snop enrb halt; adtoti; imm2;
; ssub enra halt; regtoti; rcssp imm2;
; ssub; ; ;
jclr clp idl2; ; ; imm3;
jtierr hang cstat; smul mulaalu enrb halt; regtoti; rcssp imm3;
call xs2fin; smul mulaalu; ; ;
|*
|* Single Precision Instruction
|* reg1 <-- reg3 * ( - reg2 + operand)
|*
routine xs.r3MNr2Aop 0110101xxxx0 snop enrb halt; adtoti; imm2;
; srsub enra halt; regtoti; rcssp imm2;
; srsub; ; ;
jclr clp idl2; ; ; imm3;
jtierr hang cstat; smul mulaalu enrb halt; regtoti; rcssp imm3;
call xs2fin; smul mulaalu; ; ;
|*
|* Single Precision Instruction
|* reg1 <-- operand + (reg3 * reg2)
|*
routine xs.opAr3Mr2 0110110xxxx0 enra halt; regtoti; rcssp imm2;
jclr clp idl2; ; ; imm3;
; smul enrb halt; regtoti; rcssp imm3;
; ; ; ;
jtierr hang cstat; sadd aluamul enrb halt; adtoti; ;
call xs2fin; sadd aluamul; ; ;
|*
|* Single Precision Instruction
|* reg1 <-- operand - (reg3 * reg2)
|*
routine xs.opSr3Mr2 0110111xxxx0 enra halt; regtoti; rcssp imm2;
jclr clp idl2; ; ; imm3;
; smul enrb halt; regtoti; rcssp imm3;
; ; ; ;
jtierr hang cstat; srsub aluamul enrb halt; adtoti; ;
call xs2fin; srsub aluamul; ; ;
|*
|* Single Precision Instruction
|* reg1 <-- ( - operand) + (reg3 * reg2)
|*
routine xs.NopAr3Mr2 0111000xxxx0 enra halt; regtoti; rcssp imm2;
jclr clp idl2; ; ; imm3;
; smul enrb halt; regtoti; rcssp imm3;
; ; ; ;
jtierr hang cstat; ssub aluamul enrb halt; adtoti; ;
call xs2fin; ssub aluamul; ; ;
|*
|* Single Precision Instruction
|* reg1 <-- operand * (reg3 + reg2)
|*
routine xs.opMr3Ar2 0111001xxxx0 enra halt; regtoti; rcssp imm2;
jclr clp idl2; ; ; imm3;
; sadd enrb halt; regtoti; rcssp imm3;
; sadd; ; ;
jtierr hang cstat; smul mulaalu enrb halt; adtoti; ;
call xs2fin; smul mulaalu; ; ;
|*
|* Single Precision Instruction
|* reg1 <-- operand * (reg3 - reg2)
|*
routine xs.opMr3Sr2 0111010xxxx0 enra halt; regtoti; rcssp imm2;
jclr clp idl2; ; ; imm3;
; srsub enrb halt; regtoti; rcssp imm3;
; srsub; ; ;
jtierr hang cstat; smul mulaalu enrb halt; adtoti; ;
call xs2fin; smul mulaalu; ; ;
|*
|* Single Precision Instruction
|* reg1 <-- operand2 + (operand1 * reg2)
|*
routine xs.linpack1 0100000xxxx0 snop enrb halt; adtoti; imm2;
; smul enra halt; regtoti; rcssp ptr2;
; smul; ; ;
jclr clp2 idl2; ; ; ;
jtierr hang cstat; sadd aluamul enrb halt; optoti; ;
; sadd aluamul; ; ;
jtierr hang cstat; halt; ; ptr1;
call idle1; tioe tisp halt; titoreg; rcssp ptr1;
|*
|* Single Precision Instruction
|* reg1 <-- operand2 - (operand1 * reg2)
|*
routine xs.linpack2 0100001xxxx0 snop enrb halt; adtoti; imm2;
; smul enra halt; regtoti; rcssp imm2;
; smul; ; ;
jclr clp2 idl2; ; ; ;
jtierr hang cstat; srsub aluamul enrb halt; optoti; ;
; srsub aluamul; ; ;
xslfin:
jtierr hang cstat; halt; ; ptr1;
call idle1; tioe tisp halt; titoreg; rcssp ptr1;
|*
|* Single Precision Instruction
|* reg1 <-- ( - operand2) + (operand1 * reg2)
|*
routine xs.linpack3 0100010xxxx0 snop enrb halt; adtoti; imm2;
; smul enra halt; regtoti; rcssp imm2;
; smul; ; ;
jclr clp2 idl2; ; ; ;
jtierr hang cstat; ssub aluamul enrb halt; optoti; ;
call xslfin; ssub aluamul; ; ;
|*
|* Single Precision Instruction
|* reg1 <-- operand2 * (operand1 + reg2)
|*
routine xs.linpack4 0100011xxxx0 snop enrb halt; adtoti; imm2;
; sadd enra halt; regtoti; rcssp imm2;
; sadd; ; ;
jclr clp2 idl2; ; ; ;
jtierr hang cstat; smul mulaalu enrb halt; optoti; ;
call xslfin; smul mulaalu; ; ;
|*
|* Single Precision Instruction
|* reg1 <-- operand2 * (operand1 - reg2)
|*
routine xs.linpack6 0100101xxxx0 snop enrb halt; adtoti; imm2;
; srsub enra halt; regtoti; rcssp imm2;
; srsub; ; ;
jclr clp2 idl2; ; ; ;
jtierr hang cstat; smul mulaalu enrb halt; optoti; ;
call xslfin; smul mulaalu; ; ;
|*
|* Single Precision Instruction
|* reg1 <-- operand2 * (-operand1 + reg2)
|*
routine xs.linpack5 0100100xxxx0 snop enrb halt; adtoti; imm2;
; ssub enra halt; regtoti; rcssp imm2;
; ssub; ; ;
jclr clp2 idl2; ; ; ;
jtierr hang cstat; smul mulaalu enrb halt; optoti; ;
call xslfin; smul mulaalu; ; ;
|*
|* Extended Instruction
|* reg1 <- square root (operand)
|* Single Precision
|*
routine xs.sqrt 0101100xxxx0 sqrt enra halt; adtoti; ;
; ; ; ;
; halt; ; ;
; ; ; ;
jclr clp idl2; ; ; ;
; ; ; ;
; ; regtotmp; rcssp ptr1;
; halt; ; ptr1;
jtierr ser1 cstat; tioe tisp halt; titoreg; rcssp ptr1;
pipe idl1; snop halt; ; imm2;
|*
|* Extended Instruction
|* reg1 <- hypotenuse (reg2, operand)
|* Single Precision
|*
routine xs.hypot 0101101xxxx0 scvtd enra loaddp halt; adtoti; ;
; scvtd enra loaddp halt; adtoti; ;
; dnop; ; ;
; dnop enra enrb tioe timsw loaddp halt;; ;
; dmul enra enrb tioe tilsw loaddp halt;; ;
; dmul; ; ;
; dnop; ; ;
jclr clp idl2; dnop tioe; ; ;
; dnop tioe timsw halt; titotmp; rcsmsw;
jtierr hang cstat; dnop tioe tilsw halt; titotmp; rcslsw ptr2;
; scvtd enra loaddp halt; regtoti; rcssp ptr2;
; scvtd enra loaddp halt; regtoti; rcssp ptr2;
; dnop; ; ;
; 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; ; ;
jtierr hang cstat; 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 hang cstat; dnop tioe tisp halt; ; ptr1;
call idle1; dnop tioe tisp halt; titoreg; rcssp ptr1;