diff --git a/ChangeLog b/ChangeLog index 2b0974a03..978d8eeb6 100644 --- a/ChangeLog +++ b/ChangeLog @@ -1,3 +1,11 @@ +2008-03-21 Paolo Bonzini + + * lightning/i386/core-64.h: Fix jit_{ld,st}{,x}i_{i,l}. + Remove jit_ld{,x}i_ul. + * lightning/core-common.h: Make jit_ld{,x}{i,r}_ul + always a synonym of the _l variant. + * doc/porting.texi: Document this. + 2008-03-19 Paolo Bonzini * lightning/i386/core-64.h: Fix uses of jit_qop_. diff --git a/doc/porting.texi b/doc/porting.texi index 1cc2a1108..826cc98b4 100644 --- a/doc/porting.texi +++ b/doc/porting.texi @@ -1126,11 +1126,9 @@ operations: #define jit_ldr_s(d, rs) #define jit_ldi_uc(d, is) #define jit_ldi_ui(d, is) -#define jit_ldi_ul(d, is) #define jit_ldi_us(d, is) #define jit_ldr_uc(d, rs) #define jit_ldr_ui(d, rs) -#define jit_ldr_ul(d, rs) #define jit_ldr_us(d, rs) #define jit_sti_c(id, rs) #define jit_sti_i(id, rs) @@ -1213,9 +1211,13 @@ operations: #define jit_gti_p(d, rs, is) #define jit_gtr_p(d, s1, s2) #define jit_ldr_p(d, rs) +#define jit_ldr_ul(d, rs) #define jit_ldi_p(d, is) +#define jit_ldi_ul(d, is) #define jit_ldxi_p(d, rs, is) +#define jit_ldxi_ul(d, rs, is) #define jit_ldxr_p(d, s1, s2) +#define jit_ldxr_ul(d, s1, s2) #define jit_lei_p(d, rs, is) #define jit_ler_p(d, s1, s2) #define jit_lshi_ui(d, rs, is) @@ -1446,10 +1448,8 @@ operations: #define jit_ldr_ui(d, rs) #define jit_ldxi_l(d, rs, is) #define jit_ldxi_ui(d, rs, is) -#define jit_ldxi_ul(d, rs, is) #define jit_ldxr_l(d, s1, s2) #define jit_ldxr_ui(d, s1, s2) -#define jit_ldxr_ul(d, s1, s2) #define jit_lei_l(d, rs, is) #define jit_lei_ul(d, rs, is) #define jit_ler_l(d, s1, s2) diff --git a/lightning/core-common.h b/lightning/core-common.h index 0d61e2078..c9efa9d5f 100644 --- a/lightning/core-common.h +++ b/lightning/core-common.h @@ -365,6 +365,11 @@ typedef union jit_code { #define jit_ldxr_p(rd, s1, s2) jit_ldxr_l((rd), (s1), (s2)) #define jit_ldxi_p(rd, rs, is) jit_ldxi_l((rd), (rs), (is)) +#define jit_ldr_ul(d, rs) jit_ldr_l((d), (rs)) +#define jit_ldi_ul(d, is) jit_ldi_l((d), (is)) +#define jit_ldxr_ul(d, s1, s2) jit_ldxr_l((d), (s1), (s2)) +#define jit_ldxi_ul(d, rs, is) jit_ldxi_l((d), (rs), (is)) + /* Boolean & branch synonyms */ #define jit_eqr_ui(d, s1, s2) jit_eqr_i((d), (s1), (s2)) @@ -554,8 +559,6 @@ typedef union jit_code { #define jit_sti_l(d, is) jit_sti_i((d), (is)) #define jit_ldr_ui(d, rs) jit_ldr_i((d), (rs)) #define jit_ldi_ui(d, is) jit_ldi_i((d), (is)) -#define jit_ldr_ul(d, rs) jit_ldr_ui((d), (rs)) -#define jit_ldi_ul(d, is) jit_ldi_ui((d), (is)) #endif #define jit_ldxr_l(d, s1, s2) jit_ldxr_i((d), (s1), (s2)) @@ -564,8 +567,6 @@ typedef union jit_code { #define jit_stxi_l(d, rs, is) jit_stxi_i((d), (rs), (is)) #define jit_ldxr_ui(d, s1, s2) jit_ldxr_i((d), (s1), (s2)) #define jit_ldxi_ui(d, rs, is) jit_ldxi_i((d), (rs), (is)) -#define jit_ldxr_ul(d, s1, s2) jit_ldxr_ui((d), (s1), (s2)) -#define jit_ldxi_ul(d, rs, is) jit_ldxi_ui((d), (rs), (is)) /* Boolean */ diff --git a/lightning/i386/core-64.h b/lightning/i386/core-64.h index a3e34fd77..0c8808c26 100644 --- a/lightning/i386/core-64.h +++ b/lightning/i386/core-64.h @@ -221,20 +221,17 @@ static int jit_arg_reg_order[] = { _EDI, _ESI, _EDX, _ECX }; #define jit_ldi_ui(d, is) (_u32P((long)(is)) ? MOVLmr((is), 0, 0, 0, (d)) : (jit_movi_l(JIT_REXTMP, is), jit_ldr_ui(d, JIT_REXTMP))) #define jit_ldxi_ui(d, rs, is) (_u32P((long)(is)) ? MOVLmr((is), (rs), 0, 0, (d)) : (jit_movi_l(JIT_REXTMP, is), jit_ldxr_ui(d, rs, JIT_REXTMP))) -#define jit_ldi_i(d, is) (_u32P((long)(is)) ? MOVLmr((is), 0, 0, 0, (d)) : (jit_movi_l(JIT_REXTMP, is), jit_ldr_i(d, JIT_REXTMP))) -#define jit_ldxi_i(d, rs, is) (_u32P((long)(is)) ? MOVLmr((is), (rs), 0, 0, (d)) : (jit_movi_l(JIT_REXTMP, is), jit_ldxr_i(d, rs, JIT_REXTMP))) +#define jit_ldi_i(d, is) (_u32P((long)(is)) ? MOVSLQmr((is), 0, 0, 0, (d)) : (jit_movi_l(JIT_REXTMP, is), jit_ldr_i(d, JIT_REXTMP))) +#define jit_ldxi_i(d, rs, is) (_u32P((long)(is)) ? MOVSLQmr((is), (rs), 0, 0, (d)) : (jit_movi_l(JIT_REXTMP, is), jit_ldxr_i(d, rs, JIT_REXTMP))) #define jit_sti_i(id, rs) (_u32P((long)(id)) ? MOVLrm((rs), (id), 0, 0, 0) : (jit_movi_l(JIT_REXTMP, id), jit_str_i(JIT_REXTMP, rs))) #define jit_stxi_i(id, rd, rs) (_u32P((long)(id)) ? MOVLrm((rs), (id), (rd), 0, 0) : (jit_movi_l(JIT_REXTMP, id), jit_stxr_i(JIT_REXTMP, rd, rs))) -#define jit_ldi_ul(d, is) (_u32P((long)(is)) ? MOVLmr((is), 0, 0, 0, (d)) : (jit_movi_l(JIT_REXTMP, is), jit_ldr_ul(d, JIT_REXTMP))) -#define jit_ldxi_ul(d, rs, is) (_u32P((long)(is)) ? MOVLmr((is), (rs), 0, 0, (d)) : (jit_movi_l(JIT_REXTMP, is), jit_ldxr_ul(d, rs, JIT_REXTMP))) +#define jit_ldi_l(d, is) (_u32P((long)(is)) ? MOVQmr((is), 0, 0, 0, (d)) : (jit_movi_l(JIT_REXTMP, is), jit_ldr_l(d, JIT_REXTMP))) +#define jit_ldxi_l(d, rs, is) (_u32P((long)(is)) ? MOVQmr((is), (rs), 0, 0, (d)) : (jit_movi_l(JIT_REXTMP, is), jit_ldxr_l(d, rs, JIT_REXTMP))) -#define jit_ldi_l(d, is) (_u32P((long)(is)) ? MOVLmr((is), 0, 0, 0, (d)) : (jit_movi_l(JIT_REXTMP, is), jit_ldr_l(d, JIT_REXTMP))) -#define jit_ldxi_l(d, rs, is) (_u32P((long)(is)) ? MOVLmr((is), (rs), 0, 0, (d)) : (jit_movi_l(JIT_REXTMP, is), jit_ldxr_l(d, rs, JIT_REXTMP))) - -#define jit_sti_l(id, rs) (_u32P((long)(id)) ? MOVLrm((rs), (id), 0, 0, 0) : (jit_movi_l(JIT_REXTMP, id), jit_str_l(JIT_REXTMP, rs))) -#define jit_stxi_l(id, rd, rs) (_u32P((long)(id)) ? MOVLrm((rs), (id), (rd), 0, 0) : (jit_movi_l(JIT_REXTMP, id), jit_stxr_l(JIT_REXTMP, rd, rs))) +#define jit_sti_l(id, rs) (_u32P((long)(id)) ? MOVQrm((rs), (id), 0, 0, 0) : (jit_movi_l(JIT_REXTMP, id), jit_str_l(JIT_REXTMP, rs))) +#define jit_stxi_l(id, rd, rs) (_u32P((long)(id)) ? MOVQrm((rs), (id), (rd), 0, 0) : (jit_movi_l(JIT_REXTMP, id), jit_stxr_l(JIT_REXTMP, rd, rs))) #define jit_ldr_ui(d, rs) MOVLmr(0, (rs), 0, 0, (d)) #define jit_ldxr_ui(d, s1, s2) MOVLmr(0, (s1), (s2), 1, (d))