From 75739aced31f1212aaf70b117cc4c4372202cb8b Mon Sep 17 00:00:00 2001 From: Matt Turner Date: Mon, 15 Aug 2022 16:25:44 +0000 Subject: [PATCH] freedreno/ir3: Don't use the broken idiv lowering This hurts, but we really can't tolerate incorrect results. Notably hurts manhattan31/377 (but half of the damage is handled by the next commit). instructions HURT: shaders/closed/android/gfxbench/manhattan31/377.shader_test CL: 1509 -> 1700 (12.66%) total instructions in shared programs: 1674990 -> 1713536 (2.30%) instructions in affected programs: 205016 -> 243562 (18.80%) helped: 10 HURT: 357 total nops in shared programs: 370499 -> 377253 (1.82%) nops in affected programs: 54465 -> 61219 (12.40%) helped: 74 HURT: 289 total non-nops in shared programs: 1304491 -> 1336283 (2.44%) non-nops in affected programs: 147087 -> 178879 (21.61%) helped: 5 HURT: 348 total mov in shared programs: 64188 -> 66642 (3.82%) mov in affected programs: 5667 -> 8121 (43.30%) helped: 5 HURT: 346 total cov in shared programs: 23603 -> 20215 (-14.35%) cov in affected programs: 9274 -> 5886 (-36.53%) helped: 347 HURT: 0 total dwords in shared programs: 3385438 -> 3650282 (7.82%) dwords in affected programs: 630672 -> 895516 (41.99%) helped: 0 HURT: 690 total full in shared programs: 93112 -> 93127 (0.02%) full in affected programs: 390 -> 405 (3.85%) helped: 10 HURT: 22 total constlen in shared programs: 245400 -> 246636 (0.50%) constlen in affected programs: 19504 -> 20740 (6.34%) helped: 0 HURT: 309 total cat0 in shared programs: 405120 -> 411874 (1.67%) cat0 in affected programs: 57075 -> 63829 (11.83%) helped: 74 HURT: 289 total cat1 in shared programs: 87987 -> 87109 (-1.00%) cat1 in affected programs: 13032 -> 12154 (-6.74%) helped: 282 HURT: 17 total cat2 in shared programs: 775647 -> 797105 (2.77%) cat2 in affected programs: 106737 -> 128195 (20.10%) helped: 0 HURT: 347 total cat3 in shared programs: 337200 -> 348412 (3.33%) cat3 in affected programs: 17551 -> 28763 (63.88%) helped: 0 HURT: 347 total sstall in shared programs: 133312 -> 133300 (<.01%) sstall in affected programs: 85 -> 73 (-14.12%) helped: 1 HURT: 0 total (ss) in shared programs: 36146 -> 36137 (-0.02%) (ss) in affected programs: 345 -> 336 (-2.61%) helped: 20 HURT: 11 total systall in shared programs: 323432 -> 323494 (0.02%) systall in affected programs: 2762 -> 2824 (2.24%) helped: 11 HURT: 15 total (sy) in shared programs: 14301 -> 14306 (0.03%) (sy) in affected programs: 54 -> 59 (9.26%) helped: 0 HURT: 4 Total CPU time (seconds): 0 -> 0 Part-of: --- src/freedreno/ir3/ir3_nir.c | 2 -- 1 file changed, 2 deletions(-) diff --git a/src/freedreno/ir3/ir3_nir.c b/src/freedreno/ir3/ir3_nir.c index 1d6ed662156..64e8f6e94b3 100644 --- a/src/freedreno/ir3/ir3_nir.c +++ b/src/freedreno/ir3/ir3_nir.c @@ -353,7 +353,6 @@ ir3_finalize_nir(struct ir3_compiler *compiler, nir_shader *s) * constants for divide by immed power-of-two: */ nir_lower_idiv_options idiv_options = { - .imprecise_32bit_lowering = true, .allow_fp16 = true, }; const bool idiv_progress = OPT(s, nir_lower_idiv, &idiv_options); @@ -534,7 +533,6 @@ ir3_nir_post_finalize(struct ir3_shader *shader) NIR_PASS_V(s, nir_lower_image, &lower_image_opts); const nir_lower_idiv_options lower_idiv_options = { - .imprecise_32bit_lowering = true, .allow_fp16 = true, }; NIR_PASS_V(s, nir_lower_idiv, &lower_idiv_options); /* idiv generated by cube lowering */