SPIRV-Tools/source
Steven Perron 1f7b1f1bf7 Small vector optimization for operands.
We replace the std::vector in the Operand class by a new class that does
a small size optimization.  This helps improve compile time on Windows.

Tested on three sets of shaders.  Trying various values for the small
vector.  The optimal value for the operand class was 2.  However, for
the Instruction class, using an std::vector was optimal.  Size of "0"
means that an std::vector was used.

                Instruction size
	        0      4      8
Operand Size

0               489    544    684
1               593    487
2               469    570
4               473
8               505

This is a single thread run of ~120 shaders.  For the multithreaded run
the results were the similar.  The basline time was ~62sec.  The
optimal configuration was an 2 for the OperandData and an
std::vector for the OperandList with a compile time of ~38sec.  Similar
expiriments were done with other sets of shaders.  The compile time still
improved, but not as much.

Contributes to https://github.com/KhronosGroup/SPIRV-Tools/issues/1609.
2018-06-12 13:41:08 -04:00
..
comp Remove concept of FIRST_CONCRETE_* operand types 2017-12-18 09:48:51 -05:00
link linker: Properly remove FuncParamAttr from imported symbols 2018-04-06 09:55:54 -04:00
opt Small vector optimization for operands. 2018-06-12 13:41:08 -04:00
util Small vector optimization for operands. 2018-06-12 13:41:08 -04:00
val Check for invalid branches into construct body. 2018-06-11 19:23:44 -04:00
assembly_grammar.cpp Migrate to use unified grammar tables 2018-03-17 15:25:26 -04:00
assembly_grammar.h Add Vulkan validation rules for BuiltIn variables 2018-03-23 14:02:42 -04:00
binary.cpp Consistently include latest spirv.h header file. 2018-02-27 18:47:29 -05:00
binary.h Support building under CYGWIN 2016-12-21 10:34:23 -05:00
cfa.h Fixes compile errors generated with -Wpedantic 2018-03-22 09:40:11 -04:00
CMakeLists.txt Small vector optimization for operands. 2018-06-12 13:41:08 -04:00
diagnostic.cpp Move SetContextMessageConsumer into libspirv namespace 2017-11-23 13:56:12 -05:00
diagnostic.h DiagnosticStream move ctor moves output duties to new object 2017-10-03 11:23:54 -04:00
disassemble.cpp Adding ostream operators for IR structures 2018-01-12 11:19:58 -05:00
disassemble.h Adding ostream operators for IR structures 2018-01-12 11:19:58 -05:00
enum_set.h Refactor include of latest spir-v header versions 2017-12-14 11:18:20 -05:00
enum_string_mapping.cpp Avoid using static unordered_map (#1304) 2018-02-15 10:19:15 -05:00
enum_string_mapping.h Consistently include latest spirv.h header file. 2018-02-27 18:47:29 -05:00
ext_inst.cpp Support SPIR-V 1.3 and Vulkan 1.1 2018-03-06 15:17:31 -05:00
ext_inst.h Relicense SPIRV-Tools under Apache 2.0 2016-09-02 10:00:29 -04:00
extensions.cpp Re-format files in source, source/opt, source/util, source/val and tools. 2017-11-08 14:03:08 -05:00
extensions.h Turn all function static non-POD variables into global POD variables 2017-10-25 15:44:19 -04:00
extinst.debuginfo.grammar.json Add asm, dis support for DebugInfo extended instruction set 2017-12-22 09:39:36 -05:00
extinst.spv-amd-gcn-shader.grammar.json Fix spelling in SPV_AMD_gcn_shader support 2017-04-03 14:59:18 -04:00
extinst.spv-amd-shader-ballot.grammar.json Add support for SPV AMD extensions 2017-06-21 15:08:07 -04:00
extinst.spv-amd-shader-explicit-vertex-parameter.grammar.json Add support for SPV AMD extensions 2017-06-21 15:08:07 -04:00
extinst.spv-amd-shader-trinary-minmax.grammar.json Add support for SPV AMD extensions 2017-06-21 15:08:07 -04:00
id_descriptor.cpp Re-format source tree - NFC. 2017-11-27 14:31:49 -05:00
id_descriptor.h Add new compression algorithm and models 2017-11-21 17:32:58 -05:00
instruction.h Refactor include of latest spir-v header versions 2017-12-14 11:18:20 -05:00
latest_version_glsl_std_450_header.h Use SPIR-V headers from "unified1" directory 2018-01-31 15:36:50 -05:00
latest_version_opencl_std_header.h Use SPIR-V headers from "unified1" directory 2018-01-31 15:36:50 -05:00
latest_version_spirv_header.h Use SPIR-V headers from "unified1" directory 2018-01-31 15:36:50 -05:00
libspirv.cpp Linker code cleanups 2018-01-05 13:28:44 -05:00
macro.h Relicense SPIRV-Tools under Apache 2.0 2016-09-02 10:00:29 -04:00
message.cpp spirv-val prints warnings 2017-03-17 12:48:51 -04:00
message.h Clean up header dependency. 2016-09-22 18:15:23 -04:00
name_mapper.cpp Consistently include latest spirv.h header file. 2018-02-27 18:47:29 -05:00
name_mapper.h Re-format files in source, source/opt, source/util, source/val and tools. 2017-11-08 14:03:08 -05:00
opcode.cpp Vector DCE (#1512) 2018-04-23 11:13:07 -04:00
opcode.h Add Dead insert elmination back in. 2018-04-24 10:10:30 -04:00
operand.cpp Operand lookup succeeds if it's enabled by a capability 2018-06-11 19:27:52 -04:00
operand.h Migrate to use unified grammar tables 2018-03-17 15:25:26 -04:00
parsed_operand.cpp Extract EmitNumericLiteral from disassembler 2016-11-15 14:05:03 -05:00
parsed_operand.h Extract EmitNumericLiteral from disassembler 2016-11-15 14:05:03 -05:00
print.cpp Support outputting ANSI color escape sequences in library 2017-12-01 09:03:35 -05:00
print.h Support outputting ANSI color escape sequences in library 2017-12-01 09:03:35 -05:00
software_version.cpp Add missing function parameters in libspirv.h 2018-04-03 10:10:43 -04:00
spirv_constant.h Fixes #1433. Validate binary version 2018-04-06 22:41:50 -04:00
spirv_definition.h Refactor include of latest spir-v header versions 2017-12-14 11:18:20 -05:00
spirv_endian.cpp Relicense SPIRV-Tools under Apache 2.0 2016-09-02 10:00:29 -04:00
spirv_endian.h Relicense SPIRV-Tools under Apache 2.0 2016-09-02 10:00:29 -04:00
spirv_stats.cpp Re-format files in source, source/opt, source/util, source/val and tools. 2017-11-08 14:03:08 -05:00
spirv_stats.h Re-format files in source, source/opt, source/util, source/val and tools. 2017-11-08 14:03:08 -05:00
spirv_target_env.cpp Fixes #1433. Validate binary version 2018-04-06 22:41:50 -04:00
spirv_target_env.h Fixes #1433. Validate binary version 2018-04-06 22:41:50 -04:00
spirv_validator_options.cpp Add missing function parameters in libspirv.h 2018-04-03 10:10:43 -04:00
spirv_validator_options.h Allow relaxing validation of pointers in logical addressing mode 2018-01-08 10:36:23 -05:00
table.cpp Support SPIR-V 1.3 and Vulkan 1.1 2018-03-06 15:17:31 -05:00
table.h Migrate to use unified grammar tables 2018-03-17 15:25:26 -04:00
text_handler.cpp Re-format files in source, source/opt, source/util, source/val and tools. 2017-11-08 14:03:08 -05:00
text_handler.h Re-format source tree - NFC. 2017-11-27 14:31:49 -05:00
text.cpp Fixes #1433. Validate binary version 2018-04-06 22:41:50 -04:00
text.h Relicense SPIRV-Tools under Apache 2.0 2016-09-02 10:00:29 -04:00
validate_adjacency.cpp Add adjacency validation pass 2018-02-01 14:10:55 -05:00
validate_arithmetics.cpp Re-format source tree - NFC. 2017-11-27 14:31:49 -05:00
validate_atomics.cpp Add Vulkan specific atomic result type restriction 2018-03-26 12:06:25 -04:00
validate_barriers.cpp Fixes #1483. Validating Vulkan 1.1 barrier execution scopes 2018-04-17 10:26:38 -04:00
validate_bitwise.cpp Re-format source tree - NFC. 2017-11-27 14:31:49 -05:00
validate_builtins.cpp Allow ViewportIndex & Layer to be used in VS/DS with extension 2018-05-16 13:16:27 -04:00
validate_capability.cpp Improved error message in val capabilities 2018-01-30 16:22:10 -05:00
validate_cfg.cpp Check for invalid branches into construct body. 2018-06-11 19:23:44 -04:00
validate_composites.cpp Fixes #1403. 2018-03-28 09:04:08 -04:00
validate_conversion.cpp Re-enabled checks for UConvert 2018-04-06 10:51:57 -04:00
validate_datarules.cpp Re-format files in source, source/opt, source/util, source/val and tools. 2017-11-08 14:03:08 -05:00
validate_decorations.cpp Revert "Disallow array-of-arrays with DescriptorSets when validating. (#1586)" (#1607) 2018-06-06 20:27:43 -04:00
validate_derivatives.cpp Re-format source tree - NFC. 2017-11-27 14:31:49 -05:00
validate_ext_inst.cpp Fix validation issues relevant to SPV_AMD_gpu_shader_int16. 2018-04-16 10:49:01 -04:00
validate_id.cpp [val] Output id names along with numbers in validate_id (#1601) 2018-06-06 22:08:27 -04:00
validate_image.cpp Add barrier instructions validation pass 2018-02-05 13:14:55 -05:00
validate_instruction.cpp Operand lookup succeeds if it's enabled by a capability 2018-06-11 19:27:52 -04:00
validate_layout.cpp Re-format source tree - NFC. 2017-11-27 14:31:49 -05:00
validate_literals.cpp validate & test of literal's upper bits 2017-12-19 13:19:56 -05:00
validate_logicals.cpp Re-format source tree - NFC. 2017-11-27 14:31:49 -05:00
validate_non_uniform.cpp Fixes #1480. Validate group non-uniform scopes. 2018-04-20 09:25:00 -04:00
validate_primitives.cpp More validation on primitive instructions 2017-12-19 13:26:07 -05:00
validate_type_unique.cpp Allow duplicate pointer types 2018-05-31 09:14:38 -04:00
validate.cpp Validate presence of OpMemoryModel. 2018-05-23 08:17:39 -04:00
validate.h Fixes #1480. Validate group non-uniform scopes. 2018-04-20 09:25:00 -04:00