radeonsi: set flags for FP16 in shaders
authorMarek Olšák <marek.olsak@amd.com>
Fri, 4 Sep 2020 17:48:30 +0000 (13:48 -0400)
committerMarge Bot <eric+marge@anholt.net>
Tue, 22 Sep 2020 02:44:53 +0000 (02:44 +0000)
v2: remove the enablement code

Acked-by: Pierre-Eric Pelloux-Prayer <pierre-eric.pelloux-prayer@amd.com> (v1)
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/6622>

src/gallium/drivers/radeonsi/si_get.c
src/gallium/drivers/radeonsi/si_pipe.c

index af4c54f..a511bab 100644 (file)
@@ -929,6 +929,7 @@ void si_init_screen_get_functions(struct si_screen *sscreen)
 
    const struct nir_shader_compiler_options nir_options = {
       .lower_scmp = true,
+      .lower_flrp16 = true,
       .lower_flrp32 = true,
       .lower_flrp64 = true,
       .lower_fsat = true,
@@ -961,6 +962,8 @@ void si_init_screen_get_functions(struct si_screen *sscreen)
       .max_unroll_iterations = 32,
       .use_interpolated_input_intrinsics = true,
       .lower_uniforms_to_ubo = true,
+      .support_16bit_alu = sscreen->info.has_packed_math_16bit,
+      .vectorize_vec2_16bit = sscreen->info.has_packed_math_16bit,
    };
    sscreen->nir_options = nir_options;
 }
index 68e6623..083449f 100644 (file)
@@ -952,6 +952,9 @@ static struct pipe_screen *radeonsi_screen_create_impl(struct radeon_winsys *ws,
    sscreen->ws = ws;
    ws->query_info(ws, &sscreen->info);
 
+   /* Older LLVM have buggy v_pk_* instructions. */
+   sscreen->info.has_packed_math_16bit &= LLVM_VERSION_MAJOR >= 11;
+
    if (sscreen->info.chip_class == GFX10_3 && LLVM_VERSION_MAJOR < 11) {
       fprintf(stderr, "radeonsi: GFX 10.3 requires LLVM 11 or higher\n");
       FREE(sscreen);