📄 trig.u
字号:
|*|* enter with:|* x in c_dSCRATCH_0|* ex in c_dSCRATCH_1|* exit with:|* ALU starting|*ssinapprox: ; ; ; ; ; ptr5!c_dSCRATCH_0 ; ; ; ; rcssp ptr5; ; las cslm; reg; ; rcssp ptr5; ; lbsf smul cslm; reg; ; ; ; ; ; ; ; ; ; ; ; ; ; ; ; ; ; ptr5!c_ssin2| *put z = x*x into a reg of MUL ; las cslm csuxm usp; ; ; rcssp ptr5; ; lbsf smul cslm; reg; ; ; lpreg!2ssin.app.lp: ; ; ; ; ; ptr5- ; ; ; ; ; ; ; ; ; rcssp ptr5; ; las csla csuxm usp; reg; ; ; lpreg- ; ; ; ; ; ; lbsf sadd csla woem; ; ; ; ; ; ; ; ; ; ; ; ; ; ; ; ; ; ; ; csuxa usp; ; ; ; jloop ssin.app.lp;; ; ; ; ; lbsf smul cslm woea; ; ; ; ; ; ; ; ; ; ; ; ; ; ptr5!c_dSCRATCH_0 ; ; ; ; rcssp ptr5; ; las cslm; reg; ; ; ; lbsf smul cslm csuxm usp;; ; ; ; ; ; ; ; ptr5!c_dSCRATCH_1 ; ; ; ; rcssp ptr5; ; las csla; reg; ; ; ; csuxm usp; ; ; ; ; ; ; ; ; ; lbsf sadd csla woem; ; ; ; ; ; ; ; ; ; ; ; ; ; ptr5!c_dSCRATCH_0 ; ; ; ; rcssp ptr5; ; las csla; reg; ; ; rtn; lbsf sadd csla csuxa usp;; ; ;#ifdef STAN|*|* Single Precision Tan Approximation|*|* enter with:|* x in c_dSCRATCH_0|* ex in c_dSCRATCH_1|* exit with:|* ALU starting|*stanapprox: ; ; ; ; ; ptr5!c_dSCRATCH_0 ; ; ; ; rcssp ptr5; ; las cslm; reg; ; rcssp ptr5; ; lbsf smul cslm; reg; ; ; ; ; ; ; ; ; ; ; ; ; ; ; ; ; ; ptr5!c_stan6 ; las cslm csuxm usp; ; ; rcssp ptr5; ; lbsf smul cslm; reg; ; ; lpreg!6stan.app.lp: ; ; ; ; ; ptr5- ; ; ; ; ; ; ; ; ; rcssp ptr5; ; las csla csuxm usp; reg; ; ; lpreg- ; ; ; ; ; ; lbsf sadd csla woem; ; ; ; ; ; ; ; ; ; ; ; ; ; ; ; ; ; ; ; csuxa usp; ; ; ; jloop stan.app.lp;; ; ; ; ; lbsf smul cslm woea; ; ; ; ; ; ; ; ; ; ; ; ; ; ptr5!c_dSCRATCH_0 ; ; ; ; rcssp ptr5; ; las cslm; reg; ; ; ; lbsf smul cslm csuxm usp;; ; ; ; ; ; ; ; ptr5!c_dSCRATCH_1 ; ; ; ; rcssp ptr5; ; las csla; reg; ; ; ; csuxm usp; ; ; ; ; ; ; ; ; ; lbsf sadd csla woem; ; ; ; ; ; ; ; ; ; ; ; ; ; ptr5!c_dSCRATCH_0 ; ; ; ; rcssp ptr5; ; las csla; reg; ; ; rtn; lbsf sadd csla csuxa usp;; ; ;|*|* Single Precision Negative Cot Approximation|*|* enter with:|* x in c_dSCRATCH_0|* ex in c_dSCRATCH_1|* exit with:|* ALU starting|*scotnapprox: ; ; ; ; ; ptr5!c_dSCRATCH_0 ; ; ; ; rcssp ptr5; ; las cslm; reg; ; rcssp ptr5; ; lbsf smul cslm; reg; ; ; ; ; ; ; ; ; ; ; ; ; ; ; ; ; ; ptr5!c_stan6 ; las cslm csuxm usp; ; ; rcssp ptr5; ptr5- ; lbsf smul cslm; reg; ; ; lpreg!6scot.app.lp: ; ; ; ; ; ; ; ; ; ; ; ; ; ; rcssp ptr5; ptr5- ; las csla csuxm usp; reg; ; ; lpreg- ; ; ; ; ; ; lbsf sadd csla woem; ; ; ; ; ; ; ; ; ; ; ; ; ; ; ; ; ; ; ; csuxa usp; ; ; ; jloop scot.app.lp;; ; ; ; ; lbsf smul cslm woea; ; ; ; ; ; ; ; ; ; ; ; ; ; ptr5!c_dSCRATCH_0 ; ; ; ; rcssp ptr5; ; las cslm; reg; ; ; ; lbsf smul cslm csuxm usp;; ; ; ; ; ; ; ; ptr5!c_dSCRATCH_1 ; ; ; ; rcssp ptr5; ; las csla; reg; ; ; ; csuxm usp; ; ; ; ; ; ; ; ; ; lbsf sadd csla woem; ; ; ; ; ; ; ; ; ; ; ; ; ; ptr5!c_dSCRATCH_1 ; ; ; ; rcssp ptr5; ; las csla; reg; ; ; ; lbsf sadd csla csuxa usp;; ; ; ; ; ; ; ; ; ; ; ; ; ; ; ; ; ; ptr5!smone ; lbs csla csuxa usp; ; ; rcssp ptr5; rtn; lasf sdiv csla; reg; ; ;#endifssinapprox1: call ssinapprox;; ; ; ; call salu.inx2; ; ; ; ;ssinnapprox1: call ssinapprox;; ; ; ; call snegx; ; ; ; ; call salu.inx2; ; ; ; ;scosapprox1: call scosapprox;; ; ; ; call salu.inx2; ; ; ; ;scosnapprox1: call scosapprox;; ; ; ; call snegx; ; ; ; ; call salu.inx2; ; ; ; ;#ifdef STANstanapprox1: call stanapprox;; ; ; ; call salu.inx2; ; ; ; ;scotnapprox1: call scotnapprox;; ; ; ; call salu.inx2; ; ; ; ;#elsestanapprox1:scotnapprox1: call invalid; ; ; ; ;#endifckmode:|* make sure rounding mode is the default (2) ; ; ; ; ; ptr5!c_dmode ; ; ; ; rcssp ptr5; ptr5!c_dmode_cor ; las csla; reg; ; rcssp ptr5; ; lbsf scmp csla; reg; ; ; ; ; ; ; ; ; ; ; ; ; ; ; ; ; ; ; csuxa usp; ; ; ; ; ; ; ; ; jne oberr; woea; ; ; ; rtn; ; ; ; ;|*|* Double Precision Sin, Cos, Sincos|*|* enter with:|* reading in of dpio4 ready|* lpreg is 0 for sin, 1 for cos, 2 for tan, 3 for sincos|*dtrig: ; lbm csla; reg; ; rcslsw ptr5; ptr5!c_dSCRATCH_0 ; lblf dcmpm csla; reg; ; ptr5; ; ; ; recoe; ramwe rcsmsw ptr5; ; ; ; recoe recclk;ramwe ptr5; ; ; ; recoe; ramwe rcslsw ptr5; ; csuxa umsw; ; recoe; ramwe ptr5; ; ; ; recclk; rcsmsw ptr1; ptr5!c_dthreshold jgt dtrig.1; woea; ; recclk; rcslsw ptr1; ; ; ; ; rcsmsw ptr5;|* abs(x) < pi/4 ; lbm csla; reg; ; rcslsw ptr5; ptr5!c_dSCRATCH_4 ; lblf dcmpm csla; reg; ; ptr5; ; ; ; recoe; ramwe rcsmsw ptr5; ; ; ; recoe recclk;ramwe ptr5; ; ; ; recoe; ramwe rcslsw ptr5; ; csuxa umsw; ; recoe; ramwe ptr5; ; csuxa ulsw; ; ; ; jle dtrig.2; woea; ; ; ; jwerr doberr; woea; ; ; ; call dtrig.ex0; ; ; ; ;dtrig.a: jloop0 dsinapprox1;; ; ; ; lpreg- jloop0 dcosapprox1;; ; ; ; lpreg- jloop0 dtanapprox1;; ; ; ; lpreg- call dcosapprox;; ; ; ; call dwrt4; ; ; ; ; call dsinapprox;; dtor; ; ramwe ptr4; call dwrt1.4; ; ; ; ;dwrt4:| for sincos we need to save ptr4 for possible later restoration ; ; ; recclk; rcsmsw ptr4; ; ; ; recclk; rcslsw ptr4; ptr5!c_dSCRATCH_11 ; ; ; ; ptr5; ; ; ; recoe; ramwe rcsmsw ptr5; ; ; ; recoe recclk;ramwe ptr5; ; ; ; recoe; ramwe rcslsw ptr5; ; csuxa umsw; ; recoe; ramwe ptr5; ; csuxa ulsw; ; ; ptr4; ; woea; dtor; ; ramwe rcsmsw ptr4; rtn; woea; dtor; ; ramwe rcslsw ptr4;|* This is called for sincos (it knows we have to restore ptr4 if error)dwrt1.4: call wait1; ; ; ; ; ; csuxa umsw; ; ; ; ; csuxa ulsw; ; ; ptr1; ; woea; dtor; ; ramwe rcsmsw ptr1; ; woea; dtor; ; ramwe rcslsw ptr1; call dreturninexact.4;; dtor; ; ramwe ptr1;dtrig.2:|* abs(x) <= threshold jloop0 dsin0; ; ; ; ; lpreg- jloop0 dcos0; ; ; ; ; lpreg- ; ; ; ; ; lpreg-dsin0:dtan0: ; lf dcmp0 csla; ; recclk; rcsmsw ptr2; ; ; ; recclk; rcslsw ptr2; ; ; ; ; ptr1; ; ; ; recoe; ramwe rcsmsw ptr1; jloop0 dsincos0;csuxa umsw; ; recoe recclk;ramwe ptr1; ; ; ; recoe; ramwe rcslsw ptr1; jeq dreturnzerostat;woea; ; recoe; ramwe ptr1; call dreturninexact.4;; ; ; ;dsincos0:| finish up copy that was taking place ; ; ; recoe; ramwe ptr1;| for sincos we need to save ptr4 for possible later restoration ; ; ; recclk; rcsmsw ptr4; ; ; ; recclk; rcslsw ptr4; ptr5!c_dSCRATCH_11 ; ; ; ; ptr5; ; ; ; recoe; ramwe rcsmsw ptr5; ; ; ; recoe recclk;ramwe ptr5; ; ; ; recoe; ramwe rcslsw ptr5; ; lf dcmp0 csla; ; recoe; ramwe ptr5; ptr5!done ; ; ; recclk; rcsmsw ptr5; ; ; ; recclk; rcslsw ptr5; ; ; ; ; ptr4; ; csuxa umsw; ; recoe; ramwe rcsmsw ptr4; ; ; ; recoe recclk;ramwe ptr4; jeq dreturnzerostat;woea; ; recoe; ramwe rcslsw ptr4; call dreturninexact.4;; ; recoe; ramwe ptr4;dcos0: ; lf dcmp0 csla; ; ; ; ptr5!done ; ; ; recclk; rcsmsw ptr5; ; ; ; recclk; rcslsw ptr5; ; ; ; ; ptr1; ; csuxa umsw; ; recoe; ramwe rcsmsw ptr1; ; ; ; recoe recclk;ramwe ptr1; jeq dreturnexact;woea; ; recoe; ramwe rcslsw ptr1; call dreturninexact;; ; recoe; ramwe ptr1;dtrig.1:|* abs(x) > pi/4 ; ; ; recclk; rcsmsw ptr1; ptr5!c_dpi3o4 ; ; ; ; rcsmsw ptr5; ; lbm csla; reg; ; rcslsw ptr5; ptr5!c_dpi5o4 call wait2; lblf dcmpm csla; reg; recclk; rcslsw ptr1; ; ; ; ; rcsmsw ptr5; ; lbm csla; reg; ; rcslsw ptr5; ptr5!c_dSCRATCH_4 ; lbl csla; reg; ; ptr5; ; lf dcmp0 csla csuxa umsw;; recoe; ramwe rcsmsw ptr5; ; ; ; recoe recclk;ramwe ptr5; jgt dtrig.3; woea; ; recoe; ramwe rcslsw ptr5; ; ; ; recoe; ramwe ptr5; ptr5!c_dtwo19pi|* pi/4 < abs(x) <= 3*pi/4 ; csuxa umsw; ; ; ; ; ; ; ; ; ptr5!c_dpio2a jge dtrig.11; woea; ; ; ; ; ; ; ; rcsmsw ptr5;|* -pi/4 > x > -3*pi/4|* x = (dpio2b + (dx + dpio2a))|* ex = (dpio2b - (x - (dx + dpio2a))) ; lbm csla; reg; ; rcslsw ptr5; ptr5!c_dpio2b call wait2; lblf dadd csla; reg; ; ; ; ; ; ; rcsmsw ptr5; ; lam csla; reg; ; rcslsw ptr5; ; lal csla; reg; ; ; ; lbm csla csuxa umsw; ; ; ; call wait3; lblf dadd csla csuxa ulsw;; ; ; ; lam csla csuxa umsw; ; ; ; ptr5!c_dSCRATCH_0 ; lalf dsub csla csuxa ulsw;; ; ptr5; ; woea; dtor; ; ramwe rcsmsw ptr5; ; woea; dtor; ; ramwe rcslsw ptr5; ; ; dtor; ; ramwe ptr5; ; lbm csla csuxa umsw; ; ; ; ptr5!c_dpio2b ; lbl csla csuxa ulsw; ; ; rcsmsw ptr5; ; lam csla; reg; ; rcslsw ptr5; call wait3; lalf dsub csla; reg; ; ; ; csuxa umsw; ; ; ; ptr5!c_dSCRATCH_1 ; csuxa ulsw; ; ; ptr5; ; woea; dtor; ; ramwe rcsmsw ptr5; ; woea; dtor; ; ramwe rcslsw ptr5; ; ; dtor; ; ramwe ptr5;dtrig.e: jloop0 dcosnapprox1;; ; ; ; lpreg- jloop0 dsinapprox1;; ; ; ; lpreg- jloop0 dcotnapprox1;; ; ; ; lpreg-|* sincos call dsinapprox;; ; ; ; call dwrt4; ; ; ; ; call dcosapprox;; dtor; ; ramwe ptr4; call dnegx; ; ; ; ; call dwrt1.4; ; ; ; ;dtrig.11:|* pi/4 < x < 3*pi/4|* x = (-dpio2b - (dpio2a - dx))|* ex = (-dpio2b - (dble(x) + (dpio2a - dx))) ; lam csla; reg; ; rcslsw ptr5; ptr5!c_dSCRATCH_0 ; lal csla; reg; ; rcsmsw ptr5; ; lbm csla; reg; ; rcslsw ptr5; call wait3; lblf dsub csla; reg; ; ; ; lbm csla csuxa umsw; ; ; ; ptr5!c_dmpio2b ; lbl csla csuxa ulsw; ; ; rcsmsw ptr5; ; lam csla; reg; ; rcslsw ptr5; call wait3; lalf dsub csla; reg; ; ; ; lam csla csuxa umsw; ; ; ; ptr5!c_dSCRATCH_0 ; lalf dadd csla csuxa ulsw;; ; ptr5; ; woea; dtor; ; ramwe rcsmsw ptr5; ; woea; dtor; ; ramwe rcslsw ptr5; ; ; dtor; ; ramwe ptr5; ; lbm csla csuxa umsw; ; ; ; ptr5!c_dmpio2b ; lbl csla csuxa ulsw; ; ; rcsmsw ptr5; ; lam csla; reg; ; rcslsw ptr5; call wait3; lalf dsub csla; reg; ; ; ; csuxa umsw; ; ; ; ptr5!c_dSCRATCH_1 ; csuxa ulsw; ; ; ptr5; ; woea; dtor; ; ramwe rcsmsw ptr5; ; woea; dtor; ; ramwe rcslsw ptr5;dtrig.c: jloop0 dcosapprox1;; dtor; ; ramwe ptr5; lpreg- jloop0 dsinnapprox1;; ; ; ; lpreg- jloop0 dcotnapprox1;; ; ; ; lpreg-|* sincos call dsinapprox;; ; ; ; call dnegx; ; ; ; ; call dwrt4; ; ; ; ; call dcosapprox;; dtor; ; ramwe ptr4; call dwrt1.4; ; ; ; ;dtrig.3:|* abs(x) > 3*pi/4 ; lf dcmpm csla; ; ; ; call wait1; ; ; ; ; ; ; ; ; rcsmsw ptr5; ; lbm csla; reg; ; rcslsw ptr5; ; lblf dcmp0 csla; reg; ; ; ; csuxa umsw; ; ; ; ; ; ; ; ; jgt dtrig.4; woea; ; ; ; ; ; ; ; ; ptr5!c_dpia|* 3*pi/4 < abs(x) <= 5*pi/4|* x = (dpib + (dx + dpia))|* ex = (dpib - (x - (dx + dpia))) call wait1; csuxa umsw; ; ; ; jge dtrig.31; woea; ; ; ; ; ; ; ; rcsmsw ptr5;|* -3*pi/4 > x > -5*pi/4 ; lbm csla; reg; ; rcslsw ptr5; ptr5!c_dpib call wait2; lblf dadd csla; reg; ; ; ; ; ; ; rcsmsw ptr5; ; lam csla; reg; ; rcslsw ptr5; ; lal csla; reg; ; ; ; lbm csla csuxa umsw; ; ; ; call wait3; lblf dadd csla csuxa ulsw;; ; ; ; lam csla csuxa umsw; ; ; ; ptr5!c_dSCRATCH_0 ; lalf dsub csla csuxa ulsw;; ; ptr5; ; woea; dtor; ; ramwe rcsmsw ptr5; ; woea; dtor; ; ramwe rcslsw ptr5; ; ; dtor; ; ramwe ptr5; ; lbm csla csuxa umsw; ; ; ; ptr5!c_dpib ; lbl csla csuxa ulsw; ; ; rcsmsw ptr5; ; lam csla; reg; ; rcslsw ptr5; ; lalf dsub csla; reg; ; ;dtrig.32: call wait2; ; ; ; ; ; csuxa umsw; ; ; ; ptr5!c_dSCRATCH_1 ; csuxa ulsw; ; ; ptr5; ; woea; dtor; ; ramwe rcsmsw ptr5; ; woea; dtor; ; ramwe rcslsw ptr5;dtrig.b:dtrig.d: jloop0 dsinnapprox1;; dtor; ; ramwe ptr5; lpreg- jloop0 dcosnapprox1;; ; ; ; lpreg- jloop0 dtanapprox1;; ; ; ; lpreg-|* sincos call dcosapprox;; ; ; ; call dnegx; ; ; ; ; call dwrt4; ; ; ; ; call dsinapprox;; dtor; ; ramwe ptr4; call dnegx; ; ; ; ; call dwrt1.4; ; ; ; ;dtrig.31:|* 3*pi/4 < x < 5*pi/4|* x = (-dpib + (dx - dpia))|* ex = (-dpib - (x - (dx - dpia))) ; lbm csla; reg; ; rcslsw ptr5; call wait3; lblf dsub csla; reg; ; ; ; lbm csla csuxa umsw; ; ; ; ptr5!c_dmpib ; lbl csla csuxa ulsw; ; ; rcsmsw ptr5; ; lam csla; reg; ; rcslsw ptr5; call wait3; lalf dadd csla; reg; ; ; ; lam csla csuxa umsw; ; ; ; ptr5!c_dSCRATCH_0 ; lalf dsub csla csuxa ulsw;; ; ptr5; ; woea; dtor; ; ramwe rcsmsw ptr5; ; woea; dtor; ; ramwe rcslsw ptr5; ; ; dtor; ; ramwe ptr5; ; lbm csla csuxa umsw; ; ; ; ptr5!c_dmpib ; lbl csla csuxa ulsw; ; ; rcsmsw ptr5; jmp dtrig.32; lam csla; reg; ; rcslsw ptr5; ; lalf dsub csla; reg; ; ;dtrig.4:|* abs(x) > 5*pi/4 call wait3; lf dcmpm csla; ; ; ; call wait1; csuxa umsw; ; ; ; jgt doberr; woea; ; ; ;|* 5*pi/4 < abs(x) <= pi * 2**19 call ckmode; ; ; ; ; ; ; ; ; ; ptr5!c_dtwoopi ; lmode3.0 0x0 csla; ; ; rcsmsw ptr5; ; lam cslm; reg; ; rcslsw ptr5; ptr5!c_dSCRATCH_0 ; lal cslm; reg; ; rcsmsw ptr5; ; lbm cslm; reg; ; rcslsw ptr5; call wait5; lblf dmul cslm; reg; ; ; ; csuxm umsw; ; ; ; ; csuxm ulsw; ; ; ; ; lam csla woem; ; ; ; ptr5!c_dfourth call wait3; lalf dcvtint csla woem; ; ; ; ; lalf dfloat csla csuxa ulsw;; ; rcsmsw ptr5; ; lbm cslm; reg; ; rcslsw ptr5; ; lbl cslm; reg; ; ; ; ; ; ; ; ; csuxa umsw; ; ; ; ptr5!c_dSCRATCH_2 ; csuxa ulsw; ; ; ptr5; ; lam cslm woea; dtor; ; ramwe rcsmsw ptr5; ; lal cslm woea; dtor; ; ramwe rcslsw ptr5; call wait5; lf dmul cslm; dtor; ; ramwe ptr5; ; csuxm umsw; ; ; ; ; csuxm ulsw; ; ; ; ; lam csla woem; ; ; ; ptr5!sfour call wait3; lalf dcvtint csla woem; ; ; ; ; lalf dfloat csla csuxa ulsw;; ; rcssp ptr5; ; las cslm; reg; ; ; call wait1; ; ; ; ; ; csuxa umsw; ; ; ; ; csuxa ulsw; ; ; ; ; lbm cslm woea; ; ; ; ptr5!c_dSCRATCH_2 call wait3; lblf dmul cslm woea; ; ; ; ; ; ; ; rcsmsw ptr5; ; lam csla; reg; ; rcslsw ptr5; ; lal csla csuxm umsw; reg; ; ; ; csuxm ulsw; ; ; ; ; lbm csla woem; ; ; ; call wait3; lblf dsub csla woem; ; ; ; ; csuxa umsw; ; ; ; ptr5!c_dSCRATCH_3 ; csuxa ulsw; ; ; ptr5;|* save qrem ; woea; dtor; ; ramwe rcsmsw ptr5; ; woea; dtor; ; ramwe rcslsw ptr5; ; ; dtor; ; ramwe ptr5; ptr5!c_dSCRATCH_2 ; lmode3.0 0x2 csla; ; ; rcsmsw ptr5; ; lam cslm; reg; ; rcslsw ptr5; ptr5!c_dpio2a ; lal cslm; reg; ; rcsmsw ptr5; ; lbm cslm; reg; ; rcslsw ptr5; ptr5!c_dSCRATCH_0 call wait3; lblf dmul cslm; reg; ; ; ; ; ; ; rcsmsw ptr5;
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -