nir: Use nir_vector_extract to generate code for ir_binop_vector_extract
Tiger Lake and Ice Lake had similar results. (Ice Lake shown) total cycles in shared programs: 861153442 -> 861153533 (<.01%) cycles in affected programs: 14748 -> 14839 (0.62%) helped: 5 HURT: 10 helped stats (abs) min: 1 max: 2 x̄: 1.80 x̃: 2 helped stats (rel) min: 0.09% max: 0.18% x̄: 0.16% x̃: 0.17% HURT stats (abs) min: 2 max: 18 x̄: 10.00 x̃: 10 HURT stats (rel) min: 0.17% max: 1.54% x̄: 1.06% x̃: 1.24% 95% mean confidence interval for cycles value: 1.15 10.99 95% mean confidence interval for cycles %-change: 0.25% 1.07% Cycles are HURT. Skylake and Broadwell had similar results. (Skylake shown) total cycles in shared programs: 844405063 -> 844405073 (<.01%) cycles in affected programs: 1710 -> 1720 (0.58%) helped: 0 HURT: 4 HURT stats (abs) min: 2 max: 4 x̄: 2.50 x̃: 2 HURT stats (rel) min: 0.35% max: 1.16% x̄: 0.88% x̃: 1.00% 95% mean confidence interval for cycles value: 0.91 4.09 95% mean confidence interval for cycles %-change: 0.30% 1.45% Cycles are HURT. Haswell and all earlier Intel GPUs had similar results. (Haswell shown) total instructions in shared programs: 16710016 -> 16709769 (<.01%) instructions in affected programs: 5842 -> 5595 (-4.23%) helped: 64 HURT: 0 helped stats (abs) min: 3 max: 4 x̄: 3.86 x̃: 4 helped stats (rel) min: 3.36% max: 7.69% x̄: 4.52% x̃: 4.17% 95% mean confidence interval for instructions value: -3.95 -3.77 95% mean confidence interval for instructions %-change: -4.83% -4.22% Instructions are helped. total cycles in shared programs: 881088472 -> 881086722 (<.01%) cycles in affected programs: 68696 -> 66946 (-2.55%) helped: 58 HURT: 6 helped stats (abs) min: 10 max: 202 x̄: 36.41 x̃: 18 helped stats (rel) min: 0.81% max: 16.42% x̄: 4.15% x̃: 1.51% HURT stats (abs) min: 2 max: 88 x̄: 60.33 x̃: 68 HURT stats (rel) min: 0.17% max: 7.06% x̄: 4.94% x̃: 5.60% 95% mean confidence interval for cycles value: -42.14 -12.54 95% mean confidence interval for cycles %-change: -4.66% -1.94% Cycles are helped. No fossil-db changes on any Intel platform. Reviewed-by: Matt Turner <mattst88@gmail.com> Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/16440>
This commit is contained in:
@@ -2329,15 +2329,9 @@ nir_visitor::visit(ir_expression *ir)
|
||||
case ir_binop_dot:
|
||||
result = nir_fdot(&b, srcs[0], srcs[1]);
|
||||
break;
|
||||
case ir_binop_vector_extract: {
|
||||
result = nir_channel(&b, srcs[0], 0);
|
||||
for (unsigned i = 1; i < ir->operands[0]->type->vector_elements; i++) {
|
||||
nir_ssa_def *swizzled = nir_channel(&b, srcs[0], i);
|
||||
result = nir_bcsel(&b, nir_ieq_imm(&b, srcs[1], i),
|
||||
swizzled, result);
|
||||
}
|
||||
case ir_binop_vector_extract:
|
||||
result = nir_vector_extract(&b, srcs[0], srcs[1]);
|
||||
break;
|
||||
}
|
||||
|
||||
case ir_binop_atan2:
|
||||
result = nir_atan2(&b, srcs[0], srcs[1]);
|
||||
|
Reference in New Issue
Block a user