X-Git-Url: https://notaz.gp2x.de/cgi-bin/gitweb.cgi?a=blobdiff_plain;f=deps%2Flightning%2Fcheck%2Fcvt.tst;h=8f401356f95cff1d2941cd233f94def73ffe0b7e;hb=03b78a3bf48813202e01149ae0b3c5c1f01efb4c;hp=18282597ce7f2d7d8fb652353aad911488e38f87;hpb=3918505613cb814f8f5e0e8e0471f7b2a2cd8464;p=pcsx_rearmed.git diff --git a/deps/lightning/check/cvt.tst b/deps/lightning/check/cvt.tst index 18282597..8f401356 100644 --- a/deps/lightning/check/cvt.tst +++ b/deps/lightning/check/cvt.tst @@ -277,6 +277,139 @@ dfc##_##R0: EXTDFC1(R4) \ EXTDFC1(R5) +#define MVFW(R0, F0, F1) \ + movi_f %F0 0.5 \ + movr_f_w %R0 %F0 \ + movr_w_f %F1 %R0 \ + beqr_f fw##R0##F0##F1 %F0 %F1 \ + calli @abort \ +fw##R0##F0##F1: +#define FW(R0, R1, R2, R3, R4, R5, F0, F1, F2, F3, F4, F5) \ + MVFW(R0, F0, F1) \ + MVFW(R1, F1, F2) \ + MVFW(R2, F2, F3) \ + MVFW(R3, F3, F4) \ + MVFW(R4, F4, F5) \ + MVFW(R5, F5, F0) +#define MVFWI(R0, F0, F1) \ + movi_f %F1 0.25 \ + movi_f_w %R0 0.25 \ + movr_w_f %F0 %R0 \ + beqr_f ifw##R0##F0##F1 %F0 %F1 \ + calli @abort \ +ifw##R0##F0##F1: +#define FWI(R0, R1, R2, R3, R4, R5, F0, F1, F2, F3, F4, F5) \ + MVFWI(R0, F0, F1) \ + MVFWI(R1, F1, F2) \ + MVFWI(R2, F2, F3) \ + MVFWI(R3, F3, F4) \ + MVFWI(R4, F4, F5) \ + MVFWI(R5, F5, F0) + +#if __WORDSIZE == 32 +# define MVDW(R0, R1, F0, F1) \ + movi_d %F0 0.5 \ + movr_d_ww %R0 %R1 %F0 \ + movr_ww_d %F1 %R0 %R1 \ + beqr_d dw##R0##R1##F0##F1 %F0 %F1 \ + calli @abort \ +dw##R0##R1##F0##F1: +# define DW(R0, R1, R2, R3, R4, R5, F0, F1, F2, F3, F4, F5) \ + MVDW(R0, R1, F0, F1) \ + MVDW(R1, R2, F1, F2) \ + MVDW(R2, R3, F2, F3) \ + MVDW(R3, R4, F3, F4) \ + MVDW(R4, R5, F4, F5) \ + MVDW(R5, R0, F5, F0) +# define MVDWI(R0, R1, F0, F1) \ + movi_d %F1 0.25 \ + movi_d_ww %R0 %R1 0.25 \ + movr_ww_d %F0 %R0 %R1 \ + beqr_d idw##R0##R1##F0##F1 %F0 %F1 \ + calli @abort \ +idw##R0##R1##F0##F1: +# define DWI(R0, R1, R2, R3, R4, R5, F0, F1, F2, F3, F4, F5) \ + MVDWI(R0, R1, F0, F1) \ + MVDWI(R1, R2, F1, F2) \ + MVDWI(R2, R3, F2, F3) \ + MVDWI(R3, R4, F3, F4) \ + MVDWI(R4, R5, F4, F5) \ + MVDWI(R5, R0, F5, F0) +#else +# define MVDW(R0, F0, F1) \ + movi_d %F0 0.5 \ + movr_d_w %R0 %F0 \ + movr_w_d %F1 %R0 \ + beqr_d dw##R0##F0##F1 %F0 %F1 \ + calli @abort \ +dw##R0##F0##F1: +# define DW(R0, R1, R2, R3, R4, R5, F0, F1, F2, F3, F4, F5) \ + MVDW(R0, F0, F1) \ + MVDW(R1, F1, F2) \ + MVDW(R2, F2, F3) \ + MVDW(R3, F3, F4) \ + MVDW(R4, F4, F5) \ + MVDW(R5, F5, F0) +# define MVDWI(R0, F0, F1) \ + movi_d %F1 0.25 \ + movi_d_w %R0 0.25 \ + movr_w_d %F0 %R0 \ + beqr_d idw##R0##F0##F1 %F0 %F1 \ + calli @abort \ +idw##R0##F0##F1: +# define DWI(R0, R1, R2, R3, R4, R5, F0, F1, F2, F3, F4, F5) \ + MVDWI(R0, F0, F1) \ + MVDWI(R1, F1, F2) \ + MVDWI(R2, F2, F3) \ + MVDWI(R3, F3, F4) \ + MVDWI(R4, F4, F5) \ + MVDWI(R5, F5, F0) +#endif + +#define MVWFI(F0, F1) \ + movi_f %F1 0.25 \ + movi_w_f %F0 0x3e800000 \ + beqr_f iwf##F0##F1 %F0 %F1 \ + calli @abort \ +iwf##F0##F1: +#define WFI(F0, F1, F2, F3, F4, F5) \ + MVWFI(F0, F1) \ + MVWFI(F1, F2) \ + MVWFI(F2, F3) \ + MVWFI(F3, F4) \ + MVWFI(F4, F5) \ + MVWFI(F5, F0) + +#if __WORDSIZE == 32 +# define MVWDI(F0, F1) \ + movi_d %F1 0.5 \ + movi_ww_d %F0 0 0x3fe00000 \ + beqr_d iwwd##F0##F1 %F0 %F1 \ + calli @abort \ +iwwd##F0##F1: +# define WDI(F0, F1, F2, F3, F4, F5) \ + MVWDI(F0, F1) \ + MVWDI(F1, F2) \ + MVWDI(F2, F3) \ + MVWDI(F3, F4) \ + MVWDI(F4, F5) \ + MVWDI(F5, F0) +#else +# define MVWDI(F0, F1) \ + movi_d %F1 0.5 \ + movi_w_d %F0 0x3fe0000000000000 \ + beqr_d iwd##F0##F1 %F0 %F1 \ + calli @abort \ +iwd##F0##F1: +#define WDI(F0, F1, F2, F3, F4, F5) \ + MVWDI(F0, F1) \ + MVWDI(F1, F2) \ + MVWDI(F2, F3) \ + MVWDI(F3, F4) \ + MVWDI(F4, F5) \ + MVWDI(F5, F0) +#endif + .code prolog @@ -357,6 +490,64 @@ xfd: beqi_f xdf %f1 0.5 calli @abort xdf: + movi_f %f0 0.5 + movr_f_w %r0 %f0 + movr_w_f %f1 %r0 + beqr_f fw %f0 %f1 + calli @abort +fw: + movi_f %f1 0.25 + movi_f_w %r0 0.25 + movr_w_f %f0 %r0 + beqr_f ifw %f0 %f1 + calli @abort +ifw: +#if __WORDSIZE == 32 + movi_d %f0 0.5 + movr_d_ww %r0 %r1 %f0 + movr_ww_d %f1 %r0 %r1 + beqr_d dww %f0 %f1 + calli @abort +dww: + movi_d %f1 0.25 + movi_d_ww %r0 %r1 0.25 + movr_ww_d %f0 %r0 %r1 + beqr_d idww %f0 %f1 + calli @abort +idww: +#else + movi_d %f0 0.5 + movr_d_w %r0 %f0 + movr_w_d %f1 %r0 + beqr_d dw %f0 %f1 + calli @abort +dw: + movi_d %f1 0.25 + movi_d_w %r0 0.25 + movr_w_d %f0 %r0 + beqr_d idw %f0 %f1 + calli @abort +idw: +#endif + + movi_f %f1 0.25 + movi_w_f %f0 0x3e800000 + beqr_f iwf %f0 %f1 + calli @abort +iwf: +#if __WORDSIZE == 32 + movi_d %f1 0.5 + movi_ww_d %f0 0 0x3fe00000 + beqr_d iwwd %f0 %f1 + calli @abort +iwwd: +#else + movi_d %f1 0.5 + movi_w_d %f0 0x3fe0000000000000 + beqr_d iwd %f0 %f1 + calli @abort +iwd: +#endif EXTII(v0, v1, v2, r0, r1, r2) EXIF(v0, v1, v2, r0, r1, r2, f0, f1, f2, f3, f4, f5) @@ -369,6 +560,12 @@ xdf: EXDI(v0, v1, v2, r0, r1, r2, f0, f1, f2, f3, f4, f5) EXTFD(f0, f1, f2, f3, f4, f5) EXTDF(f0, f1, f2, f3, f4, f5) + FW(v0, v1, v2, r0, r1, r2, f0, f1, f2, f3, f4, f5) + FWI(v0, v1, v2, r0, r1, r2, f0, f1, f2, f3, f4, f5) + DW(v0, v1, v2, r0, r1, r2, f0, f1, f2, f3, f4, f5) + DWI(v0, v1, v2, r0, r1, r2, f0, f1, f2, f3, f4, f5) + WFI(f0, f1, f2, f3, f4, f5) + WDI(f0, f1, f2, f3, f4, f5) // just to know did not abort prepare