[Mesa-dev] [PATCH] gallivm: print out time for jitting functions with GALLIVM_DEBUG=perf

Jose Fonseca jfonseca at vmware.com
Fri Oct 14 16:05:56 UTC 2016


On 14/10/16 15:36, Brian Paul wrote:
> On 10/13/2016 09:38 PM, sroland at vmware.com wrote:
>> From: Roland Scheidegger <sroland at vmware.com>
>>
>> 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.
>> ---
>>   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;
>
> I think we might want to put MAYBE_UNUSED on that decl so there's not an
> unused var warning in a non-debug build.

I think it might be OK because Roland's using `if` isntead of `#if`. 
That said, some compilers are too smart for their own good.

>
>>
>>      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;
>>   }
>>
>
> Looks OK otherwise.
>
> Reviewed-by: Brian Paul <brianp at vmware.com>

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

Jose



More information about the mesa-dev mailing list