hello,
I've added the following new ops to i386/core.jit:
    inc_i
    dec_i
    inc_i_ic
    dec_i_ic
    lt_i_ic_ic
    lt_i_i_ic
    gt_i_ic_ic
    gt_i_i_ic
    ge_i_ic_ic
    ge_i_i_ic
    le_i_ic_ic
    le_i_i_ic
    eq_i_ic_ic
    eq_i_i_ic

also fixed buggy definitions for emitm_cmpl_r_m and emitm_cmpl_m_r
in i386/jit_emit.h.

cheers,
Aldo

__END__
$_=q,just perl,,s, , another ,,s,$, hacker,,print;


Index: core.jit
===================================================================
RCS file: /cvs/public/parrot/jit/i386/core.jit,v
retrieving revision 1.17
diff -c -b -r1.17 core.jit
*** core.jit 20 May 2002 05:32:59 -0000 1.17
--- core.jit 22 May 2002 10:34:48 -0000
***************
*** 74,79 ****
--- 74,163 ----
      emit_jump(jit_info, *INT_CONST[1]);
  }

+ Parrot_inc_i {
+     emitm_movl_m_r(NATIVECODE, emit_EAX, emit_None, emit_None, emit_None,
&INT_REG[1]);
+     emitm_addl_i_r(NATIVECODE, 1, emit_EAX);
+     emitm_movl_r_m(NATIVECODE, emit_EAX, emit_None, emit_None, emit_None,
&INT_REG[1])
+ }
+
+ Parrot_dec_i {
+     emitm_movl_m_r(NATIVECODE, emit_EAX, emit_None, emit_None, emit_None,
&INT_REG[1]);
+     emitm_subl_i_r(NATIVECODE, 1, emit_EAX);
+     emitm_movl_r_m(NATIVECODE, emit_EAX, emit_None, emit_None, emit_None,
&INT_REG[1])
+ }
+
+ Parrot_inc_i_ic {
+     emitm_movl_m_r(NATIVECODE, emit_EAX, emit_None, emit_None, emit_None,
&INT_REG[1]);
+     emitm_addl_i_r(NATIVECODE, *INT_CONST[2], emit_EAX);
+     emitm_movl_r_m(NATIVECODE, emit_EAX, emit_None, emit_None, emit_None,
&INT_REG[1])
+ }
+
+ Parrot_dec_i_ic {
+     emitm_movl_m_r(NATIVECODE, emit_EAX, emit_None, emit_None, emit_None,
&INT_REG[1]);
+     emitm_subl_i_r(NATIVECODE, *INT_CONST[2], emit_EAX);
+     emitm_movl_r_m(NATIVECODE, emit_EAX, emit_None, emit_None, emit_None,
&INT_REG[1])
+ }
+
+ Parrot_lt_i_ic_ic {
+     emitm_movl_m_r(NATIVECODE, emit_EAX, emit_None, emit_None, emit_None,
&INT_REG[1]);
+     emitm_cmpl_i_r(NATIVECODE, *INT_CONST[2], emit_EAX);
+     emit_jcc(jit_info, emitm_jl, *INT_CONST[3]);
+ }
+
+ Parrot_lt_i_i_ic {
+     emitm_movl_m_r(NATIVECODE, emit_EAX, emit_None, emit_None, emit_None,
&INT_REG[1]);
+     emitm_cmpl_r_m(NATIVECODE, emit_EAX, emit_None, emit_None, emit_None,
&INT_REG[2]);
+     emit_jcc(jit_info, emitm_jl, *INT_CONST[3]);
+ }
+
+ Parrot_gt_i_ic_ic {
+     emitm_movl_m_r(NATIVECODE, emit_EAX, emit_None, emit_None, emit_None,
&INT_REG[1]);
+     emitm_cmpl_i_r(NATIVECODE, *INT_CONST[2], emit_EAX);
+     emit_jcc(jit_info, emitm_jg, *INT_CONST[3]);
+ }
+
+ Parrot_gt_i_i_ic {
+     emitm_movl_m_r(NATIVECODE, emit_EAX, emit_None, emit_None, emit_None,
&INT_REG[1]);
+     emitm_cmpl_r_m(NATIVECODE, emit_EAX, emit_None, emit_None, emit_None,
&INT_REG[2]);
+     emit_jcc(jit_info, emitm_jg, *INT_CONST[3]);
+ }
+
+ Parrot_ge_i_ic_ic {
+     emitm_movl_m_r(NATIVECODE, emit_EAX, emit_None, emit_None, emit_None,
&INT_REG[1]);
+     emitm_cmpl_i_r(NATIVECODE, *INT_CONST[2], emit_EAX);
+     emit_jcc(jit_info, emitm_jnl, *INT_CONST[3]);
+ }
+
+ Parrot_ge_i_i_ic {
+     emitm_movl_m_r(NATIVECODE, emit_EAX, emit_None, emit_None, emit_None,
&INT_REG[1]);
+     emitm_cmpl_r_m(NATIVECODE, emit_EAX, emit_None, emit_None, emit_None,
&INT_REG[2]);
+     emit_jcc(jit_info, emitm_jnl, *INT_CONST[3]);
+ }
+
+ Parrot_le_i_ic_ic {
+     emitm_movl_m_r(NATIVECODE, emit_EAX, emit_None, emit_None, emit_None,
&INT_REG[1]);
+     emitm_cmpl_i_r(NATIVECODE, *INT_CONST[2], emit_EAX);
+     emit_jcc(jit_info, emitm_jle, *INT_CONST[3]);
+ }
+
+ Parrot_le_i_i_ic {
+     emitm_movl_m_r(NATIVECODE, emit_EAX, emit_None, emit_None, emit_None,
&INT_REG[1]);
+     emitm_cmpl_r_m(NATIVECODE, emit_EAX, emit_None, emit_None, emit_None,
&INT_REG[2]);
+     emit_jcc(jit_info, emitm_jle, *INT_CONST[3]);
+ }
+
+ Parrot_eq_i_ic_ic {
+     emitm_movl_m_r(NATIVECODE, emit_EAX, emit_None, emit_None, emit_None,
&INT_REG[1]);
+     emitm_cmpl_i_r(NATIVECODE, *INT_CONST[2], emit_EAX);
+     emit_jcc(jit_info, emitm_je, *INT_CONST[3]);
+ }
+
+ Parrot_eq_i_i_ic {
+     emitm_movl_m_r(NATIVECODE, emit_EAX, emit_None, emit_None, emit_None,
&INT_REG[1]);
+     emitm_cmpl_r_m(NATIVECODE, emit_EAX, emit_None, emit_None, emit_None,
&INT_REG[2]);
+     emit_jcc(jit_info, emitm_je, *INT_CONST[3]);
+ }
+
  /*
   * Local variables:
   * c-indentation-style: bsd
Index: jit_emit.h
===================================================================
RCS file: /cvs/public/parrot/jit/i386/jit_emit.h,v
retrieving revision 1.1
diff -c -b -r1.1 jit_emit.h
*** jit_emit.h 20 May 2002 05:32:59 -0000 1.1
--- jit_emit.h 22 May 2002 10:34:49 -0000
***************
*** 393,400 ****

  /* Integer comparisions */
  #define emitm_cmpl_r_r(pc, reg1, reg2) emitm_alul_r_r(pc, 0x39, reg1,
reg2)
! #define emitm_cmpl_r_m(pc, reg, b, i, s, d) emitm_alul_r_m(pc, 0x3b, reg1,
reg2, b, i, s, d)
! #define emitm_cmpl_m_r(pc, reg, b, i, s, d) emitm_alul_r_m(pc, 0x39, reg1,
reg2, b, i, s, d)

  #define emitm_cmpl_i_r(pc, imm, reg) emitm_alul_i_r(pc, 0x81, emit_b111,
imm, reg)

--- 393,400 ----

  /* Integer comparisions */
  #define emitm_cmpl_r_r(pc, reg1, reg2) emitm_alul_r_r(pc, 0x39, reg1,
reg2)
! #define emitm_cmpl_r_m(pc, reg, b, i, s, d) emitm_alul_r_m(pc, 0x3b, reg,
b, i, s, d)
! #define emitm_cmpl_m_r(pc, reg, b, i, s, d) emitm_alul_r_m(pc, 0x39, reg,
b, i, s, d)

  #define emitm_cmpl_i_r(pc, imm, reg) emitm_alul_i_r(pc, 0x81, emit_b111,
imm, reg)


Reply via email to