2008-12-08 Rodrigo Kumpera <rkumpera@novell.com>
[mono.git] / mono / mini / ChangeLog
index 34b8ba4ac3d1bf03f5a3465691a08792a67ec912..b555658a0ccb7f295a4bfb6a51554442e39232fc 100644 (file)
@@ -1,3 +1,476 @@
+2008-12-08  Rodrigo Kumpera  <rkumpera@novell.com>
+
+       * basic-simd.cs: Fix method names for Vector2l.
+
+2008-12-08  Rodrigo Kumpera  <rkumpera@novell.com>
+
+       * basic-simd.cs: Fix method names for Vector2d.
+
+2008-12-08  Rodrigo Kumpera  <rkumpera@novell.com>
+
+       * simd-intrinsics.c (mono_emit_simd_intrinsics): Add support for intrinsics
+       that are extension methods.
+
+2008-12-08  Rodrigo Kumpera  <rkumpera@novell.com>
+
+       * basic-simd.cs: Fix method names for Vector4f.
+
+2008-12-08  Zoltan Varga  <vargaz@gmail.com>
+
+       * mini-exceptions.c (mono_print_thread_dump): Mark threadpool threads
+       as such. Fixes #456669.
+
+2008-12-07  Mark Mason   <mmason@upwardaccess.com>
+
+       * mini-mips.c (mono_arch_emit_call): narrow float arguments when passing as args.
+       
+2008-12-07  Mark Mason   <mmason@upwardaccess.com>
+
+       * mini-mips.c (mono_arch_lowering_pass): don't handle OP_ICONV_TO_R* or OP_R*CONST
+       (mono_arch_emit_setret): use OP_MIPS_CVTSD to return SP floats
+       (mono_arch_output_basic_block): simplify FP load/store, handle OP_MIPS_FBLT_UN
+       (mips_adjust_stackframe): handle FP spills
+               
+       * mini-ops.h: add mips_mtc1_s2
+       
+       * cpu-mips.md: add mips_mtc1_s2
+       
+2008-12-07  Zoltan Varga  <vargaz@gmail.com>
+
+       * unwind.c: New file, move the unwind info encoding functions here from
+       aot-compiler.c, so they could be used at runtime too.
+
+2008-12-05  Mark Mason   <mmason@upwardaccess.com>
+
+       * mini-mips.c (mono_arch_lowering_pass): handle OP_IMUL_IMM as well
+       (mono_arch_output_basic_block): fix OP_LOCALLOC code generation
+       
+2008-12-05  Mark Mason   <mmason@upwardaccess.com>
+
+       * mini-mips.c: cleanup warnings
+       (mono_arch_lowering_pass): handle OP_LOCALLOC_IMM
+       (mips_adjust_stackframe): handle case of taking the address of stack locals
+       
+2008-12-05  Zoltan Varga  <vargaz@gmail.com>
+
+       * aot-compiler.c: Implement a few functions missing from the asm writer.
+       (emit_method_code): Only write symbols for methods when using the bin
+       writer, since the assembler can't deal with the characters in our method
+       names.
+
+       * aot-compiler.c (is_plt_patch): ICALL_ADDR is also a plt patch.
+
+       * method-to-ir.c (mono_method_to_ir): Transform aotconst+calli into a direct
+       call.
+
+       * tramp-amd64.c (mono_arch_create_trampoline_code_full): Rework the code
+       a bit to also restore %rax.
+
+2008-12-05  Mark Probst  <mark.probst@gmail.com>
+
+       * mini-ppc.c: Some simple merges from mini-ppc64.c.
+
+2008-12-05  Zoltan Varga  <vargaz@gmail.com>
+
+       * ssa.c (mono_ssa_compute): Only add an implicit reference at start for
+       arguments.
+
+2008-12-05  Mark Probst  <mark.probst@gmail.com>
+
+       * exceptions-ppc.c: Merged with exceptions-ppc64.c.
+
+       * mini-ppc.c, mini-ppc.h: Remove PPC_STACK_ALIGNMENT and use
+       MONO_ARCH_FRAME_ALIGNMENT.  Struct for PPC64 function descriptors.
+
+       * exceptions-ppc64.c: Removed.
+
+       * Makefile.am: Use exceptions-ppc.c instead of exceptions-ppc64.c.
+
+2008-12-05  Mark Probst  <mark.probst@gmail.com>
+
+       * tramp-ppc.c, mini-ppc.c, mini-ppc.h: Merged tramp-ppc.c with
+       tramp-ppc64.c.
+
+       * Makefile.am: Use tramp-ppc.c instead of tramp-ppc64.c.
+
+       * tramp-ppc64.c: Removed.
+
+2008-12-05  Zoltan Varga  <vargaz@gmail.com>
+
+       * aot-compiler.c (add_generic_instances): Skip non-generic classes in
+       the TYPESPEC table.
+
+2008-12-05  Mark Probst  <mark.probst@gmail.com>
+
+       * mini-ppc.h: Merged mini-ppc64.h with mini-ppc.h.
+
+       * exceptions-ppc64.c, tramp-ppc64.c, mini-arch.h, Makefile.am: Use
+       mini-ppc.h instead of mini-ppc64.h.
+
+       * mini-ppc64.h: Removed.
+
+2008-12-04  Mark Mason   <mmason@upwardaccess.com>
+
+       * mini-mips.c: introduce USE_LDC_SDC: use ldc1/sdc1 to load/store doubles, disabled by default
+       
+       * mini-mips.c (mono_arch_emit_outarg_vt): fix offset calculation for memcpy in structure passing.
+       
+2008-12-05  Mark Probst  <mark.probst@gmail.com>
+
+       * mini-ppc64.c, mini-ppc64.h, exceptions-ppc64.c, tramp-ppc64.c:
+       Removed FIRST/LAST_[GF]REG macros, to make merging PPC64 with PPC
+       code easier.
+
+2008-12-05  Rodrigo Kumpera  <rkumpera@novell.com>
+
+       * basic-simd.cs: Tests for operator == and != on  Vector8us and Vector16b.
+
+2008-12-05  Rodrigo Kumpera  <rkumpera@novell.com>
+
+       * simd-intrinsics.c: Add support for operator == and != to Vector8(u)s and Vector16(s)b.
+
+2008-12-05  Rodrigo Kumpera  <rkumpera@novell.com>
+
+       * basic-simd.cs: Tests for operator == and != on Vector4f.
+
+2008-12-05  Rodrigo Kumpera  <rkumpera@novell.com>
+
+       * simd-intrinsics.c (simd_intrinsic_emit_equality): Adapt to support Vector4f.
+
+       * simd-intrinsics.c: Kill useless enum.
+
+2008-12-04  Mark Mason   <mmason@upwardaccess.com>
+
+       * cpu-mips.md: add long_conv_to_ovf_i4_2
+       * mini-mips.c: update/add various _OVF_ opcodes to fix test failures
+
+2008-12-04  Mark Mason   <mmason@upwardaccess.com>
+
+       * mini-mips.c: ifdef protect automatic promotions of R4 to R8.
+       
+       * mini-mips.c (mono_arch_emit_setret): handle R4 case with FCONV_TO_R4 instead of FMOVE
+
+2008-12-04  Mark Mason   <mmason@upwardaccess.com>
+
+       * mini-mips.c (mono_arch_output_basic_block): fix codegen for OP_OR_IMM/OP_IOR_IMM
+       
+2008-12-04  Rodrigo Kumpera  <rkumpera@novell.com>
+
+       * basic-simd.cs: Add tests for new methods.
+
+2008-12-04  Rodrigo Kumpera  <rkumpera@novell.com>
+
+       * simd-intrinsics.c: Add support for operator == and !=
+       on Vector4(u)i.
+
+       * simd-methods.h: Add SN_op_Inequality and SN_op_Equality.
+
+2008-12-04  Rodrigo Kumpera  <rkumpera@novell.com>
+
+       * simd-intrinsics.c: Remove ExtractByteMask intrinsics.
+
+2008-12-04  Zoltan Varga  <vargaz@gmail.com>
+
+       * aot-compiler.c (add_wrappers): Add pinvoke wrappers.
+
+       * mini.c (mono_resolve_patch_target): Allow pinvoke methods in 
+       MONO_PATCH_INFO_ICALL_ADDR.
+
+       * aot-runtime.c (MonoAotFileInfo): Correct order of fields.
+
+       * aot-compiler.c: Resurrect full-aot support.
+
+2008-12-04  Mark Mason   <mmason@upwardaccess.com>
+
+       * mini-mips.c (mono_arch_lowering_pass): handle OP_COMPARE and OP_ICOMPARE
+       
+2008-12-04  Mark Mason   <mmason@upwardaccess.com>
+
+       * mini-mips.c (mono_arch_output_basic_block): fix OP_IREM_UN code generation
+       
+2008-12-03  Rodrigo Kumpera  <rkumpera@novell.com>
+
+       * basic-simd.cs: Fix tests to work under ppc.
+       Remove tests for methods that will be removed.
+
+2008-12-03  Mark Probst  <mark.probst@gmail.com>
+
+       * method-to-ir.c (mono_method_to_ir): Handle ldtoken of an open
+       generic type (via a typedef or typeref) correctly.
+
+2008-12-03  Zoltan Varga  <vargaz@gmail.com>
+
+       * mini-trampolines.c (mono_magic_trampoline): Add some debugging code to help
+       diagnose an assertion failure.
+
+2008-12-02  Mark Probst  <mark.probst@gmail.com>
+
+       * tramp-ppc64.c (mono_arch_create_rgctx_lazy_fetch_trampoline):
+       Fix trampoline size.
+
+       * mini-ppc64.c, mini-ppc64.h, cpu-ppc64.md: A few floating point
+       conversion opcodes are implemented natively instead via emulation.
+
+2008-12-01  Mark Mason   <mmason@upwardaccess.com>
+
+       * cpu-mips.md: remove mips_xori
+
+       * mini-ops.h:  remove mips_xori
+
+       * mini-mips.h: replace OP_MIPS_XORI with OP_IXOR
+
+       * mini-mips.c (mono_arch_decompose_long_opts): Add ladd_imm, lsub, lsub_imm, lneg, lsub_ovf, lsub_ovf_un.
+       
+       * mini-mips.c (mono_arch_lowering_pass, mono_arch_output_basic_block): fix IXOR handling
+       
+2008-12-01  Mark Mason   <mmason@upwardaccess.com>
+
+       * cpu-mips.md: fix instruction lengths.
+
+       * mini-mips.h: define MONO_ARCH_NO_IOV_CHECK
+
+       * mini-mips.c: move most instruction rewriting into decompose_ops. Implement conditional branches and exceptions. Fix jump table patch handling. Implement add/sub OVF.
+
+       * mini-ops.h: fix slti / sltiu op profiles.
+       
+2008-12-02  Martin Baulig  <martin@ximian.com>
+
+       * method-to-ir.c (mono_method_to_ir): Disable debugging
+       information for the init locals block to make the debugger stop
+       after all locals have been initalized.
+
+2008-12-02  Martin Baulig  <martin@ximian.com>
+
+       * mini.c (mini_method_compile): Disable MONO_OPT_DEADCE when
+       running inside the debugger.
+
+2008-12-01  Zoltan Varga  <vargaz@gmail.com>
+
+       * mini.c (mini_method_compile): Only run local deadce if MONO_OPT_DEADCE
+       is enabled.
+
+       * method-to-ir.c (mono_method_to_ir): Fix invalid code generated by the 
+       alu->alu imm optimization which only shows if deadce is disabled.
+
+       * aot-compiler.c: Rename the function names for the binary and asm writers
+       so they can coexist in the same process. Rework the xdebug code to use the
+       asm writer. This avoids the need to call into the runtime to dump the
+       debugging info. Add more debugging info for types.
+
+       * mini-<ARCH>.h: Kill MONO_ARCH_HAVE_NORMALIZE_OPCODES define.
+
+       * genmdesc.c genmdesc.pl mini.h: Don't put the CEE_ opcodes into the
+       cpu description tables, they can't occur in cpu-<ARCH>.md.
+
+       * method-to-ir.c (mono_method_to_ir): Set the type of the value pushed on
+       the stack in CEE_LDFLDA. Fixes #450542.
+
+       * generics.cs: Add a new test.
+
+2008-12-01  Mark Mason   <mmason@upwardaccess.com>
+
+       * mini-ops.h: updated MIPS opcodes
+       * mini-mips.c: decompose long opts
+       * mini-mips.h: decompose long opts
+       
+2008-11-29  Mark Mason   <mmason@upwardaccess.com>
+
+       * cpu-mips.md: fix length on int_rem_un
+       * mini-mips.c (mips_stackframe_adjust): fix insertion of spillvars region in MIPS stackframes.
+       
+2008-11-29  Zoltan Varga  <vargaz@gmail.com>
+
+       * mini.h aot-runtime.c: Fix building with DISABLE_AOT.
+
+       * mini-codegen.c (mono_print_ins_index): Handle OP_VOIDCALL_MEMBASE.
+
+2008-11-29  Martin Baulig  <martin@ximian.com>
+
+       * mini-exceptions.c (mono_handle_native_sigsegv): Check
+       mono_debug_using_mono_debugger() in addition to the
+       `no_gdb_backtrace' flag in the `MonoDebugOptions'.
+
+2008-11-28  Mark Mason   <mmason@upwardaccess.com>
+
+       * mini-ops.h: updated more MIPS opcodes
+       * mini-mips.c: FP compare/branch working again, clean up last of CEE_ -> OP_ mappings
+       * cpu-mips.md: Added MIPS versions of new FP compare/branch opcodes.
+       
+2008-11-28  Mark Probst  <mark.probst@gmail.com>
+
+       * mini-ppc64.c: Patch the RGCTX fetch trampoline correctly.
+
+2008-11-28  Mark Mason   <mmason@upwardaccess.com>
+
+       * mini-mips.c (mono_arch_emit_call): adding missing conversion to fp single when passing in integer arg register.
+       * mini-mips.c (mips_adjust_stackframe): compensate for spill-down logic.
+       * mini-ops.h: correct selected mips opcode entries
+       
+2008-11-28  Mark Probst  <mark.probst@gmail.com>
+
+       * mini-ppc64.c, mini-ppc64.h: Enable generalized IMT thunks and
+       make them work.
+
+2008-11-28  Mark Probst  <mark.probst@gmail.com>
+
+       * mini-ppc64.h, tramp-ppc64.c: Make generic code sharing work.
+
+2008-11-28  Mark Mason   <mmason@upwardaccess.com>
+
+       * method-to-ir.c, mini-trampolines.c: protect IMG code with #ifdef MONO_ARCH_HAVE_IMT to fix compile errors.
+       * mini-mips.c: Fixup stackframe assignments after allocation of spillvars.
+       * mini-mips.h: disable IMT
+       * tramp-mips.c (mono_arch_get_vcall_slot): fix offset extraction
+       
+2008-11-28  Mark Probst  <mark.probst@gmail.com>
+
+       * mini-ppc64.c, mini-ppc64.h: Don't emulate long ops.
+
+2008-11-28  Mark Probst  <mark.probst@gmail.com>
+
+       * mini-ppc64.c, exceptions-ppc64.c: Several fixes.
+
+2008-11-28  Zoltan Varga  <vargaz@gmail.com>
+
+       * method-to-ir.c (handle_isinst): Use PCONST instead of ICONST for
+       consistency.
+
+2008-11-27  Rodrigo Kumpera  <rkumpera@novell.com>
+
+       * simd-intrinsics.c (emit_array_extension_intrinsics): Add support
+       for Set/GetVector aligned versions.
+
+2008-11-27  Rodrigo Kumpera  <rkumpera@novell.com>
+
+       * basic-simd.cs: Add tests for Get/SetVector.
+
+2008-11-27  Mark Probst  <mark.probst@gmail.com>
+
+       * mini.c: Removed g_slist_append_mempool().  Now in
+       metadata/mempool.c.
+
+2008-11-27  Rodrigo Kumpera  <rkumpera@novell.com>
+
+       * simd-intrinsics.c (mono_emit_vector_ldelema): Extract the element
+       size properly and make the bounds check optional.
+
+       * simd-intrinsics.c (emit_array_extension_intrinsics): Add support
+       for SetVector and IsAligned.
+
+2008-11-27  Zoltan Varga  <vargaz@gmail.com>
+
+       * mini.c: Remove unused mono_normalize_opcodes () function.
+
+2008-11-26  Mark Probst  <mark.probst@gmail.com>
+
+       * method-to-ir.c (mini_emit_inst_for_method): Small fix: we're
+       using the new atomic add ops now.
+
+       * mini-ppc64.c, mini-ppc64.h, cpu-ppc64.md: Implemented atomic
+       add.
+
+2008-11-26  Mark Probst  <mark.probst@gmail.com>
+
+       * mini-ppc64.c: Several fixes.
+
+2008-11-25  Mark Mason   <mmason@upwardaccess.com>
+
+       * cpu-mips.md: added jump_table
+       * mini-mips.c: added jump_table. Eliminate compare-imm when lowering. Remove dead function.             
+
+2008-11-25  Mark Mason   <mmason@upwardaccess.com>
+
+       * mini-mips.c, mini-mips.h, tramp-mips.c, cpu-mips.md: Initial upgrade of MIPS port to new IR.
+
+2008-11-25  Mark Mason   <mmason@upwardaccess.com>
+
+       * mini-ops.h: corrected a handful of MIPS opcodes.
+
+2008-11-25  Mark Mason   <mmason@upwardaccess.com>
+
+       * aot-compiler.c: MIPS to use ELF writer
+
+2008-11-25  Mark Mason   <mmason@upwardaccess.com>
+
+       * mini-codegen.c: remove MIPS specific assert.
+
+2008-11-25  Mark Probst  <mark.probst@gmail.com>
+
+       * mini-ppc64.c, mini-ppc64.h, tramp-ppc64.c, cpu-ppc64.md: Several
+       fixes.  PPC64 now passes most of the runtime regressions.
+
+2008-11-24  Zoltan Varga  <vargaz@gmail.com>
+
+       * regalloc2.c: Distinguish between use/def positions. Optimize the creation of
+       volatile intervals a bit.
+
+2008-11-24  Mark Probst  <mark.probst@gmail.com>
+
+       * basic-long.cs: New test case.
+
+2008-11-23  Zoltan Varga  <vargaz@gmail.com>
+
+       * mini.c (mini_method_compile): Disable globalra for large methods for 
+       now.
+
+       * regalloc2.c (order_moves): Add fp support.
+
+       * branch-opts.c (mono_remove_critical_edges): Split non-critical edges whose
+       source bblock ends with an OP_BR_REG.
+
+       * ratests.cs: Add a new test.
+
+2008-11-23  Mark Probst  <mark.probst@gmail.com>
+
+       * mini-ppc64.c, mini-ppc64.h, tramp-ppc64.c: Disable generic code
+       sharing.  PPC64 now passes generics.exe.
+
+2008-11-23  Mark Probst  <mark.probst@gmail.com>
+
+       * mini-ppc64.c: Several fixes.  PPC64 now runs iltests.exe.
+
+2008-11-23  Zoltan Varga  <vargaz@gmail.com>
+
+       * exceptions-x86.c (mono_arch_find_jit_info): Avoid reading uninitialized
+       memory when mono_jit_info_table_find () can't find the method in the
+       LMF case.
+
+       * aot-compiler.c (mono_save_xdebug_info): Emit complete debug info for
+       AOTed code too.
+       
+       * aot-compiler.c (mono_save_xdebug_info): Make this work with the assembly
+       writer too.
+
+2008-11-23  Mark Probst  <mark.probst@gmail.com>
+
+       * mini-ppc64.c, mini-ppc64.h, exceptions-ppc64.c, cpu-ppc64.md:
+       Several fixes.  PPC64 now runs exceptions.exe and
+       devirtualization.exe.
+
+2008-11-22  Mark Probst  <mark.probst@gmail.com>
+
+       * mini-ppc64.c, tramp-ppc64.c: Small fixes.  PPC64 now runs
+       arrays.exe and basic-math.exe.
+
+2008-11-22  Mark Probst  <mark.probst@gmail.com>
+
+       * mini-ppc64.c, mini-ppc64.h, exceptions-ppc64.c, tramp-ppc64.c,
+       cpu-ppc64.md: Several fixes.  PPC64 now runs objects.exe.
+
+2008-11-21  Rodrigo Kumpera  <rkumpera@novell.com>
+
+       * simd-intrinsics.c: Add support ArrayExtension intrinsics.
+
+2008-11-21  Rodrigo Kumpera  <rkumpera@novell.com>
+
+       * method-to-ir.c: Move bounds checking macros to ir-emit.h
+
+       * ir-emit.h: Move macros from method-to-ir.c to here.
+
+2008-11-21  Rodrigo Kumpera  <rkumpera@novell.com>
+
+       * mini-ops.h: Correct the long simd ops to use LREG.
+
 2008-11-21  Zoltan Varga  <vargaz@gmail.com>
 
        * mini-ops.h: Correct the dreg type of OP_LOADI8_MEMBASE.