/*
- * Copyright (C) 2012-2019 Free Software Foundation, Inc.
+ * Copyright (C) 2012-2023 Free Software Foundation, Inc.
*
* This file is part of GNU lightning.
*
jit_int32_t r0, jit_int32_t r1)
{
jit_get_reg_args();
+ if (jit_fpr_p(r0) || jit_fpr_p(r1))
+ CHECK_SWF_OFFSET();
if (jit_fpr_p(r1))
swf_ldrin(_R0_REGNO, _FP_REGNO, swf_off(r1) + 8);
else
jit_int32_t r0, jit_int32_t r1)
{
jit_get_reg_args();
+ if (jit_fpr_p(r0) || jit_fpr_p(r1))
+ CHECK_SWF_OFFSET();
if (jit_fpr_p(r1)) {
if (!jit_thumb_p() && jit_armv5e_p())
LDRDIN(_R0_REGNO, _FP_REGNO, swf_off(r1) + 8);
jit_int32_t r0, jit_int32_t r1, jit_int32_t r2)
{
jit_get_reg_args();
+ if (jit_fpr_p(r0) || jit_fpr_p(r1) || jit_fpr_p(r2))
+ CHECK_SWF_OFFSET();
if (jit_fpr_p(r1))
swf_ldrin(_R0_REGNO, _FP_REGNO, swf_off(r1) + 8);
else
jit_int32_t r0, jit_int32_t r1, jit_int32_t r2)
{
jit_get_reg_args();
+ if (jit_fpr_p(r0) || jit_fpr_p(r1) || jit_fpr_p(r2))
+ CHECK_SWF_OFFSET();
if (jit_fpr_p(r1)) {
if (!jit_thumb_p() && jit_armv5e_p())
LDRDIN(_R0_REGNO, _FP_REGNO, swf_off(r1) + 8);
jit_float32_t f;
} data;
jit_get_reg_args();
+ if (jit_fpr_p(r0) || jit_fpr_p(r1))
+ CHECK_SWF_OFFSET();
data.f = i1;
if (jit_fpr_p(r1))
swf_ldrin(_R0_REGNO, _FP_REGNO, swf_off(r1) + 8);
jit_float32_t f;
} data;
jit_get_reg_args();
+ if (jit_fpr_p(r0) || jit_fpr_p(r1))
+ CHECK_SWF_OFFSET();
data.f = i0;
movi(_R0_REGNO, data.i);
if (jit_fpr_p(r1))
jit_float64_t d;
} data;
jit_get_reg_args();
-
+ if (jit_fpr_p(r0) || jit_fpr_p(r1))
+ CHECK_SWF_OFFSET();
data.d = i1;
if (jit_fpr_p(r1)) {
if (!jit_thumb_p() && jit_armv5e_p())
jit_float64_t d;
} data;
jit_get_reg_args();
+ if (jit_fpr_p(r0) || jit_fpr_p(r1))
+ CHECK_SWF_OFFSET();
data.d = i0;
movi(_R0_REGNO, data.i[0]);
movi(_R1_REGNO, data.i[1]);
jit_int32_t r0, jit_int32_t r1, jit_int32_t r2)
{
jit_get_reg_args();
+ if (jit_fpr_p(r1) || jit_fpr_p(r2))
+ CHECK_SWF_OFFSET();
if (jit_fpr_p(r1))
swf_ldrin(_R0_REGNO, _FP_REGNO, swf_off(r1) + 8);
else
jit_int32_t r0, jit_int32_t r1, jit_int32_t r2)
{
jit_get_reg_args();
+ if (jit_fpr_p(r1) || jit_fpr_p(r2))
+ CHECK_SWF_OFFSET();
if (jit_fpr_p(r1)) {
if (!jit_thumb_p() && jit_armv5e_p())
LDRDIN(_R0_REGNO, _FP_REGNO, swf_off(r1) + 8);
jit_float32_t f;
} data;
jit_get_reg_args();
+ if (jit_fpr_p(r1))
+ CHECK_SWF_OFFSET();
data.f = i1;
if (jit_fpr_p(r1))
swf_ldrin(_R0_REGNO, _FP_REGNO, swf_off(r1) + 8);
jit_float64_t d;
} data;
jit_get_reg_args();
+ if (jit_fpr_p(r1))
+ CHECK_SWF_OFFSET();
data.d = i1;
if (jit_fpr_p(r1)) {
if (!jit_thumb_p() && jit_armv5e_p())
{
jit_word_t instr;
jit_get_reg_args();
+ if (jit_fpr_p(r1) || jit_fpr_p(r2))
+ CHECK_SWF_OFFSET();
if (jit_fpr_p(r1))
swf_ldrin(_R0_REGNO, _FP_REGNO, swf_off(r1) + 8);
else
{
jit_word_t instr;
jit_get_reg_args();
+ if (jit_fpr_p(r1) || jit_fpr_p(r2))
+ CHECK_SWF_OFFSET();
if (jit_fpr_p(r1)) {
if (!jit_thumb_p() && jit_armv5e_p())
LDRDIN(_R0_REGNO, _FP_REGNO, swf_off(r1) + 8);
jit_float32_t f;
} data;
jit_get_reg_args();
+ if (jit_fpr_p(r1))
+ CHECK_SWF_OFFSET();
data.f = i1;
if (jit_fpr_p(r1))
swf_ldrin(_R0_REGNO, _FP_REGNO, swf_off(r1) + 8);
jit_float64_t d;
} data;
jit_get_reg_args();
+ if (jit_fpr_p(r1))
+ CHECK_SWF_OFFSET();
data.d = i1;
if (jit_fpr_p(r1)) {
if (!jit_thumb_p() && jit_armv5e_p())
{
jit_word_t w, d;
jit_get_reg_args();
+ if (jit_fpr_p(r0) || jit_fpr_p(r1))
+ CHECK_SWF_OFFSET();
if (jit_fpr_p(r0))
swf_ldrin(_R0_REGNO, _FP_REGNO, swf_off(r0) + 8);
else
{
jit_word_t w, d;
jit_get_reg_args();
+ if (jit_fpr_p(r0) || jit_fpr_p(r1))
+ CHECK_SWF_OFFSET();
if (jit_fpr_p(r0)) {
if (!jit_thumb_p() && jit_armv5e_p())
LDRDIN(_R0_REGNO, _FP_REGNO, swf_off(r0) + 8);
} data;
jit_word_t w, d;
jit_get_reg_args();
+ if (jit_fpr_p(r0))
+ CHECK_SWF_OFFSET();
data.f = i2;
if (jit_fpr_p(r0))
swf_ldrin(_R0_REGNO, _FP_REGNO, swf_off(r0) + 8);
jit_float64_t d;
} data;
jit_get_reg_args();
+ if (jit_fpr_p(r0))
+ CHECK_SWF_OFFSET();
data.d = i2;
if (jit_fpr_p(r0)) {
if (!jit_thumb_p() && jit_armv5e_p())
{
jit_word_t w, d, j0, j1;
jit_get_reg_args();
+ if (jit_fpr_p(r0) || jit_fpr_p(r1))
+ CHECK_SWF_OFFSET();
if (jit_fpr_p(r0))
swf_ldrin(_R0_REGNO, _FP_REGNO, swf_off(r0) + 8);
else
{
jit_word_t w, d, j0, j1;
jit_get_reg_args();
+ if (jit_fpr_p(r0) || jit_fpr_p(r1))
+ CHECK_SWF_OFFSET();
if (jit_fpr_p(r0)) {
if (!jit_thumb_p() && jit_armv5e_p())
LDRDIN(_R0_REGNO, _FP_REGNO, swf_off(r0) + 8);
jit_word_t w, d, j0, j1;
data.f = i1;
jit_get_reg_args();
+ if (jit_fpr_p(r0))
+ CHECK_SWF_OFFSET();
if (jit_fpr_p(r0))
swf_ldrin(_R0_REGNO, _FP_REGNO, swf_off(r0) + 8);
else
jit_float64_t d;
} data;
jit_get_reg_args();
+ if (jit_fpr_p(r0))
+ CHECK_SWF_OFFSET();
data.d = i1;
if (jit_fpr_p(r0)) {
if (!jit_thumb_p() && jit_armv5e_p())
_swf_extr_f(jit_state_t *_jit, jit_int32_t r0, jit_int32_t r1)
{
jit_get_reg_args();
+ if (jit_fpr_p(r0))
+ CHECK_SWF_OFFSET();
movr(_R0_REGNO, r1);
swf_call(__aeabi_i2f, i2f, _R1_REGNO);
if (jit_fpr_p(r0))
_swf_extr_d(jit_state_t *_jit, jit_int32_t r0, jit_int32_t r1)
{
jit_get_reg_args();
+ if (jit_fpr_p(r0))
+ CHECK_SWF_OFFSET();
movr(_R0_REGNO, r1);
swf_call(__aeabi_i2d, i2d, _R2_REGNO);
if (jit_fpr_p(r0)) {
_swf_extr_d_f(jit_state_t *_jit, jit_int32_t r0, jit_int32_t r1)
{
jit_get_reg_args();
+ if (jit_fpr_p(r0) || jit_fpr_p(r1))
+ CHECK_SWF_OFFSET();
if (jit_fpr_p(r1)) {
if (!jit_thumb_p() && jit_armv5e_p())
LDRDIN(_R0_REGNO, _FP_REGNO, swf_off(r1) + 8);
_swf_extr_f_d(jit_state_t *_jit, jit_int32_t r0, jit_int32_t r1)
{
jit_get_reg_args();
+ if (jit_fpr_p(r0) || jit_fpr_p(r1))
+ CHECK_SWF_OFFSET();
if (jit_fpr_p(r1))
swf_ldrin(_R0_REGNO, _FP_REGNO, swf_off(r1) + 8);
else
jit_word_t slow_not_nan;
#endif
jit_get_reg_args();
+ if (jit_fpr_p(r1))
+ CHECK_SWF_OFFSET();
if (jit_fpr_p(r1))
swf_ldrin(_R0_REGNO, _FP_REGNO, swf_off(r1) + 8);
else
jit_word_t slow_not_nan;
#endif
jit_get_reg_args();
+ if (jit_fpr_p(r1))
+ CHECK_SWF_OFFSET();
if (jit_fpr_p(r1)) {
if (!jit_thumb_p() && jit_armv5e_p())
LDRDIN(_R0_REGNO, _FP_REGNO, swf_off(r1) + 8);
{
jit_int32_t reg;
if (r0 != r1) {
+ if (jit_fpr_p(r0) || jit_fpr_p(r1))
+ CHECK_SWF_OFFSET();
if (jit_fpr_p(r1)) {
reg = jit_get_reg(jit_class_gpr);
swf_ldrin(rn(reg), _FP_REGNO, swf_off(r1) + 8);
{
jit_int32_t reg;
if (r0 != r1) {
+ if (jit_fpr_p(r0) || jit_fpr_p(r1))
+ CHECK_SWF_OFFSET();
if (jit_fpr_p(r1)) {
if (!jit_thumb_p() && jit_armv5e_p() &&
(reg = jit_get_reg_pair()) != JIT_NOREG) {
jit_float32_t f;
} data;
jit_int32_t reg;
+ if (jit_fpr_p(r0))
+ CHECK_SWF_OFFSET();
data.f = i0;
if (jit_fpr_p(r0)) {
reg = jit_get_reg(jit_class_gpr);
jit_int32_t i[2];
jit_float64_t d;
} data;
+ if (jit_fpr_p(r0))
+ CHECK_SWF_OFFSET();
data.d = i0;
if (jit_fpr_p(r0)) {
if (!jit_thumb_p() && jit_armv5e_p() &&
_swf_absr_f(jit_state_t *_jit, jit_int32_t r0, jit_int32_t r1)
{
jit_int32_t reg;
+ if (jit_fpr_p(r0) || jit_fpr_p(r1))
+ CHECK_SWF_OFFSET();
if (jit_fpr_p(r1)) {
reg = jit_get_reg(jit_class_gpr);
swf_ldrin(rn(reg), _FP_REGNO, swf_off(r1) + 8);
_swf_absr_d(jit_state_t *_jit, jit_int32_t r0, jit_int32_t r1)
{
jit_int32_t reg;
+ if (jit_fpr_p(r0) || jit_fpr_p(r1))
+ CHECK_SWF_OFFSET();
if (jit_fpr_p(r1)) {
if (jit_fpr_p(r0) && !jit_thumb_p() && jit_armv5e_p() &&
r0 != r1 && (reg = jit_get_reg_pair()) != JIT_NOREG) {
_swf_negr_f(jit_state_t *_jit, jit_int32_t r0, jit_int32_t r1)
{
jit_int32_t reg;
+ if (jit_fpr_p(r0) || jit_fpr_p(r1))
+ CHECK_SWF_OFFSET();
if (jit_fpr_p(r1)) {
reg = jit_get_reg(jit_class_gpr);
swf_ldrin(rn(reg), _FP_REGNO, swf_off(r1) + 8);
_swf_negr_d(jit_state_t *_jit, jit_int32_t r0, jit_int32_t r1)
{
jit_int32_t reg;
+ if (jit_fpr_p(r0) || jit_fpr_p(r1))
+ CHECK_SWF_OFFSET();
if (jit_fpr_p(r1)) {
if (jit_fpr_p(r0) && !jit_thumb_p() && jit_armv5e_p() &&
r0 != r1 && (reg = jit_get_reg_pair()) != JIT_NOREG) {
{
jit_int32_t reg;
if (jit_fpr_p(r0)) {
+ CHECK_SWF_OFFSET();
reg = jit_get_reg(jit_class_gpr);
ldxi_i(rn(reg), r1, 0);
swf_strin(rn(reg), _FP_REGNO, swf_off(r0) + 8);
{
jit_int32_t reg;
if (jit_fpr_p(r0)) {
+ CHECK_SWF_OFFSET();
if (!jit_thumb_p() && jit_armv5e_p() &&
(reg = jit_get_reg_pair()) != JIT_NOREG) {
LDRDI(rn(reg), r1, 0);
{
jit_int32_t reg;
if (jit_fpr_p(r0)) {
+ CHECK_SWF_OFFSET();
reg = jit_get_reg(jit_class_gpr);
ldi_i(rn(reg), i0);
swf_strin(rn(reg), _FP_REGNO, swf_off(r0) + 8);
_swf_ldi_d(jit_state_t *_jit, jit_int32_t r0, jit_word_t i0)
{
jit_int32_t rg0, rg1;
+ if (jit_fpr_p(r0))
+ CHECK_SWF_OFFSET();
if (jit_fpr_p(r0) && !jit_thumb_p() && jit_armv5e_p() &&
(rg0 = jit_get_reg_pair()) != JIT_NOREG) {
movi(rn(rg0), i0);
{
jit_int32_t reg;
if (jit_fpr_p(r0)) {
+ CHECK_SWF_OFFSET();
reg = jit_get_reg(jit_class_gpr);
ldxr_i(rn(reg), r1, r2);
swf_strin(rn(reg), _FP_REGNO, swf_off(r0) + 8);
{
jit_int32_t rg0, rg1;
if (jit_fpr_p(r0)) {
+ CHECK_SWF_OFFSET();
if (!jit_thumb_p() && jit_armv5e_p() &&
(rg0 = jit_get_reg_pair()) != JIT_NOREG) {
LDRD(rn(rg0), r1, r2);
_swf_ldxi_f(jit_state_t *_jit, jit_int32_t r0, jit_int32_t r1, jit_word_t i0)
{
jit_int32_t reg;
+ if (jit_fpr_p(r0))
+ CHECK_SWF_OFFSET();
if (jit_fpr_p(r0)) {
reg = jit_get_reg(jit_class_gpr);
ldxi_i(rn(reg), r1, i0);
{
jit_int32_t rg0, rg1;
if (jit_fpr_p(r0)) {
+ CHECK_SWF_OFFSET();
if (!jit_thumb_p() && jit_armv5e_p() &&
((i0 >= 0 && i0 <= 255) || (i0 < 0 && i0 >= -255)) &&
(rg0 = jit_get_reg_pair()) != JIT_NOREG) {
{
jit_int32_t reg;
if (jit_fpr_p(r1)) {
+ CHECK_SWF_OFFSET();
reg = jit_get_reg(jit_class_gpr);
swf_ldrin(rn(reg), _FP_REGNO, swf_off(r1) + 8);
stxi_i(0, r0, rn(reg));
{
jit_int32_t reg;
if (jit_fpr_p(r1)) {
+ CHECK_SWF_OFFSET();
if (!jit_thumb_p() && jit_armv5e_p() &&
(reg = jit_get_reg_pair()) != JIT_NOREG) {
LDRDIN(rn(reg), _FP_REGNO, swf_off(r1) + 8);
{
jit_int32_t reg;
if (jit_fpr_p(r0)) {
+ CHECK_SWF_OFFSET();
reg = jit_get_reg(jit_class_gpr);
swf_ldrin(rn(reg), _FP_REGNO, swf_off(r0) + 8);
sti_i(i0, rn(reg));
{
jit_int32_t rg0, rg1;
if (jit_fpr_p(r0)) {
+ CHECK_SWF_OFFSET();
if (!jit_thumb_p() && jit_armv5e_p() &&
(rg0 = jit_get_reg_pair()) != JIT_NOREG) {
rg1 = jit_get_reg(jit_class_gpr);
{
jit_int32_t reg;
if (jit_fpr_p(r2)) {
+ CHECK_SWF_OFFSET();
reg = jit_get_reg(jit_class_gpr);
swf_ldrin(rn(reg), _FP_REGNO, swf_off(r2) + 8);
stxr_i(r1, r0, rn(reg));
{
jit_int32_t rg0, rg1;
if (jit_fpr_p(r2)) {
+ CHECK_SWF_OFFSET();
if (!jit_thumb_p() && jit_armv5e_p() &&
(rg0 = jit_get_reg_pair()) != JIT_NOREG) {
LDRDIN(rn(rg0), _FP_REGNO, swf_off(r2) + 8);
{
jit_int32_t reg;
if (jit_fpr_p(r1)) {
+ CHECK_SWF_OFFSET();
reg = jit_get_reg(jit_class_gpr);
swf_ldrin(rn(reg), _FP_REGNO, swf_off(r1) + 8);
stxi_i(i0, r0, rn(reg));
{
jit_int32_t rg0, rg1;
if (jit_fpr_p(r1)) {
+ CHECK_SWF_OFFSET();
if (!jit_thumb_p() && jit_armv5e_p() &&
((i0 >= 0 && i0 <= 255) || (i0 < 0 && i0 >= -255)) &&
(rg0 = jit_get_reg_pair()) != JIT_NOREG) {