Update lightrec 20220910 (#686)
[pcsx_rearmed.git] / include / lightning / lightning.h
index a155b8a..23015a4 100644 (file)
@@ -24,6 +24,7 @@
 #include <stdlib.h>
 #include <stdint.h>
 #include <string.h>
+#include <pthread.h>
 
 #if defined(__hpux) && defined(__hppa__)
 #  include <machine/param.h>
@@ -123,6 +124,11 @@ typedef jit_int32_t                jit_bool_t;
 typedef jit_int32_t            jit_gpr_t;
 typedef jit_int32_t            jit_fpr_t;
 
+#if !defined(__powerpc__) && \
+       (defined(__POWERPC__) || defined(__ppc__) || defined(__PPC__))
+#define __powerpc__ 1
+#endif
+
 #if defined(__i386__) || defined(__x86_64__)
 #  include <lightning/jit_x86.h>
 #elif defined(__mips__)
@@ -305,10 +311,6 @@ typedef enum {
 #define jit_comr(u,v)          jit_new_node_ww(jit_code_comr,u,v)
     jit_code_negr,             jit_code_comr,
 
-#define jit_ffsr(u,v)          jit_new_node_ww(jit_code_ffsr,u,v)
-#define jit_clzr(u,v)          jit_new_node_ww(jit_code_clzr,u,v)
-    jit_code_ffsr,             jit_code_clzr,
-
 #define jit_ltr(u,v,w)         jit_new_node_www(jit_code_ltr,u,v,w)
 #define jit_lti(u,v,w)         jit_new_node_www(jit_code_lti,u,v,w)
     jit_code_ltr,              jit_code_lti,
@@ -343,9 +345,11 @@ typedef enum {
 #define jit_movr(u,v)          jit_new_node_ww(jit_code_movr,u,v)
 #define jit_movi(u,v)          jit_new_node_ww(jit_code_movi,u,v)
     jit_code_movr,             jit_code_movi,
+
 #define jit_movnr(u,v,w)       jit_new_node_www(jit_code_movnr,u,v,w)
 #define jit_movzr(u,v,w)       jit_new_node_www(jit_code_movzr,u,v,w)
     jit_code_movnr,            jit_code_movzr,
+
 #define jit_extr_c(u,v)                jit_new_node_ww(jit_code_extr_c,u,v)
 #define jit_extr_uc(u,v)       jit_new_node_ww(jit_code_extr_uc,u,v)
     jit_code_extr_c,           jit_code_extr_uc,
@@ -898,6 +902,22 @@ typedef enum {
 #define jit_movr_d_w(u, v)     jit_new_node_ww(jit_code_movr_d_w, u, v)
 #define jit_movi_d_w(u, v)     jit_new_node_wd(jit_code_movi_d_w, u, v)
 
+#define jit_bswapr_us(u,v)     jit_new_node_ww(jit_code_bswapr_us,u,v)
+    jit_code_bswapr_us,
+#define jit_bswapr_ui(u,v)     jit_new_node_ww(jit_code_bswapr_ui,u,v)
+    jit_code_bswapr_ui,
+#define jit_bswapr_ul(u,v)     jit_new_node_ww(jit_code_bswapr_ul,u,v)
+    jit_code_bswapr_ul,
+#if __WORDSIZE == 32
+#define jit_bswapr(u,v)                jit_new_node_ww(jit_code_bswapr_ui,u,v)
+#else
+#define jit_bswapr(u,v)                jit_new_node_ww(jit_code_bswapr_ul,u,v)
+#endif
+
+    jit_code_casr,             jit_code_casi,
+#define jit_casr(u, v, w, x)   jit_new_node_wwq(jit_code_casr, u, v, w, x)
+#define jit_casi(u, v, w, x)   jit_new_node_wwq(jit_code_casi, u, v, w, x)
+
     jit_code_last_code
 } jit_code_t;
 
@@ -1066,6 +1086,10 @@ extern jit_node_t *_jit_new_node_www(jit_state_t*, jit_code_t,
 extern jit_node_t *_jit_new_node_qww(jit_state_t*, jit_code_t,
                                     jit_int32_t, jit_int32_t,
                                     jit_word_t, jit_word_t);
+#define jit_new_node_wwq(c,u,v,l,h) _jit_new_node_wwq(_jit,c,u,v,l,h)
+extern jit_node_t *_jit_new_node_wwq(jit_state_t*, jit_code_t,
+                                    jit_word_t, jit_word_t,
+                                    jit_int32_t, jit_int32_t);
 #define jit_new_node_wwf(c,u,v,w) _jit_new_node_wwf(_jit,c,u,v,w)
 extern jit_node_t *_jit_new_node_wwf(jit_state_t*, jit_code_t,
                                     jit_word_t, jit_word_t, jit_float32_t);