mesa/src/panfrost/bifrost
Alyssa Rosenzweig a4d3a29647 pan/bi: Enable dual texture fusing pass
Everything is in place for it now -- ship it! Our Bifrost cycle model is
coarse, so take the shader-db results with a massive spoonful of salt:

total instructions in shared programs: 107504 -> 107252 (-0.23%)
instructions in affected programs: 39692 -> 39440 (-0.63%)
helped: 191
HURT: 1
helped stats (abs) min: 1.0 max: 20.0 x̄: 1.32 x̃: 1
helped stats (rel) min: 0.11% max: 9.52% x̄: 1.21% x̃: 0.98%
HURT stats (abs)   min: 1.0 max: 1.0 x̄: 1.00 x̃: 1
HURT stats (rel)   min: 2.04% max: 2.04% x̄: 2.04% x̃: 2.04%
95% mean confidence interval for instructions value: -1.60 -1.02
95% mean confidence interval for instructions %-change: -1.37% -1.01%
Instructions are helped.

total tuples in shared programs: 89864 -> 89664 (-0.22%)
tuples in affected programs: 27787 -> 27587 (-0.72%)
helped: 146
HURT: 6
helped stats (abs) min: 1.0 max: 17.0 x̄: 1.54 x̃: 1
helped stats (rel) min: 0.14% max: 15.38% x̄: 1.83% x̃: 1.25%
HURT stats (abs)   min: 1.0 max: 11.0 x̄: 4.17 x̃: 2
HURT stats (rel)   min: 0.54% max: 3.55% x̄: 1.29% x̃: 0.87%
95% mean confidence interval for tuples value: -1.64 -0.99
95% mean confidence interval for tuples %-change: -2.06% -1.36%
Tuples are helped.

total clauses in shared programs: 18253 -> 18044 (-1.15%)
clauses in affected programs: 5127 -> 4918 (-4.08%)
helped: 164
HURT: 1
helped stats (abs) min: 1.0 max: 19.0 x̄: 1.28 x̃: 1
helped stats (rel) min: 0.78% max: 28.57% x̄: 6.73% x̃: 5.88%
HURT stats (abs)   min: 1.0 max: 1.0 x̄: 1.00 x̃: 1
HURT stats (rel)   min: 2.94% max: 2.94% x̄: 2.94% x̃: 2.94%
95% mean confidence interval for clauses value: -1.50 -1.04
95% mean confidence interval for clauses %-change: -7.42% -5.91%
Clauses are helped.

total cycles in shared programs: 8118.54 -> 8103.88 (-0.18%)
cycles in affected programs: 414.96 -> 400.29 (-3.53%)
helped: 43
HURT: 27
helped stats (abs) min: 0.041665999999999315 max: 4.375 x̄: 0.41 x̃: 0
helped stats (rel) min: 0.24% max: 50.00% x̄: 11.49% x̃: 5.26%
HURT stats (abs)   min: 0.041665999999999315 max: 1.1666639999999973 x̄:
0.10 x̃: 0
HURT stats (rel)   min: 0.43% max: 4.71% x̄: 1.42% x̃: 1.28%
95% mean confidence interval for cycles value: -0.35 -0.07
95% mean confidence interval for cycles %-change: -9.50% -3.53%
Cycles are helped.

total arith in shared programs: 3375.67 -> 3376.42 (0.02%)
arith in affected programs: 345.29 -> 346.04 (0.22%)
helped: 24
HURT: 32
helped stats (abs) min: 0.041665999999999315 max: 0.5833329999999997 x̄:
0.09 x̃: 0
helped stats (rel) min: 0.24% max: 14.29% x̄: 2.82% x̃: 1.50%
HURT stats (abs)   min: 0.041665999999999315 max: 1.1666639999999973 x̄:
0.09 x̃: 0
HURT stats (rel)   min: 0.43% max: 4.71% x̄: 1.42% x̃: 1.28%
95% mean confidence interval for arith value: -0.04 0.07
95% mean confidence interval for arith %-change: -1.19% 0.39%
Inconclusive result (value mean confidence interval includes 0).

total texture in shared programs: 1275 -> 1157 (-9.25%)
texture in affected programs: 725.50 -> 607.50 (-16.26%)
helped: 192
HURT: 0
helped stats (abs) min: 0.5 max: 10.0 x̄: 0.61 x̃: 0
helped stats (rel) min: 2.86% max: 50.00% x̄: 25.20% x̃: 25.00%
95% mean confidence interval for texture value: -0.72 -0.51
95% mean confidence interval for texture %-change: -27.12% -23.27%
Texture are helped.

total vary in shared programs: 537.88 -> 536.12 (-0.33%)
vary in affected programs: 2.75 -> 1 (-63.64%)
helped: 1
HURT: 0

total quadwords in shared programs: 79762 -> 79681 (-0.10%)
quadwords in affected programs: 10261 -> 10180 (-0.79%)
helped: 59
HURT: 18
helped stats (abs) min: 1.0 max: 14.0 x̄: 1.88 x̃: 1
helped stats (rel) min: 0.38% max: 8.20% x̄: 1.95% x̃: 1.43%
HURT stats (abs)   min: 1.0 max: 4.0 x̄: 1.67 x̃: 1
HURT stats (rel)   min: 0.46% max: 8.89% x̄: 2.22% x̃: 1.21%
95% mean confidence interval for quadwords value: -1.57 -0.53
95% mean confidence interval for quadwords %-change: -1.59% -0.37%
Quadwords are helped.

Signed-off-by: Alyssa Rosenzweig <alyssa@collabora.com>
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/13723>
2021-11-12 16:30:02 +00:00
..
test pan/bi: Test dual texture fusing 2021-11-12 16:30:02 +00:00
valhall pan/va: Document IEEE 754 conformance of clamps 2021-08-11 14:58:58 -04:00
bi_builder.h.py pan/bi: Move typesize to common code 2021-06-15 20:27:22 +00:00
bi_helper_invocations.c pan/bi: Fix typo in helper invocation analysis 2021-11-12 16:30:02 +00:00
bi_layout.c pan/bi: Garbage collect stuff in bi_layout.c 2021-07-28 00:26:06 +00:00
bi_liveness.c pan/bi: Shrink live array to 8-bits 2021-07-18 01:49:26 +00:00
bi_lower_divergent_indirects.c pan/bi: Add divergent intrinsic lowering pass 2021-05-07 18:20:30 +00:00
bi_lower_swizzle.c pan/bi: Use FCLAMP pseudo op for clamp prop 2021-08-11 14:59:26 -04:00
bi_opcodes.c.py pan/bi: Track instruction size in opcode table 2021-06-15 20:27:22 +00:00
bi_opcodes.h.py pan/bi: Make some headers compilable with C++ 2021-11-08 19:02:01 +00:00
bi_opt_constant_fold.c pan/bi: Constant fold texturing lowerings 2021-08-11 14:59:24 -04:00
bi_opt_copy_prop.c pan/bi: Move bi_word_node to common code 2021-06-15 20:27:22 +00:00
bi_opt_cse.c pan/bi: Clean up useless casts 2021-07-18 01:49:26 +00:00
bi_opt_dce.c pan/bi: Shrink live array to 8-bits 2021-07-18 01:49:26 +00:00
bi_opt_dual_tex.c pan/bi: Add dual texture fusing pass 2021-11-12 16:30:02 +00:00
bi_opt_mod_props.c pan/bi: Fuse DISCARD with conditions 2021-08-11 14:59:26 -04:00
bi_opt_push_ubo.c pan/bi: Make bi_opt_push_ubo optional 2021-08-11 18:00:45 +00:00
bi_pack.c pan/bi: Teach meson about Bifrost packing test 2021-07-28 22:16:14 +00:00
bi_packer.c.py pan/bi: Rename NOP.i32 to NOP 2021-07-28 00:26:06 +00:00
bi_print.c pan/bi: Clean up useless casts 2021-07-18 01:49:26 +00:00
bi_print_common.c pan/bi: Move modifier prints out of common code 2020-12-23 12:48:06 -05:00
bi_print_common.h pan/bi: Move modifier prints out of common code 2020-12-23 12:48:06 -05:00
bi_printer.c.py pan/bi: Add discard flag to bi_index 2021-07-28 00:26:06 +00:00
bi_quirks.h pan/bi: Use CLPER_V6 on Mali G31 2021-08-20 20:13:27 +00:00
bi_ra.c pan/bi: Fix up dual texturing registers 2021-11-12 16:30:02 +00:00
bi_schedule.c pan/bi: Support dual texture scheduling 2021-11-12 16:30:02 +00:00
bi_scoreboard.c pan/bi: Clean up useless casts 2021-07-18 01:49:26 +00:00
bi_test.h pan/bi: Drop unused test helpers 2021-11-08 19:02:02 +00:00
bi_validate.c pan/bi: Validate the live set starts empty 2021-07-29 23:40:46 +00:00
bifrost.h pan/bi: Add bi_dual_tex_as_u32 helper 2021-11-12 16:30:02 +00:00
bifrost_compile.c pan/bi: Enable dual texture fusing pass 2021-11-12 16:30:02 +00:00
bifrost_compile.h nir: add indirect loop unrolling to compiler options 2021-08-03 10:54:50 +00:00
bifrost_isa.py pan/bi: Move typesize to common code 2021-06-15 20:27:22 +00:00
bifrost_nir.h pan/bi: Add back custom algebraic opts 2021-06-15 20:27:22 +00:00
bifrost_nir_algebraic.py pan/bi: Optimize abs(derivative) 2021-10-06 00:40:57 +00:00
bir.c pan/bi: Add second destination to TEXC 2021-11-12 16:30:02 +00:00
cmdline.c pan/bi: Fix infinite loop parsing arguments for bifrost_compiler 2021-08-01 13:04:20 +00:00
compiler.h pan/bi: Add dual texture fusing pass 2021-11-12 16:30:02 +00:00
disassemble.c pan/bi: Fix format specifiers in disassembler 2021-08-25 20:03:08 +00:00
disassemble.h pan/bi: Print the clause of branch targets 2021-08-01 13:04:20 +00:00
gen_disasm.py pan/bi: Print the clause of branch targets 2021-08-01 13:04:20 +00:00
ISA.xml pan/bi: Add second destination to TEXC 2021-11-12 16:30:02 +00:00
meson.build pan/bi: Test dual texture fusing 2021-11-12 16:30:02 +00:00
Notes.txt pan/bi: Move notes on ADD ops to notes file 2020-03-03 00:03:50 +00:00
README.md pan/bi: Document register conventions 2021-04-03 12:47:29 -04:00

Bifrost compiler

Register file

Defined partially in software, partially in hardware.

Blend shaders

R0 - R3: input (color #0) R4 - R7: input (color #1) R8 - R15: general purpose R48: return address

Fragment

Anything live during BLEND must respect blend shader registers.

R0 - R3: preloaded (message #0) R4 - R7: preloaded (message #1) R57 - R63: preloaded (various)

R0 - R15: general purpose (full threads) R48 - R63: general purpose (full threads)

R32 - R47: general purpose (half threads, or v6)