Mesa (master): gallivm: print out time for jitting functions with GALLIVM_DEBUG=perf

Roland Scheidegger sroland at kemper.freedesktop.org
Tue Oct 18 23:45:17 UTC 2016


Module: Mesa
Branch: master
Commit: d1b4a3451e03e09966fa9700584e38baece8d3cd
URL:    http://cgit.freedesktop.org/mesa/mesa/commit/?id=d1b4a3451e03e09966fa9700584e38baece8d3cd

Author: Roland Scheidegger <sroland at vmware.com>
Date:   Fri Oct 14 05:37:34 2016 +0200

gallivm: print out time for jitting functions with GALLIVM_DEBUG=perf

Compilation to actual machine code can easily take as much time as the
optimization passes on the IR if not more, so print this out too.

Reviewed-by: Brian Paul <brianp at vmware.com>
Reviewed-by: Jose Fonseca <jfonseca at vmware.com>

---

 src/gallium/auxiliary/gallivm/lp_bld_init.c | 11 +++++++++++
 1 file changed, 11 insertions(+)

diff --git a/src/gallium/auxiliary/gallivm/lp_bld_init.c b/src/gallium/auxiliary/gallivm/lp_bld_init.c
index 7114cde..d1b2369 100644
--- a/src/gallium/auxiliary/gallivm/lp_bld_init.c
+++ b/src/gallium/auxiliary/gallivm/lp_bld_init.c
@@ -659,13 +659,24 @@ gallivm_jit_function(struct gallivm_state *gallivm,
 {
    void *code;
    func_pointer jit_func;
+   int64_t time_begin = 0;
 
    assert(gallivm->compiled);
    assert(gallivm->engine);
 
+   if (gallivm_debug & GALLIVM_DEBUG_PERF)
+      time_begin = os_time_get();
+
    code = LLVMGetPointerToGlobal(gallivm->engine, func);
    assert(code);
    jit_func = pointer_to_func(code);
 
+   if (gallivm_debug & GALLIVM_DEBUG_PERF) {
+      int64_t time_end = os_time_get();
+      int time_msec = (int)(time_end - time_begin) / 1000;
+      debug_printf("   jitting func %s took %d msec\n",
+                   LLVMGetValueName(func), time_msec);
+   }
+
    return jit_func;
 }




More information about the mesa-commit mailing list