notaz.gp2x.de
/
pcsx_rearmed.git
/ blobdiff
commit
grep
author
committer
pickaxe
?
search:
re
summary
|
shortlog
|
log
|
commit
|
commitdiff
|
tree
raw
|
inline
| side by side
Fix emscripten build
[pcsx_rearmed.git]
/
deps
/
lightning
/
lib
/
jit_riscv-fpu.c
diff --git
a/deps/lightning/lib/jit_riscv-fpu.c
b/deps/lightning/lib/jit_riscv-fpu.c
index
367975e
..
bfe64fc
100644
(file)
--- a/
deps/lightning/lib/jit_riscv-fpu.c
+++ b/
deps/lightning/lib/jit_riscv-fpu.c
@@
-1,5
+1,5
@@
/*
/*
- * Copyright (C) 2019 Free Software Foundation, Inc.
+ * Copyright (C) 2019
-2023
Free Software Foundation, Inc.
*
* This file is part of GNU lightning.
*
*
* This file is part of GNU lightning.
*
@@
-127,6
+127,10
@@
static void _divi_f(jit_state_t *_jit,jit_int32_t,jit_int32_t,jit_float32_t);
# define absr_f(r0, r1) FABS_S(r0, r1)
# define negr_f(r0, r1) FNEG_S(r0, r1)
# define sqrtr_f(r0, r1) FSQRT_S(r0, r1)
# define absr_f(r0, r1) FABS_S(r0, r1)
# define negr_f(r0, r1) FNEG_S(r0, r1)
# define sqrtr_f(r0, r1) FSQRT_S(r0, r1)
+# define fmar_f(r0, r1, r2, r3) FMADD_S(r0, r1, r2, r3)
+# define fmsr_f(r0, r1, r2, r3) FMSUB_S(r0, r1, r2, r3)
+# define fnmar_f(r0, r1, r2, r3) FNMADD_S(r0, r1, r2, r3)
+# define fnmsr_f(r0, r1, r2, r3) FNMSUB_S(r0, r1, r2, r3)
# define extr_f(r0, r1) FCVT_S_L(r0, r1)
# define ldr_f(r0, r1) FLW(r0, r1, 0)
# define ldi_f(r0, im) _ldi_f(_jit, r0, im)
# define extr_f(r0, r1) FCVT_S_L(r0, r1)
# define ldr_f(r0, r1) FLW(r0, r1, 0)
# define ldi_f(r0, im) _ldi_f(_jit, r0, im)
@@
-135,6
+139,10
@@
static void _ldi_f(jit_state_t*, jit_int32_t, jit_word_t);
static void _ldxr_f(jit_state_t*, jit_int32_t, jit_int32_t, jit_int32_t);
# define ldxi_f(r0, r1, i0) _ldxi_f(_jit, r0, r1, i0)
static void _ldxi_f(jit_state_t*, jit_int32_t, jit_int32_t, jit_word_t);
static void _ldxr_f(jit_state_t*, jit_int32_t, jit_int32_t, jit_int32_t);
# define ldxi_f(r0, r1, i0) _ldxi_f(_jit, r0, r1, i0)
static void _ldxi_f(jit_state_t*, jit_int32_t, jit_int32_t, jit_word_t);
+# define unldr_x(r0, r1, i0) _unldr_x(_jit, r0, r1, i0)
+static void _unldr_x(jit_state_t*, jit_int32_t, jit_int32_t, jit_word_t);
+# define unldi_x(r0, i0, i1) _unldi_x(_jit, r0, i0, i1)
+static void _unldi_x(jit_state_t*, jit_int32_t, jit_word_t, jit_word_t);
# define str_f(r0, r1) FSW(r0, r1, 0)
# define sti_f(im, r0) _sti_f(_jit, im, r0)
static void _sti_f(jit_state_t*, jit_word_t, jit_int32_t);
# define str_f(r0, r1) FSW(r0, r1, 0)
# define sti_f(im, r0) _sti_f(_jit, im, r0)
static void _sti_f(jit_state_t*, jit_word_t, jit_int32_t);
@@
-142,13
+150,17
@@
static void _sti_f(jit_state_t*, jit_word_t, jit_int32_t);
static void _stxr_f(jit_state_t*, jit_int32_t, jit_int32_t, jit_int32_t);
# define stxi_f(im, r0, r1) _stxi_f(_jit, im, r0, r1)
static void _stxi_f(jit_state_t*, jit_word_t, jit_int32_t, jit_int32_t);
static void _stxr_f(jit_state_t*, jit_int32_t, jit_int32_t, jit_int32_t);
# define stxi_f(im, r0, r1) _stxi_f(_jit, im, r0, r1)
static void _stxi_f(jit_state_t*, jit_word_t, jit_int32_t, jit_int32_t);
+#define unstr_x(r0, r1, i0) _unstr_x(_jit, r0, r1, i0)
+static void _unstr_x(jit_state_t*, jit_int32_t, jit_int32_t, jit_word_t);
+#define unsti_x(i0, r0, i1) _unsti_x(_jit, i0, r0, i1)
+static void _unsti_x(jit_state_t*, jit_word_t, jit_int32_t, jit_word_t);
# define movr_f(r0, r1) FMV_S(r0, r1)
# define movi_f(r0, im) _movi_f(_jit, r0, im)
static void _movi_f(jit_state_t*, jit_int32_t, jit_float32_t);
# define movr_f_w(r0, r1) FMV_X_W(r0, r1)
# define movr_f(r0, r1) FMV_S(r0, r1)
# define movi_f(r0, im) _movi_f(_jit, r0, im)
static void _movi_f(jit_state_t*, jit_int32_t, jit_float32_t);
# define movr_f_w(r0, r1) FMV_X_W(r0, r1)
-# define movi_f_w(r0, im) _movi_f_w(_jit, r0, im)
-static void _movi_f_w(jit_state_t*, jit_int32_t, jit_float32_t);
# define movr_w_f(r0, r1) FMV_W_X(r0, r1)
# define movr_w_f(r0, r1) FMV_W_X(r0, r1)
+# define movi_w_f(r0, i0) _movi_w_f(_jit, r0, i0)
+static void _movi_w_f(jit_state_t*, jit_int32_t, jit_word_t);
# define extr_d_f(r0, r1) FCVT_S_D(r0, r1)
# define ltr_f(r0, r1, r2) FLT_S(r0, r1, r2)
# define lti_f(r0, r1, im) _lti_f(_jit, r0, r1, im)
# define extr_d_f(r0, r1) FCVT_S_D(r0, r1)
# define ltr_f(r0, r1, r2) FLT_S(r0, r1, r2)
# define lti_f(r0, r1, im) _lti_f(_jit, r0, r1, im)
@@
-275,6
+287,10
@@
static void _divi_d(jit_state_t *_jit,jit_int32_t,jit_int32_t,jit_float64_t);
# define absr_d(r0, r1) FABS_D(r0, r1)
# define negr_d(r0, r1) FNEG_D(r0, r1)
# define sqrtr_d(r0, r1) FSQRT_D(r0, r1)
# define absr_d(r0, r1) FABS_D(r0, r1)
# define negr_d(r0, r1) FNEG_D(r0, r1)
# define sqrtr_d(r0, r1) FSQRT_D(r0, r1)
+# define fmar_d(r0, r1, r2, r3) FMADD_D(r0, r1, r2, r3)
+# define fmsr_d(r0, r1, r2, r3) FMSUB_D(r0, r1, r2, r3)
+# define fnmar_d(r0, r1, r2, r3) FNMADD_D(r0, r1, r2, r3)
+# define fnmsr_d(r0, r1, r2, r3) FNMSUB_D(r0, r1, r2, r3)
# define extr_d(r0, r1) FCVT_D_L(r0, r1)
# define ldr_d(r0, r1) FLD(r0, r1, 0)
# define ldi_d(r0, im) _ldi_d(_jit, r0, im)
# define extr_d(r0, r1) FCVT_D_L(r0, r1)
# define ldr_d(r0, r1) FLD(r0, r1, 0)
# define ldi_d(r0, im) _ldi_d(_jit, r0, im)
@@
-294,9
+310,9
@@
static void _stxi_d(jit_state_t*, jit_word_t, jit_int32_t, jit_int32_t);
# define movi_d(r0, im) _movi_d(_jit, r0, im)
static void _movi_d(jit_state_t*, jit_int32_t, jit_float64_t);
# define movr_d_w(r0, r1) FMV_X_D(r0, r1)
# define movi_d(r0, im) _movi_d(_jit, r0, im)
static void _movi_d(jit_state_t*, jit_int32_t, jit_float64_t);
# define movr_d_w(r0, r1) FMV_X_D(r0, r1)
-# define movi_d_w(r0, im) _movi_d_w(_jit, r0, im)
-static void _movi_d_w(jit_state_t*, jit_int32_t, jit_float64_t);
# define movr_w_d(r0, r1) FMV_D_X(r0, r1)
# define movr_w_d(r0, r1) FMV_D_X(r0, r1)
+#define movi_w_d(r0, i0) _movi_w_d(_jit, r0, i0)
+static void _movi_w_d(jit_state_t*, jit_int32_t, jit_word_t);
# define extr_f_d(r0, r1) FCVT_D_S(r0, r1)
# define ltr_d(r0, r1, r2) FLT_D(r0, r1, r2)
# define lti_d(r0, r1, r2) _lti_d(_jit, r0, r1, r2)
# define extr_f_d(r0, r1) FCVT_D_S(r0, r1)
# define ltr_d(r0, r1, r2) FLT_D(r0, r1, r2)
# define lti_d(r0, r1, r2) _lti_d(_jit, r0, r1, r2)
@@
-468,6
+484,24
@@
_ldxi_f(jit_state_t *_jit, jit_int32_t r0, jit_int32_t r1, jit_word_t i0)
}
}
}
}
+static void
+_unldr_x(jit_state_t *_jit, jit_int32_t r0, jit_int32_t r1, jit_word_t i0)
+{
+ if (jit_unaligned_p())
+ fallback_unldr_x(r0, r1, i0);
+ else
+ generic_unldr_x(r0, r1, i0);
+}
+
+static void
+_unldi_x(jit_state_t *_jit, jit_int32_t r0, jit_word_t i0, jit_word_t i1)
+{
+ if (jit_unaligned_p())
+ fallback_unldi_x(r0, i0, i1);
+ else
+ generic_unldi_x(r0, i0, i1);
+}
+
static void
_sti_f(jit_state_t *_jit, jit_word_t i0, jit_int32_t r0)
{
static void
_sti_f(jit_state_t *_jit, jit_word_t i0, jit_int32_t r0)
{
@@
-506,6
+540,24
@@
_stxi_f(jit_state_t *_jit, jit_word_t i0, jit_int32_t r0, jit_int32_t r1)
}
}
}
}
+static void
+_unstr_x(jit_state_t *_jit, jit_int32_t r0, jit_int32_t r1, jit_word_t i0)
+{
+ if (jit_unaligned_p())
+ fallback_unstr_x(r0, r1, i0);
+ else
+ generic_unstr_x(r0, r1, i0);
+}
+
+static void
+_unsti_x(jit_state_t *_jit, jit_word_t i0, jit_int32_t r0, jit_word_t i1)
+{
+ if (jit_unaligned_p())
+ fallback_unsti_x(i0, r0, i1);
+ else
+ fallback_unsti_x(i0, r0, i1);
+}
+
static void
_movi_f(jit_state_t *_jit, jit_int32_t r0, jit_float32_t i0)
{
static void
_movi_f(jit_state_t *_jit, jit_int32_t r0, jit_float32_t i0)
{
@@
-526,14
+578,13
@@
_movi_f(jit_state_t *_jit, jit_int32_t r0, jit_float32_t i0)
}
static void
}
static void
-_movi_
f_w(jit_state_t *_jit, jit_int32_t r0, jit_float32
_t i0)
+_movi_
w_f(jit_state_t *_jit, jit_int32_t r0, jit_word
_t i0)
{
{
- union {
- jit_int32_t i;
- jit_float32_t f;
- } data;
- data.f = i0;
- movi(r0, data.i);
+ jit_int32_t reg;
+ reg = jit_get_reg(jit_class_gpr);
+ movi(rn(reg), i0);
+ movr_w_f(r0, rn(reg));
+ jit_unget_reg(reg);
}
fopi(lt)
}
fopi(lt)
@@
-960,14
+1011,13
@@
_movi_d(jit_state_t *_jit, jit_int32_t r0, jit_float64_t i0)
}
static void
}
static void
-_movi_
d_w(jit_state_t *_jit, jit_int32_t r0, jit_float64
_t i0)
+_movi_
w_d(jit_state_t *_jit, jit_int32_t r0, jit_word
_t i0)
{
{
- union {
- jit_int64_t l;
- jit_float64_t d;
- } data;
- data.d = i0;
- movi(r0, data.l);
+ jit_int32_t reg;
+ reg = jit_get_reg(jit_class_gpr);
+ movi(rn(reg), i0);
+ movr_w_d(r0, rn(reg));
+ jit_unget_reg(reg);
}
dopi(lt)
}
dopi(lt)