aboutsummaryrefslogtreecommitdiff
path: root/deps/lightning/check/cvt.tst
diff options
context:
space:
mode:
Diffstat (limited to 'deps/lightning/check/cvt.tst')
-rw-r--r--deps/lightning/check/cvt.tst380
1 files changed, 380 insertions, 0 deletions
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