summaryrefslogtreecommitdiffstatshomepage
path: root/3rdparty/bgfx/3rdparty/spirv-tools/source/opt/function.h
diff options
context:
space:
mode:
author Julian Sikorski <belegdol+github@gmail.com>2019-10-13 13:50:38 +0200
committer R. Belmont <rb6502@users.noreply.github.com>2019-10-13 07:50:38 -0400
commit0837e7451a84f95c29dbdb9bd6b8b931fee1635d (patch)
tree626bcbd250a7fbebdf5958a288d2f438d4f9fb5a /3rdparty/bgfx/3rdparty/spirv-tools/source/opt/function.h
parentc913ccb59d713ce0b91135520719ac5385e54358 (diff)
WIP: sync bgfx, bx and bimg with latest upstream (#5723)
* Sync with bgfx upstream revision b91d0b6 * Sync with bx upstream revision d60912b * Sync with bimg upstream revision bd81f60 * Add astc-codec decoder * Rename VertexDecl to VertexLayout * Rename UniformType enum Int1 to Sampler. * Add NVN stub * Fix unused-const-variable error on macOS * Drop redundant explicit language parameters buildoptions_cpp are only applied to c++ files and buildoptions_objcpp are only applied to objective c++ files. As such, hardcoding -x offers no benefit while preventing overrides (such as one needed by 3rdparty/bgfx/src/renderer_vk.cpp on macOS) from working. * Re-introduce -x c++ in places where C code is compiled as C++ to prevent clang from throwing a warning * Build bgfx as Objective-C++ on macOS It is needed due to included headers * Enable Direct3D12 and Vulkan bgfx rendering backends * Enable building of spirv shaders * Properly escape /c in cmd call * Comment out dx12 bgfx renderer * Honor VERBOSE setting during shaders build * Only invert hlsl shader XYZ_TO_sRGB matrix for opengl * Add spirv shaders * OpenGL ES needs transposed matrix too * Metal needs transposed matrix as well
Diffstat (limited to '3rdparty/bgfx/3rdparty/spirv-tools/source/opt/function.h')
-rw-r--r--3rdparty/bgfx/3rdparty/spirv-tools/source/opt/function.h27
1 files changed, 24 insertions, 3 deletions
diff --git a/3rdparty/bgfx/3rdparty/spirv-tools/source/opt/function.h b/3rdparty/bgfx/3rdparty/spirv-tools/source/opt/function.h
index 4dc5d25a69e..39085682393 100644
--- a/3rdparty/bgfx/3rdparty/spirv-tools/source/opt/function.h
+++ b/3rdparty/bgfx/3rdparty/spirv-tools/source/opt/function.h
@@ -104,27 +104,48 @@ class Function {
});
}
- // Runs the given function |f| on each instruction in this function, and
- // optionally on debug line instructions that might precede them.
+ // Runs the given function |f| on instructions in this function, in order,
+ // and optionally on debug line instructions that might precede them.
void ForEachInst(const std::function<void(Instruction*)>& f,
bool run_on_debug_line_insts = false);
void ForEachInst(const std::function<void(const Instruction*)>& f,
bool run_on_debug_line_insts = false) const;
+ // Runs the given function |f| on instructions in this function, in order,
+ // and optionally on debug line instructions that might precede them.
+ // If |f| returns false, iteration is terminated and this function returns
+ // false.
+ bool WhileEachInst(const std::function<bool(Instruction*)>& f,
+ bool run_on_debug_line_insts = false);
+ bool WhileEachInst(const std::function<bool(const Instruction*)>& f,
+ bool run_on_debug_line_insts = false) const;
// Runs the given function |f| on each parameter instruction in this function,
- // and optionally on debug line instructions that might precede them.
+ // in order, and optionally on debug line instructions that might precede
+ // them.
void ForEachParam(const std::function<void(const Instruction*)>& f,
bool run_on_debug_line_insts = false) const;
+ void ForEachParam(const std::function<void(Instruction*)>& f,
+ bool run_on_debug_line_insts = false);
BasicBlock* InsertBasicBlockAfter(std::unique_ptr<BasicBlock>&& new_block,
BasicBlock* position);
+ BasicBlock* InsertBasicBlockBefore(std::unique_ptr<BasicBlock>&& new_block,
+ BasicBlock* position);
+
+ // Return true if the function calls itself either directly or indirectly.
+ bool IsRecursive() const;
+
// Pretty-prints all the basic blocks in this function into a std::string.
//
// |options| are the disassembly options. SPV_BINARY_TO_TEXT_OPTION_NO_HEADER
// is always added to |options|.
std::string PrettyPrint(uint32_t options = 0u) const;
+ // Dump this function on stderr. Useful when running interactive
+ // debuggers.
+ void Dump() const;
+
private:
// The OpFunction instruction that begins the definition of this function.
std::unique_ptr<Instruction> def_inst_;