intel/compiler: Move int64/doubles lowering options
Instead of calculating the int64 and doubles lowering options each time a shader is preprocessed, save and use the values in nir_shader_compiler_options. Signed-off-by: Jordan Justen <jordan.l.justen@intel.com> Reviewed-by: Kenneth Graunke <kenneth@whitecape.org> Reviewed-by: Jason Ekstrand <jason@jlekstrand.net>
This commit is contained in:
@@ -143,6 +143,34 @@ brw_compiler_create(void *mem_ctx, const struct gen_device_info *devinfo)
|
||||
compiler->scalar_stage[MESA_SHADER_COMPUTE] = true;
|
||||
}
|
||||
|
||||
nir_lower_int64_options int64_options =
|
||||
nir_lower_imul64 |
|
||||
nir_lower_isign64 |
|
||||
nir_lower_divmod64 |
|
||||
nir_lower_imul_high64;
|
||||
nir_lower_doubles_options fp64_options =
|
||||
nir_lower_drcp |
|
||||
nir_lower_dsqrt |
|
||||
nir_lower_drsq |
|
||||
nir_lower_dtrunc |
|
||||
nir_lower_dfloor |
|
||||
nir_lower_dceil |
|
||||
nir_lower_dfract |
|
||||
nir_lower_dround_even |
|
||||
nir_lower_dmod;
|
||||
|
||||
if (!devinfo->has_64bit_types) {
|
||||
int64_options |= nir_lower_mov64 |
|
||||
nir_lower_icmp64 |
|
||||
nir_lower_iadd64 |
|
||||
nir_lower_iabs64 |
|
||||
nir_lower_ineg64 |
|
||||
nir_lower_logic64 |
|
||||
nir_lower_minmax64 |
|
||||
nir_lower_shift64;
|
||||
fp64_options |= nir_lower_fp64_full_software;
|
||||
}
|
||||
|
||||
/* We want the GLSL compiler to emit code that uses condition codes */
|
||||
for (int i = 0; i < MESA_SHADER_STAGES; i++) {
|
||||
compiler->glsl_compiler_options[i].MaxUnrollIterations = 0;
|
||||
@@ -158,13 +186,18 @@ brw_compiler_create(void *mem_ctx, const struct gen_device_info *devinfo)
|
||||
compiler->glsl_compiler_options[i].EmitNoIndirectTemp = is_scalar;
|
||||
compiler->glsl_compiler_options[i].OptimizeForAOS = !is_scalar;
|
||||
|
||||
struct nir_shader_compiler_options *nir_options =
|
||||
rzalloc(compiler, struct nir_shader_compiler_options);
|
||||
if (is_scalar) {
|
||||
compiler->glsl_compiler_options[i].NirOptions =
|
||||
devinfo->gen < 11 ? &scalar_nir_options : &scalar_nir_options_gen11;
|
||||
*nir_options =
|
||||
devinfo->gen < 11 ? scalar_nir_options : scalar_nir_options_gen11;
|
||||
} else {
|
||||
compiler->glsl_compiler_options[i].NirOptions =
|
||||
devinfo->gen < 6 ? &vector_nir_options : &vector_nir_options_gen6;
|
||||
*nir_options =
|
||||
devinfo->gen < 6 ? vector_nir_options : vector_nir_options_gen6;
|
||||
}
|
||||
nir_options->lower_int64_options = int64_options;
|
||||
nir_options->lower_doubles_options = fp64_options;
|
||||
compiler->glsl_compiler_options[i].NirOptions = nir_options;
|
||||
|
||||
compiler->glsl_compiler_options[i].LowerBufferInterfaceBlocks = true;
|
||||
compiler->glsl_compiler_options[i].ClampBlockIndicesToArrayBounds = true;
|
||||
|
Reference in New Issue
Block a user