mirror of
https://git.savannah.gnu.org/git/guile.git
synced 2025-06-29 06:20:30 +02:00
Implementation of new design
Documentation to come, as tests get added and things settle down.
This commit is contained in:
parent
0d81c5c337
commit
bad7e34c83
18 changed files with 4333 additions and 7149 deletions
|
@ -1,5 +1,5 @@
|
|||
/*
|
||||
* Copyright (C) 2012-2017 Free Software Foundation, Inc.
|
||||
* Copyright (C) 2012-2017, 2019 Free Software Foundation, Inc.
|
||||
*
|
||||
* This file is part of GNU lightning.
|
||||
*
|
||||
|
@ -510,21 +510,21 @@ static jit_word_t _movi_p(jit_state_t*,int32_t,jit_word_t);
|
|||
# define extr_ui(r0,r1) CLRLDI(r0,r1,32)
|
||||
# endif
|
||||
# if __BYTE_ORDER == __BIG_ENDIAN
|
||||
# define htonr_us(r0,r1) extr_us(r0,r1)
|
||||
# define bswapr_us(r0,r1) extr_us(r0,r1)
|
||||
# if __WORDSIZE == 32
|
||||
# define htonr_ui(r0,r1) movr(r0,r1)
|
||||
# define bswapr_ui(r0,r1) movr(r0,r1)
|
||||
# else
|
||||
# define htonr_ui(r0,r1) extr_ui(r0,r1)
|
||||
# define htonr_ul(r0,r1) movr(r0,r1)
|
||||
# define bswapr_ui(r0,r1) extr_ui(r0,r1)
|
||||
# define bswapr_ul(r0,r1) movr(r0,r1)
|
||||
# endif
|
||||
# else
|
||||
# define htonr_us(r0,r1) _htonr_us(_jit,r0,r1)
|
||||
static void _htonr_us(jit_state_t*,int32_t,int32_t);
|
||||
# define htonr_ui(r0,r1) _htonr_ui(_jit,r0,r1)
|
||||
static void _htonr_ui(jit_state_t*,int32_t,int32_t);
|
||||
# define bswapr_us(r0,r1) _bswapr_us(_jit,r0,r1)
|
||||
static void _bswapr_us(jit_state_t*,int32_t,int32_t);
|
||||
# define bswapr_ui(r0,r1) _bswapr_ui(_jit,r0,r1)
|
||||
static void _bswapr_ui(jit_state_t*,int32_t,int32_t);
|
||||
# if __WORDSIZE == 64
|
||||
# define htonr_ul(r0,r1) _htonr_ul(_jit,r0,r1)
|
||||
static void _htonr_ul(jit_state_t*,int32_t,int32_t);
|
||||
# define bswapr_ul(r0,r1) _bswapr_ul(_jit,r0,r1)
|
||||
static void _bswapr_ul(jit_state_t*,int32_t,int32_t);
|
||||
# endif
|
||||
# endif
|
||||
# define addr(r0,r1,r2) ADD(r0,r1,r2)
|
||||
|
@ -1121,7 +1121,7 @@ _movi_p(jit_state_t *_jit, int32_t r0, jit_word_t i0)
|
|||
|
||||
# if __BYTE_ORDER == __LITTLE_ENDIAN
|
||||
static void
|
||||
_htonr_us(jit_state_t *_jit, int32_t r0, int32_t r1)
|
||||
_bswapr_us(jit_state_t *_jit, int32_t r0, int32_t r1)
|
||||
{
|
||||
int32_t t0;
|
||||
t0 = jit_get_reg(jit_class_gpr);
|
||||
|
@ -1134,7 +1134,7 @@ _htonr_us(jit_state_t *_jit, int32_t r0, int32_t r1)
|
|||
}
|
||||
|
||||
static void
|
||||
_htonr_ui(jit_state_t *_jit, int32_t r0, int32_t r1)
|
||||
_bswapr_ui(jit_state_t *_jit, int32_t r0, int32_t r1)
|
||||
{
|
||||
int32_t reg;
|
||||
reg = jit_get_reg(jit_class_gpr);
|
||||
|
@ -1147,13 +1147,13 @@ _htonr_ui(jit_state_t *_jit, int32_t r0, int32_t r1)
|
|||
|
||||
# if __WORDSIZE == 64
|
||||
static void
|
||||
_htonr_ul(jit_state_t *_jit, int32_t r0, int32_t r1)
|
||||
_bswapr_ul(jit_state_t *_jit, int32_t r0, int32_t r1)
|
||||
{
|
||||
int32_t reg;
|
||||
reg = jit_get_reg(jit_class_gpr);
|
||||
rshi_u(rn(reg), r1, 32);
|
||||
htonr_ui(r0, r1);
|
||||
htonr_ui(rn(reg), rn(reg));
|
||||
bswapr_ui(r0, r1);
|
||||
bswapr_ui(rn(reg), rn(reg));
|
||||
lshi(r0, r0, 32);
|
||||
orr(r0, r0, rn(reg));
|
||||
jit_unget_reg(reg);
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue