From: Marek Olšák Date: Tue, 8 Oct 2019 02:46:00 +0000 (-0400) Subject: nir: add nir_shader_compiler_options::lower_to_scalar X-Git-Url: https://git.libre-soc.org/?p=mesa.git;a=commitdiff_plain;h=cebc38ff602c662851b601bc7a48a7fad2700aff nir: add nir_shader_compiler_options::lower_to_scalar This will replace PIPE_SHADER_CAP_SCALAR_ISA. Reviewed-by: Timothy Arceri Reviewed-by: Christian Gmeiner Reviewed-by: Kenneth Graunke --- diff --git a/src/broadcom/compiler/nir_to_vir.c b/src/broadcom/compiler/nir_to_vir.c index b640dcc341b..a982778f8b1 100644 --- a/src/broadcom/compiler/nir_to_vir.c +++ b/src/broadcom/compiler/nir_to_vir.c @@ -2668,6 +2668,7 @@ const nir_shader_compiler_options v3d_nir_options = { .lower_mul_high = true, .lower_wpos_pntc = true, .lower_rotate = true, + .lower_to_scalar = true, }; /** diff --git a/src/compiler/nir/nir.h b/src/compiler/nir/nir.h index 90b91390a64..960184b7f3c 100644 --- a/src/compiler/nir/nir.h +++ b/src/compiler/nir/nir.h @@ -2736,6 +2736,7 @@ typedef struct nir_shader_compiler_options { * for IO purposes and would prefer loads/stores be vectorized. */ bool vectorize_io; + bool lower_to_scalar; /** * Should nir_lower_io() create load_interpolated_input intrinsics? diff --git a/src/freedreno/ir3/ir3_nir.c b/src/freedreno/ir3/ir3_nir.c index 9342c9d299b..b729692bdff 100644 --- a/src/freedreno/ir3/ir3_nir.c +++ b/src/freedreno/ir3/ir3_nir.c @@ -56,6 +56,7 @@ static const nir_shader_compiler_options options = { .lower_bitfield_extract_to_shifts = true, .use_interpolated_input_intrinsics = true, .lower_rotate = true, + .lower_to_scalar = true, }; /* we don't want to lower vertex_id to _zero_based on newer gpus: */ @@ -82,6 +83,7 @@ static const nir_shader_compiler_options options_a6xx = { .use_interpolated_input_intrinsics = true, .lower_rotate = true, .vectorize_io = true, + .lower_to_scalar = true, }; const nir_shader_compiler_options * diff --git a/src/gallium/drivers/nouveau/nv50/nv50_screen.c b/src/gallium/drivers/nouveau/nv50/nv50_screen.c index f0846867621..fe1f628a5ab 100644 --- a/src/gallium/drivers/nouveau/nv50/nv50_screen.c +++ b/src/gallium/drivers/nouveau/nv50/nv50_screen.c @@ -919,6 +919,7 @@ static const nir_shader_compiler_options nir_options = { .lower_all_io_to_temps = false, .lower_cs_local_index_from_id = true, .lower_rotate = true, + .lower_to_scalar = true, .use_interpolated_input_intrinsics = true, .max_unroll_iterations = 32, }; diff --git a/src/gallium/drivers/nouveau/nvc0/nvc0_screen.c b/src/gallium/drivers/nouveau/nvc0/nvc0_screen.c index 06f1fb2b708..8c04cda17aa 100644 --- a/src/gallium/drivers/nouveau/nvc0/nvc0_screen.c +++ b/src/gallium/drivers/nouveau/nvc0/nvc0_screen.c @@ -976,6 +976,7 @@ static const nir_shader_compiler_options nir_options = { .max_unroll_iterations = 32, .lower_int64_options = nir_lower_divmod64, // TODO .lower_doubles_options = nir_lower_dmod, // TODO + .lower_to_scalar = true, }; static const void * diff --git a/src/gallium/drivers/radeonsi/si_get.c b/src/gallium/drivers/radeonsi/si_get.c index 111279674e6..e37319750f4 100644 --- a/src/gallium/drivers/radeonsi/si_get.c +++ b/src/gallium/drivers/radeonsi/si_get.c @@ -524,6 +524,7 @@ static const struct nir_shader_compiler_options nir_options = { .lower_extract_byte = true, .lower_extract_word = true, .lower_rotate = true, + .lower_to_scalar = true, .optimize_sample_mask_in = true, .max_unroll_iterations = 32, .use_interpolated_input_intrinsics = true, diff --git a/src/gallium/drivers/vc4/vc4_program.c b/src/gallium/drivers/vc4/vc4_program.c index 7d88444c673..79edc6b1c2f 100644 --- a/src/gallium/drivers/vc4/vc4_program.c +++ b/src/gallium/drivers/vc4/vc4_program.c @@ -2191,6 +2191,7 @@ static const nir_shader_compiler_options nir_options = { .lower_ldexp = true, .lower_negate = true, .lower_rotate = true, + .lower_to_scalar = true, .max_unroll_iterations = 32, }; diff --git a/src/intel/compiler/brw_compiler.c b/src/intel/compiler/brw_compiler.c index c04264cba32..20660d6fb28 100644 --- a/src/intel/compiler/brw_compiler.c +++ b/src/intel/compiler/brw_compiler.c @@ -50,6 +50,7 @@ .lower_base_vertex = true #define COMMON_SCALAR_OPTIONS \ + .lower_to_scalar = true, \ .lower_pack_half_2x16 = true, \ .lower_pack_snorm_2x16 = true, \ .lower_pack_snorm_4x8 = true, \