git subrepo pull --force deps/lightning
[pcsx_rearmed.git] / deps / lightning / lib / jit_arm.c
index 783fa90..6b121bf 100644 (file)
@@ -1,5 +1,5 @@
 /*
- * Copyright (C) 2012-2019  Free Software Foundation, Inc.
+ * Copyright (C) 2012-2022  Free Software Foundation, Inc.
  *
  * This file is part of GNU lightning.
  *
@@ -90,6 +90,7 @@ extern void __clear_cache(void *, void *);
 #  include "jit_arm-cpu.c"
 #  include "jit_arm-swf.c"
 #  include "jit_arm-vfp.c"
+#  include "jit_fallback.c"
 #undef PROTO
 
 /*
@@ -1399,11 +1400,10 @@ _emit_code(jit_state_t *_jit)
        jit_regarg_set(node, value);
        switch (node->code) {
            case jit_code_align:
-               assert(!(node->u.w & (node->u.w - 1)) &&
-                      node->u.w <= sizeof(jit_word_t));
-               if (node->u.w == sizeof(jit_word_t) &&
-                   (word = _jit->pc.w & (sizeof(jit_word_t) - 1)))
-                   nop(sizeof(jit_word_t) - word);
+               /* Must align to a power of two */
+               assert(!(node->u.w & (node->u.w - 1)));
+               if ((word = _jit->pc.w & (node->u.w - 1)))
+                   nop(node->u.w - word);
                break;
            case jit_code_note:         case jit_code_name:
                if (must_align_p(node->next))
@@ -1498,11 +1498,23 @@ _emit_code(jit_state_t *_jit)
                case_wrr(stx, _i);
                case_rr(hton, _us);
                case_rr(hton, _ui);
+               case_rr(bswap, _us);
+               case_rr(bswap, _ui);
                case_rr(ext, _c);
                case_rr(ext, _uc);
                case_rr(ext, _s);
                case_rr(ext, _us);
+           case jit_code_casr:
+               casr(rn(node->u.w), rn(node->v.w),
+                    rn(node->w.q.l), rn(node->w.q.h));
+               break;
+           case jit_code_casi:
+               casi(rn(node->u.w), node->v.w,
+                    rn(node->w.q.l), rn(node->w.q.h));
+               break;
                case_rr(mov,);
+               case_rrr(movn,);
+               case_rrr(movz,);
            case jit_code_movi:
                if (node->flag & jit_flag_node) {
                    temp = node->v.n;
@@ -1999,6 +2011,7 @@ _emit_code(jit_state_t *_jit)
 #  include "jit_arm-cpu.c"
 #  include "jit_arm-swf.c"
 #  include "jit_arm-vfp.c"
+#  include "jit_fallback.c"
 #undef CODE
 
 void