SPIRV-Tools/source
Toomas Remmelg 1dc2458060 Add a loop fusion pass.
This pass will look for adjacent loops that are compatible and legal to
be fused.

Loops are compatible if:

- they both have one induction variable
- they have the same upper and lower bounds
    - same initial value
    - same condition
- they have the same update step
- they are adjacent
- there are no break/continue in either of them

Fusion is legal if:

- fused loops do not have any dependencies with dependence distance
  greater than 0 that did not exist in the original loops.
- there are no function calls in the loops (could have side-effects)
- there are no barriers in the loops

It will fuse all such loops as long as the number of registers used for
the fused loop stays under the threshold defined by
max_registers_per_loop.
2018-05-01 15:40:37 -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 Add a loop fusion pass. 2018-05-01 15:40:37 -04:00
util Fixes #1521: PadToWord() should use std::move() in && variant 2018-04-25 22:03:14 -04:00
val Fixes #1483. Validating Vulkan 1.1 barrier execution scopes 2018-04-17 10:26:38 -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 Fixes #1480. Validate group non-uniform scopes. 2018-04-20 09:25:00 -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 Fixes #1433. Validate binary version 2018-04-06 22:41:50 -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 Fixes #1483. Validating Vulkan 1.1 barrier execution scopes 2018-04-17 10:26:38 -04:00
validate_capability.cpp Improved error message in val capabilities 2018-01-30 16:22:10 -05:00
validate_cfg.cpp Add validator test for OpBranch 2018-04-16 10:27:51 -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 Vulkan BuiltIn variables can't have Location/Component decorations 2018-03-01 15:00:08 -05: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 Fixes #1483. Validating Vulkan 1.1 barrier execution scopes 2018-04-17 10:26:38 -04:00
validate_image.cpp Add barrier instructions validation pass 2018-02-05 13:14:55 -05:00
validate_instruction.cpp Stop asking for extensions if feature avaiable in core SPIR-V 2018-04-05 15:14:07 -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 Re-format files in source, source/opt, source/util, source/val and tools. 2017-11-08 14:03:08 -05:00
validate.cpp Fixes #1480. Validate group non-uniform scopes. 2018-04-20 09:25:00 -04:00
validate.h Fixes #1480. Validate group non-uniform scopes. 2018-04-20 09:25:00 -04:00