mirror of
https://gitlab.freedesktop.org/mesa/mesa.git
synced 2026-06-04 17:28:19 +02:00
nir/opt_algebraic: add more ffract/ffloor/ftrunc/f2u/f2i patterns
Totals from 1390 (0.69% of 202429) affected shaders: MaxWaves: 33336 -> 33348 (+0.04%) Instrs: 4101809 -> 4095218 (-0.16%); split: -0.17%, +0.01% CodeSize: 22973700 -> 22944812 (-0.13%); split: -0.13%, +0.00% VGPRs: 95592 -> 95460 (-0.14%); split: -0.15%, +0.01% SpillSGPRs: 2910 -> 2913 (+0.10%) Latency: 27815305 -> 27807064 (-0.03%); split: -0.06%, +0.03% InvThroughput: 4563067 -> 4555622 (-0.16%); split: -0.18%, +0.02% VClause: 98544 -> 98570 (+0.03%); split: -0.04%, +0.06% SClause: 91148 -> 91149 (+0.00%); split: -0.00%, +0.01% Copies: 324008 -> 324028 (+0.01%); split: -0.10%, +0.10% Branches: 99085 -> 99084 (-0.00%); split: -0.00%, +0.00% PreSGPRs: 70920 -> 70734 (-0.26%); split: -0.27%, +0.00% PreVGPRs: 78288 -> 78190 (-0.13%); split: -0.15%, +0.03% VALU: 2123606 -> 2117766 (-0.28%); split: -0.28%, +0.00% SALU: 621757 -> 621671 (-0.01%); split: -0.02%, +0.00% VMEM: 163395 -> 163387 (-0.00%); split: -0.01%, +0.00% SMEM: 140374 -> 140376 (+0.00%) VOPD: 258332 -> 258264 (-0.03%); split: +0.04%, -0.07% Reviewed-by: Georg Lehmann <dadschoorse@gmail.com> Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/41455>
This commit is contained in:
parent
e824c30460
commit
7f2130c86e
8 changed files with 92 additions and 0 deletions
|
|
@ -1916,6 +1916,10 @@ optimizations.extend([
|
||||||
(('f2u', ('ftrunc', 'a(is_not_negative)')), ('f2u', a)),
|
(('f2u', ('ftrunc', 'a(is_not_negative)')), ('f2u', a)),
|
||||||
(('f2i', ('ffloor', 'a(is_not_negative)')), ('f2i', a)),
|
(('f2i', ('ffloor', 'a(is_not_negative)')), ('f2i', a)),
|
||||||
(('f2u', ('ffloor', a)), ('f2u', a)),
|
(('f2u', ('ffloor', a)), ('f2u', a)),
|
||||||
|
(('f2u(contract)', ('fadd', 'a(is_integral_not_negative)', 'b(is_a_number_gt_0_and_lt_1)')), ('f2u', a)),
|
||||||
|
(('f2i(contract)', ('fadd', 'a(is_integral_not_negative)', 'b(is_a_number_gt_0_and_lt_1)')), ('f2i', a)),
|
||||||
|
(('f2u32', ('u2f32', 'a@16')), ('u2u32', a)),
|
||||||
|
(('f2i32', ('u2f32', 'a@16')), ('u2u32', a)),
|
||||||
|
|
||||||
# Section 3.3.11 (Conversion Instructions) of the SPIR-V 1.6 spec says:
|
# Section 3.3.11 (Conversion Instructions) of the SPIR-V 1.6 spec says:
|
||||||
#
|
#
|
||||||
|
|
@ -1973,8 +1977,13 @@ optimizations.extend([
|
||||||
(('ftrunc', 'a(is_integral)'), a),
|
(('ftrunc', 'a(is_integral)'), a),
|
||||||
(('fround_even', 'a(is_integral)'), a),
|
(('fround_even', 'a(is_integral)'), a),
|
||||||
|
|
||||||
|
(('ffract(nnan,contract)', ('fadd', a, 'b(is_integral)')), ('ffract', a)),
|
||||||
|
(('ffloor(nsz,contract)', ('fadd', 'a(is_a_number_gt_0_and_lt_1)', 'b(is_integral)')), b),
|
||||||
|
(('ftrunc(nsz,contract)', ('fadd', 'a(is_a_number_gt_0_and_lt_1)', 'b(is_integral_not_negative)')), b),
|
||||||
|
|
||||||
# fract(x) = x - floor(x), so fract(NaN/Inf) = NaN
|
# fract(x) = x - floor(x), so fract(NaN/Inf) = NaN
|
||||||
(('ffract(nnan)', 'a(is_integral)'), 0.0),
|
(('ffract(nnan)', 'a(is_integral)'), 0.0),
|
||||||
|
(('ffract', 'a(is_a_number_gt_0_and_lt_1)'), a),
|
||||||
(('ffract', ('ffract', a)), ('ffract', a)),
|
(('ffract', ('ffract', a)), ('ffract', a)),
|
||||||
(('fabs(nsz)', 'a(is_not_negative)'), ('fcanonicalize', a)),
|
(('fabs(nsz)', 'a(is_not_negative)'), ('fcanonicalize', a)),
|
||||||
(('fabs', 'a(is_not_negative_or_negative_zero)'), ('fcanonicalize', a)),
|
(('fabs', 'a(is_not_negative_or_negative_zero)'), ('fcanonicalize', a)),
|
||||||
|
|
|
||||||
|
|
@ -921,6 +921,7 @@ RELATION(a_number, FP_CLASS_NAN)
|
||||||
RELATION(finite, FP_CLASS_ANY_INF | FP_CLASS_NAN)
|
RELATION(finite, FP_CLASS_ANY_INF | FP_CLASS_NAN)
|
||||||
RELATION(finite_not_zero, FP_CLASS_ANY_INF | FP_CLASS_NAN | FP_CLASS_ANY_ZERO)
|
RELATION(finite_not_zero, FP_CLASS_ANY_INF | FP_CLASS_NAN | FP_CLASS_ANY_ZERO)
|
||||||
RELATION(integral, FP_CLASS_NON_INTEGRAL)
|
RELATION(integral, FP_CLASS_NON_INTEGRAL)
|
||||||
|
RELATION(integral_not_negative, FP_CLASS_ANY_NEG | FP_CLASS_NON_INTEGRAL)
|
||||||
|
|
||||||
static inline bool
|
static inline bool
|
||||||
compare_component(const nir_alu_instr *instr, unsigned src, unsigned component,
|
compare_component(const nir_alu_instr *instr, unsigned src, unsigned component,
|
||||||
|
|
|
||||||
|
|
@ -224,3 +224,33 @@ dEQP-GLES3.functional.transform_feedback.random.separate.triangles.1,Crash
|
||||||
dEQP-GLES3.functional.transform_feedback.random.separate.triangles.4,Crash
|
dEQP-GLES3.functional.transform_feedback.random.separate.triangles.4,Crash
|
||||||
dEQP-GLES3.functional.transform_feedback.random.separate.triangles.6,Crash
|
dEQP-GLES3.functional.transform_feedback.random.separate.triangles.6,Crash
|
||||||
dEQP-GLES3.functional.transform_feedback.random_full_array_capture.separate.triangles.1,Crash
|
dEQP-GLES3.functional.transform_feedback.random_full_array_capture.separate.triangles.1,Crash
|
||||||
|
|
||||||
|
# !41455
|
||||||
|
dEQP-GLES3.functional.shaders.struct.uniform.equal_fragment,Fail
|
||||||
|
dEQP-GLES3.functional.shaders.switch.default_label_dynamic_fragment,Fail
|
||||||
|
dEQP-GLES3.functional.shaders.switch.default_not_last_dynamic_fragment,Fail
|
||||||
|
dEQP-GLES3.functional.shaders.switch.do_while_loop_in_switch_dynamic_fragment,Fail
|
||||||
|
dEQP-GLES3.functional.shaders.switch.do_while_loop_in_switch_dynamic_vertex,Fail
|
||||||
|
dEQP-GLES3.functional.shaders.switch.no_default_label_dynamic_fragment,Fail
|
||||||
|
dEQP-GLES3.functional.shaders.switch.switch_in_switch_dynamic_vertex,Fail
|
||||||
|
dEQP-GLES3.functional.shaders.switch.switch_in_while_loop_dynamic_vertex,Fail
|
||||||
|
dEQP-GLES3.functional.shaders.struct.uniform.not_equal_fragment,Fail
|
||||||
|
dEQP-GLES3.functional.shaders.switch.basic_dynamic_vertex,Fail
|
||||||
|
dEQP-GLES3.functional.shaders.switch.const_expr_in_label_dynamic_fragment,Fail
|
||||||
|
dEQP-GLES3.functional.shaders.switch.for_loop_in_switch_dynamic_vertex,Fail
|
||||||
|
dEQP-GLES3.functional.shaders.switch.if_in_switch_dynamic_vertex,Fail
|
||||||
|
dEQP-GLES3.functional.shaders.switch.scope_dynamic_vertex,Fail
|
||||||
|
dEQP-GLES3.functional.shaders.switch.switch_in_for_loop_dynamic_fragment,Fail
|
||||||
|
dEQP-GLES3.functional.shaders.switch.conditional_fall_through_2_dynamic_vertex,Fail
|
||||||
|
dEQP-GLES3.functional.shaders.switch.conditional_fall_through_dynamic_vertex,Fail
|
||||||
|
dEQP-GLES3.functional.shaders.switch.const_expr_in_label_dynamic_vertex,Fail
|
||||||
|
dEQP-GLES3.functional.shaders.switch.default_label_dynamic_vertex,Fail
|
||||||
|
dEQP-GLES3.functional.shaders.switch.default_not_last_dynamic_vertex,Fail
|
||||||
|
dEQP-GLES3.functional.shaders.switch.fall_through_default_dynamic_fragment,Fail
|
||||||
|
dEQP-GLES3.functional.shaders.switch.fall_through_default_dynamic_vertex,Fail
|
||||||
|
dEQP-GLES3.functional.shaders.switch.fall_through_dynamic_vertex,Fail
|
||||||
|
dEQP-GLES3.functional.shaders.switch.no_default_label_dynamic_vertex,Fail
|
||||||
|
dEQP-GLES3.functional.shaders.switch.switch_in_do_while_loop_dynamic_vertex,Fail
|
||||||
|
dEQP-GLES3.functional.shaders.switch.switch_in_for_loop_dynamic_vertex,Fail
|
||||||
|
dEQP-GLES3.functional.shaders.switch.switch_in_if_dynamic_vertex,Fail
|
||||||
|
dEQP-GLES3.functional.shaders.switch.while_loop_in_switch_dynamic_vertex,Fail
|
||||||
|
|
|
||||||
|
|
@ -14,3 +14,7 @@ dEQP-GLES31.functional.ssbo.layout.random.nested_structs_arrays_instance_arrays.
|
||||||
dEQP-GLES31.functional.ssbo.layout.random.nested_structs_arrays_instance_arrays.22
|
dEQP-GLES31.functional.ssbo.layout.random.nested_structs_arrays_instance_arrays.22
|
||||||
|
|
||||||
KHR-GL.*.texture_swizzle.smoke
|
KHR-GL.*.texture_swizzle.smoke
|
||||||
|
|
||||||
|
# !41455
|
||||||
|
dEQP-GLES2.functional.shaders.struct.uniform.equal_fragment
|
||||||
|
dEQP-GLES2.functional.shaders.struct.uniform.not_equal_fragment
|
||||||
|
|
|
||||||
|
|
@ -220,3 +220,33 @@ dEQP-GLES3.functional.transform_feedback.random.separate.triangles.1,Crash
|
||||||
dEQP-GLES3.functional.transform_feedback.random.separate.triangles.4,Crash
|
dEQP-GLES3.functional.transform_feedback.random.separate.triangles.4,Crash
|
||||||
dEQP-GLES3.functional.transform_feedback.random.separate.triangles.6,Crash
|
dEQP-GLES3.functional.transform_feedback.random.separate.triangles.6,Crash
|
||||||
dEQP-GLES3.functional.transform_feedback.random_full_array_capture.separate.triangles.1,Crash
|
dEQP-GLES3.functional.transform_feedback.random_full_array_capture.separate.triangles.1,Crash
|
||||||
|
|
||||||
|
# !41455
|
||||||
|
dEQP-GLES3.functional.shaders.struct.uniform.equal_fragment,Fail
|
||||||
|
dEQP-GLES3.functional.shaders.switch.default_label_dynamic_fragment,Fail
|
||||||
|
dEQP-GLES3.functional.shaders.switch.default_not_last_dynamic_fragment,Fail
|
||||||
|
dEQP-GLES3.functional.shaders.switch.do_while_loop_in_switch_dynamic_fragment,Fail
|
||||||
|
dEQP-GLES3.functional.shaders.switch.do_while_loop_in_switch_dynamic_vertex,Fail
|
||||||
|
dEQP-GLES3.functional.shaders.switch.no_default_label_dynamic_fragment,Fail
|
||||||
|
dEQP-GLES3.functional.shaders.switch.switch_in_switch_dynamic_vertex,Fail
|
||||||
|
dEQP-GLES3.functional.shaders.switch.switch_in_while_loop_dynamic_vertex,Fail
|
||||||
|
dEQP-GLES3.functional.shaders.struct.uniform.not_equal_fragment,Fail
|
||||||
|
dEQP-GLES3.functional.shaders.switch.basic_dynamic_vertex,Fail
|
||||||
|
dEQP-GLES3.functional.shaders.switch.const_expr_in_label_dynamic_fragment,Fail
|
||||||
|
dEQP-GLES3.functional.shaders.switch.for_loop_in_switch_dynamic_vertex,Fail
|
||||||
|
dEQP-GLES3.functional.shaders.switch.if_in_switch_dynamic_vertex,Fail
|
||||||
|
dEQP-GLES3.functional.shaders.switch.scope_dynamic_vertex,Fail
|
||||||
|
dEQP-GLES3.functional.shaders.switch.switch_in_for_loop_dynamic_fragment,Fail
|
||||||
|
dEQP-GLES3.functional.shaders.switch.conditional_fall_through_2_dynamic_vertex,Fail
|
||||||
|
dEQP-GLES3.functional.shaders.switch.conditional_fall_through_dynamic_vertex,Fail
|
||||||
|
dEQP-GLES3.functional.shaders.switch.const_expr_in_label_dynamic_vertex,Fail
|
||||||
|
dEQP-GLES3.functional.shaders.switch.default_label_dynamic_vertex,Fail
|
||||||
|
dEQP-GLES3.functional.shaders.switch.default_not_last_dynamic_vertex,Fail
|
||||||
|
dEQP-GLES3.functional.shaders.switch.fall_through_default_dynamic_fragment,Fail
|
||||||
|
dEQP-GLES3.functional.shaders.switch.fall_through_default_dynamic_vertex,Fail
|
||||||
|
dEQP-GLES3.functional.shaders.switch.fall_through_dynamic_vertex,Fail
|
||||||
|
dEQP-GLES3.functional.shaders.switch.no_default_label_dynamic_vertex,Fail
|
||||||
|
dEQP-GLES3.functional.shaders.switch.switch_in_do_while_loop_dynamic_vertex,Fail
|
||||||
|
dEQP-GLES3.functional.shaders.switch.switch_in_for_loop_dynamic_vertex,Fail
|
||||||
|
dEQP-GLES3.functional.shaders.switch.switch_in_if_dynamic_vertex,Fail
|
||||||
|
dEQP-GLES3.functional.shaders.switch.while_loop_in_switch_dynamic_vertex,Fail
|
||||||
|
|
|
||||||
|
|
@ -10,3 +10,7 @@ dEQP-GLES31.functional.ssbo.layout.random.nested_structs_arrays_instance_arrays.
|
||||||
|
|
||||||
# Sometimes crashes, e.g. https://gitlab.freedesktop.org/kusma/mesa/-/jobs/4109419
|
# Sometimes crashes, e.g. https://gitlab.freedesktop.org/kusma/mesa/-/jobs/4109419
|
||||||
dEQP-GLES31.functional.compute.basic.empty
|
dEQP-GLES31.functional.compute.basic.empty
|
||||||
|
|
||||||
|
# !41455
|
||||||
|
dEQP-GLES2.functional.shaders.struct.uniform.equal_fragment
|
||||||
|
dEQP-GLES2.functional.shaders.struct.uniform.not_equal_fragment
|
||||||
|
|
|
||||||
|
|
@ -609,3 +609,14 @@ dEQP-GLES3.functional.transform_feedback.random_full_array_capture.interleaved.p
|
||||||
dEQP-GLES3.functional.transform_feedback.random_full_array_capture.interleaved.triangles.1,Crash
|
dEQP-GLES3.functional.transform_feedback.random_full_array_capture.interleaved.triangles.1,Crash
|
||||||
dEQP-GLES3.functional.transform_feedback.random_full_array_capture.separate.lines.6,Crash
|
dEQP-GLES3.functional.transform_feedback.random_full_array_capture.separate.lines.6,Crash
|
||||||
dEQP-GLES3.functional.transform_feedback.random_full_array_capture.separate.triangles.4,Crash
|
dEQP-GLES3.functional.transform_feedback.random_full_array_capture.separate.triangles.4,Crash
|
||||||
|
|
||||||
|
# !41455
|
||||||
|
dEQP-GLES3.functional.shaders.struct.uniform.equal_fragment,Fail
|
||||||
|
dEQP-GLES3.functional.shaders.switch.default_label_dynamic_fragment,Fail
|
||||||
|
dEQP-GLES3.functional.shaders.switch.default_not_last_dynamic_vertex,Fail
|
||||||
|
dEQP-GLES3.functional.shaders.switch.do_while_loop_in_switch_dynamic_vertex,Fail
|
||||||
|
dEQP-GLES3.functional.shaders.switch.no_default_label_dynamic_vertex,Fail
|
||||||
|
dEQP-GLES3.functional.shaders.switch.switch_in_do_while_loop_dynamic_vertex,Fail
|
||||||
|
dEQP-GLES3.functional.shaders.switch.switch_in_for_loop_dynamic_vertex,Fail
|
||||||
|
dEQP-GLES3.functional.shaders.switch.switch_in_switch_dynamic_vertex,Fail
|
||||||
|
dEQP-GLES3.functional.shaders.switch.while_loop_in_switch_dynamic_vertex,Fail
|
||||||
|
|
@ -22,3 +22,6 @@ spec@ext_framebuffer_object@fbo-blending-formats
|
||||||
# uprev Piglit in Mesa
|
# uprev Piglit in Mesa
|
||||||
spec@egl_ext_protected_content@conformance
|
spec@egl_ext_protected_content@conformance
|
||||||
|
|
||||||
|
# !41455
|
||||||
|
dEQP-GLES2.functional.shaders.struct.uniform.equal_fragment
|
||||||
|
dEQP-GLES2.functional.shaders.struct.uniform.not_equal_fragment
|
||||||
|
|
|
||||||
Loading…
Add table
Reference in a new issue