mirror of
https://git.savannah.gnu.org/git/guile.git
synced 2025-06-24 20:30:28 +02:00
Correct remaining test cases, but not yet ones with stack arguments.
lib/jit_ia64-cpu.c: Correct immediate range check of integer comparisons when inverting arguments. Correct gei_u that was not decrementing immediate when inverting arguments. Correct b?add* and b?sub* that were not properly updating the result register.
This commit is contained in:
parent
119ea1e97d
commit
cee4ccb7d4
2 changed files with 24 additions and 14 deletions
10
ChangeLog
10
ChangeLog
|
@ -1,3 +1,13 @@
|
|||
2013-04-27 Paulo Andrade <pcpa@gnu.org>
|
||||
|
||||
lib/jit_ia64-cpu.c:
|
||||
Correct immediate range check of integer comparisons when
|
||||
inverting arguments.
|
||||
Correct gei_u that was not decrementing immediate when
|
||||
inverting arguments.
|
||||
Correct b?add* and b?sub* that were not properly updating
|
||||
the result register.
|
||||
|
||||
2013-04-27 Paulo Andrade <pcpa@gnu.org>
|
||||
|
||||
* lib/jit_ia64-cpu.c: Correct wrong mapping of 2 instructions
|
||||
|
|
|
@ -3844,7 +3844,7 @@ static void
|
|||
_lti(jit_state_t *_jit, jit_int32_t r0, jit_int32_t r1, jit_word_t i0)
|
||||
{
|
||||
jit_int32_t reg;
|
||||
if (i0 >= -128 && i0 <= 127)
|
||||
if (i0 >= -127 && i0 <= 128)
|
||||
CMPI_LT(PR_7, PR_6, i0 - 1, r1);
|
||||
else {
|
||||
reg = jit_get_reg(jit_class_gpr);
|
||||
|
@ -3868,7 +3868,7 @@ static void
|
|||
_lti_u(jit_state_t *_jit, jit_int32_t r0, jit_int32_t r1, jit_word_t i0)
|
||||
{
|
||||
jit_int32_t reg;
|
||||
if (i0 >= -128 && i0 <= 127)
|
||||
if (i0 >= -127 && i0 <= 128)
|
||||
CMPI_LTU(PR_7, PR_6, i0 - 1, r1);
|
||||
else {
|
||||
reg = jit_get_reg(jit_class_gpr);
|
||||
|
@ -3952,7 +3952,7 @@ static void
|
|||
_gei(jit_state_t *_jit, jit_int32_t r0, jit_int32_t r1, jit_word_t i0)
|
||||
{
|
||||
jit_int32_t reg;
|
||||
if (i0 >= -128 && i0 <= 127)
|
||||
if (i0 >= -127 && i0 <= 128)
|
||||
CMPI_LT(PR_7, PR_6, i0 - 1, r1);
|
||||
else {
|
||||
reg = jit_get_reg(jit_class_gpr);
|
||||
|
@ -3976,8 +3976,8 @@ static void
|
|||
_gei_u(jit_state_t *_jit, jit_int32_t r0, jit_int32_t r1, jit_word_t i0)
|
||||
{
|
||||
jit_int32_t reg;
|
||||
if (i0 >= -128 && i0 <= 127)
|
||||
CMPI_LTU(PR_7, PR_6, i0, r1);
|
||||
if (i0 >= -127 && i0 <= 128)
|
||||
CMPI_LTU(PR_7, PR_6, i0 - 1, r1);
|
||||
else {
|
||||
reg = jit_get_reg(jit_class_gpr);
|
||||
movi(rn(reg), i0);
|
||||
|
@ -4415,7 +4415,7 @@ _blti(jit_state_t *_jit, jit_word_t i0, jit_int32_t r0, jit_word_t i1)
|
|||
{
|
||||
jit_word_t w;
|
||||
jit_int32_t reg;
|
||||
if (i1 >= -128 && i1 <= 127)
|
||||
if (i1 >= -127 && i1 <= 128)
|
||||
CMPI_LT(PR_7, PR_6, i1 - 1, r0);
|
||||
else {
|
||||
reg = jit_get_reg(jit_class_gpr);
|
||||
|
@ -4445,7 +4445,7 @@ _blti_u(jit_state_t *_jit, jit_word_t i0, jit_int32_t r0, jit_word_t i1)
|
|||
{
|
||||
jit_word_t w;
|
||||
jit_int32_t reg;
|
||||
if (i1 >= -128 && i1 <= 127)
|
||||
if (i1 >= -127 && i1 <= 128)
|
||||
CMPI_LTU(PR_7, PR_6, i1 - 1, r0);
|
||||
else {
|
||||
reg = jit_get_reg(jit_class_gpr);
|
||||
|
@ -4551,7 +4551,7 @@ _bgei(jit_state_t *_jit, jit_word_t i0, jit_int32_t r0, jit_word_t i1)
|
|||
{
|
||||
jit_word_t w;
|
||||
jit_int32_t reg;
|
||||
if (i1 >= -128 && i1 <= 127)
|
||||
if (i1 >= -127 && i1 <= 128)
|
||||
CMPI_LT(PR_7, PR_6, i1 - 1, r0);
|
||||
else {
|
||||
reg = jit_get_reg(jit_class_gpr);
|
||||
|
@ -4581,7 +4581,7 @@ _bgei_u(jit_state_t *_jit, jit_word_t i0, jit_int32_t r0, jit_word_t i1)
|
|||
{
|
||||
jit_word_t w;
|
||||
jit_int32_t reg;
|
||||
if (i1 >= -128 && i1 <= 127)
|
||||
if (i1 >= -127 && i1 <= 128)
|
||||
CMPI_LTU(PR_7, PR_6, i1 - 1, r0);
|
||||
else {
|
||||
reg = jit_get_reg(jit_class_gpr);
|
||||
|
@ -4750,9 +4750,9 @@ _baddr(jit_state_t *_jit, jit_word_t i0, jit_int32_t r0, jit_int32_t r1,
|
|||
ltr(rn(t2), rn(t1), r0); /* t2 = t1 < r0 */
|
||||
ltr(rn(t1), r0, rn(t1)); /* t1 = r0 < t1 */
|
||||
CMPI_EQ(PR_6, PR_7, 0, rn(t0));
|
||||
CMPI_EQ_p(PR_8, PR_9, 0, rn(t2), PR_6);/* if (t0==0) p4=t2==0,p5=t2!=0; */
|
||||
CMPI_EQ_p(PR_8, PR_9, 0, rn(t2), PR_7);/* if (t0!=0) p4=t1==0,p5=t1!=0; */
|
||||
MOV(r0, rn(t0));
|
||||
CMPI_EQ_p(PR_8, PR_9, 0, rn(t2), PR_6);/* if (t0==0) p8=t2==0,p9=t2!=0; */
|
||||
CMPI_EQ_p(PR_8, PR_9, 0, rn(t1), PR_7);/* if (t0!=0) p8=t1==0,p9=t1!=0; */
|
||||
addr(r0, r0, r1);
|
||||
sync();
|
||||
w = _jit->pc.w;
|
||||
BRI_COND((i0 - w) >> 4, carry ? PR_9 : PR_8);
|
||||
|
@ -4827,8 +4827,8 @@ _bsubr(jit_state_t *_jit, jit_word_t i0, jit_int32_t r0, jit_int32_t r1,
|
|||
ltr(rn(t1), r0, rn(t1)); /* t1 = r0 < t1 */
|
||||
CMPI_EQ(PR_6, PR_7, 0, rn(t0));
|
||||
CMPI_EQ_p(PR_8, PR_9, 0, rn(t2), PR_6);/* if (t0==0) p4=t2==0,p5=t2!=0; */
|
||||
CMPI_EQ_p(PR_8, PR_9, 0, rn(t2), PR_7);/* if (t0!=0) p4=t1==0,p5=t1!=0; */
|
||||
MOV(r0, rn(t0));
|
||||
CMPI_EQ_p(PR_8, PR_9, 0, rn(t1), PR_7);/* if (t0!=0) p4=t1==0,p5=t1!=0; */
|
||||
subr(r0, r0, r1);
|
||||
sync();
|
||||
w = _jit->pc.w;
|
||||
BRI_COND((i0 - w) >> 4, carry ? PR_9 : PR_8);
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue