Update lightrec 20220910 (#686)
[pcsx_rearmed.git] / deps / lightning / check / lightning.c
index c92364a..34b5440 100644 (file)
@@ -30,6 +30,7 @@
 #include <stdarg.h>
 #include <lightning.h>
 #include <dlfcn.h>
+#include <math.h>
 
 #if defined(__linux__) && (defined(__i386__) || defined(__x86_64__))
 #  include <fpu_control.h>
@@ -315,6 +316,7 @@ static void ger_u(void);    static void gei_u(void);
 static void gtr(void);         static void gti(void);
 static void gtr_u(void);       static void gti_u(void);
 static void ner(void);         static void nei(void);
+static void casr(void);                static void casi(void);
 static void movr(void);                static void movi(void);
 static void extr_c(void);      static void extr_uc(void);
 static void extr_s(void);      static void extr_us(void);
@@ -327,6 +329,11 @@ static void htonr_ui(void);        static void ntohr_ui(void);
 static void htonr_ul(void);    static void ntohr_ul(void);
 #endif
 static void htonr(void);       static void ntohr(void);
+static void bswapr_us(void);   static void bswapr_ui(void);
+#if __WORDSIZE == 64
+static void bswapr_ul(void);
+#endif
+static void bswapr(void);
 static void movnr(void);       static void movzr(void);
 static void ldr_c(void);       static void ldi_c(void);
 static void ldr_uc(void);      static void ldi_uc(void);
@@ -630,6 +637,7 @@ static instr_t                instr_vector[] = {
     entry(gtr),                entry(gti),
     entry(gtr_u),      entry(gti_u),
     entry(ner),                entry(nei),
+    entry(casr),       entry(casi),
     entry(movr),       entry(movi),
     entry(extr_c),     entry(extr_uc),
     entry(extr_s),     entry(extr_us),
@@ -642,6 +650,11 @@ static instr_t               instr_vector[] = {
     entry(htonr_ul),   entry(ntohr_ul),
 #endif
     entry(htonr),      entry(ntohr),
+    entry(bswapr_us),  entry(bswapr_ui),
+#if __WORDSIZE == 64
+    entry(bswapr_ul),
+#endif
+    entry(bswapr),
     entry(movnr),      entry(movzr),
     entry(ldr_c),      entry(ldi_c),
     entry(ldr_uc),     entry(ldi_uc),
@@ -1017,6 +1030,16 @@ name(void)                                                               \
     jit_word_t im = get_imm();                                         \
     jit_##name(r0, r1, r2, im);                                                \
 }
+#define entry_ir_im_ir_ir(name)                                                \
+static void                                                            \
+name(void)                                                             \
+{                                                                      \
+    jit_gpr_t  r0 = get_ireg();                                        \
+    jit_word_t im = get_imm();                                         \
+    jit_gpr_t r1 = get_ireg(), r2 = get_ireg();                                \
+    jit_##name(r0, im, r1, r2);                                                \
+}
+
 #define entry_ir_ir(name)                                              \
 static void                                                            \
 name(void)                                                             \
@@ -1432,6 +1455,7 @@ entry_ir_ir_ir(ger_u)             entry_ir_ir_im(gei_u)
 entry_ir_ir_ir(gtr)            entry_ir_ir_im(gti)
 entry_ir_ir_ir(gtr_u)          entry_ir_ir_im(gti_u)
 entry_ir_ir_ir(ner)            entry_ir_ir_im(nei)
+entry_ir_ir_ir_ir(casr)                entry_ir_im_ir_ir(casi)
 entry_ir_ir(movr)
 static void
 movi(void)
@@ -1491,6 +1515,11 @@ entry_ir_ir(htonr_ui)            entry_ir_ir(ntohr_ui)
 entry_ir_ir(htonr_ul)          entry_ir_ir(ntohr_ul)
 #endif
 entry_ir_ir(htonr)             entry_ir_ir(ntohr)
+entry_ir_ir(bswapr_us)         entry_ir_ir(bswapr_ui)
+#if __WORDSIZE == 64
+entry_ir_ir(bswapr_ul)
+#endif
+entry_ir_ir(bswapr)
 entry_ir_ir_ir(movnr)          entry_ir_ir_ir(movzr)
 entry_ir_ir(ldr_c)             entry_ir_pm(ldi_c)
 entry_ir_ir(ldr_uc)            entry_ir_pm(ldi_uc)