2004-07-23 zovarga <vargaz@freemail.hu>
+ * mini.h: Add new arch dependent function mono_arch_is_inst_imm.
+
+ * mini-ops.h: Add new opcodes.
+
+ * Makefile.am: Add AMD64 support.
+
* inssel.brg inssel-long32.brg inssel-long.brg: Move mul/div and shift
rules into the inssel-long*.brg files.
$(ICU_LIBS)
mono_LDFLAGS = \
- -export-dynamic
+ $(static_flags) -export-dynamic $(monoldflags)
genmdesc_SOURCES = \
mini.h \
exceptions-x86.c \
tramp-x86.c
+amd64_sources = \
+ mini-exceptions.c \
+ mini-amd64.c \
+ mini-amd64.h \
+ exceptions-amd64.c \
+ tramp-amd64.c
+
ppc_sources = \
mini-ppc.c \
mini-ppc.h \
arch_built=cpu-pentium.h
endif
+if AMD64
+libmono_la_SOURCES = \
+ $(common_sources) $(amd64_sources)
+arch_BURGSRC= $(srcdir)/inssel-long.brg $(srcdir)/inssel-amd64.brg
+arch_built=cpu-amd64.h
+endif
+
if POWERPC
libmono_la_SOURCES = \
$(common_sources) $(ppc_sources)
cpu-pentium.h: cpu-pentium.md genmdesc$(EXEEXT)
./genmdesc $(srcdir)/cpu-pentium.md cpu-pentium.h pentium_desc
+cpu-amd64.h: cpu-amd64.md genmdesc$(EXEEXT)
+ ./genmdesc $(srcdir)/cpu-amd64.md cpu-amd64.h amd64_desc
+
cpu-g4.h: cpu-g4.md genmdesc$(EXEEXT)
./genmdesc $(srcdir)/cpu-g4.md cpu-g4.h ppcg4
CLEANFILES= $(BUILT_SOURCES)
EXTRA_DIST = $(common_BURGSRC) jit-icalls.c cprop.c TestDriver.cs ldscript $(test_sources) \
+ propagated_relations_table.def build_relations_propagation_table.pl \
inssel-long.brg inssel-long32.brg \
$(x86_sources) inssel-x86.brg cpu-pentium.md \
+ $(amd64_sources) inssel-amd64.brg cpu-amd64.md \
$(ppc_sources) inssel-ppc.brg cpu-g4.md \
$(sparc_sources) inssel-sparc.brg cpu-sparc.md \
$(s390_sources) inssel-s390.brg cpu-s390.md
MINI_OP(OP_ARG, "arg")
MINI_OP(OP_ARGLIST, "oparglist")
MINI_OP(OP_OUTARG, "outarg")
+MINI_OP(OP_OUTARG_REG, "outarg_reg")
MINI_OP(OP_OUTARG_IMM, "outarg_imm")
MINI_OP(OP_OUTARG_R4, "outarg_r4")
MINI_OP(OP_OUTARG_R8, "outarg_r8")
MINI_OP(OP_IADD, "int_add")
MINI_OP(OP_ISUB, "int_sub")
MINI_OP(OP_IMUL, "int_mul")
+MINI_OP(OP_IMUL_OVF, "int_mul_ovf")
+MINI_OP(OP_IMUL_OVF_UN, "int_mul_ovf_un")
MINI_OP(OP_IDIV, "int_div")
MINI_OP(OP_IDIV_UN, "int_div_un")
MINI_OP(OP_IREM, "int_rem")
MINI_OP(OP_X86_ADD_MEMBASE, "x86_add_membase")
MINI_OP(OP_X86_SUB_MEMBASE, "x86_sub_membase")
MINI_OP(OP_X86_MUL_MEMBASE, "x86_mul_membase")
+
+MINI_OP(OP_AMD64_SET_XMMREG, "amd64_set_xmmreg")
+MINI_OP(OP_AMD64_OUTARG_XMMREG, "amd64_outarg_xmmreg")
+MINI_OP(OP_AMD64_ICOMPARE_MEMBASE_REG,"amd64_icompare_membase_reg")
+MINI_OP(OP_AMD64_ICOMPARE_MEMBASE_IMM,"amd64_icompare_membase_imm")
+MINI_OP(OP_AMD64_ICOMPARE_REG_MEMBASE,"amd64_icompare_reg_membase")
MINI_OP(OP_PPC_SUBFIC, "ppc_subfic")
MINI_OP(OP_PPC_SUBFZE, "ppc_subfze")
gboolean mono_arch_handle_exception (void *sigctx, gpointer obj, gboolean test_only);
gpointer mono_arch_ip_from_context (void *sigctx);
void mono_arch_flush_register_windows (void);
+gboolean mono_arch_is_inst_imm (gint64 imm);
/* Exception handling */
gboolean mono_handle_exception (MonoContext *ctx, gpointer obj,