mirror of
https://github.com/KhronosGroup/SPIRV-Tools
synced 2024-10-19 11:30:15 +00:00
50e85c865c
This patch adds LoopUtils class to handle some loop related transformations. For now it has 2 transformations that simplifies other transformations such as loop unroll or unswitch: - Dedicate exit blocks: this ensure that all exit basic block (out-of-loop basic blocks that have a predecessor in the loop) have all their predecessors in the loop; - Loop Closed SSA (LCSSA): this ensure that all definitions in a loop are used inside the loop or in a phi instruction in an exit basic block. It also adds the following capabilities: - Loop::IsLCSSA to test if the loop is in a LCSSA form - Loop::GetOrCreatePreHeaderBlock that can build a loop preheader if required; - New methods to allow on the fly updates of the loop descriptors. - New methods to allow on the fly updates of the CFG analysis. - Instruction::SetOperand to allow expression of the index relative to Instruction::NumOperands (to be compatible with the index returned by DefUseManager::ForEachUse)
33 lines
968 B
CMake
33 lines
968 B
CMake
# Copyright (c) 2017 Google Inc.
|
|
#
|
|
# Licensed under the Apache License, Version 2.0 (the "License");
|
|
# you may not use this file except in compliance with the License.
|
|
# You may obtain a copy of the License at
|
|
#
|
|
# http://www.apache.org/licenses/LICENSE-2.0
|
|
#
|
|
# Unless required by applicable law or agreed to in writing, software
|
|
# distributed under the License is distributed on an "AS IS" BASIS,
|
|
# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
|
# See the License for the specific language governing permissions and
|
|
# limitations under the License.
|
|
|
|
|
|
add_spvtools_unittest(TARGET loop_descriptor_simple
|
|
SRCS ../function_utils.h
|
|
loop_descriptions.cpp
|
|
LIBS SPIRV-Tools-opt
|
|
)
|
|
|
|
add_spvtools_unittest(TARGET loop_descriptor_nested
|
|
SRCS ../function_utils.h
|
|
nested_loops.cpp
|
|
LIBS SPIRV-Tools-opt
|
|
)
|
|
|
|
add_spvtools_unittest(TARGET lcssa_test
|
|
SRCS ../function_utils.h
|
|
lcssa.cpp
|
|
LIBS SPIRV-Tools-opt
|
|
)
|