SPIRV-Tools/source/util
Steven Perron d42f65e7c1 Use a bit vector in ADCE
The unordered_set in ADCE that holds all of the live instructions takes
a very long time to be destroyed.  In some shaders, it takes over 40% of
the time.

If we look at the unique ids of the live instructions, I believe they
are dense enough make a simple bit vector a good choice for to hold that
data.  When I check the density of the bit vector for larger shaders, we
are usually using less than 4 bytes per element in the vector, and
almost always less than 16.

So, in this commit, I introduce a simple bit vector class, and
use it in ADCE.

This help improve the compile time for some shaders on windows by the
40% mentioned above.

Contributes to https://github.com/KhronosGroup/SPIRV-Tools/issues/1328.
2018-04-13 16:38:02 -04:00
..
bit_stream.cpp Re-format files in source, source/opt, source/util, source/val and tools. 2017-11-08 14:03:08 -05:00
bit_stream.h Re-format files in source, source/opt, source/util, source/val and tools. 2017-11-08 14:03:08 -05:00
bit_vector.cpp Use a bit vector in ADCE 2018-04-13 16:38:02 -04:00
bit_vector.h Use a bit vector in ADCE 2018-04-13 16:38:02 -04:00
bitutils.h Add barrier instructions validation pass 2018-02-05 13:14:55 -05:00
hex_float.h hex_float: Use max_digits10 for the float precision 2018-04-03 12:53:10 -04:00
huffman_codec.h Re-format files in source, source/opt, source/util, source/val and tools. 2017-11-08 14:03:08 -05:00
ilist_node.h Re-format files in source, source/opt, source/util, source/val and tools. 2017-11-08 14:03:08 -05:00
ilist.h Change merge return pass to handle structured cfg. 2018-03-19 13:49:04 -04:00
move_to_front.h Fixed harmless uninit var warning 2018-01-31 17:49:01 -05:00
parse_number.cpp Re-format source tree - NFC. 2017-11-27 14:31:49 -05:00
parse_number.h Re-format files in source, source/opt, source/util, source/val and tools. 2017-11-08 14:03:08 -05:00
string_utils.cpp Added option --preserve-numeric-ids to tools/spirv-as 2017-04-13 14:13:33 -04:00
string_utils.h Validator checks if operands require extension 2017-03-14 13:39:43 -04:00
timer.cpp Add --time-report to spirv-opt 2018-03-20 21:30:06 -04:00
timer.h Add --time-report to spirv-opt 2018-03-20 21:30:06 -04:00