[Mesa-dev] [PATCH] radeonsi: add a debug flag for unsafe math LLVM optimizations

Nicolai Hähnle nhaehnle at gmail.com
Tue Jun 21 08:48:11 UTC 2016


Reviewed-by: Nicolai Hähnle <nicolai.haehnle at amd.com>

On 20.06.2016 19:07, Marek Olšák wrote:
> Ping
>
> On Mon, Jun 13, 2016 at 6:27 PM, Marek Olšák <maraeo at gmail.com> wrote:
>> From: Marek Olšák <marek.olsak at amd.com>
>>
>> ---
>>   src/gallium/drivers/radeon/r600_pipe_common.c |  1 +
>>   src/gallium/drivers/radeon/r600_pipe_common.h |  1 +
>>   src/gallium/drivers/radeonsi/si_shader.c      | 16 ++++++++++++++++
>>   3 files changed, 18 insertions(+)
>>
>> diff --git a/src/gallium/drivers/radeon/r600_pipe_common.c b/src/gallium/drivers/radeon/r600_pipe_common.c
>> index fa9f70d..5d4a679 100644
>> --- a/src/gallium/drivers/radeon/r600_pipe_common.c
>> +++ b/src/gallium/drivers/radeon/r600_pipe_common.c
>> @@ -482,6 +482,7 @@ static const struct debug_named_value common_debug_options[] = {
>>          { "sisched", DBG_SI_SCHED, "Enable LLVM SI Machine Instruction Scheduler." },
>>          { "mono", DBG_MONOLITHIC_SHADERS, "Use old-style monolithic shaders compiled on demand" },
>>          { "noce", DBG_NO_CE, "Disable the constant engine"},
>> +       { "unsafemath", DBG_UNSAFE_MATH, "Enable unsafe math shader optimizations" },
>>
>>          DEBUG_NAMED_VALUE_END /* must be last */
>>   };
>> diff --git a/src/gallium/drivers/radeon/r600_pipe_common.h b/src/gallium/drivers/radeon/r600_pipe_common.h
>> index 77dfc4f..263ef5e 100644
>> --- a/src/gallium/drivers/radeon/r600_pipe_common.h
>> +++ b/src/gallium/drivers/radeon/r600_pipe_common.h
>> @@ -99,6 +99,7 @@
>>   #define DBG_SI_SCHED           (1llu << 46)
>>   #define DBG_MONOLITHIC_SHADERS (1llu << 47)
>>   #define DBG_NO_CE              (1llu << 48)
>> +#define DBG_UNSAFE_MATH                (1llu << 49)
>>
>>   #define R600_MAP_BUFFER_ALIGNMENT 64
>>   #define R600_MAX_VIEWPORTS        16
>> diff --git a/src/gallium/drivers/radeonsi/si_shader.c b/src/gallium/drivers/radeonsi/si_shader.c
>> index 6dc4985..bba6a55 100644
>> --- a/src/gallium/drivers/radeonsi/si_shader.c
>> +++ b/src/gallium/drivers/radeonsi/si_shader.c
>> @@ -5255,6 +5255,22 @@ static void si_create_function(struct si_shader_context *ctx,
>>                  else
>>                          LLVMAddAttribute(P, LLVMInRegAttribute);
>>          }
>> +
>> +       if (ctx->screen->b.debug_flags & DBG_UNSAFE_MATH) {
>> +               /* These were copied from some LLVM test. */
>> +               LLVMAddTargetDependentFunctionAttr(ctx->radeon_bld.main_fn,
>> +                                                  "less-precise-fpmad",
>> +                                                  "true");
>> +               LLVMAddTargetDependentFunctionAttr(ctx->radeon_bld.main_fn,
>> +                                                  "no-infs-fp-math",
>> +                                                  "true");
>> +               LLVMAddTargetDependentFunctionAttr(ctx->radeon_bld.main_fn,
>> +                                                  "no-nans-fp-math",
>> +                                                  "true");
>> +               LLVMAddTargetDependentFunctionAttr(ctx->radeon_bld.main_fn,
>> +                                                  "unsafe-fp-math",
>> +                                                  "true");
>> +       }
>>   }
>>
>>   static void create_meta_data(struct si_shader_context *ctx)
>> --
>> 2.7.4
>>
> _______________________________________________
> mesa-dev mailing list
> mesa-dev at lists.freedesktop.org
> https://lists.freedesktop.org/mailman/listinfo/mesa-dev
>


More information about the mesa-dev mailing list