From 4a71579b757d3a2eb6902c84391f429838ad4912 Mon Sep 17 00:00:00 2001 From: Paul Cercueil Date: Thu, 30 Jan 2020 12:33:44 -0300 Subject: git subrepo clone https://git.savannah.gnu.org/git/lightning.git deps/lightning subrepo: subdir: "deps/lightning" merged: "b0b8eb5" upstream: origin: "https://git.savannah.gnu.org/git/lightning.git" branch: "master" commit: "b0b8eb5" git-subrepo: version: "0.4.1" origin: "https://github.com/ingydotnet/git-subrepo.git" commit: "a04d8c2" --- deps/lightning/check/cvt.tst | 380 +++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 380 insertions(+) create mode 100644 deps/lightning/check/cvt.tst (limited to 'deps/lightning/check/cvt.tst') diff --git a/deps/lightning/check/cvt.tst b/deps/lightning/check/cvt.tst new file mode 100644 index 0000000..1828259 --- /dev/null +++ b/deps/lightning/check/cvt.tst @@ -0,0 +1,380 @@ +.data 12 +ok: +.c "ok\n" + +#if __WORDSIZE == 32 +# define w7f 0x7fffffff +# define w80 0x80000000 +# define w81 0x80000001 +# define wff 0xffffffff +# define LEXTII2(N, R0, R1) +# define LEXTIC2(N, R0) +#else +# define w7f 0x7fffffffffffffff +# define w80 0x8000000000000000 +# define w81 0x8000000000000001 +# define wff 0xffffffffffffffff +# define i7f wff +# define ui7f 0xffffffff +# define i80 0 +# define ui80 0 +# define i81 1 +# define ui81 1 +# define iff wff +# define uiff 0xffffffff +# define LEXTII2(N, R0, R1) \ + EXTII2(N, i, R0, R1) \ + EXTII2(N, ui, R0, R1) +# define LEXTIC2(N, R0) \ + EXTIC2(N, i, R0) \ + EXTIC2(N, ui, R0) +#endif +#define c7f wff +#define uc7f 0xff +#define s7f wff +#define us7f 0xffff +#define c80 0 +#define uc80 0 +#define s80 0 +#define us80 0 +#define c81 1 +#define uc81 1 +#define s81 1 +#define us81 1 +#define cff wff +#define ucff 0xff +#define sff wff +#define usff 0xffff + +#define EXTII2(N, T, R0, R1) \ + movi %R0 w##N \ + extr_##T %R1 %R0 \ + beqi T##_##R0##_##R1##_##N %R1 T##N \ + calli @abort \ +T##_##R0##_##R1##_##N: +#define EXTII1(N, R0, R1) \ + EXTII2(N, c, R0, R1) \ + EXTII2(N, uc, R0, R1) \ + EXTII2(N, s, R0, R1) \ + EXTII2(N, us, R0, R1) \ + LEXTII2(N, R0, R1) +#define EXTII0(R0, R1) \ + EXTII1(7f, R0, R1) \ + EXTII1(80, R0, R1) \ + EXTII1(81, R0, R1) \ + EXTII1(ff, R0, R1) + +#define EXTIC2(N, T, R0) \ + movi %R0 w##N \ + extr_##T %R0 %R0 \ + beqi T##_##R0##_##N %R0 T##N \ + calli @abort \ +T##_##R0##_##N: +#define EXTIC1(N, R0) \ + EXTIC2(N, c, R0) \ + EXTIC2(N, uc, R0) \ + EXTIC2(N, s, R0) \ + EXTIC2(N, us, R0) \ + LEXTIC2(N, R0) +#define EXTIC0(R0) \ + EXTIC1(7f, R0) \ + EXTIC1(80, R0) \ + EXTIC1(81, R0) \ + EXTIC1(ff, R0) + +#define EXTII(V0, V1, V2, R0, R1, R2) \ + EXTII0(V0, V1) \ + EXTII0(V0, V2) \ + EXTII0(V0, R0) \ + EXTII0(V0, R1) \ + EXTII0(V0, R2) \ + EXTII0(V1, V0) \ + EXTII0(V1, V2) \ + EXTII0(V1, R0) \ + EXTII0(V1, R1) \ + EXTII0(V1, R2) \ + EXTII0(V2, V0) \ + EXTII0(V2, V1) \ + EXTII0(V2, R0) \ + EXTII0(V2, R1) \ + EXTII0(V2, R2) \ + EXTII0(R0, V0) \ + EXTII0(R0, V1) \ + EXTII0(R0, V2) \ + EXTII0(R0, R1) \ + EXTII0(R0, R2) \ + EXTII0(R1, V0) \ + EXTII0(R1, V1) \ + EXTII0(R1, V2) \ + EXTII0(R1, R0) \ + EXTII0(R1, R2) \ + EXTII0(R2, V0) \ + EXTII0(R2, V1) \ + EXTII0(R2, V2) \ + EXTII0(R2, R0) \ + EXTII0(R2, R1) \ + EXTIC0(V0) \ + EXTIC0(V1) \ + EXTIC0(V2) \ + EXTIC0(R0) \ + EXTIC0(R1) \ + EXTIC0(R2) + +#define EXIF1(N, V, R0, R1) \ + movi %R0 V \ + extr_f %R1 %R0 \ + beqi_f wf##_##R0##_##R1##_##N %R1 V \ +wf##_##R0##_##R1##_##N: +#define EXIF0(R0, R1) \ + EXIF1(0, -1, R0, R1) \ + EXIF1(1, 64, R0, R1) +#define EXIF(V0, V1, V2, R0, R1, R2, F0, F1, F2, F3, F4, F5) \ + EXIF0(V0, F0) \ + EXIF0(V1, F1) \ + EXIF0(V2, F2) \ + EXIF0(R0, F3) \ + EXIF0(R1, F4) \ + EXIF0(R2, F5) +#define EXID1(N, V, R0, R1) \ + movi %R0 V \ + extr_d %R1 %R0 \ + beqi_d wd##_##R0##_##R1##_##N %R1 V \ +wd##_##R0##_##R1##_##N: +#define EXID0(R0, R1) \ + EXID1(0, -1, R0, R1) \ + EXID1(1, 64, R0, R1) +#define EXID(V0, V1, V2, R0, R1, R2, F0, F1, F2, F3, F4, F5) \ + EXID0(V0, F0) \ + EXID0(V1, F1) \ + EXID0(V2, F2) \ + EXID0(R0, F3) \ + EXID0(R1, F4) \ + EXID0(R2, F5) + +#define EXFI1(N, V, R0, R1) \ + movi_f %R1 V \ + truncr_f %R0 %R1 \ + beqi fi##_##R0##_##R1##_##N %R0 V \ + calli @abort \ +fi##_##R0##_##R1##_##N: +#define EXFI0(R0, R1) \ + EXFI1(0, 42, R0, R1) \ + EXFI1(1, -128, R0, R1) +#define EXFI(V0, V1, V2, R0, R1, R2, F0, F1, F2, F3, F4, F5) \ + EXFI0(V0, F5) \ + EXFI0(V1, F4) \ + EXFI0(V2, F3) \ + EXFI0(R0, F2) \ + EXFI0(R1, F1) \ + EXFI0(R2, F0) +#define EXDI1(N, V, R0, R1) \ + movi_d %R1 V \ + truncr_d %R0 %R1 \ + beqi di##_##R0##_##R1##_##N %R0 V \ + calli @abort \ +di##_##R0##_##R1##_##N: +#define EXDI0(R0, R1) \ + EXDI1(0, 42, R0, R1) \ + EXDI1(1, -128, R0, R1) +#define EXDI(V0, V1, V2, R0, R1, R2, F0, F1, F2, F3, F4, F5) \ + EXDI0(V0, F5) \ + EXDI0(V1, F4) \ + EXDI0(V2, F3) \ + EXDI0(R0, F2) \ + EXDI0(R1, F1) \ + EXDI0(R2, F0) + +#define LEXFI1(N, V, R0, R1) \ + movi_f %R1 V \ + truncr_f_i %R0 %R1 \ + andi %R0 %R0 0xffffffff \ + beqi lfi##_##R0##_##R1##_##N %R0 $(V & 0xffffffff) \ + calli @abort \ +lfi##_##R0##_##R1##_##N: +#define LEXFI0(R0, R1) \ + LEXFI1(0, 42, R0, R1) \ + LEXFI1(1, -128, R0, R1) +#define LEXFI(V0, V1, V2, R0, R1, R2, F0, F1, F2, F3, F4, F5) \ + LEXFI0(V0, F5) \ + LEXFI0(V1, F4) \ + LEXFI0(V2, F3) \ + LEXFI0(R0, F2) \ + LEXFI0(R1, F1) \ + LEXFI0(R2, F0) +#define LEXDI1(N, V, R0, R1) \ + movi_d %R1 V \ + truncr_d_i %R0 %R1 \ + andi %R0 %R0 0xffffffff \ + beqi ldi##_##R0##_##R1##_##N %R0 $(V & 0xffffffff) \ + calli @abort \ +ldi##_##R0##_##R1##_##N: +#define LEXDI0(R0, R1) \ + LEXDI1(0, 42, R0, R1) \ + LEXDI1(1, -128, R0, R1) +#define LEXDI(V0, V1, V2, R0, R1, R2, F0, F1, F2, F3, F4, F5) \ + LEXDI0(V0, F5) \ + LEXDI0(V1, F4) \ + LEXDI0(V2, F3) \ + LEXDI0(R0, F2) \ + LEXDI0(R1, F1) \ + LEXDI0(R2, F0) + +#define EXTFD2(V, R0, R1) \ + movi_f %R0 V \ + extr_f_d %R1 %R0 \ + beqi_d fd##_##R0##_##R1 %R1 V \ + calli @abort \ +fd##_##R0##_##R1: +#define EXTFD1(R0, R1) \ + EXTFD2(1.25, R0, R1) +#define EXTFDC2(V, R0) \ + movi_f %R0 V \ + extr_f_d %R0 %R0 \ + beqi_d fdc##_##R0 %R0 V \ + calli @abort \ +fdc##_##R0: +#define EXTFDC1(R0) \ + EXTFDC2(-0.75, R0) +#define EXTFD(R0, R1, R2, R3, R4, R5) \ + EXTFD1(R0, R1) \ + EXTFD1(R0, R2) \ + EXTFD1(R0, R3) \ + EXTFD1(R0, R4) \ + EXTFD1(R0, R5) \ + EXTFDC1(R0) \ + EXTFDC1(R1) \ + EXTFDC1(R2) \ + EXTFDC1(R3) \ + EXTFDC1(R4) \ + EXTFDC1(R5) + +#define EXTDF2(V, R0, R1) \ + movi_d %R0 V \ + extr_d_f %R1 %R0 \ + beqi_f df##_##R0##_##R1 %R1 V \ + calli @abort \ +df##_##R0##_##R1: +#define EXTDF1(R0, R1) \ + EXTDF2(1.25, R0, R1) +#define EXTDFC2(V, R0) \ + movi_d %R0 V \ + extr_d_f %R0 %R0 \ + beqi_f dfc##_##R0 %R0 V \ + calli @abort \ +dfc##_##R0: +#define EXTDFC1(R0) \ + EXTDFC2(-0.75, R0) +#define EXTDF(R0, R1, R2, R3, R4, R5) \ + EXTDF1(R0, R1) \ + EXTDF1(R0, R2) \ + EXTDF1(R0, R3) \ + EXTDF1(R0, R4) \ + EXTDF1(R0, R5) \ + EXTDFC1(R0) \ + EXTDFC1(R1) \ + EXTDFC1(R2) \ + EXTDFC1(R3) \ + EXTDFC1(R4) \ + EXTDFC1(R5) + +.code + prolog + + /* simple sequence for easier disassembly reading and encoding check */ + movi %r0 w7f + extr_c %r1 %r0 + beqi xc %r1 c7f + calli @abort +xc: + movi %r0 w7f + extr_uc %r1 %r0 + beqi xuc %r1 uc7f + calli @abort +xuc: + movi %r0 w7f + extr_s %r1 %r0 + beqi xs %r1 s7f + calli @abort +xs: + movi %r0 w7f + extr_us %r1 %r0 + beqi xus %r1 us7f + calli @abort +xus: +#if __WORDSIZE == 64 + movi %r0 w7f + extr_i %r1 %r0 + beqi xi %r1 i7f + calli @abort +xi: + movi %r0 w7f + extr_ui %r1 %r0 + beqi xui %r1 ui7f + calli @abort +xui: +#endif + movi %r0 -2 + extr_f %f0 %r0 + beqi_f xif %f0 -2 + calli @abort +xif: + movi %r0 32 + extr_d %f0 %r0 + beqi_d xid %f0 32 + calli @abort +xid: + movi_f %f0 -128 + truncr_f %r0 %f0 + beqi xfi %r0 -128 + calli @abort +xfi: + movi_d %f0 -128 + truncr_d %r0 %f0 + beqi xdi %r0 -128 + calli @abort +xdi: +#if __WORDSIZE == 64 + movi_f %f0 -128 + truncr_f_i %r0 %f0 + andi %r0 %r0 0xffffffff + beqi yfi %r0 $(-128 & 0xffffffff) + calli @abort +yfi: + movi_d %f0 -128 + truncr_d_i %r0 %f0 + andi %r0 %r0 0xffffffff + beqi ydi %r0 $(-128 & 0xffffffff) + calli @abort +ydi: +#endif + movi_f %f0 0.5 + extr_f_d %f1 %f0 + beqi_d xfd %f1 0.5 + calli @abort +xfd: + movi_d %f0 0.5 + extr_d_f %f1 %f0 + beqi_f xdf %f1 0.5 + calli @abort +xdf: + + EXTII(v0, v1, v2, r0, r1, r2) + EXIF(v0, v1, v2, r0, r1, r2, f0, f1, f2, f3, f4, f5) + EXID(v0, v1, v2, r0, r1, r2, f0, f1, f2, f3, f4, f5) + EXFI(v0, v1, v2, r0, r1, r2, f0, f1, f2, f3, f4, f5) +#if __WORDSIZE == 64 + LEXFI(v0, v1, v2, r0, r1, r2, f0, f1, f2, f3, f4, f5) + LEXDI(v0, v1, v2, r0, r1, r2, f0, f1, f2, f3, f4, f5) +#endif + 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) + + // just to know did not abort + prepare + pushargi ok + ellipsis + finishi @printf + + ret + epilog -- cgit v1.2.3