freedreno/ir3: lower mul_2x32_64
authorJonathan Marek <jonathan@marek.ca>
Sun, 15 Dec 2019 19:18:13 +0000 (14:18 -0500)
committerJonathan Marek <jonathan@marek.ca>
Mon, 16 Dec 2019 18:37:09 +0000 (13:37 -0500)
lower_mul_2x32_64 generates mul_high opcodes, and lower_mul_high is done by
nir_lower_alu, so call nir_lower_alu after nir_opt_algebraic.

Signed-off-by: Jonathan Marek <jonathan@marek.ca>
Reviewed-by: Eric Anholt <eric@anholt.net>
src/freedreno/ir3/ir3_nir.c

index 17db07616e8ca298413d423e0b47b3098ef9737c..4a45a15ba5022e752aa1aa55f0b3a42cc22f2d6a 100644 (file)
@@ -48,6 +48,7 @@ static const nir_shader_compiler_options options = {
                .lower_uadd_carry = true,
                .lower_usub_borrow = true,
                .lower_mul_high = true,
+               .lower_mul_2x32_64 = true,
                .fuse_ffma = true,
                .vertex_id_zero_based = true,
                .lower_extract_byte = true,
@@ -77,6 +78,7 @@ static const nir_shader_compiler_options options_a6xx = {
                .lower_uadd_carry = true,
                .lower_usub_borrow = true,
                .lower_mul_high = true,
+               .lower_mul_2x32_64 = true,
                .fuse_ffma = true,
                .vertex_id_zero_based = false,
                .lower_extract_byte = true,
@@ -150,6 +152,7 @@ ir3_optimize_loop(nir_shader *s)
                progress |= OPT(s, nir_opt_peephole_select, 16, true, true);
                progress |= OPT(s, nir_opt_intrinsics);
                progress |= OPT(s, nir_opt_algebraic);
+               progress |= OPT(s, nir_lower_alu);
                progress |= OPT(s, nir_opt_constant_folding);
 
                if (lower_flrp != 0) {