aboutsummaryrefslogtreecommitdiff
path: root/deps/lightning/check/ldstxr-c.tst
diff options
context:
space:
mode:
authorPaul Cercueil2020-01-30 12:33:44 -0300
committerPaul Cercueil2020-02-08 11:44:52 -0300
commit4a71579b757d3a2eb6902c84391f429838ad4912 (patch)
treec57430315f1b82497eebd3fef24c0f4c0336bf0d /deps/lightning/check/ldstxr-c.tst
parentea884d3029c673e06a4084156ceb662598d8945a (diff)
downloadpcsx_rearmed-4a71579b757d3a2eb6902c84391f429838ad4912.tar.gz
pcsx_rearmed-4a71579b757d3a2eb6902c84391f429838ad4912.tar.bz2
pcsx_rearmed-4a71579b757d3a2eb6902c84391f429838ad4912.zip
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"
Diffstat (limited to 'deps/lightning/check/ldstxr-c.tst')
-rw-r--r--deps/lightning/check/ldstxr-c.tst219
1 files changed, 219 insertions, 0 deletions
diff --git a/deps/lightning/check/ldstxr-c.tst b/deps/lightning/check/ldstxr-c.tst
new file mode 100644
index 0000000..cd770a6
--- /dev/null
+++ b/deps/lightning/check/ldstxr-c.tst
@@ -0,0 +1,219 @@
+#include "ldst.inc"
+
+#if __WORDSIZE == 64
+# define LDSTL(N, R0, R1, R2) \
+ movi %R2 $offui \
+ stxr_i %R2 %R0 %R1 \
+ movi %R1 L##N \
+ movi %R2 $offl \
+ stxr_l %R2 %R0 %R1
+
+# define SI(C, N, x, X, R0, R1) \
+ movi %R1 $off##x \
+ ldxr_##x %R1 %R0 %R1 \
+ beqi L##x##C##0 %R1 L##X##N \
+ calli @abort \
+L##x##C##0: \
+ movi %R1 $off##x \
+ ldxr_##x %R0 %R0 %R1 \
+ beqi L##x##C##1 %R0 L##X##N \
+ calli @abort \
+L##x##C##1:
+
+# define LDRL(C, N, R0, R1, R2) \
+ UI(C, N, i, I, R0, R1) \
+ movi %R0 t0 \
+ SI(C, N, l, L, R0, R1)
+#else
+# define LDSTL(C, R0, R1, R2)
+# define SI(C, N, x, X, R0, R1) \
+ movi %R1 $off##x \
+ ldxr_##x %R1 %R0 %R1 \
+ beqi L##x##C##0 %R1 I##X##N \
+ calli @abort \
+L##x##C##0: \
+ movi %R1 $off##x \
+ ldxr_##x %R0 %R0 %R1 \
+ beqi L##x##C##1 %R0 I##X##N \
+ calli @abort \
+L##x##C##1:
+
+# define LDRL(C, N, R0, R1, R2)
+
+#endif
+
+#define UI(C, N, x, X, R0, R1) \
+ movi %R1 $offu##x \
+ ldxr_u##x %R1 %R0 %R1 \
+ beqi Lu##x##C##0 %R1 X##N \
+ calli @abort \
+Lu##x##C##0: \
+ movi %R1 $offu##x \
+ ldxr_u##x %R0 %R0 %R1 \
+ beqi Lu##x##C##1 %R0 X##N \
+ calli @abort \
+Lu##x##C##1:
+
+#define LDST1(X, N, R0, R1, R2) \
+ movi %R0 t0 \
+ movi %R1 C##N \
+ movi %R2 $offc \
+ stxr_c %R2 %R0 %R1 \
+ movi %R2 $offuc \
+ stxr_c %R2 %R0 %R1 \
+ movi %R1 S##N \
+ movi %R2 $offs \
+ stxr_s %R2 %R0 %R1 \
+ movi %R2 $offus \
+ stxr_s %R2 %R0 %R1 \
+ movi %R1 I##N \
+ movi %R2 $offi \
+ stxr_i %R2 %R0 %R1 \
+ LDSTL(N, R0, R1, R2) \
+ SI(X, N, c, C, R0, R1) \
+ movi %R0 t0 \
+ UI(X, N, c, C, R0, R1) \
+ movi %R0 t0 \
+ SI(X, N, s, S, R0, R1) \
+ movi %R0 t0 \
+ UI(X, N, s, S, R0, R1) \
+ movi %R0 t0 \
+ SI(X, N, i, I, R0, R1) \
+ movi %R0 t0 \
+ LDRL(X, N, R0, R1, R2) \
+
+#define LDST0(R0, R1, R2) \
+ LDST1(0_##R0##_##R1##_##R2, 0, R0, R1, R2) \
+ LDST1(1_##R0##_##R1##_##R2, 1, R0, R1, R2) \
+ LDST1(2_##R0##_##R1##_##R2, 2, R0, R1, R2) \
+ LDST1(3_##R0##_##R1##_##R2, 3, R0, R1, R2)
+
+#define LDST(V0, V1, V2, R0, R1, R2) \
+ LDST0(V1, V2, V0) \
+ LDST0(V1, R0, V0) \
+ LDST0(V1, R1, V0) \
+ LDST0(V1, R2, V0) \
+ LDST0(V0, R0, V1) \
+ LDST0(V0, R1, V1) \
+ LDST0(V0, R2, V1) \
+ LDST0(V0, V2, V1) \
+ LDST0(V2, V0, V1) \
+ LDST0(V2, R0, V1) \
+ LDST0(V2, R1, V1) \
+ LDST0(V2, R2, V1) \
+ LDST0(R0, R1, V2) \
+ LDST0(R0, R2, V2)
+
+.code
+ prolog
+
+ /* Simple test to simplify validating encodings before
+ * brute force tests */
+ movi %r0 t0
+ movi %r1 0x81
+ movi %r2 $offc
+ stxr_c %r2 %r0 %r1
+ movi %r2 $offuc
+ stxr_c %r2 %r0 %r1
+ movi %r1 0x8001
+ movi %r2 $offs
+ stxr_s %r2 %r0 %r1
+ movi %r2 $offus
+ stxr_s %r2 %r0 %r1
+ movi %r1 0x80000001
+ movi %r2 $offi
+ stxr_i %r2 %r0 %r1
+#if __WORDSIZE == 64
+ movi %r2 $offui
+ stxr_i %r2 %r0 %r1
+ movi %r1 0x8000000000000001
+ movi %r2 $offl
+ stxr_l %r2 %r0 %r1
+#endif
+ movi %r1 $offc
+ ldxr_c %r1 %r0 %r1
+ beqi Lc0 %r1 XC
+ calli @abort
+Lc0:
+ movi %r1 $offc
+ ldxr_c %r0 %r0 %r1
+ beqi Lc1 %r0 XC
+ calli @abort
+Lc1:
+ movi %r0 t0
+ movi %r1 $offuc
+ ldxr_uc %r1 %r0 %r1
+ beqi Luc0 %r1 0x81
+ calli @abort
+Luc0:
+ movi %r1 $offuc
+ ldxr_uc %r0 %r0 %r1
+ beqi Luc1 %r0 0x81
+ calli @abort
+Luc1:
+ movi %r0 t0
+ movi %r1 $offs
+ ldxr_s %r1 %r0 %r1
+ beqi Ls0 %r1 XS
+ calli @abort
+Ls0:
+ movi %r1 $offs
+ ldxr_s %r0 %r0 %r1
+ beqi Ls1 %r0 XS
+ calli @abort
+Ls1:
+ movi %r0 t0
+ movi %r1 $offus
+ ldxr_us %r1 %r0 %r1
+ beqi Lus0 %r1 0x8001
+ calli @abort
+Lus0:
+ movi %r1 $offus
+ ldxr_us %r0 %r0 %r1
+ beqi Lus1 %r0 0x8001
+ calli @abort
+Lus1:
+ movi %r0 t0
+ movi %r1 $offi
+ ldxr_i %r1 %r0 %r1
+ beqi Li0 %r1 XI
+ calli @abort
+Li0:
+ movi %r1 $offi
+ ldxr_i %r0 %r0 %r1
+ beqi Li1 %r0 XI
+ calli @abort
+Li1:
+#if __WORDSIZE == 64
+ movi %r0 t0
+ movi %r1 $offui
+ ldxr_ui %r1 %r0 %r1
+ beqi Lui0 %r1 0x80000001
+ calli @abort
+Lui0:
+ movi %r1 $offui
+ ldxr_ui %r0 %r0 %r1
+ beqi Lui1 %r0 0x80000001
+ calli @abort
+Lui1:
+ movi %r0 t0
+ movi %r1 $offl
+ ldxr_l %r1 %r0 %r1
+ beqi Ll0 %r1 0x8000000000000001
+ calli @abort
+Ll0:
+ movi %r1 $offl
+ ldxr_l %r0 %r0 %r1
+ beqi Ll1 %r0 0x8000000000000001
+ calli @abort
+Ll1:
+#endif
+
+ LDST(v0, v1, v2, r0, r1, r2)
+ // just to know did not abort
+ prepare
+ pushargi ok
+ ellipsis
+ finishi @printf
+ ret
+ epilog