Coverage Report

View results by: Directories | Files

Path Line Coverage Function Coverage Region Coverage
src/spirv-tools/build/core_tables_body.inc
 66.27% (275/415)
100.00% (5/5)
 65.00% (260/400)
src/spirv-tools/external/spirv-headers/include/spirv/unified1/spirv.hpp11
  4.69% (3/64)
  4.69% (3/64)
  4.69% (3/64)
src/spirv-tools/include/spirv-tools/libspirv.hpp
 15.46% (15/97)
 23.08% (9/39)
 26.83% (11/41)
src/spirv-tools/source/assembly_grammar.cpp
 97.47% (77/79)
100.00% (9/9)
 95.56% (43/45)
src/spirv-tools/source/assembly_grammar.h
100.00% (6/6)
100.00% (3/3)
100.00% (4/4)
src/spirv-tools/source/binary.cpp
 96.83% (520/537)
 95.00% (19/20)
 80.61% (420/521)
src/spirv-tools/source/cfa.h
100.00% (183/183)
100.00% (12/12)
 72.22% (117/162)
src/spirv-tools/source/diagnostic.cpp
 48.98% (72/147)
 87.50% (7/8)
 53.95% (41/76)
src/spirv-tools/source/diagnostic.h
100.00% (9/9)
100.00% (3/3)
100.00% (7/7)
src/spirv-tools/source/disassemble.cpp
 59.57% (386/648)
 65.31% (32/49)
 51.08% (284/556)
src/spirv-tools/source/enum_set.h
 77.78% (154/198)
 78.12% (25/32)
 67.89% (129/190)
src/spirv-tools/source/ext_inst.cpp
100.00% (62/62)
100.00% (3/3)
100.00% (61/61)
src/spirv-tools/source/extensions.cpp
 91.67% (22/24)
100.00% (2/2)
 60.98% (25/41)
src/spirv-tools/source/instruction.h
100.00% (3/3)
100.00% (1/1)
100.00% (1/1)
src/spirv-tools/source/libspirv.cpp
 26.92% (28/104)
 34.78% (8/23)
 30.91% (17/55)
src/spirv-tools/source/name_mapper.cpp
 99.29% (279/281)
100.00% (10/10)
 97.93% (284/290)
src/spirv-tools/source/name_mapper.h
100.00% (8/8)
100.00% (3/3)
100.00% (3/3)
src/spirv-tools/source/opcode.cpp
 75.43% (488/647)
 78.38% (29/37)
 73.79% (380/515)
src/spirv-tools/source/operand.cpp
 83.74% (484/578)
 71.05% (27/38)
 84.30% (306/363)
src/spirv-tools/source/opt/aggressive_dead_code_elim_pass.cpp
 79.75% (894/1121)
 92.86% (52/56)
 69.89% (492/704)
src/spirv-tools/source/opt/aggressive_dead_code_elim_pass.h
100.00% (16/16)
100.00% (5/5)
100.00% (9/9)
src/spirv-tools/source/opt/amd_ext_to_khr.cpp
  0.00% (0/702)
  0.00% (0/17)
  0.00% (0/521)
src/spirv-tools/source/opt/amd_ext_to_khr.h
  0.00% (0/14)
  0.00% (0/2)
  0.00% (0/2)
src/spirv-tools/source/opt/analyze_live_input_pass.cpp
  0.00% (0/16)
  0.00% (0/2)
  0.00% (0/14)
src/spirv-tools/source/opt/analyze_live_input_pass.h
  0.00% (0/10)
  0.00% (0/3)
  0.00% (0/5)
src/spirv-tools/source/opt/basic_block.cpp
 86.38% (241/279)
 79.31% (23/29)
 72.73% (112/154)
src/spirv-tools/source/opt/basic_block.h
 73.44% (94/128)
 69.23% (27/39)
 72.34% (68/94)
src/spirv-tools/source/opt/block_merge_pass.cpp
100.00% (20/20)
100.00% (4/4)
100.00% (14/14)
src/spirv-tools/source/opt/block_merge_pass.h
100.00% (8/8)
100.00% (2/2)
100.00% (2/2)
src/spirv-tools/source/opt/block_merge_util.cpp
 93.87% (153/163)
 90.91% (10/11)
 78.79% (104/132)
src/spirv-tools/source/opt/build_module.cpp
 78.79% (26/33)
 80.00% (4/5)
 71.43% (10/14)
src/spirv-tools/source/opt/canonicalize_ids_pass.cpp
  0.00% (0/473)
  0.00% (0/19)
  0.00% (0/269)
src/spirv-tools/source/opt/canonicalize_ids_pass.h
  0.00% (0/13)
  0.00% (0/7)
  0.00% (0/7)
src/spirv-tools/source/opt/ccp_pass.cpp
 94.02% (236/251)
100.00% (17/17)
 77.04% (208/270)
src/spirv-tools/source/opt/ccp_pass.h
100.00% (10/10)
100.00% (3/3)
100.00% (3/3)
src/spirv-tools/source/opt/cfg.cpp
 73.73% (233/316)
 87.50% (21/24)
 62.75% (96/153)
src/spirv-tools/source/opt/cfg.h
 86.36% (38/44)
 85.71% (12/14)
 64.00% (32/50)
src/spirv-tools/source/opt/cfg_cleanup_pass.cpp
 86.96% (20/23)
100.00% (2/2)
 81.82% (9/11)
src/spirv-tools/source/opt/cfg_cleanup_pass.h
100.00% (6/6)
100.00% (3/3)
100.00% (3/3)
src/spirv-tools/source/opt/code_sink.cpp
  0.00% (0/321)
  0.00% (0/15)
  0.00% (0/195)
src/spirv-tools/source/opt/code_sink.h
  0.00% (0/9)
  0.00% (0/2)
  0.00% (0/2)
src/spirv-tools/source/opt/combine_access_chains.cpp
 63.67% (170/267)
 73.33% (11/15)
 52.26% (104/199)
src/spirv-tools/source/opt/combine_access_chains.h
100.00% (9/9)
100.00% (2/2)
100.00% (2/2)
src/spirv-tools/source/opt/compact_ids_pass.cpp
  0.00% (0/99)
  0.00% (0/3)
  0.00% (0/49)
src/spirv-tools/source/opt/compact_ids_pass.h
  0.00% (0/6)
  0.00% (0/2)
  0.00% (0/2)
src/spirv-tools/source/opt/composite.cpp
 94.74% (18/19)
100.00% (2/2)
 95.00% (19/20)
src/spirv-tools/source/opt/const_folding_rules.cpp
 82.37% (2182/2649)
 95.12% (117/123)
 52.92% (1513/2859)
src/spirv-tools/source/opt/const_folding_rules.h
 88.24% (30/34)
100.00% (7/7)
 90.91% (20/22)
src/spirv-tools/source/opt/constants.cpp
 75.85% (358/472)
 74.29% (26/35)
 52.38% (308/588)
src/spirv-tools/source/opt/constants.h
 53.01% (141/266)
 45.37% (49/108)
 48.66% (127/261)
src/spirv-tools/source/opt/convert_to_half_pass.cpp
  0.00% (0/641)
  0.00% (0/36)
  0.00% (0/294)
src/spirv-tools/source/opt/convert_to_half_pass.h
  0.00% (0/9)
  0.00% (0/5)
  0.00% (0/6)
src/spirv-tools/source/opt/convert_to_sampled_image_pass.cpp
  0.00% (0/334)
  0.00% (0/25)
  0.00% (0/225)
src/spirv-tools/source/opt/convert_to_sampled_image_pass.h
  0.00% (0/11)
  0.00% (0/4)
  0.00% (0/7)
src/spirv-tools/source/opt/copy_prop_arrays.cpp
 75.49% (659/873)
100.00% (36/36)
 62.94% (355/564)
src/spirv-tools/source/opt/copy_prop_arrays.h
100.00% (41/41)
100.00% (9/9)
 75.00% (15/20)
src/spirv-tools/source/opt/dead_branch_elim_pass.cpp
 92.80% (477/514)
 95.45% (21/22)
 85.71% (246/287)
src/spirv-tools/source/opt/dead_branch_elim_pass.h
100.00% (7/7)
100.00% (3/3)
100.00% (3/3)
src/spirv-tools/source/opt/dead_insert_elim_pass.cpp
 86.85% (185/213)
100.00% (9/9)
 85.22% (98/115)
src/spirv-tools/source/opt/dead_insert_elim_pass.h
100.00% (10/10)
100.00% (3/3)
100.00% (3/3)
src/spirv-tools/source/opt/dead_variable_elimination.cpp
  0.00% (0/73)
  0.00% (0/4)
  0.00% (0/43)
src/spirv-tools/source/opt/dead_variable_elimination.h
  0.00% (0/5)
  0.00% (0/2)
  0.00% (0/2)
src/spirv-tools/source/opt/debug_info_manager.cpp
  9.10% (66/725)
 36.11% (13/36)
  7.23% (45/622)
src/spirv-tools/source/opt/debug_info_manager.h
 13.04% (3/23)
 22.22% (2/9)
 28.57% (4/14)
src/spirv-tools/source/opt/decoration_manager.cpp
 71.95% (395/549)
 67.74% (21/31)
 55.59% (174/313)
src/spirv-tools/source/opt/decoration_manager.h
 16.00% (4/25)
 50.00% (2/4)
 21.43% (3/14)
src/spirv-tools/source/opt/def_use_manager.cpp
 73.97% (179/242)
 83.87% (26/31)
 70.41% (119/169)
src/spirv-tools/source/opt/def_use_manager.h
 94.12% (16/17)
 75.00% (3/4)
 89.19% (33/37)
src/spirv-tools/source/opt/desc_sroa.cpp
  0.00% (0/376)
  0.00% (0/16)
  0.00% (0/243)
src/spirv-tools/source/opt/desc_sroa.h
  0.00% (0/14)
  0.00% (0/3)
  0.00% (0/13)
src/spirv-tools/source/opt/desc_sroa_util.cpp
 23.17% (19/82)
 33.33% (3/9)
 12.63% (12/95)
src/spirv-tools/source/opt/dominator_analysis.cpp
 80.00% (32/40)
100.00% (2/2)
 86.11% (31/36)
src/spirv-tools/source/opt/dominator_analysis.h
 44.44% (20/45)
 42.11% (8/19)
 48.48% (16/33)
src/spirv-tools/source/opt/dominator_tree.cpp
 71.43% (150/210)
 80.00% (24/30)
 73.26% (63/86)
src/spirv-tools/source/opt/dominator_tree.h
 37.50% (42/112)
 29.63% (16/54)
 36.36% (32/88)
src/spirv-tools/source/opt/eliminate_dead_constant_pass.cpp
  0.00% (0/65)
  0.00% (0/2)
  0.00% (0/45)
src/spirv-tools/source/opt/eliminate_dead_constant_pass.h
  0.00% (0/1)
  0.00% (0/1)
  0.00% (0/1)
src/spirv-tools/source/opt/eliminate_dead_functions_pass.cpp
100.00% (25/25)
100.00% (2/2)
100.00% (10/10)
src/spirv-tools/source/opt/eliminate_dead_functions_pass.h
100.00% (5/5)
100.00% (2/2)
100.00% (2/2)
src/spirv-tools/source/opt/eliminate_dead_functions_util.cpp
 74.58% (44/59)
100.00% (2/2)
 37.04% (10/27)
src/spirv-tools/source/opt/eliminate_dead_io_components_pass.cpp
  0.00% (0/224)
  0.00% (0/5)
  0.00% (0/173)
src/spirv-tools/source/opt/eliminate_dead_io_components_pass.h
  0.00% (0/12)
  0.00% (0/3)
  0.00% (0/5)
src/spirv-tools/source/opt/eliminate_dead_members_pass.cpp
 84.91% (546/643)
 92.59% (25/27)
 57.45% (293/510)
src/spirv-tools/source/opt/eliminate_dead_members_pass.h
100.00% (14/14)
100.00% (2/2)
100.00% (2/2)
src/spirv-tools/source/opt/eliminate_dead_output_stores_pass.cpp
  0.00% (0/217)
  0.00% (0/14)
  0.00% (0/190)
src/spirv-tools/source/opt/eliminate_dead_output_stores_pass.h
  0.00% (0/10)
  0.00% (0/3)
  0.00% (0/5)
src/spirv-tools/source/opt/empty_pass.h
  0.00% (0/3)
  0.00% (0/3)
  0.00% (0/3)
src/spirv-tools/source/opt/feature_manager.cpp
 61.73% (50/81)
 66.67% (6/9)
 46.77% (29/62)
src/spirv-tools/source/opt/feature_manager.h
 78.95% (15/19)
 77.78% (7/9)
 80.00% (8/10)
src/spirv-tools/source/opt/fix_func_call_arguments.cpp
  0.00% (0/63)
  0.00% (0/5)
  0.00% (0/24)
src/spirv-tools/source/opt/fix_func_call_arguments.h
  0.00% (0/5)
  0.00% (0/3)
  0.00% (0/3)
src/spirv-tools/source/opt/fix_storage_class.cpp
 70.73% (203/287)
 78.57% (11/14)
 50.00% (114/228)
src/spirv-tools/source/opt/fix_storage_class.h
 11.11% (1/9)
 50.00% (1/2)
 50.00% (1/2)
src/spirv-tools/source/opt/flatten_decoration_pass.cpp
  0.00% (0/100)
  0.00% (0/1)
  0.00% (0/59)
src/spirv-tools/source/opt/flatten_decoration_pass.h
  0.00% (0/1)
  0.00% (0/1)
  0.00% (0/1)
src/spirv-tools/source/opt/fold.cpp
 89.40% (506/566)
 89.47% (17/19)
 75.00% (402/536)
src/spirv-tools/source/opt/fold.h
100.00% (19/19)
100.00% (5/5)
100.00% (11/11)
src/spirv-tools/source/opt/fold_spec_constant_op_and_composite_pass.cpp
  0.00% (0/233)
  0.00% (0/8)
  0.00% (0/197)
src/spirv-tools/source/opt/fold_spec_constant_op_and_composite_pass.h
  0.00% (0/13)
  0.00% (0/4)
  0.00% (0/6)
src/spirv-tools/source/opt/folding_rules.cpp
 93.69% (4632/4944)
 98.10% (155/158)
 69.29% (2299/3318)
src/spirv-tools/source/opt/folding_rules.h
 87.10% (27/31)
100.00% (6/6)
 90.48% (19/21)
src/spirv-tools/source/opt/freeze_spec_constant_value_pass.cpp
  0.00% (0/55)
  0.00% (0/2)
  0.00% (0/12)
src/spirv-tools/source/opt/freeze_spec_constant_value_pass.h
  0.00% (0/1)
  0.00% (0/1)
  0.00% (0/1)
src/spirv-tools/source/opt/function.cpp
 47.16% (108/229)
 61.90% (13/21)
 43.80% (60/137)
src/spirv-tools/source/opt/function.h
 60.19% (65/108)
 72.22% (26/36)
 56.06% (37/66)
src/spirv-tools/source/opt/graph.cpp
  0.00% (0/47)
  0.00% (0/3)
  0.00% (0/12)
src/spirv-tools/source/opt/graph.h
 14.29% (4/28)
 14.29% (2/14)
 20.00% (3/15)
src/spirv-tools/source/opt/graphics_robust_access_pass.cpp
  0.00% (0/736)
  0.00% (0/20)
  0.00% (0/361)
src/spirv-tools/source/opt/graphics_robust_access_pass.h
  0.00% (0/10)
  0.00% (0/3)
  0.00% (0/3)
src/spirv-tools/source/opt/if_conversion.cpp
 98.87% (263/266)
100.00% (14/14)
 93.92% (139/148)
src/spirv-tools/source/opt/if_conversion.h
100.00% (7/7)
100.00% (2/2)
100.00% (2/2)
src/spirv-tools/source/opt/inline_exhaustive_pass.cpp
 95.83% (46/48)
100.00% (5/5)
 96.30% (26/27)
src/spirv-tools/source/opt/inline_exhaustive_pass.h
100.00% (1/1)
100.00% (1/1)
100.00% (1/1)
src/spirv-tools/source/opt/inline_opaque_pass.cpp
  0.00% (0/86)
  0.00% (0/10)
  0.00% (0/51)
src/spirv-tools/source/opt/inline_opaque_pass.h
  0.00% (0/1)
  0.00% (0/1)
  0.00% (0/1)
src/spirv-tools/source/opt/inline_pass.cpp
 75.39% (527/699)
 86.36% (38/44)
 69.81% (252/361)
src/spirv-tools/source/opt/inline_pass.h
100.00% (1/1)
100.00% (1/1)
100.00% (1/1)
src/spirv-tools/source/opt/instruction.cpp
 62.83% (578/920)
 68.85% (42/61)
 65.24% (426/653)
src/spirv-tools/source/opt/instruction.h
 77.34% (273/353)
 80.21% (77/96)
 72.79% (222/305)
src/spirv-tools/source/opt/instruction_list.cpp
100.00% (12/12)
100.00% (2/2)
100.00% (3/3)
src/spirv-tools/source/opt/instruction_list.h
 74.00% (37/50)
 81.25% (13/16)
 86.96% (20/23)
src/spirv-tools/source/opt/interface_var_sroa.cpp
  0.00% (0/814)
  0.00% (0/55)
  0.00% (0/444)
src/spirv-tools/source/opt/interface_var_sroa.h
  0.00% (0/23)
  0.00% (0/10)
  0.00% (0/11)
src/spirv-tools/source/opt/interp_fixup_pass.cpp
 53.23% (33/62)
 85.71% (6/7)
 29.17% (14/48)
src/spirv-tools/source/opt/interp_fixup_pass.h
  7.14% (1/14)
 50.00% (1/2)
 50.00% (1/2)
src/spirv-tools/source/opt/invocation_interlock_placement_pass.cpp
  1.86% (9/483)
  6.67% (2/30)
  2.74% (6/219)
src/spirv-tools/source/opt/invocation_interlock_placement_pass.h
100.00% (2/2)
100.00% (2/2)
100.00% (2/2)
src/spirv-tools/source/opt/ir_builder.h
 42.47% (203/478)
 50.98% (26/51)
 48.11% (102/212)
src/spirv-tools/source/opt/ir_context.cpp
 57.21% (603/1054)
 58.70% (27/46)
 46.73% (243/520)
src/spirv-tools/source/opt/ir_context.h
 48.03% (280/583)
 45.38% (59/130)
 51.52% (136/264)
src/spirv-tools/source/opt/ir_loader.cpp
 87.03% (302/347)
100.00% (4/4)
 91.89% (238/259)
src/spirv-tools/source/opt/ir_loader.h
 83.33% (5/6)
 75.00% (3/4)
 75.00% (3/4)
src/spirv-tools/source/opt/iterator.h
 45.16% (42/93)
 46.67% (14/30)
 32.79% (20/61)
src/spirv-tools/source/opt/legalize_multidim_array_pass.cpp
  4.62% (9/195)
 18.18% (2/11)
  9.85% (13/132)
src/spirv-tools/source/opt/legalize_multidim_array_pass.h
100.00% (1/1)
100.00% (1/1)
100.00% (1/1)
src/spirv-tools/source/opt/licm_pass.cpp
  0.00% (0/95)
  0.00% (0/8)
  0.00% (0/57)
src/spirv-tools/source/opt/licm_pass.h
  0.00% (0/2)
  0.00% (0/2)
  0.00% (0/2)
src/spirv-tools/source/opt/liveness.cpp
  0.00% (0/359)
  0.00% (0/18)
  0.00% (0/342)
src/spirv-tools/source/opt/liveness.h
  0.00% (0/1)
  0.00% (0/1)
  0.00% (0/1)
src/spirv-tools/source/opt/local_access_chain_convert_pass.cpp
 93.74% (419/447)
100.00% (21/21)
 81.45% (202/248)
src/spirv-tools/source/opt/local_access_chain_convert_pass.h
100.00% (5/5)
100.00% (2/2)
100.00% (2/2)
src/spirv-tools/source/opt/local_redundancy_elimination.cpp
 75.51% (37/49)
 66.67% (2/3)
 55.56% (10/18)
src/spirv-tools/source/opt/local_redundancy_elimination.h
 88.89% (8/9)
 50.00% (1/2)
 50.00% (1/2)
src/spirv-tools/source/opt/local_single_block_elim_pass.cpp
 98.00% (245/250)
100.00% (10/10)
 90.44% (123/136)
src/spirv-tools/source/opt/local_single_block_elim_pass.h
100.00% (6/6)
100.00% (2/2)
100.00% (2/2)
src/spirv-tools/source/opt/local_single_store_elim_pass.cpp
 90.30% (242/268)
 93.33% (14/15)
 82.61% (95/115)
src/spirv-tools/source/opt/local_single_store_elim_pass.h
100.00% (6/6)
100.00% (2/2)
100.00% (2/2)
src/spirv-tools/source/opt/log.h
 67.86% (19/28)
100.00% (4/4)
 64.29% (9/14)
src/spirv-tools/source/opt/loop_dependence.cpp
  0.00% (0/1246)
  0.00% (0/31)
  0.00% (0/554)
src/spirv-tools/source/opt/loop_dependence.h
  0.00% (0/91)
  0.00% (0/51)
  0.00% (0/83)
src/spirv-tools/source/opt/loop_dependence_helpers.cpp
  0.00% (0/387)
  0.00% (0/26)
  0.00% (0/211)
src/spirv-tools/source/opt/loop_descriptor.cpp
 56.63% (397/701)
 42.22% (19/45)
 46.17% (313/678)
src/spirv-tools/source/opt/loop_descriptor.h
 42.50% (68/160)
 37.68% (26/69)
 38.85% (54/139)
src/spirv-tools/source/opt/loop_fission.cpp
  0.00% (0/279)
  0.00% (0/15)
  0.00% (0/191)
src/spirv-tools/source/opt/loop_fission.h
  0.00% (0/2)
  0.00% (0/2)
  0.00% (0/2)
src/spirv-tools/source/opt/loop_fusion.cpp
  0.00% (0/532)
  0.00% (0/29)
  0.00% (0/292)
src/spirv-tools/source/opt/loop_fusion.h
  0.00% (0/4)
  0.00% (0/1)
  0.00% (0/5)
src/spirv-tools/source/opt/loop_fusion_pass.cpp
  0.00% (0/32)
  0.00% (0/2)
  0.00% (0/21)
src/spirv-tools/source/opt/loop_fusion_pass.h
  0.00% (0/2)
  0.00% (0/2)
  0.00% (0/4)
src/spirv-tools/source/opt/loop_peeling.cpp
  0.00% (0/1012)
  0.00% (0/41)
  0.00% (0/581)
src/spirv-tools/source/opt/loop_peeling.h
  0.00% (0/68)
  0.00% (0/11)
  0.00% (0/62)
src/spirv-tools/source/opt/loop_unroller.cpp
 62.56% (376/601)
 75.00% (27/36)
 54.26% (223/411)
src/spirv-tools/source/opt/loop_unroller.h
 90.00% (9/10)
 75.00% (3/4)
 85.71% (6/7)
src/spirv-tools/source/opt/loop_unswitch_pass.cpp
  0.00% (0/476)
  0.00% (0/23)
  0.00% (0/314)
src/spirv-tools/source/opt/loop_unswitch_pass.h
  0.00% (0/1)
  0.00% (0/1)
  0.00% (0/1)
src/spirv-tools/source/opt/loop_utils.cpp
  0.00% (0/552)
  0.00% (0/30)
  0.00% (0/333)
src/spirv-tools/source/opt/loop_utils.h
 50.00% (4/8)
 20.00% (1/5)
 55.56% (5/9)
src/spirv-tools/source/opt/mem_pass.cpp
 95.07% (386/406)
100.00% (30/30)
 88.37% (228/258)
src/spirv-tools/source/opt/mem_pass.h
100.00% (7/7)
100.00% (3/3)
100.00% (5/5)
src/spirv-tools/source/opt/merge_return_pass.cpp
 79.11% (655/828)
 93.75% (30/32)
 70.06% (372/531)
src/spirv-tools/source/opt/merge_return_pass.h
 73.08% (19/26)
 81.82% (9/11)
 91.67% (22/24)
src/spirv-tools/source/opt/modify_maximal_reconvergence.cpp
  0.00% (0/73)
  0.00% (0/3)
  0.00% (0/32)
src/spirv-tools/source/opt/modify_maximal_reconvergence.h
  0.00% (0/9)
  0.00% (0/3)
  0.00% (0/5)
src/spirv-tools/source/opt/module.cpp
 72.90% (226/310)
 66.67% (12/18)
 72.78% (123/169)
src/spirv-tools/source/opt/module.h
 48.88% (109/223)
 49.44% (44/89)
 50.00% (50/100)
src/spirv-tools/source/opt/null_pass.h
  0.00% (0/2)
  0.00% (0/2)
  0.00% (0/2)
src/spirv-tools/source/opt/opextinst_forward_ref_fixup_pass.cpp
 36.21% (21/58)
 50.00% (2/4)
 15.56% (7/45)
src/spirv-tools/source/opt/opextinst_forward_ref_fixup_pass.h
  7.14% (1/14)
 50.00% (1/2)
 50.00% (1/2)
src/spirv-tools/source/opt/optimizer.cpp
 30.43% (308/1012)
 36.64% (48/131)
 15.48% (85/549)
src/spirv-tools/source/opt/pass.cpp
 15.70% (19/121)
 42.86% (3/7)
 17.07% (14/82)
src/spirv-tools/source/opt/pass.h
 82.61% (19/23)
 84.62% (11/13)
 84.62% (11/13)
src/spirv-tools/source/opt/pass_manager.cpp
 59.42% (41/69)
100.00% (2/2)
 63.33% (19/30)
src/spirv-tools/source/opt/pass_manager.h
 60.00% (24/40)
 63.64% (7/11)
 52.00% (13/25)
src/spirv-tools/source/opt/private_to_local_pass.cpp
 83.87% (156/186)
100.00% (10/10)
 76.70% (79/103)
src/spirv-tools/source/opt/private_to_local_pass.h
100.00% (9/9)
100.00% (2/2)
100.00% (2/2)
src/spirv-tools/source/opt/propagator.cpp
 89.34% (218/244)
 93.33% (14/15)
 81.88% (131/160)
src/spirv-tools/source/opt/propagator.h
100.00% (32/32)
100.00% (12/12)
 72.97% (27/37)
src/spirv-tools/source/opt/reduce_load_size.cpp
 95.10% (136/143)
100.00% (5/5)
 78.95% (75/95)
src/spirv-tools/source/opt/reduce_load_size.h
100.00% (10/10)
100.00% (3/3)
100.00% (4/4)
src/spirv-tools/source/opt/redundancy_elimination.cpp
 93.75% (30/32)
100.00% (2/2)
 93.33% (14/15)
src/spirv-tools/source/opt/redundancy_elimination.h
100.00% (1/1)
100.00% (1/1)
100.00% (1/1)
src/spirv-tools/source/opt/reflect.h
100.00% (32/32)
100.00% (8/8)
100.00% (28/28)
src/spirv-tools/source/opt/register_pressure.cpp
  0.00% (0/509)
  0.00% (0/27)
  0.00% (0/281)
src/spirv-tools/source/opt/register_pressure.h
  0.00% (0/60)
  0.00% (0/13)
  0.00% (0/27)
src/spirv-tools/source/opt/relax_float_ops_pass.cpp
  0.00% (0/151)
  0.00% (0/10)
  0.00% (0/50)
src/spirv-tools/source/opt/relax_float_ops_pass.h
  0.00% (0/9)
  0.00% (0/5)
  0.00% (0/6)
src/spirv-tools/source/opt/remove_dontinline_pass.cpp
  0.00% (0/25)
  0.00% (0/3)
  0.00% (0/10)
src/spirv-tools/source/opt/remove_dontinline_pass.h
  0.00% (0/1)
  0.00% (0/1)
  0.00% (0/1)
src/spirv-tools/source/opt/remove_duplicates_pass.cpp
  0.00% (0/155)
  0.00% (0/6)
  0.00% (0/89)
src/spirv-tools/source/opt/remove_duplicates_pass.h
  0.00% (0/1)
  0.00% (0/1)
  0.00% (0/1)
src/spirv-tools/source/opt/remove_unused_interface_variables_pass.cpp
 98.68% (75/76)
100.00% (7/7)
 94.83% (55/58)
src/spirv-tools/source/opt/remove_unused_interface_variables_pass.h
100.00% (3/3)
100.00% (1/1)
100.00% (1/1)
src/spirv-tools/source/opt/replace_desc_array_access_using_var_index.cpp
  0.00% (0/361)
  0.00% (0/29)
  0.00% (0/257)
src/spirv-tools/source/opt/replace_desc_array_access_using_var_index.h
  0.00% (0/9)
  0.00% (0/3)
  0.00% (0/3)
src/spirv-tools/source/opt/replace_invalid_opc.cpp
  0.00% (0/210)
  0.00% (0/8)
  0.00% (0/129)
src/spirv-tools/source/opt/replace_invalid_opc.h
  0.00% (0/1)
  0.00% (0/1)
  0.00% (0/1)
src/spirv-tools/source/opt/resolve_binding_conflicts_pass.cpp
  0.00% (0/213)
  0.00% (0/14)
  0.00% (0/107)
src/spirv-tools/source/opt/resolve_binding_conflicts_pass.h
  0.00% (0/1)
  0.00% (0/1)
  0.00% (0/1)
src/spirv-tools/source/opt/scalar_analysis.cpp
  0.00% (0/749)
  0.00% (0/46)
  0.00% (0/509)
src/spirv-tools/source/opt/scalar_analysis.h
  0.00% (0/48)
  0.00% (0/19)
  0.00% (0/21)
src/spirv-tools/source/opt/scalar_analysis_nodes.h
  0.00% (0/109)
  0.00% (0/64)
  0.00% (0/105)
src/spirv-tools/source/opt/scalar_analysis_simplification.cpp
  0.00% (0/254)
  0.00% (0/10)
  0.00% (0/178)
src/spirv-tools/source/opt/scalar_replacement_pass.cpp
 78.48% (773/985)
 87.80% (36/41)
 61.53% (355/577)
src/spirv-tools/source/opt/scalar_replacement_pass.h
100.00% (19/19)
100.00% (3/3)
 61.11% (11/18)
src/spirv-tools/source/opt/set_spec_constant_default_value_pass.cpp
  0.00% (0/228)
  0.00% (0/10)
  0.00% (0/167)
src/spirv-tools/source/opt/set_spec_constant_default_value_pass.h
  0.00% (0/7)
  0.00% (0/5)
  0.00% (0/9)
src/spirv-tools/source/opt/simplification_pass.cpp
 98.92% (183/185)
100.00% (9/9)
 98.57% (69/70)
src/spirv-tools/source/opt/simplification_pass.h
100.00% (9/9)
100.00% (2/2)
100.00% (2/2)
src/spirv-tools/source/opt/split_combined_image_sampler_pass.cpp
  0.00% (0/569)
  0.00% (0/20)
  0.00% (0/358)
src/spirv-tools/source/opt/split_combined_image_sampler_pass.h
  0.00% (0/19)
  0.00% (0/7)
  0.00% (0/19)
src/spirv-tools/source/opt/spread_volatile_semantics.cpp
  0.00% (0/278)
  0.00% (0/19)
  0.00% (0/125)
src/spirv-tools/source/opt/spread_volatile_semantics.h
  0.00% (0/16)
  0.00% (0/5)
  0.00% (0/10)
src/spirv-tools/source/opt/ssa_rewrite_pass.cpp
 85.44% (311/364)
 85.71% (18/21)
 69.65% (218/313)
src/spirv-tools/source/opt/ssa_rewrite_pass.h
 97.14% (34/35)
 95.24% (20/21)
 97.22% (35/36)
src/spirv-tools/source/opt/strength_reduction_pass.cpp
  0.00% (0/120)
  0.00% (0/7)
  0.00% (0/89)
src/spirv-tools/source/opt/strength_reduction_pass.h
  0.00% (0/1)
  0.00% (0/1)
  0.00% (0/1)
src/spirv-tools/source/opt/strip_debug_info_pass.cpp
  0.00% (0/84)
  0.00% (0/4)
  0.00% (0/36)
src/spirv-tools/source/opt/strip_debug_info_pass.h
  0.00% (0/1)
  0.00% (0/1)
  0.00% (0/1)
src/spirv-tools/source/opt/strip_nonsemantic_info_pass.cpp
  0.00% (0/85)
  0.00% (0/2)
  0.00% (0/59)
src/spirv-tools/source/opt/strip_nonsemantic_info_pass.h
  0.00% (0/8)
  0.00% (0/2)
  0.00% (0/2)
src/spirv-tools/source/opt/struct_cfg_analysis.cpp
 79.07% (136/172)
 71.43% (10/14)
 71.11% (64/90)
src/spirv-tools/source/opt/struct_cfg_analysis.h
 90.48% (19/21)
100.00% (3/3)
 91.67% (11/12)
src/spirv-tools/source/opt/struct_packing_pass.cpp
  0.00% (0/309)
  0.00% (0/20)
  0.00% (0/288)
src/spirv-tools/source/opt/struct_packing_pass.h
  0.00% (0/9)
  0.00% (0/2)
  0.00% (0/2)
src/spirv-tools/source/opt/switch_descriptorset_pass.cpp
  0.00% (0/20)
  0.00% (0/1)
  0.00% (0/10)
src/spirv-tools/source/opt/switch_descriptorset_pass.h
  0.00% (0/7)
  0.00% (0/3)
  0.00% (0/5)
src/spirv-tools/source/opt/tree_iterator.h
 88.31% (68/77)
 94.44% (17/18)
 91.84% (45/49)
src/spirv-tools/source/opt/trim_capabilities_pass.cpp
  0.00% (0/538)
  0.00% (0/36)
  0.00% (0/469)
src/spirv-tools/source/opt/trim_capabilities_pass.h
  0.00% (0/24)
  0.00% (0/5)
  0.00% (0/11)
src/spirv-tools/source/opt/type_manager.cpp
 31.11% (369/1186)
 78.95% (15/19)
 30.59% (216/706)
src/spirv-tools/source/opt/type_manager.h
 31.65% (25/79)
 21.21% (7/33)
 33.75% (27/80)
src/spirv-tools/source/opt/types.cpp
 38.27% (310/810)
 42.45% (45/106)
 32.01% (380/1187)
src/spirv-tools/source/opt/types.h
 37.97% (71/187)
 35.95% (55/153)
 41.67% (75/180)
src/spirv-tools/source/opt/unify_const_pass.cpp
  0.00% (0/65)
  0.00% (0/8)
  0.00% (0/42)
src/spirv-tools/source/opt/unify_const_pass.h
  0.00% (0/1)
  0.00% (0/1)
  0.00% (0/1)
src/spirv-tools/source/opt/upgrade_memory_model.cpp
  0.00% (0/989)
  0.00% (0/31)
  0.00% (0/446)
src/spirv-tools/source/opt/upgrade_memory_model.h
  0.00% (0/7)
  0.00% (0/2)
  0.00% (0/3)
src/spirv-tools/source/opt/value_number_table.cpp
 89.77% (193/215)
100.00% (9/9)
 88.59% (132/149)
src/spirv-tools/source/opt/value_number_table.h
100.00% (5/5)
100.00% (3/3)
100.00% (5/5)
src/spirv-tools/source/opt/vector_dce.cpp
 91.76% (334/364)
100.00% (20/20)
 80.13% (125/156)
src/spirv-tools/source/opt/vector_dce.h
100.00% (14/14)
100.00% (4/4)
100.00% (10/10)
src/spirv-tools/source/opt/workaround1209.cpp
  0.00% (0/35)
  0.00% (0/2)
  0.00% (0/18)
src/spirv-tools/source/opt/workaround1209.h
  0.00% (0/1)
  0.00% (0/1)
  0.00% (0/1)
src/spirv-tools/source/opt/wrap_opkill.cpp
 79.11% (125/158)
 87.50% (7/8)
 63.25% (74/117)
src/spirv-tools/source/opt/wrap_opkill.h
100.00% (9/9)
100.00% (3/3)
100.00% (4/4)
src/spirv-tools/source/parsed_operand.cpp
 82.43% (61/74)
100.00% (1/1)
 82.93% (34/41)
src/spirv-tools/source/print.cpp
100.00% (6/6)
100.00% (6/6)
100.00% (6/6)
src/spirv-tools/source/print.h
100.00% (8/8)
100.00% (3/3)
100.00% (8/8)
src/spirv-tools/source/spirv_endian.cpp
 91.18% (31/34)
 75.00% (3/4)
 95.92% (47/49)
src/spirv-tools/source/spirv_optimizer_options.cpp
 57.14% (12/21)
 57.14% (4/7)
 57.14% (4/7)
src/spirv-tools/source/spirv_optimizer_options.h
100.00% (5/5)
100.00% (1/1)
100.00% (6/6)
src/spirv-tools/source/spirv_target_env.cpp
 17.92% (69/385)
 50.00% (6/12)
 11.03% (46/417)
src/spirv-tools/source/spirv_validator_options.cpp
 13.83% (13/94)
 17.65% (3/17)
 14.12% (12/85)
src/spirv-tools/source/spirv_validator_options.h
100.00% (13/13)
100.00% (1/1)
100.00% (14/14)
src/spirv-tools/source/table.cpp
 63.16% (24/38)
100.00% (3/3)
 58.06% (18/31)
src/spirv-tools/source/table2.cpp
 79.14% (239/302)
 91.18% (31/34)
 72.89% (121/166)
src/spirv-tools/source/table2.h
 50.00% (3/6)
 50.00% (3/6)
 66.67% (6/9)
src/spirv-tools/source/text.cpp
 97.48% (657/674)
 92.86% (13/14)
 90.89% (489/538)
src/spirv-tools/source/text_handler.cpp
 98.31% (291/296)
100.00% (24/24)
 96.52% (194/201)
src/spirv-tools/source/text_handler.h
 66.67% (28/42)
 80.00% (8/10)
 71.43% (15/21)
src/spirv-tools/source/to_string.cpp
100.00% (17/17)
100.00% (1/1)
 66.67% (10/15)
src/spirv-tools/source/util/bit_vector.cpp
 32.00% (16/50)
 33.33% (1/3)
 34.78% (8/23)
src/spirv-tools/source/util/bit_vector.h
 95.83% (46/48)
100.00% (5/5)
 95.83% (23/24)
src/spirv-tools/source/util/bitutils.h
 89.36% (84/94)
100.00% (9/9)
 65.91% (58/88)
src/spirv-tools/source/util/hash_combine.h
 92.31% (12/13)
 75.00% (3/4)
 80.00% (4/5)
src/spirv-tools/source/util/hex_float.h
 86.60% (627/724)
 71.79% (84/117)
 83.20% (401/482)
src/spirv-tools/source/util/ilist.h
 94.12% (96/102)
 96.15% (25/26)
 72.22% (52/72)
src/spirv-tools/source/util/ilist_node.h
 35.29% (36/102)
 66.67% (8/12)
 38.21% (47/123)
src/spirv-tools/source/util/index_range.h
100.00% (9/9)
100.00% (6/6)
 90.91% (10/11)
src/spirv-tools/source/util/make_unique.h
100.00% (3/3)
100.00% (1/1)
100.00% (1/1)
src/spirv-tools/source/util/parse_number.cpp
 89.27% (158/177)
100.00% (7/7)
 88.14% (104/118)
src/spirv-tools/source/util/parse_number.h
 93.42% (71/76)
100.00% (9/9)
 89.29% (50/56)
src/spirv-tools/source/util/small_vector.h
 79.24% (187/236)
 89.29% (25/28)
 76.22% (141/185)
src/spirv-tools/source/util/span.h
 85.71% (12/14)
 88.89% (8/9)
 84.21% (16/19)
src/spirv-tools/source/util/string_utils.cpp
 53.85% (14/26)
 50.00% (1/2)
 53.33% (16/30)
src/spirv-tools/source/util/string_utils.h
 90.16% (55/61)
 85.71% (6/7)
 84.21% (32/38)
src/spirv-tools/source/util/timer.cpp
 18.97% (11/58)
100.00% (4/4)
 20.83% (10/48)
src/spirv-tools/source/util/timer.h
 13.48% (12/89)
 20.00% (4/20)
 13.04% (9/69)
src/spirv-tools/source/val/basic_block.cpp
 73.91% (102/138)
 71.05% (27/38)
 82.26% (51/62)
src/spirv-tools/source/val/basic_block.h
 88.89% (40/45)
 90.91% (20/22)
 85.71% (24/28)
src/spirv-tools/source/val/construct.cpp
 94.90% (149/157)
 92.86% (13/14)
 79.17% (114/144)
src/spirv-tools/source/val/construct.h
100.00% (6/6)
100.00% (2/2)
100.00% (4/4)
src/spirv-tools/source/val/decoration.h
 76.19% (16/21)
 77.78% (7/9)
 70.27% (26/37)
src/spirv-tools/source/val/function.cpp
 97.73% (344/352)
 95.00% (38/40)
 76.72% (201/262)
src/spirv-tools/source/val/function.h
 67.57% (25/37)
 71.43% (10/14)
 71.43% (10/14)
src/spirv-tools/source/val/instruction.cpp
 56.52% (13/23)
 42.86% (3/7)
 52.63% (10/19)
src/spirv-tools/source/val/instruction.h
 92.31% (36/39)
 95.00% (19/20)
 73.81% (31/42)
src/spirv-tools/source/val/validate.cpp
 87.35% (283/324)
 83.33% (10/12)
 89.78% (281/313)
src/spirv-tools/source/val/validate_adjacency.cpp
 90.00% (81/90)
100.00% (1/1)
 86.00% (43/50)
src/spirv-tools/source/val/validate_annotation.cpp
 65.97% (378/573)
 85.71% (12/14)
 64.89% (268/413)
src/spirv-tools/source/val/validate_arithmetics.cpp
 49.11% (359/731)
 33.33% (1/3)
 57.01% (305/535)
src/spirv-tools/source/val/validate_atomics.cpp
 56.10% (207/369)
100.00% (7/7)
 59.51% (169/284)
src/spirv-tools/source/val/validate_barriers.cpp
 71.29% (72/101)
100.00% (2/2)
 68.52% (37/54)
src/spirv-tools/source/val/validate_bitwise.cpp
 90.00% (153/170)
100.00% (2/2)
 94.81% (128/135)
src/spirv-tools/source/val/validate_builtins.cpp
  2.85% (125/4382)
  4.52% (8/177)
  5.38% (102/1897)
src/spirv-tools/source/val/validate_capability.cpp
  9.98% (40/401)
  5.26% (1/19)
 15.82% (59/373)
src/spirv-tools/source/val/validate_cfg.cpp
 87.55% (893/1020)
 96.77% (30/31)
 86.40% (597/691)
src/spirv-tools/source/val/validate_composites.cpp
 45.15% (419/928)
 71.43% (10/14)
 40.30% (270/670)
src/spirv-tools/source/val/validate_constants.cpp
 60.25% (341/566)
 80.00% (8/10)
 64.27% (223/347)
src/spirv-tools/source/val/validate_conversion.cpp
 55.15% (359/651)
100.00% (1/1)
 64.42% (353/548)
src/spirv-tools/source/val/validate_debug.cpp
100.00% (41/41)
100.00% (3/3)
100.00% (26/26)
src/spirv-tools/source/val/validate_decorations.cpp
 37.36% (774/2072)
 73.08% (38/52)
 40.86% (662/1620)
src/spirv-tools/source/val/validate_derivatives.cpp
 97.60% (122/125)
100.00% (3/3)
 98.04% (50/51)
src/spirv-tools/source/val/validate_dot_product.cpp
  4.97% (8/161)
 50.00% (1/2)
  2.75% (3/109)
src/spirv-tools/source/val/validate_execution_limitations.cpp
 83.33% (35/42)
100.00% (1/1)
 90.00% (18/20)
src/spirv-tools/source/val/validate_extensions.cpp
 17.36% (581/3347)
 10.00% (6/60)
 14.62% (428/2928)
src/spirv-tools/source/val/validate_function.cpp
 64.94% (213/328)
 66.67% (4/6)
 72.60% (151/208)
src/spirv-tools/source/val/validate_graph.cpp
  1.68% (7/416)
  5.56% (1/18)
  1.34% (3/224)
src/spirv-tools/source/val/validate_group.cpp
  4.65% (8/172)
 14.29% (1/7)
  2.83% (3/106)
src/spirv-tools/source/val/validate_id.cpp
100.00% (216/216)
100.00% (5/5)
 99.36% (155/156)
src/spirv-tools/source/val/validate_image.cpp
 63.17% (1353/2142)
 84.78% (39/46)
 61.96% (1044/1685)
src/spirv-tools/source/val/validate_instruction.cpp
 77.60% (291/375)
100.00% (13/13)
 81.06% (214/264)
src/spirv-tools/source/val/validate_interfaces.cpp
 12.25% (75/612)
 30.77% (4/13)
 10.34% (40/387)
src/spirv-tools/source/val/validate_invalid_type.cpp
 69.40% (93/134)
100.00% (1/1)
 83.70% (77/92)
src/spirv-tools/source/val/validate_layout.cpp
 59.95% (220/367)
100.00% (4/4)
 58.70% (162/276)
src/spirv-tools/source/val/validate_literals.cpp
100.00% (49/49)
100.00% (3/3)
 76.74% (33/43)
src/spirv-tools/source/val/validate_logical_pointers.cpp
 36.10% (318/881)
 37.50% (6/16)
 46.91% (266/567)
src/spirv-tools/source/val/validate_logicals.cpp
 94.37% (218/231)
100.00% (2/2)
 91.94% (171/186)
src/spirv-tools/source/val/validate_memory.cpp
 25.43% (769/3024)
 31.25% (15/48)
 29.16% (638/2188)
src/spirv-tools/source/val/validate_memory_semantics.cpp
 51.29% (119/232)
100.00% (1/1)
 68.12% (94/138)
src/spirv-tools/source/val/validate_mesh_shading.cpp
  7.55% (12/159)
 25.00% (1/4)
  6.90% (6/87)
src/spirv-tools/source/val/validate_misc.cpp
 11.11% (23/207)
 28.57% (2/7)
 18.75% (18/96)
src/spirv-tools/source/val/validate_mode_setting.cpp
 56.60% (712/1258)
 84.38% (27/32)
 54.76% (368/672)
src/spirv-tools/source/val/validate_non_uniform.cpp
  6.04% (25/414)
 14.29% (2/14)
  5.88% (16/272)
src/spirv-tools/source/val/validate_primitives.cpp
 57.89% (22/38)
100.00% (1/1)
 56.25% (9/16)
src/spirv-tools/source/val/validate_ray_query.cpp
  3.06% (9/294)
 25.00% (1/4)
  1.07% (3/281)
src/spirv-tools/source/val/validate_ray_tracing.cpp
  3.94% (8/203)
 14.29% (1/7)
  2.80% (3/107)
src/spirv-tools/source/val/validate_ray_tracing_reorder.cpp
  4.45% (58/1302)
 10.53% (2/19)
  0.75% (6/805)
src/spirv-tools/source/val/validate_scopes.cpp
 25.60% (86/336)
 44.44% (4/9)
 33.66% (68/202)
src/spirv-tools/source/val/validate_small_type_uses.cpp
 20.83% (5/24)
100.00% (1/1)
 33.33% (7/21)
src/spirv-tools/source/val/validate_tensor.cpp
  4.89% (9/184)
 14.29% (1/7)
  2.68% (3/112)
src/spirv-tools/source/val/validate_tensor_layout.cpp
  5.74% (7/122)
 16.67% (1/6)
  3.41% (3/88)
src/spirv-tools/source/val/validate_type.cpp
 47.77% (449/940)
 59.09% (13/22)
 53.45% (364/681)
src/spirv-tools/source/val/validation_state.cpp
 36.64% (982/2680)
 72.85% (110/151)
 32.80% (744/2268)
src/spirv-tools/source/val/validation_state.h
 60.84% (174/286)
 73.08% (57/78)
 53.33% (72/135)
src/spirv-tools/test/fuzzers/random_generator.cpp
 73.33% (44/60)
 63.64% (7/11)
 50.00% (25/50)
src/spirv-tools/test/fuzzers/random_generator.h
100.00% (1/1)
100.00% (1/1)
100.00% (1/1)
src/spirv-tools/test/fuzzers/spvtools_as_fuzzer.cpp
 95.24% (40/42)
100.00% (1/1)
 92.86% (13/14)
src/spirv-tools/test/fuzzers/spvtools_binary_parser_fuzzer.cpp
 80.95% (17/21)
100.00% (1/1)
 80.00% (8/10)
src/spirv-tools/test/fuzzers/spvtools_dis_fuzzer.cpp
 95.45% (42/44)
100.00% (1/1)
 94.12% (16/17)
src/spirv-tools/test/fuzzers/spvtools_opt_fuzzer_common.cpp
 94.59% (35/37)
100.00% (2/2)
 93.33% (14/15)
src/spirv-tools/test/fuzzers/spvtools_opt_legalization_fuzzer.cpp
100.00% (9/9)
100.00% (2/2)
100.00% (2/2)
src/spirv-tools/test/fuzzers/spvtools_opt_performance_fuzzer.cpp
100.00% (9/9)
100.00% (2/2)
100.00% (2/2)
src/spirv-tools/test/fuzzers/spvtools_opt_size_fuzzer.cpp
100.00% (9/9)
100.00% (2/2)
100.00% (2/2)
src/spirv-tools/test/fuzzers/spvtools_val_fuzzer.cpp
 89.47% (17/19)
100.00% (2/2)
 87.50% (7/8)
Totals
 45.54% (42847/94085)
 52.49% (3066/5841)
 42.42% (27682/65260)