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

510 lines
15 KiB
Plaintext

|*
|* Single Precision Add Instruction
|* Single Precision Subtract Instruction
|*
routine xs.add w100110xxxx0 lbs sadd
routine xs.sub w100111xxxx0 lbs ssub
; lasf fmap csla; reg; ; ;
; ; ; ; ;
; ; ; ; ;
; ; ; ; ;
jclr clp idl2; csuxa usp; ; recclk; rcssp imm2;
; ; ; ; ptr1;
jwerr ser1 cstat;woea; dtor; ; ramwe rcssp ptr1;
call idle1; ; dtor; ; ramwe ptr1;
|*
|* Double Precision Add Instruction
|* Double Precision Subtract Instruction
|*
routine xd.add w100110xxxx1 lbm dadd
routine xd.sub w100111xxxx1 lbm dsub
; lam csla; reg; ; rcslsw ptr2;
; lal csla; reg; ; ;
jclr clp1 idl2; lblf fmap csla; opdlsw; ; ;
; ; ; recclk; rcsmsw ptr1;
; ; ; recclk; rcslsw ptr1;
xdfin.alu:
; ; ; ; ;
xdfin.alu2:
; csuxa umsw; ; ; ;
; csuxa ulsw; ; ; ptr1;
jwerr der1 cstat;woea; dtor; ; ramwe rcsmsw ptr1;
; woea; dtor; ; ramwe rcslsw ptr1;
call idle1; ; dtor; ; ramwe ptr1;
|*
|* Single Precision Multiply Instruction
|*
routine xs.mul w101000xxxx0 las smul
call wait3; lbsf fmap cslm; reg; ; ;
jclr clp idl2; csuxm usp; ; recclk; rcssp imm2;
; ; ; ; ptr1;
jwerr ser1 cstat;woem; dtor; ; ramwe rcssp ptr1;
call idle1; ; dtor; ; ramwe ptr1;
|*
|* Double Precision Multiply Instruction
|*
routine xd.mul w101000xxxx1 lbm dmul
; lam cslm; reg; ; rcslsw ptr2;
; lal cslm; reg; ; ;
jclr clp3 idl2; lblf fmap cslm; opdlsw; ; ;
; ; ; recclk; rcsmsw ptr1;
; ; ; recclk; rcslsw ptr1;
xdfin.mul:
; ; ; ; ;
; ; ; ; ;
; ; ; ; ;
; csuxm umsw; ; ; ;
; csuxm ulsw; ; ; ptr1;
jwerr der1 cstat;woem; dtor; ; ramwe rcsmsw ptr1;
; woem; dtor; ; ramwe rcslsw ptr1;
call idle1; ; dtor; ; ramwe ptr1;
|*
|* Single Precision Divide Instruction
|*
routine xs.div w101001xxxx0 lbs sdiv
; lasf fmap csla; reg; ; ;
; ; ; ; ;
; ; ; ; ; lpreg!11
jclr clp24 idl2;; ; ; ;
|# (Note: 11 will cause a delay of 24)
call wait; ; ; recclk; rcssp ptr1;
; csuxa usp; ; ; ;
; ; ; ; ptr1;
jwerr ser1 cstat;woea; dtor; ; ramwe rcssp ptr1;
call idle1; ; dtor; ; ramwe ptr1;
|*
|* Double Precision Divide Instruction
|*
routine xd.div w101001xxxx1 lbm ddiv
; lam csla; reg; ; rcslsw ptr2;
; lal csla; reg; ; ;
jclr clp56 idl2;lblf fmap csla; opdlsw; ; ;
; ; ; recclk; rcsmsw ptr1;
; ; ; recclk; rcslsw ptr1;
|# (Note: 25 will cause a delay of 52)
; ; ; ; ; lpreg!25
call wait; ; ; ; ;
call xdfin.alu2;; ; ; ;
| ; csuxa umsw; ; ; ;
| ; csuxa ulsw; ; ; ptr1;
| jwerr der1 cstat;woea; dtor; ; ramwe rcsmsw ptr1;
| ; woea; dtor; ; ramwe rcslsw ptr1;
| call idle1; ; dtor; ; ramwe ptr1;
|*
|* Single Precision Backwards Subtract Instruction
|*
routine xs.b.sub w101010xxxx0 las ssub
call wait3; lbsf fmap csla; reg; ; ;
jclr clp idl2; csuxa usp; ; recclk; rcssp imm2;
; ; ; ; ptr1;
jwerr ser1 cstat;woea; dtor; ; ramwe rcssp ptr1;
call idle1; ; dtor; ; ramwe ptr1;
|*
|* Double Precision Backwards Subtract Instruction
|*
routine xd.b.sub w101010xxxx1 lam dsub
; lbm csla; reg; ; rcslsw ptr2;
; lbl csla; reg; ; ;
jclr clp1 idl2; lalf fmap csla; opdlsw; ; ;
; ; ; recclk; rcsmsw ptr1;
call xdfin.alu; ; ; recclk; rcslsw ptr1;
| ; ; ; ; ;
| ; csuxa umsw; ; ; ;
| ; csuxa ulsw; ; ; ptr1;
| jwerr der1 cstat;woea; dtor; ; ramwe rcsmsw ptr1;
| ; woea; dtor; ; ramwe rcslsw ptr1;
| call idle1; ; dtor; ; ramwe ptr1;
|*
|* Single Precision Backwards Divide Instruction
|*
routine xs.b.div w101011xxxx0 las sdiv
; lbsf fmap csla; reg; ; ;
; ; ; ; ;
; ; ; ; ; lpreg!11
jclr clp24 idl2;; ; recclk; rcssp imm2;
|# (Note: 11 will cause a delay of 24)
call wait; ; ; recclk; rcssp ptr1;
; csuxa usp; ; ; ;
; ; ; ; ptr1;
jwerr ser1 cstat;woea; dtor; ; ramwe rcssp ptr1;
call idle1; ; dtor; ; ramwe ptr1;
|*
|* Double Precision Backwards Divide Instruction
|*
routine xd.b.div w101011xxxx1 lam ddiv
; lbm csla; reg; ; rcslsw ptr2;
; lbl csla; reg; ; ;
jclr clp56 idl2;lalf fmap csla; opdlsw; ; ;
; ; ; recclk; rcsmsw ptr1;
; ; ; recclk; rcslsw ptr1;
|# (Note: 25 will cause a delay of 52)
; ; ; ; ; lpreg!25
call wait; ; ; ; ;
call xdfin.alu2;; ; ; ;
| ; csuxa umsw; ; ; ;
| ; csuxa ulsw; ; ; ptr1;
| jwerr der1 cstat;woea; dtor; ; ramwe rcsmsw ptr1;
| ; woea; dtor; ; ramwe rcslsw ptr1;
| call idle1; ; dtor; ; ramwe ptr1;
|*
|* Reg 1 <-- Reg 3 +/- (Reg 2 * Operand)
|* Single Precision Instruction
|*
routine xs.r3Ar2Mop w110000xxxx0 las sadd
routine xs.r3Sr2Mop w110001xxxx0 las ssub
call wait3; lbsf smul cslm; reg; ; ;
; csuxm usp; ; ; ;
; ; ; ; ;
jwerr werr cstat;lbs csla woem; ; ; ;
jclr clp2 idl2; ; ; ; rcssp imm3;
call wait3; lasf fmap csla; reg; recclk; rcssp ptr1;
; csuxa usp; ; ; ;
; ; ; ; ptr1;
jwerr ser1 cstat;woea; dtor; ; ramwe rcssp ptr1;
call idle1; ; dtor; ; ramwe ptr1;
|*
|* Reg 1 <-- Reg 3 +/- (Reg 2 * Operand)
|* Double Precision Instruction
|*
routine xd.r3Ar2Mop w110000xxxx1 lbm dadd
routine xd.r3Sr2Mop w110001xxxx1 lbm dsub
; lam cslm; reg; ; rcslsw ptr2;
; lal cslm; reg; ; ;
jclr clp3 idl2; lblf dmul cslm; opdlsw; ; rcsmsw imm3;
; lam csla; reg; ; rcslsw ptr3;
; lal csla; reg; ; ;
; ; ; recclk; rcsmsw ptr1;
; ; ; recclk; rcslsw ptr1;
; ; ; ; ;
; csuxm umsw; ; ; ;
; csuxm ulsw; ; ; ;
jwerr werr cstat;lbm csla woem; ; ; ;
; lblf fmap csla woem; ; ; ;
; ; ; ; ;
call xdfin.alu; ; ; ; ;
| ; ; ; ; ;
| ; csuxa umsw; ; ; ;
| ; csuxa ulsw; ; ; ptr1;
| jwerr der1 cstat;woea; dtor; ; ramwe rcsmsw ptr1;
| ; woea; dtor; ; ramwe rcslsw ptr1;
| call idle1; ; dtor; ; ramwe ptr1;
|*
|* Reg 1 <-- - Reg 3 + (Reg 2 * Operand)
|* Single Precision Instruction
|*
routine xs.Nr3Ar2Mop w110010xxxx0 las ssub
call wait3; lbsf smul cslm; reg; ; ;
; csuxm usp; ; ; ;
; ; ; ; ;
jwerr werr cstat;las csla woem; ; ; ;
jclr clp2 idl2; ; ; ; rcssp imm3;
call wait3; lbsf fmap csla; reg; recclk; rcssp ptr1;
; csuxa usp; ; ; ;
; ; ; ; ptr1;
jwerr ser1 cstat;woea; dtor; ; ramwe rcssp ptr1;
call idle1; ; dtor; ; ramwe ptr1;
|*
|* Reg 1 <-- - Reg 3 + (Reg 2 * Operand)
|* Double Precision Instruction
|*
routine xd.Nr3Ar2Mop w110010xxxx1 lbm dsub
; lam cslm; reg; ; rcslsw ptr2;
; lal cslm; reg; ; ;
jclr clp3 idl2; lblf dmul cslm; opdlsw; ; rcsmsw imm3;
; lbm csla; reg; ; rcslsw ptr3;
; lbl csla; reg; ; ;
; ; ; recclk; rcsmsw ptr1;
; ; ; recclk; rcslsw ptr1;
; ; ; ; ;
; csuxm umsw; ; ; ;
; csuxm ulsw; ; ; ;
jwerr werr cstat;lam csla woem; ; ; ;
; lalf fmap csla woem; ; ; ;
; ; ; ; ;
call xdfin.alu; ; ; ; ;
| ; ; ; ; ;
| ; csuxa umsw; ; ; ;
| ; csuxa ulsw; ; ; ptr1;
| jwerr der1 cstat;woea; dtor; ; ramwe rcsmsw ptr1;
| ; woea; dtor; ; ramwe rcslsw ptr1;
| call idle1; ; dtor; ; ramwe ptr1;
|*
|* Reg 1 <-- Reg 3 * (Reg 2 +/- Operand)
|* Single Precision Instruction
|*
routine xs.r3Mr2Aop w110011xxxx0 lbs sadd
routine xs.r3Mr2Sop w110100xxxx0 lbs ssub
call wait3; lasf fmap csla; reg; ; ;
; csuxa usp; ; ; ;
; ; ; ; ;
jwerr werr cstat;las cslm woea; ; ; ;
jclr clp2 idl2; ; ; ; rcssp imm3;
call wait3; lbsf smul cslm; reg; recclk; rcssp ptr1;
; csuxm usp; ; ; ;
; ; ; ; ptr1;
jwerr ser1 cstat;woem; dtor; ; ramwe rcssp ptr1;
call idle1; ; dtor; ; ramwe ptr1;
|*
|* Reg 1 <-- Reg 3 * (Reg 2 +/- Operand)
|* Double Precision Instruction
|*
routine xd.r3Mr2Aop w110011xxxx1 lbm dadd
routine xd.r3Mr2Sop w110100xxxx1 lbm dsub
; lam csla; reg; ; rcslsw ptr2;
; lal csla; reg; ; ;
jclr clp3 idl2; lblf fmap csla; opdlsw; ; rcsmsw imm3;
; lam cslm; reg; ; rcslsw ptr3;
; lal cslm; reg; recclk; rcsmsw ptr1;
; ; ; recclk; rcslsw ptr1;
; csuxa ulsw; ; ; ;
; csuxa umsw; ; ; ;
jwerr werr cstat;lblf dmul cslm woea; ; ; ;
; lbm cslm woea; ; ; ;
call xdfin.mul; ; ; ; ;
| ; ; ; ; ;
| ; ; ; ; ;
| ; ; ; ; ;
| ; csuxm umsw; ; ; ;
| ; csuxm ulsw; ; ; ptr1;
| jwerr der1 cstat;woem; dtor; ; ramwe rcsmsw ptr1;
| ; woem; dtor; ; ramwe rcslsw ptr1;
| call idle1; ; dtor; ; ramwe ptr1;
|*
|* Reg 1 <-- Reg 3 * (- Reg 2 + Operand)
|* Single Precision Instruction
|*
routine xs.r3MNr2Aop w110101xxxx0 las ssub
call wait3; lbsf fmap csla; reg; ; ;
; csuxa usp; ; ; ;
; ; ; ; ;
jwerr werr cstat;las cslm woea; ; ; ;
jclr clp2 idl2; ; ; ; rcssp imm3;
call wait3; lbsf smul cslm; reg; recclk; rcssp ptr1;
; csuxm usp; ; ; ;
; ; ; ; ptr1;
jwerr ser1 cstat;woem; dtor; ; ramwe rcssp ptr1;
call idle1; ; dtor; ; ramwe ptr1;
|*
|* Reg 1 <-- Reg 3 * (- Reg 2 + Operand)
|* Double Precision Instruction
|*
routine xd.r3MNr2Aop w110101xxxx1 lam dsub
; lbm csla; reg; ; rcslsw ptr2;
; lbl csla; reg; ; ;
jclr clp3 idl2; lalf fmap csla; opdlsw; ; rcsmsw imm3;
; lam cslm; reg; ; rcslsw ptr3;
; lal cslm; reg; recclk; rcsmsw ptr1;
; ; ; recclk; rcslsw ptr1;
; csuxa ulsw; ; ; ;
; csuxa umsw; ; ; ;
jwerr werr cstat;lblf dmul cslm woea; ; ; ;
; lbm cslm woea; ; ; ;
call xdfin.mul; ; ; ; ;
| ; ; ; ; ;
| ; ; ; ; ;
| ; ; ; ; ;
| ; csuxm umsw; ; ; ;
| ; csuxm ulsw; ; ; ptr1;
| jwerr der1 cstat;woem; dtor; ; ramwe rcsmsw ptr1;
| ; woem; dtor; ; ramwe rcslsw ptr1;
| call idle1; ; dtor; ; ramwe ptr1;
|*
|* Reg 1 <-- Operand * (Reg 3 +/- Reg 2)
|* Single Precision Instruction
|*
routine xs.opMr3Ar2 w111001xxxx0 lnop sadd
routine xs.opMr3Sr2 w111010xxxx0 lnop ssub
; lbs csla; reg; ; ;
jclr clp2 idl2; ; ; ; rcssp imm3;
; lasf fmap csla; reg; recclk; rcssp ptr1;
; ; ; ; ;
; las cslm; opdsp; ; ;
; ; ; ; ;
; csuxa usp; ; ; ;
; ; ; ; ;
jwerr werr cstat;lbsf smul cslm woea; ; ; rcssp ptr1;
call wait2; ; ; ; ;
; csuxm usp; ; ; ;
; ; ; ; ptr1;
jwerr ser1 cstat;woem; dtor; ; ramwe rcssp ptr1;
call idle1; ; dtor; ; ramwe ptr1;
|*
|* Reg 1 <-- Operand * (Reg 3 +/- Reg 2)
|* Double Precision Instruction
|*
routine xd.opMr3Ar2 w111001xxxx1 lnop dadd
routine xd.opMr3Sr2 w111010xxxx1 lnop dsub
; lbm csla; reg; ; rcslsw ptr2;
; lbl csla; reg; ; ;
jclr clp3 idl2; ; ; ; rcsmsw imm3;
; lam csla; reg; ; rcslsw ptr3;
; lalf fmap csla; reg; ; ;
; lam cslm; opdmsw; ; ;
; lal cslm; opdlsw; ; ;
; ; ; ; ;
; csuxa ulsw; ; ; ;
; csuxa umsw; ; ; ;
jwerr werr cstat;lblf dmul cslm woea; ; ; ;
; lbm cslm woea; ; recclk; rcsmsw ptr1;
call xdfin.mul; ; ; recclk; rcslsw ptr1;
| ; ; ; ; ;
| ; ; ; ; ;
| ; ; ; ; ;
| ; csuxm umsw; ; ; ;
| ; csuxm ulsw; ; ; ptr1;
| jwerr der1 cstat;woem; dtor; ; ramwe rcsmsw ptr1;
| ; woem; dtor; ; ramwe rcslsw ptr1;
| call idle1; ; dtor; ; ramwe ptr1;
|*
|* Reg 1 <-- Operand +/- (Reg 3 * Reg 2)
|* Single Precision Instruction
|*
routine xs.opAr3Mr2 w110110xxxx0 lnop sadd
routine xs.opSr3Mr2 w110111xxxx0 lnop ssub
; las cslm; reg; ; ;
jclr clp2 idl2; ; ; ; rcssp imm3;
; lbsf smul cslm; reg; recclk; rcssp ptr1;
; ; ; ; ;
; las csla; opdsp; ; ;
; ; ; ; ;
; csuxm usp; ; ; ;
; ; ; ; ;
jwerr werr cstat;lbsf fmap csla woem; ; ; rcssp ptr1;
call wait2; ; ; ; ;
; csuxa usp; ; ; ;
; ; ; ; ptr1;
jwerr ser1 cstat;woea; dtor; ; ramwe rcssp ptr1;
call idle1; ; dtor; ; ramwe ptr1;
|*
|* Reg 1 <-- Operand +/- (Reg 3 * Reg 2)
|* Double Precision Instruction
|*
routine xd.opAr3Mr2 w110110xxxx1 lnop dadd
routine xd.opSr3Mr2 w110111xxxx1 lnop dsub
; lam cslm; reg; ; rcslsw ptr2;
; lal cslm; reg; ; ;
jclr clp4 idl2; ; ; ; rcslsw imm3;
; lblf dmul cslm; reg; ; rcsmsw ptr3;
; lbm cslm; reg; ; ;
; lam csla; opdmsw; ; ;
; lal csla; opdlsw; ; ;
; ; ; ; ;
; ; ; recclk; rcsmsw ptr1;
; csuxm umsw; ; recclk; rcslsw ptr1;
; csuxm ulsw; ; ; ;
jwerr werr cstat;lbm csla woem; ; ; ;
; lblf fmap csla woem; ; ; ;
; ; ; ; ;
call xdfin.alu; ; ; ; ;
| ; ; ; ; ;
| ; csuxa umsw; ; ; ;
| ; csuxa ulsw; ; ; ptr1;
| jwerr der1 cstat;woea; dtor; ; ramwe rcsmsw ptr1;
| ; woea; dtor; ; ramwe rcslsw ptr1;
| call idle1; ; dtor; ; ramwe ptr1;
|*
|* Reg 1 <-- -Operand + (Reg 3 * Reg 2)
|* Single Precision Instruction
|*
routine xs.NopAr3Mr2 w111000xxxx0 lnop ssub
; las cslm; reg; ; ;
jclr clp2 idl2; ; ; ; rcssp imm3;
; lbsf smul cslm; reg; recclk; rcssp ptr1;
; ; ; ; ;
; lbs csla; opdsp; ; ;
; ; ; ; ;
; csuxm usp; ; ; ;
; ; ; ; ;
jwerr werr cstat;lasf fmap csla woem; ; ; rcssp ptr1;
call wait2; ; ; ; ;
; csuxa usp; ; ; ;
; ; ; ; ptr1;
jwerr ser1 cstat;woea; dtor; ; ramwe rcssp ptr1;
call idle1; ; dtor; ; ramwe ptr1;
|*
|* Reg 1 <-- -Operand + (Reg 3 * Reg 2)
|* Double Precision Instruction
|*
routine xd.NopAr3Mr2 w111000xxxx1 lnop dsub
; lam cslm; reg; ; rcslsw ptr2;
; lal cslm; reg; ; ;
jclr clp4 idl2; ; ; ; rcslsw imm3;
; lblf dmul cslm; reg; ; rcsmsw ptr3;
; lbm cslm; reg; ; ;
; lbm csla; opdmsw; ; ;
; lbl csla; opdlsw; ; ;
; ; ; ; ;
; ; ; recclk; rcsmsw ptr1;
; csuxm umsw; ; recclk; rcslsw ptr1;
; csuxm ulsw; ; ; ;
jwerr werr cstat;lam csla woem; ; ; ;
; lalf fmap csla woem; ; ; ;
; ; ; ; ;
call xdfin.alu; ; ; ; ;
| ; ; ; ; ;
| ; csuxa umsw; ; ; ;
| ; csuxa ulsw; ; ; ptr1;
| jwerr der1 cstat;woea; dtor; ; ramwe rcsmsw ptr1;
| ; woea; dtor; ; ramwe rcslsw ptr1;
| call idle1; ; dtor; ; ramwe ptr1;
|*
|* Reg 1 <-- Operand2 + (Operand1 * Reg 2)
|* Reg 1 <-- Operand2 - (Operand1 * Reg 2)
|* Single Precision Instruction
|*
routine xs.linpack1 w100000xxxx0 las sadd
routine xs.linpack2 w100001xxxx0 las ssub
call wait3; lbsf smul cslm; reg; ; ;
jclr clp2 idl2; las csla csuxm usp; opdlsw; ; ;
; ; ; recclk; rcssp ptr1;
jwerr werr cstat;lbsf fmap csla woem; ; ; ;
call wait2; ; ; ; ;
; csuxa usp; ; ; ;
; ; ; ; ptr1;
jwerr ser1 cstat;woea; dtor; ; ramwe rcssp ptr1;
call idle1; ; dtor; ; ramwe ptr1;
|*
|* Reg 1 <-- -Operand2 + (Operand1 * Reg 2)
|* Single Precision Instruction
|*
routine xs.linpack3 w100010xxxx0 las ssub
call wait3; lbsf smul cslm; reg; ; ;
jclr clp2 idl2; lbs csla csuxm usp; opdlsw; ; ;
; ; ; recclk; rcssp ptr1;
jwerr werr cstat;lasf fmap csla woem; ; ; ;
call wait2; ; ; ; ;
; csuxa usp; ; ; ;
; ; ; ; ptr1;
jwerr ser1 cstat;woea; dtor; ; ramwe rcssp ptr1;
call idle1; ; dtor; ; ramwe ptr1;
|*
|* Reg 1 <-- Operand2 * (Operand1 + Reg 2)
|* Reg 1 <-- Operand2 * (Operand1 - Reg 2)
|* Single Precision Instruction
|*
routine xs.linpack4 w100011xxxx0 las sadd
routine xs.linpack6 w100101xxxx0 las ssub
call wait3; lbsf fmap csla; reg; ; ;
jclr clp2 idl2; las cslm csuxa usp; opdlsw; ; ;
; ; ; recclk; rcssp ptr1;
jwerr werr cstat;lbsf smul cslm woea; ; ; ;
call wait2; ; ; ; ;
; csuxm usp; ; ; ;
; ; ; ; ptr1;
jwerr ser1 cstat;woem; dtor; ; ramwe rcssp ptr1;
call idle1; ; dtor; ; ramwe ptr1;
|*
|* Reg 1 <-- Operand2 * (-Operand1 + Reg 2)
|* Single Precision Instruction
|*
routine xs.linpack5 w100100xxxx0 lbs ssub
call wait3; lasf fmap csla; reg; ; ;
jclr clp2 idl2; las cslm csuxa usp; opdlsw; ; ;
; ; ; recclk; rcssp ptr1;
jwerr werr cstat;lbsf smul cslm woea; ; ; ;
call wait2; ; ; ; ;
; csuxm usp; ; ; ;
; ; ; ; ptr1;
jwerr ser1 cstat;woem; dtor; ; ramwe rcssp ptr1;
call idle1; ; dtor; ; ramwe ptr1;