[jit] Register counter for number of optimized divisions
authorVlad Brezae <brezaevlad@gmail.com>
Thu, 10 Dec 2015 03:53:35 +0000 (05:53 +0200)
committerVlad Brezae <brezaevlad@gmail.com>
Thu, 11 Aug 2016 18:21:39 +0000 (21:21 +0300)
mono/mini/local-propagation.c
mono/mini/mini-runtime.c
mono/mini/mini.h

index 5d5dd71e8dea20f4e5b1e753f9593df615c0f275..ac64c52978a7d28ca56713be129b5d04ed83a932 100644 (file)
@@ -187,6 +187,7 @@ mono_strength_reduction_division (MonoCompile *cfg, MonoInst *ins)
                        } else {
                                MONO_EMIT_NEW_BIALU_IMM (cfg, OP_LSHR_UN_IMM, ins->dreg, tmp_regl, 32 + mag.shift);
                        }
+                       mono_jit_stats.optimized_divisions++;
                        break;
                }
                case OP_IDIV_IMM: {
@@ -236,6 +237,7 @@ mono_strength_reduction_division (MonoCompile *cfg, MonoInst *ins)
                        }
                        MONO_EMIT_NEW_BIALU_IMM (cfg, OP_LSHR_UN_IMM, ins->dreg, tmp_regl, SIZEOF_REGISTER * 8 - 1);
                        MONO_EMIT_NEW_BIALU (cfg, OP_LADD, ins->dreg, ins->dreg, tmp_regl);
+                       mono_jit_stats.optimized_divisions++;
                        break;
                }
        }
index e1918076a8a97099a952d461b43b0d7e6f9fdfad..857f52ea70ba7353ffbd0ab1a32b6225d63fc87a 100644 (file)
@@ -3328,6 +3328,7 @@ register_jit_stats (void)
        mono_counters_register ("Aliases eliminated", MONO_COUNTER_JIT | MONO_COUNTER_INT, &mono_jit_stats.alias_removed);
        mono_counters_register ("Aliased loads eliminated", MONO_COUNTER_JIT | MONO_COUNTER_INT, &mono_jit_stats.loads_eliminated);
        mono_counters_register ("Aliased stores eliminated", MONO_COUNTER_JIT | MONO_COUNTER_INT, &mono_jit_stats.stores_eliminated);
+       mono_counters_register ("Optimized immediate divisions", MONO_COUNTER_JIT | MONO_COUNTER_INT, &mono_jit_stats.optimized_divisions);
 }
 
 static void runtime_invoke_info_free (gpointer value);
index 46b76b4fc28abd8decb995d0bbefb0707bc57b4e..acf723adbb2dabe5abbeb2f9a1fb7d79e2031e37 100644 (file)
@@ -1917,6 +1917,7 @@ typedef struct {
        gint32 alias_removed;
        gint32 loads_eliminated;
        gint32 stores_eliminated;
+       gint32 optimized_divisions;
        int methods_with_llvm;
        int methods_without_llvm;
        char *max_ratio_method;