Merge pull request #741 from billhollings/Metal-3.0

Merge master 1.0.37 into Metal-3.0 branch.
diff --git a/Docs/MoltenVK_Runtime_UserGuide.md b/Docs/MoltenVK_Runtime_UserGuide.md
index e4cf172..9bd6595 100644
--- a/Docs/MoltenVK_Runtime_UserGuide.md
+++ b/Docs/MoltenVK_Runtime_UserGuide.md
@@ -231,6 +231,8 @@
 - `VK_KHR_bind_memory2`
 - `VK_KHR_dedicated_allocation`
 - `VK_KHR_descriptor_update_template`
+- `VK_KHR_device_group`
+- `VK_KHR_device_group_creation`
 - `VK_KHR_get_memory_requirements2`
 - `VK_KHR_get_physical_device_properties2`
 - `VK_KHR_get_surface_capabilities2`
@@ -252,6 +254,7 @@
 - `VK_EXT_debug_marker`
 - `VK_EXT_debug_report`
 - `VK_EXT_debug_utils`
+- `VK_EXT_fragment_shader_interlock` *(requires Metal 2.0 and Raster Order Groups)*
 - `VK_EXT_host_query_reset`
 - `VK_EXT_memory_budget` *(requires Metal 2.0)*
 - `VK_EXT_metal_surface`
@@ -510,8 +513,6 @@
   In order to use Vulkan layers such as the validation layers, use the Vulkan loader and layers from the
   [LunarG Vulkan SDK](https://vulkan.lunarg.com).
 
-- `VkEvents` are not supported.
-
 - Application-controlled memory allocations using `VkAllocationCallbacks` are ignored.
 
 - Pipeline statistics query pool using `VK_QUERY_TYPE_PIPELINE_STATISTICS` is not supported.
diff --git a/Docs/Whats_New.md b/Docs/Whats_New.md
index 50c5b0b..87a421c 100644
--- a/Docs/Whats_New.md
+++ b/Docs/Whats_New.md
@@ -16,10 +16,69 @@
 MoltenVK 1.0.37
 ---------------
 
-Released TBD
+Released 2019/09/10
 
+- Add support for extensions:
+	- `VK_KHR_device_group`
+	- `VK_EXT_fragment_shader_interlock`
+- Add support for `VkEvent`, using either native `MTLEvent` or emulation when `MTLEvent` not available.
+- `vkInvalidateMappedMemoryRanges()` synchronizes managed device memory to CPU.
+- Track supported instance and device extensions correctly.
 - Revert to supporting host-coherent memory for linear images on macOS.
+- Report limit of 64KB for constant buffer bindings on macOS.
+- Disable depth and/or stencil testing if corresponding attachment is missing.
 - Ensure Vulkan loader magic number is set every time before returning any dispatchable Vulkan handle.
+- Fix crash when `VkDeviceCreateInfo` specifies queue families out of numerical order.
+- Fix crash in `vkDestroyPipelineLayout()`.
+- Fix crash when signalling swapchain semaphore using `MTLEvent`.
+- Fix crash when determining alignment of invalid pixel formats.
+- `vkCmdBlitImage():` Support format component swizzling.
+- `vkCmdClearImage():` Set error if attempt made to clear 1D image, and fix validation of depth attachment formats.
+- `vkCreateRenderPass():` Return `VK_ERROR_FORMAT_NOT_SUPPORTED` if format not supported.
+- `vkCmdFillBuffer():` Improve performance 150x by using parallelism more effectively.
+- Support optional use of `MTLFence` for Vulkan semaphores via the `MVK_ALLOW_METAL_FENCES` environment variable.
+- Remove error logging on `VK_TIMEOUT` of `VkSemaphore` and `VkFence`.
+- Remove log message warning of obsolescence of `vkCreateMacOSSurfaceMVK()` and `vkCreateIOSSurfaceMVK()` functions.
+- Report error only on the first time a format substitution is made.
+- Streamline design and use of `MVKSemaphore`.
+- Consolidate the various linkable objects into a `MVKLinkableMixin` template base class.
+- Use `MVKVector` whenever possible in MoltenVK, especially within render loop.
+- No longer prefer dedicated allocations for buffer memory, including buffer-backed images.
+- Handle the `compositeAlpha` member of `VkSwapchainCreateInfoKHR`.
+- `VkPhysicalDevicePortabilitySubsetFeaturesEXTX::events` set to `true`.
+- Always submit surface presentations using `MTLCommandBuffer`. 
+  `MVKConfiguration::presentWithCommandBuffer` is now obsolete.
+- Don't use `MTLCommandBuffer push/popDebugGroup` if not available.
+- `MVKSwapchain::signalWhenAvailable()` add autoreleasepool around `MTLCommandBuffer` use.
+- Add ability to automatically cause an *Xcode* GPU capture without developer intervention.
+- Update `VK_MVK_MOLTENVK_SPEC_VERSION` to version 22.
+- Update dependency libraries to match Vulkan SDK 1.1.121.
+- Update to renaming of `VK_INTEL_shader_integer_functions2` enums and structs in latest Vulkan headers.
+- Update to latest SPIRV-Cross version:
+	- Support the `SPV_EXT_fragment_shader_interlock` extension.
+	- MSL: Deal with array copies from and to threadgroup.
+	- MSL: Deal with `Modf/Frexp` where output is access chain to scalar.
+	- MSL: Inline all emitted functions.
+	- MSL: Inline all non-entry-point functions.
+	- MSL: Add `{Base,}{Vertex,Instance}{,Index}` to `bitcast_from_builtin_load`.
+	- MSL: Add support for sampler Y'CbCr conversion.
+	- MSL: Force storage images on iOS to use discrete descriptors.
+	- MSL: Support dynamic offsets for buffers in argument buffers.
+	- MSL: Cleanup temporary use with `emit_uninitialized_temporary`.
+	- MSL: Unify the `get_*_address_space()` methods.
+	- Assume image and sampler can be `RelaxedPrecision`.
+	- Fix post-depth coverage for ESSL.
+	- Fix variable scope when switch block exits multiple times.
+	- Fix severe performance issue with invariant expression invalidation.
+	- Fix `ParsedIR::mark_used_as_array_length(uint32_t id)`
+	- Deal correctly with sign on bitfield operations.
+	- Elide branches to continue block when continue block is also a merge.
+	- Move branchless analysis to CFG.
+	- Deal with `ldexp` taking `uint` input.
+	- Do not allow base expressions for non-native row-major matrices.
+	- Do not force temporary unless continue-only for loop dominates.
+	- Fix `ParsedIR::mark_used_as_array_length(uint32_t id)`.
+	- Refactor into stronger types in public API.
 
 
 
diff --git a/ExternalDependencies.xcodeproj/project.pbxproj b/ExternalDependencies.xcodeproj/project.pbxproj
index 80dc513..3f8af4b 100644
--- a/ExternalDependencies.xcodeproj/project.pbxproj
+++ b/ExternalDependencies.xcodeproj/project.pbxproj
@@ -262,754 +262,786 @@
 		A976292621CC60BC00B52A68 /* spirv_msl.cpp in Sources */ = {isa = PBXBuildFile; fileRef = A976290D21CC60BC00B52A68 /* spirv_msl.cpp */; };
 		A976292721CC60BC00B52A68 /* spirv_cross_parsed_ir.cpp in Sources */ = {isa = PBXBuildFile; fileRef = A976290E21CC60BC00B52A68 /* spirv_cross_parsed_ir.cpp */; };
 		A976292821CC60BC00B52A68 /* spirv_cross_parsed_ir.cpp in Sources */ = {isa = PBXBuildFile; fileRef = A976290E21CC60BC00B52A68 /* spirv_cross_parsed_ir.cpp */; };
-		A9C2F13922E7833D001763CE /* spirv_target_env.cpp in Sources */ = {isa = PBXBuildFile; fileRef = A9C2EF7822E7833C001763CE /* spirv_target_env.cpp */; };
-		A9C2F13A22E7833D001763CE /* spirv_target_env.cpp in Sources */ = {isa = PBXBuildFile; fileRef = A9C2EF7822E7833C001763CE /* spirv_target_env.cpp */; };
-		A9C2F13B22E7833D001763CE /* spirv_fuzzer_options.h in Headers */ = {isa = PBXBuildFile; fileRef = A9C2EF7A22E7833C001763CE /* spirv_fuzzer_options.h */; };
-		A9C2F13C22E7833D001763CE /* spirv_fuzzer_options.h in Headers */ = {isa = PBXBuildFile; fileRef = A9C2EF7A22E7833C001763CE /* spirv_fuzzer_options.h */; };
-		A9C2F13D22E7833D001763CE /* assembly_grammar.h in Headers */ = {isa = PBXBuildFile; fileRef = A9C2EF7B22E7833C001763CE /* assembly_grammar.h */; };
-		A9C2F13E22E7833D001763CE /* assembly_grammar.h in Headers */ = {isa = PBXBuildFile; fileRef = A9C2EF7B22E7833C001763CE /* assembly_grammar.h */; };
-		A9C2F13F22E7833D001763CE /* enum_set.h in Headers */ = {isa = PBXBuildFile; fileRef = A9C2EF7C22E7833C001763CE /* enum_set.h */; };
-		A9C2F14022E7833D001763CE /* enum_set.h in Headers */ = {isa = PBXBuildFile; fileRef = A9C2EF7C22E7833C001763CE /* enum_set.h */; };
-		A9C2F14122E7833D001763CE /* text.cpp in Sources */ = {isa = PBXBuildFile; fileRef = A9C2EF7F22E7833C001763CE /* text.cpp */; };
-		A9C2F14222E7833D001763CE /* text.cpp in Sources */ = {isa = PBXBuildFile; fileRef = A9C2EF7F22E7833C001763CE /* text.cpp */; };
-		A9C2F14322E7833D001763CE /* assembly_grammar.cpp in Sources */ = {isa = PBXBuildFile; fileRef = A9C2EF8022E7833C001763CE /* assembly_grammar.cpp */; };
-		A9C2F14422E7833D001763CE /* assembly_grammar.cpp in Sources */ = {isa = PBXBuildFile; fileRef = A9C2EF8022E7833C001763CE /* assembly_grammar.cpp */; };
-		A9C2F14522E7833D001763CE /* text.h in Headers */ = {isa = PBXBuildFile; fileRef = A9C2EF8122E7833C001763CE /* text.h */; };
-		A9C2F14622E7833D001763CE /* text.h in Headers */ = {isa = PBXBuildFile; fileRef = A9C2EF8122E7833C001763CE /* text.h */; };
-		A9C2F14722E7833D001763CE /* extensions.cpp in Sources */ = {isa = PBXBuildFile; fileRef = A9C2EF8222E7833C001763CE /* extensions.cpp */; };
-		A9C2F14822E7833D001763CE /* extensions.cpp in Sources */ = {isa = PBXBuildFile; fileRef = A9C2EF8222E7833C001763CE /* extensions.cpp */; };
-		A9C2F14922E7833D001763CE /* pch_source.cpp in Sources */ = {isa = PBXBuildFile; fileRef = A9C2EF8322E7833C001763CE /* pch_source.cpp */; };
-		A9C2F14A22E7833D001763CE /* pch_source.cpp in Sources */ = {isa = PBXBuildFile; fileRef = A9C2EF8322E7833C001763CE /* pch_source.cpp */; };
-		A9C2F14B22E7833D001763CE /* parse_number.h in Headers */ = {isa = PBXBuildFile; fileRef = A9C2EF8522E7833C001763CE /* parse_number.h */; };
-		A9C2F14C22E7833D001763CE /* parse_number.h in Headers */ = {isa = PBXBuildFile; fileRef = A9C2EF8522E7833C001763CE /* parse_number.h */; };
-		A9C2F14D22E7833D001763CE /* ilist_node.h in Headers */ = {isa = PBXBuildFile; fileRef = A9C2EF8622E7833C001763CE /* ilist_node.h */; };
-		A9C2F14E22E7833D001763CE /* ilist_node.h in Headers */ = {isa = PBXBuildFile; fileRef = A9C2EF8622E7833C001763CE /* ilist_node.h */; };
-		A9C2F14F22E7833D001763CE /* make_unique.h in Headers */ = {isa = PBXBuildFile; fileRef = A9C2EF8722E7833C001763CE /* make_unique.h */; };
-		A9C2F15022E7833D001763CE /* make_unique.h in Headers */ = {isa = PBXBuildFile; fileRef = A9C2EF8722E7833C001763CE /* make_unique.h */; };
-		A9C2F15122E7833D001763CE /* string_utils.h in Headers */ = {isa = PBXBuildFile; fileRef = A9C2EF8822E7833C001763CE /* string_utils.h */; };
-		A9C2F15222E7833D001763CE /* string_utils.h in Headers */ = {isa = PBXBuildFile; fileRef = A9C2EF8822E7833C001763CE /* string_utils.h */; };
-		A9C2F15322E7833D001763CE /* small_vector.h in Headers */ = {isa = PBXBuildFile; fileRef = A9C2EF8922E7833C001763CE /* small_vector.h */; };
-		A9C2F15422E7833D001763CE /* small_vector.h in Headers */ = {isa = PBXBuildFile; fileRef = A9C2EF8922E7833C001763CE /* small_vector.h */; };
-		A9C2F15522E7833D001763CE /* timer.cpp in Sources */ = {isa = PBXBuildFile; fileRef = A9C2EF8A22E7833C001763CE /* timer.cpp */; };
-		A9C2F15622E7833D001763CE /* timer.cpp in Sources */ = {isa = PBXBuildFile; fileRef = A9C2EF8A22E7833C001763CE /* timer.cpp */; };
-		A9C2F15722E7833D001763CE /* timer.h in Headers */ = {isa = PBXBuildFile; fileRef = A9C2EF8B22E7833C001763CE /* timer.h */; };
-		A9C2F15822E7833D001763CE /* timer.h in Headers */ = {isa = PBXBuildFile; fileRef = A9C2EF8B22E7833C001763CE /* timer.h */; };
-		A9C2F15922E7833D001763CE /* string_utils.cpp in Sources */ = {isa = PBXBuildFile; fileRef = A9C2EF8C22E7833C001763CE /* string_utils.cpp */; };
-		A9C2F15A22E7833D001763CE /* string_utils.cpp in Sources */ = {isa = PBXBuildFile; fileRef = A9C2EF8C22E7833C001763CE /* string_utils.cpp */; };
-		A9C2F15B22E7833D001763CE /* bit_vector.h in Headers */ = {isa = PBXBuildFile; fileRef = A9C2EF8D22E7833C001763CE /* bit_vector.h */; };
-		A9C2F15C22E7833D001763CE /* bit_vector.h in Headers */ = {isa = PBXBuildFile; fileRef = A9C2EF8D22E7833C001763CE /* bit_vector.h */; };
-		A9C2F15D22E7833D001763CE /* bitutils.h in Headers */ = {isa = PBXBuildFile; fileRef = A9C2EF8E22E7833C001763CE /* bitutils.h */; };
-		A9C2F15E22E7833D001763CE /* bitutils.h in Headers */ = {isa = PBXBuildFile; fileRef = A9C2EF8E22E7833C001763CE /* bitutils.h */; };
-		A9C2F15F22E7833D001763CE /* hex_float.h in Headers */ = {isa = PBXBuildFile; fileRef = A9C2EF8F22E7833C001763CE /* hex_float.h */; };
-		A9C2F16022E7833D001763CE /* hex_float.h in Headers */ = {isa = PBXBuildFile; fileRef = A9C2EF8F22E7833C001763CE /* hex_float.h */; };
-		A9C2F16122E7833D001763CE /* parse_number.cpp in Sources */ = {isa = PBXBuildFile; fileRef = A9C2EF9022E7833C001763CE /* parse_number.cpp */; };
-		A9C2F16222E7833D001763CE /* parse_number.cpp in Sources */ = {isa = PBXBuildFile; fileRef = A9C2EF9022E7833C001763CE /* parse_number.cpp */; };
-		A9C2F16322E7833D001763CE /* bit_vector.cpp in Sources */ = {isa = PBXBuildFile; fileRef = A9C2EF9122E7833C001763CE /* bit_vector.cpp */; };
-		A9C2F16422E7833D001763CE /* bit_vector.cpp in Sources */ = {isa = PBXBuildFile; fileRef = A9C2EF9122E7833C001763CE /* bit_vector.cpp */; };
-		A9C2F16522E7833D001763CE /* ilist.h in Headers */ = {isa = PBXBuildFile; fileRef = A9C2EF9222E7833C001763CE /* ilist.h */; };
-		A9C2F16622E7833D001763CE /* ilist.h in Headers */ = {isa = PBXBuildFile; fileRef = A9C2EF9222E7833C001763CE /* ilist.h */; };
-		A9C2F16722E7833D001763CE /* spirv_target_env.h in Headers */ = {isa = PBXBuildFile; fileRef = A9C2EF9322E7833C001763CE /* spirv_target_env.h */; };
-		A9C2F16822E7833D001763CE /* spirv_target_env.h in Headers */ = {isa = PBXBuildFile; fileRef = A9C2EF9322E7833C001763CE /* spirv_target_env.h */; };
-		A9C2F16922E7833D001763CE /* table.cpp in Sources */ = {isa = PBXBuildFile; fileRef = A9C2EF9422E7833C001763CE /* table.cpp */; };
-		A9C2F16A22E7833D001763CE /* table.cpp in Sources */ = {isa = PBXBuildFile; fileRef = A9C2EF9422E7833C001763CE /* table.cpp */; };
-		A9C2F16B22E7833D001763CE /* operand_to_undef_reduction_opportunity_finder.h in Headers */ = {isa = PBXBuildFile; fileRef = A9C2EF9622E7833C001763CE /* operand_to_undef_reduction_opportunity_finder.h */; };
-		A9C2F16C22E7833D001763CE /* operand_to_undef_reduction_opportunity_finder.h in Headers */ = {isa = PBXBuildFile; fileRef = A9C2EF9622E7833C001763CE /* operand_to_undef_reduction_opportunity_finder.h */; };
-		A9C2F16D22E7833D001763CE /* remove_selection_reduction_opportunity.cpp in Sources */ = {isa = PBXBuildFile; fileRef = A9C2EF9722E7833C001763CE /* remove_selection_reduction_opportunity.cpp */; };
-		A9C2F16E22E7833D001763CE /* remove_selection_reduction_opportunity.cpp in Sources */ = {isa = PBXBuildFile; fileRef = A9C2EF9722E7833C001763CE /* remove_selection_reduction_opportunity.cpp */; };
-		A9C2F16F22E7833D001763CE /* remove_block_reduction_opportunity.h in Headers */ = {isa = PBXBuildFile; fileRef = A9C2EF9822E7833C001763CE /* remove_block_reduction_opportunity.h */; };
-		A9C2F17022E7833D001763CE /* remove_block_reduction_opportunity.h in Headers */ = {isa = PBXBuildFile; fileRef = A9C2EF9822E7833C001763CE /* remove_block_reduction_opportunity.h */; };
-		A9C2F17122E7833D001763CE /* operand_to_dominating_id_reduction_opportunity_finder.h in Headers */ = {isa = PBXBuildFile; fileRef = A9C2EF9922E7833C001763CE /* operand_to_dominating_id_reduction_opportunity_finder.h */; };
-		A9C2F17222E7833D001763CE /* operand_to_dominating_id_reduction_opportunity_finder.h in Headers */ = {isa = PBXBuildFile; fileRef = A9C2EF9922E7833C001763CE /* operand_to_dominating_id_reduction_opportunity_finder.h */; };
-		A9C2F17322E7833D001763CE /* reduction_pass.cpp in Sources */ = {isa = PBXBuildFile; fileRef = A9C2EF9A22E7833C001763CE /* reduction_pass.cpp */; };
-		A9C2F17422E7833D001763CE /* reduction_pass.cpp in Sources */ = {isa = PBXBuildFile; fileRef = A9C2EF9A22E7833C001763CE /* reduction_pass.cpp */; };
-		A9C2F17522E7833D001763CE /* operand_to_const_reduction_opportunity_finder.cpp in Sources */ = {isa = PBXBuildFile; fileRef = A9C2EF9B22E7833C001763CE /* operand_to_const_reduction_opportunity_finder.cpp */; };
-		A9C2F17622E7833D001763CE /* operand_to_const_reduction_opportunity_finder.cpp in Sources */ = {isa = PBXBuildFile; fileRef = A9C2EF9B22E7833C001763CE /* operand_to_const_reduction_opportunity_finder.cpp */; };
-		A9C2F17722E7833D001763CE /* operand_to_const_reduction_opportunity_finder.h in Headers */ = {isa = PBXBuildFile; fileRef = A9C2EF9C22E7833C001763CE /* operand_to_const_reduction_opportunity_finder.h */; };
-		A9C2F17822E7833D001763CE /* operand_to_const_reduction_opportunity_finder.h in Headers */ = {isa = PBXBuildFile; fileRef = A9C2EF9C22E7833C001763CE /* operand_to_const_reduction_opportunity_finder.h */; };
-		A9C2F17922E7833D001763CE /* reduction_util.cpp in Sources */ = {isa = PBXBuildFile; fileRef = A9C2EF9E22E7833C001763CE /* reduction_util.cpp */; };
-		A9C2F17A22E7833D001763CE /* reduction_util.cpp in Sources */ = {isa = PBXBuildFile; fileRef = A9C2EF9E22E7833C001763CE /* reduction_util.cpp */; };
-		A9C2F17B22E7833D001763CE /* structured_loop_to_selection_reduction_opportunity_finder.cpp in Sources */ = {isa = PBXBuildFile; fileRef = A9C2EF9F22E7833C001763CE /* structured_loop_to_selection_reduction_opportunity_finder.cpp */; };
-		A9C2F17C22E7833D001763CE /* structured_loop_to_selection_reduction_opportunity_finder.cpp in Sources */ = {isa = PBXBuildFile; fileRef = A9C2EF9F22E7833C001763CE /* structured_loop_to_selection_reduction_opportunity_finder.cpp */; };
-		A9C2F17D22E7833D001763CE /* simple_conditional_branch_to_branch_reduction_opportunity.h in Headers */ = {isa = PBXBuildFile; fileRef = A9C2EFA022E7833C001763CE /* simple_conditional_branch_to_branch_reduction_opportunity.h */; };
-		A9C2F17E22E7833D001763CE /* simple_conditional_branch_to_branch_reduction_opportunity.h in Headers */ = {isa = PBXBuildFile; fileRef = A9C2EFA022E7833C001763CE /* simple_conditional_branch_to_branch_reduction_opportunity.h */; };
-		A9C2F17F22E7833D001763CE /* remove_function_reduction_opportunity_finder.cpp in Sources */ = {isa = PBXBuildFile; fileRef = A9C2EFA122E7833C001763CE /* remove_function_reduction_opportunity_finder.cpp */; };
-		A9C2F18022E7833D001763CE /* remove_function_reduction_opportunity_finder.cpp in Sources */ = {isa = PBXBuildFile; fileRef = A9C2EFA122E7833C001763CE /* remove_function_reduction_opportunity_finder.cpp */; };
-		A9C2F18122E7833D001763CE /* remove_instruction_reduction_opportunity.h in Headers */ = {isa = PBXBuildFile; fileRef = A9C2EFA222E7833C001763CE /* remove_instruction_reduction_opportunity.h */; };
-		A9C2F18222E7833D001763CE /* remove_instruction_reduction_opportunity.h in Headers */ = {isa = PBXBuildFile; fileRef = A9C2EFA222E7833C001763CE /* remove_instruction_reduction_opportunity.h */; };
-		A9C2F18322E7833D001763CE /* conditional_branch_to_simple_conditional_branch_reduction_opportunity.h in Headers */ = {isa = PBXBuildFile; fileRef = A9C2EFA322E7833C001763CE /* conditional_branch_to_simple_conditional_branch_reduction_opportunity.h */; };
-		A9C2F18422E7833D001763CE /* conditional_branch_to_simple_conditional_branch_reduction_opportunity.h in Headers */ = {isa = PBXBuildFile; fileRef = A9C2EFA322E7833C001763CE /* conditional_branch_to_simple_conditional_branch_reduction_opportunity.h */; };
-		A9C2F18522E7833D001763CE /* simple_conditional_branch_to_branch_reduction_opportunity.cpp in Sources */ = {isa = PBXBuildFile; fileRef = A9C2EFA422E7833C001763CE /* simple_conditional_branch_to_branch_reduction_opportunity.cpp */; };
-		A9C2F18622E7833D001763CE /* simple_conditional_branch_to_branch_reduction_opportunity.cpp in Sources */ = {isa = PBXBuildFile; fileRef = A9C2EFA422E7833C001763CE /* simple_conditional_branch_to_branch_reduction_opportunity.cpp */; };
-		A9C2F18722E7833D001763CE /* remove_function_reduction_opportunity.cpp in Sources */ = {isa = PBXBuildFile; fileRef = A9C2EFA522E7833C001763CE /* remove_function_reduction_opportunity.cpp */; };
-		A9C2F18822E7833D001763CE /* remove_function_reduction_opportunity.cpp in Sources */ = {isa = PBXBuildFile; fileRef = A9C2EFA522E7833C001763CE /* remove_function_reduction_opportunity.cpp */; };
-		A9C2F18922E7833D001763CE /* remove_opname_instruction_reduction_opportunity_finder.h in Headers */ = {isa = PBXBuildFile; fileRef = A9C2EFA622E7833C001763CE /* remove_opname_instruction_reduction_opportunity_finder.h */; };
-		A9C2F18A22E7833D001763CE /* remove_opname_instruction_reduction_opportunity_finder.h in Headers */ = {isa = PBXBuildFile; fileRef = A9C2EFA622E7833C001763CE /* remove_opname_instruction_reduction_opportunity_finder.h */; };
-		A9C2F18B22E7833D001763CE /* simple_conditional_branch_to_branch_opportunity_finder.cpp in Sources */ = {isa = PBXBuildFile; fileRef = A9C2EFA722E7833C001763CE /* simple_conditional_branch_to_branch_opportunity_finder.cpp */; };
-		A9C2F18C22E7833D001763CE /* simple_conditional_branch_to_branch_opportunity_finder.cpp in Sources */ = {isa = PBXBuildFile; fileRef = A9C2EFA722E7833C001763CE /* simple_conditional_branch_to_branch_opportunity_finder.cpp */; };
-		A9C2F18D22E7833D001763CE /* remove_selection_reduction_opportunity_finder.cpp in Sources */ = {isa = PBXBuildFile; fileRef = A9C2EFA822E7833C001763CE /* remove_selection_reduction_opportunity_finder.cpp */; };
-		A9C2F18E22E7833D001763CE /* remove_selection_reduction_opportunity_finder.cpp in Sources */ = {isa = PBXBuildFile; fileRef = A9C2EFA822E7833C001763CE /* remove_selection_reduction_opportunity_finder.cpp */; };
-		A9C2F18F22E7833D001763CE /* conditional_branch_to_simple_conditional_branch_reduction_opportunity.cpp in Sources */ = {isa = PBXBuildFile; fileRef = A9C2EFA922E7833C001763CE /* conditional_branch_to_simple_conditional_branch_reduction_opportunity.cpp */; };
-		A9C2F19022E7833D001763CE /* conditional_branch_to_simple_conditional_branch_reduction_opportunity.cpp in Sources */ = {isa = PBXBuildFile; fileRef = A9C2EFA922E7833C001763CE /* conditional_branch_to_simple_conditional_branch_reduction_opportunity.cpp */; };
-		A9C2F19122E7833D001763CE /* simple_conditional_branch_to_branch_opportunity_finder.h in Headers */ = {isa = PBXBuildFile; fileRef = A9C2EFAA22E7833C001763CE /* simple_conditional_branch_to_branch_opportunity_finder.h */; };
-		A9C2F19222E7833D001763CE /* simple_conditional_branch_to_branch_opportunity_finder.h in Headers */ = {isa = PBXBuildFile; fileRef = A9C2EFAA22E7833C001763CE /* simple_conditional_branch_to_branch_opportunity_finder.h */; };
-		A9C2F19322E7833D001763CE /* merge_blocks_reduction_opportunity.cpp in Sources */ = {isa = PBXBuildFile; fileRef = A9C2EFAB22E7833C001763CE /* merge_blocks_reduction_opportunity.cpp */; };
-		A9C2F19422E7833D001763CE /* merge_blocks_reduction_opportunity.cpp in Sources */ = {isa = PBXBuildFile; fileRef = A9C2EFAB22E7833C001763CE /* merge_blocks_reduction_opportunity.cpp */; };
-		A9C2F19522E7833D001763CE /* change_operand_reduction_opportunity.cpp in Sources */ = {isa = PBXBuildFile; fileRef = A9C2EFAC22E7833C001763CE /* change_operand_reduction_opportunity.cpp */; };
-		A9C2F19622E7833D001763CE /* change_operand_reduction_opportunity.cpp in Sources */ = {isa = PBXBuildFile; fileRef = A9C2EFAC22E7833C001763CE /* change_operand_reduction_opportunity.cpp */; };
-		A9C2F19722E7833D001763CE /* structured_loop_to_selection_reduction_opportunity.h in Headers */ = {isa = PBXBuildFile; fileRef = A9C2EFAD22E7833C001763CE /* structured_loop_to_selection_reduction_opportunity.h */; };
-		A9C2F19822E7833D001763CE /* structured_loop_to_selection_reduction_opportunity.h in Headers */ = {isa = PBXBuildFile; fileRef = A9C2EFAD22E7833C001763CE /* structured_loop_to_selection_reduction_opportunity.h */; };
-		A9C2F19922E7833D001763CE /* remove_function_reduction_opportunity.h in Headers */ = {isa = PBXBuildFile; fileRef = A9C2EFAE22E7833C001763CE /* remove_function_reduction_opportunity.h */; };
-		A9C2F19A22E7833D001763CE /* remove_function_reduction_opportunity.h in Headers */ = {isa = PBXBuildFile; fileRef = A9C2EFAE22E7833C001763CE /* remove_function_reduction_opportunity.h */; };
-		A9C2F19B22E7833D001763CE /* change_operand_to_undef_reduction_opportunity.h in Headers */ = {isa = PBXBuildFile; fileRef = A9C2EFAF22E7833C001763CE /* change_operand_to_undef_reduction_opportunity.h */; };
-		A9C2F19C22E7833D001763CE /* change_operand_to_undef_reduction_opportunity.h in Headers */ = {isa = PBXBuildFile; fileRef = A9C2EFAF22E7833C001763CE /* change_operand_to_undef_reduction_opportunity.h */; };
-		A9C2F19D22E7833D001763CE /* remove_unreferenced_instruction_reduction_opportunity_finder.cpp in Sources */ = {isa = PBXBuildFile; fileRef = A9C2EFB022E7833C001763CE /* remove_unreferenced_instruction_reduction_opportunity_finder.cpp */; };
-		A9C2F19E22E7833D001763CE /* remove_unreferenced_instruction_reduction_opportunity_finder.cpp in Sources */ = {isa = PBXBuildFile; fileRef = A9C2EFB022E7833C001763CE /* remove_unreferenced_instruction_reduction_opportunity_finder.cpp */; };
-		A9C2F19F22E7833D001763CE /* structured_loop_to_selection_reduction_opportunity_finder.h in Headers */ = {isa = PBXBuildFile; fileRef = A9C2EFB122E7833C001763CE /* structured_loop_to_selection_reduction_opportunity_finder.h */; };
-		A9C2F1A022E7833D001763CE /* structured_loop_to_selection_reduction_opportunity_finder.h in Headers */ = {isa = PBXBuildFile; fileRef = A9C2EFB122E7833C001763CE /* structured_loop_to_selection_reduction_opportunity_finder.h */; };
-		A9C2F1A122E7833D001763CE /* remove_selection_reduction_opportunity.h in Headers */ = {isa = PBXBuildFile; fileRef = A9C2EFB222E7833C001763CE /* remove_selection_reduction_opportunity.h */; };
-		A9C2F1A222E7833D001763CE /* remove_selection_reduction_opportunity.h in Headers */ = {isa = PBXBuildFile; fileRef = A9C2EFB222E7833C001763CE /* remove_selection_reduction_opportunity.h */; };
-		A9C2F1A322E7833D001763CE /* remove_instruction_reduction_opportunity.cpp in Sources */ = {isa = PBXBuildFile; fileRef = A9C2EFB322E7833C001763CE /* remove_instruction_reduction_opportunity.cpp */; };
-		A9C2F1A422E7833D001763CE /* remove_instruction_reduction_opportunity.cpp in Sources */ = {isa = PBXBuildFile; fileRef = A9C2EFB322E7833C001763CE /* remove_instruction_reduction_opportunity.cpp */; };
-		A9C2F1A522E7833D001763CE /* remove_selection_reduction_opportunity_finder.h in Headers */ = {isa = PBXBuildFile; fileRef = A9C2EFB422E7833C001763CE /* remove_selection_reduction_opportunity_finder.h */; };
-		A9C2F1A622E7833D001763CE /* remove_selection_reduction_opportunity_finder.h in Headers */ = {isa = PBXBuildFile; fileRef = A9C2EFB422E7833C001763CE /* remove_selection_reduction_opportunity_finder.h */; };
-		A9C2F1A722E7833D001763CE /* merge_blocks_reduction_opportunity_finder.h in Headers */ = {isa = PBXBuildFile; fileRef = A9C2EFB522E7833C001763CE /* merge_blocks_reduction_opportunity_finder.h */; };
-		A9C2F1A822E7833D001763CE /* merge_blocks_reduction_opportunity_finder.h in Headers */ = {isa = PBXBuildFile; fileRef = A9C2EFB522E7833C001763CE /* merge_blocks_reduction_opportunity_finder.h */; };
-		A9C2F1A922E7833D001763CE /* remove_opname_instruction_reduction_opportunity_finder.cpp in Sources */ = {isa = PBXBuildFile; fileRef = A9C2EFB622E7833C001763CE /* remove_opname_instruction_reduction_opportunity_finder.cpp */; };
-		A9C2F1AA22E7833D001763CE /* remove_opname_instruction_reduction_opportunity_finder.cpp in Sources */ = {isa = PBXBuildFile; fileRef = A9C2EFB622E7833C001763CE /* remove_opname_instruction_reduction_opportunity_finder.cpp */; };
-		A9C2F1AB22E7833D001763CE /* pch_source_reduce.cpp in Sources */ = {isa = PBXBuildFile; fileRef = A9C2EFB722E7833C001763CE /* pch_source_reduce.cpp */; };
-		A9C2F1AC22E7833D001763CE /* pch_source_reduce.cpp in Sources */ = {isa = PBXBuildFile; fileRef = A9C2EFB722E7833C001763CE /* pch_source_reduce.cpp */; };
-		A9C2F1AD22E7833D001763CE /* reducer.cpp in Sources */ = {isa = PBXBuildFile; fileRef = A9C2EFB822E7833C001763CE /* reducer.cpp */; };
-		A9C2F1AE22E7833D001763CE /* reducer.cpp in Sources */ = {isa = PBXBuildFile; fileRef = A9C2EFB822E7833C001763CE /* reducer.cpp */; };
-		A9C2F1AF22E7833D001763CE /* operand_to_undef_reduction_opportunity_finder.cpp in Sources */ = {isa = PBXBuildFile; fileRef = A9C2EFB922E7833C001763CE /* operand_to_undef_reduction_opportunity_finder.cpp */; };
-		A9C2F1B022E7833D001763CE /* operand_to_undef_reduction_opportunity_finder.cpp in Sources */ = {isa = PBXBuildFile; fileRef = A9C2EFB922E7833C001763CE /* operand_to_undef_reduction_opportunity_finder.cpp */; };
-		A9C2F1B122E7833D001763CE /* remove_function_reduction_opportunity_finder.h in Headers */ = {isa = PBXBuildFile; fileRef = A9C2EFBA22E7833C001763CE /* remove_function_reduction_opportunity_finder.h */; };
-		A9C2F1B222E7833D001763CE /* remove_function_reduction_opportunity_finder.h in Headers */ = {isa = PBXBuildFile; fileRef = A9C2EFBA22E7833C001763CE /* remove_function_reduction_opportunity_finder.h */; };
-		A9C2F1B322E7833D001763CE /* pch_source_reduce.h in Headers */ = {isa = PBXBuildFile; fileRef = A9C2EFBB22E7833C001763CE /* pch_source_reduce.h */; };
-		A9C2F1B422E7833D001763CE /* pch_source_reduce.h in Headers */ = {isa = PBXBuildFile; fileRef = A9C2EFBB22E7833C001763CE /* pch_source_reduce.h */; };
-		A9C2F1B522E7833D001763CE /* remove_unreferenced_instruction_reduction_opportunity_finder.h in Headers */ = {isa = PBXBuildFile; fileRef = A9C2EFBC22E7833C001763CE /* remove_unreferenced_instruction_reduction_opportunity_finder.h */; };
-		A9C2F1B622E7833D001763CE /* remove_unreferenced_instruction_reduction_opportunity_finder.h in Headers */ = {isa = PBXBuildFile; fileRef = A9C2EFBC22E7833C001763CE /* remove_unreferenced_instruction_reduction_opportunity_finder.h */; };
-		A9C2F1B722E7833D001763CE /* merge_blocks_reduction_opportunity_finder.cpp in Sources */ = {isa = PBXBuildFile; fileRef = A9C2EFBD22E7833C001763CE /* merge_blocks_reduction_opportunity_finder.cpp */; };
-		A9C2F1B822E7833D001763CE /* merge_blocks_reduction_opportunity_finder.cpp in Sources */ = {isa = PBXBuildFile; fileRef = A9C2EFBD22E7833C001763CE /* merge_blocks_reduction_opportunity_finder.cpp */; };
-		A9C2F1B922E7833D001763CE /* reduction_opportunity.cpp in Sources */ = {isa = PBXBuildFile; fileRef = A9C2EFBE22E7833C001763CE /* reduction_opportunity.cpp */; };
-		A9C2F1BA22E7833D001763CE /* reduction_opportunity.cpp in Sources */ = {isa = PBXBuildFile; fileRef = A9C2EFBE22E7833C001763CE /* reduction_opportunity.cpp */; };
-		A9C2F1BB22E7833D001763CE /* reducer.h in Headers */ = {isa = PBXBuildFile; fileRef = A9C2EFBF22E7833C001763CE /* reducer.h */; };
-		A9C2F1BC22E7833D001763CE /* reducer.h in Headers */ = {isa = PBXBuildFile; fileRef = A9C2EFBF22E7833C001763CE /* reducer.h */; };
-		A9C2F1BD22E7833D001763CE /* change_operand_to_undef_reduction_opportunity.cpp in Sources */ = {isa = PBXBuildFile; fileRef = A9C2EFC022E7833C001763CE /* change_operand_to_undef_reduction_opportunity.cpp */; };
-		A9C2F1BE22E7833D001763CE /* change_operand_to_undef_reduction_opportunity.cpp in Sources */ = {isa = PBXBuildFile; fileRef = A9C2EFC022E7833C001763CE /* change_operand_to_undef_reduction_opportunity.cpp */; };
-		A9C2F1BF22E7833D001763CE /* reduction_opportunity.h in Headers */ = {isa = PBXBuildFile; fileRef = A9C2EFC122E7833C001763CE /* reduction_opportunity.h */; };
-		A9C2F1C022E7833D001763CE /* reduction_opportunity.h in Headers */ = {isa = PBXBuildFile; fileRef = A9C2EFC122E7833C001763CE /* reduction_opportunity.h */; };
-		A9C2F1C122E7833D001763CE /* conditional_branch_to_simple_conditional_branch_opportunity_finder.h in Headers */ = {isa = PBXBuildFile; fileRef = A9C2EFC222E7833C001763CE /* conditional_branch_to_simple_conditional_branch_opportunity_finder.h */; };
-		A9C2F1C222E7833D001763CE /* conditional_branch_to_simple_conditional_branch_opportunity_finder.h in Headers */ = {isa = PBXBuildFile; fileRef = A9C2EFC222E7833C001763CE /* conditional_branch_to_simple_conditional_branch_opportunity_finder.h */; };
-		A9C2F1C322E7833D001763CE /* operand_to_dominating_id_reduction_opportunity_finder.cpp in Sources */ = {isa = PBXBuildFile; fileRef = A9C2EFC322E7833C001763CE /* operand_to_dominating_id_reduction_opportunity_finder.cpp */; };
-		A9C2F1C422E7833D001763CE /* operand_to_dominating_id_reduction_opportunity_finder.cpp in Sources */ = {isa = PBXBuildFile; fileRef = A9C2EFC322E7833C001763CE /* operand_to_dominating_id_reduction_opportunity_finder.cpp */; };
-		A9C2F1C522E7833D001763CE /* reduction_opportunity_finder.h in Headers */ = {isa = PBXBuildFile; fileRef = A9C2EFC422E7833C001763CE /* reduction_opportunity_finder.h */; };
-		A9C2F1C622E7833D001763CE /* reduction_opportunity_finder.h in Headers */ = {isa = PBXBuildFile; fileRef = A9C2EFC422E7833C001763CE /* reduction_opportunity_finder.h */; };
-		A9C2F1C722E7833D001763CE /* change_operand_reduction_opportunity.h in Headers */ = {isa = PBXBuildFile; fileRef = A9C2EFC522E7833C001763CE /* change_operand_reduction_opportunity.h */; };
-		A9C2F1C822E7833D001763CE /* change_operand_reduction_opportunity.h in Headers */ = {isa = PBXBuildFile; fileRef = A9C2EFC522E7833C001763CE /* change_operand_reduction_opportunity.h */; };
-		A9C2F1C922E7833D001763CE /* remove_block_reduction_opportunity_finder.h in Headers */ = {isa = PBXBuildFile; fileRef = A9C2EFC622E7833C001763CE /* remove_block_reduction_opportunity_finder.h */; };
-		A9C2F1CA22E7833D001763CE /* remove_block_reduction_opportunity_finder.h in Headers */ = {isa = PBXBuildFile; fileRef = A9C2EFC622E7833C001763CE /* remove_block_reduction_opportunity_finder.h */; };
-		A9C2F1CB22E7833D001763CE /* remove_block_reduction_opportunity_finder.cpp in Sources */ = {isa = PBXBuildFile; fileRef = A9C2EFC722E7833C001763CE /* remove_block_reduction_opportunity_finder.cpp */; };
-		A9C2F1CC22E7833D001763CE /* remove_block_reduction_opportunity_finder.cpp in Sources */ = {isa = PBXBuildFile; fileRef = A9C2EFC722E7833C001763CE /* remove_block_reduction_opportunity_finder.cpp */; };
-		A9C2F1CD22E7833D001763CE /* reduction_util.h in Headers */ = {isa = PBXBuildFile; fileRef = A9C2EFC822E7833C001763CE /* reduction_util.h */; };
-		A9C2F1CE22E7833D001763CE /* reduction_util.h in Headers */ = {isa = PBXBuildFile; fileRef = A9C2EFC822E7833C001763CE /* reduction_util.h */; };
-		A9C2F1CF22E7833D001763CE /* merge_blocks_reduction_opportunity.h in Headers */ = {isa = PBXBuildFile; fileRef = A9C2EFC922E7833C001763CE /* merge_blocks_reduction_opportunity.h */; };
-		A9C2F1D022E7833D001763CE /* merge_blocks_reduction_opportunity.h in Headers */ = {isa = PBXBuildFile; fileRef = A9C2EFC922E7833C001763CE /* merge_blocks_reduction_opportunity.h */; };
-		A9C2F1D122E7833D001763CE /* conditional_branch_to_simple_conditional_branch_opportunity_finder.cpp in Sources */ = {isa = PBXBuildFile; fileRef = A9C2EFCA22E7833C001763CE /* conditional_branch_to_simple_conditional_branch_opportunity_finder.cpp */; };
-		A9C2F1D222E7833D001763CE /* conditional_branch_to_simple_conditional_branch_opportunity_finder.cpp in Sources */ = {isa = PBXBuildFile; fileRef = A9C2EFCA22E7833C001763CE /* conditional_branch_to_simple_conditional_branch_opportunity_finder.cpp */; };
-		A9C2F1D322E7833D001763CE /* structured_loop_to_selection_reduction_opportunity.cpp in Sources */ = {isa = PBXBuildFile; fileRef = A9C2EFCB22E7833C001763CE /* structured_loop_to_selection_reduction_opportunity.cpp */; };
-		A9C2F1D422E7833D001763CE /* structured_loop_to_selection_reduction_opportunity.cpp in Sources */ = {isa = PBXBuildFile; fileRef = A9C2EFCB22E7833C001763CE /* structured_loop_to_selection_reduction_opportunity.cpp */; };
-		A9C2F1D522E7833D001763CE /* remove_block_reduction_opportunity.cpp in Sources */ = {isa = PBXBuildFile; fileRef = A9C2EFCC22E7833C001763CE /* remove_block_reduction_opportunity.cpp */; };
-		A9C2F1D622E7833D001763CE /* remove_block_reduction_opportunity.cpp in Sources */ = {isa = PBXBuildFile; fileRef = A9C2EFCC22E7833C001763CE /* remove_block_reduction_opportunity.cpp */; };
-		A9C2F1D722E7833D001763CE /* reduction_pass.h in Headers */ = {isa = PBXBuildFile; fileRef = A9C2EFCD22E7833C001763CE /* reduction_pass.h */; };
-		A9C2F1D822E7833D001763CE /* reduction_pass.h in Headers */ = {isa = PBXBuildFile; fileRef = A9C2EFCD22E7833C001763CE /* reduction_pass.h */; };
-		A9C2F1D922E7833D001763CE /* latest_version_opencl_std_header.h in Headers */ = {isa = PBXBuildFile; fileRef = A9C2EFCE22E7833C001763CE /* latest_version_opencl_std_header.h */; };
-		A9C2F1DA22E7833D001763CE /* latest_version_opencl_std_header.h in Headers */ = {isa = PBXBuildFile; fileRef = A9C2EFCE22E7833C001763CE /* latest_version_opencl_std_header.h */; };
-		A9C2F1DB22E7833D001763CE /* spirv_optimizer_options.cpp in Sources */ = {isa = PBXBuildFile; fileRef = A9C2EFCF22E7833C001763CE /* spirv_optimizer_options.cpp */; };
-		A9C2F1DC22E7833D001763CE /* spirv_optimizer_options.cpp in Sources */ = {isa = PBXBuildFile; fileRef = A9C2EFCF22E7833C001763CE /* spirv_optimizer_options.cpp */; };
-		A9C2F1DD22E7833D001763CE /* cfa.h in Headers */ = {isa = PBXBuildFile; fileRef = A9C2EFD022E7833C001763CE /* cfa.h */; };
-		A9C2F1DE22E7833D001763CE /* cfa.h in Headers */ = {isa = PBXBuildFile; fileRef = A9C2EFD022E7833C001763CE /* cfa.h */; };
-		A9C2F1DF22E7833D001763CE /* pch_source.h in Headers */ = {isa = PBXBuildFile; fileRef = A9C2EFD122E7833C001763CE /* pch_source.h */; };
-		A9C2F1E022E7833D001763CE /* pch_source.h in Headers */ = {isa = PBXBuildFile; fileRef = A9C2EFD122E7833C001763CE /* pch_source.h */; };
-		A9C2F1E122E7833D001763CE /* enum_string_mapping.h in Headers */ = {isa = PBXBuildFile; fileRef = A9C2EFD222E7833C001763CE /* enum_string_mapping.h */; };
-		A9C2F1E222E7833D001763CE /* enum_string_mapping.h in Headers */ = {isa = PBXBuildFile; fileRef = A9C2EFD222E7833C001763CE /* enum_string_mapping.h */; };
-		A9C2F1E322E7833D001763CE /* spirv_fuzzer_options.cpp in Sources */ = {isa = PBXBuildFile; fileRef = A9C2EFD322E7833C001763CE /* spirv_fuzzer_options.cpp */; };
-		A9C2F1E422E7833D001763CE /* spirv_fuzzer_options.cpp in Sources */ = {isa = PBXBuildFile; fileRef = A9C2EFD322E7833C001763CE /* spirv_fuzzer_options.cpp */; };
-		A9C2F1E522E7833D001763CE /* spirv_reducer_options.h in Headers */ = {isa = PBXBuildFile; fileRef = A9C2EFD422E7833C001763CE /* spirv_reducer_options.h */; };
-		A9C2F1E622E7833D001763CE /* spirv_reducer_options.h in Headers */ = {isa = PBXBuildFile; fileRef = A9C2EFD422E7833C001763CE /* spirv_reducer_options.h */; };
-		A9C2F1E722E7833D001763CE /* spirv_validator_options.cpp in Sources */ = {isa = PBXBuildFile; fileRef = A9C2EFD522E7833C001763CE /* spirv_validator_options.cpp */; };
-		A9C2F1E822E7833D001763CE /* spirv_validator_options.cpp in Sources */ = {isa = PBXBuildFile; fileRef = A9C2EFD522E7833C001763CE /* spirv_validator_options.cpp */; };
-		A9C2F1E922E7833D001763CE /* print.cpp in Sources */ = {isa = PBXBuildFile; fileRef = A9C2EFD722E7833C001763CE /* print.cpp */; };
-		A9C2F1EA22E7833D001763CE /* print.cpp in Sources */ = {isa = PBXBuildFile; fileRef = A9C2EFD722E7833C001763CE /* print.cpp */; };
-		A9C2F1EB22E7833D001763CE /* spirv_definition.h in Headers */ = {isa = PBXBuildFile; fileRef = A9C2EFD822E7833C001763CE /* spirv_definition.h */; };
-		A9C2F1EC22E7833D001763CE /* spirv_definition.h in Headers */ = {isa = PBXBuildFile; fileRef = A9C2EFD822E7833C001763CE /* spirv_definition.h */; };
-		A9C2F1ED22E7833D001763CE /* operand.h in Headers */ = {isa = PBXBuildFile; fileRef = A9C2EFD922E7833C001763CE /* operand.h */; };
-		A9C2F1EE22E7833D001763CE /* operand.h in Headers */ = {isa = PBXBuildFile; fileRef = A9C2EFD922E7833C001763CE /* operand.h */; };
-		A9C2F1EF22E7833D001763CE /* spirv_endian.cpp in Sources */ = {isa = PBXBuildFile; fileRef = A9C2EFDA22E7833C001763CE /* spirv_endian.cpp */; };
-		A9C2F1F022E7833D001763CE /* spirv_endian.cpp in Sources */ = {isa = PBXBuildFile; fileRef = A9C2EFDA22E7833C001763CE /* spirv_endian.cpp */; };
-		A9C2F1F122E7833D001763CE /* macro.h in Headers */ = {isa = PBXBuildFile; fileRef = A9C2EFDB22E7833C001763CE /* macro.h */; };
-		A9C2F1F222E7833D001763CE /* macro.h in Headers */ = {isa = PBXBuildFile; fileRef = A9C2EFDB22E7833C001763CE /* macro.h */; };
-		A9C2F1F322E7833D001763CE /* spirv_constant.h in Headers */ = {isa = PBXBuildFile; fileRef = A9C2EFDC22E7833C001763CE /* spirv_constant.h */; };
-		A9C2F1F422E7833D001763CE /* spirv_constant.h in Headers */ = {isa = PBXBuildFile; fileRef = A9C2EFDC22E7833C001763CE /* spirv_constant.h */; };
-		A9C2F1F522E7833D001763CE /* binary.cpp in Sources */ = {isa = PBXBuildFile; fileRef = A9C2EFDE22E7833C001763CE /* binary.cpp */; };
-		A9C2F1F622E7833D001763CE /* binary.cpp in Sources */ = {isa = PBXBuildFile; fileRef = A9C2EFDE22E7833C001763CE /* binary.cpp */; };
-		A9C2F1F722E7833D001763CE /* spirv_validator_options.h in Headers */ = {isa = PBXBuildFile; fileRef = A9C2EFDF22E7833C001763CE /* spirv_validator_options.h */; };
-		A9C2F1F822E7833D001763CE /* spirv_validator_options.h in Headers */ = {isa = PBXBuildFile; fileRef = A9C2EFDF22E7833C001763CE /* spirv_validator_options.h */; };
-		A9C2F1F922E7833D001763CE /* enum_string_mapping.cpp in Sources */ = {isa = PBXBuildFile; fileRef = A9C2EFE022E7833C001763CE /* enum_string_mapping.cpp */; };
-		A9C2F1FA22E7833D001763CE /* enum_string_mapping.cpp in Sources */ = {isa = PBXBuildFile; fileRef = A9C2EFE022E7833C001763CE /* enum_string_mapping.cpp */; };
-		A9C2F1FB22E7833D001763CE /* text_handler.h in Headers */ = {isa = PBXBuildFile; fileRef = A9C2EFE122E7833C001763CE /* text_handler.h */; };
-		A9C2F1FC22E7833D001763CE /* text_handler.h in Headers */ = {isa = PBXBuildFile; fileRef = A9C2EFE122E7833C001763CE /* text_handler.h */; };
-		A9C2F1FD22E7833D001763CE /* parsed_operand.h in Headers */ = {isa = PBXBuildFile; fileRef = A9C2EFE222E7833C001763CE /* parsed_operand.h */; };
-		A9C2F1FE22E7833D001763CE /* parsed_operand.h in Headers */ = {isa = PBXBuildFile; fileRef = A9C2EFE222E7833C001763CE /* parsed_operand.h */; };
-		A9C2F1FF22E7833D001763CE /* name_mapper.h in Headers */ = {isa = PBXBuildFile; fileRef = A9C2EFE322E7833C001763CE /* name_mapper.h */; };
-		A9C2F20022E7833D001763CE /* name_mapper.h in Headers */ = {isa = PBXBuildFile; fileRef = A9C2EFE322E7833C001763CE /* name_mapper.h */; };
-		A9C2F20122E7833D001763CE /* spirv_reducer_options.cpp in Sources */ = {isa = PBXBuildFile; fileRef = A9C2EFE422E7833C001763CE /* spirv_reducer_options.cpp */; };
-		A9C2F20222E7833D001763CE /* spirv_reducer_options.cpp in Sources */ = {isa = PBXBuildFile; fileRef = A9C2EFE422E7833C001763CE /* spirv_reducer_options.cpp */; };
-		A9C2F20322E7833D001763CE /* parsed_operand.cpp in Sources */ = {isa = PBXBuildFile; fileRef = A9C2EFE522E7833C001763CE /* parsed_operand.cpp */; };
-		A9C2F20422E7833D001763CE /* parsed_operand.cpp in Sources */ = {isa = PBXBuildFile; fileRef = A9C2EFE522E7833C001763CE /* parsed_operand.cpp */; };
-		A9C2F20522E7833D001763CE /* diagnostic.h in Headers */ = {isa = PBXBuildFile; fileRef = A9C2EFE622E7833C001763CE /* diagnostic.h */; };
-		A9C2F20622E7833D001763CE /* diagnostic.h in Headers */ = {isa = PBXBuildFile; fileRef = A9C2EFE622E7833C001763CE /* diagnostic.h */; };
-		A9C2F20722E7833D001763CE /* spirv_endian.h in Headers */ = {isa = PBXBuildFile; fileRef = A9C2EFE722E7833C001763CE /* spirv_endian.h */; };
-		A9C2F20822E7833D001763CE /* spirv_endian.h in Headers */ = {isa = PBXBuildFile; fileRef = A9C2EFE722E7833C001763CE /* spirv_endian.h */; };
-		A9C2F20922E7833D001763CE /* name_mapper.cpp in Sources */ = {isa = PBXBuildFile; fileRef = A9C2EFE822E7833C001763CE /* name_mapper.cpp */; };
-		A9C2F20A22E7833D001763CE /* name_mapper.cpp in Sources */ = {isa = PBXBuildFile; fileRef = A9C2EFE822E7833C001763CE /* name_mapper.cpp */; };
-		A9C2F20B22E7833D001763CE /* linker.cpp in Sources */ = {isa = PBXBuildFile; fileRef = A9C2EFEC22E7833C001763CE /* linker.cpp */; };
-		A9C2F20C22E7833D001763CE /* linker.cpp in Sources */ = {isa = PBXBuildFile; fileRef = A9C2EFEC22E7833C001763CE /* linker.cpp */; };
-		A9C2F20D22E7833D001763CE /* software_version.cpp in Sources */ = {isa = PBXBuildFile; fileRef = A9C2EFED22E7833C001763CE /* software_version.cpp */; };
-		A9C2F20E22E7833D001763CE /* software_version.cpp in Sources */ = {isa = PBXBuildFile; fileRef = A9C2EFED22E7833C001763CE /* software_version.cpp */; };
-		A9C2F20F22E7833D001763CE /* opcode.cpp in Sources */ = {isa = PBXBuildFile; fileRef = A9C2EFEE22E7833C001763CE /* opcode.cpp */; };
-		A9C2F21022E7833D001763CE /* opcode.cpp in Sources */ = {isa = PBXBuildFile; fileRef = A9C2EFEE22E7833C001763CE /* opcode.cpp */; };
-		A9C2F21122E7833D001763CE /* print.h in Headers */ = {isa = PBXBuildFile; fileRef = A9C2EFEF22E7833C001763CE /* print.h */; };
-		A9C2F21222E7833D001763CE /* print.h in Headers */ = {isa = PBXBuildFile; fileRef = A9C2EFEF22E7833C001763CE /* print.h */; };
-		A9C2F21322E7833D001763CE /* ext_inst.cpp in Sources */ = {isa = PBXBuildFile; fileRef = A9C2EFF022E7833C001763CE /* ext_inst.cpp */; };
-		A9C2F21422E7833D001763CE /* ext_inst.cpp in Sources */ = {isa = PBXBuildFile; fileRef = A9C2EFF022E7833C001763CE /* ext_inst.cpp */; };
-		A9C2F21522E7833D001763CE /* disassemble.h in Headers */ = {isa = PBXBuildFile; fileRef = A9C2EFF122E7833C001763CE /* disassemble.h */; };
-		A9C2F21622E7833D001763CE /* disassemble.h in Headers */ = {isa = PBXBuildFile; fileRef = A9C2EFF122E7833C001763CE /* disassemble.h */; };
-		A9C2F21722E7833D001763CE /* optimizer.cpp in Sources */ = {isa = PBXBuildFile; fileRef = A9C2EFF322E7833C001763CE /* optimizer.cpp */; };
-		A9C2F21822E7833D001763CE /* optimizer.cpp in Sources */ = {isa = PBXBuildFile; fileRef = A9C2EFF322E7833C001763CE /* optimizer.cpp */; };
-		A9C2F21922E7833D001763CE /* if_conversion.h in Headers */ = {isa = PBXBuildFile; fileRef = A9C2EFF422E7833C001763CE /* if_conversion.h */; };
-		A9C2F21A22E7833D001763CE /* if_conversion.h in Headers */ = {isa = PBXBuildFile; fileRef = A9C2EFF422E7833C001763CE /* if_conversion.h */; };
-		A9C2F21B22E7833D001763CE /* register_pressure.cpp in Sources */ = {isa = PBXBuildFile; fileRef = A9C2EFF522E7833C001763CE /* register_pressure.cpp */; };
-		A9C2F21C22E7833D001763CE /* register_pressure.cpp in Sources */ = {isa = PBXBuildFile; fileRef = A9C2EFF522E7833C001763CE /* register_pressure.cpp */; };
-		A9C2F21D22E7833D001763CE /* loop_utils.cpp in Sources */ = {isa = PBXBuildFile; fileRef = A9C2EFF622E7833C001763CE /* loop_utils.cpp */; };
-		A9C2F21E22E7833D001763CE /* loop_utils.cpp in Sources */ = {isa = PBXBuildFile; fileRef = A9C2EFF622E7833C001763CE /* loop_utils.cpp */; };
-		A9C2F21F22E7833D001763CE /* merge_return_pass.h in Headers */ = {isa = PBXBuildFile; fileRef = A9C2EFF722E7833C001763CE /* merge_return_pass.h */; };
-		A9C2F22022E7833D001763CE /* merge_return_pass.h in Headers */ = {isa = PBXBuildFile; fileRef = A9C2EFF722E7833C001763CE /* merge_return_pass.h */; };
-		A9C2F22122E7833D001763CE /* inline_opaque_pass.h in Headers */ = {isa = PBXBuildFile; fileRef = A9C2EFF822E7833C001763CE /* inline_opaque_pass.h */; };
-		A9C2F22222E7833D001763CE /* inline_opaque_pass.h in Headers */ = {isa = PBXBuildFile; fileRef = A9C2EFF822E7833C001763CE /* inline_opaque_pass.h */; };
-		A9C2F22322E7833D001763CE /* loop_fusion.h in Headers */ = {isa = PBXBuildFile; fileRef = A9C2EFF922E7833C001763CE /* loop_fusion.h */; };
-		A9C2F22422E7833D001763CE /* loop_fusion.h in Headers */ = {isa = PBXBuildFile; fileRef = A9C2EFF922E7833C001763CE /* loop_fusion.h */; };
-		A9C2F22522E7833D001763CE /* combine_access_chains.cpp in Sources */ = {isa = PBXBuildFile; fileRef = A9C2EFFA22E7833C001763CE /* combine_access_chains.cpp */; };
-		A9C2F22622E7833D001763CE /* combine_access_chains.cpp in Sources */ = {isa = PBXBuildFile; fileRef = A9C2EFFA22E7833C001763CE /* combine_access_chains.cpp */; };
-		A9C2F22722E7833D001763CE /* build_module.cpp in Sources */ = {isa = PBXBuildFile; fileRef = A9C2EFFB22E7833C001763CE /* build_module.cpp */; };
-		A9C2F22822E7833D001763CE /* build_module.cpp in Sources */ = {isa = PBXBuildFile; fileRef = A9C2EFFB22E7833C001763CE /* build_module.cpp */; };
-		A9C2F22922E7833D001763CE /* composite.h in Headers */ = {isa = PBXBuildFile; fileRef = A9C2EFFC22E7833C001763CE /* composite.h */; };
-		A9C2F22A22E7833D001763CE /* composite.h in Headers */ = {isa = PBXBuildFile; fileRef = A9C2EFFC22E7833C001763CE /* composite.h */; };
-		A9C2F22B22E7833D001763CE /* compact_ids_pass.h in Headers */ = {isa = PBXBuildFile; fileRef = A9C2EFFD22E7833C001763CE /* compact_ids_pass.h */; };
-		A9C2F22C22E7833D001763CE /* compact_ids_pass.h in Headers */ = {isa = PBXBuildFile; fileRef = A9C2EFFD22E7833C001763CE /* compact_ids_pass.h */; };
-		A9C2F22D22E7833D001763CE /* register_pressure.h in Headers */ = {isa = PBXBuildFile; fileRef = A9C2EFFE22E7833C001763CE /* register_pressure.h */; };
-		A9C2F22E22E7833D001763CE /* register_pressure.h in Headers */ = {isa = PBXBuildFile; fileRef = A9C2EFFE22E7833C001763CE /* register_pressure.h */; };
-		A9C2F22F22E7833D001763CE /* tree_iterator.h in Headers */ = {isa = PBXBuildFile; fileRef = A9C2EFFF22E7833C001763CE /* tree_iterator.h */; };
-		A9C2F23022E7833D001763CE /* tree_iterator.h in Headers */ = {isa = PBXBuildFile; fileRef = A9C2EFFF22E7833C001763CE /* tree_iterator.h */; };
-		A9C2F23122E7833D001763CE /* strip_atomic_counter_memory_pass.h in Headers */ = {isa = PBXBuildFile; fileRef = A9C2F00022E7833C001763CE /* strip_atomic_counter_memory_pass.h */; };
-		A9C2F23222E7833D001763CE /* strip_atomic_counter_memory_pass.h in Headers */ = {isa = PBXBuildFile; fileRef = A9C2F00022E7833C001763CE /* strip_atomic_counter_memory_pass.h */; };
-		A9C2F23322E7833D001763CE /* legalize_vector_shuffle_pass.h in Headers */ = {isa = PBXBuildFile; fileRef = A9C2F00122E7833C001763CE /* legalize_vector_shuffle_pass.h */; };
-		A9C2F23422E7833D001763CE /* legalize_vector_shuffle_pass.h in Headers */ = {isa = PBXBuildFile; fileRef = A9C2F00122E7833C001763CE /* legalize_vector_shuffle_pass.h */; };
-		A9C2F23522E7833D001763CE /* local_single_store_elim_pass.h in Headers */ = {isa = PBXBuildFile; fileRef = A9C2F00222E7833C001763CE /* local_single_store_elim_pass.h */; };
-		A9C2F23622E7833D001763CE /* local_single_store_elim_pass.h in Headers */ = {isa = PBXBuildFile; fileRef = A9C2F00222E7833C001763CE /* local_single_store_elim_pass.h */; };
-		A9C2F23722E7833D001763CE /* reduce_load_size.h in Headers */ = {isa = PBXBuildFile; fileRef = A9C2F00322E7833C001763CE /* reduce_load_size.h */; };
-		A9C2F23822E7833D001763CE /* reduce_load_size.h in Headers */ = {isa = PBXBuildFile; fileRef = A9C2F00322E7833C001763CE /* reduce_load_size.h */; };
-		A9C2F23922E7833D001763CE /* code_sink.cpp in Sources */ = {isa = PBXBuildFile; fileRef = A9C2F00422E7833C001763CE /* code_sink.cpp */; };
-		A9C2F23A22E7833D001763CE /* code_sink.cpp in Sources */ = {isa = PBXBuildFile; fileRef = A9C2F00422E7833C001763CE /* code_sink.cpp */; };
-		A9C2F23B22E7833D001763CE /* types.cpp in Sources */ = {isa = PBXBuildFile; fileRef = A9C2F00522E7833C001763CE /* types.cpp */; };
-		A9C2F23C22E7833D001763CE /* types.cpp in Sources */ = {isa = PBXBuildFile; fileRef = A9C2F00522E7833C001763CE /* types.cpp */; };
-		A9C2F23D22E7833D001763CE /* scalar_analysis.h in Headers */ = {isa = PBXBuildFile; fileRef = A9C2F00622E7833C001763CE /* scalar_analysis.h */; };
-		A9C2F23E22E7833D001763CE /* scalar_analysis.h in Headers */ = {isa = PBXBuildFile; fileRef = A9C2F00622E7833C001763CE /* scalar_analysis.h */; };
-		A9C2F23F22E7833D001763CE /* strip_debug_info_pass.h in Headers */ = {isa = PBXBuildFile; fileRef = A9C2F00722E7833C001763CE /* strip_debug_info_pass.h */; };
-		A9C2F24022E7833D001763CE /* strip_debug_info_pass.h in Headers */ = {isa = PBXBuildFile; fileRef = A9C2F00722E7833C001763CE /* strip_debug_info_pass.h */; };
-		A9C2F24122E7833D001763CE /* cfg.cpp in Sources */ = {isa = PBXBuildFile; fileRef = A9C2F00822E7833C001763CE /* cfg.cpp */; };
-		A9C2F24222E7833D001763CE /* cfg.cpp in Sources */ = {isa = PBXBuildFile; fileRef = A9C2F00822E7833C001763CE /* cfg.cpp */; };
-		A9C2F24322E7833D001763CE /* strip_atomic_counter_memory_pass.cpp in Sources */ = {isa = PBXBuildFile; fileRef = A9C2F00922E7833C001763CE /* strip_atomic_counter_memory_pass.cpp */; };
-		A9C2F24422E7833D001763CE /* strip_atomic_counter_memory_pass.cpp in Sources */ = {isa = PBXBuildFile; fileRef = A9C2F00922E7833C001763CE /* strip_atomic_counter_memory_pass.cpp */; };
-		A9C2F24522E7833D001763CE /* decoration_manager.cpp in Sources */ = {isa = PBXBuildFile; fileRef = A9C2F00A22E7833C001763CE /* decoration_manager.cpp */; };
-		A9C2F24622E7833D001763CE /* decoration_manager.cpp in Sources */ = {isa = PBXBuildFile; fileRef = A9C2F00A22E7833C001763CE /* decoration_manager.cpp */; };
-		A9C2F24722E7833D001763CE /* local_single_block_elim_pass.cpp in Sources */ = {isa = PBXBuildFile; fileRef = A9C2F00B22E7833C001763CE /* local_single_block_elim_pass.cpp */; };
-		A9C2F24822E7833D001763CE /* local_single_block_elim_pass.cpp in Sources */ = {isa = PBXBuildFile; fileRef = A9C2F00B22E7833C001763CE /* local_single_block_elim_pass.cpp */; };
-		A9C2F24922E7833D001763CE /* freeze_spec_constant_value_pass.cpp in Sources */ = {isa = PBXBuildFile; fileRef = A9C2F00C22E7833C001763CE /* freeze_spec_constant_value_pass.cpp */; };
-		A9C2F24A22E7833D001763CE /* freeze_spec_constant_value_pass.cpp in Sources */ = {isa = PBXBuildFile; fileRef = A9C2F00C22E7833C001763CE /* freeze_spec_constant_value_pass.cpp */; };
-		A9C2F24B22E7833D001763CE /* replace_invalid_opc.h in Headers */ = {isa = PBXBuildFile; fileRef = A9C2F00D22E7833C001763CE /* replace_invalid_opc.h */; };
-		A9C2F24C22E7833D001763CE /* replace_invalid_opc.h in Headers */ = {isa = PBXBuildFile; fileRef = A9C2F00D22E7833C001763CE /* replace_invalid_opc.h */; };
-		A9C2F24D22E7833D001763CE /* local_access_chain_convert_pass.h in Headers */ = {isa = PBXBuildFile; fileRef = A9C2F00E22E7833C001763CE /* local_access_chain_convert_pass.h */; };
-		A9C2F24E22E7833D001763CE /* local_access_chain_convert_pass.h in Headers */ = {isa = PBXBuildFile; fileRef = A9C2F00E22E7833C001763CE /* local_access_chain_convert_pass.h */; };
-		A9C2F24F22E7833D001763CE /* inst_bindless_check_pass.cpp in Sources */ = {isa = PBXBuildFile; fileRef = A9C2F00F22E7833C001763CE /* inst_bindless_check_pass.cpp */; };
-		A9C2F25022E7833D001763CE /* inst_bindless_check_pass.cpp in Sources */ = {isa = PBXBuildFile; fileRef = A9C2F00F22E7833C001763CE /* inst_bindless_check_pass.cpp */; };
-		A9C2F25122E7833D001763CE /* local_redundancy_elimination.cpp in Sources */ = {isa = PBXBuildFile; fileRef = A9C2F01022E7833C001763CE /* local_redundancy_elimination.cpp */; };
-		A9C2F25222E7833D001763CE /* local_redundancy_elimination.cpp in Sources */ = {isa = PBXBuildFile; fileRef = A9C2F01022E7833C001763CE /* local_redundancy_elimination.cpp */; };
-		A9C2F25322E7833D001763CE /* instrument_pass.cpp in Sources */ = {isa = PBXBuildFile; fileRef = A9C2F01222E7833C001763CE /* instrument_pass.cpp */; };
-		A9C2F25422E7833D001763CE /* instrument_pass.cpp in Sources */ = {isa = PBXBuildFile; fileRef = A9C2F01222E7833C001763CE /* instrument_pass.cpp */; };
-		A9C2F25522E7833D001763CE /* propagator.h in Headers */ = {isa = PBXBuildFile; fileRef = A9C2F01322E7833C001763CE /* propagator.h */; };
-		A9C2F25622E7833D001763CE /* propagator.h in Headers */ = {isa = PBXBuildFile; fileRef = A9C2F01322E7833C001763CE /* propagator.h */; };
-		A9C2F25722E7833D001763CE /* instruction_list.h in Headers */ = {isa = PBXBuildFile; fileRef = A9C2F01422E7833C001763CE /* instruction_list.h */; };
-		A9C2F25822E7833D001763CE /* instruction_list.h in Headers */ = {isa = PBXBuildFile; fileRef = A9C2F01422E7833C001763CE /* instruction_list.h */; };
-		A9C2F25922E7833D001763CE /* feature_manager.cpp in Sources */ = {isa = PBXBuildFile; fileRef = A9C2F01522E7833C001763CE /* feature_manager.cpp */; };
-		A9C2F25A22E7833D001763CE /* feature_manager.cpp in Sources */ = {isa = PBXBuildFile; fileRef = A9C2F01522E7833C001763CE /* feature_manager.cpp */; };
-		A9C2F25B22E7833D001763CE /* pass.cpp in Sources */ = {isa = PBXBuildFile; fileRef = A9C2F01622E7833C001763CE /* pass.cpp */; };
-		A9C2F25C22E7833D001763CE /* pass.cpp in Sources */ = {isa = PBXBuildFile; fileRef = A9C2F01622E7833C001763CE /* pass.cpp */; };
-		A9C2F25D22E7833D001763CE /* loop_fission.cpp in Sources */ = {isa = PBXBuildFile; fileRef = A9C2F01722E7833C001763CE /* loop_fission.cpp */; };
-		A9C2F25E22E7833D001763CE /* loop_fission.cpp in Sources */ = {isa = PBXBuildFile; fileRef = A9C2F01722E7833C001763CE /* loop_fission.cpp */; };
-		A9C2F25F22E7833D001763CE /* dominator_tree.cpp in Sources */ = {isa = PBXBuildFile; fileRef = A9C2F01822E7833C001763CE /* dominator_tree.cpp */; };
-		A9C2F26022E7833D001763CE /* dominator_tree.cpp in Sources */ = {isa = PBXBuildFile; fileRef = A9C2F01822E7833C001763CE /* dominator_tree.cpp */; };
-		A9C2F26122E7833D001763CE /* merge_return_pass.cpp in Sources */ = {isa = PBXBuildFile; fileRef = A9C2F01922E7833C001763CE /* merge_return_pass.cpp */; };
-		A9C2F26222E7833D001763CE /* merge_return_pass.cpp in Sources */ = {isa = PBXBuildFile; fileRef = A9C2F01922E7833C001763CE /* merge_return_pass.cpp */; };
-		A9C2F26322E7833D001763CE /* ir_context.h in Headers */ = {isa = PBXBuildFile; fileRef = A9C2F01A22E7833C001763CE /* ir_context.h */; };
-		A9C2F26422E7833D001763CE /* ir_context.h in Headers */ = {isa = PBXBuildFile; fileRef = A9C2F01A22E7833C001763CE /* ir_context.h */; };
-		A9C2F26522E7833D001763CE /* eliminate_dead_constant_pass.cpp in Sources */ = {isa = PBXBuildFile; fileRef = A9C2F01B22E7833C001763CE /* eliminate_dead_constant_pass.cpp */; };
-		A9C2F26622E7833D001763CE /* eliminate_dead_constant_pass.cpp in Sources */ = {isa = PBXBuildFile; fileRef = A9C2F01B22E7833C001763CE /* eliminate_dead_constant_pass.cpp */; };
-		A9C2F26722E7833D001763CE /* cfg_cleanup_pass.cpp in Sources */ = {isa = PBXBuildFile; fileRef = A9C2F01C22E7833C001763CE /* cfg_cleanup_pass.cpp */; };
-		A9C2F26822E7833D001763CE /* cfg_cleanup_pass.cpp in Sources */ = {isa = PBXBuildFile; fileRef = A9C2F01C22E7833C001763CE /* cfg_cleanup_pass.cpp */; };
-		A9C2F26922E7833D001763CE /* const_folding_rules.cpp in Sources */ = {isa = PBXBuildFile; fileRef = A9C2F01D22E7833C001763CE /* const_folding_rules.cpp */; };
-		A9C2F26A22E7833D001763CE /* const_folding_rules.cpp in Sources */ = {isa = PBXBuildFile; fileRef = A9C2F01D22E7833C001763CE /* const_folding_rules.cpp */; };
-		A9C2F26B22E7833D001763CE /* loop_unroller.h in Headers */ = {isa = PBXBuildFile; fileRef = A9C2F01E22E7833C001763CE /* loop_unroller.h */; };
-		A9C2F26C22E7833D001763CE /* loop_unroller.h in Headers */ = {isa = PBXBuildFile; fileRef = A9C2F01E22E7833C001763CE /* loop_unroller.h */; };
-		A9C2F26D22E7833D001763CE /* strip_debug_info_pass.cpp in Sources */ = {isa = PBXBuildFile; fileRef = A9C2F01F22E7833C001763CE /* strip_debug_info_pass.cpp */; };
-		A9C2F26E22E7833D001763CE /* strip_debug_info_pass.cpp in Sources */ = {isa = PBXBuildFile; fileRef = A9C2F01F22E7833C001763CE /* strip_debug_info_pass.cpp */; };
-		A9C2F26F22E7833D001763CE /* ssa_rewrite_pass.cpp in Sources */ = {isa = PBXBuildFile; fileRef = A9C2F02022E7833C001763CE /* ssa_rewrite_pass.cpp */; };
-		A9C2F27022E7833D001763CE /* ssa_rewrite_pass.cpp in Sources */ = {isa = PBXBuildFile; fileRef = A9C2F02022E7833C001763CE /* ssa_rewrite_pass.cpp */; };
-		A9C2F27122E7833D001763CE /* loop_dependence.cpp in Sources */ = {isa = PBXBuildFile; fileRef = A9C2F02122E7833C001763CE /* loop_dependence.cpp */; };
-		A9C2F27222E7833D001763CE /* loop_dependence.cpp in Sources */ = {isa = PBXBuildFile; fileRef = A9C2F02122E7833C001763CE /* loop_dependence.cpp */; };
-		A9C2F27322E7833D001763CE /* unify_const_pass.h in Headers */ = {isa = PBXBuildFile; fileRef = A9C2F02222E7833C001763CE /* unify_const_pass.h */; };
-		A9C2F27422E7833D001763CE /* unify_const_pass.h in Headers */ = {isa = PBXBuildFile; fileRef = A9C2F02222E7833C001763CE /* unify_const_pass.h */; };
-		A9C2F27522E7833D001763CE /* ir_loader.h in Headers */ = {isa = PBXBuildFile; fileRef = A9C2F02322E7833C001763CE /* ir_loader.h */; };
-		A9C2F27622E7833D001763CE /* ir_loader.h in Headers */ = {isa = PBXBuildFile; fileRef = A9C2F02322E7833C001763CE /* ir_loader.h */; };
-		A9C2F27722E7833D001763CE /* types.h in Headers */ = {isa = PBXBuildFile; fileRef = A9C2F02422E7833C001763CE /* types.h */; };
-		A9C2F27822E7833D001763CE /* types.h in Headers */ = {isa = PBXBuildFile; fileRef = A9C2F02422E7833C001763CE /* types.h */; };
-		A9C2F27922E7833D001763CE /* fold_spec_constant_op_and_composite_pass.h in Headers */ = {isa = PBXBuildFile; fileRef = A9C2F02522E7833C001763CE /* fold_spec_constant_op_and_composite_pass.h */; };
-		A9C2F27A22E7833D001763CE /* fold_spec_constant_op_and_composite_pass.h in Headers */ = {isa = PBXBuildFile; fileRef = A9C2F02522E7833C001763CE /* fold_spec_constant_op_and_composite_pass.h */; };
-		A9C2F27B22E7833D001763CE /* mem_pass.cpp in Sources */ = {isa = PBXBuildFile; fileRef = A9C2F02622E7833C001763CE /* mem_pass.cpp */; };
-		A9C2F27C22E7833D001763CE /* mem_pass.cpp in Sources */ = {isa = PBXBuildFile; fileRef = A9C2F02622E7833C001763CE /* mem_pass.cpp */; };
-		A9C2F27D22E7833D001763CE /* basic_block.h in Headers */ = {isa = PBXBuildFile; fileRef = A9C2F02722E7833C001763CE /* basic_block.h */; };
-		A9C2F27E22E7833D001763CE /* basic_block.h in Headers */ = {isa = PBXBuildFile; fileRef = A9C2F02722E7833C001763CE /* basic_block.h */; };
-		A9C2F27F22E7833D001763CE /* remove_duplicates_pass.cpp in Sources */ = {isa = PBXBuildFile; fileRef = A9C2F02822E7833C001763CE /* remove_duplicates_pass.cpp */; };
-		A9C2F28022E7833D001763CE /* remove_duplicates_pass.cpp in Sources */ = {isa = PBXBuildFile; fileRef = A9C2F02822E7833C001763CE /* remove_duplicates_pass.cpp */; };
-		A9C2F28122E7833D001763CE /* dead_variable_elimination.cpp in Sources */ = {isa = PBXBuildFile; fileRef = A9C2F02922E7833C001763CE /* dead_variable_elimination.cpp */; };
-		A9C2F28222E7833D001763CE /* dead_variable_elimination.cpp in Sources */ = {isa = PBXBuildFile; fileRef = A9C2F02922E7833C001763CE /* dead_variable_elimination.cpp */; };
-		A9C2F28322E7833D001763CE /* block_merge_pass.h in Headers */ = {isa = PBXBuildFile; fileRef = A9C2F02A22E7833C001763CE /* block_merge_pass.h */; };
-		A9C2F28422E7833D001763CE /* block_merge_pass.h in Headers */ = {isa = PBXBuildFile; fileRef = A9C2F02A22E7833C001763CE /* block_merge_pass.h */; };
-		A9C2F28522E7833D001763CE /* module.cpp in Sources */ = {isa = PBXBuildFile; fileRef = A9C2F02B22E7833C001763CE /* module.cpp */; };
-		A9C2F28622E7833D001763CE /* module.cpp in Sources */ = {isa = PBXBuildFile; fileRef = A9C2F02B22E7833C001763CE /* module.cpp */; };
-		A9C2F28722E7833D001763CE /* fold_spec_constant_op_and_composite_pass.cpp in Sources */ = {isa = PBXBuildFile; fileRef = A9C2F02C22E7833C001763CE /* fold_spec_constant_op_and_composite_pass.cpp */; };
-		A9C2F28822E7833D001763CE /* fold_spec_constant_op_and_composite_pass.cpp in Sources */ = {isa = PBXBuildFile; fileRef = A9C2F02C22E7833C001763CE /* fold_spec_constant_op_and_composite_pass.cpp */; };
-		A9C2F28922E7833D001763CE /* loop_unswitch_pass.cpp in Sources */ = {isa = PBXBuildFile; fileRef = A9C2F02D22E7833C001763CE /* loop_unswitch_pass.cpp */; };
-		A9C2F28A22E7833D001763CE /* loop_unswitch_pass.cpp in Sources */ = {isa = PBXBuildFile; fileRef = A9C2F02D22E7833C001763CE /* loop_unswitch_pass.cpp */; };
-		A9C2F28B22E7833D001763CE /* unify_const_pass.cpp in Sources */ = {isa = PBXBuildFile; fileRef = A9C2F02E22E7833C001763CE /* unify_const_pass.cpp */; };
-		A9C2F28C22E7833D001763CE /* unify_const_pass.cpp in Sources */ = {isa = PBXBuildFile; fileRef = A9C2F02E22E7833C001763CE /* unify_const_pass.cpp */; };
-		A9C2F28D22E7833D001763CE /* type_manager.cpp in Sources */ = {isa = PBXBuildFile; fileRef = A9C2F02F22E7833C001763CE /* type_manager.cpp */; };
-		A9C2F28E22E7833D001763CE /* type_manager.cpp in Sources */ = {isa = PBXBuildFile; fileRef = A9C2F02F22E7833C001763CE /* type_manager.cpp */; };
-		A9C2F28F22E7833D001763CE /* generate_webgpu_initializers_pass.cpp in Sources */ = {isa = PBXBuildFile; fileRef = A9C2F03022E7833C001763CE /* generate_webgpu_initializers_pass.cpp */; };
-		A9C2F29022E7833D001763CE /* generate_webgpu_initializers_pass.cpp in Sources */ = {isa = PBXBuildFile; fileRef = A9C2F03022E7833C001763CE /* generate_webgpu_initializers_pass.cpp */; };
-		A9C2F29122E7833D001763CE /* private_to_local_pass.h in Headers */ = {isa = PBXBuildFile; fileRef = A9C2F03122E7833C001763CE /* private_to_local_pass.h */; };
-		A9C2F29222E7833D001763CE /* private_to_local_pass.h in Headers */ = {isa = PBXBuildFile; fileRef = A9C2F03122E7833C001763CE /* private_to_local_pass.h */; };
-		A9C2F29322E7833D001763CE /* inline_pass.cpp in Sources */ = {isa = PBXBuildFile; fileRef = A9C2F03222E7833C001763CE /* inline_pass.cpp */; };
-		A9C2F29422E7833D001763CE /* inline_pass.cpp in Sources */ = {isa = PBXBuildFile; fileRef = A9C2F03222E7833C001763CE /* inline_pass.cpp */; };
-		A9C2F29522E7833D001763CE /* def_use_manager.h in Headers */ = {isa = PBXBuildFile; fileRef = A9C2F03322E7833C001763CE /* def_use_manager.h */; };
-		A9C2F29622E7833D001763CE /* def_use_manager.h in Headers */ = {isa = PBXBuildFile; fileRef = A9C2F03322E7833C001763CE /* def_use_manager.h */; };
-		A9C2F29722E7833D001763CE /* ir_loader.cpp in Sources */ = {isa = PBXBuildFile; fileRef = A9C2F03422E7833C001763CE /* ir_loader.cpp */; };
-		A9C2F29822E7833D001763CE /* ir_loader.cpp in Sources */ = {isa = PBXBuildFile; fileRef = A9C2F03422E7833C001763CE /* ir_loader.cpp */; };
-		A9C2F29922E7833D001763CE /* cfg_cleanup_pass.h in Headers */ = {isa = PBXBuildFile; fileRef = A9C2F03522E7833C001763CE /* cfg_cleanup_pass.h */; };
-		A9C2F29A22E7833D001763CE /* cfg_cleanup_pass.h in Headers */ = {isa = PBXBuildFile; fileRef = A9C2F03522E7833C001763CE /* cfg_cleanup_pass.h */; };
-		A9C2F29B22E7833D001763CE /* licm_pass.cpp in Sources */ = {isa = PBXBuildFile; fileRef = A9C2F03622E7833C001763CE /* licm_pass.cpp */; };
-		A9C2F29C22E7833D001763CE /* licm_pass.cpp in Sources */ = {isa = PBXBuildFile; fileRef = A9C2F03622E7833C001763CE /* licm_pass.cpp */; };
-		A9C2F29D22E7833D001763CE /* eliminate_dead_functions_pass.cpp in Sources */ = {isa = PBXBuildFile; fileRef = A9C2F03722E7833C001763CE /* eliminate_dead_functions_pass.cpp */; };
-		A9C2F29E22E7833D001763CE /* eliminate_dead_functions_pass.cpp in Sources */ = {isa = PBXBuildFile; fileRef = A9C2F03722E7833C001763CE /* eliminate_dead_functions_pass.cpp */; };
-		A9C2F29F22E7833D001763CE /* local_redundancy_elimination.h in Headers */ = {isa = PBXBuildFile; fileRef = A9C2F03822E7833C001763CE /* local_redundancy_elimination.h */; };
-		A9C2F2A022E7833D001763CE /* local_redundancy_elimination.h in Headers */ = {isa = PBXBuildFile; fileRef = A9C2F03822E7833C001763CE /* local_redundancy_elimination.h */; };
-		A9C2F2A122E7833D001763CE /* split_invalid_unreachable_pass.cpp in Sources */ = {isa = PBXBuildFile; fileRef = A9C2F03922E7833C001763CE /* split_invalid_unreachable_pass.cpp */; };
-		A9C2F2A222E7833D001763CE /* split_invalid_unreachable_pass.cpp in Sources */ = {isa = PBXBuildFile; fileRef = A9C2F03922E7833C001763CE /* split_invalid_unreachable_pass.cpp */; };
-		A9C2F2A322E7833D001763CE /* loop_peeling.h in Headers */ = {isa = PBXBuildFile; fileRef = A9C2F03A22E7833C001763CE /* loop_peeling.h */; };
-		A9C2F2A422E7833D001763CE /* loop_peeling.h in Headers */ = {isa = PBXBuildFile; fileRef = A9C2F03A22E7833C001763CE /* loop_peeling.h */; };
-		A9C2F2A522E7833D001763CE /* vector_dce.cpp in Sources */ = {isa = PBXBuildFile; fileRef = A9C2F03B22E7833C001763CE /* vector_dce.cpp */; };
-		A9C2F2A622E7833D001763CE /* vector_dce.cpp in Sources */ = {isa = PBXBuildFile; fileRef = A9C2F03B22E7833C001763CE /* vector_dce.cpp */; };
-		A9C2F2A722E7833D001763CE /* block_merge_util.h in Headers */ = {isa = PBXBuildFile; fileRef = A9C2F03C22E7833C001763CE /* block_merge_util.h */; };
-		A9C2F2A822E7833D001763CE /* block_merge_util.h in Headers */ = {isa = PBXBuildFile; fileRef = A9C2F03C22E7833C001763CE /* block_merge_util.h */; };
-		A9C2F2A922E7833D001763CE /* loop_unroller.cpp in Sources */ = {isa = PBXBuildFile; fileRef = A9C2F03D22E7833C001763CE /* loop_unroller.cpp */; };
-		A9C2F2AA22E7833D001763CE /* loop_unroller.cpp in Sources */ = {isa = PBXBuildFile; fileRef = A9C2F03D22E7833C001763CE /* loop_unroller.cpp */; };
-		A9C2F2AB22E7833D001763CE /* constants.cpp in Sources */ = {isa = PBXBuildFile; fileRef = A9C2F03E22E7833C001763CE /* constants.cpp */; };
-		A9C2F2AC22E7833D001763CE /* constants.cpp in Sources */ = {isa = PBXBuildFile; fileRef = A9C2F03E22E7833C001763CE /* constants.cpp */; };
-		A9C2F2AD22E7833D001763CE /* loop_fusion_pass.h in Headers */ = {isa = PBXBuildFile; fileRef = A9C2F03F22E7833C001763CE /* loop_fusion_pass.h */; };
-		A9C2F2AE22E7833D001763CE /* loop_fusion_pass.h in Headers */ = {isa = PBXBuildFile; fileRef = A9C2F03F22E7833C001763CE /* loop_fusion_pass.h */; };
-		A9C2F2AF22E7833D001763CE /* struct_cfg_analysis.h in Headers */ = {isa = PBXBuildFile; fileRef = A9C2F04022E7833C001763CE /* struct_cfg_analysis.h */; };
-		A9C2F2B022E7833D001763CE /* struct_cfg_analysis.h in Headers */ = {isa = PBXBuildFile; fileRef = A9C2F04022E7833C001763CE /* struct_cfg_analysis.h */; };
-		A9C2F2B122E7833D001763CE /* def_use_manager.cpp in Sources */ = {isa = PBXBuildFile; fileRef = A9C2F04122E7833C001763CE /* def_use_manager.cpp */; };
-		A9C2F2B222E7833D001763CE /* def_use_manager.cpp in Sources */ = {isa = PBXBuildFile; fileRef = A9C2F04122E7833C001763CE /* def_use_manager.cpp */; };
-		A9C2F2B322E7833D001763CE /* strip_reflect_info_pass.cpp in Sources */ = {isa = PBXBuildFile; fileRef = A9C2F04222E7833C001763CE /* strip_reflect_info_pass.cpp */; };
-		A9C2F2B422E7833D001763CE /* strip_reflect_info_pass.cpp in Sources */ = {isa = PBXBuildFile; fileRef = A9C2F04222E7833C001763CE /* strip_reflect_info_pass.cpp */; };
-		A9C2F2B522E7833D001763CE /* decoration_manager.h in Headers */ = {isa = PBXBuildFile; fileRef = A9C2F04322E7833C001763CE /* decoration_manager.h */; };
-		A9C2F2B622E7833D001763CE /* decoration_manager.h in Headers */ = {isa = PBXBuildFile; fileRef = A9C2F04322E7833C001763CE /* decoration_manager.h */; };
-		A9C2F2B722E7833D001763CE /* ccp_pass.cpp in Sources */ = {isa = PBXBuildFile; fileRef = A9C2F04422E7833C001763CE /* ccp_pass.cpp */; };
-		A9C2F2B822E7833D001763CE /* ccp_pass.cpp in Sources */ = {isa = PBXBuildFile; fileRef = A9C2F04422E7833C001763CE /* ccp_pass.cpp */; };
-		A9C2F2B922E7833D001763CE /* process_lines_pass.h in Headers */ = {isa = PBXBuildFile; fileRef = A9C2F04522E7833C001763CE /* process_lines_pass.h */; };
-		A9C2F2BA22E7833D001763CE /* process_lines_pass.h in Headers */ = {isa = PBXBuildFile; fileRef = A9C2F04522E7833C001763CE /* process_lines_pass.h */; };
-		A9C2F2BB22E7833D001763CE /* local_single_block_elim_pass.h in Headers */ = {isa = PBXBuildFile; fileRef = A9C2F04622E7833C001763CE /* local_single_block_elim_pass.h */; };
-		A9C2F2BC22E7833D001763CE /* local_single_block_elim_pass.h in Headers */ = {isa = PBXBuildFile; fileRef = A9C2F04622E7833C001763CE /* local_single_block_elim_pass.h */; };
-		A9C2F2BD22E7833D001763CE /* pch_source_opt.cpp in Sources */ = {isa = PBXBuildFile; fileRef = A9C2F04722E7833C001763CE /* pch_source_opt.cpp */; };
-		A9C2F2BE22E7833D001763CE /* pch_source_opt.cpp in Sources */ = {isa = PBXBuildFile; fileRef = A9C2F04722E7833C001763CE /* pch_source_opt.cpp */; };
-		A9C2F2BF22E7833D001763CE /* strength_reduction_pass.h in Headers */ = {isa = PBXBuildFile; fileRef = A9C2F04822E7833C001763CE /* strength_reduction_pass.h */; };
-		A9C2F2C022E7833D001763CE /* strength_reduction_pass.h in Headers */ = {isa = PBXBuildFile; fileRef = A9C2F04822E7833C001763CE /* strength_reduction_pass.h */; };
-		A9C2F2C122E7833D001763CE /* aggressive_dead_code_elim_pass.cpp in Sources */ = {isa = PBXBuildFile; fileRef = A9C2F04922E7833C001763CE /* aggressive_dead_code_elim_pass.cpp */; };
-		A9C2F2C222E7833D001763CE /* aggressive_dead_code_elim_pass.cpp in Sources */ = {isa = PBXBuildFile; fileRef = A9C2F04922E7833C001763CE /* aggressive_dead_code_elim_pass.cpp */; };
-		A9C2F2C322E7833D001763CE /* eliminate_dead_functions_util.cpp in Sources */ = {isa = PBXBuildFile; fileRef = A9C2F04A22E7833C001763CE /* eliminate_dead_functions_util.cpp */; };
-		A9C2F2C422E7833D001763CE /* eliminate_dead_functions_util.cpp in Sources */ = {isa = PBXBuildFile; fileRef = A9C2F04A22E7833C001763CE /* eliminate_dead_functions_util.cpp */; };
-		A9C2F2C522E7833D001763CE /* simplification_pass.cpp in Sources */ = {isa = PBXBuildFile; fileRef = A9C2F04B22E7833C001763CE /* simplification_pass.cpp */; };
-		A9C2F2C622E7833D001763CE /* simplification_pass.cpp in Sources */ = {isa = PBXBuildFile; fileRef = A9C2F04B22E7833C001763CE /* simplification_pass.cpp */; };
-		A9C2F2C722E7833D001763CE /* dead_branch_elim_pass.cpp in Sources */ = {isa = PBXBuildFile; fileRef = A9C2F04C22E7833C001763CE /* dead_branch_elim_pass.cpp */; };
-		A9C2F2C822E7833D001763CE /* dead_branch_elim_pass.cpp in Sources */ = {isa = PBXBuildFile; fileRef = A9C2F04C22E7833C001763CE /* dead_branch_elim_pass.cpp */; };
-		A9C2F2C922E7833D001763CE /* flatten_decoration_pass.cpp in Sources */ = {isa = PBXBuildFile; fileRef = A9C2F04D22E7833C001763CE /* flatten_decoration_pass.cpp */; };
-		A9C2F2CA22E7833D001763CE /* flatten_decoration_pass.cpp in Sources */ = {isa = PBXBuildFile; fileRef = A9C2F04D22E7833C001763CE /* flatten_decoration_pass.cpp */; };
-		A9C2F2CB22E7833D001763CE /* dead_insert_elim_pass.h in Headers */ = {isa = PBXBuildFile; fileRef = A9C2F04E22E7833C001763CE /* dead_insert_elim_pass.h */; };
-		A9C2F2CC22E7833D001763CE /* dead_insert_elim_pass.h in Headers */ = {isa = PBXBuildFile; fileRef = A9C2F04E22E7833C001763CE /* dead_insert_elim_pass.h */; };
-		A9C2F2CD22E7833D001763CE /* folding_rules.cpp in Sources */ = {isa = PBXBuildFile; fileRef = A9C2F04F22E7833C001763CE /* folding_rules.cpp */; };
-		A9C2F2CE22E7833D001763CE /* folding_rules.cpp in Sources */ = {isa = PBXBuildFile; fileRef = A9C2F04F22E7833C001763CE /* folding_rules.cpp */; };
-		A9C2F2CF22E7833D001763CE /* freeze_spec_constant_value_pass.h in Headers */ = {isa = PBXBuildFile; fileRef = A9C2F05022E7833C001763CE /* freeze_spec_constant_value_pass.h */; };
-		A9C2F2D022E7833D001763CE /* freeze_spec_constant_value_pass.h in Headers */ = {isa = PBXBuildFile; fileRef = A9C2F05022E7833C001763CE /* freeze_spec_constant_value_pass.h */; };
-		A9C2F2D122E7833D001763CE /* ir_context.cpp in Sources */ = {isa = PBXBuildFile; fileRef = A9C2F05122E7833C001763CE /* ir_context.cpp */; };
-		A9C2F2D222E7833D001763CE /* ir_context.cpp in Sources */ = {isa = PBXBuildFile; fileRef = A9C2F05122E7833C001763CE /* ir_context.cpp */; };
-		A9C2F2D322E7833D001763CE /* instrument_pass.h in Headers */ = {isa = PBXBuildFile; fileRef = A9C2F05222E7833C001763CE /* instrument_pass.h */; };
-		A9C2F2D422E7833D001763CE /* instrument_pass.h in Headers */ = {isa = PBXBuildFile; fileRef = A9C2F05222E7833C001763CE /* instrument_pass.h */; };
-		A9C2F2D522E7833D001763CE /* mem_pass.h in Headers */ = {isa = PBXBuildFile; fileRef = A9C2F05322E7833C001763CE /* mem_pass.h */; };
-		A9C2F2D622E7833D001763CE /* mem_pass.h in Headers */ = {isa = PBXBuildFile; fileRef = A9C2F05322E7833C001763CE /* mem_pass.h */; };
-		A9C2F2D722E7833D001763CE /* loop_descriptor.cpp in Sources */ = {isa = PBXBuildFile; fileRef = A9C2F05422E7833C001763CE /* loop_descriptor.cpp */; };
-		A9C2F2D822E7833D001763CE /* loop_descriptor.cpp in Sources */ = {isa = PBXBuildFile; fileRef = A9C2F05422E7833C001763CE /* loop_descriptor.cpp */; };
-		A9C2F2D922E7833D001763CE /* local_ssa_elim_pass.cpp in Sources */ = {isa = PBXBuildFile; fileRef = A9C2F05522E7833C001763CE /* local_ssa_elim_pass.cpp */; };
-		A9C2F2DA22E7833D001763CE /* local_ssa_elim_pass.cpp in Sources */ = {isa = PBXBuildFile; fileRef = A9C2F05522E7833C001763CE /* local_ssa_elim_pass.cpp */; };
-		A9C2F2DB22E7833D001763CE /* eliminate_dead_members_pass.h in Headers */ = {isa = PBXBuildFile; fileRef = A9C2F05622E7833C001763CE /* eliminate_dead_members_pass.h */; };
-		A9C2F2DC22E7833D001763CE /* eliminate_dead_members_pass.h in Headers */ = {isa = PBXBuildFile; fileRef = A9C2F05622E7833C001763CE /* eliminate_dead_members_pass.h */; };
-		A9C2F2DD22E7833D001763CE /* function.cpp in Sources */ = {isa = PBXBuildFile; fileRef = A9C2F05722E7833C001763CE /* function.cpp */; };
-		A9C2F2DE22E7833D001763CE /* function.cpp in Sources */ = {isa = PBXBuildFile; fileRef = A9C2F05722E7833C001763CE /* function.cpp */; };
-		A9C2F2DF22E7833D001763CE /* instruction_list.cpp in Sources */ = {isa = PBXBuildFile; fileRef = A9C2F05822E7833C001763CE /* instruction_list.cpp */; };
-		A9C2F2E022E7833D001763CE /* instruction_list.cpp in Sources */ = {isa = PBXBuildFile; fileRef = A9C2F05822E7833C001763CE /* instruction_list.cpp */; };
-		A9C2F2E122E7833D001763CE /* composite.cpp in Sources */ = {isa = PBXBuildFile; fileRef = A9C2F05922E7833C001763CE /* composite.cpp */; };
-		A9C2F2E222E7833D001763CE /* composite.cpp in Sources */ = {isa = PBXBuildFile; fileRef = A9C2F05922E7833C001763CE /* composite.cpp */; };
-		A9C2F2E322E7833D001763CE /* process_lines_pass.cpp in Sources */ = {isa = PBXBuildFile; fileRef = A9C2F05A22E7833C001763CE /* process_lines_pass.cpp */; };
-		A9C2F2E422E7833D001763CE /* process_lines_pass.cpp in Sources */ = {isa = PBXBuildFile; fileRef = A9C2F05A22E7833C001763CE /* process_lines_pass.cpp */; };
-		A9C2F2E522E7833D001763CE /* inline_pass.h in Headers */ = {isa = PBXBuildFile; fileRef = A9C2F05B22E7833C001763CE /* inline_pass.h */; };
-		A9C2F2E622E7833D001763CE /* inline_pass.h in Headers */ = {isa = PBXBuildFile; fileRef = A9C2F05B22E7833C001763CE /* inline_pass.h */; };
-		A9C2F2E722E7833D001763CE /* loop_dependence.h in Headers */ = {isa = PBXBuildFile; fileRef = A9C2F05C22E7833C001763CE /* loop_dependence.h */; };
-		A9C2F2E822E7833D001763CE /* loop_dependence.h in Headers */ = {isa = PBXBuildFile; fileRef = A9C2F05C22E7833C001763CE /* loop_dependence.h */; };
-		A9C2F2E922E7833D001763CE /* value_number_table.h in Headers */ = {isa = PBXBuildFile; fileRef = A9C2F05D22E7833C001763CE /* value_number_table.h */; };
-		A9C2F2EA22E7833D001763CE /* value_number_table.h in Headers */ = {isa = PBXBuildFile; fileRef = A9C2F05D22E7833C001763CE /* value_number_table.h */; };
-		A9C2F2EB22E7833D001763CE /* flatten_decoration_pass.h in Headers */ = {isa = PBXBuildFile; fileRef = A9C2F05E22E7833C001763CE /* flatten_decoration_pass.h */; };
-		A9C2F2EC22E7833D001763CE /* flatten_decoration_pass.h in Headers */ = {isa = PBXBuildFile; fileRef = A9C2F05E22E7833C001763CE /* flatten_decoration_pass.h */; };
-		A9C2F2ED22E7833D001763CE /* if_conversion.cpp in Sources */ = {isa = PBXBuildFile; fileRef = A9C2F05F22E7833C001763CE /* if_conversion.cpp */; };
-		A9C2F2EE22E7833D001763CE /* if_conversion.cpp in Sources */ = {isa = PBXBuildFile; fileRef = A9C2F05F22E7833C001763CE /* if_conversion.cpp */; };
-		A9C2F2EF22E7833D001763CE /* inline_exhaustive_pass.h in Headers */ = {isa = PBXBuildFile; fileRef = A9C2F06022E7833C001763CE /* inline_exhaustive_pass.h */; };
-		A9C2F2F022E7833D001763CE /* inline_exhaustive_pass.h in Headers */ = {isa = PBXBuildFile; fileRef = A9C2F06022E7833C001763CE /* inline_exhaustive_pass.h */; };
-		A9C2F2F122E7833D001763CE /* constants.h in Headers */ = {isa = PBXBuildFile; fileRef = A9C2F06122E7833C001763CE /* constants.h */; };
-		A9C2F2F222E7833D001763CE /* constants.h in Headers */ = {isa = PBXBuildFile; fileRef = A9C2F06122E7833C001763CE /* constants.h */; };
-		A9C2F2F322E7833D001763CE /* eliminate_dead_members_pass.cpp in Sources */ = {isa = PBXBuildFile; fileRef = A9C2F06222E7833C001763CE /* eliminate_dead_members_pass.cpp */; };
-		A9C2F2F422E7833D001763CE /* eliminate_dead_members_pass.cpp in Sources */ = {isa = PBXBuildFile; fileRef = A9C2F06222E7833C001763CE /* eliminate_dead_members_pass.cpp */; };
-		A9C2F2F522E7833D001763CE /* strength_reduction_pass.cpp in Sources */ = {isa = PBXBuildFile; fileRef = A9C2F06322E7833C001763CE /* strength_reduction_pass.cpp */; };
-		A9C2F2F622E7833D001763CE /* strength_reduction_pass.cpp in Sources */ = {isa = PBXBuildFile; fileRef = A9C2F06322E7833C001763CE /* strength_reduction_pass.cpp */; };
-		A9C2F2F722E7833D001763CE /* block_merge_util.cpp in Sources */ = {isa = PBXBuildFile; fileRef = A9C2F06422E7833C001763CE /* block_merge_util.cpp */; };
-		A9C2F2F822E7833D001763CE /* block_merge_util.cpp in Sources */ = {isa = PBXBuildFile; fileRef = A9C2F06422E7833C001763CE /* block_merge_util.cpp */; };
-		A9C2F2F922E7833D001763CE /* upgrade_memory_model.h in Headers */ = {isa = PBXBuildFile; fileRef = A9C2F06522E7833C001763CE /* upgrade_memory_model.h */; };
-		A9C2F2FA22E7833D001763CE /* upgrade_memory_model.h in Headers */ = {isa = PBXBuildFile; fileRef = A9C2F06522E7833C001763CE /* upgrade_memory_model.h */; };
-		A9C2F2FB22E7833D001763CE /* copy_prop_arrays.cpp in Sources */ = {isa = PBXBuildFile; fileRef = A9C2F06622E7833C001763CE /* copy_prop_arrays.cpp */; };
-		A9C2F2FC22E7833D001763CE /* copy_prop_arrays.cpp in Sources */ = {isa = PBXBuildFile; fileRef = A9C2F06622E7833C001763CE /* copy_prop_arrays.cpp */; };
-		A9C2F2FD22E7833D001763CE /* pass_manager.cpp in Sources */ = {isa = PBXBuildFile; fileRef = A9C2F06722E7833C001763CE /* pass_manager.cpp */; };
-		A9C2F2FE22E7833D001763CE /* pass_manager.cpp in Sources */ = {isa = PBXBuildFile; fileRef = A9C2F06722E7833C001763CE /* pass_manager.cpp */; };
-		A9C2F2FF22E7833D001763CE /* inline_exhaustive_pass.cpp in Sources */ = {isa = PBXBuildFile; fileRef = A9C2F06822E7833C001763CE /* inline_exhaustive_pass.cpp */; };
-		A9C2F30022E7833D001763CE /* inline_exhaustive_pass.cpp in Sources */ = {isa = PBXBuildFile; fileRef = A9C2F06822E7833C001763CE /* inline_exhaustive_pass.cpp */; };
-		A9C2F30122E7833D001763CE /* loop_fission.h in Headers */ = {isa = PBXBuildFile; fileRef = A9C2F06922E7833C001763CE /* loop_fission.h */; };
-		A9C2F30222E7833D001763CE /* loop_fission.h in Headers */ = {isa = PBXBuildFile; fileRef = A9C2F06922E7833C001763CE /* loop_fission.h */; };
-		A9C2F30322E7833D001763CE /* workaround1209.h in Headers */ = {isa = PBXBuildFile; fileRef = A9C2F06A22E7833C001763CE /* workaround1209.h */; };
-		A9C2F30422E7833D001763CE /* workaround1209.h in Headers */ = {isa = PBXBuildFile; fileRef = A9C2F06A22E7833C001763CE /* workaround1209.h */; };
-		A9C2F30522E7833D001763CE /* loop_fusion_pass.cpp in Sources */ = {isa = PBXBuildFile; fileRef = A9C2F06B22E7833C001763CE /* loop_fusion_pass.cpp */; };
-		A9C2F30622E7833D001763CE /* loop_fusion_pass.cpp in Sources */ = {isa = PBXBuildFile; fileRef = A9C2F06B22E7833C001763CE /* loop_fusion_pass.cpp */; };
-		A9C2F30722E7833D001763CE /* log.h in Headers */ = {isa = PBXBuildFile; fileRef = A9C2F06C22E7833C001763CE /* log.h */; };
-		A9C2F30822E7833D001763CE /* log.h in Headers */ = {isa = PBXBuildFile; fileRef = A9C2F06C22E7833C001763CE /* log.h */; };
-		A9C2F30922E7833D001763CE /* split_invalid_unreachable_pass.h in Headers */ = {isa = PBXBuildFile; fileRef = A9C2F06D22E7833C001763CE /* split_invalid_unreachable_pass.h */; };
-		A9C2F30A22E7833D001763CE /* split_invalid_unreachable_pass.h in Headers */ = {isa = PBXBuildFile; fileRef = A9C2F06D22E7833C001763CE /* split_invalid_unreachable_pass.h */; };
-		A9C2F30B22E7833D001763CE /* copy_prop_arrays.h in Headers */ = {isa = PBXBuildFile; fileRef = A9C2F06E22E7833C001763CE /* copy_prop_arrays.h */; };
-		A9C2F30C22E7833D001763CE /* copy_prop_arrays.h in Headers */ = {isa = PBXBuildFile; fileRef = A9C2F06E22E7833C001763CE /* copy_prop_arrays.h */; };
-		A9C2F30D22E7833D001763CE /* eliminate_dead_constant_pass.h in Headers */ = {isa = PBXBuildFile; fileRef = A9C2F06F22E7833C001763CE /* eliminate_dead_constant_pass.h */; };
-		A9C2F30E22E7833D001763CE /* eliminate_dead_constant_pass.h in Headers */ = {isa = PBXBuildFile; fileRef = A9C2F06F22E7833C001763CE /* eliminate_dead_constant_pass.h */; };
-		A9C2F30F22E7833D001763CE /* dead_insert_elim_pass.cpp in Sources */ = {isa = PBXBuildFile; fileRef = A9C2F07022E7833C001763CE /* dead_insert_elim_pass.cpp */; };
-		A9C2F31022E7833D001763CE /* dead_insert_elim_pass.cpp in Sources */ = {isa = PBXBuildFile; fileRef = A9C2F07022E7833C001763CE /* dead_insert_elim_pass.cpp */; };
-		A9C2F31122E7833D001763CE /* ssa_rewrite_pass.h in Headers */ = {isa = PBXBuildFile; fileRef = A9C2F07122E7833C001763CE /* ssa_rewrite_pass.h */; };
-		A9C2F31222E7833D001763CE /* ssa_rewrite_pass.h in Headers */ = {isa = PBXBuildFile; fileRef = A9C2F07122E7833C001763CE /* ssa_rewrite_pass.h */; };
-		A9C2F31322E7833D001763CE /* scalar_analysis.cpp in Sources */ = {isa = PBXBuildFile; fileRef = A9C2F07222E7833C001763CE /* scalar_analysis.cpp */; };
-		A9C2F31422E7833D001763CE /* scalar_analysis.cpp in Sources */ = {isa = PBXBuildFile; fileRef = A9C2F07222E7833C001763CE /* scalar_analysis.cpp */; };
-		A9C2F31522E7833D001763CE /* dead_variable_elimination.h in Headers */ = {isa = PBXBuildFile; fileRef = A9C2F07322E7833C001763CE /* dead_variable_elimination.h */; };
-		A9C2F31622E7833D001763CE /* dead_variable_elimination.h in Headers */ = {isa = PBXBuildFile; fileRef = A9C2F07322E7833C001763CE /* dead_variable_elimination.h */; };
-		A9C2F31722E7833D001763CE /* block_merge_pass.cpp in Sources */ = {isa = PBXBuildFile; fileRef = A9C2F07422E7833C001763CE /* block_merge_pass.cpp */; };
-		A9C2F31822E7833D001763CE /* block_merge_pass.cpp in Sources */ = {isa = PBXBuildFile; fileRef = A9C2F07422E7833C001763CE /* block_merge_pass.cpp */; };
-		A9C2F31922E7833D001763CE /* dominator_analysis.h in Headers */ = {isa = PBXBuildFile; fileRef = A9C2F07522E7833C001763CE /* dominator_analysis.h */; };
-		A9C2F31A22E7833D001763CE /* dominator_analysis.h in Headers */ = {isa = PBXBuildFile; fileRef = A9C2F07522E7833C001763CE /* dominator_analysis.h */; };
-		A9C2F31B22E7833D001763CE /* pass.h in Headers */ = {isa = PBXBuildFile; fileRef = A9C2F07622E7833C001763CE /* pass.h */; };
-		A9C2F31C22E7833D001763CE /* pass.h in Headers */ = {isa = PBXBuildFile; fileRef = A9C2F07622E7833C001763CE /* pass.h */; };
-		A9C2F31D22E7833D001763CE /* folding_rules.h in Headers */ = {isa = PBXBuildFile; fileRef = A9C2F07722E7833C001763CE /* folding_rules.h */; };
-		A9C2F31E22E7833D001763CE /* folding_rules.h in Headers */ = {isa = PBXBuildFile; fileRef = A9C2F07722E7833C001763CE /* folding_rules.h */; };
-		A9C2F31F22E7833D001763CE /* eliminate_dead_functions_pass.h in Headers */ = {isa = PBXBuildFile; fileRef = A9C2F07822E7833C001763CE /* eliminate_dead_functions_pass.h */; };
-		A9C2F32022E7833D001763CE /* eliminate_dead_functions_pass.h in Headers */ = {isa = PBXBuildFile; fileRef = A9C2F07822E7833C001763CE /* eliminate_dead_functions_pass.h */; };
-		A9C2F32122E7833D001763CE /* eliminate_dead_functions_util.h in Headers */ = {isa = PBXBuildFile; fileRef = A9C2F07922E7833C001763CE /* eliminate_dead_functions_util.h */; };
-		A9C2F32222E7833D001763CE /* eliminate_dead_functions_util.h in Headers */ = {isa = PBXBuildFile; fileRef = A9C2F07922E7833C001763CE /* eliminate_dead_functions_util.h */; };
-		A9C2F32322E7833D001763CE /* fold.h in Headers */ = {isa = PBXBuildFile; fileRef = A9C2F07A22E7833C001763CE /* fold.h */; };
-		A9C2F32422E7833D001763CE /* fold.h in Headers */ = {isa = PBXBuildFile; fileRef = A9C2F07A22E7833C001763CE /* fold.h */; };
-		A9C2F32522E7833D001763CE /* local_single_store_elim_pass.cpp in Sources */ = {isa = PBXBuildFile; fileRef = A9C2F07B22E7833C001763CE /* local_single_store_elim_pass.cpp */; };
-		A9C2F32622E7833D001763CE /* local_single_store_elim_pass.cpp in Sources */ = {isa = PBXBuildFile; fileRef = A9C2F07B22E7833C001763CE /* local_single_store_elim_pass.cpp */; };
-		A9C2F32722E7833D001763CE /* dead_branch_elim_pass.h in Headers */ = {isa = PBXBuildFile; fileRef = A9C2F07C22E7833C001763CE /* dead_branch_elim_pass.h */; };
-		A9C2F32822E7833D001763CE /* dead_branch_elim_pass.h in Headers */ = {isa = PBXBuildFile; fileRef = A9C2F07C22E7833C001763CE /* dead_branch_elim_pass.h */; };
-		A9C2F32922E7833D001763CE /* private_to_local_pass.cpp in Sources */ = {isa = PBXBuildFile; fileRef = A9C2F07D22E7833C001763CE /* private_to_local_pass.cpp */; };
-		A9C2F32A22E7833D001763CE /* private_to_local_pass.cpp in Sources */ = {isa = PBXBuildFile; fileRef = A9C2F07D22E7833C001763CE /* private_to_local_pass.cpp */; };
-		A9C2F32B22E7833D001763CE /* scalar_analysis_nodes.h in Headers */ = {isa = PBXBuildFile; fileRef = A9C2F07E22E7833C001763CE /* scalar_analysis_nodes.h */; };
-		A9C2F32C22E7833D001763CE /* scalar_analysis_nodes.h in Headers */ = {isa = PBXBuildFile; fileRef = A9C2F07E22E7833C001763CE /* scalar_analysis_nodes.h */; };
-		A9C2F32D22E7833D001763CE /* propagator.cpp in Sources */ = {isa = PBXBuildFile; fileRef = A9C2F07F22E7833C001763CE /* propagator.cpp */; };
-		A9C2F32E22E7833D001763CE /* propagator.cpp in Sources */ = {isa = PBXBuildFile; fileRef = A9C2F07F22E7833C001763CE /* propagator.cpp */; };
-		A9C2F32F22E7833D001763CE /* fix_storage_class.h in Headers */ = {isa = PBXBuildFile; fileRef = A9C2F08022E7833C001763CE /* fix_storage_class.h */; };
-		A9C2F33022E7833D001763CE /* fix_storage_class.h in Headers */ = {isa = PBXBuildFile; fileRef = A9C2F08022E7833C001763CE /* fix_storage_class.h */; };
-		A9C2F33122E7833D001763CE /* loop_dependence_helpers.cpp in Sources */ = {isa = PBXBuildFile; fileRef = A9C2F08122E7833C001763CE /* loop_dependence_helpers.cpp */; };
-		A9C2F33222E7833D001763CE /* loop_dependence_helpers.cpp in Sources */ = {isa = PBXBuildFile; fileRef = A9C2F08122E7833C001763CE /* loop_dependence_helpers.cpp */; };
-		A9C2F33322E7833D001763CE /* set_spec_constant_default_value_pass.cpp in Sources */ = {isa = PBXBuildFile; fileRef = A9C2F08222E7833C001763CE /* set_spec_constant_default_value_pass.cpp */; };
-		A9C2F33422E7833D001763CE /* set_spec_constant_default_value_pass.cpp in Sources */ = {isa = PBXBuildFile; fileRef = A9C2F08222E7833C001763CE /* set_spec_constant_default_value_pass.cpp */; };
-		A9C2F33522E7833D001763CE /* passes.h in Headers */ = {isa = PBXBuildFile; fileRef = A9C2F08322E7833C001763CE /* passes.h */; };
-		A9C2F33622E7833D001763CE /* passes.h in Headers */ = {isa = PBXBuildFile; fileRef = A9C2F08322E7833C001763CE /* passes.h */; };
-		A9C2F33722E7833D001763CE /* fold.cpp in Sources */ = {isa = PBXBuildFile; fileRef = A9C2F08422E7833C001763CE /* fold.cpp */; };
-		A9C2F33822E7833D001763CE /* fold.cpp in Sources */ = {isa = PBXBuildFile; fileRef = A9C2F08422E7833C001763CE /* fold.cpp */; };
-		A9C2F33922E7833D001763CE /* strip_reflect_info_pass.h in Headers */ = {isa = PBXBuildFile; fileRef = A9C2F08522E7833C001763CE /* strip_reflect_info_pass.h */; };
-		A9C2F33A22E7833D001763CE /* strip_reflect_info_pass.h in Headers */ = {isa = PBXBuildFile; fileRef = A9C2F08522E7833C001763CE /* strip_reflect_info_pass.h */; };
-		A9C2F33B22E7833D001763CE /* scalar_replacement_pass.cpp in Sources */ = {isa = PBXBuildFile; fileRef = A9C2F08622E7833C001763CE /* scalar_replacement_pass.cpp */; };
-		A9C2F33C22E7833D001763CE /* scalar_replacement_pass.cpp in Sources */ = {isa = PBXBuildFile; fileRef = A9C2F08622E7833C001763CE /* scalar_replacement_pass.cpp */; };
-		A9C2F33D22E7833D001763CE /* simplification_pass.h in Headers */ = {isa = PBXBuildFile; fileRef = A9C2F08722E7833C001763CE /* simplification_pass.h */; };
-		A9C2F33E22E7833D001763CE /* simplification_pass.h in Headers */ = {isa = PBXBuildFile; fileRef = A9C2F08722E7833C001763CE /* simplification_pass.h */; };
-		A9C2F33F22E7833D001763CE /* remove_duplicates_pass.h in Headers */ = {isa = PBXBuildFile; fileRef = A9C2F08822E7833C001763CE /* remove_duplicates_pass.h */; };
-		A9C2F34022E7833D001763CE /* remove_duplicates_pass.h in Headers */ = {isa = PBXBuildFile; fileRef = A9C2F08822E7833C001763CE /* remove_duplicates_pass.h */; };
-		A9C2F34122E7833D001763CE /* redundancy_elimination.cpp in Sources */ = {isa = PBXBuildFile; fileRef = A9C2F08922E7833C001763CE /* redundancy_elimination.cpp */; };
-		A9C2F34222E7833D001763CE /* redundancy_elimination.cpp in Sources */ = {isa = PBXBuildFile; fileRef = A9C2F08922E7833C001763CE /* redundancy_elimination.cpp */; };
-		A9C2F34322E7833D001763CE /* reflect.h in Headers */ = {isa = PBXBuildFile; fileRef = A9C2F08A22E7833C001763CE /* reflect.h */; };
-		A9C2F34422E7833D001763CE /* reflect.h in Headers */ = {isa = PBXBuildFile; fileRef = A9C2F08A22E7833C001763CE /* reflect.h */; };
-		A9C2F34522E7833D001763CE /* workaround1209.cpp in Sources */ = {isa = PBXBuildFile; fileRef = A9C2F08B22E7833C001763CE /* workaround1209.cpp */; };
-		A9C2F34622E7833D001763CE /* workaround1209.cpp in Sources */ = {isa = PBXBuildFile; fileRef = A9C2F08B22E7833C001763CE /* workaround1209.cpp */; };
-		A9C2F34722E7833D001763CE /* null_pass.h in Headers */ = {isa = PBXBuildFile; fileRef = A9C2F08C22E7833C001763CE /* null_pass.h */; };
-		A9C2F34822E7833D001763CE /* null_pass.h in Headers */ = {isa = PBXBuildFile; fileRef = A9C2F08C22E7833C001763CE /* null_pass.h */; };
-		A9C2F34922E7833D001763CE /* const_folding_rules.h in Headers */ = {isa = PBXBuildFile; fileRef = A9C2F08D22E7833C001763CE /* const_folding_rules.h */; };
-		A9C2F34A22E7833D001763CE /* const_folding_rules.h in Headers */ = {isa = PBXBuildFile; fileRef = A9C2F08D22E7833C001763CE /* const_folding_rules.h */; };
-		A9C2F34B22E7833D001763CE /* scalar_replacement_pass.h in Headers */ = {isa = PBXBuildFile; fileRef = A9C2F08E22E7833C001763CE /* scalar_replacement_pass.h */; };
-		A9C2F34C22E7833D001763CE /* scalar_replacement_pass.h in Headers */ = {isa = PBXBuildFile; fileRef = A9C2F08E22E7833C001763CE /* scalar_replacement_pass.h */; };
-		A9C2F34D22E7833D001763CE /* instruction.cpp in Sources */ = {isa = PBXBuildFile; fileRef = A9C2F08F22E7833C001763CE /* instruction.cpp */; };
-		A9C2F34E22E7833D001763CE /* instruction.cpp in Sources */ = {isa = PBXBuildFile; fileRef = A9C2F08F22E7833C001763CE /* instruction.cpp */; };
-		A9C2F34F22E7833D001763CE /* pch_source_opt.h in Headers */ = {isa = PBXBuildFile; fileRef = A9C2F09022E7833C001763CE /* pch_source_opt.h */; };
-		A9C2F35022E7833D001763CE /* pch_source_opt.h in Headers */ = {isa = PBXBuildFile; fileRef = A9C2F09022E7833C001763CE /* pch_source_opt.h */; };
-		A9C2F35122E7833D001763CE /* reduce_load_size.cpp in Sources */ = {isa = PBXBuildFile; fileRef = A9C2F09122E7833C001763CE /* reduce_load_size.cpp */; };
-		A9C2F35222E7833D001763CE /* reduce_load_size.cpp in Sources */ = {isa = PBXBuildFile; fileRef = A9C2F09122E7833C001763CE /* reduce_load_size.cpp */; };
-		A9C2F35322E7833D001763CE /* redundancy_elimination.h in Headers */ = {isa = PBXBuildFile; fileRef = A9C2F09222E7833C001763CE /* redundancy_elimination.h */; };
-		A9C2F35422E7833D001763CE /* redundancy_elimination.h in Headers */ = {isa = PBXBuildFile; fileRef = A9C2F09222E7833C001763CE /* redundancy_elimination.h */; };
-		A9C2F35522E7833D001763CE /* fix_storage_class.cpp in Sources */ = {isa = PBXBuildFile; fileRef = A9C2F09322E7833C001763CE /* fix_storage_class.cpp */; };
-		A9C2F35622E7833D001763CE /* fix_storage_class.cpp in Sources */ = {isa = PBXBuildFile; fileRef = A9C2F09322E7833C001763CE /* fix_storage_class.cpp */; };
-		A9C2F35722E7833D001763CE /* value_number_table.cpp in Sources */ = {isa = PBXBuildFile; fileRef = A9C2F09422E7833C001763CE /* value_number_table.cpp */; };
-		A9C2F35822E7833D001763CE /* value_number_table.cpp in Sources */ = {isa = PBXBuildFile; fileRef = A9C2F09422E7833C001763CE /* value_number_table.cpp */; };
-		A9C2F35922E7833D001763CE /* local_ssa_elim_pass.h in Headers */ = {isa = PBXBuildFile; fileRef = A9C2F09522E7833C001763CE /* local_ssa_elim_pass.h */; };
-		A9C2F35A22E7833D001763CE /* local_ssa_elim_pass.h in Headers */ = {isa = PBXBuildFile; fileRef = A9C2F09522E7833C001763CE /* local_ssa_elim_pass.h */; };
-		A9C2F35B22E7833D001763CE /* inline_opaque_pass.cpp in Sources */ = {isa = PBXBuildFile; fileRef = A9C2F09622E7833C001763CE /* inline_opaque_pass.cpp */; };
-		A9C2F35C22E7833D001763CE /* inline_opaque_pass.cpp in Sources */ = {isa = PBXBuildFile; fileRef = A9C2F09622E7833C001763CE /* inline_opaque_pass.cpp */; };
-		A9C2F35D22E7833D001763CE /* replace_invalid_opc.cpp in Sources */ = {isa = PBXBuildFile; fileRef = A9C2F09722E7833C001763CE /* replace_invalid_opc.cpp */; };
-		A9C2F35E22E7833D001763CE /* replace_invalid_opc.cpp in Sources */ = {isa = PBXBuildFile; fileRef = A9C2F09722E7833C001763CE /* replace_invalid_opc.cpp */; };
-		A9C2F35F22E7833D001763CE /* loop_utils.h in Headers */ = {isa = PBXBuildFile; fileRef = A9C2F09822E7833C001763CE /* loop_utils.h */; };
-		A9C2F36022E7833D001763CE /* loop_utils.h in Headers */ = {isa = PBXBuildFile; fileRef = A9C2F09822E7833C001763CE /* loop_utils.h */; };
-		A9C2F36122E7833D001763CE /* module.h in Headers */ = {isa = PBXBuildFile; fileRef = A9C2F09922E7833C001763CE /* module.h */; };
-		A9C2F36222E7833D001763CE /* module.h in Headers */ = {isa = PBXBuildFile; fileRef = A9C2F09922E7833C001763CE /* module.h */; };
-		A9C2F36322E7833D001763CE /* dominator_analysis.cpp in Sources */ = {isa = PBXBuildFile; fileRef = A9C2F09A22E7833C001763CE /* dominator_analysis.cpp */; };
-		A9C2F36422E7833D001763CE /* dominator_analysis.cpp in Sources */ = {isa = PBXBuildFile; fileRef = A9C2F09A22E7833C001763CE /* dominator_analysis.cpp */; };
-		A9C2F36522E7833D001763CE /* decompose_initialized_variables_pass.cpp in Sources */ = {isa = PBXBuildFile; fileRef = A9C2F09B22E7833C001763CE /* decompose_initialized_variables_pass.cpp */; };
-		A9C2F36622E7833D001763CE /* decompose_initialized_variables_pass.cpp in Sources */ = {isa = PBXBuildFile; fileRef = A9C2F09B22E7833C001763CE /* decompose_initialized_variables_pass.cpp */; };
-		A9C2F36722E7833D001763CE /* ir_builder.h in Headers */ = {isa = PBXBuildFile; fileRef = A9C2F09C22E7833C001763CE /* ir_builder.h */; };
-		A9C2F36822E7833D001763CE /* ir_builder.h in Headers */ = {isa = PBXBuildFile; fileRef = A9C2F09C22E7833C001763CE /* ir_builder.h */; };
-		A9C2F36922E7833D001763CE /* loop_unswitch_pass.h in Headers */ = {isa = PBXBuildFile; fileRef = A9C2F09D22E7833C001763CE /* loop_unswitch_pass.h */; };
-		A9C2F36A22E7833D001763CE /* loop_unswitch_pass.h in Headers */ = {isa = PBXBuildFile; fileRef = A9C2F09D22E7833C001763CE /* loop_unswitch_pass.h */; };
-		A9C2F36B22E7833D001763CE /* cfg.h in Headers */ = {isa = PBXBuildFile; fileRef = A9C2F09E22E7833C001763CE /* cfg.h */; };
-		A9C2F36C22E7833D001763CE /* cfg.h in Headers */ = {isa = PBXBuildFile; fileRef = A9C2F09E22E7833C001763CE /* cfg.h */; };
-		A9C2F36D22E7833D001763CE /* code_sink.h in Headers */ = {isa = PBXBuildFile; fileRef = A9C2F09F22E7833C001763CE /* code_sink.h */; };
-		A9C2F36E22E7833D001763CE /* code_sink.h in Headers */ = {isa = PBXBuildFile; fileRef = A9C2F09F22E7833C001763CE /* code_sink.h */; };
-		A9C2F36F22E7833D001763CE /* loop_descriptor.h in Headers */ = {isa = PBXBuildFile; fileRef = A9C2F0A022E7833C001763CE /* loop_descriptor.h */; };
-		A9C2F37022E7833D001763CE /* loop_descriptor.h in Headers */ = {isa = PBXBuildFile; fileRef = A9C2F0A022E7833C001763CE /* loop_descriptor.h */; };
-		A9C2F37122E7833D001763CE /* generate_webgpu_initializers_pass.h in Headers */ = {isa = PBXBuildFile; fileRef = A9C2F0A122E7833C001763CE /* generate_webgpu_initializers_pass.h */; };
-		A9C2F37222E7833D001763CE /* generate_webgpu_initializers_pass.h in Headers */ = {isa = PBXBuildFile; fileRef = A9C2F0A122E7833C001763CE /* generate_webgpu_initializers_pass.h */; };
-		A9C2F37322E7833D001763CE /* instruction.h in Headers */ = {isa = PBXBuildFile; fileRef = A9C2F0A222E7833C001763CE /* instruction.h */; };
-		A9C2F37422E7833D001763CE /* instruction.h in Headers */ = {isa = PBXBuildFile; fileRef = A9C2F0A222E7833C001763CE /* instruction.h */; };
-		A9C2F37522E7833D001763CE /* aggressive_dead_code_elim_pass.h in Headers */ = {isa = PBXBuildFile; fileRef = A9C2F0A322E7833C001763CE /* aggressive_dead_code_elim_pass.h */; };
-		A9C2F37622E7833D001763CE /* aggressive_dead_code_elim_pass.h in Headers */ = {isa = PBXBuildFile; fileRef = A9C2F0A322E7833C001763CE /* aggressive_dead_code_elim_pass.h */; };
-		A9C2F37722E7833D001763CE /* struct_cfg_analysis.cpp in Sources */ = {isa = PBXBuildFile; fileRef = A9C2F0A422E7833C001763CE /* struct_cfg_analysis.cpp */; };
-		A9C2F37822E7833D001763CE /* struct_cfg_analysis.cpp in Sources */ = {isa = PBXBuildFile; fileRef = A9C2F0A422E7833C001763CE /* struct_cfg_analysis.cpp */; };
-		A9C2F37922E7833D001763CE /* vector_dce.h in Headers */ = {isa = PBXBuildFile; fileRef = A9C2F0A522E7833C001763CE /* vector_dce.h */; };
-		A9C2F37A22E7833D001763CE /* vector_dce.h in Headers */ = {isa = PBXBuildFile; fileRef = A9C2F0A522E7833C001763CE /* vector_dce.h */; };
-		A9C2F37B22E7833D001763CE /* combine_access_chains.h in Headers */ = {isa = PBXBuildFile; fileRef = A9C2F0A622E7833C001763CE /* combine_access_chains.h */; };
-		A9C2F37C22E7833D001763CE /* combine_access_chains.h in Headers */ = {isa = PBXBuildFile; fileRef = A9C2F0A622E7833C001763CE /* combine_access_chains.h */; };
-		A9C2F37D22E7833D001763CE /* pass_manager.h in Headers */ = {isa = PBXBuildFile; fileRef = A9C2F0A722E7833C001763CE /* pass_manager.h */; };
-		A9C2F37E22E7833D001763CE /* pass_manager.h in Headers */ = {isa = PBXBuildFile; fileRef = A9C2F0A722E7833C001763CE /* pass_manager.h */; };
-		A9C2F37F22E7833D001763CE /* local_access_chain_convert_pass.cpp in Sources */ = {isa = PBXBuildFile; fileRef = A9C2F0A822E7833C001763CE /* local_access_chain_convert_pass.cpp */; };
-		A9C2F38022E7833D001763CE /* local_access_chain_convert_pass.cpp in Sources */ = {isa = PBXBuildFile; fileRef = A9C2F0A822E7833C001763CE /* local_access_chain_convert_pass.cpp */; };
-		A9C2F38122E7833D001763CE /* basic_block.cpp in Sources */ = {isa = PBXBuildFile; fileRef = A9C2F0A922E7833C001763CE /* basic_block.cpp */; };
-		A9C2F38222E7833D001763CE /* basic_block.cpp in Sources */ = {isa = PBXBuildFile; fileRef = A9C2F0A922E7833C001763CE /* basic_block.cpp */; };
-		A9C2F38322E7833D001763CE /* iterator.h in Headers */ = {isa = PBXBuildFile; fileRef = A9C2F0AA22E7833C001763CE /* iterator.h */; };
-		A9C2F38422E7833D001763CE /* iterator.h in Headers */ = {isa = PBXBuildFile; fileRef = A9C2F0AA22E7833C001763CE /* iterator.h */; };
-		A9C2F38522E7833D001763CE /* licm_pass.h in Headers */ = {isa = PBXBuildFile; fileRef = A9C2F0AB22E7833C001763CE /* licm_pass.h */; };
-		A9C2F38622E7833D001763CE /* licm_pass.h in Headers */ = {isa = PBXBuildFile; fileRef = A9C2F0AB22E7833C001763CE /* licm_pass.h */; };
-		A9C2F38722E7833D001763CE /* build_module.h in Headers */ = {isa = PBXBuildFile; fileRef = A9C2F0AC22E7833C001763CE /* build_module.h */; };
-		A9C2F38822E7833D001763CE /* build_module.h in Headers */ = {isa = PBXBuildFile; fileRef = A9C2F0AC22E7833C001763CE /* build_module.h */; };
-		A9C2F38922E7833D001763CE /* ccp_pass.h in Headers */ = {isa = PBXBuildFile; fileRef = A9C2F0AD22E7833C001763CE /* ccp_pass.h */; };
-		A9C2F38A22E7833D001763CE /* ccp_pass.h in Headers */ = {isa = PBXBuildFile; fileRef = A9C2F0AD22E7833C001763CE /* ccp_pass.h */; };
-		A9C2F38B22E7833D001763CE /* decompose_initialized_variables_pass.h in Headers */ = {isa = PBXBuildFile; fileRef = A9C2F0AE22E7833C001763CE /* decompose_initialized_variables_pass.h */; };
-		A9C2F38C22E7833D001763CE /* decompose_initialized_variables_pass.h in Headers */ = {isa = PBXBuildFile; fileRef = A9C2F0AE22E7833C001763CE /* decompose_initialized_variables_pass.h */; };
-		A9C2F38D22E7833D001763CE /* function.h in Headers */ = {isa = PBXBuildFile; fileRef = A9C2F0AF22E7833C001763CE /* function.h */; };
-		A9C2F38E22E7833D001763CE /* function.h in Headers */ = {isa = PBXBuildFile; fileRef = A9C2F0AF22E7833C001763CE /* function.h */; };
-		A9C2F38F22E7833D001763CE /* loop_fusion.cpp in Sources */ = {isa = PBXBuildFile; fileRef = A9C2F0B022E7833C001763CE /* loop_fusion.cpp */; };
-		A9C2F39022E7833D001763CE /* loop_fusion.cpp in Sources */ = {isa = PBXBuildFile; fileRef = A9C2F0B022E7833C001763CE /* loop_fusion.cpp */; };
-		A9C2F39122E7833D001763CE /* upgrade_memory_model.cpp in Sources */ = {isa = PBXBuildFile; fileRef = A9C2F0B122E7833C001763CE /* upgrade_memory_model.cpp */; };
-		A9C2F39222E7833D001763CE /* upgrade_memory_model.cpp in Sources */ = {isa = PBXBuildFile; fileRef = A9C2F0B122E7833C001763CE /* upgrade_memory_model.cpp */; };
-		A9C2F39322E7833D001763CE /* feature_manager.h in Headers */ = {isa = PBXBuildFile; fileRef = A9C2F0B222E7833C001763CE /* feature_manager.h */; };
-		A9C2F39422E7833D001763CE /* feature_manager.h in Headers */ = {isa = PBXBuildFile; fileRef = A9C2F0B222E7833C001763CE /* feature_manager.h */; };
-		A9C2F39522E7833D001763CE /* inst_bindless_check_pass.h in Headers */ = {isa = PBXBuildFile; fileRef = A9C2F0B322E7833C001763CE /* inst_bindless_check_pass.h */; };
-		A9C2F39622E7833D001763CE /* inst_bindless_check_pass.h in Headers */ = {isa = PBXBuildFile; fileRef = A9C2F0B322E7833C001763CE /* inst_bindless_check_pass.h */; };
-		A9C2F39722E7833D001763CE /* scalar_analysis_simplification.cpp in Sources */ = {isa = PBXBuildFile; fileRef = A9C2F0B422E7833C001763CE /* scalar_analysis_simplification.cpp */; };
-		A9C2F39822E7833D001763CE /* scalar_analysis_simplification.cpp in Sources */ = {isa = PBXBuildFile; fileRef = A9C2F0B422E7833C001763CE /* scalar_analysis_simplification.cpp */; };
-		A9C2F39922E7833D001763CE /* set_spec_constant_default_value_pass.h in Headers */ = {isa = PBXBuildFile; fileRef = A9C2F0B522E7833C001763CE /* set_spec_constant_default_value_pass.h */; };
-		A9C2F39A22E7833D001763CE /* set_spec_constant_default_value_pass.h in Headers */ = {isa = PBXBuildFile; fileRef = A9C2F0B522E7833C001763CE /* set_spec_constant_default_value_pass.h */; };
-		A9C2F39B22E7833D001763CE /* dominator_tree.h in Headers */ = {isa = PBXBuildFile; fileRef = A9C2F0B622E7833C001763CE /* dominator_tree.h */; };
-		A9C2F39C22E7833D001763CE /* dominator_tree.h in Headers */ = {isa = PBXBuildFile; fileRef = A9C2F0B622E7833C001763CE /* dominator_tree.h */; };
-		A9C2F39D22E7833D001763CE /* legalize_vector_shuffle_pass.cpp in Sources */ = {isa = PBXBuildFile; fileRef = A9C2F0B722E7833C001763CE /* legalize_vector_shuffle_pass.cpp */; };
-		A9C2F39E22E7833D001763CE /* legalize_vector_shuffle_pass.cpp in Sources */ = {isa = PBXBuildFile; fileRef = A9C2F0B722E7833C001763CE /* legalize_vector_shuffle_pass.cpp */; };
-		A9C2F39F22E7833D001763CE /* type_manager.h in Headers */ = {isa = PBXBuildFile; fileRef = A9C2F0B822E7833C001763CE /* type_manager.h */; };
-		A9C2F3A022E7833D001763CE /* type_manager.h in Headers */ = {isa = PBXBuildFile; fileRef = A9C2F0B822E7833C001763CE /* type_manager.h */; };
-		A9C2F3A122E7833D001763CE /* compact_ids_pass.cpp in Sources */ = {isa = PBXBuildFile; fileRef = A9C2F0B922E7833C001763CE /* compact_ids_pass.cpp */; };
-		A9C2F3A222E7833D001763CE /* compact_ids_pass.cpp in Sources */ = {isa = PBXBuildFile; fileRef = A9C2F0B922E7833C001763CE /* compact_ids_pass.cpp */; };
-		A9C2F3A322E7833D001763CE /* loop_peeling.cpp in Sources */ = {isa = PBXBuildFile; fileRef = A9C2F0BA22E7833C001763CE /* loop_peeling.cpp */; };
-		A9C2F3A422E7833D001763CE /* loop_peeling.cpp in Sources */ = {isa = PBXBuildFile; fileRef = A9C2F0BA22E7833C001763CE /* loop_peeling.cpp */; };
-		A9C2F3A522E7833D001763CE /* table.h in Headers */ = {isa = PBXBuildFile; fileRef = A9C2F0BB22E7833C001763CE /* table.h */; };
-		A9C2F3A622E7833D001763CE /* table.h in Headers */ = {isa = PBXBuildFile; fileRef = A9C2F0BB22E7833C001763CE /* table.h */; };
-		A9C2F41B22E7833D001763CE /* ext_inst.h in Headers */ = {isa = PBXBuildFile; fileRef = A9C2F0F922E7833D001763CE /* ext_inst.h */; };
-		A9C2F41C22E7833D001763CE /* ext_inst.h in Headers */ = {isa = PBXBuildFile; fileRef = A9C2F0F922E7833D001763CE /* ext_inst.h */; };
-		A9C2F41D22E7833D001763CE /* diagnostic.cpp in Sources */ = {isa = PBXBuildFile; fileRef = A9C2F0FA22E7833D001763CE /* diagnostic.cpp */; };
-		A9C2F41E22E7833D001763CE /* diagnostic.cpp in Sources */ = {isa = PBXBuildFile; fileRef = A9C2F0FA22E7833D001763CE /* diagnostic.cpp */; };
-		A9C2F41F22E7833D001763CE /* latest_version_spirv_header.h in Headers */ = {isa = PBXBuildFile; fileRef = A9C2F0FB22E7833D001763CE /* latest_version_spirv_header.h */; };
-		A9C2F42022E7833D001763CE /* latest_version_spirv_header.h in Headers */ = {isa = PBXBuildFile; fileRef = A9C2F0FB22E7833D001763CE /* latest_version_spirv_header.h */; };
-		A9C2F42122E7833D001763CE /* libspirv.cpp in Sources */ = {isa = PBXBuildFile; fileRef = A9C2F0FC22E7833D001763CE /* libspirv.cpp */; };
-		A9C2F42222E7833D001763CE /* libspirv.cpp in Sources */ = {isa = PBXBuildFile; fileRef = A9C2F0FC22E7833D001763CE /* libspirv.cpp */; };
-		A9C2F42322E7833D001763CE /* instruction.h in Headers */ = {isa = PBXBuildFile; fileRef = A9C2F0FD22E7833D001763CE /* instruction.h */; };
-		A9C2F42422E7833D001763CE /* instruction.h in Headers */ = {isa = PBXBuildFile; fileRef = A9C2F0FD22E7833D001763CE /* instruction.h */; };
-		A9C2F42522E7833D001763CE /* spirv_optimizer_options.h in Headers */ = {isa = PBXBuildFile; fileRef = A9C2F0FE22E7833D001763CE /* spirv_optimizer_options.h */; };
-		A9C2F42622E7833D001763CE /* spirv_optimizer_options.h in Headers */ = {isa = PBXBuildFile; fileRef = A9C2F0FE22E7833D001763CE /* spirv_optimizer_options.h */; };
-		A9C2F42722E7833D001763CE /* opcode.h in Headers */ = {isa = PBXBuildFile; fileRef = A9C2F0FF22E7833D001763CE /* opcode.h */; };
-		A9C2F42822E7833D001763CE /* opcode.h in Headers */ = {isa = PBXBuildFile; fileRef = A9C2F0FF22E7833D001763CE /* opcode.h */; };
-		A9C2F42922E7833D001763CE /* operand.cpp in Sources */ = {isa = PBXBuildFile; fileRef = A9C2F10022E7833D001763CE /* operand.cpp */; };
-		A9C2F42A22E7833D001763CE /* operand.cpp in Sources */ = {isa = PBXBuildFile; fileRef = A9C2F10022E7833D001763CE /* operand.cpp */; };
-		A9C2F42B22E7833D001763CE /* latest_version_glsl_std_450_header.h in Headers */ = {isa = PBXBuildFile; fileRef = A9C2F10122E7833D001763CE /* latest_version_glsl_std_450_header.h */; };
-		A9C2F42C22E7833D001763CE /* latest_version_glsl_std_450_header.h in Headers */ = {isa = PBXBuildFile; fileRef = A9C2F10122E7833D001763CE /* latest_version_glsl_std_450_header.h */; };
-		A9C2F42D22E7833D001763CE /* extensions.h in Headers */ = {isa = PBXBuildFile; fileRef = A9C2F10222E7833D001763CE /* extensions.h */; };
-		A9C2F42E22E7833D001763CE /* extensions.h in Headers */ = {isa = PBXBuildFile; fileRef = A9C2F10222E7833D001763CE /* extensions.h */; };
-		A9C2F42F22E7833D001763CE /* disassemble.cpp in Sources */ = {isa = PBXBuildFile; fileRef = A9C2F10322E7833D001763CE /* disassemble.cpp */; };
-		A9C2F43022E7833D001763CE /* disassemble.cpp in Sources */ = {isa = PBXBuildFile; fileRef = A9C2F10322E7833D001763CE /* disassemble.cpp */; };
-		A9C2F43122E7833D001763CE /* binary.h in Headers */ = {isa = PBXBuildFile; fileRef = A9C2F10422E7833D001763CE /* binary.h */; };
-		A9C2F43222E7833D001763CE /* binary.h in Headers */ = {isa = PBXBuildFile; fileRef = A9C2F10422E7833D001763CE /* binary.h */; };
-		A9C2F43322E7833D001763CE /* text_handler.cpp in Sources */ = {isa = PBXBuildFile; fileRef = A9C2F10522E7833D001763CE /* text_handler.cpp */; };
-		A9C2F43422E7833D001763CE /* text_handler.cpp in Sources */ = {isa = PBXBuildFile; fileRef = A9C2F10522E7833D001763CE /* text_handler.cpp */; };
-		A9C2F43522E7833D001763CE /* validate_annotation.cpp in Sources */ = {isa = PBXBuildFile; fileRef = A9C2F10722E7833D001763CE /* validate_annotation.cpp */; };
-		A9C2F43622E7833D001763CE /* validate_annotation.cpp in Sources */ = {isa = PBXBuildFile; fileRef = A9C2F10722E7833D001763CE /* validate_annotation.cpp */; };
-		A9C2F43722E7833D001763CE /* validate_misc.cpp in Sources */ = {isa = PBXBuildFile; fileRef = A9C2F10822E7833D001763CE /* validate_misc.cpp */; };
-		A9C2F43822E7833D001763CE /* validate_misc.cpp in Sources */ = {isa = PBXBuildFile; fileRef = A9C2F10822E7833D001763CE /* validate_misc.cpp */; };
-		A9C2F43922E7833D001763CE /* validate_cfg.cpp in Sources */ = {isa = PBXBuildFile; fileRef = A9C2F10922E7833D001763CE /* validate_cfg.cpp */; };
-		A9C2F43A22E7833D001763CE /* validate_cfg.cpp in Sources */ = {isa = PBXBuildFile; fileRef = A9C2F10922E7833D001763CE /* validate_cfg.cpp */; };
-		A9C2F43B22E7833D001763CE /* validate_capability.cpp in Sources */ = {isa = PBXBuildFile; fileRef = A9C2F10A22E7833D001763CE /* validate_capability.cpp */; };
-		A9C2F43C22E7833D001763CE /* validate_capability.cpp in Sources */ = {isa = PBXBuildFile; fileRef = A9C2F10A22E7833D001763CE /* validate_capability.cpp */; };
-		A9C2F43D22E7833D001763CE /* construct.h in Headers */ = {isa = PBXBuildFile; fileRef = A9C2F10B22E7833D001763CE /* construct.h */; };
-		A9C2F43E22E7833D001763CE /* construct.h in Headers */ = {isa = PBXBuildFile; fileRef = A9C2F10B22E7833D001763CE /* construct.h */; };
-		A9C2F43F22E7833D001763CE /* validate_barriers.cpp in Sources */ = {isa = PBXBuildFile; fileRef = A9C2F10C22E7833D001763CE /* validate_barriers.cpp */; };
-		A9C2F44022E7833D001763CE /* validate_barriers.cpp in Sources */ = {isa = PBXBuildFile; fileRef = A9C2F10C22E7833D001763CE /* validate_barriers.cpp */; };
-		A9C2F44122E7833D001763CE /* validate_non_uniform.cpp in Sources */ = {isa = PBXBuildFile; fileRef = A9C2F10D22E7833D001763CE /* validate_non_uniform.cpp */; };
-		A9C2F44222E7833D001763CE /* validate_non_uniform.cpp in Sources */ = {isa = PBXBuildFile; fileRef = A9C2F10D22E7833D001763CE /* validate_non_uniform.cpp */; };
-		A9C2F44322E7833D001763CE /* validate_scopes.cpp in Sources */ = {isa = PBXBuildFile; fileRef = A9C2F10E22E7833D001763CE /* validate_scopes.cpp */; };
-		A9C2F44422E7833D001763CE /* validate_scopes.cpp in Sources */ = {isa = PBXBuildFile; fileRef = A9C2F10E22E7833D001763CE /* validate_scopes.cpp */; };
-		A9C2F44522E7833D001763CE /* validate_atomics.cpp in Sources */ = {isa = PBXBuildFile; fileRef = A9C2F10F22E7833D001763CE /* validate_atomics.cpp */; };
-		A9C2F44622E7833D001763CE /* validate_atomics.cpp in Sources */ = {isa = PBXBuildFile; fileRef = A9C2F10F22E7833D001763CE /* validate_atomics.cpp */; };
-		A9C2F44722E7833D001763CE /* basic_block.h in Headers */ = {isa = PBXBuildFile; fileRef = A9C2F11022E7833D001763CE /* basic_block.h */; };
-		A9C2F44822E7833D001763CE /* basic_block.h in Headers */ = {isa = PBXBuildFile; fileRef = A9C2F11022E7833D001763CE /* basic_block.h */; };
-		A9C2F44922E7833D001763CE /* validate_instruction.cpp in Sources */ = {isa = PBXBuildFile; fileRef = A9C2F11122E7833D001763CE /* validate_instruction.cpp */; };
-		A9C2F44A22E7833D001763CE /* validate_instruction.cpp in Sources */ = {isa = PBXBuildFile; fileRef = A9C2F11122E7833D001763CE /* validate_instruction.cpp */; };
-		A9C2F44B22E7833D001763CE /* validate_decorations.cpp in Sources */ = {isa = PBXBuildFile; fileRef = A9C2F11222E7833D001763CE /* validate_decorations.cpp */; };
-		A9C2F44C22E7833D001763CE /* validate_decorations.cpp in Sources */ = {isa = PBXBuildFile; fileRef = A9C2F11222E7833D001763CE /* validate_decorations.cpp */; };
-		A9C2F44D22E7833D001763CE /* validate_debug.cpp in Sources */ = {isa = PBXBuildFile; fileRef = A9C2F11322E7833D001763CE /* validate_debug.cpp */; };
-		A9C2F44E22E7833D001763CE /* validate_debug.cpp in Sources */ = {isa = PBXBuildFile; fileRef = A9C2F11322E7833D001763CE /* validate_debug.cpp */; };
-		A9C2F44F22E7833D001763CE /* validate_builtins.cpp in Sources */ = {isa = PBXBuildFile; fileRef = A9C2F11422E7833D001763CE /* validate_builtins.cpp */; };
-		A9C2F45022E7833D001763CE /* validate_builtins.cpp in Sources */ = {isa = PBXBuildFile; fileRef = A9C2F11422E7833D001763CE /* validate_builtins.cpp */; };
-		A9C2F45122E7833D001763CE /* validate_interfaces.cpp in Sources */ = {isa = PBXBuildFile; fileRef = A9C2F11522E7833D001763CE /* validate_interfaces.cpp */; };
-		A9C2F45222E7833D001763CE /* validate_interfaces.cpp in Sources */ = {isa = PBXBuildFile; fileRef = A9C2F11522E7833D001763CE /* validate_interfaces.cpp */; };
-		A9C2F45322E7833D001763CE /* validate.cpp in Sources */ = {isa = PBXBuildFile; fileRef = A9C2F11622E7833D001763CE /* validate.cpp */; };
-		A9C2F45422E7833D001763CE /* validate.cpp in Sources */ = {isa = PBXBuildFile; fileRef = A9C2F11622E7833D001763CE /* validate.cpp */; };
-		A9C2F45522E7833D001763CE /* validation_state.h in Headers */ = {isa = PBXBuildFile; fileRef = A9C2F11722E7833D001763CE /* validation_state.h */; };
-		A9C2F45622E7833D001763CE /* validation_state.h in Headers */ = {isa = PBXBuildFile; fileRef = A9C2F11722E7833D001763CE /* validation_state.h */; };
-		A9C2F45722E7833D001763CE /* validate_constants.cpp in Sources */ = {isa = PBXBuildFile; fileRef = A9C2F11822E7833D001763CE /* validate_constants.cpp */; };
-		A9C2F45822E7833D001763CE /* validate_constants.cpp in Sources */ = {isa = PBXBuildFile; fileRef = A9C2F11822E7833D001763CE /* validate_constants.cpp */; };
-		A9C2F45922E7833D001763CE /* validate_bitwise.cpp in Sources */ = {isa = PBXBuildFile; fileRef = A9C2F11922E7833D001763CE /* validate_bitwise.cpp */; };
-		A9C2F45A22E7833D001763CE /* validate_bitwise.cpp in Sources */ = {isa = PBXBuildFile; fileRef = A9C2F11922E7833D001763CE /* validate_bitwise.cpp */; };
-		A9C2F45B22E7833D001763CE /* validate_extensions.cpp in Sources */ = {isa = PBXBuildFile; fileRef = A9C2F11A22E7833D001763CE /* validate_extensions.cpp */; };
-		A9C2F45C22E7833D001763CE /* validate_extensions.cpp in Sources */ = {isa = PBXBuildFile; fileRef = A9C2F11A22E7833D001763CE /* validate_extensions.cpp */; };
-		A9C2F45D22E7833D001763CE /* construct.cpp in Sources */ = {isa = PBXBuildFile; fileRef = A9C2F11B22E7833D001763CE /* construct.cpp */; };
-		A9C2F45E22E7833D001763CE /* construct.cpp in Sources */ = {isa = PBXBuildFile; fileRef = A9C2F11B22E7833D001763CE /* construct.cpp */; };
-		A9C2F45F22E7833D001763CE /* function.cpp in Sources */ = {isa = PBXBuildFile; fileRef = A9C2F11C22E7833D001763CE /* function.cpp */; };
-		A9C2F46022E7833D001763CE /* function.cpp in Sources */ = {isa = PBXBuildFile; fileRef = A9C2F11C22E7833D001763CE /* function.cpp */; };
-		A9C2F46122E7833D001763CE /* validate.h in Headers */ = {isa = PBXBuildFile; fileRef = A9C2F11D22E7833D001763CE /* validate.h */; };
-		A9C2F46222E7833D001763CE /* validate.h in Headers */ = {isa = PBXBuildFile; fileRef = A9C2F11D22E7833D001763CE /* validate.h */; };
-		A9C2F46322E7833D001763CE /* validate_adjacency.cpp in Sources */ = {isa = PBXBuildFile; fileRef = A9C2F11E22E7833D001763CE /* validate_adjacency.cpp */; };
-		A9C2F46422E7833D001763CE /* validate_adjacency.cpp in Sources */ = {isa = PBXBuildFile; fileRef = A9C2F11E22E7833D001763CE /* validate_adjacency.cpp */; };
-		A9C2F46522E7833D001763CE /* validate_conversion.cpp in Sources */ = {isa = PBXBuildFile; fileRef = A9C2F11F22E7833D001763CE /* validate_conversion.cpp */; };
-		A9C2F46622E7833D001763CE /* validate_conversion.cpp in Sources */ = {isa = PBXBuildFile; fileRef = A9C2F11F22E7833D001763CE /* validate_conversion.cpp */; };
-		A9C2F46722E7833D001763CE /* validate_small_type_uses.cpp in Sources */ = {isa = PBXBuildFile; fileRef = A9C2F12022E7833D001763CE /* validate_small_type_uses.cpp */; };
-		A9C2F46822E7833D001763CE /* validate_small_type_uses.cpp in Sources */ = {isa = PBXBuildFile; fileRef = A9C2F12022E7833D001763CE /* validate_small_type_uses.cpp */; };
-		A9C2F46922E7833D001763CE /* validate_datarules.cpp in Sources */ = {isa = PBXBuildFile; fileRef = A9C2F12122E7833D001763CE /* validate_datarules.cpp */; };
-		A9C2F46A22E7833D001763CE /* validate_datarules.cpp in Sources */ = {isa = PBXBuildFile; fileRef = A9C2F12122E7833D001763CE /* validate_datarules.cpp */; };
-		A9C2F46B22E7833D001763CE /* validate_scopes.h in Headers */ = {isa = PBXBuildFile; fileRef = A9C2F12222E7833D001763CE /* validate_scopes.h */; };
-		A9C2F46C22E7833D001763CE /* validate_scopes.h in Headers */ = {isa = PBXBuildFile; fileRef = A9C2F12222E7833D001763CE /* validate_scopes.h */; };
-		A9C2F46D22E7833D001763CE /* validate_id.cpp in Sources */ = {isa = PBXBuildFile; fileRef = A9C2F12322E7833D001763CE /* validate_id.cpp */; };
-		A9C2F46E22E7833D001763CE /* validate_id.cpp in Sources */ = {isa = PBXBuildFile; fileRef = A9C2F12322E7833D001763CE /* validate_id.cpp */; };
-		A9C2F46F22E7833D001763CE /* validate_memory_semantics.h in Headers */ = {isa = PBXBuildFile; fileRef = A9C2F12422E7833D001763CE /* validate_memory_semantics.h */; };
-		A9C2F47022E7833D001763CE /* validate_memory_semantics.h in Headers */ = {isa = PBXBuildFile; fileRef = A9C2F12422E7833D001763CE /* validate_memory_semantics.h */; };
-		A9C2F47122E7833D001763CE /* validate_arithmetics.cpp in Sources */ = {isa = PBXBuildFile; fileRef = A9C2F12522E7833D001763CE /* validate_arithmetics.cpp */; };
-		A9C2F47222E7833D001763CE /* validate_arithmetics.cpp in Sources */ = {isa = PBXBuildFile; fileRef = A9C2F12522E7833D001763CE /* validate_arithmetics.cpp */; };
-		A9C2F47322E7833D001763CE /* validate_mode_setting.cpp in Sources */ = {isa = PBXBuildFile; fileRef = A9C2F12622E7833D001763CE /* validate_mode_setting.cpp */; };
-		A9C2F47422E7833D001763CE /* validate_mode_setting.cpp in Sources */ = {isa = PBXBuildFile; fileRef = A9C2F12622E7833D001763CE /* validate_mode_setting.cpp */; };
-		A9C2F47522E7833D001763CE /* validate_memory_semantics.cpp in Sources */ = {isa = PBXBuildFile; fileRef = A9C2F12722E7833D001763CE /* validate_memory_semantics.cpp */; };
-		A9C2F47622E7833D001763CE /* validate_memory_semantics.cpp in Sources */ = {isa = PBXBuildFile; fileRef = A9C2F12722E7833D001763CE /* validate_memory_semantics.cpp */; };
-		A9C2F47722E7833D001763CE /* validate_logicals.cpp in Sources */ = {isa = PBXBuildFile; fileRef = A9C2F12822E7833D001763CE /* validate_logicals.cpp */; };
-		A9C2F47822E7833D001763CE /* validate_logicals.cpp in Sources */ = {isa = PBXBuildFile; fileRef = A9C2F12822E7833D001763CE /* validate_logicals.cpp */; };
-		A9C2F47922E7833D001763CE /* validate_derivatives.cpp in Sources */ = {isa = PBXBuildFile; fileRef = A9C2F12922E7833D001763CE /* validate_derivatives.cpp */; };
-		A9C2F47A22E7833D001763CE /* validate_derivatives.cpp in Sources */ = {isa = PBXBuildFile; fileRef = A9C2F12922E7833D001763CE /* validate_derivatives.cpp */; };
-		A9C2F47B22E7833D001763CE /* validate_memory.cpp in Sources */ = {isa = PBXBuildFile; fileRef = A9C2F12A22E7833D001763CE /* validate_memory.cpp */; };
-		A9C2F47C22E7833D001763CE /* validate_memory.cpp in Sources */ = {isa = PBXBuildFile; fileRef = A9C2F12A22E7833D001763CE /* validate_memory.cpp */; };
-		A9C2F47D22E7833D001763CE /* validate_image.cpp in Sources */ = {isa = PBXBuildFile; fileRef = A9C2F12B22E7833D001763CE /* validate_image.cpp */; };
-		A9C2F47E22E7833D001763CE /* validate_image.cpp in Sources */ = {isa = PBXBuildFile; fileRef = A9C2F12B22E7833D001763CE /* validate_image.cpp */; };
-		A9C2F47F22E7833D001763CE /* validate_literals.cpp in Sources */ = {isa = PBXBuildFile; fileRef = A9C2F12C22E7833D001763CE /* validate_literals.cpp */; };
-		A9C2F48022E7833D001763CE /* validate_literals.cpp in Sources */ = {isa = PBXBuildFile; fileRef = A9C2F12C22E7833D001763CE /* validate_literals.cpp */; };
-		A9C2F48122E7833D001763CE /* instruction.cpp in Sources */ = {isa = PBXBuildFile; fileRef = A9C2F12D22E7833D001763CE /* instruction.cpp */; };
-		A9C2F48222E7833D001763CE /* instruction.cpp in Sources */ = {isa = PBXBuildFile; fileRef = A9C2F12D22E7833D001763CE /* instruction.cpp */; };
-		A9C2F48322E7833D001763CE /* validate_type.cpp in Sources */ = {isa = PBXBuildFile; fileRef = A9C2F12E22E7833D001763CE /* validate_type.cpp */; };
-		A9C2F48422E7833D001763CE /* validate_type.cpp in Sources */ = {isa = PBXBuildFile; fileRef = A9C2F12E22E7833D001763CE /* validate_type.cpp */; };
-		A9C2F48522E7833D001763CE /* instruction.h in Headers */ = {isa = PBXBuildFile; fileRef = A9C2F12F22E7833D001763CE /* instruction.h */; };
-		A9C2F48622E7833D001763CE /* instruction.h in Headers */ = {isa = PBXBuildFile; fileRef = A9C2F12F22E7833D001763CE /* instruction.h */; };
-		A9C2F48722E7833D001763CE /* validate_execution_limitations.cpp in Sources */ = {isa = PBXBuildFile; fileRef = A9C2F13022E7833D001763CE /* validate_execution_limitations.cpp */; };
-		A9C2F48822E7833D001763CE /* validate_execution_limitations.cpp in Sources */ = {isa = PBXBuildFile; fileRef = A9C2F13022E7833D001763CE /* validate_execution_limitations.cpp */; };
-		A9C2F48922E7833D001763CE /* validate_layout.cpp in Sources */ = {isa = PBXBuildFile; fileRef = A9C2F13122E7833D001763CE /* validate_layout.cpp */; };
-		A9C2F48A22E7833D001763CE /* validate_layout.cpp in Sources */ = {isa = PBXBuildFile; fileRef = A9C2F13122E7833D001763CE /* validate_layout.cpp */; };
-		A9C2F48B22E7833D001763CE /* basic_block.cpp in Sources */ = {isa = PBXBuildFile; fileRef = A9C2F13222E7833D001763CE /* basic_block.cpp */; };
-		A9C2F48C22E7833D001763CE /* basic_block.cpp in Sources */ = {isa = PBXBuildFile; fileRef = A9C2F13222E7833D001763CE /* basic_block.cpp */; };
-		A9C2F48D22E7833D001763CE /* validate_function.cpp in Sources */ = {isa = PBXBuildFile; fileRef = A9C2F13322E7833D001763CE /* validate_function.cpp */; };
-		A9C2F48E22E7833D001763CE /* validate_function.cpp in Sources */ = {isa = PBXBuildFile; fileRef = A9C2F13322E7833D001763CE /* validate_function.cpp */; };
-		A9C2F48F22E7833D001763CE /* function.h in Headers */ = {isa = PBXBuildFile; fileRef = A9C2F13422E7833D001763CE /* function.h */; };
-		A9C2F49022E7833D001763CE /* function.h in Headers */ = {isa = PBXBuildFile; fileRef = A9C2F13422E7833D001763CE /* function.h */; };
-		A9C2F49122E7833D001763CE /* validate_composites.cpp in Sources */ = {isa = PBXBuildFile; fileRef = A9C2F13522E7833D001763CE /* validate_composites.cpp */; };
-		A9C2F49222E7833D001763CE /* validate_composites.cpp in Sources */ = {isa = PBXBuildFile; fileRef = A9C2F13522E7833D001763CE /* validate_composites.cpp */; };
-		A9C2F49322E7833D001763CE /* validation_state.cpp in Sources */ = {isa = PBXBuildFile; fileRef = A9C2F13622E7833D001763CE /* validation_state.cpp */; };
-		A9C2F49422E7833D001763CE /* validation_state.cpp in Sources */ = {isa = PBXBuildFile; fileRef = A9C2F13622E7833D001763CE /* validation_state.cpp */; };
-		A9C2F49522E7833D001763CE /* validate_primitives.cpp in Sources */ = {isa = PBXBuildFile; fileRef = A9C2F13722E7833D001763CE /* validate_primitives.cpp */; };
-		A9C2F49622E7833D001763CE /* validate_primitives.cpp in Sources */ = {isa = PBXBuildFile; fileRef = A9C2F13722E7833D001763CE /* validate_primitives.cpp */; };
-		A9C2F49722E7833D001763CE /* decoration.h in Headers */ = {isa = PBXBuildFile; fileRef = A9C2F13822E7833D001763CE /* decoration.h */; };
-		A9C2F49822E7833D001763CE /* decoration.h in Headers */ = {isa = PBXBuildFile; fileRef = A9C2F13822E7833D001763CE /* decoration.h */; };
+		A979631F2328063700299006 /* spirv_target_env.cpp in Sources */ = {isa = PBXBuildFile; fileRef = A97961462328063600299006 /* spirv_target_env.cpp */; };
+		A97963202328063700299006 /* spirv_target_env.cpp in Sources */ = {isa = PBXBuildFile; fileRef = A97961462328063600299006 /* spirv_target_env.cpp */; };
+		A97963212328063700299006 /* spirv_fuzzer_options.h in Headers */ = {isa = PBXBuildFile; fileRef = A97961482328063600299006 /* spirv_fuzzer_options.h */; };
+		A97963222328063700299006 /* spirv_fuzzer_options.h in Headers */ = {isa = PBXBuildFile; fileRef = A97961482328063600299006 /* spirv_fuzzer_options.h */; };
+		A97963232328063700299006 /* assembly_grammar.h in Headers */ = {isa = PBXBuildFile; fileRef = A97961492328063600299006 /* assembly_grammar.h */; };
+		A97963242328063700299006 /* assembly_grammar.h in Headers */ = {isa = PBXBuildFile; fileRef = A97961492328063600299006 /* assembly_grammar.h */; };
+		A97963252328063700299006 /* enum_set.h in Headers */ = {isa = PBXBuildFile; fileRef = A979614A2328063600299006 /* enum_set.h */; };
+		A97963262328063700299006 /* enum_set.h in Headers */ = {isa = PBXBuildFile; fileRef = A979614A2328063600299006 /* enum_set.h */; };
+		A97963272328063700299006 /* text.cpp in Sources */ = {isa = PBXBuildFile; fileRef = A979614D2328063600299006 /* text.cpp */; };
+		A97963282328063700299006 /* text.cpp in Sources */ = {isa = PBXBuildFile; fileRef = A979614D2328063600299006 /* text.cpp */; };
+		A97963292328063700299006 /* assembly_grammar.cpp in Sources */ = {isa = PBXBuildFile; fileRef = A979614E2328063600299006 /* assembly_grammar.cpp */; };
+		A979632A2328063700299006 /* assembly_grammar.cpp in Sources */ = {isa = PBXBuildFile; fileRef = A979614E2328063600299006 /* assembly_grammar.cpp */; };
+		A979632B2328063700299006 /* text.h in Headers */ = {isa = PBXBuildFile; fileRef = A979614F2328063600299006 /* text.h */; };
+		A979632C2328063700299006 /* text.h in Headers */ = {isa = PBXBuildFile; fileRef = A979614F2328063600299006 /* text.h */; };
+		A979632D2328063700299006 /* extensions.cpp in Sources */ = {isa = PBXBuildFile; fileRef = A97961502328063600299006 /* extensions.cpp */; };
+		A979632E2328063700299006 /* extensions.cpp in Sources */ = {isa = PBXBuildFile; fileRef = A97961502328063600299006 /* extensions.cpp */; };
+		A979632F2328063700299006 /* pch_source.cpp in Sources */ = {isa = PBXBuildFile; fileRef = A97961512328063600299006 /* pch_source.cpp */; };
+		A97963302328063700299006 /* pch_source.cpp in Sources */ = {isa = PBXBuildFile; fileRef = A97961512328063600299006 /* pch_source.cpp */; };
+		A97963312328063700299006 /* parse_number.h in Headers */ = {isa = PBXBuildFile; fileRef = A97961532328063600299006 /* parse_number.h */; };
+		A97963322328063700299006 /* parse_number.h in Headers */ = {isa = PBXBuildFile; fileRef = A97961532328063600299006 /* parse_number.h */; };
+		A97963332328063700299006 /* ilist_node.h in Headers */ = {isa = PBXBuildFile; fileRef = A97961542328063600299006 /* ilist_node.h */; };
+		A97963342328063700299006 /* ilist_node.h in Headers */ = {isa = PBXBuildFile; fileRef = A97961542328063600299006 /* ilist_node.h */; };
+		A97963352328063700299006 /* make_unique.h in Headers */ = {isa = PBXBuildFile; fileRef = A97961552328063600299006 /* make_unique.h */; };
+		A97963362328063700299006 /* make_unique.h in Headers */ = {isa = PBXBuildFile; fileRef = A97961552328063600299006 /* make_unique.h */; };
+		A97963372328063700299006 /* string_utils.h in Headers */ = {isa = PBXBuildFile; fileRef = A97961562328063600299006 /* string_utils.h */; };
+		A97963382328063700299006 /* string_utils.h in Headers */ = {isa = PBXBuildFile; fileRef = A97961562328063600299006 /* string_utils.h */; };
+		A97963392328063700299006 /* small_vector.h in Headers */ = {isa = PBXBuildFile; fileRef = A97961572328063600299006 /* small_vector.h */; };
+		A979633A2328063700299006 /* small_vector.h in Headers */ = {isa = PBXBuildFile; fileRef = A97961572328063600299006 /* small_vector.h */; };
+		A979633B2328063700299006 /* timer.cpp in Sources */ = {isa = PBXBuildFile; fileRef = A97961582328063600299006 /* timer.cpp */; };
+		A979633C2328063700299006 /* timer.cpp in Sources */ = {isa = PBXBuildFile; fileRef = A97961582328063600299006 /* timer.cpp */; };
+		A979633D2328063700299006 /* timer.h in Headers */ = {isa = PBXBuildFile; fileRef = A97961592328063600299006 /* timer.h */; };
+		A979633E2328063700299006 /* timer.h in Headers */ = {isa = PBXBuildFile; fileRef = A97961592328063600299006 /* timer.h */; };
+		A979633F2328063700299006 /* string_utils.cpp in Sources */ = {isa = PBXBuildFile; fileRef = A979615A2328063600299006 /* string_utils.cpp */; };
+		A97963402328063700299006 /* string_utils.cpp in Sources */ = {isa = PBXBuildFile; fileRef = A979615A2328063600299006 /* string_utils.cpp */; };
+		A97963412328063700299006 /* bit_vector.h in Headers */ = {isa = PBXBuildFile; fileRef = A979615B2328063600299006 /* bit_vector.h */; };
+		A97963422328063700299006 /* bit_vector.h in Headers */ = {isa = PBXBuildFile; fileRef = A979615B2328063600299006 /* bit_vector.h */; };
+		A97963432328063700299006 /* bitutils.h in Headers */ = {isa = PBXBuildFile; fileRef = A979615C2328063600299006 /* bitutils.h */; };
+		A97963442328063700299006 /* bitutils.h in Headers */ = {isa = PBXBuildFile; fileRef = A979615C2328063600299006 /* bitutils.h */; };
+		A97963452328063700299006 /* hex_float.h in Headers */ = {isa = PBXBuildFile; fileRef = A979615D2328063600299006 /* hex_float.h */; };
+		A97963462328063700299006 /* hex_float.h in Headers */ = {isa = PBXBuildFile; fileRef = A979615D2328063600299006 /* hex_float.h */; };
+		A97963472328063700299006 /* parse_number.cpp in Sources */ = {isa = PBXBuildFile; fileRef = A979615E2328063600299006 /* parse_number.cpp */; };
+		A97963482328063700299006 /* parse_number.cpp in Sources */ = {isa = PBXBuildFile; fileRef = A979615E2328063600299006 /* parse_number.cpp */; };
+		A97963492328063700299006 /* bit_vector.cpp in Sources */ = {isa = PBXBuildFile; fileRef = A979615F2328063600299006 /* bit_vector.cpp */; };
+		A979634A2328063700299006 /* bit_vector.cpp in Sources */ = {isa = PBXBuildFile; fileRef = A979615F2328063600299006 /* bit_vector.cpp */; };
+		A979634B2328063700299006 /* ilist.h in Headers */ = {isa = PBXBuildFile; fileRef = A97961602328063600299006 /* ilist.h */; };
+		A979634C2328063700299006 /* ilist.h in Headers */ = {isa = PBXBuildFile; fileRef = A97961602328063600299006 /* ilist.h */; };
+		A979634D2328063700299006 /* spirv_target_env.h in Headers */ = {isa = PBXBuildFile; fileRef = A97961612328063600299006 /* spirv_target_env.h */; };
+		A979634E2328063700299006 /* spirv_target_env.h in Headers */ = {isa = PBXBuildFile; fileRef = A97961612328063600299006 /* spirv_target_env.h */; };
+		A979634F2328063700299006 /* table.cpp in Sources */ = {isa = PBXBuildFile; fileRef = A97961622328063600299006 /* table.cpp */; };
+		A97963502328063700299006 /* table.cpp in Sources */ = {isa = PBXBuildFile; fileRef = A97961622328063600299006 /* table.cpp */; };
+		A97963512328063700299006 /* operand_to_undef_reduction_opportunity_finder.h in Headers */ = {isa = PBXBuildFile; fileRef = A97961642328063600299006 /* operand_to_undef_reduction_opportunity_finder.h */; };
+		A97963522328063700299006 /* operand_to_undef_reduction_opportunity_finder.h in Headers */ = {isa = PBXBuildFile; fileRef = A97961642328063600299006 /* operand_to_undef_reduction_opportunity_finder.h */; };
+		A97963532328063700299006 /* remove_selection_reduction_opportunity.cpp in Sources */ = {isa = PBXBuildFile; fileRef = A97961652328063600299006 /* remove_selection_reduction_opportunity.cpp */; };
+		A97963542328063700299006 /* remove_selection_reduction_opportunity.cpp in Sources */ = {isa = PBXBuildFile; fileRef = A97961652328063600299006 /* remove_selection_reduction_opportunity.cpp */; };
+		A97963552328063700299006 /* remove_block_reduction_opportunity.h in Headers */ = {isa = PBXBuildFile; fileRef = A97961662328063600299006 /* remove_block_reduction_opportunity.h */; };
+		A97963562328063700299006 /* remove_block_reduction_opportunity.h in Headers */ = {isa = PBXBuildFile; fileRef = A97961662328063600299006 /* remove_block_reduction_opportunity.h */; };
+		A97963572328063700299006 /* operand_to_dominating_id_reduction_opportunity_finder.h in Headers */ = {isa = PBXBuildFile; fileRef = A97961672328063600299006 /* operand_to_dominating_id_reduction_opportunity_finder.h */; };
+		A97963582328063700299006 /* operand_to_dominating_id_reduction_opportunity_finder.h in Headers */ = {isa = PBXBuildFile; fileRef = A97961672328063600299006 /* operand_to_dominating_id_reduction_opportunity_finder.h */; };
+		A97963592328063700299006 /* reduction_pass.cpp in Sources */ = {isa = PBXBuildFile; fileRef = A97961682328063600299006 /* reduction_pass.cpp */; };
+		A979635A2328063700299006 /* reduction_pass.cpp in Sources */ = {isa = PBXBuildFile; fileRef = A97961682328063600299006 /* reduction_pass.cpp */; };
+		A979635B2328063700299006 /* operand_to_const_reduction_opportunity_finder.cpp in Sources */ = {isa = PBXBuildFile; fileRef = A97961692328063600299006 /* operand_to_const_reduction_opportunity_finder.cpp */; };
+		A979635C2328063700299006 /* operand_to_const_reduction_opportunity_finder.cpp in Sources */ = {isa = PBXBuildFile; fileRef = A97961692328063600299006 /* operand_to_const_reduction_opportunity_finder.cpp */; };
+		A979635D2328063700299006 /* operand_to_const_reduction_opportunity_finder.h in Headers */ = {isa = PBXBuildFile; fileRef = A979616A2328063600299006 /* operand_to_const_reduction_opportunity_finder.h */; };
+		A979635E2328063700299006 /* operand_to_const_reduction_opportunity_finder.h in Headers */ = {isa = PBXBuildFile; fileRef = A979616A2328063600299006 /* operand_to_const_reduction_opportunity_finder.h */; };
+		A979635F2328063700299006 /* reduction_util.cpp in Sources */ = {isa = PBXBuildFile; fileRef = A979616C2328063600299006 /* reduction_util.cpp */; };
+		A97963602328063700299006 /* reduction_util.cpp in Sources */ = {isa = PBXBuildFile; fileRef = A979616C2328063600299006 /* reduction_util.cpp */; };
+		A97963612328063700299006 /* remove_relaxed_precision_decoration_opportunity_finder.cpp in Sources */ = {isa = PBXBuildFile; fileRef = A979616D2328063600299006 /* remove_relaxed_precision_decoration_opportunity_finder.cpp */; };
+		A97963622328063700299006 /* remove_relaxed_precision_decoration_opportunity_finder.cpp in Sources */ = {isa = PBXBuildFile; fileRef = A979616D2328063600299006 /* remove_relaxed_precision_decoration_opportunity_finder.cpp */; };
+		A97963632328063700299006 /* structured_loop_to_selection_reduction_opportunity_finder.cpp in Sources */ = {isa = PBXBuildFile; fileRef = A979616E2328063600299006 /* structured_loop_to_selection_reduction_opportunity_finder.cpp */; };
+		A97963642328063700299006 /* structured_loop_to_selection_reduction_opportunity_finder.cpp in Sources */ = {isa = PBXBuildFile; fileRef = A979616E2328063600299006 /* structured_loop_to_selection_reduction_opportunity_finder.cpp */; };
+		A97963652328063700299006 /* simple_conditional_branch_to_branch_reduction_opportunity.h in Headers */ = {isa = PBXBuildFile; fileRef = A979616F2328063600299006 /* simple_conditional_branch_to_branch_reduction_opportunity.h */; };
+		A97963662328063700299006 /* simple_conditional_branch_to_branch_reduction_opportunity.h in Headers */ = {isa = PBXBuildFile; fileRef = A979616F2328063600299006 /* simple_conditional_branch_to_branch_reduction_opportunity.h */; };
+		A97963672328063700299006 /* remove_function_reduction_opportunity_finder.cpp in Sources */ = {isa = PBXBuildFile; fileRef = A97961702328063600299006 /* remove_function_reduction_opportunity_finder.cpp */; };
+		A97963682328063700299006 /* remove_function_reduction_opportunity_finder.cpp in Sources */ = {isa = PBXBuildFile; fileRef = A97961702328063600299006 /* remove_function_reduction_opportunity_finder.cpp */; };
+		A97963692328063700299006 /* remove_instruction_reduction_opportunity.h in Headers */ = {isa = PBXBuildFile; fileRef = A97961712328063600299006 /* remove_instruction_reduction_opportunity.h */; };
+		A979636A2328063700299006 /* remove_instruction_reduction_opportunity.h in Headers */ = {isa = PBXBuildFile; fileRef = A97961712328063600299006 /* remove_instruction_reduction_opportunity.h */; };
+		A979636B2328063700299006 /* conditional_branch_to_simple_conditional_branch_reduction_opportunity.h in Headers */ = {isa = PBXBuildFile; fileRef = A97961722328063600299006 /* conditional_branch_to_simple_conditional_branch_reduction_opportunity.h */; };
+		A979636C2328063700299006 /* conditional_branch_to_simple_conditional_branch_reduction_opportunity.h in Headers */ = {isa = PBXBuildFile; fileRef = A97961722328063600299006 /* conditional_branch_to_simple_conditional_branch_reduction_opportunity.h */; };
+		A979636D2328063700299006 /* simple_conditional_branch_to_branch_reduction_opportunity.cpp in Sources */ = {isa = PBXBuildFile; fileRef = A97961732328063600299006 /* simple_conditional_branch_to_branch_reduction_opportunity.cpp */; };
+		A979636E2328063700299006 /* simple_conditional_branch_to_branch_reduction_opportunity.cpp in Sources */ = {isa = PBXBuildFile; fileRef = A97961732328063600299006 /* simple_conditional_branch_to_branch_reduction_opportunity.cpp */; };
+		A979636F2328063700299006 /* remove_function_reduction_opportunity.cpp in Sources */ = {isa = PBXBuildFile; fileRef = A97961742328063600299006 /* remove_function_reduction_opportunity.cpp */; };
+		A97963702328063700299006 /* remove_function_reduction_opportunity.cpp in Sources */ = {isa = PBXBuildFile; fileRef = A97961742328063600299006 /* remove_function_reduction_opportunity.cpp */; };
+		A97963712328063700299006 /* remove_opname_instruction_reduction_opportunity_finder.h in Headers */ = {isa = PBXBuildFile; fileRef = A97961752328063600299006 /* remove_opname_instruction_reduction_opportunity_finder.h */; };
+		A97963722328063700299006 /* remove_opname_instruction_reduction_opportunity_finder.h in Headers */ = {isa = PBXBuildFile; fileRef = A97961752328063600299006 /* remove_opname_instruction_reduction_opportunity_finder.h */; };
+		A97963732328063700299006 /* simple_conditional_branch_to_branch_opportunity_finder.cpp in Sources */ = {isa = PBXBuildFile; fileRef = A97961762328063600299006 /* simple_conditional_branch_to_branch_opportunity_finder.cpp */; };
+		A97963742328063700299006 /* simple_conditional_branch_to_branch_opportunity_finder.cpp in Sources */ = {isa = PBXBuildFile; fileRef = A97961762328063600299006 /* simple_conditional_branch_to_branch_opportunity_finder.cpp */; };
+		A97963752328063700299006 /* remove_selection_reduction_opportunity_finder.cpp in Sources */ = {isa = PBXBuildFile; fileRef = A97961772328063600299006 /* remove_selection_reduction_opportunity_finder.cpp */; };
+		A97963762328063700299006 /* remove_selection_reduction_opportunity_finder.cpp in Sources */ = {isa = PBXBuildFile; fileRef = A97961772328063600299006 /* remove_selection_reduction_opportunity_finder.cpp */; };
+		A97963772328063700299006 /* conditional_branch_to_simple_conditional_branch_reduction_opportunity.cpp in Sources */ = {isa = PBXBuildFile; fileRef = A97961782328063600299006 /* conditional_branch_to_simple_conditional_branch_reduction_opportunity.cpp */; };
+		A97963782328063700299006 /* conditional_branch_to_simple_conditional_branch_reduction_opportunity.cpp in Sources */ = {isa = PBXBuildFile; fileRef = A97961782328063600299006 /* conditional_branch_to_simple_conditional_branch_reduction_opportunity.cpp */; };
+		A97963792328063700299006 /* simple_conditional_branch_to_branch_opportunity_finder.h in Headers */ = {isa = PBXBuildFile; fileRef = A97961792328063600299006 /* simple_conditional_branch_to_branch_opportunity_finder.h */; };
+		A979637A2328063700299006 /* simple_conditional_branch_to_branch_opportunity_finder.h in Headers */ = {isa = PBXBuildFile; fileRef = A97961792328063600299006 /* simple_conditional_branch_to_branch_opportunity_finder.h */; };
+		A979637B2328063700299006 /* merge_blocks_reduction_opportunity.cpp in Sources */ = {isa = PBXBuildFile; fileRef = A979617A2328063600299006 /* merge_blocks_reduction_opportunity.cpp */; };
+		A979637C2328063700299006 /* merge_blocks_reduction_opportunity.cpp in Sources */ = {isa = PBXBuildFile; fileRef = A979617A2328063600299006 /* merge_blocks_reduction_opportunity.cpp */; };
+		A979637D2328063700299006 /* change_operand_reduction_opportunity.cpp in Sources */ = {isa = PBXBuildFile; fileRef = A979617B2328063600299006 /* change_operand_reduction_opportunity.cpp */; };
+		A979637E2328063700299006 /* change_operand_reduction_opportunity.cpp in Sources */ = {isa = PBXBuildFile; fileRef = A979617B2328063600299006 /* change_operand_reduction_opportunity.cpp */; };
+		A979637F2328063700299006 /* structured_loop_to_selection_reduction_opportunity.h in Headers */ = {isa = PBXBuildFile; fileRef = A979617C2328063600299006 /* structured_loop_to_selection_reduction_opportunity.h */; };
+		A97963802328063700299006 /* structured_loop_to_selection_reduction_opportunity.h in Headers */ = {isa = PBXBuildFile; fileRef = A979617C2328063600299006 /* structured_loop_to_selection_reduction_opportunity.h */; };
+		A97963812328063700299006 /* remove_function_reduction_opportunity.h in Headers */ = {isa = PBXBuildFile; fileRef = A979617D2328063600299006 /* remove_function_reduction_opportunity.h */; };
+		A97963822328063700299006 /* remove_function_reduction_opportunity.h in Headers */ = {isa = PBXBuildFile; fileRef = A979617D2328063600299006 /* remove_function_reduction_opportunity.h */; };
+		A97963832328063700299006 /* change_operand_to_undef_reduction_opportunity.h in Headers */ = {isa = PBXBuildFile; fileRef = A979617E2328063600299006 /* change_operand_to_undef_reduction_opportunity.h */; };
+		A97963842328063700299006 /* change_operand_to_undef_reduction_opportunity.h in Headers */ = {isa = PBXBuildFile; fileRef = A979617E2328063600299006 /* change_operand_to_undef_reduction_opportunity.h */; };
+		A97963852328063700299006 /* remove_unreferenced_instruction_reduction_opportunity_finder.cpp in Sources */ = {isa = PBXBuildFile; fileRef = A979617F2328063600299006 /* remove_unreferenced_instruction_reduction_opportunity_finder.cpp */; };
+		A97963862328063700299006 /* remove_unreferenced_instruction_reduction_opportunity_finder.cpp in Sources */ = {isa = PBXBuildFile; fileRef = A979617F2328063600299006 /* remove_unreferenced_instruction_reduction_opportunity_finder.cpp */; };
+		A97963872328063700299006 /* structured_loop_to_selection_reduction_opportunity_finder.h in Headers */ = {isa = PBXBuildFile; fileRef = A97961802328063600299006 /* structured_loop_to_selection_reduction_opportunity_finder.h */; };
+		A97963882328063700299006 /* structured_loop_to_selection_reduction_opportunity_finder.h in Headers */ = {isa = PBXBuildFile; fileRef = A97961802328063600299006 /* structured_loop_to_selection_reduction_opportunity_finder.h */; };
+		A97963892328063700299006 /* remove_selection_reduction_opportunity.h in Headers */ = {isa = PBXBuildFile; fileRef = A97961812328063600299006 /* remove_selection_reduction_opportunity.h */; };
+		A979638A2328063700299006 /* remove_selection_reduction_opportunity.h in Headers */ = {isa = PBXBuildFile; fileRef = A97961812328063600299006 /* remove_selection_reduction_opportunity.h */; };
+		A979638B2328063700299006 /* remove_instruction_reduction_opportunity.cpp in Sources */ = {isa = PBXBuildFile; fileRef = A97961822328063600299006 /* remove_instruction_reduction_opportunity.cpp */; };
+		A979638C2328063700299006 /* remove_instruction_reduction_opportunity.cpp in Sources */ = {isa = PBXBuildFile; fileRef = A97961822328063600299006 /* remove_instruction_reduction_opportunity.cpp */; };
+		A979638D2328063700299006 /* remove_relaxed_precision_decoration_opportunity_finder.h in Headers */ = {isa = PBXBuildFile; fileRef = A97961832328063600299006 /* remove_relaxed_precision_decoration_opportunity_finder.h */; };
+		A979638E2328063700299006 /* remove_relaxed_precision_decoration_opportunity_finder.h in Headers */ = {isa = PBXBuildFile; fileRef = A97961832328063600299006 /* remove_relaxed_precision_decoration_opportunity_finder.h */; };
+		A979638F2328063700299006 /* remove_selection_reduction_opportunity_finder.h in Headers */ = {isa = PBXBuildFile; fileRef = A97961842328063600299006 /* remove_selection_reduction_opportunity_finder.h */; };
+		A97963902328063700299006 /* remove_selection_reduction_opportunity_finder.h in Headers */ = {isa = PBXBuildFile; fileRef = A97961842328063600299006 /* remove_selection_reduction_opportunity_finder.h */; };
+		A97963912328063700299006 /* merge_blocks_reduction_opportunity_finder.h in Headers */ = {isa = PBXBuildFile; fileRef = A97961852328063600299006 /* merge_blocks_reduction_opportunity_finder.h */; };
+		A97963922328063700299006 /* merge_blocks_reduction_opportunity_finder.h in Headers */ = {isa = PBXBuildFile; fileRef = A97961852328063600299006 /* merge_blocks_reduction_opportunity_finder.h */; };
+		A97963932328063700299006 /* remove_opname_instruction_reduction_opportunity_finder.cpp in Sources */ = {isa = PBXBuildFile; fileRef = A97961862328063600299006 /* remove_opname_instruction_reduction_opportunity_finder.cpp */; };
+		A97963942328063700299006 /* remove_opname_instruction_reduction_opportunity_finder.cpp in Sources */ = {isa = PBXBuildFile; fileRef = A97961862328063600299006 /* remove_opname_instruction_reduction_opportunity_finder.cpp */; };
+		A97963952328063700299006 /* pch_source_reduce.cpp in Sources */ = {isa = PBXBuildFile; fileRef = A97961872328063600299006 /* pch_source_reduce.cpp */; };
+		A97963962328063700299006 /* pch_source_reduce.cpp in Sources */ = {isa = PBXBuildFile; fileRef = A97961872328063600299006 /* pch_source_reduce.cpp */; };
+		A97963972328063700299006 /* reducer.cpp in Sources */ = {isa = PBXBuildFile; fileRef = A97961882328063600299006 /* reducer.cpp */; };
+		A97963982328063700299006 /* reducer.cpp in Sources */ = {isa = PBXBuildFile; fileRef = A97961882328063600299006 /* reducer.cpp */; };
+		A97963992328063700299006 /* operand_to_undef_reduction_opportunity_finder.cpp in Sources */ = {isa = PBXBuildFile; fileRef = A97961892328063600299006 /* operand_to_undef_reduction_opportunity_finder.cpp */; };
+		A979639A2328063700299006 /* operand_to_undef_reduction_opportunity_finder.cpp in Sources */ = {isa = PBXBuildFile; fileRef = A97961892328063600299006 /* operand_to_undef_reduction_opportunity_finder.cpp */; };
+		A979639B2328063700299006 /* remove_function_reduction_opportunity_finder.h in Headers */ = {isa = PBXBuildFile; fileRef = A979618A2328063600299006 /* remove_function_reduction_opportunity_finder.h */; };
+		A979639C2328063700299006 /* remove_function_reduction_opportunity_finder.h in Headers */ = {isa = PBXBuildFile; fileRef = A979618A2328063600299006 /* remove_function_reduction_opportunity_finder.h */; };
+		A979639D2328063700299006 /* pch_source_reduce.h in Headers */ = {isa = PBXBuildFile; fileRef = A979618B2328063600299006 /* pch_source_reduce.h */; };
+		A979639E2328063700299006 /* pch_source_reduce.h in Headers */ = {isa = PBXBuildFile; fileRef = A979618B2328063600299006 /* pch_source_reduce.h */; };
+		A979639F2328063700299006 /* remove_unreferenced_instruction_reduction_opportunity_finder.h in Headers */ = {isa = PBXBuildFile; fileRef = A979618C2328063600299006 /* remove_unreferenced_instruction_reduction_opportunity_finder.h */; };
+		A97963A02328063700299006 /* remove_unreferenced_instruction_reduction_opportunity_finder.h in Headers */ = {isa = PBXBuildFile; fileRef = A979618C2328063600299006 /* remove_unreferenced_instruction_reduction_opportunity_finder.h */; };
+		A97963A12328063700299006 /* merge_blocks_reduction_opportunity_finder.cpp in Sources */ = {isa = PBXBuildFile; fileRef = A979618D2328063700299006 /* merge_blocks_reduction_opportunity_finder.cpp */; };
+		A97963A22328063700299006 /* merge_blocks_reduction_opportunity_finder.cpp in Sources */ = {isa = PBXBuildFile; fileRef = A979618D2328063700299006 /* merge_blocks_reduction_opportunity_finder.cpp */; };
+		A97963A32328063700299006 /* reduction_opportunity.cpp in Sources */ = {isa = PBXBuildFile; fileRef = A979618E2328063700299006 /* reduction_opportunity.cpp */; };
+		A97963A42328063700299006 /* reduction_opportunity.cpp in Sources */ = {isa = PBXBuildFile; fileRef = A979618E2328063700299006 /* reduction_opportunity.cpp */; };
+		A97963A52328063700299006 /* reducer.h in Headers */ = {isa = PBXBuildFile; fileRef = A979618F2328063700299006 /* reducer.h */; };
+		A97963A62328063700299006 /* reducer.h in Headers */ = {isa = PBXBuildFile; fileRef = A979618F2328063700299006 /* reducer.h */; };
+		A97963A72328063700299006 /* change_operand_to_undef_reduction_opportunity.cpp in Sources */ = {isa = PBXBuildFile; fileRef = A97961902328063700299006 /* change_operand_to_undef_reduction_opportunity.cpp */; };
+		A97963A82328063700299006 /* change_operand_to_undef_reduction_opportunity.cpp in Sources */ = {isa = PBXBuildFile; fileRef = A97961902328063700299006 /* change_operand_to_undef_reduction_opportunity.cpp */; };
+		A97963A92328063700299006 /* reduction_opportunity.h in Headers */ = {isa = PBXBuildFile; fileRef = A97961912328063700299006 /* reduction_opportunity.h */; };
+		A97963AA2328063700299006 /* reduction_opportunity.h in Headers */ = {isa = PBXBuildFile; fileRef = A97961912328063700299006 /* reduction_opportunity.h */; };
+		A97963AB2328063700299006 /* conditional_branch_to_simple_conditional_branch_opportunity_finder.h in Headers */ = {isa = PBXBuildFile; fileRef = A97961922328063700299006 /* conditional_branch_to_simple_conditional_branch_opportunity_finder.h */; };
+		A97963AC2328063700299006 /* conditional_branch_to_simple_conditional_branch_opportunity_finder.h in Headers */ = {isa = PBXBuildFile; fileRef = A97961922328063700299006 /* conditional_branch_to_simple_conditional_branch_opportunity_finder.h */; };
+		A97963AD2328063700299006 /* operand_to_dominating_id_reduction_opportunity_finder.cpp in Sources */ = {isa = PBXBuildFile; fileRef = A97961932328063700299006 /* operand_to_dominating_id_reduction_opportunity_finder.cpp */; };
+		A97963AE2328063700299006 /* operand_to_dominating_id_reduction_opportunity_finder.cpp in Sources */ = {isa = PBXBuildFile; fileRef = A97961932328063700299006 /* operand_to_dominating_id_reduction_opportunity_finder.cpp */; };
+		A97963AF2328063700299006 /* reduction_opportunity_finder.h in Headers */ = {isa = PBXBuildFile; fileRef = A97961942328063700299006 /* reduction_opportunity_finder.h */; };
+		A97963B02328063700299006 /* reduction_opportunity_finder.h in Headers */ = {isa = PBXBuildFile; fileRef = A97961942328063700299006 /* reduction_opportunity_finder.h */; };
+		A97963B12328063700299006 /* change_operand_reduction_opportunity.h in Headers */ = {isa = PBXBuildFile; fileRef = A97961952328063700299006 /* change_operand_reduction_opportunity.h */; };
+		A97963B22328063700299006 /* change_operand_reduction_opportunity.h in Headers */ = {isa = PBXBuildFile; fileRef = A97961952328063700299006 /* change_operand_reduction_opportunity.h */; };
+		A97963B32328063700299006 /* remove_block_reduction_opportunity_finder.h in Headers */ = {isa = PBXBuildFile; fileRef = A97961962328063700299006 /* remove_block_reduction_opportunity_finder.h */; };
+		A97963B42328063700299006 /* remove_block_reduction_opportunity_finder.h in Headers */ = {isa = PBXBuildFile; fileRef = A97961962328063700299006 /* remove_block_reduction_opportunity_finder.h */; };
+		A97963B52328063700299006 /* remove_block_reduction_opportunity_finder.cpp in Sources */ = {isa = PBXBuildFile; fileRef = A97961972328063700299006 /* remove_block_reduction_opportunity_finder.cpp */; };
+		A97963B62328063700299006 /* remove_block_reduction_opportunity_finder.cpp in Sources */ = {isa = PBXBuildFile; fileRef = A97961972328063700299006 /* remove_block_reduction_opportunity_finder.cpp */; };
+		A97963B72328063700299006 /* reduction_util.h in Headers */ = {isa = PBXBuildFile; fileRef = A97961982328063700299006 /* reduction_util.h */; };
+		A97963B82328063700299006 /* reduction_util.h in Headers */ = {isa = PBXBuildFile; fileRef = A97961982328063700299006 /* reduction_util.h */; };
+		A97963B92328063700299006 /* merge_blocks_reduction_opportunity.h in Headers */ = {isa = PBXBuildFile; fileRef = A97961992328063700299006 /* merge_blocks_reduction_opportunity.h */; };
+		A97963BA2328063700299006 /* merge_blocks_reduction_opportunity.h in Headers */ = {isa = PBXBuildFile; fileRef = A97961992328063700299006 /* merge_blocks_reduction_opportunity.h */; };
+		A97963BB2328063700299006 /* conditional_branch_to_simple_conditional_branch_opportunity_finder.cpp in Sources */ = {isa = PBXBuildFile; fileRef = A979619A2328063700299006 /* conditional_branch_to_simple_conditional_branch_opportunity_finder.cpp */; };
+		A97963BC2328063700299006 /* conditional_branch_to_simple_conditional_branch_opportunity_finder.cpp in Sources */ = {isa = PBXBuildFile; fileRef = A979619A2328063700299006 /* conditional_branch_to_simple_conditional_branch_opportunity_finder.cpp */; };
+		A97963BD2328063700299006 /* structured_loop_to_selection_reduction_opportunity.cpp in Sources */ = {isa = PBXBuildFile; fileRef = A979619B2328063700299006 /* structured_loop_to_selection_reduction_opportunity.cpp */; };
+		A97963BE2328063700299006 /* structured_loop_to_selection_reduction_opportunity.cpp in Sources */ = {isa = PBXBuildFile; fileRef = A979619B2328063700299006 /* structured_loop_to_selection_reduction_opportunity.cpp */; };
+		A97963BF2328063700299006 /* remove_block_reduction_opportunity.cpp in Sources */ = {isa = PBXBuildFile; fileRef = A979619C2328063700299006 /* remove_block_reduction_opportunity.cpp */; };
+		A97963C02328063700299006 /* remove_block_reduction_opportunity.cpp in Sources */ = {isa = PBXBuildFile; fileRef = A979619C2328063700299006 /* remove_block_reduction_opportunity.cpp */; };
+		A97963C12328063700299006 /* reduction_pass.h in Headers */ = {isa = PBXBuildFile; fileRef = A979619D2328063700299006 /* reduction_pass.h */; };
+		A97963C22328063700299006 /* reduction_pass.h in Headers */ = {isa = PBXBuildFile; fileRef = A979619D2328063700299006 /* reduction_pass.h */; };
+		A97963C32328063700299006 /* latest_version_opencl_std_header.h in Headers */ = {isa = PBXBuildFile; fileRef = A979619E2328063700299006 /* latest_version_opencl_std_header.h */; };
+		A97963C42328063700299006 /* latest_version_opencl_std_header.h in Headers */ = {isa = PBXBuildFile; fileRef = A979619E2328063700299006 /* latest_version_opencl_std_header.h */; };
+		A97963C52328063700299006 /* spirv_optimizer_options.cpp in Sources */ = {isa = PBXBuildFile; fileRef = A979619F2328063700299006 /* spirv_optimizer_options.cpp */; };
+		A97963C62328063700299006 /* spirv_optimizer_options.cpp in Sources */ = {isa = PBXBuildFile; fileRef = A979619F2328063700299006 /* spirv_optimizer_options.cpp */; };
+		A97963C72328063700299006 /* cfa.h in Headers */ = {isa = PBXBuildFile; fileRef = A97961A02328063700299006 /* cfa.h */; };
+		A97963C82328063700299006 /* cfa.h in Headers */ = {isa = PBXBuildFile; fileRef = A97961A02328063700299006 /* cfa.h */; };
+		A97963C92328063700299006 /* pch_source.h in Headers */ = {isa = PBXBuildFile; fileRef = A97961A12328063700299006 /* pch_source.h */; };
+		A97963CA2328063700299006 /* pch_source.h in Headers */ = {isa = PBXBuildFile; fileRef = A97961A12328063700299006 /* pch_source.h */; };
+		A97963CB2328063700299006 /* enum_string_mapping.h in Headers */ = {isa = PBXBuildFile; fileRef = A97961A22328063700299006 /* enum_string_mapping.h */; };
+		A97963CC2328063700299006 /* enum_string_mapping.h in Headers */ = {isa = PBXBuildFile; fileRef = A97961A22328063700299006 /* enum_string_mapping.h */; };
+		A97963CD2328063700299006 /* spirv_fuzzer_options.cpp in Sources */ = {isa = PBXBuildFile; fileRef = A97961A32328063700299006 /* spirv_fuzzer_options.cpp */; };
+		A97963CE2328063700299006 /* spirv_fuzzer_options.cpp in Sources */ = {isa = PBXBuildFile; fileRef = A97961A32328063700299006 /* spirv_fuzzer_options.cpp */; };
+		A97963CF2328063700299006 /* spirv_reducer_options.h in Headers */ = {isa = PBXBuildFile; fileRef = A97961A42328063700299006 /* spirv_reducer_options.h */; };
+		A97963D02328063700299006 /* spirv_reducer_options.h in Headers */ = {isa = PBXBuildFile; fileRef = A97961A42328063700299006 /* spirv_reducer_options.h */; };
+		A97963D12328063700299006 /* spirv_validator_options.cpp in Sources */ = {isa = PBXBuildFile; fileRef = A97961A52328063700299006 /* spirv_validator_options.cpp */; };
+		A97963D22328063700299006 /* spirv_validator_options.cpp in Sources */ = {isa = PBXBuildFile; fileRef = A97961A52328063700299006 /* spirv_validator_options.cpp */; };
+		A97963D32328063700299006 /* print.cpp in Sources */ = {isa = PBXBuildFile; fileRef = A97961A72328063700299006 /* print.cpp */; };
+		A97963D42328063700299006 /* print.cpp in Sources */ = {isa = PBXBuildFile; fileRef = A97961A72328063700299006 /* print.cpp */; };
+		A97963D52328063700299006 /* spirv_definition.h in Headers */ = {isa = PBXBuildFile; fileRef = A97961A82328063700299006 /* spirv_definition.h */; };
+		A97963D62328063700299006 /* spirv_definition.h in Headers */ = {isa = PBXBuildFile; fileRef = A97961A82328063700299006 /* spirv_definition.h */; };
+		A97963D72328063700299006 /* operand.h in Headers */ = {isa = PBXBuildFile; fileRef = A97961A92328063700299006 /* operand.h */; };
+		A97963D82328063700299006 /* operand.h in Headers */ = {isa = PBXBuildFile; fileRef = A97961A92328063700299006 /* operand.h */; };
+		A97963D92328063700299006 /* spirv_endian.cpp in Sources */ = {isa = PBXBuildFile; fileRef = A97961AA2328063700299006 /* spirv_endian.cpp */; };
+		A97963DA2328063700299006 /* spirv_endian.cpp in Sources */ = {isa = PBXBuildFile; fileRef = A97961AA2328063700299006 /* spirv_endian.cpp */; };
+		A97963DB2328063700299006 /* macro.h in Headers */ = {isa = PBXBuildFile; fileRef = A97961AB2328063700299006 /* macro.h */; };
+		A97963DC2328063700299006 /* macro.h in Headers */ = {isa = PBXBuildFile; fileRef = A97961AB2328063700299006 /* macro.h */; };
+		A97963DD2328063700299006 /* spirv_constant.h in Headers */ = {isa = PBXBuildFile; fileRef = A97961AC2328063700299006 /* spirv_constant.h */; };
+		A97963DE2328063700299006 /* spirv_constant.h in Headers */ = {isa = PBXBuildFile; fileRef = A97961AC2328063700299006 /* spirv_constant.h */; };
+		A97963DF2328063700299006 /* binary.cpp in Sources */ = {isa = PBXBuildFile; fileRef = A97961AE2328063700299006 /* binary.cpp */; };
+		A97963E02328063700299006 /* binary.cpp in Sources */ = {isa = PBXBuildFile; fileRef = A97961AE2328063700299006 /* binary.cpp */; };
+		A97963E12328063700299006 /* spirv_validator_options.h in Headers */ = {isa = PBXBuildFile; fileRef = A97961AF2328063700299006 /* spirv_validator_options.h */; };
+		A97963E22328063700299006 /* spirv_validator_options.h in Headers */ = {isa = PBXBuildFile; fileRef = A97961AF2328063700299006 /* spirv_validator_options.h */; };
+		A97963E32328063700299006 /* enum_string_mapping.cpp in Sources */ = {isa = PBXBuildFile; fileRef = A97961B02328063700299006 /* enum_string_mapping.cpp */; };
+		A97963E42328063700299006 /* enum_string_mapping.cpp in Sources */ = {isa = PBXBuildFile; fileRef = A97961B02328063700299006 /* enum_string_mapping.cpp */; };
+		A97963E52328063700299006 /* text_handler.h in Headers */ = {isa = PBXBuildFile; fileRef = A97961B12328063700299006 /* text_handler.h */; };
+		A97963E62328063700299006 /* text_handler.h in Headers */ = {isa = PBXBuildFile; fileRef = A97961B12328063700299006 /* text_handler.h */; };
+		A97963E72328063700299006 /* parsed_operand.h in Headers */ = {isa = PBXBuildFile; fileRef = A97961B22328063700299006 /* parsed_operand.h */; };
+		A97963E82328063700299006 /* parsed_operand.h in Headers */ = {isa = PBXBuildFile; fileRef = A97961B22328063700299006 /* parsed_operand.h */; };
+		A97963E92328063700299006 /* name_mapper.h in Headers */ = {isa = PBXBuildFile; fileRef = A97961B32328063700299006 /* name_mapper.h */; };
+		A97963EA2328063700299006 /* name_mapper.h in Headers */ = {isa = PBXBuildFile; fileRef = A97961B32328063700299006 /* name_mapper.h */; };
+		A97963EB2328063700299006 /* spirv_reducer_options.cpp in Sources */ = {isa = PBXBuildFile; fileRef = A97961B42328063700299006 /* spirv_reducer_options.cpp */; };
+		A97963EC2328063700299006 /* spirv_reducer_options.cpp in Sources */ = {isa = PBXBuildFile; fileRef = A97961B42328063700299006 /* spirv_reducer_options.cpp */; };
+		A97963ED2328063700299006 /* parsed_operand.cpp in Sources */ = {isa = PBXBuildFile; fileRef = A97961B52328063700299006 /* parsed_operand.cpp */; };
+		A97963EE2328063700299006 /* parsed_operand.cpp in Sources */ = {isa = PBXBuildFile; fileRef = A97961B52328063700299006 /* parsed_operand.cpp */; };
+		A97963EF2328063700299006 /* diagnostic.h in Headers */ = {isa = PBXBuildFile; fileRef = A97961B62328063700299006 /* diagnostic.h */; };
+		A97963F02328063700299006 /* diagnostic.h in Headers */ = {isa = PBXBuildFile; fileRef = A97961B62328063700299006 /* diagnostic.h */; };
+		A97963F12328063700299006 /* spirv_endian.h in Headers */ = {isa = PBXBuildFile; fileRef = A97961B72328063700299006 /* spirv_endian.h */; };
+		A97963F22328063700299006 /* spirv_endian.h in Headers */ = {isa = PBXBuildFile; fileRef = A97961B72328063700299006 /* spirv_endian.h */; };
+		A97963F32328063700299006 /* name_mapper.cpp in Sources */ = {isa = PBXBuildFile; fileRef = A97961B82328063700299006 /* name_mapper.cpp */; };
+		A97963F42328063700299006 /* name_mapper.cpp in Sources */ = {isa = PBXBuildFile; fileRef = A97961B82328063700299006 /* name_mapper.cpp */; };
+		A97963F52328063700299006 /* linker.cpp in Sources */ = {isa = PBXBuildFile; fileRef = A97961BC2328063700299006 /* linker.cpp */; };
+		A97963F62328063700299006 /* linker.cpp in Sources */ = {isa = PBXBuildFile; fileRef = A97961BC2328063700299006 /* linker.cpp */; };
+		A97963F72328063700299006 /* software_version.cpp in Sources */ = {isa = PBXBuildFile; fileRef = A97961BD2328063700299006 /* software_version.cpp */; };
+		A97963F82328063700299006 /* software_version.cpp in Sources */ = {isa = PBXBuildFile; fileRef = A97961BD2328063700299006 /* software_version.cpp */; };
+		A97963F92328063700299006 /* opcode.cpp in Sources */ = {isa = PBXBuildFile; fileRef = A97961BE2328063700299006 /* opcode.cpp */; };
+		A97963FA2328063700299006 /* opcode.cpp in Sources */ = {isa = PBXBuildFile; fileRef = A97961BE2328063700299006 /* opcode.cpp */; };
+		A97963FB2328063700299006 /* print.h in Headers */ = {isa = PBXBuildFile; fileRef = A97961BF2328063700299006 /* print.h */; };
+		A97963FC2328063700299006 /* print.h in Headers */ = {isa = PBXBuildFile; fileRef = A97961BF2328063700299006 /* print.h */; };
+		A97963FD2328063700299006 /* ext_inst.cpp in Sources */ = {isa = PBXBuildFile; fileRef = A97961C02328063700299006 /* ext_inst.cpp */; };
+		A97963FE2328063700299006 /* ext_inst.cpp in Sources */ = {isa = PBXBuildFile; fileRef = A97961C02328063700299006 /* ext_inst.cpp */; };
+		A97963FF2328063700299006 /* disassemble.h in Headers */ = {isa = PBXBuildFile; fileRef = A97961C12328063700299006 /* disassemble.h */; };
+		A97964002328063700299006 /* disassemble.h in Headers */ = {isa = PBXBuildFile; fileRef = A97961C12328063700299006 /* disassemble.h */; };
+		A97964012328063700299006 /* optimizer.cpp in Sources */ = {isa = PBXBuildFile; fileRef = A97961C32328063700299006 /* optimizer.cpp */; };
+		A97964022328063700299006 /* optimizer.cpp in Sources */ = {isa = PBXBuildFile; fileRef = A97961C32328063700299006 /* optimizer.cpp */; };
+		A97964032328063700299006 /* if_conversion.h in Headers */ = {isa = PBXBuildFile; fileRef = A97961C42328063700299006 /* if_conversion.h */; };
+		A97964042328063700299006 /* if_conversion.h in Headers */ = {isa = PBXBuildFile; fileRef = A97961C42328063700299006 /* if_conversion.h */; };
+		A97964052328063700299006 /* register_pressure.cpp in Sources */ = {isa = PBXBuildFile; fileRef = A97961C52328063700299006 /* register_pressure.cpp */; };
+		A97964062328063700299006 /* register_pressure.cpp in Sources */ = {isa = PBXBuildFile; fileRef = A97961C52328063700299006 /* register_pressure.cpp */; };
+		A97964072328063700299006 /* loop_utils.cpp in Sources */ = {isa = PBXBuildFile; fileRef = A97961C62328063700299006 /* loop_utils.cpp */; };
+		A97964082328063700299006 /* loop_utils.cpp in Sources */ = {isa = PBXBuildFile; fileRef = A97961C62328063700299006 /* loop_utils.cpp */; };
+		A97964092328063700299006 /* merge_return_pass.h in Headers */ = {isa = PBXBuildFile; fileRef = A97961C72328063700299006 /* merge_return_pass.h */; };
+		A979640A2328063700299006 /* merge_return_pass.h in Headers */ = {isa = PBXBuildFile; fileRef = A97961C72328063700299006 /* merge_return_pass.h */; };
+		A979640B2328063700299006 /* inline_opaque_pass.h in Headers */ = {isa = PBXBuildFile; fileRef = A97961C82328063700299006 /* inline_opaque_pass.h */; };
+		A979640C2328063700299006 /* inline_opaque_pass.h in Headers */ = {isa = PBXBuildFile; fileRef = A97961C82328063700299006 /* inline_opaque_pass.h */; };
+		A979640D2328063700299006 /* loop_fusion.h in Headers */ = {isa = PBXBuildFile; fileRef = A97961C92328063700299006 /* loop_fusion.h */; };
+		A979640E2328063700299006 /* loop_fusion.h in Headers */ = {isa = PBXBuildFile; fileRef = A97961C92328063700299006 /* loop_fusion.h */; };
+		A979640F2328063700299006 /* combine_access_chains.cpp in Sources */ = {isa = PBXBuildFile; fileRef = A97961CA2328063700299006 /* combine_access_chains.cpp */; };
+		A97964102328063700299006 /* combine_access_chains.cpp in Sources */ = {isa = PBXBuildFile; fileRef = A97961CA2328063700299006 /* combine_access_chains.cpp */; };
+		A97964112328063700299006 /* build_module.cpp in Sources */ = {isa = PBXBuildFile; fileRef = A97961CB2328063700299006 /* build_module.cpp */; };
+		A97964122328063700299006 /* build_module.cpp in Sources */ = {isa = PBXBuildFile; fileRef = A97961CB2328063700299006 /* build_module.cpp */; };
+		A97964132328063700299006 /* composite.h in Headers */ = {isa = PBXBuildFile; fileRef = A97961CC2328063700299006 /* composite.h */; };
+		A97964142328063700299006 /* composite.h in Headers */ = {isa = PBXBuildFile; fileRef = A97961CC2328063700299006 /* composite.h */; };
+		A97964152328063700299006 /* compact_ids_pass.h in Headers */ = {isa = PBXBuildFile; fileRef = A97961CD2328063700299006 /* compact_ids_pass.h */; };
+		A97964162328063700299006 /* compact_ids_pass.h in Headers */ = {isa = PBXBuildFile; fileRef = A97961CD2328063700299006 /* compact_ids_pass.h */; };
+		A97964172328063700299006 /* register_pressure.h in Headers */ = {isa = PBXBuildFile; fileRef = A97961CE2328063700299006 /* register_pressure.h */; };
+		A97964182328063700299006 /* register_pressure.h in Headers */ = {isa = PBXBuildFile; fileRef = A97961CE2328063700299006 /* register_pressure.h */; };
+		A97964192328063700299006 /* tree_iterator.h in Headers */ = {isa = PBXBuildFile; fileRef = A97961CF2328063700299006 /* tree_iterator.h */; };
+		A979641A2328063700299006 /* tree_iterator.h in Headers */ = {isa = PBXBuildFile; fileRef = A97961CF2328063700299006 /* tree_iterator.h */; };
+		A979641B2328063700299006 /* graphics_robust_access_pass.h in Headers */ = {isa = PBXBuildFile; fileRef = A97961D02328063700299006 /* graphics_robust_access_pass.h */; };
+		A979641C2328063700299006 /* graphics_robust_access_pass.h in Headers */ = {isa = PBXBuildFile; fileRef = A97961D02328063700299006 /* graphics_robust_access_pass.h */; };
+		A979641D2328063700299006 /* strip_atomic_counter_memory_pass.h in Headers */ = {isa = PBXBuildFile; fileRef = A97961D12328063700299006 /* strip_atomic_counter_memory_pass.h */; };
+		A979641E2328063700299006 /* strip_atomic_counter_memory_pass.h in Headers */ = {isa = PBXBuildFile; fileRef = A97961D12328063700299006 /* strip_atomic_counter_memory_pass.h */; };
+		A979641F2328063700299006 /* legalize_vector_shuffle_pass.h in Headers */ = {isa = PBXBuildFile; fileRef = A97961D22328063700299006 /* legalize_vector_shuffle_pass.h */; };
+		A97964202328063700299006 /* legalize_vector_shuffle_pass.h in Headers */ = {isa = PBXBuildFile; fileRef = A97961D22328063700299006 /* legalize_vector_shuffle_pass.h */; };
+		A97964212328063700299006 /* local_single_store_elim_pass.h in Headers */ = {isa = PBXBuildFile; fileRef = A97961D32328063700299006 /* local_single_store_elim_pass.h */; };
+		A97964222328063700299006 /* local_single_store_elim_pass.h in Headers */ = {isa = PBXBuildFile; fileRef = A97961D32328063700299006 /* local_single_store_elim_pass.h */; };
+		A97964232328063700299006 /* reduce_load_size.h in Headers */ = {isa = PBXBuildFile; fileRef = A97961D42328063700299006 /* reduce_load_size.h */; };
+		A97964242328063700299006 /* reduce_load_size.h in Headers */ = {isa = PBXBuildFile; fileRef = A97961D42328063700299006 /* reduce_load_size.h */; };
+		A97964252328063700299006 /* code_sink.cpp in Sources */ = {isa = PBXBuildFile; fileRef = A97961D52328063700299006 /* code_sink.cpp */; };
+		A97964262328063700299006 /* code_sink.cpp in Sources */ = {isa = PBXBuildFile; fileRef = A97961D52328063700299006 /* code_sink.cpp */; };
+		A97964272328063700299006 /* types.cpp in Sources */ = {isa = PBXBuildFile; fileRef = A97961D62328063700299006 /* types.cpp */; };
+		A97964282328063700299006 /* types.cpp in Sources */ = {isa = PBXBuildFile; fileRef = A97961D62328063700299006 /* types.cpp */; };
+		A97964292328063700299006 /* scalar_analysis.h in Headers */ = {isa = PBXBuildFile; fileRef = A97961D72328063700299006 /* scalar_analysis.h */; };
+		A979642A2328063700299006 /* scalar_analysis.h in Headers */ = {isa = PBXBuildFile; fileRef = A97961D72328063700299006 /* scalar_analysis.h */; };
+		A979642B2328063700299006 /* strip_debug_info_pass.h in Headers */ = {isa = PBXBuildFile; fileRef = A97961D82328063700299006 /* strip_debug_info_pass.h */; };
+		A979642C2328063700299006 /* strip_debug_info_pass.h in Headers */ = {isa = PBXBuildFile; fileRef = A97961D82328063700299006 /* strip_debug_info_pass.h */; };
+		A979642D2328063700299006 /* cfg.cpp in Sources */ = {isa = PBXBuildFile; fileRef = A97961D92328063700299006 /* cfg.cpp */; };
+		A979642E2328063700299006 /* cfg.cpp in Sources */ = {isa = PBXBuildFile; fileRef = A97961D92328063700299006 /* cfg.cpp */; };
+		A979642F2328063700299006 /* strip_atomic_counter_memory_pass.cpp in Sources */ = {isa = PBXBuildFile; fileRef = A97961DA2328063700299006 /* strip_atomic_counter_memory_pass.cpp */; };
+		A97964302328063700299006 /* strip_atomic_counter_memory_pass.cpp in Sources */ = {isa = PBXBuildFile; fileRef = A97961DA2328063700299006 /* strip_atomic_counter_memory_pass.cpp */; };
+		A97964312328063700299006 /* decoration_manager.cpp in Sources */ = {isa = PBXBuildFile; fileRef = A97961DB2328063700299006 /* decoration_manager.cpp */; };
+		A97964322328063700299006 /* decoration_manager.cpp in Sources */ = {isa = PBXBuildFile; fileRef = A97961DB2328063700299006 /* decoration_manager.cpp */; };
+		A97964332328063700299006 /* local_single_block_elim_pass.cpp in Sources */ = {isa = PBXBuildFile; fileRef = A97961DC2328063700299006 /* local_single_block_elim_pass.cpp */; };
+		A97964342328063700299006 /* local_single_block_elim_pass.cpp in Sources */ = {isa = PBXBuildFile; fileRef = A97961DC2328063700299006 /* local_single_block_elim_pass.cpp */; };
+		A97964352328063700299006 /* freeze_spec_constant_value_pass.cpp in Sources */ = {isa = PBXBuildFile; fileRef = A97961DD2328063700299006 /* freeze_spec_constant_value_pass.cpp */; };
+		A97964362328063700299006 /* freeze_spec_constant_value_pass.cpp in Sources */ = {isa = PBXBuildFile; fileRef = A97961DD2328063700299006 /* freeze_spec_constant_value_pass.cpp */; };
+		A97964372328063700299006 /* replace_invalid_opc.h in Headers */ = {isa = PBXBuildFile; fileRef = A97961DE2328063700299006 /* replace_invalid_opc.h */; };
+		A97964382328063700299006 /* replace_invalid_opc.h in Headers */ = {isa = PBXBuildFile; fileRef = A97961DE2328063700299006 /* replace_invalid_opc.h */; };
+		A97964392328063700299006 /* local_access_chain_convert_pass.h in Headers */ = {isa = PBXBuildFile; fileRef = A97961DF2328063700299006 /* local_access_chain_convert_pass.h */; };
+		A979643A2328063700299006 /* local_access_chain_convert_pass.h in Headers */ = {isa = PBXBuildFile; fileRef = A97961DF2328063700299006 /* local_access_chain_convert_pass.h */; };
+		A979643B2328063700299006 /* inst_bindless_check_pass.cpp in Sources */ = {isa = PBXBuildFile; fileRef = A97961E02328063700299006 /* inst_bindless_check_pass.cpp */; };
+		A979643C2328063700299006 /* inst_bindless_check_pass.cpp in Sources */ = {isa = PBXBuildFile; fileRef = A97961E02328063700299006 /* inst_bindless_check_pass.cpp */; };
+		A979643D2328063700299006 /* local_redundancy_elimination.cpp in Sources */ = {isa = PBXBuildFile; fileRef = A97961E12328063700299006 /* local_redundancy_elimination.cpp */; };
+		A979643E2328063700299006 /* local_redundancy_elimination.cpp in Sources */ = {isa = PBXBuildFile; fileRef = A97961E12328063700299006 /* local_redundancy_elimination.cpp */; };
+		A979643F2328063700299006 /* instrument_pass.cpp in Sources */ = {isa = PBXBuildFile; fileRef = A97961E32328063700299006 /* instrument_pass.cpp */; };
+		A97964402328063700299006 /* instrument_pass.cpp in Sources */ = {isa = PBXBuildFile; fileRef = A97961E32328063700299006 /* instrument_pass.cpp */; };
+		A97964412328063700299006 /* propagator.h in Headers */ = {isa = PBXBuildFile; fileRef = A97961E42328063700299006 /* propagator.h */; };
+		A97964422328063700299006 /* propagator.h in Headers */ = {isa = PBXBuildFile; fileRef = A97961E42328063700299006 /* propagator.h */; };
+		A97964432328063700299006 /* instruction_list.h in Headers */ = {isa = PBXBuildFile; fileRef = A97961E52328063700299006 /* instruction_list.h */; };
+		A97964442328063700299006 /* instruction_list.h in Headers */ = {isa = PBXBuildFile; fileRef = A97961E52328063700299006 /* instruction_list.h */; };
+		A97964452328063700299006 /* feature_manager.cpp in Sources */ = {isa = PBXBuildFile; fileRef = A97961E62328063700299006 /* feature_manager.cpp */; };
+		A97964462328063700299006 /* feature_manager.cpp in Sources */ = {isa = PBXBuildFile; fileRef = A97961E62328063700299006 /* feature_manager.cpp */; };
+		A97964472328063700299006 /* pass.cpp in Sources */ = {isa = PBXBuildFile; fileRef = A97961E72328063700299006 /* pass.cpp */; };
+		A97964482328063700299006 /* pass.cpp in Sources */ = {isa = PBXBuildFile; fileRef = A97961E72328063700299006 /* pass.cpp */; };
+		A97964492328063700299006 /* loop_fission.cpp in Sources */ = {isa = PBXBuildFile; fileRef = A97961E82328063700299006 /* loop_fission.cpp */; };
+		A979644A2328063700299006 /* loop_fission.cpp in Sources */ = {isa = PBXBuildFile; fileRef = A97961E82328063700299006 /* loop_fission.cpp */; };
+		A979644B2328063700299006 /* dominator_tree.cpp in Sources */ = {isa = PBXBuildFile; fileRef = A97961E92328063700299006 /* dominator_tree.cpp */; };
+		A979644C2328063700299006 /* dominator_tree.cpp in Sources */ = {isa = PBXBuildFile; fileRef = A97961E92328063700299006 /* dominator_tree.cpp */; };
+		A979644D2328063700299006 /* amd_ext_to_khr.h in Headers */ = {isa = PBXBuildFile; fileRef = A97961EA2328063700299006 /* amd_ext_to_khr.h */; };
+		A979644E2328063700299006 /* amd_ext_to_khr.h in Headers */ = {isa = PBXBuildFile; fileRef = A97961EA2328063700299006 /* amd_ext_to_khr.h */; };
+		A979644F2328063700299006 /* merge_return_pass.cpp in Sources */ = {isa = PBXBuildFile; fileRef = A97961EB2328063700299006 /* merge_return_pass.cpp */; };
+		A97964502328063700299006 /* merge_return_pass.cpp in Sources */ = {isa = PBXBuildFile; fileRef = A97961EB2328063700299006 /* merge_return_pass.cpp */; };
+		A97964512328063700299006 /* ir_context.h in Headers */ = {isa = PBXBuildFile; fileRef = A97961EC2328063700299006 /* ir_context.h */; };
+		A97964522328063700299006 /* ir_context.h in Headers */ = {isa = PBXBuildFile; fileRef = A97961EC2328063700299006 /* ir_context.h */; };
+		A97964532328063700299006 /* eliminate_dead_constant_pass.cpp in Sources */ = {isa = PBXBuildFile; fileRef = A97961ED2328063700299006 /* eliminate_dead_constant_pass.cpp */; };
+		A97964542328063700299006 /* eliminate_dead_constant_pass.cpp in Sources */ = {isa = PBXBuildFile; fileRef = A97961ED2328063700299006 /* eliminate_dead_constant_pass.cpp */; };
+		A97964552328063700299006 /* cfg_cleanup_pass.cpp in Sources */ = {isa = PBXBuildFile; fileRef = A97961EE2328063700299006 /* cfg_cleanup_pass.cpp */; };
+		A97964562328063700299006 /* cfg_cleanup_pass.cpp in Sources */ = {isa = PBXBuildFile; fileRef = A97961EE2328063700299006 /* cfg_cleanup_pass.cpp */; };
+		A97964572328063700299006 /* wrap_opkill.cpp in Sources */ = {isa = PBXBuildFile; fileRef = A97961EF2328063700299006 /* wrap_opkill.cpp */; };
+		A97964582328063700299006 /* wrap_opkill.cpp in Sources */ = {isa = PBXBuildFile; fileRef = A97961EF2328063700299006 /* wrap_opkill.cpp */; };
+		A97964592328063700299006 /* const_folding_rules.cpp in Sources */ = {isa = PBXBuildFile; fileRef = A97961F02328063700299006 /* const_folding_rules.cpp */; };
+		A979645A2328063700299006 /* const_folding_rules.cpp in Sources */ = {isa = PBXBuildFile; fileRef = A97961F02328063700299006 /* const_folding_rules.cpp */; };
+		A979645B2328063700299006 /* loop_unroller.h in Headers */ = {isa = PBXBuildFile; fileRef = A97961F12328063700299006 /* loop_unroller.h */; };
+		A979645C2328063700299006 /* loop_unroller.h in Headers */ = {isa = PBXBuildFile; fileRef = A97961F12328063700299006 /* loop_unroller.h */; };
+		A979645D2328063700299006 /* strip_debug_info_pass.cpp in Sources */ = {isa = PBXBuildFile; fileRef = A97961F22328063700299006 /* strip_debug_info_pass.cpp */; };
+		A979645E2328063700299006 /* strip_debug_info_pass.cpp in Sources */ = {isa = PBXBuildFile; fileRef = A97961F22328063700299006 /* strip_debug_info_pass.cpp */; };
+		A979645F2328063700299006 /* ssa_rewrite_pass.cpp in Sources */ = {isa = PBXBuildFile; fileRef = A97961F32328063700299006 /* ssa_rewrite_pass.cpp */; };
+		A97964602328063700299006 /* ssa_rewrite_pass.cpp in Sources */ = {isa = PBXBuildFile; fileRef = A97961F32328063700299006 /* ssa_rewrite_pass.cpp */; };
+		A97964612328063700299006 /* loop_dependence.cpp in Sources */ = {isa = PBXBuildFile; fileRef = A97961F42328063700299006 /* loop_dependence.cpp */; };
+		A97964622328063700299006 /* loop_dependence.cpp in Sources */ = {isa = PBXBuildFile; fileRef = A97961F42328063700299006 /* loop_dependence.cpp */; };
+		A97964632328063700299006 /* unify_const_pass.h in Headers */ = {isa = PBXBuildFile; fileRef = A97961F52328063700299006 /* unify_const_pass.h */; };
+		A97964642328063700299006 /* unify_const_pass.h in Headers */ = {isa = PBXBuildFile; fileRef = A97961F52328063700299006 /* unify_const_pass.h */; };
+		A97964652328063700299006 /* ir_loader.h in Headers */ = {isa = PBXBuildFile; fileRef = A97961F62328063700299006 /* ir_loader.h */; };
+		A97964662328063700299006 /* ir_loader.h in Headers */ = {isa = PBXBuildFile; fileRef = A97961F62328063700299006 /* ir_loader.h */; };
+		A97964672328063700299006 /* types.h in Headers */ = {isa = PBXBuildFile; fileRef = A97961F72328063700299006 /* types.h */; };
+		A97964682328063700299006 /* types.h in Headers */ = {isa = PBXBuildFile; fileRef = A97961F72328063700299006 /* types.h */; };
+		A97964692328063700299006 /* fold_spec_constant_op_and_composite_pass.h in Headers */ = {isa = PBXBuildFile; fileRef = A97961F82328063700299006 /* fold_spec_constant_op_and_composite_pass.h */; };
+		A979646A2328063700299006 /* fold_spec_constant_op_and_composite_pass.h in Headers */ = {isa = PBXBuildFile; fileRef = A97961F82328063700299006 /* fold_spec_constant_op_and_composite_pass.h */; };
+		A979646B2328063700299006 /* mem_pass.cpp in Sources */ = {isa = PBXBuildFile; fileRef = A97961F92328063700299006 /* mem_pass.cpp */; };
+		A979646C2328063700299006 /* mem_pass.cpp in Sources */ = {isa = PBXBuildFile; fileRef = A97961F92328063700299006 /* mem_pass.cpp */; };
+		A979646D2328063700299006 /* basic_block.h in Headers */ = {isa = PBXBuildFile; fileRef = A97961FA2328063700299006 /* basic_block.h */; };
+		A979646E2328063700299006 /* basic_block.h in Headers */ = {isa = PBXBuildFile; fileRef = A97961FA2328063700299006 /* basic_block.h */; };
+		A979646F2328063700299006 /* remove_duplicates_pass.cpp in Sources */ = {isa = PBXBuildFile; fileRef = A97961FB2328063700299006 /* remove_duplicates_pass.cpp */; };
+		A97964702328063700299006 /* remove_duplicates_pass.cpp in Sources */ = {isa = PBXBuildFile; fileRef = A97961FB2328063700299006 /* remove_duplicates_pass.cpp */; };
+		A97964712328063700299006 /* dead_variable_elimination.cpp in Sources */ = {isa = PBXBuildFile; fileRef = A97961FC2328063700299006 /* dead_variable_elimination.cpp */; };
+		A97964722328063700299006 /* dead_variable_elimination.cpp in Sources */ = {isa = PBXBuildFile; fileRef = A97961FC2328063700299006 /* dead_variable_elimination.cpp */; };
+		A97964732328063700299006 /* block_merge_pass.h in Headers */ = {isa = PBXBuildFile; fileRef = A97961FD2328063700299006 /* block_merge_pass.h */; };
+		A97964742328063700299006 /* block_merge_pass.h in Headers */ = {isa = PBXBuildFile; fileRef = A97961FD2328063700299006 /* block_merge_pass.h */; };
+		A97964752328063700299006 /* module.cpp in Sources */ = {isa = PBXBuildFile; fileRef = A97961FE2328063700299006 /* module.cpp */; };
+		A97964762328063700299006 /* module.cpp in Sources */ = {isa = PBXBuildFile; fileRef = A97961FE2328063700299006 /* module.cpp */; };
+		A97964772328063700299006 /* fold_spec_constant_op_and_composite_pass.cpp in Sources */ = {isa = PBXBuildFile; fileRef = A97961FF2328063700299006 /* fold_spec_constant_op_and_composite_pass.cpp */; };
+		A97964782328063700299006 /* fold_spec_constant_op_and_composite_pass.cpp in Sources */ = {isa = PBXBuildFile; fileRef = A97961FF2328063700299006 /* fold_spec_constant_op_and_composite_pass.cpp */; };
+		A97964792328063700299006 /* loop_unswitch_pass.cpp in Sources */ = {isa = PBXBuildFile; fileRef = A97962002328063700299006 /* loop_unswitch_pass.cpp */; };
+		A979647A2328063700299006 /* loop_unswitch_pass.cpp in Sources */ = {isa = PBXBuildFile; fileRef = A97962002328063700299006 /* loop_unswitch_pass.cpp */; };
+		A979647B2328063700299006 /* unify_const_pass.cpp in Sources */ = {isa = PBXBuildFile; fileRef = A97962012328063700299006 /* unify_const_pass.cpp */; };
+		A979647C2328063700299006 /* unify_const_pass.cpp in Sources */ = {isa = PBXBuildFile; fileRef = A97962012328063700299006 /* unify_const_pass.cpp */; };
+		A979647D2328063700299006 /* type_manager.cpp in Sources */ = {isa = PBXBuildFile; fileRef = A97962022328063700299006 /* type_manager.cpp */; };
+		A979647E2328063700299006 /* type_manager.cpp in Sources */ = {isa = PBXBuildFile; fileRef = A97962022328063700299006 /* type_manager.cpp */; };
+		A979647F2328063700299006 /* generate_webgpu_initializers_pass.cpp in Sources */ = {isa = PBXBuildFile; fileRef = A97962032328063700299006 /* generate_webgpu_initializers_pass.cpp */; };
+		A97964802328063700299006 /* generate_webgpu_initializers_pass.cpp in Sources */ = {isa = PBXBuildFile; fileRef = A97962032328063700299006 /* generate_webgpu_initializers_pass.cpp */; };
+		A97964812328063700299006 /* private_to_local_pass.h in Headers */ = {isa = PBXBuildFile; fileRef = A97962042328063700299006 /* private_to_local_pass.h */; };
+		A97964822328063700299006 /* private_to_local_pass.h in Headers */ = {isa = PBXBuildFile; fileRef = A97962042328063700299006 /* private_to_local_pass.h */; };
+		A97964832328063700299006 /* convert_to_half_pass.h in Headers */ = {isa = PBXBuildFile; fileRef = A97962052328063700299006 /* convert_to_half_pass.h */; };
+		A97964842328063700299006 /* convert_to_half_pass.h in Headers */ = {isa = PBXBuildFile; fileRef = A97962052328063700299006 /* convert_to_half_pass.h */; };
+		A97964852328063700299006 /* relax_float_ops_pass.h in Headers */ = {isa = PBXBuildFile; fileRef = A97962062328063700299006 /* relax_float_ops_pass.h */; };
+		A97964862328063700299006 /* relax_float_ops_pass.h in Headers */ = {isa = PBXBuildFile; fileRef = A97962062328063700299006 /* relax_float_ops_pass.h */; };
+		A97964872328063700299006 /* inline_pass.cpp in Sources */ = {isa = PBXBuildFile; fileRef = A97962072328063700299006 /* inline_pass.cpp */; };
+		A97964882328063700299006 /* inline_pass.cpp in Sources */ = {isa = PBXBuildFile; fileRef = A97962072328063700299006 /* inline_pass.cpp */; };
+		A97964892328063700299006 /* def_use_manager.h in Headers */ = {isa = PBXBuildFile; fileRef = A97962082328063700299006 /* def_use_manager.h */; };
+		A979648A2328063700299006 /* def_use_manager.h in Headers */ = {isa = PBXBuildFile; fileRef = A97962082328063700299006 /* def_use_manager.h */; };
+		A979648B2328063700299006 /* ir_loader.cpp in Sources */ = {isa = PBXBuildFile; fileRef = A97962092328063700299006 /* ir_loader.cpp */; };
+		A979648C2328063700299006 /* ir_loader.cpp in Sources */ = {isa = PBXBuildFile; fileRef = A97962092328063700299006 /* ir_loader.cpp */; };
+		A979648D2328063700299006 /* cfg_cleanup_pass.h in Headers */ = {isa = PBXBuildFile; fileRef = A979620A2328063700299006 /* cfg_cleanup_pass.h */; };
+		A979648E2328063700299006 /* cfg_cleanup_pass.h in Headers */ = {isa = PBXBuildFile; fileRef = A979620A2328063700299006 /* cfg_cleanup_pass.h */; };
+		A979648F2328063700299006 /* licm_pass.cpp in Sources */ = {isa = PBXBuildFile; fileRef = A979620B2328063700299006 /* licm_pass.cpp */; };
+		A97964902328063700299006 /* licm_pass.cpp in Sources */ = {isa = PBXBuildFile; fileRef = A979620B2328063700299006 /* licm_pass.cpp */; };
+		A97964912328063700299006 /* eliminate_dead_functions_pass.cpp in Sources */ = {isa = PBXBuildFile; fileRef = A979620C2328063700299006 /* eliminate_dead_functions_pass.cpp */; };
+		A97964922328063700299006 /* eliminate_dead_functions_pass.cpp in Sources */ = {isa = PBXBuildFile; fileRef = A979620C2328063700299006 /* eliminate_dead_functions_pass.cpp */; };
+		A97964932328063700299006 /* local_redundancy_elimination.h in Headers */ = {isa = PBXBuildFile; fileRef = A979620D2328063700299006 /* local_redundancy_elimination.h */; };
+		A97964942328063700299006 /* local_redundancy_elimination.h in Headers */ = {isa = PBXBuildFile; fileRef = A979620D2328063700299006 /* local_redundancy_elimination.h */; };
+		A97964952328063700299006 /* split_invalid_unreachable_pass.cpp in Sources */ = {isa = PBXBuildFile; fileRef = A979620E2328063700299006 /* split_invalid_unreachable_pass.cpp */; };
+		A97964962328063700299006 /* split_invalid_unreachable_pass.cpp in Sources */ = {isa = PBXBuildFile; fileRef = A979620E2328063700299006 /* split_invalid_unreachable_pass.cpp */; };
+		A97964972328063700299006 /* loop_peeling.h in Headers */ = {isa = PBXBuildFile; fileRef = A979620F2328063700299006 /* loop_peeling.h */; };
+		A97964982328063700299006 /* loop_peeling.h in Headers */ = {isa = PBXBuildFile; fileRef = A979620F2328063700299006 /* loop_peeling.h */; };
+		A97964992328063700299006 /* vector_dce.cpp in Sources */ = {isa = PBXBuildFile; fileRef = A97962102328063700299006 /* vector_dce.cpp */; };
+		A979649A2328063700299006 /* vector_dce.cpp in Sources */ = {isa = PBXBuildFile; fileRef = A97962102328063700299006 /* vector_dce.cpp */; };
+		A979649B2328063700299006 /* block_merge_util.h in Headers */ = {isa = PBXBuildFile; fileRef = A97962112328063700299006 /* block_merge_util.h */; };
+		A979649C2328063700299006 /* block_merge_util.h in Headers */ = {isa = PBXBuildFile; fileRef = A97962112328063700299006 /* block_merge_util.h */; };
+		A979649D2328063700299006 /* loop_unroller.cpp in Sources */ = {isa = PBXBuildFile; fileRef = A97962122328063700299006 /* loop_unroller.cpp */; };
+		A979649E2328063700299006 /* loop_unroller.cpp in Sources */ = {isa = PBXBuildFile; fileRef = A97962122328063700299006 /* loop_unroller.cpp */; };
+		A979649F2328063700299006 /* desc_sroa.h in Headers */ = {isa = PBXBuildFile; fileRef = A97962132328063700299006 /* desc_sroa.h */; };
+		A97964A02328063700299006 /* desc_sroa.h in Headers */ = {isa = PBXBuildFile; fileRef = A97962132328063700299006 /* desc_sroa.h */; };
+		A97964A12328063700299006 /* constants.cpp in Sources */ = {isa = PBXBuildFile; fileRef = A97962142328063700299006 /* constants.cpp */; };
+		A97964A22328063700299006 /* constants.cpp in Sources */ = {isa = PBXBuildFile; fileRef = A97962142328063700299006 /* constants.cpp */; };
+		A97964A32328063700299006 /* loop_fusion_pass.h in Headers */ = {isa = PBXBuildFile; fileRef = A97962152328063700299006 /* loop_fusion_pass.h */; };
+		A97964A42328063700299006 /* loop_fusion_pass.h in Headers */ = {isa = PBXBuildFile; fileRef = A97962152328063700299006 /* loop_fusion_pass.h */; };
+		A97964A52328063700299006 /* struct_cfg_analysis.h in Headers */ = {isa = PBXBuildFile; fileRef = A97962162328063700299006 /* struct_cfg_analysis.h */; };
+		A97964A62328063700299006 /* struct_cfg_analysis.h in Headers */ = {isa = PBXBuildFile; fileRef = A97962162328063700299006 /* struct_cfg_analysis.h */; };
+		A97964A72328063700299006 /* inst_buff_addr_check_pass.cpp in Sources */ = {isa = PBXBuildFile; fileRef = A97962172328063700299006 /* inst_buff_addr_check_pass.cpp */; };
+		A97964A82328063700299006 /* inst_buff_addr_check_pass.cpp in Sources */ = {isa = PBXBuildFile; fileRef = A97962172328063700299006 /* inst_buff_addr_check_pass.cpp */; };
+		A97964A92328063700299006 /* def_use_manager.cpp in Sources */ = {isa = PBXBuildFile; fileRef = A97962182328063700299006 /* def_use_manager.cpp */; };
+		A97964AA2328063700299006 /* def_use_manager.cpp in Sources */ = {isa = PBXBuildFile; fileRef = A97962182328063700299006 /* def_use_manager.cpp */; };
+		A97964AB2328063700299006 /* wrap_opkill.h in Headers */ = {isa = PBXBuildFile; fileRef = A97962192328063700299006 /* wrap_opkill.h */; };
+		A97964AC2328063700299006 /* wrap_opkill.h in Headers */ = {isa = PBXBuildFile; fileRef = A97962192328063700299006 /* wrap_opkill.h */; };
+		A97964AD2328063700299006 /* strip_reflect_info_pass.cpp in Sources */ = {isa = PBXBuildFile; fileRef = A979621A2328063700299006 /* strip_reflect_info_pass.cpp */; };
+		A97964AE2328063700299006 /* strip_reflect_info_pass.cpp in Sources */ = {isa = PBXBuildFile; fileRef = A979621A2328063700299006 /* strip_reflect_info_pass.cpp */; };
+		A97964AF2328063700299006 /* decoration_manager.h in Headers */ = {isa = PBXBuildFile; fileRef = A979621B2328063700299006 /* decoration_manager.h */; };
+		A97964B02328063700299006 /* decoration_manager.h in Headers */ = {isa = PBXBuildFile; fileRef = A979621B2328063700299006 /* decoration_manager.h */; };
+		A97964B12328063700299006 /* ccp_pass.cpp in Sources */ = {isa = PBXBuildFile; fileRef = A979621C2328063700299006 /* ccp_pass.cpp */; };
+		A97964B22328063700299006 /* ccp_pass.cpp in Sources */ = {isa = PBXBuildFile; fileRef = A979621C2328063700299006 /* ccp_pass.cpp */; };
+		A97964B32328063700299006 /* process_lines_pass.h in Headers */ = {isa = PBXBuildFile; fileRef = A979621D2328063700299006 /* process_lines_pass.h */; };
+		A97964B42328063700299006 /* process_lines_pass.h in Headers */ = {isa = PBXBuildFile; fileRef = A979621D2328063700299006 /* process_lines_pass.h */; };
+		A97964B52328063700299006 /* local_single_block_elim_pass.h in Headers */ = {isa = PBXBuildFile; fileRef = A979621E2328063700299006 /* local_single_block_elim_pass.h */; };
+		A97964B62328063700299006 /* local_single_block_elim_pass.h in Headers */ = {isa = PBXBuildFile; fileRef = A979621E2328063700299006 /* local_single_block_elim_pass.h */; };
+		A97964B72328063700299006 /* pch_source_opt.cpp in Sources */ = {isa = PBXBuildFile; fileRef = A979621F2328063700299006 /* pch_source_opt.cpp */; };
+		A97964B82328063700299006 /* pch_source_opt.cpp in Sources */ = {isa = PBXBuildFile; fileRef = A979621F2328063700299006 /* pch_source_opt.cpp */; };
+		A97964B92328063700299006 /* inst_buff_addr_check_pass.h in Headers */ = {isa = PBXBuildFile; fileRef = A97962202328063700299006 /* inst_buff_addr_check_pass.h */; };
+		A97964BA2328063700299006 /* inst_buff_addr_check_pass.h in Headers */ = {isa = PBXBuildFile; fileRef = A97962202328063700299006 /* inst_buff_addr_check_pass.h */; };
+		A97964BB2328063700299006 /* strength_reduction_pass.h in Headers */ = {isa = PBXBuildFile; fileRef = A97962212328063700299006 /* strength_reduction_pass.h */; };
+		A97964BC2328063700299006 /* strength_reduction_pass.h in Headers */ = {isa = PBXBuildFile; fileRef = A97962212328063700299006 /* strength_reduction_pass.h */; };
+		A97964BD2328063700299006 /* aggressive_dead_code_elim_pass.cpp in Sources */ = {isa = PBXBuildFile; fileRef = A97962222328063700299006 /* aggressive_dead_code_elim_pass.cpp */; };
+		A97964BE2328063700299006 /* aggressive_dead_code_elim_pass.cpp in Sources */ = {isa = PBXBuildFile; fileRef = A97962222328063700299006 /* aggressive_dead_code_elim_pass.cpp */; };
+		A97964BF2328063700299006 /* eliminate_dead_functions_util.cpp in Sources */ = {isa = PBXBuildFile; fileRef = A97962232328063700299006 /* eliminate_dead_functions_util.cpp */; };
+		A97964C02328063700299006 /* eliminate_dead_functions_util.cpp in Sources */ = {isa = PBXBuildFile; fileRef = A97962232328063700299006 /* eliminate_dead_functions_util.cpp */; };
+		A97964C12328063700299006 /* simplification_pass.cpp in Sources */ = {isa = PBXBuildFile; fileRef = A97962242328063700299006 /* simplification_pass.cpp */; };
+		A97964C22328063700299006 /* simplification_pass.cpp in Sources */ = {isa = PBXBuildFile; fileRef = A97962242328063700299006 /* simplification_pass.cpp */; };
+		A97964C32328063700299006 /* dead_branch_elim_pass.cpp in Sources */ = {isa = PBXBuildFile; fileRef = A97962252328063700299006 /* dead_branch_elim_pass.cpp */; };
+		A97964C42328063700299006 /* dead_branch_elim_pass.cpp in Sources */ = {isa = PBXBuildFile; fileRef = A97962252328063700299006 /* dead_branch_elim_pass.cpp */; };
+		A97964C52328063700299006 /* flatten_decoration_pass.cpp in Sources */ = {isa = PBXBuildFile; fileRef = A97962262328063700299006 /* flatten_decoration_pass.cpp */; };
+		A97964C62328063700299006 /* flatten_decoration_pass.cpp in Sources */ = {isa = PBXBuildFile; fileRef = A97962262328063700299006 /* flatten_decoration_pass.cpp */; };
+		A97964C72328063700299006 /* dead_insert_elim_pass.h in Headers */ = {isa = PBXBuildFile; fileRef = A97962272328063700299006 /* dead_insert_elim_pass.h */; };
+		A97964C82328063700299006 /* dead_insert_elim_pass.h in Headers */ = {isa = PBXBuildFile; fileRef = A97962272328063700299006 /* dead_insert_elim_pass.h */; };
+		A97964C92328063700299006 /* folding_rules.cpp in Sources */ = {isa = PBXBuildFile; fileRef = A97962282328063700299006 /* folding_rules.cpp */; };
+		A97964CA2328063700299006 /* folding_rules.cpp in Sources */ = {isa = PBXBuildFile; fileRef = A97962282328063700299006 /* folding_rules.cpp */; };
+		A97964CB2328063700299006 /* freeze_spec_constant_value_pass.h in Headers */ = {isa = PBXBuildFile; fileRef = A97962292328063700299006 /* freeze_spec_constant_value_pass.h */; };
+		A97964CC2328063700299006 /* freeze_spec_constant_value_pass.h in Headers */ = {isa = PBXBuildFile; fileRef = A97962292328063700299006 /* freeze_spec_constant_value_pass.h */; };
+		A97964CD2328063700299006 /* ir_context.cpp in Sources */ = {isa = PBXBuildFile; fileRef = A979622A2328063700299006 /* ir_context.cpp */; };
+		A97964CE2328063700299006 /* ir_context.cpp in Sources */ = {isa = PBXBuildFile; fileRef = A979622A2328063700299006 /* ir_context.cpp */; };
+		A97964CF2328063700299006 /* instrument_pass.h in Headers */ = {isa = PBXBuildFile; fileRef = A979622B2328063700299006 /* instrument_pass.h */; };
+		A97964D02328063700299006 /* instrument_pass.h in Headers */ = {isa = PBXBuildFile; fileRef = A979622B2328063700299006 /* instrument_pass.h */; };
+		A97964D12328063700299006 /* mem_pass.h in Headers */ = {isa = PBXBuildFile; fileRef = A979622C2328063700299006 /* mem_pass.h */; };
+		A97964D22328063700299006 /* mem_pass.h in Headers */ = {isa = PBXBuildFile; fileRef = A979622C2328063700299006 /* mem_pass.h */; };
+		A97964D32328063700299006 /* loop_descriptor.cpp in Sources */ = {isa = PBXBuildFile; fileRef = A979622D2328063700299006 /* loop_descriptor.cpp */; };
+		A97964D42328063700299006 /* loop_descriptor.cpp in Sources */ = {isa = PBXBuildFile; fileRef = A979622D2328063700299006 /* loop_descriptor.cpp */; };
+		A97964D52328063700299006 /* local_ssa_elim_pass.cpp in Sources */ = {isa = PBXBuildFile; fileRef = A979622E2328063700299006 /* local_ssa_elim_pass.cpp */; };
+		A97964D62328063700299006 /* local_ssa_elim_pass.cpp in Sources */ = {isa = PBXBuildFile; fileRef = A979622E2328063700299006 /* local_ssa_elim_pass.cpp */; };
+		A97964D72328063700299006 /* eliminate_dead_members_pass.h in Headers */ = {isa = PBXBuildFile; fileRef = A979622F2328063700299006 /* eliminate_dead_members_pass.h */; };
+		A97964D82328063700299006 /* eliminate_dead_members_pass.h in Headers */ = {isa = PBXBuildFile; fileRef = A979622F2328063700299006 /* eliminate_dead_members_pass.h */; };
+		A97964D92328063700299006 /* function.cpp in Sources */ = {isa = PBXBuildFile; fileRef = A97962302328063700299006 /* function.cpp */; };
+		A97964DA2328063700299006 /* function.cpp in Sources */ = {isa = PBXBuildFile; fileRef = A97962302328063700299006 /* function.cpp */; };
+		A97964DB2328063700299006 /* instruction_list.cpp in Sources */ = {isa = PBXBuildFile; fileRef = A97962312328063700299006 /* instruction_list.cpp */; };
+		A97964DC2328063700299006 /* instruction_list.cpp in Sources */ = {isa = PBXBuildFile; fileRef = A97962312328063700299006 /* instruction_list.cpp */; };
+		A97964DD2328063700299006 /* composite.cpp in Sources */ = {isa = PBXBuildFile; fileRef = A97962322328063700299006 /* composite.cpp */; };
+		A97964DE2328063700299006 /* composite.cpp in Sources */ = {isa = PBXBuildFile; fileRef = A97962322328063700299006 /* composite.cpp */; };
+		A97964DF2328063700299006 /* convert_to_half_pass.cpp in Sources */ = {isa = PBXBuildFile; fileRef = A97962332328063700299006 /* convert_to_half_pass.cpp */; };
+		A97964E02328063700299006 /* convert_to_half_pass.cpp in Sources */ = {isa = PBXBuildFile; fileRef = A97962332328063700299006 /* convert_to_half_pass.cpp */; };
+		A97964E12328063700299006 /* process_lines_pass.cpp in Sources */ = {isa = PBXBuildFile; fileRef = A97962342328063700299006 /* process_lines_pass.cpp */; };
+		A97964E22328063700299006 /* process_lines_pass.cpp in Sources */ = {isa = PBXBuildFile; fileRef = A97962342328063700299006 /* process_lines_pass.cpp */; };
+		A97964E32328063700299006 /* inline_pass.h in Headers */ = {isa = PBXBuildFile; fileRef = A97962352328063700299006 /* inline_pass.h */; };
+		A97964E42328063700299006 /* inline_pass.h in Headers */ = {isa = PBXBuildFile; fileRef = A97962352328063700299006 /* inline_pass.h */; };
+		A97964E52328063700299006 /* loop_dependence.h in Headers */ = {isa = PBXBuildFile; fileRef = A97962362328063700299006 /* loop_dependence.h */; };
+		A97964E62328063700299006 /* loop_dependence.h in Headers */ = {isa = PBXBuildFile; fileRef = A97962362328063700299006 /* loop_dependence.h */; };
+		A97964E72328063700299006 /* value_number_table.h in Headers */ = {isa = PBXBuildFile; fileRef = A97962372328063700299006 /* value_number_table.h */; };
+		A97964E82328063700299006 /* value_number_table.h in Headers */ = {isa = PBXBuildFile; fileRef = A97962372328063700299006 /* value_number_table.h */; };
+		A97964E92328063700299006 /* flatten_decoration_pass.h in Headers */ = {isa = PBXBuildFile; fileRef = A97962382328063700299006 /* flatten_decoration_pass.h */; };
+		A97964EA2328063700299006 /* flatten_decoration_pass.h in Headers */ = {isa = PBXBuildFile; fileRef = A97962382328063700299006 /* flatten_decoration_pass.h */; };
+		A97964EB2328063700299006 /* if_conversion.cpp in Sources */ = {isa = PBXBuildFile; fileRef = A97962392328063700299006 /* if_conversion.cpp */; };
+		A97964EC2328063700299006 /* if_conversion.cpp in Sources */ = {isa = PBXBuildFile; fileRef = A97962392328063700299006 /* if_conversion.cpp */; };
+		A97964ED2328063700299006 /* inline_exhaustive_pass.h in Headers */ = {isa = PBXBuildFile; fileRef = A979623A2328063700299006 /* inline_exhaustive_pass.h */; };
+		A97964EE2328063700299006 /* inline_exhaustive_pass.h in Headers */ = {isa = PBXBuildFile; fileRef = A979623A2328063700299006 /* inline_exhaustive_pass.h */; };
+		A97964EF2328063700299006 /* constants.h in Headers */ = {isa = PBXBuildFile; fileRef = A979623B2328063700299006 /* constants.h */; };
+		A97964F02328063700299006 /* constants.h in Headers */ = {isa = PBXBuildFile; fileRef = A979623B2328063700299006 /* constants.h */; };
+		A97964F12328063700299006 /* eliminate_dead_members_pass.cpp in Sources */ = {isa = PBXBuildFile; fileRef = A979623C2328063700299006 /* eliminate_dead_members_pass.cpp */; };
+		A97964F22328063700299006 /* eliminate_dead_members_pass.cpp in Sources */ = {isa = PBXBuildFile; fileRef = A979623C2328063700299006 /* eliminate_dead_members_pass.cpp */; };
+		A97964F32328063700299006 /* strength_reduction_pass.cpp in Sources */ = {isa = PBXBuildFile; fileRef = A979623D2328063700299006 /* strength_reduction_pass.cpp */; };
+		A97964F42328063700299006 /* strength_reduction_pass.cpp in Sources */ = {isa = PBXBuildFile; fileRef = A979623D2328063700299006 /* strength_reduction_pass.cpp */; };
+		A97964F52328063700299006 /* desc_sroa.cpp in Sources */ = {isa = PBXBuildFile; fileRef = A979623E2328063700299006 /* desc_sroa.cpp */; };
+		A97964F62328063700299006 /* desc_sroa.cpp in Sources */ = {isa = PBXBuildFile; fileRef = A979623E2328063700299006 /* desc_sroa.cpp */; };
+		A97964F72328063700299006 /* block_merge_util.cpp in Sources */ = {isa = PBXBuildFile; fileRef = A979623F2328063700299006 /* block_merge_util.cpp */; };
+		A97964F82328063700299006 /* block_merge_util.cpp in Sources */ = {isa = PBXBuildFile; fileRef = A979623F2328063700299006 /* block_merge_util.cpp */; };
+		A97964F92328063700299006 /* upgrade_memory_model.h in Headers */ = {isa = PBXBuildFile; fileRef = A97962402328063700299006 /* upgrade_memory_model.h */; };
+		A97964FA2328063700299006 /* upgrade_memory_model.h in Headers */ = {isa = PBXBuildFile; fileRef = A97962402328063700299006 /* upgrade_memory_model.h */; };
+		A97964FB2328063700299006 /* copy_prop_arrays.cpp in Sources */ = {isa = PBXBuildFile; fileRef = A97962412328063700299006 /* copy_prop_arrays.cpp */; };
+		A97964FC2328063700299006 /* copy_prop_arrays.cpp in Sources */ = {isa = PBXBuildFile; fileRef = A97962412328063700299006 /* copy_prop_arrays.cpp */; };
+		A97964FD2328063700299006 /* pass_manager.cpp in Sources */ = {isa = PBXBuildFile; fileRef = A97962422328063700299006 /* pass_manager.cpp */; };
+		A97964FE2328063700299006 /* pass_manager.cpp in Sources */ = {isa = PBXBuildFile; fileRef = A97962422328063700299006 /* pass_manager.cpp */; };
+		A97964FF2328063700299006 /* inline_exhaustive_pass.cpp in Sources */ = {isa = PBXBuildFile; fileRef = A97962432328063700299006 /* inline_exhaustive_pass.cpp */; };
+		A97965002328063700299006 /* inline_exhaustive_pass.cpp in Sources */ = {isa = PBXBuildFile; fileRef = A97962432328063700299006 /* inline_exhaustive_pass.cpp */; };
+		A97965012328063700299006 /* loop_fission.h in Headers */ = {isa = PBXBuildFile; fileRef = A97962442328063700299006 /* loop_fission.h */; };
+		A97965022328063700299006 /* loop_fission.h in Headers */ = {isa = PBXBuildFile; fileRef = A97962442328063700299006 /* loop_fission.h */; };
+		A97965032328063700299006 /* workaround1209.h in Headers */ = {isa = PBXBuildFile; fileRef = A97962452328063700299006 /* workaround1209.h */; };
+		A97965042328063700299006 /* workaround1209.h in Headers */ = {isa = PBXBuildFile; fileRef = A97962452328063700299006 /* workaround1209.h */; };
+		A97965052328063700299006 /* loop_fusion_pass.cpp in Sources */ = {isa = PBXBuildFile; fileRef = A97962462328063700299006 /* loop_fusion_pass.cpp */; };
+		A97965062328063700299006 /* loop_fusion_pass.cpp in Sources */ = {isa = PBXBuildFile; fileRef = A97962462328063700299006 /* loop_fusion_pass.cpp */; };
+		A97965072328063700299006 /* log.h in Headers */ = {isa = PBXBuildFile; fileRef = A97962472328063700299006 /* log.h */; };
+		A97965082328063700299006 /* log.h in Headers */ = {isa = PBXBuildFile; fileRef = A97962472328063700299006 /* log.h */; };
+		A97965092328063700299006 /* split_invalid_unreachable_pass.h in Headers */ = {isa = PBXBuildFile; fileRef = A97962482328063700299006 /* split_invalid_unreachable_pass.h */; };
+		A979650A2328063700299006 /* split_invalid_unreachable_pass.h in Headers */ = {isa = PBXBuildFile; fileRef = A97962482328063700299006 /* split_invalid_unreachable_pass.h */; };
+		A979650B2328063700299006 /* copy_prop_arrays.h in Headers */ = {isa = PBXBuildFile; fileRef = A97962492328063700299006 /* copy_prop_arrays.h */; };
+		A979650C2328063700299006 /* copy_prop_arrays.h in Headers */ = {isa = PBXBuildFile; fileRef = A97962492328063700299006 /* copy_prop_arrays.h */; };
+		A979650D2328063700299006 /* eliminate_dead_constant_pass.h in Headers */ = {isa = PBXBuildFile; fileRef = A979624A2328063700299006 /* eliminate_dead_constant_pass.h */; };
+		A979650E2328063700299006 /* eliminate_dead_constant_pass.h in Headers */ = {isa = PBXBuildFile; fileRef = A979624A2328063700299006 /* eliminate_dead_constant_pass.h */; };
+		A979650F2328063700299006 /* dead_insert_elim_pass.cpp in Sources */ = {isa = PBXBuildFile; fileRef = A979624B2328063700299006 /* dead_insert_elim_pass.cpp */; };
+		A97965102328063700299006 /* dead_insert_elim_pass.cpp in Sources */ = {isa = PBXBuildFile; fileRef = A979624B2328063700299006 /* dead_insert_elim_pass.cpp */; };
+		A97965112328063700299006 /* ssa_rewrite_pass.h in Headers */ = {isa = PBXBuildFile; fileRef = A979624C2328063700299006 /* ssa_rewrite_pass.h */; };
+		A97965122328063700299006 /* ssa_rewrite_pass.h in Headers */ = {isa = PBXBuildFile; fileRef = A979624C2328063700299006 /* ssa_rewrite_pass.h */; };
+		A97965132328063700299006 /* scalar_analysis.cpp in Sources */ = {isa = PBXBuildFile; fileRef = A979624D2328063700299006 /* scalar_analysis.cpp */; };
+		A97965142328063700299006 /* scalar_analysis.cpp in Sources */ = {isa = PBXBuildFile; fileRef = A979624D2328063700299006 /* scalar_analysis.cpp */; };
+		A97965152328063700299006 /* dead_variable_elimination.h in Headers */ = {isa = PBXBuildFile; fileRef = A979624E2328063700299006 /* dead_variable_elimination.h */; };
+		A97965162328063700299006 /* dead_variable_elimination.h in Headers */ = {isa = PBXBuildFile; fileRef = A979624E2328063700299006 /* dead_variable_elimination.h */; };
+		A97965172328063700299006 /* block_merge_pass.cpp in Sources */ = {isa = PBXBuildFile; fileRef = A979624F2328063700299006 /* block_merge_pass.cpp */; };
+		A97965182328063700299006 /* block_merge_pass.cpp in Sources */ = {isa = PBXBuildFile; fileRef = A979624F2328063700299006 /* block_merge_pass.cpp */; };
+		A97965192328063700299006 /* dominator_analysis.h in Headers */ = {isa = PBXBuildFile; fileRef = A97962502328063700299006 /* dominator_analysis.h */; };
+		A979651A2328063700299006 /* dominator_analysis.h in Headers */ = {isa = PBXBuildFile; fileRef = A97962502328063700299006 /* dominator_analysis.h */; };
+		A979651B2328063700299006 /* pass.h in Headers */ = {isa = PBXBuildFile; fileRef = A97962512328063700299006 /* pass.h */; };
+		A979651C2328063700299006 /* pass.h in Headers */ = {isa = PBXBuildFile; fileRef = A97962512328063700299006 /* pass.h */; };
+		A979651D2328063700299006 /* folding_rules.h in Headers */ = {isa = PBXBuildFile; fileRef = A97962522328063700299006 /* folding_rules.h */; };
+		A979651E2328063700299006 /* folding_rules.h in Headers */ = {isa = PBXBuildFile; fileRef = A97962522328063700299006 /* folding_rules.h */; };
+		A979651F2328063700299006 /* eliminate_dead_functions_pass.h in Headers */ = {isa = PBXBuildFile; fileRef = A97962532328063700299006 /* eliminate_dead_functions_pass.h */; };
+		A97965202328063700299006 /* eliminate_dead_functions_pass.h in Headers */ = {isa = PBXBuildFile; fileRef = A97962532328063700299006 /* eliminate_dead_functions_pass.h */; };
+		A97965212328063700299006 /* eliminate_dead_functions_util.h in Headers */ = {isa = PBXBuildFile; fileRef = A97962542328063700299006 /* eliminate_dead_functions_util.h */; };
+		A97965222328063700299006 /* eliminate_dead_functions_util.h in Headers */ = {isa = PBXBuildFile; fileRef = A97962542328063700299006 /* eliminate_dead_functions_util.h */; };
+		A97965232328063700299006 /* fold.h in Headers */ = {isa = PBXBuildFile; fileRef = A97962552328063700299006 /* fold.h */; };
+		A97965242328063700299006 /* fold.h in Headers */ = {isa = PBXBuildFile; fileRef = A97962552328063700299006 /* fold.h */; };
+		A97965252328063700299006 /* local_single_store_elim_pass.cpp in Sources */ = {isa = PBXBuildFile; fileRef = A97962562328063700299006 /* local_single_store_elim_pass.cpp */; };
+		A97965262328063700299006 /* local_single_store_elim_pass.cpp in Sources */ = {isa = PBXBuildFile; fileRef = A97962562328063700299006 /* local_single_store_elim_pass.cpp */; };
+		A97965272328063700299006 /* dead_branch_elim_pass.h in Headers */ = {isa = PBXBuildFile; fileRef = A97962572328063700299006 /* dead_branch_elim_pass.h */; };
+		A97965282328063700299006 /* dead_branch_elim_pass.h in Headers */ = {isa = PBXBuildFile; fileRef = A97962572328063700299006 /* dead_branch_elim_pass.h */; };
+		A97965292328063700299006 /* private_to_local_pass.cpp in Sources */ = {isa = PBXBuildFile; fileRef = A97962582328063700299006 /* private_to_local_pass.cpp */; };
+		A979652A2328063700299006 /* private_to_local_pass.cpp in Sources */ = {isa = PBXBuildFile; fileRef = A97962582328063700299006 /* private_to_local_pass.cpp */; };
+		A979652B2328063700299006 /* scalar_analysis_nodes.h in Headers */ = {isa = PBXBuildFile; fileRef = A97962592328063700299006 /* scalar_analysis_nodes.h */; };
+		A979652C2328063700299006 /* scalar_analysis_nodes.h in Headers */ = {isa = PBXBuildFile; fileRef = A97962592328063700299006 /* scalar_analysis_nodes.h */; };
+		A979652D2328063700299006 /* propagator.cpp in Sources */ = {isa = PBXBuildFile; fileRef = A979625A2328063700299006 /* propagator.cpp */; };
+		A979652E2328063700299006 /* propagator.cpp in Sources */ = {isa = PBXBuildFile; fileRef = A979625A2328063700299006 /* propagator.cpp */; };
+		A979652F2328063700299006 /* fix_storage_class.h in Headers */ = {isa = PBXBuildFile; fileRef = A979625B2328063700299006 /* fix_storage_class.h */; };
+		A97965302328063700299006 /* fix_storage_class.h in Headers */ = {isa = PBXBuildFile; fileRef = A979625B2328063700299006 /* fix_storage_class.h */; };
+		A97965312328063700299006 /* loop_dependence_helpers.cpp in Sources */ = {isa = PBXBuildFile; fileRef = A979625C2328063700299006 /* loop_dependence_helpers.cpp */; };
+		A97965322328063700299006 /* loop_dependence_helpers.cpp in Sources */ = {isa = PBXBuildFile; fileRef = A979625C2328063700299006 /* loop_dependence_helpers.cpp */; };
+		A97965332328063700299006 /* set_spec_constant_default_value_pass.cpp in Sources */ = {isa = PBXBuildFile; fileRef = A979625D2328063700299006 /* set_spec_constant_default_value_pass.cpp */; };
+		A97965342328063700299006 /* set_spec_constant_default_value_pass.cpp in Sources */ = {isa = PBXBuildFile; fileRef = A979625D2328063700299006 /* set_spec_constant_default_value_pass.cpp */; };
+		A97965352328063700299006 /* passes.h in Headers */ = {isa = PBXBuildFile; fileRef = A979625E2328063700299006 /* passes.h */; };
+		A97965362328063700299006 /* passes.h in Headers */ = {isa = PBXBuildFile; fileRef = A979625E2328063700299006 /* passes.h */; };
+		A97965372328063700299006 /* fold.cpp in Sources */ = {isa = PBXBuildFile; fileRef = A979625F2328063700299006 /* fold.cpp */; };
+		A97965382328063700299006 /* fold.cpp in Sources */ = {isa = PBXBuildFile; fileRef = A979625F2328063700299006 /* fold.cpp */; };
+		A97965392328063700299006 /* amd_ext_to_khr.cpp in Sources */ = {isa = PBXBuildFile; fileRef = A97962602328063700299006 /* amd_ext_to_khr.cpp */; };
+		A979653A2328063700299006 /* amd_ext_to_khr.cpp in Sources */ = {isa = PBXBuildFile; fileRef = A97962602328063700299006 /* amd_ext_to_khr.cpp */; };
+		A979653B2328063700299006 /* strip_reflect_info_pass.h in Headers */ = {isa = PBXBuildFile; fileRef = A97962612328063700299006 /* strip_reflect_info_pass.h */; };
+		A979653C2328063700299006 /* strip_reflect_info_pass.h in Headers */ = {isa = PBXBuildFile; fileRef = A97962612328063700299006 /* strip_reflect_info_pass.h */; };
+		A979653D2328063700299006 /* scalar_replacement_pass.cpp in Sources */ = {isa = PBXBuildFile; fileRef = A97962622328063700299006 /* scalar_replacement_pass.cpp */; };
+		A979653E2328063700299006 /* scalar_replacement_pass.cpp in Sources */ = {isa = PBXBuildFile; fileRef = A97962622328063700299006 /* scalar_replacement_pass.cpp */; };
+		A979653F2328063700299006 /* simplification_pass.h in Headers */ = {isa = PBXBuildFile; fileRef = A97962632328063700299006 /* simplification_pass.h */; };
+		A97965402328063700299006 /* simplification_pass.h in Headers */ = {isa = PBXBuildFile; fileRef = A97962632328063700299006 /* simplification_pass.h */; };
+		A97965412328063700299006 /* remove_duplicates_pass.h in Headers */ = {isa = PBXBuildFile; fileRef = A97962642328063700299006 /* remove_duplicates_pass.h */; };
+		A97965422328063700299006 /* remove_duplicates_pass.h in Headers */ = {isa = PBXBuildFile; fileRef = A97962642328063700299006 /* remove_duplicates_pass.h */; };
+		A97965432328063700299006 /* redundancy_elimination.cpp in Sources */ = {isa = PBXBuildFile; fileRef = A97962652328063700299006 /* redundancy_elimination.cpp */; };
+		A97965442328063700299006 /* redundancy_elimination.cpp in Sources */ = {isa = PBXBuildFile; fileRef = A97962652328063700299006 /* redundancy_elimination.cpp */; };
+		A97965452328063700299006 /* reflect.h in Headers */ = {isa = PBXBuildFile; fileRef = A97962662328063700299006 /* reflect.h */; };
+		A97965462328063700299006 /* reflect.h in Headers */ = {isa = PBXBuildFile; fileRef = A97962662328063700299006 /* reflect.h */; };
+		A97965472328063700299006 /* workaround1209.cpp in Sources */ = {isa = PBXBuildFile; fileRef = A97962672328063700299006 /* workaround1209.cpp */; };
+		A97965482328063700299006 /* workaround1209.cpp in Sources */ = {isa = PBXBuildFile; fileRef = A97962672328063700299006 /* workaround1209.cpp */; };
+		A97965492328063700299006 /* null_pass.h in Headers */ = {isa = PBXBuildFile; fileRef = A97962682328063700299006 /* null_pass.h */; };
+		A979654A2328063700299006 /* null_pass.h in Headers */ = {isa = PBXBuildFile; fileRef = A97962682328063700299006 /* null_pass.h */; };
+		A979654B2328063700299006 /* relax_float_ops_pass.cpp in Sources */ = {isa = PBXBuildFile; fileRef = A97962692328063700299006 /* relax_float_ops_pass.cpp */; };
+		A979654C2328063700299006 /* relax_float_ops_pass.cpp in Sources */ = {isa = PBXBuildFile; fileRef = A97962692328063700299006 /* relax_float_ops_pass.cpp */; };
+		A979654D2328063700299006 /* const_folding_rules.h in Headers */ = {isa = PBXBuildFile; fileRef = A979626A2328063700299006 /* const_folding_rules.h */; };
+		A979654E2328063700299006 /* const_folding_rules.h in Headers */ = {isa = PBXBuildFile; fileRef = A979626A2328063700299006 /* const_folding_rules.h */; };
+		A979654F2328063700299006 /* scalar_replacement_pass.h in Headers */ = {isa = PBXBuildFile; fileRef = A979626B2328063700299006 /* scalar_replacement_pass.h */; };
+		A97965502328063700299006 /* scalar_replacement_pass.h in Headers */ = {isa = PBXBuildFile; fileRef = A979626B2328063700299006 /* scalar_replacement_pass.h */; };
+		A97965512328063700299006 /* instruction.cpp in Sources */ = {isa = PBXBuildFile; fileRef = A979626C2328063700299006 /* instruction.cpp */; };
+		A97965522328063700299006 /* instruction.cpp in Sources */ = {isa = PBXBuildFile; fileRef = A979626C2328063700299006 /* instruction.cpp */; };
+		A97965532328063700299006 /* pch_source_opt.h in Headers */ = {isa = PBXBuildFile; fileRef = A979626D2328063700299006 /* pch_source_opt.h */; };
+		A97965542328063700299006 /* pch_source_opt.h in Headers */ = {isa = PBXBuildFile; fileRef = A979626D2328063700299006 /* pch_source_opt.h */; };
+		A97965552328063700299006 /* reduce_load_size.cpp in Sources */ = {isa = PBXBuildFile; fileRef = A979626E2328063700299006 /* reduce_load_size.cpp */; };
+		A97965562328063700299006 /* reduce_load_size.cpp in Sources */ = {isa = PBXBuildFile; fileRef = A979626E2328063700299006 /* reduce_load_size.cpp */; };
+		A97965572328063700299006 /* redundancy_elimination.h in Headers */ = {isa = PBXBuildFile; fileRef = A979626F2328063700299006 /* redundancy_elimination.h */; };
+		A97965582328063700299006 /* redundancy_elimination.h in Headers */ = {isa = PBXBuildFile; fileRef = A979626F2328063700299006 /* redundancy_elimination.h */; };
+		A97965592328063700299006 /* fix_storage_class.cpp in Sources */ = {isa = PBXBuildFile; fileRef = A97962702328063700299006 /* fix_storage_class.cpp */; };
+		A979655A2328063700299006 /* fix_storage_class.cpp in Sources */ = {isa = PBXBuildFile; fileRef = A97962702328063700299006 /* fix_storage_class.cpp */; };
+		A979655B2328063700299006 /* value_number_table.cpp in Sources */ = {isa = PBXBuildFile; fileRef = A97962712328063700299006 /* value_number_table.cpp */; };
+		A979655C2328063700299006 /* value_number_table.cpp in Sources */ = {isa = PBXBuildFile; fileRef = A97962712328063700299006 /* value_number_table.cpp */; };
+		A979655D2328063700299006 /* local_ssa_elim_pass.h in Headers */ = {isa = PBXBuildFile; fileRef = A97962722328063700299006 /* local_ssa_elim_pass.h */; };
+		A979655E2328063700299006 /* local_ssa_elim_pass.h in Headers */ = {isa = PBXBuildFile; fileRef = A97962722328063700299006 /* local_ssa_elim_pass.h */; };
+		A979655F2328063700299006 /* inline_opaque_pass.cpp in Sources */ = {isa = PBXBuildFile; fileRef = A97962732328063700299006 /* inline_opaque_pass.cpp */; };
+		A97965602328063700299006 /* inline_opaque_pass.cpp in Sources */ = {isa = PBXBuildFile; fileRef = A97962732328063700299006 /* inline_opaque_pass.cpp */; };
+		A97965612328063700299006 /* replace_invalid_opc.cpp in Sources */ = {isa = PBXBuildFile; fileRef = A97962742328063700299006 /* replace_invalid_opc.cpp */; };
+		A97965622328063700299006 /* replace_invalid_opc.cpp in Sources */ = {isa = PBXBuildFile; fileRef = A97962742328063700299006 /* replace_invalid_opc.cpp */; };
+		A97965632328063700299006 /* loop_utils.h in Headers */ = {isa = PBXBuildFile; fileRef = A97962752328063700299006 /* loop_utils.h */; };
+		A97965642328063700299006 /* loop_utils.h in Headers */ = {isa = PBXBuildFile; fileRef = A97962752328063700299006 /* loop_utils.h */; };
+		A97965652328063700299006 /* module.h in Headers */ = {isa = PBXBuildFile; fileRef = A97962762328063700299006 /* module.h */; };
+		A97965662328063700299006 /* module.h in Headers */ = {isa = PBXBuildFile; fileRef = A97962762328063700299006 /* module.h */; };
+		A97965672328063700299006 /* dominator_analysis.cpp in Sources */ = {isa = PBXBuildFile; fileRef = A97962772328063700299006 /* dominator_analysis.cpp */; };
+		A97965682328063700299006 /* dominator_analysis.cpp in Sources */ = {isa = PBXBuildFile; fileRef = A97962772328063700299006 /* dominator_analysis.cpp */; };
+		A97965692328063700299006 /* decompose_initialized_variables_pass.cpp in Sources */ = {isa = PBXBuildFile; fileRef = A97962782328063700299006 /* decompose_initialized_variables_pass.cpp */; };
+		A979656A2328063700299006 /* decompose_initialized_variables_pass.cpp in Sources */ = {isa = PBXBuildFile; fileRef = A97962782328063700299006 /* decompose_initialized_variables_pass.cpp */; };
+		A979656B2328063700299006 /* ir_builder.h in Headers */ = {isa = PBXBuildFile; fileRef = A97962792328063700299006 /* ir_builder.h */; };
+		A979656C2328063700299006 /* ir_builder.h in Headers */ = {isa = PBXBuildFile; fileRef = A97962792328063700299006 /* ir_builder.h */; };
+		A979656D2328063700299006 /* loop_unswitch_pass.h in Headers */ = {isa = PBXBuildFile; fileRef = A979627A2328063700299006 /* loop_unswitch_pass.h */; };
+		A979656E2328063700299006 /* loop_unswitch_pass.h in Headers */ = {isa = PBXBuildFile; fileRef = A979627A2328063700299006 /* loop_unswitch_pass.h */; };
+		A979656F2328063700299006 /* cfg.h in Headers */ = {isa = PBXBuildFile; fileRef = A979627B2328063700299006 /* cfg.h */; };
+		A97965702328063700299006 /* cfg.h in Headers */ = {isa = PBXBuildFile; fileRef = A979627B2328063700299006 /* cfg.h */; };
+		A97965712328063700299006 /* code_sink.h in Headers */ = {isa = PBXBuildFile; fileRef = A979627C2328063700299006 /* code_sink.h */; };
+		A97965722328063700299006 /* code_sink.h in Headers */ = {isa = PBXBuildFile; fileRef = A979627C2328063700299006 /* code_sink.h */; };
+		A97965732328063700299006 /* loop_descriptor.h in Headers */ = {isa = PBXBuildFile; fileRef = A979627D2328063700299006 /* loop_descriptor.h */; };
+		A97965742328063700299006 /* loop_descriptor.h in Headers */ = {isa = PBXBuildFile; fileRef = A979627D2328063700299006 /* loop_descriptor.h */; };
+		A97965752328063700299006 /* generate_webgpu_initializers_pass.h in Headers */ = {isa = PBXBuildFile; fileRef = A979627E2328063700299006 /* generate_webgpu_initializers_pass.h */; };
+		A97965762328063700299006 /* generate_webgpu_initializers_pass.h in Headers */ = {isa = PBXBuildFile; fileRef = A979627E2328063700299006 /* generate_webgpu_initializers_pass.h */; };
+		A97965772328063700299006 /* instruction.h in Headers */ = {isa = PBXBuildFile; fileRef = A979627F2328063700299006 /* instruction.h */; };
+		A97965782328063700299006 /* instruction.h in Headers */ = {isa = PBXBuildFile; fileRef = A979627F2328063700299006 /* instruction.h */; };
+		A97965792328063700299006 /* aggressive_dead_code_elim_pass.h in Headers */ = {isa = PBXBuildFile; fileRef = A97962802328063700299006 /* aggressive_dead_code_elim_pass.h */; };
+		A979657A2328063700299006 /* aggressive_dead_code_elim_pass.h in Headers */ = {isa = PBXBuildFile; fileRef = A97962802328063700299006 /* aggressive_dead_code_elim_pass.h */; };
+		A979657B2328063700299006 /* struct_cfg_analysis.cpp in Sources */ = {isa = PBXBuildFile; fileRef = A97962812328063700299006 /* struct_cfg_analysis.cpp */; };
+		A979657C2328063700299006 /* struct_cfg_analysis.cpp in Sources */ = {isa = PBXBuildFile; fileRef = A97962812328063700299006 /* struct_cfg_analysis.cpp */; };
+		A979657D2328063700299006 /* vector_dce.h in Headers */ = {isa = PBXBuildFile; fileRef = A97962822328063700299006 /* vector_dce.h */; };
+		A979657E2328063700299006 /* vector_dce.h in Headers */ = {isa = PBXBuildFile; fileRef = A97962822328063700299006 /* vector_dce.h */; };
+		A979657F2328063700299006 /* combine_access_chains.h in Headers */ = {isa = PBXBuildFile; fileRef = A97962832328063700299006 /* combine_access_chains.h */; };
+		A97965802328063700299006 /* combine_access_chains.h in Headers */ = {isa = PBXBuildFile; fileRef = A97962832328063700299006 /* combine_access_chains.h */; };
+		A97965812328063700299006 /* pass_manager.h in Headers */ = {isa = PBXBuildFile; fileRef = A97962842328063700299006 /* pass_manager.h */; };
+		A97965822328063700299006 /* pass_manager.h in Headers */ = {isa = PBXBuildFile; fileRef = A97962842328063700299006 /* pass_manager.h */; };
+		A97965832328063700299006 /* local_access_chain_convert_pass.cpp in Sources */ = {isa = PBXBuildFile; fileRef = A97962852328063700299006 /* local_access_chain_convert_pass.cpp */; };
+		A97965842328063700299006 /* local_access_chain_convert_pass.cpp in Sources */ = {isa = PBXBuildFile; fileRef = A97962852328063700299006 /* local_access_chain_convert_pass.cpp */; };
+		A97965852328063700299006 /* basic_block.cpp in Sources */ = {isa = PBXBuildFile; fileRef = A97962862328063700299006 /* basic_block.cpp */; };
+		A97965862328063700299006 /* basic_block.cpp in Sources */ = {isa = PBXBuildFile; fileRef = A97962862328063700299006 /* basic_block.cpp */; };
+		A97965872328063700299006 /* iterator.h in Headers */ = {isa = PBXBuildFile; fileRef = A97962872328063700299006 /* iterator.h */; };
+		A97965882328063700299006 /* iterator.h in Headers */ = {isa = PBXBuildFile; fileRef = A97962872328063700299006 /* iterator.h */; };
+		A97965892328063700299006 /* licm_pass.h in Headers */ = {isa = PBXBuildFile; fileRef = A97962882328063700299006 /* licm_pass.h */; };
+		A979658A2328063700299006 /* licm_pass.h in Headers */ = {isa = PBXBuildFile; fileRef = A97962882328063700299006 /* licm_pass.h */; };
+		A979658B2328063700299006 /* build_module.h in Headers */ = {isa = PBXBuildFile; fileRef = A97962892328063700299006 /* build_module.h */; };
+		A979658C2328063700299006 /* build_module.h in Headers */ = {isa = PBXBuildFile; fileRef = A97962892328063700299006 /* build_module.h */; };
+		A979658D2328063700299006 /* ccp_pass.h in Headers */ = {isa = PBXBuildFile; fileRef = A979628A2328063700299006 /* ccp_pass.h */; };
+		A979658E2328063700299006 /* ccp_pass.h in Headers */ = {isa = PBXBuildFile; fileRef = A979628A2328063700299006 /* ccp_pass.h */; };
+		A979658F2328063700299006 /* graphics_robust_access_pass.cpp in Sources */ = {isa = PBXBuildFile; fileRef = A979628B2328063700299006 /* graphics_robust_access_pass.cpp */; };
+		A97965902328063700299006 /* graphics_robust_access_pass.cpp in Sources */ = {isa = PBXBuildFile; fileRef = A979628B2328063700299006 /* graphics_robust_access_pass.cpp */; };
+		A97965912328063700299006 /* decompose_initialized_variables_pass.h in Headers */ = {isa = PBXBuildFile; fileRef = A979628C2328063700299006 /* decompose_initialized_variables_pass.h */; };
+		A97965922328063700299006 /* decompose_initialized_variables_pass.h in Headers */ = {isa = PBXBuildFile; fileRef = A979628C2328063700299006 /* decompose_initialized_variables_pass.h */; };
+		A97965932328063700299006 /* function.h in Headers */ = {isa = PBXBuildFile; fileRef = A979628D2328063700299006 /* function.h */; };
+		A97965942328063800299006 /* function.h in Headers */ = {isa = PBXBuildFile; fileRef = A979628D2328063700299006 /* function.h */; };
+		A97965952328063800299006 /* loop_fusion.cpp in Sources */ = {isa = PBXBuildFile; fileRef = A979628E2328063700299006 /* loop_fusion.cpp */; };
+		A97965962328063800299006 /* loop_fusion.cpp in Sources */ = {isa = PBXBuildFile; fileRef = A979628E2328063700299006 /* loop_fusion.cpp */; };
+		A97965972328063800299006 /* upgrade_memory_model.cpp in Sources */ = {isa = PBXBuildFile; fileRef = A979628F2328063700299006 /* upgrade_memory_model.cpp */; };
+		A97965982328063800299006 /* upgrade_memory_model.cpp in Sources */ = {isa = PBXBuildFile; fileRef = A979628F2328063700299006 /* upgrade_memory_model.cpp */; };
+		A97965992328063800299006 /* feature_manager.h in Headers */ = {isa = PBXBuildFile; fileRef = A97962902328063700299006 /* feature_manager.h */; };
+		A979659A2328063800299006 /* feature_manager.h in Headers */ = {isa = PBXBuildFile; fileRef = A97962902328063700299006 /* feature_manager.h */; };
+		A979659B2328063800299006 /* inst_bindless_check_pass.h in Headers */ = {isa = PBXBuildFile; fileRef = A97962912328063700299006 /* inst_bindless_check_pass.h */; };
+		A979659C2328063800299006 /* inst_bindless_check_pass.h in Headers */ = {isa = PBXBuildFile; fileRef = A97962912328063700299006 /* inst_bindless_check_pass.h */; };
+		A979659D2328063800299006 /* scalar_analysis_simplification.cpp in Sources */ = {isa = PBXBuildFile; fileRef = A97962922328063700299006 /* scalar_analysis_simplification.cpp */; };
+		A979659E2328063800299006 /* scalar_analysis_simplification.cpp in Sources */ = {isa = PBXBuildFile; fileRef = A97962922328063700299006 /* scalar_analysis_simplification.cpp */; };
+		A979659F2328063800299006 /* set_spec_constant_default_value_pass.h in Headers */ = {isa = PBXBuildFile; fileRef = A97962932328063700299006 /* set_spec_constant_default_value_pass.h */; };
+		A97965A02328063800299006 /* set_spec_constant_default_value_pass.h in Headers */ = {isa = PBXBuildFile; fileRef = A97962932328063700299006 /* set_spec_constant_default_value_pass.h */; };
+		A97965A12328063800299006 /* dominator_tree.h in Headers */ = {isa = PBXBuildFile; fileRef = A97962942328063700299006 /* dominator_tree.h */; };
+		A97965A22328063800299006 /* dominator_tree.h in Headers */ = {isa = PBXBuildFile; fileRef = A97962942328063700299006 /* dominator_tree.h */; };
+		A97965A32328063800299006 /* legalize_vector_shuffle_pass.cpp in Sources */ = {isa = PBXBuildFile; fileRef = A97962952328063700299006 /* legalize_vector_shuffle_pass.cpp */; };
+		A97965A42328063800299006 /* legalize_vector_shuffle_pass.cpp in Sources */ = {isa = PBXBuildFile; fileRef = A97962952328063700299006 /* legalize_vector_shuffle_pass.cpp */; };
+		A97965A52328063800299006 /* type_manager.h in Headers */ = {isa = PBXBuildFile; fileRef = A97962962328063700299006 /* type_manager.h */; };
+		A97965A62328063800299006 /* type_manager.h in Headers */ = {isa = PBXBuildFile; fileRef = A97962962328063700299006 /* type_manager.h */; };
+		A97965A72328063800299006 /* compact_ids_pass.cpp in Sources */ = {isa = PBXBuildFile; fileRef = A97962972328063700299006 /* compact_ids_pass.cpp */; };
+		A97965A82328063800299006 /* compact_ids_pass.cpp in Sources */ = {isa = PBXBuildFile; fileRef = A97962972328063700299006 /* compact_ids_pass.cpp */; };
+		A97965A92328063800299006 /* loop_peeling.cpp in Sources */ = {isa = PBXBuildFile; fileRef = A97962982328063700299006 /* loop_peeling.cpp */; };
+		A97965AA2328063800299006 /* loop_peeling.cpp in Sources */ = {isa = PBXBuildFile; fileRef = A97962982328063700299006 /* loop_peeling.cpp */; };
+		A97965AB2328063800299006 /* table.h in Headers */ = {isa = PBXBuildFile; fileRef = A97962992328063700299006 /* table.h */; };
+		A97965AC2328063800299006 /* table.h in Headers */ = {isa = PBXBuildFile; fileRef = A97962992328063700299006 /* table.h */; };
+		A97966312328063800299006 /* ext_inst.h in Headers */ = {isa = PBXBuildFile; fileRef = A97962DF2328063700299006 /* ext_inst.h */; };
+		A97966322328063800299006 /* ext_inst.h in Headers */ = {isa = PBXBuildFile; fileRef = A97962DF2328063700299006 /* ext_inst.h */; };
+		A97966332328063800299006 /* diagnostic.cpp in Sources */ = {isa = PBXBuildFile; fileRef = A97962E02328063700299006 /* diagnostic.cpp */; };
+		A97966342328063800299006 /* diagnostic.cpp in Sources */ = {isa = PBXBuildFile; fileRef = A97962E02328063700299006 /* diagnostic.cpp */; };
+		A97966352328063800299006 /* latest_version_spirv_header.h in Headers */ = {isa = PBXBuildFile; fileRef = A97962E12328063700299006 /* latest_version_spirv_header.h */; };
+		A97966362328063800299006 /* latest_version_spirv_header.h in Headers */ = {isa = PBXBuildFile; fileRef = A97962E12328063700299006 /* latest_version_spirv_header.h */; };
+		A97966372328063800299006 /* libspirv.cpp in Sources */ = {isa = PBXBuildFile; fileRef = A97962E22328063700299006 /* libspirv.cpp */; };
+		A97966382328063800299006 /* libspirv.cpp in Sources */ = {isa = PBXBuildFile; fileRef = A97962E22328063700299006 /* libspirv.cpp */; };
+		A97966392328063800299006 /* instruction.h in Headers */ = {isa = PBXBuildFile; fileRef = A97962E32328063700299006 /* instruction.h */; };
+		A979663A2328063800299006 /* instruction.h in Headers */ = {isa = PBXBuildFile; fileRef = A97962E32328063700299006 /* instruction.h */; };
+		A979663B2328063800299006 /* spirv_optimizer_options.h in Headers */ = {isa = PBXBuildFile; fileRef = A97962E42328063700299006 /* spirv_optimizer_options.h */; };
+		A979663C2328063800299006 /* spirv_optimizer_options.h in Headers */ = {isa = PBXBuildFile; fileRef = A97962E42328063700299006 /* spirv_optimizer_options.h */; };
+		A979663D2328063800299006 /* opcode.h in Headers */ = {isa = PBXBuildFile; fileRef = A97962E52328063700299006 /* opcode.h */; };
+		A979663E2328063800299006 /* opcode.h in Headers */ = {isa = PBXBuildFile; fileRef = A97962E52328063700299006 /* opcode.h */; };
+		A979663F2328063800299006 /* operand.cpp in Sources */ = {isa = PBXBuildFile; fileRef = A97962E62328063700299006 /* operand.cpp */; };
+		A97966402328063800299006 /* operand.cpp in Sources */ = {isa = PBXBuildFile; fileRef = A97962E62328063700299006 /* operand.cpp */; };
+		A97966412328063800299006 /* latest_version_glsl_std_450_header.h in Headers */ = {isa = PBXBuildFile; fileRef = A97962E72328063700299006 /* latest_version_glsl_std_450_header.h */; };
+		A97966422328063800299006 /* latest_version_glsl_std_450_header.h in Headers */ = {isa = PBXBuildFile; fileRef = A97962E72328063700299006 /* latest_version_glsl_std_450_header.h */; };
+		A97966432328063800299006 /* extensions.h in Headers */ = {isa = PBXBuildFile; fileRef = A97962E82328063700299006 /* extensions.h */; };
+		A97966442328063800299006 /* extensions.h in Headers */ = {isa = PBXBuildFile; fileRef = A97962E82328063700299006 /* extensions.h */; };
+		A97966452328063800299006 /* disassemble.cpp in Sources */ = {isa = PBXBuildFile; fileRef = A97962E92328063700299006 /* disassemble.cpp */; };
+		A97966462328063800299006 /* disassemble.cpp in Sources */ = {isa = PBXBuildFile; fileRef = A97962E92328063700299006 /* disassemble.cpp */; };
+		A97966472328063800299006 /* binary.h in Headers */ = {isa = PBXBuildFile; fileRef = A97962EA2328063700299006 /* binary.h */; };
+		A97966482328063800299006 /* binary.h in Headers */ = {isa = PBXBuildFile; fileRef = A97962EA2328063700299006 /* binary.h */; };
+		A97966492328063800299006 /* text_handler.cpp in Sources */ = {isa = PBXBuildFile; fileRef = A97962EB2328063700299006 /* text_handler.cpp */; };
+		A979664A2328063800299006 /* text_handler.cpp in Sources */ = {isa = PBXBuildFile; fileRef = A97962EB2328063700299006 /* text_handler.cpp */; };
+		A979664B2328063800299006 /* validate_annotation.cpp in Sources */ = {isa = PBXBuildFile; fileRef = A97962ED2328063700299006 /* validate_annotation.cpp */; };
+		A979664C2328063800299006 /* validate_annotation.cpp in Sources */ = {isa = PBXBuildFile; fileRef = A97962ED2328063700299006 /* validate_annotation.cpp */; };
+		A979664D2328063800299006 /* validate_misc.cpp in Sources */ = {isa = PBXBuildFile; fileRef = A97962EE2328063700299006 /* validate_misc.cpp */; };
+		A979664E2328063800299006 /* validate_misc.cpp in Sources */ = {isa = PBXBuildFile; fileRef = A97962EE2328063700299006 /* validate_misc.cpp */; };
+		A979664F2328063800299006 /* validate_cfg.cpp in Sources */ = {isa = PBXBuildFile; fileRef = A97962EF2328063700299006 /* validate_cfg.cpp */; };
+		A97966502328063800299006 /* validate_cfg.cpp in Sources */ = {isa = PBXBuildFile; fileRef = A97962EF2328063700299006 /* validate_cfg.cpp */; };
+		A97966512328063800299006 /* validate_capability.cpp in Sources */ = {isa = PBXBuildFile; fileRef = A97962F02328063700299006 /* validate_capability.cpp */; };
+		A97966522328063800299006 /* validate_capability.cpp in Sources */ = {isa = PBXBuildFile; fileRef = A97962F02328063700299006 /* validate_capability.cpp */; };
+		A97966532328063800299006 /* construct.h in Headers */ = {isa = PBXBuildFile; fileRef = A97962F12328063700299006 /* construct.h */; };
+		A97966542328063800299006 /* construct.h in Headers */ = {isa = PBXBuildFile; fileRef = A97962F12328063700299006 /* construct.h */; };
+		A97966552328063800299006 /* validate_barriers.cpp in Sources */ = {isa = PBXBuildFile; fileRef = A97962F22328063700299006 /* validate_barriers.cpp */; };
+		A97966562328063800299006 /* validate_barriers.cpp in Sources */ = {isa = PBXBuildFile; fileRef = A97962F22328063700299006 /* validate_barriers.cpp */; };
+		A97966572328063800299006 /* validate_non_uniform.cpp in Sources */ = {isa = PBXBuildFile; fileRef = A97962F32328063700299006 /* validate_non_uniform.cpp */; };
+		A97966582328063800299006 /* validate_non_uniform.cpp in Sources */ = {isa = PBXBuildFile; fileRef = A97962F32328063700299006 /* validate_non_uniform.cpp */; };
+		A97966592328063800299006 /* validate_scopes.cpp in Sources */ = {isa = PBXBuildFile; fileRef = A97962F42328063700299006 /* validate_scopes.cpp */; };
+		A979665A2328063800299006 /* validate_scopes.cpp in Sources */ = {isa = PBXBuildFile; fileRef = A97962F42328063700299006 /* validate_scopes.cpp */; };
+		A979665B2328063800299006 /* validate_atomics.cpp in Sources */ = {isa = PBXBuildFile; fileRef = A97962F52328063700299006 /* validate_atomics.cpp */; };
+		A979665C2328063800299006 /* validate_atomics.cpp in Sources */ = {isa = PBXBuildFile; fileRef = A97962F52328063700299006 /* validate_atomics.cpp */; };
+		A979665D2328063800299006 /* basic_block.h in Headers */ = {isa = PBXBuildFile; fileRef = A97962F62328063700299006 /* basic_block.h */; };
+		A979665E2328063800299006 /* basic_block.h in Headers */ = {isa = PBXBuildFile; fileRef = A97962F62328063700299006 /* basic_block.h */; };
+		A979665F2328063800299006 /* validate_instruction.cpp in Sources */ = {isa = PBXBuildFile; fileRef = A97962F72328063700299006 /* validate_instruction.cpp */; };
+		A97966602328063800299006 /* validate_instruction.cpp in Sources */ = {isa = PBXBuildFile; fileRef = A97962F72328063700299006 /* validate_instruction.cpp */; };
+		A97966612328063800299006 /* validate_decorations.cpp in Sources */ = {isa = PBXBuildFile; fileRef = A97962F82328063700299006 /* validate_decorations.cpp */; };
+		A97966622328063800299006 /* validate_decorations.cpp in Sources */ = {isa = PBXBuildFile; fileRef = A97962F82328063700299006 /* validate_decorations.cpp */; };
+		A97966632328063800299006 /* validate_debug.cpp in Sources */ = {isa = PBXBuildFile; fileRef = A97962F92328063700299006 /* validate_debug.cpp */; };
+		A97966642328063800299006 /* validate_debug.cpp in Sources */ = {isa = PBXBuildFile; fileRef = A97962F92328063700299006 /* validate_debug.cpp */; };
+		A97966652328063800299006 /* validate_builtins.cpp in Sources */ = {isa = PBXBuildFile; fileRef = A97962FA2328063700299006 /* validate_builtins.cpp */; };
+		A97966662328063800299006 /* validate_builtins.cpp in Sources */ = {isa = PBXBuildFile; fileRef = A97962FA2328063700299006 /* validate_builtins.cpp */; };
+		A97966672328063800299006 /* validate_interfaces.cpp in Sources */ = {isa = PBXBuildFile; fileRef = A97962FB2328063700299006 /* validate_interfaces.cpp */; };
+		A97966682328063800299006 /* validate_interfaces.cpp in Sources */ = {isa = PBXBuildFile; fileRef = A97962FB2328063700299006 /* validate_interfaces.cpp */; };
+		A97966692328063800299006 /* validate.cpp in Sources */ = {isa = PBXBuildFile; fileRef = A97962FC2328063700299006 /* validate.cpp */; };
+		A979666A2328063800299006 /* validate.cpp in Sources */ = {isa = PBXBuildFile; fileRef = A97962FC2328063700299006 /* validate.cpp */; };
+		A979666B2328063800299006 /* validation_state.h in Headers */ = {isa = PBXBuildFile; fileRef = A97962FD2328063700299006 /* validation_state.h */; };
+		A979666C2328063800299006 /* validation_state.h in Headers */ = {isa = PBXBuildFile; fileRef = A97962FD2328063700299006 /* validation_state.h */; };
+		A979666D2328063800299006 /* validate_constants.cpp in Sources */ = {isa = PBXBuildFile; fileRef = A97962FE2328063700299006 /* validate_constants.cpp */; };
+		A979666E2328063800299006 /* validate_constants.cpp in Sources */ = {isa = PBXBuildFile; fileRef = A97962FE2328063700299006 /* validate_constants.cpp */; };
+		A979666F2328063800299006 /* validate_bitwise.cpp in Sources */ = {isa = PBXBuildFile; fileRef = A97962FF2328063700299006 /* validate_bitwise.cpp */; };
+		A97966702328063800299006 /* validate_bitwise.cpp in Sources */ = {isa = PBXBuildFile; fileRef = A97962FF2328063700299006 /* validate_bitwise.cpp */; };
+		A97966712328063800299006 /* validate_extensions.cpp in Sources */ = {isa = PBXBuildFile; fileRef = A97963002328063700299006 /* validate_extensions.cpp */; };
+		A97966722328063800299006 /* validate_extensions.cpp in Sources */ = {isa = PBXBuildFile; fileRef = A97963002328063700299006 /* validate_extensions.cpp */; };
+		A97966732328063800299006 /* construct.cpp in Sources */ = {isa = PBXBuildFile; fileRef = A97963012328063700299006 /* construct.cpp */; };
+		A97966742328063800299006 /* construct.cpp in Sources */ = {isa = PBXBuildFile; fileRef = A97963012328063700299006 /* construct.cpp */; };
+		A97966752328063800299006 /* function.cpp in Sources */ = {isa = PBXBuildFile; fileRef = A97963022328063700299006 /* function.cpp */; };
+		A97966762328063800299006 /* function.cpp in Sources */ = {isa = PBXBuildFile; fileRef = A97963022328063700299006 /* function.cpp */; };
+		A97966772328063800299006 /* validate.h in Headers */ = {isa = PBXBuildFile; fileRef = A97963032328063700299006 /* validate.h */; };
+		A97966782328063800299006 /* validate.h in Headers */ = {isa = PBXBuildFile; fileRef = A97963032328063700299006 /* validate.h */; };
+		A97966792328063800299006 /* validate_adjacency.cpp in Sources */ = {isa = PBXBuildFile; fileRef = A97963042328063700299006 /* validate_adjacency.cpp */; };
+		A979667A2328063800299006 /* validate_adjacency.cpp in Sources */ = {isa = PBXBuildFile; fileRef = A97963042328063700299006 /* validate_adjacency.cpp */; };
+		A979667B2328063800299006 /* validate_conversion.cpp in Sources */ = {isa = PBXBuildFile; fileRef = A97963052328063700299006 /* validate_conversion.cpp */; };
+		A979667C2328063800299006 /* validate_conversion.cpp in Sources */ = {isa = PBXBuildFile; fileRef = A97963052328063700299006 /* validate_conversion.cpp */; };
+		A979667D2328063800299006 /* validate_small_type_uses.cpp in Sources */ = {isa = PBXBuildFile; fileRef = A97963062328063700299006 /* validate_small_type_uses.cpp */; };
+		A979667E2328063800299006 /* validate_small_type_uses.cpp in Sources */ = {isa = PBXBuildFile; fileRef = A97963062328063700299006 /* validate_small_type_uses.cpp */; };
+		A979667F2328063800299006 /* validate_datarules.cpp in Sources */ = {isa = PBXBuildFile; fileRef = A97963072328063700299006 /* validate_datarules.cpp */; };
+		A97966802328063800299006 /* validate_datarules.cpp in Sources */ = {isa = PBXBuildFile; fileRef = A97963072328063700299006 /* validate_datarules.cpp */; };
+		A97966812328063800299006 /* validate_scopes.h in Headers */ = {isa = PBXBuildFile; fileRef = A97963082328063700299006 /* validate_scopes.h */; };
+		A97966822328063800299006 /* validate_scopes.h in Headers */ = {isa = PBXBuildFile; fileRef = A97963082328063700299006 /* validate_scopes.h */; };
+		A97966832328063800299006 /* validate_id.cpp in Sources */ = {isa = PBXBuildFile; fileRef = A97963092328063700299006 /* validate_id.cpp */; };
+		A97966842328063800299006 /* validate_id.cpp in Sources */ = {isa = PBXBuildFile; fileRef = A97963092328063700299006 /* validate_id.cpp */; };
+		A97966852328063800299006 /* validate_memory_semantics.h in Headers */ = {isa = PBXBuildFile; fileRef = A979630A2328063700299006 /* validate_memory_semantics.h */; };
+		A97966862328063800299006 /* validate_memory_semantics.h in Headers */ = {isa = PBXBuildFile; fileRef = A979630A2328063700299006 /* validate_memory_semantics.h */; };
+		A97966872328063800299006 /* validate_arithmetics.cpp in Sources */ = {isa = PBXBuildFile; fileRef = A979630B2328063700299006 /* validate_arithmetics.cpp */; };
+		A97966882328063800299006 /* validate_arithmetics.cpp in Sources */ = {isa = PBXBuildFile; fileRef = A979630B2328063700299006 /* validate_arithmetics.cpp */; };
+		A97966892328063800299006 /* validate_mode_setting.cpp in Sources */ = {isa = PBXBuildFile; fileRef = A979630C2328063700299006 /* validate_mode_setting.cpp */; };
+		A979668A2328063800299006 /* validate_mode_setting.cpp in Sources */ = {isa = PBXBuildFile; fileRef = A979630C2328063700299006 /* validate_mode_setting.cpp */; };
+		A979668B2328063800299006 /* validate_memory_semantics.cpp in Sources */ = {isa = PBXBuildFile; fileRef = A979630D2328063700299006 /* validate_memory_semantics.cpp */; };
+		A979668C2328063800299006 /* validate_memory_semantics.cpp in Sources */ = {isa = PBXBuildFile; fileRef = A979630D2328063700299006 /* validate_memory_semantics.cpp */; };
+		A979668D2328063800299006 /* validate_logicals.cpp in Sources */ = {isa = PBXBuildFile; fileRef = A979630E2328063700299006 /* validate_logicals.cpp */; };
+		A979668E2328063800299006 /* validate_logicals.cpp in Sources */ = {isa = PBXBuildFile; fileRef = A979630E2328063700299006 /* validate_logicals.cpp */; };
+		A979668F2328063800299006 /* validate_derivatives.cpp in Sources */ = {isa = PBXBuildFile; fileRef = A979630F2328063700299006 /* validate_derivatives.cpp */; };
+		A97966902328063800299006 /* validate_derivatives.cpp in Sources */ = {isa = PBXBuildFile; fileRef = A979630F2328063700299006 /* validate_derivatives.cpp */; };
+		A97966912328063800299006 /* validate_memory.cpp in Sources */ = {isa = PBXBuildFile; fileRef = A97963102328063700299006 /* validate_memory.cpp */; };
+		A97966922328063800299006 /* validate_memory.cpp in Sources */ = {isa = PBXBuildFile; fileRef = A97963102328063700299006 /* validate_memory.cpp */; };
+		A97966932328063800299006 /* validate_image.cpp in Sources */ = {isa = PBXBuildFile; fileRef = A97963112328063700299006 /* validate_image.cpp */; };
+		A97966942328063800299006 /* validate_image.cpp in Sources */ = {isa = PBXBuildFile; fileRef = A97963112328063700299006 /* validate_image.cpp */; };
+		A97966952328063800299006 /* validate_literals.cpp in Sources */ = {isa = PBXBuildFile; fileRef = A97963122328063700299006 /* validate_literals.cpp */; };
+		A97966962328063800299006 /* validate_literals.cpp in Sources */ = {isa = PBXBuildFile; fileRef = A97963122328063700299006 /* validate_literals.cpp */; };
+		A97966972328063800299006 /* instruction.cpp in Sources */ = {isa = PBXBuildFile; fileRef = A97963132328063700299006 /* instruction.cpp */; };
+		A97966982328063800299006 /* instruction.cpp in Sources */ = {isa = PBXBuildFile; fileRef = A97963132328063700299006 /* instruction.cpp */; };
+		A97966992328063800299006 /* validate_type.cpp in Sources */ = {isa = PBXBuildFile; fileRef = A97963142328063700299006 /* validate_type.cpp */; };
+		A979669A2328063800299006 /* validate_type.cpp in Sources */ = {isa = PBXBuildFile; fileRef = A97963142328063700299006 /* validate_type.cpp */; };
+		A979669B2328063800299006 /* instruction.h in Headers */ = {isa = PBXBuildFile; fileRef = A97963152328063700299006 /* instruction.h */; };
+		A979669C2328063800299006 /* instruction.h in Headers */ = {isa = PBXBuildFile; fileRef = A97963152328063700299006 /* instruction.h */; };
+		A979669D2328063800299006 /* validate_execution_limitations.cpp in Sources */ = {isa = PBXBuildFile; fileRef = A97963162328063700299006 /* validate_execution_limitations.cpp */; };
+		A979669E2328063800299006 /* validate_execution_limitations.cpp in Sources */ = {isa = PBXBuildFile; fileRef = A97963162328063700299006 /* validate_execution_limitations.cpp */; };
+		A979669F2328063800299006 /* validate_layout.cpp in Sources */ = {isa = PBXBuildFile; fileRef = A97963172328063700299006 /* validate_layout.cpp */; };
+		A97966A02328063800299006 /* validate_layout.cpp in Sources */ = {isa = PBXBuildFile; fileRef = A97963172328063700299006 /* validate_layout.cpp */; };
+		A97966A12328063800299006 /* basic_block.cpp in Sources */ = {isa = PBXBuildFile; fileRef = A97963182328063700299006 /* basic_block.cpp */; };
+		A97966A22328063800299006 /* basic_block.cpp in Sources */ = {isa = PBXBuildFile; fileRef = A97963182328063700299006 /* basic_block.cpp */; };
+		A97966A32328063800299006 /* validate_function.cpp in Sources */ = {isa = PBXBuildFile; fileRef = A97963192328063700299006 /* validate_function.cpp */; };
+		A97966A42328063800299006 /* validate_function.cpp in Sources */ = {isa = PBXBuildFile; fileRef = A97963192328063700299006 /* validate_function.cpp */; };
+		A97966A52328063800299006 /* function.h in Headers */ = {isa = PBXBuildFile; fileRef = A979631A2328063700299006 /* function.h */; };
+		A97966A62328063800299006 /* function.h in Headers */ = {isa = PBXBuildFile; fileRef = A979631A2328063700299006 /* function.h */; };
+		A97966A72328063800299006 /* validate_composites.cpp in Sources */ = {isa = PBXBuildFile; fileRef = A979631B2328063700299006 /* validate_composites.cpp */; };
+		A97966A82328063800299006 /* validate_composites.cpp in Sources */ = {isa = PBXBuildFile; fileRef = A979631B2328063700299006 /* validate_composites.cpp */; };
+		A97966A92328063800299006 /* validation_state.cpp in Sources */ = {isa = PBXBuildFile; fileRef = A979631C2328063700299006 /* validation_state.cpp */; };
+		A97966AA2328063800299006 /* validation_state.cpp in Sources */ = {isa = PBXBuildFile; fileRef = A979631C2328063700299006 /* validation_state.cpp */; };
+		A97966AB2328063800299006 /* validate_primitives.cpp in Sources */ = {isa = PBXBuildFile; fileRef = A979631D2328063700299006 /* validate_primitives.cpp */; };
+		A97966AC2328063800299006 /* validate_primitives.cpp in Sources */ = {isa = PBXBuildFile; fileRef = A979631D2328063700299006 /* validate_primitives.cpp */; };
+		A97966AD2328063800299006 /* decoration.h in Headers */ = {isa = PBXBuildFile; fileRef = A979631E2328063700299006 /* decoration.h */; };
+		A97966AE2328063800299006 /* decoration.h in Headers */ = {isa = PBXBuildFile; fileRef = A979631E2328063700299006 /* decoration.h */; };
 /* End PBXBuildFile section */
 
 /* Begin PBXContainerItemProxy section */
@@ -1193,391 +1225,407 @@
 		A976290C21CC60BC00B52A68 /* spirv_parser.hpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.h; path = spirv_parser.hpp; sourceTree = "<group>"; };
 		A976290D21CC60BC00B52A68 /* spirv_msl.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = spirv_msl.cpp; sourceTree = "<group>"; };
 		A976290E21CC60BC00B52A68 /* spirv_cross_parsed_ir.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = spirv_cross_parsed_ir.cpp; sourceTree = "<group>"; };
+		A97961462328063600299006 /* spirv_target_env.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = spirv_target_env.cpp; sourceTree = "<group>"; };
+		A97961472328063600299006 /* extinst.spv-amd-shader-explicit-vertex-parameter.grammar.json */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.json; path = "extinst.spv-amd-shader-explicit-vertex-parameter.grammar.json"; sourceTree = "<group>"; };
+		A97961482328063600299006 /* spirv_fuzzer_options.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = spirv_fuzzer_options.h; sourceTree = "<group>"; };
+		A97961492328063600299006 /* assembly_grammar.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = assembly_grammar.h; sourceTree = "<group>"; };
+		A979614A2328063600299006 /* enum_set.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = enum_set.h; sourceTree = "<group>"; };
+		A979614B2328063600299006 /* CMakeLists.txt */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text; path = CMakeLists.txt; sourceTree = "<group>"; };
+		A979614C2328063600299006 /* extinst.spv-amd-shader-ballot.grammar.json */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.json; path = "extinst.spv-amd-shader-ballot.grammar.json"; sourceTree = "<group>"; };
+		A979614D2328063600299006 /* text.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = text.cpp; sourceTree = "<group>"; };
+		A979614E2328063600299006 /* assembly_grammar.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = assembly_grammar.cpp; sourceTree = "<group>"; };
+		A979614F2328063600299006 /* text.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = text.h; sourceTree = "<group>"; };
+		A97961502328063600299006 /* extensions.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = extensions.cpp; sourceTree = "<group>"; };
+		A97961512328063600299006 /* pch_source.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = pch_source.cpp; sourceTree = "<group>"; };
+		A97961532328063600299006 /* parse_number.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = parse_number.h; sourceTree = "<group>"; };
+		A97961542328063600299006 /* ilist_node.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = ilist_node.h; sourceTree = "<group>"; };
+		A97961552328063600299006 /* make_unique.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = make_unique.h; sourceTree = "<group>"; };
+		A97961562328063600299006 /* string_utils.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = string_utils.h; sourceTree = "<group>"; };
+		A97961572328063600299006 /* small_vector.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = small_vector.h; sourceTree = "<group>"; };
+		A97961582328063600299006 /* timer.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = timer.cpp; sourceTree = "<group>"; };
+		A97961592328063600299006 /* timer.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = timer.h; sourceTree = "<group>"; };
+		A979615A2328063600299006 /* string_utils.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = string_utils.cpp; sourceTree = "<group>"; };
+		A979615B2328063600299006 /* bit_vector.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = bit_vector.h; sourceTree = "<group>"; };
+		A979615C2328063600299006 /* bitutils.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = bitutils.h; sourceTree = "<group>"; };
+		A979615D2328063600299006 /* hex_float.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = hex_float.h; sourceTree = "<group>"; };
+		A979615E2328063600299006 /* parse_number.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = parse_number.cpp; sourceTree = "<group>"; };
+		A979615F2328063600299006 /* bit_vector.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = bit_vector.cpp; sourceTree = "<group>"; };
+		A97961602328063600299006 /* ilist.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = ilist.h; sourceTree = "<group>"; };
+		A97961612328063600299006 /* spirv_target_env.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = spirv_target_env.h; sourceTree = "<group>"; };
+		A97961622328063600299006 /* table.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = table.cpp; sourceTree = "<group>"; };
+		A97961642328063600299006 /* operand_to_undef_reduction_opportunity_finder.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = operand_to_undef_reduction_opportunity_finder.h; sourceTree = "<group>"; };
+		A97961652328063600299006 /* remove_selection_reduction_opportunity.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = remove_selection_reduction_opportunity.cpp; sourceTree = "<group>"; };
+		A97961662328063600299006 /* remove_block_reduction_opportunity.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = remove_block_reduction_opportunity.h; sourceTree = "<group>"; };
+		A97961672328063600299006 /* operand_to_dominating_id_reduction_opportunity_finder.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = operand_to_dominating_id_reduction_opportunity_finder.h; sourceTree = "<group>"; };
+		A97961682328063600299006 /* reduction_pass.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = reduction_pass.cpp; sourceTree = "<group>"; };
+		A97961692328063600299006 /* operand_to_const_reduction_opportunity_finder.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = operand_to_const_reduction_opportunity_finder.cpp; sourceTree = "<group>"; };
+		A979616A2328063600299006 /* operand_to_const_reduction_opportunity_finder.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = operand_to_const_reduction_opportunity_finder.h; sourceTree = "<group>"; };
+		A979616B2328063600299006 /* CMakeLists.txt */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text; path = CMakeLists.txt; sourceTree = "<group>"; };
+		A979616C2328063600299006 /* reduction_util.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = reduction_util.cpp; sourceTree = "<group>"; };
+		A979616D2328063600299006 /* remove_relaxed_precision_decoration_opportunity_finder.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = remove_relaxed_precision_decoration_opportunity_finder.cpp; sourceTree = "<group>"; };
+		A979616E2328063600299006 /* structured_loop_to_selection_reduction_opportunity_finder.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = structured_loop_to_selection_reduction_opportunity_finder.cpp; sourceTree = "<group>"; };
+		A979616F2328063600299006 /* simple_conditional_branch_to_branch_reduction_opportunity.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = simple_conditional_branch_to_branch_reduction_opportunity.h; sourceTree = "<group>"; };
+		A97961702328063600299006 /* remove_function_reduction_opportunity_finder.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = remove_function_reduction_opportunity_finder.cpp; sourceTree = "<group>"; };
+		A97961712328063600299006 /* remove_instruction_reduction_opportunity.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = remove_instruction_reduction_opportunity.h; sourceTree = "<group>"; };
+		A97961722328063600299006 /* conditional_branch_to_simple_conditional_branch_reduction_opportunity.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = conditional_branch_to_simple_conditional_branch_reduction_opportunity.h; sourceTree = "<group>"; };
+		A97961732328063600299006 /* simple_conditional_branch_to_branch_reduction_opportunity.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = simple_conditional_branch_to_branch_reduction_opportunity.cpp; sourceTree = "<group>"; };
+		A97961742328063600299006 /* remove_function_reduction_opportunity.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = remove_function_reduction_opportunity.cpp; sourceTree = "<group>"; };
+		A97961752328063600299006 /* remove_opname_instruction_reduction_opportunity_finder.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = remove_opname_instruction_reduction_opportunity_finder.h; sourceTree = "<group>"; };
+		A97961762328063600299006 /* simple_conditional_branch_to_branch_opportunity_finder.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = simple_conditional_branch_to_branch_opportunity_finder.cpp; sourceTree = "<group>"; };
+		A97961772328063600299006 /* remove_selection_reduction_opportunity_finder.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = remove_selection_reduction_opportunity_finder.cpp; sourceTree = "<group>"; };
+		A97961782328063600299006 /* conditional_branch_to_simple_conditional_branch_reduction_opportunity.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = conditional_branch_to_simple_conditional_branch_reduction_opportunity.cpp; sourceTree = "<group>"; };
+		A97961792328063600299006 /* simple_conditional_branch_to_branch_opportunity_finder.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = simple_conditional_branch_to_branch_opportunity_finder.h; sourceTree = "<group>"; };
+		A979617A2328063600299006 /* merge_blocks_reduction_opportunity.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = merge_blocks_reduction_opportunity.cpp; sourceTree = "<group>"; };
+		A979617B2328063600299006 /* change_operand_reduction_opportunity.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = change_operand_reduction_opportunity.cpp; sourceTree = "<group>"; };
+		A979617C2328063600299006 /* structured_loop_to_selection_reduction_opportunity.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = structured_loop_to_selection_reduction_opportunity.h; sourceTree = "<group>"; };
+		A979617D2328063600299006 /* remove_function_reduction_opportunity.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = remove_function_reduction_opportunity.h; sourceTree = "<group>"; };
+		A979617E2328063600299006 /* change_operand_to_undef_reduction_opportunity.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = change_operand_to_undef_reduction_opportunity.h; sourceTree = "<group>"; };
+		A979617F2328063600299006 /* remove_unreferenced_instruction_reduction_opportunity_finder.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = remove_unreferenced_instruction_reduction_opportunity_finder.cpp; sourceTree = "<group>"; };
+		A97961802328063600299006 /* structured_loop_to_selection_reduction_opportunity_finder.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = structured_loop_to_selection_reduction_opportunity_finder.h; sourceTree = "<group>"; };
+		A97961812328063600299006 /* remove_selection_reduction_opportunity.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = remove_selection_reduction_opportunity.h; sourceTree = "<group>"; };
+		A97961822328063600299006 /* remove_instruction_reduction_opportunity.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = remove_instruction_reduction_opportunity.cpp; sourceTree = "<group>"; };
+		A97961832328063600299006 /* remove_relaxed_precision_decoration_opportunity_finder.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = remove_relaxed_precision_decoration_opportunity_finder.h; sourceTree = "<group>"; };
+		A97961842328063600299006 /* remove_selection_reduction_opportunity_finder.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = remove_selection_reduction_opportunity_finder.h; sourceTree = "<group>"; };
+		A97961852328063600299006 /* merge_blocks_reduction_opportunity_finder.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = merge_blocks_reduction_opportunity_finder.h; sourceTree = "<group>"; };
+		A97961862328063600299006 /* remove_opname_instruction_reduction_opportunity_finder.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = remove_opname_instruction_reduction_opportunity_finder.cpp; sourceTree = "<group>"; };
+		A97961872328063600299006 /* pch_source_reduce.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = pch_source_reduce.cpp; sourceTree = "<group>"; };
+		A97961882328063600299006 /* reducer.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = reducer.cpp; sourceTree = "<group>"; };
+		A97961892328063600299006 /* operand_to_undef_reduction_opportunity_finder.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = operand_to_undef_reduction_opportunity_finder.cpp; sourceTree = "<group>"; };
+		A979618A2328063600299006 /* remove_function_reduction_opportunity_finder.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = remove_function_reduction_opportunity_finder.h; sourceTree = "<group>"; };
+		A979618B2328063600299006 /* pch_source_reduce.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = pch_source_reduce.h; sourceTree = "<group>"; };
+		A979618C2328063600299006 /* remove_unreferenced_instruction_reduction_opportunity_finder.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = remove_unreferenced_instruction_reduction_opportunity_finder.h; sourceTree = "<group>"; };
+		A979618D2328063700299006 /* merge_blocks_reduction_opportunity_finder.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = merge_blocks_reduction_opportunity_finder.cpp; sourceTree = "<group>"; };
+		A979618E2328063700299006 /* reduction_opportunity.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = reduction_opportunity.cpp; sourceTree = "<group>"; };
+		A979618F2328063700299006 /* reducer.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = reducer.h; sourceTree = "<group>"; };
+		A97961902328063700299006 /* change_operand_to_undef_reduction_opportunity.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = change_operand_to_undef_reduction_opportunity.cpp; sourceTree = "<group>"; };
+		A97961912328063700299006 /* reduction_opportunity.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = reduction_opportunity.h; sourceTree = "<group>"; };
+		A97961922328063700299006 /* conditional_branch_to_simple_conditional_branch_opportunity_finder.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = conditional_branch_to_simple_conditional_branch_opportunity_finder.h; sourceTree = "<group>"; };
+		A97961932328063700299006 /* operand_to_dominating_id_reduction_opportunity_finder.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = operand_to_dominating_id_reduction_opportunity_finder.cpp; sourceTree = "<group>"; };
+		A97961942328063700299006 /* reduction_opportunity_finder.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = reduction_opportunity_finder.h; sourceTree = "<group>"; };
+		A97961952328063700299006 /* change_operand_reduction_opportunity.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = change_operand_reduction_opportunity.h; sourceTree = "<group>"; };
+		A97961962328063700299006 /* remove_block_reduction_opportunity_finder.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = remove_block_reduction_opportunity_finder.h; sourceTree = "<group>"; };
+		A97961972328063700299006 /* remove_block_reduction_opportunity_finder.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = remove_block_reduction_opportunity_finder.cpp; sourceTree = "<group>"; };
+		A97961982328063700299006 /* reduction_util.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = reduction_util.h; sourceTree = "<group>"; };
+		A97961992328063700299006 /* merge_blocks_reduction_opportunity.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = merge_blocks_reduction_opportunity.h; sourceTree = "<group>"; };
+		A979619A2328063700299006 /* conditional_branch_to_simple_conditional_branch_opportunity_finder.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = conditional_branch_to_simple_conditional_branch_opportunity_finder.cpp; sourceTree = "<group>"; };
+		A979619B2328063700299006 /* structured_loop_to_selection_reduction_opportunity.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = structured_loop_to_selection_reduction_opportunity.cpp; sourceTree = "<group>"; };
+		A979619C2328063700299006 /* remove_block_reduction_opportunity.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = remove_block_reduction_opportunity.cpp; sourceTree = "<group>"; };
+		A979619D2328063700299006 /* reduction_pass.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = reduction_pass.h; sourceTree = "<group>"; };
+		A979619E2328063700299006 /* latest_version_opencl_std_header.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = latest_version_opencl_std_header.h; sourceTree = "<group>"; };
+		A979619F2328063700299006 /* spirv_optimizer_options.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = spirv_optimizer_options.cpp; sourceTree = "<group>"; };
+		A97961A02328063700299006 /* cfa.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = cfa.h; sourceTree = "<group>"; };
+		A97961A12328063700299006 /* pch_source.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = pch_source.h; sourceTree = "<group>"; };
+		A97961A22328063700299006 /* enum_string_mapping.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = enum_string_mapping.h; sourceTree = "<group>"; };
+		A97961A32328063700299006 /* spirv_fuzzer_options.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = spirv_fuzzer_options.cpp; sourceTree = "<group>"; };
+		A97961A42328063700299006 /* spirv_reducer_options.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = spirv_reducer_options.h; sourceTree = "<group>"; };
+		A97961A52328063700299006 /* spirv_validator_options.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = spirv_validator_options.cpp; sourceTree = "<group>"; };
+		A97961A62328063700299006 /* extinst.spv-amd-shader-trinary-minmax.grammar.json */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.json; path = "extinst.spv-amd-shader-trinary-minmax.grammar.json"; sourceTree = "<group>"; };
+		A97961A72328063700299006 /* print.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = print.cpp; sourceTree = "<group>"; };
+		A97961A82328063700299006 /* spirv_definition.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = spirv_definition.h; sourceTree = "<group>"; };
+		A97961A92328063700299006 /* operand.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = operand.h; sourceTree = "<group>"; };
+		A97961AA2328063700299006 /* spirv_endian.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = spirv_endian.cpp; sourceTree = "<group>"; };
+		A97961AB2328063700299006 /* macro.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = macro.h; sourceTree = "<group>"; };
+		A97961AC2328063700299006 /* spirv_constant.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = spirv_constant.h; sourceTree = "<group>"; };
+		A97961AD2328063700299006 /* extinst.spv-amd-gcn-shader.grammar.json */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.json; path = "extinst.spv-amd-gcn-shader.grammar.json"; sourceTree = "<group>"; };
+		A97961AE2328063700299006 /* binary.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = binary.cpp; sourceTree = "<group>"; };
+		A97961AF2328063700299006 /* spirv_validator_options.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = spirv_validator_options.h; sourceTree = "<group>"; };
+		A97961B02328063700299006 /* enum_string_mapping.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = enum_string_mapping.cpp; sourceTree = "<group>"; };
+		A97961B12328063700299006 /* text_handler.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = text_handler.h; sourceTree = "<group>"; };
+		A97961B22328063700299006 /* parsed_operand.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = parsed_operand.h; sourceTree = "<group>"; };
+		A97961B32328063700299006 /* name_mapper.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = name_mapper.h; sourceTree = "<group>"; };
+		A97961B42328063700299006 /* spirv_reducer_options.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = spirv_reducer_options.cpp; sourceTree = "<group>"; };
+		A97961B52328063700299006 /* parsed_operand.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = parsed_operand.cpp; sourceTree = "<group>"; };
+		A97961B62328063700299006 /* diagnostic.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = diagnostic.h; sourceTree = "<group>"; };
+		A97961B72328063700299006 /* spirv_endian.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = spirv_endian.h; sourceTree = "<group>"; };
+		A97961B82328063700299006 /* name_mapper.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = name_mapper.cpp; sourceTree = "<group>"; };
+		A97961B92328063700299006 /* extinst.debuginfo.grammar.json */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.json; path = extinst.debuginfo.grammar.json; sourceTree = "<group>"; };
+		A97961BB2328063700299006 /* CMakeLists.txt */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text; path = CMakeLists.txt; sourceTree = "<group>"; };
+		A97961BC2328063700299006 /* linker.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = linker.cpp; sourceTree = "<group>"; };
+		A97961BD2328063700299006 /* software_version.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = software_version.cpp; sourceTree = "<group>"; };
+		A97961BE2328063700299006 /* opcode.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = opcode.cpp; sourceTree = "<group>"; };
+		A97961BF2328063700299006 /* print.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = print.h; sourceTree = "<group>"; };
+		A97961C02328063700299006 /* ext_inst.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = ext_inst.cpp; sourceTree = "<group>"; };
+		A97961C12328063700299006 /* disassemble.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = disassemble.h; sourceTree = "<group>"; };
+		A97961C32328063700299006 /* optimizer.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = optimizer.cpp; sourceTree = "<group>"; };
+		A97961C42328063700299006 /* if_conversion.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = if_conversion.h; sourceTree = "<group>"; };
+		A97961C52328063700299006 /* register_pressure.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = register_pressure.cpp; sourceTree = "<group>"; };
+		A97961C62328063700299006 /* loop_utils.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = loop_utils.cpp; sourceTree = "<group>"; };
+		A97961C72328063700299006 /* merge_return_pass.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = merge_return_pass.h; sourceTree = "<group>"; };
+		A97961C82328063700299006 /* inline_opaque_pass.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = inline_opaque_pass.h; sourceTree = "<group>"; };
+		A97961C92328063700299006 /* loop_fusion.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = loop_fusion.h; sourceTree = "<group>"; };
+		A97961CA2328063700299006 /* combine_access_chains.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = combine_access_chains.cpp; sourceTree = "<group>"; };
+		A97961CB2328063700299006 /* build_module.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = build_module.cpp; sourceTree = "<group>"; };
+		A97961CC2328063700299006 /* composite.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = composite.h; sourceTree = "<group>"; };
+		A97961CD2328063700299006 /* compact_ids_pass.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = compact_ids_pass.h; sourceTree = "<group>"; };
+		A97961CE2328063700299006 /* register_pressure.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = register_pressure.h; sourceTree = "<group>"; };
+		A97961CF2328063700299006 /* tree_iterator.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = tree_iterator.h; sourceTree = "<group>"; };
+		A97961D02328063700299006 /* graphics_robust_access_pass.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = graphics_robust_access_pass.h; sourceTree = "<group>"; };
+		A97961D12328063700299006 /* strip_atomic_counter_memory_pass.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = strip_atomic_counter_memory_pass.h; sourceTree = "<group>"; };
+		A97961D22328063700299006 /* legalize_vector_shuffle_pass.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = legalize_vector_shuffle_pass.h; sourceTree = "<group>"; };
+		A97961D32328063700299006 /* local_single_store_elim_pass.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = local_single_store_elim_pass.h; sourceTree = "<group>"; };
+		A97961D42328063700299006 /* reduce_load_size.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = reduce_load_size.h; sourceTree = "<group>"; };
+		A97961D52328063700299006 /* code_sink.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = code_sink.cpp; sourceTree = "<group>"; };
+		A97961D62328063700299006 /* types.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = types.cpp; sourceTree = "<group>"; };
+		A97961D72328063700299006 /* scalar_analysis.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = scalar_analysis.h; sourceTree = "<group>"; };
+		A97961D82328063700299006 /* strip_debug_info_pass.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = strip_debug_info_pass.h; sourceTree = "<group>"; };
+		A97961D92328063700299006 /* cfg.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = cfg.cpp; sourceTree = "<group>"; };
+		A97961DA2328063700299006 /* strip_atomic_counter_memory_pass.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = strip_atomic_counter_memory_pass.cpp; sourceTree = "<group>"; };
+		A97961DB2328063700299006 /* decoration_manager.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = decoration_manager.cpp; sourceTree = "<group>"; };
+		A97961DC2328063700299006 /* local_single_block_elim_pass.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = local_single_block_elim_pass.cpp; sourceTree = "<group>"; };
+		A97961DD2328063700299006 /* freeze_spec_constant_value_pass.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = freeze_spec_constant_value_pass.cpp; sourceTree = "<group>"; };
+		A97961DE2328063700299006 /* replace_invalid_opc.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = replace_invalid_opc.h; sourceTree = "<group>"; };
+		A97961DF2328063700299006 /* local_access_chain_convert_pass.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = local_access_chain_convert_pass.h; sourceTree = "<group>"; };
+		A97961E02328063700299006 /* inst_bindless_check_pass.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = inst_bindless_check_pass.cpp; sourceTree = "<group>"; };
+		A97961E12328063700299006 /* local_redundancy_elimination.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = local_redundancy_elimination.cpp; sourceTree = "<group>"; };
+		A97961E22328063700299006 /* CMakeLists.txt */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text; path = CMakeLists.txt; sourceTree = "<group>"; };
+		A97961E32328063700299006 /* instrument_pass.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = instrument_pass.cpp; sourceTree = "<group>"; };
+		A97961E42328063700299006 /* propagator.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = propagator.h; sourceTree = "<group>"; };
+		A97961E52328063700299006 /* instruction_list.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = instruction_list.h; sourceTree = "<group>"; };
+		A97961E62328063700299006 /* feature_manager.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = feature_manager.cpp; sourceTree = "<group>"; };
+		A97961E72328063700299006 /* pass.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = pass.cpp; sourceTree = "<group>"; };
+		A97961E82328063700299006 /* loop_fission.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = loop_fission.cpp; sourceTree = "<group>"; };
+		A97961E92328063700299006 /* dominator_tree.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = dominator_tree.cpp; sourceTree = "<group>"; };
+		A97961EA2328063700299006 /* amd_ext_to_khr.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = amd_ext_to_khr.h; sourceTree = "<group>"; };
+		A97961EB2328063700299006 /* merge_return_pass.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = merge_return_pass.cpp; sourceTree = "<group>"; };
+		A97961EC2328063700299006 /* ir_context.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = ir_context.h; sourceTree = "<group>"; };
+		A97961ED2328063700299006 /* eliminate_dead_constant_pass.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = eliminate_dead_constant_pass.cpp; sourceTree = "<group>"; };
+		A97961EE2328063700299006 /* cfg_cleanup_pass.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = cfg_cleanup_pass.cpp; sourceTree = "<group>"; };
+		A97961EF2328063700299006 /* wrap_opkill.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = wrap_opkill.cpp; sourceTree = "<group>"; };
+		A97961F02328063700299006 /* const_folding_rules.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = const_folding_rules.cpp; sourceTree = "<group>"; };
+		A97961F12328063700299006 /* loop_unroller.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = loop_unroller.h; sourceTree = "<group>"; };
+		A97961F22328063700299006 /* strip_debug_info_pass.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = strip_debug_info_pass.cpp; sourceTree = "<group>"; };
+		A97961F32328063700299006 /* ssa_rewrite_pass.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = ssa_rewrite_pass.cpp; sourceTree = "<group>"; };
+		A97961F42328063700299006 /* loop_dependence.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = loop_dependence.cpp; sourceTree = "<group>"; };
+		A97961F52328063700299006 /* unify_const_pass.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = unify_const_pass.h; sourceTree = "<group>"; };
+		A97961F62328063700299006 /* ir_loader.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = ir_loader.h; sourceTree = "<group>"; };
+		A97961F72328063700299006 /* types.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = types.h; sourceTree = "<group>"; };
+		A97961F82328063700299006 /* fold_spec_constant_op_and_composite_pass.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = fold_spec_constant_op_and_composite_pass.h; sourceTree = "<group>"; };
+		A97961F92328063700299006 /* mem_pass.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = mem_pass.cpp; sourceTree = "<group>"; };
+		A97961FA2328063700299006 /* basic_block.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = basic_block.h; sourceTree = "<group>"; };
+		A97961FB2328063700299006 /* remove_duplicates_pass.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = remove_duplicates_pass.cpp; sourceTree = "<group>"; };
+		A97961FC2328063700299006 /* dead_variable_elimination.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = dead_variable_elimination.cpp; sourceTree = "<group>"; };
+		A97961FD2328063700299006 /* block_merge_pass.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = block_merge_pass.h; sourceTree = "<group>"; };
+		A97961FE2328063700299006 /* module.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = module.cpp; sourceTree = "<group>"; };
+		A97961FF2328063700299006 /* fold_spec_constant_op_and_composite_pass.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = fold_spec_constant_op_and_composite_pass.cpp; sourceTree = "<group>"; };
+		A97962002328063700299006 /* loop_unswitch_pass.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = loop_unswitch_pass.cpp; sourceTree = "<group>"; };
+		A97962012328063700299006 /* unify_const_pass.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = unify_const_pass.cpp; sourceTree = "<group>"; };
+		A97962022328063700299006 /* type_manager.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = type_manager.cpp; sourceTree = "<group>"; };
+		A97962032328063700299006 /* generate_webgpu_initializers_pass.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = generate_webgpu_initializers_pass.cpp; sourceTree = "<group>"; };
+		A97962042328063700299006 /* private_to_local_pass.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = private_to_local_pass.h; sourceTree = "<group>"; };
+		A97962052328063700299006 /* convert_to_half_pass.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = convert_to_half_pass.h; sourceTree = "<group>"; };
+		A97962062328063700299006 /* relax_float_ops_pass.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = relax_float_ops_pass.h; sourceTree = "<group>"; };
+		A97962072328063700299006 /* inline_pass.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = inline_pass.cpp; sourceTree = "<group>"; };
+		A97962082328063700299006 /* def_use_manager.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = def_use_manager.h; sourceTree = "<group>"; };
+		A97962092328063700299006 /* ir_loader.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = ir_loader.cpp; sourceTree = "<group>"; };
+		A979620A2328063700299006 /* cfg_cleanup_pass.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = cfg_cleanup_pass.h; sourceTree = "<group>"; };
+		A979620B2328063700299006 /* licm_pass.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = licm_pass.cpp; sourceTree = "<group>"; };
+		A979620C2328063700299006 /* eliminate_dead_functions_pass.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = eliminate_dead_functions_pass.cpp; sourceTree = "<group>"; };
+		A979620D2328063700299006 /* local_redundancy_elimination.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = local_redundancy_elimination.h; sourceTree = "<group>"; };
+		A979620E2328063700299006 /* split_invalid_unreachable_pass.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = split_invalid_unreachable_pass.cpp; sourceTree = "<group>"; };
+		A979620F2328063700299006 /* loop_peeling.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = loop_peeling.h; sourceTree = "<group>"; };
+		A97962102328063700299006 /* vector_dce.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = vector_dce.cpp; sourceTree = "<group>"; };
+		A97962112328063700299006 /* block_merge_util.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = block_merge_util.h; sourceTree = "<group>"; };
+		A97962122328063700299006 /* loop_unroller.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = loop_unroller.cpp; sourceTree = "<group>"; };
+		A97962132328063700299006 /* desc_sroa.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = desc_sroa.h; sourceTree = "<group>"; };
+		A97962142328063700299006 /* constants.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = constants.cpp; sourceTree = "<group>"; };
+		A97962152328063700299006 /* loop_fusion_pass.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = loop_fusion_pass.h; sourceTree = "<group>"; };
+		A97962162328063700299006 /* struct_cfg_analysis.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = struct_cfg_analysis.h; sourceTree = "<group>"; };
+		A97962172328063700299006 /* inst_buff_addr_check_pass.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = inst_buff_addr_check_pass.cpp; sourceTree = "<group>"; };
+		A97962182328063700299006 /* def_use_manager.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = def_use_manager.cpp; sourceTree = "<group>"; };
+		A97962192328063700299006 /* wrap_opkill.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = wrap_opkill.h; sourceTree = "<group>"; };
+		A979621A2328063700299006 /* strip_reflect_info_pass.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = strip_reflect_info_pass.cpp; sourceTree = "<group>"; };
+		A979621B2328063700299006 /* decoration_manager.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = decoration_manager.h; sourceTree = "<group>"; };
+		A979621C2328063700299006 /* ccp_pass.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = ccp_pass.cpp; sourceTree = "<group>"; };
+		A979621D2328063700299006 /* process_lines_pass.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = process_lines_pass.h; sourceTree = "<group>"; };
+		A979621E2328063700299006 /* local_single_block_elim_pass.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = local_single_block_elim_pass.h; sourceTree = "<group>"; };
+		A979621F2328063700299006 /* pch_source_opt.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = pch_source_opt.cpp; sourceTree = "<group>"; };
+		A97962202328063700299006 /* inst_buff_addr_check_pass.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = inst_buff_addr_check_pass.h; sourceTree = "<group>"; };
+		A97962212328063700299006 /* strength_reduction_pass.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = strength_reduction_pass.h; sourceTree = "<group>"; };
+		A97962222328063700299006 /* aggressive_dead_code_elim_pass.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = aggressive_dead_code_elim_pass.cpp; sourceTree = "<group>"; };
+		A97962232328063700299006 /* eliminate_dead_functions_util.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = eliminate_dead_functions_util.cpp; sourceTree = "<group>"; };
+		A97962242328063700299006 /* simplification_pass.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = simplification_pass.cpp; sourceTree = "<group>"; };
+		A97962252328063700299006 /* dead_branch_elim_pass.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = dead_branch_elim_pass.cpp; sourceTree = "<group>"; };
+		A97962262328063700299006 /* flatten_decoration_pass.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = flatten_decoration_pass.cpp; sourceTree = "<group>"; };
+		A97962272328063700299006 /* dead_insert_elim_pass.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = dead_insert_elim_pass.h; sourceTree = "<group>"; };
+		A97962282328063700299006 /* folding_rules.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = folding_rules.cpp; sourceTree = "<group>"; };
+		A97962292328063700299006 /* freeze_spec_constant_value_pass.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = freeze_spec_constant_value_pass.h; sourceTree = "<group>"; };
+		A979622A2328063700299006 /* ir_context.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = ir_context.cpp; sourceTree = "<group>"; };
+		A979622B2328063700299006 /* instrument_pass.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = instrument_pass.h; sourceTree = "<group>"; };
+		A979622C2328063700299006 /* mem_pass.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = mem_pass.h; sourceTree = "<group>"; };
+		A979622D2328063700299006 /* loop_descriptor.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = loop_descriptor.cpp; sourceTree = "<group>"; };
+		A979622E2328063700299006 /* local_ssa_elim_pass.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = local_ssa_elim_pass.cpp; sourceTree = "<group>"; };
+		A979622F2328063700299006 /* eliminate_dead_members_pass.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = eliminate_dead_members_pass.h; sourceTree = "<group>"; };
+		A97962302328063700299006 /* function.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = function.cpp; sourceTree = "<group>"; };
+		A97962312328063700299006 /* instruction_list.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = instruction_list.cpp; sourceTree = "<group>"; };
+		A97962322328063700299006 /* composite.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = composite.cpp; sourceTree = "<group>"; };
+		A97962332328063700299006 /* convert_to_half_pass.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = convert_to_half_pass.cpp; sourceTree = "<group>"; };
+		A97962342328063700299006 /* process_lines_pass.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = process_lines_pass.cpp; sourceTree = "<group>"; };
+		A97962352328063700299006 /* inline_pass.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = inline_pass.h; sourceTree = "<group>"; };
+		A97962362328063700299006 /* loop_dependence.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = loop_dependence.h; sourceTree = "<group>"; };
+		A97962372328063700299006 /* value_number_table.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = value_number_table.h; sourceTree = "<group>"; };
+		A97962382328063700299006 /* flatten_decoration_pass.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = flatten_decoration_pass.h; sourceTree = "<group>"; };
+		A97962392328063700299006 /* if_conversion.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = if_conversion.cpp; sourceTree = "<group>"; };
+		A979623A2328063700299006 /* inline_exhaustive_pass.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = inline_exhaustive_pass.h; sourceTree = "<group>"; };
+		A979623B2328063700299006 /* constants.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = constants.h; sourceTree = "<group>"; };
+		A979623C2328063700299006 /* eliminate_dead_members_pass.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = eliminate_dead_members_pass.cpp; sourceTree = "<group>"; };
+		A979623D2328063700299006 /* strength_reduction_pass.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = strength_reduction_pass.cpp; sourceTree = "<group>"; };
+		A979623E2328063700299006 /* desc_sroa.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = desc_sroa.cpp; sourceTree = "<group>"; };
+		A979623F2328063700299006 /* block_merge_util.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = block_merge_util.cpp; sourceTree = "<group>"; };
+		A97962402328063700299006 /* upgrade_memory_model.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = upgrade_memory_model.h; sourceTree = "<group>"; };
+		A97962412328063700299006 /* copy_prop_arrays.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = copy_prop_arrays.cpp; sourceTree = "<group>"; };
+		A97962422328063700299006 /* pass_manager.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = pass_manager.cpp; sourceTree = "<group>"; };
+		A97962432328063700299006 /* inline_exhaustive_pass.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = inline_exhaustive_pass.cpp; sourceTree = "<group>"; };
+		A97962442328063700299006 /* loop_fission.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = loop_fission.h; sourceTree = "<group>"; };
+		A97962452328063700299006 /* workaround1209.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = workaround1209.h; sourceTree = "<group>"; };
+		A97962462328063700299006 /* loop_fusion_pass.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = loop_fusion_pass.cpp; sourceTree = "<group>"; };
+		A97962472328063700299006 /* log.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = log.h; sourceTree = "<group>"; };
+		A97962482328063700299006 /* split_invalid_unreachable_pass.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = split_invalid_unreachable_pass.h; sourceTree = "<group>"; };
+		A97962492328063700299006 /* copy_prop_arrays.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = copy_prop_arrays.h; sourceTree = "<group>"; };
+		A979624A2328063700299006 /* eliminate_dead_constant_pass.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = eliminate_dead_constant_pass.h; sourceTree = "<group>"; };
+		A979624B2328063700299006 /* dead_insert_elim_pass.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = dead_insert_elim_pass.cpp; sourceTree = "<group>"; };
+		A979624C2328063700299006 /* ssa_rewrite_pass.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = ssa_rewrite_pass.h; sourceTree = "<group>"; };
+		A979624D2328063700299006 /* scalar_analysis.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = scalar_analysis.cpp; sourceTree = "<group>"; };
+		A979624E2328063700299006 /* dead_variable_elimination.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = dead_variable_elimination.h; sourceTree = "<group>"; };
+		A979624F2328063700299006 /* block_merge_pass.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = block_merge_pass.cpp; sourceTree = "<group>"; };
+		A97962502328063700299006 /* dominator_analysis.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = dominator_analysis.h; sourceTree = "<group>"; };
+		A97962512328063700299006 /* pass.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = pass.h; sourceTree = "<group>"; };
+		A97962522328063700299006 /* folding_rules.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = folding_rules.h; sourceTree = "<group>"; };
+		A97962532328063700299006 /* eliminate_dead_functions_pass.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = eliminate_dead_functions_pass.h; sourceTree = "<group>"; };
+		A97962542328063700299006 /* eliminate_dead_functions_util.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = eliminate_dead_functions_util.h; sourceTree = "<group>"; };
+		A97962552328063700299006 /* fold.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = fold.h; sourceTree = "<group>"; };
+		A97962562328063700299006 /* local_single_store_elim_pass.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = local_single_store_elim_pass.cpp; sourceTree = "<group>"; };
+		A97962572328063700299006 /* dead_branch_elim_pass.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = dead_branch_elim_pass.h; sourceTree = "<group>"; };
+		A97962582328063700299006 /* private_to_local_pass.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = private_to_local_pass.cpp; sourceTree = "<group>"; };
+		A97962592328063700299006 /* scalar_analysis_nodes.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = scalar_analysis_nodes.h; sourceTree = "<group>"; };
+		A979625A2328063700299006 /* propagator.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = propagator.cpp; sourceTree = "<group>"; };
+		A979625B2328063700299006 /* fix_storage_class.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = fix_storage_class.h; sourceTree = "<group>"; };
+		A979625C2328063700299006 /* loop_dependence_helpers.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = loop_dependence_helpers.cpp; sourceTree = "<group>"; };
+		A979625D2328063700299006 /* set_spec_constant_default_value_pass.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = set_spec_constant_default_value_pass.cpp; sourceTree = "<group>"; };
+		A979625E2328063700299006 /* passes.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = passes.h; sourceTree = "<group>"; };
+		A979625F2328063700299006 /* fold.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = fold.cpp; sourceTree = "<group>"; };
+		A97962602328063700299006 /* amd_ext_to_khr.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = amd_ext_to_khr.cpp; sourceTree = "<group>"; };
+		A97962612328063700299006 /* strip_reflect_info_pass.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = strip_reflect_info_pass.h; sourceTree = "<group>"; };
+		A97962622328063700299006 /* scalar_replacement_pass.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = scalar_replacement_pass.cpp; sourceTree = "<group>"; };
+		A97962632328063700299006 /* simplification_pass.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = simplification_pass.h; sourceTree = "<group>"; };
+		A97962642328063700299006 /* remove_duplicates_pass.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = remove_duplicates_pass.h; sourceTree = "<group>"; };
+		A97962652328063700299006 /* redundancy_elimination.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = redundancy_elimination.cpp; sourceTree = "<group>"; };
+		A97962662328063700299006 /* reflect.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = reflect.h; sourceTree = "<group>"; };
+		A97962672328063700299006 /* workaround1209.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = workaround1209.cpp; sourceTree = "<group>"; };
+		A97962682328063700299006 /* null_pass.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = null_pass.h; sourceTree = "<group>"; };
+		A97962692328063700299006 /* relax_float_ops_pass.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = relax_float_ops_pass.cpp; sourceTree = "<group>"; };
+		A979626A2328063700299006 /* const_folding_rules.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = const_folding_rules.h; sourceTree = "<group>"; };
+		A979626B2328063700299006 /* scalar_replacement_pass.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = scalar_replacement_pass.h; sourceTree = "<group>"; };
+		A979626C2328063700299006 /* instruction.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = instruction.cpp; sourceTree = "<group>"; };
+		A979626D2328063700299006 /* pch_source_opt.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = pch_source_opt.h; sourceTree = "<group>"; };
+		A979626E2328063700299006 /* reduce_load_size.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = reduce_load_size.cpp; sourceTree = "<group>"; };
+		A979626F2328063700299006 /* redundancy_elimination.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = redundancy_elimination.h; sourceTree = "<group>"; };
+		A97962702328063700299006 /* fix_storage_class.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = fix_storage_class.cpp; sourceTree = "<group>"; };
+		A97962712328063700299006 /* value_number_table.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = value_number_table.cpp; sourceTree = "<group>"; };
+		A97962722328063700299006 /* local_ssa_elim_pass.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = local_ssa_elim_pass.h; sourceTree = "<group>"; };
+		A97962732328063700299006 /* inline_opaque_pass.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = inline_opaque_pass.cpp; sourceTree = "<group>"; };
+		A97962742328063700299006 /* replace_invalid_opc.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = replace_invalid_opc.cpp; sourceTree = "<group>"; };
+		A97962752328063700299006 /* loop_utils.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = loop_utils.h; sourceTree = "<group>"; };
+		A97962762328063700299006 /* module.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = module.h; sourceTree = "<group>"; };
+		A97962772328063700299006 /* dominator_analysis.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = dominator_analysis.cpp; sourceTree = "<group>"; };
+		A97962782328063700299006 /* decompose_initialized_variables_pass.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = decompose_initialized_variables_pass.cpp; sourceTree = "<group>"; };
+		A97962792328063700299006 /* ir_builder.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = ir_builder.h; sourceTree = "<group>"; };
+		A979627A2328063700299006 /* loop_unswitch_pass.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = loop_unswitch_pass.h; sourceTree = "<group>"; };
+		A979627B2328063700299006 /* cfg.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = cfg.h; sourceTree = "<group>"; };
+		A979627C2328063700299006 /* code_sink.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = code_sink.h; sourceTree = "<group>"; };
+		A979627D2328063700299006 /* loop_descriptor.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = loop_descriptor.h; sourceTree = "<group>"; };
+		A979627E2328063700299006 /* generate_webgpu_initializers_pass.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = generate_webgpu_initializers_pass.h; sourceTree = "<group>"; };
+		A979627F2328063700299006 /* instruction.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = instruction.h; sourceTree = "<group>"; };
+		A97962802328063700299006 /* aggressive_dead_code_elim_pass.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = aggressive_dead_code_elim_pass.h; sourceTree = "<group>"; };
+		A97962812328063700299006 /* struct_cfg_analysis.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = struct_cfg_analysis.cpp; sourceTree = "<group>"; };
+		A97962822328063700299006 /* vector_dce.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = vector_dce.h; sourceTree = "<group>"; };
+		A97962832328063700299006 /* combine_access_chains.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = combine_access_chains.h; sourceTree = "<group>"; };
+		A97962842328063700299006 /* pass_manager.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = pass_manager.h; sourceTree = "<group>"; };
+		A97962852328063700299006 /* local_access_chain_convert_pass.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = local_access_chain_convert_pass.cpp; sourceTree = "<group>"; };
+		A97962862328063700299006 /* basic_block.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = basic_block.cpp; sourceTree = "<group>"; };
+		A97962872328063700299006 /* iterator.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = iterator.h; sourceTree = "<group>"; };
+		A97962882328063700299006 /* licm_pass.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = licm_pass.h; sourceTree = "<group>"; };
+		A97962892328063700299006 /* build_module.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = build_module.h; sourceTree = "<group>"; };
+		A979628A2328063700299006 /* ccp_pass.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = ccp_pass.h; sourceTree = "<group>"; };
+		A979628B2328063700299006 /* graphics_robust_access_pass.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = graphics_robust_access_pass.cpp; sourceTree = "<group>"; };
+		A979628C2328063700299006 /* decompose_initialized_variables_pass.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = decompose_initialized_variables_pass.h; sourceTree = "<group>"; };
+		A979628D2328063700299006 /* function.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = function.h; sourceTree = "<group>"; };
+		A979628E2328063700299006 /* loop_fusion.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = loop_fusion.cpp; sourceTree = "<group>"; };
+		A979628F2328063700299006 /* upgrade_memory_model.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = upgrade_memory_model.cpp; sourceTree = "<group>"; };
+		A97962902328063700299006 /* feature_manager.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = feature_manager.h; sourceTree = "<group>"; };
+		A97962912328063700299006 /* inst_bindless_check_pass.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = inst_bindless_check_pass.h; sourceTree = "<group>"; };
+		A97962922328063700299006 /* scalar_analysis_simplification.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = scalar_analysis_simplification.cpp; sourceTree = "<group>"; };
+		A97962932328063700299006 /* set_spec_constant_default_value_pass.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = set_spec_constant_default_value_pass.h; sourceTree = "<group>"; };
+		A97962942328063700299006 /* dominator_tree.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = dominator_tree.h; sourceTree = "<group>"; };
+		A97962952328063700299006 /* legalize_vector_shuffle_pass.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = legalize_vector_shuffle_pass.cpp; sourceTree = "<group>"; };
+		A97962962328063700299006 /* type_manager.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = type_manager.h; sourceTree = "<group>"; };
+		A97962972328063700299006 /* compact_ids_pass.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = compact_ids_pass.cpp; sourceTree = "<group>"; };
+		A97962982328063700299006 /* loop_peeling.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = loop_peeling.cpp; sourceTree = "<group>"; };
+		A97962992328063700299006 /* table.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = table.h; sourceTree = "<group>"; };
+		A97962DF2328063700299006 /* ext_inst.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = ext_inst.h; sourceTree = "<group>"; };
+		A97962E02328063700299006 /* diagnostic.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = diagnostic.cpp; sourceTree = "<group>"; };
+		A97962E12328063700299006 /* latest_version_spirv_header.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = latest_version_spirv_header.h; sourceTree = "<group>"; };
+		A97962E22328063700299006 /* libspirv.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = libspirv.cpp; sourceTree = "<group>"; };
+		A97962E32328063700299006 /* instruction.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = instruction.h; sourceTree = "<group>"; };
+		A97962E42328063700299006 /* spirv_optimizer_options.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = spirv_optimizer_options.h; sourceTree = "<group>"; };
+		A97962E52328063700299006 /* opcode.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = opcode.h; sourceTree = "<group>"; };
+		A97962E62328063700299006 /* operand.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = operand.cpp; sourceTree = "<group>"; };
+		A97962E72328063700299006 /* latest_version_glsl_std_450_header.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = latest_version_glsl_std_450_header.h; sourceTree = "<group>"; };
+		A97962E82328063700299006 /* extensions.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = extensions.h; sourceTree = "<group>"; };
+		A97962E92328063700299006 /* disassemble.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = disassemble.cpp; sourceTree = "<group>"; };
+		A97962EA2328063700299006 /* binary.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = binary.h; sourceTree = "<group>"; };
+		A97962EB2328063700299006 /* text_handler.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = text_handler.cpp; sourceTree = "<group>"; };
+		A97962ED2328063700299006 /* validate_annotation.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = validate_annotation.cpp; sourceTree = "<group>"; };
+		A97962EE2328063700299006 /* validate_misc.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = validate_misc.cpp; sourceTree = "<group>"; };
+		A97962EF2328063700299006 /* validate_cfg.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = validate_cfg.cpp; sourceTree = "<group>"; };
+		A97962F02328063700299006 /* validate_capability.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = validate_capability.cpp; sourceTree = "<group>"; };
+		A97962F12328063700299006 /* construct.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = construct.h; sourceTree = "<group>"; };
+		A97962F22328063700299006 /* validate_barriers.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = validate_barriers.cpp; sourceTree = "<group>"; };
+		A97962F32328063700299006 /* validate_non_uniform.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = validate_non_uniform.cpp; sourceTree = "<group>"; };
+		A97962F42328063700299006 /* validate_scopes.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = validate_scopes.cpp; sourceTree = "<group>"; };
+		A97962F52328063700299006 /* validate_atomics.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = validate_atomics.cpp; sourceTree = "<group>"; };
+		A97962F62328063700299006 /* basic_block.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = basic_block.h; sourceTree = "<group>"; };
+		A97962F72328063700299006 /* validate_instruction.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = validate_instruction.cpp; sourceTree = "<group>"; };
+		A97962F82328063700299006 /* validate_decorations.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = validate_decorations.cpp; sourceTree = "<group>"; };
+		A97962F92328063700299006 /* validate_debug.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = validate_debug.cpp; sourceTree = "<group>"; };
+		A97962FA2328063700299006 /* validate_builtins.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = validate_builtins.cpp; sourceTree = "<group>"; };
+		A97962FB2328063700299006 /* validate_interfaces.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = validate_interfaces.cpp; sourceTree = "<group>"; };
+		A97962FC2328063700299006 /* validate.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = validate.cpp; sourceTree = "<group>"; };
+		A97962FD2328063700299006 /* validation_state.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = validation_state.h; sourceTree = "<group>"; };
+		A97962FE2328063700299006 /* validate_constants.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = validate_constants.cpp; sourceTree = "<group>"; };
+		A97962FF2328063700299006 /* validate_bitwise.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = validate_bitwise.cpp; sourceTree = "<group>"; };
+		A97963002328063700299006 /* validate_extensions.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = validate_extensions.cpp; sourceTree = "<group>"; };
+		A97963012328063700299006 /* construct.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = construct.cpp; sourceTree = "<group>"; };
+		A97963022328063700299006 /* function.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = function.cpp; sourceTree = "<group>"; };
+		A97963032328063700299006 /* validate.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = validate.h; sourceTree = "<group>"; };
+		A97963042328063700299006 /* validate_adjacency.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = validate_adjacency.cpp; sourceTree = "<group>"; };
+		A97963052328063700299006 /* validate_conversion.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = validate_conversion.cpp; sourceTree = "<group>"; };
+		A97963062328063700299006 /* validate_small_type_uses.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = validate_small_type_uses.cpp; sourceTree = "<group>"; };
+		A97963072328063700299006 /* validate_datarules.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = validate_datarules.cpp; sourceTree = "<group>"; };
+		A97963082328063700299006 /* validate_scopes.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = validate_scopes.h; sourceTree = "<group>"; };
+		A97963092328063700299006 /* validate_id.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = validate_id.cpp; sourceTree = "<group>"; };
+		A979630A2328063700299006 /* validate_memory_semantics.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = validate_memory_semantics.h; sourceTree = "<group>"; };
+		A979630B2328063700299006 /* validate_arithmetics.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = validate_arithmetics.cpp; sourceTree = "<group>"; };
+		A979630C2328063700299006 /* validate_mode_setting.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = validate_mode_setting.cpp; sourceTree = "<group>"; };
+		A979630D2328063700299006 /* validate_memory_semantics.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = validate_memory_semantics.cpp; sourceTree = "<group>"; };
+		A979630E2328063700299006 /* validate_logicals.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = validate_logicals.cpp; sourceTree = "<group>"; };
+		A979630F2328063700299006 /* validate_derivatives.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = validate_derivatives.cpp; sourceTree = "<group>"; };
+		A97963102328063700299006 /* validate_memory.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = validate_memory.cpp; sourceTree = "<group>"; };
+		A97963112328063700299006 /* validate_image.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = validate_image.cpp; sourceTree = "<group>"; };
+		A97963122328063700299006 /* validate_literals.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = validate_literals.cpp; sourceTree = "<group>"; };
+		A97963132328063700299006 /* instruction.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = instruction.cpp; sourceTree = "<group>"; };
+		A97963142328063700299006 /* validate_type.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = validate_type.cpp; sourceTree = "<group>"; };
+		A97963152328063700299006 /* instruction.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = instruction.h; sourceTree = "<group>"; };
+		A97963162328063700299006 /* validate_execution_limitations.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = validate_execution_limitations.cpp; sourceTree = "<group>"; };
+		A97963172328063700299006 /* validate_layout.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = validate_layout.cpp; sourceTree = "<group>"; };
+		A97963182328063700299006 /* basic_block.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = basic_block.cpp; sourceTree = "<group>"; };
+		A97963192328063700299006 /* validate_function.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = validate_function.cpp; sourceTree = "<group>"; };
+		A979631A2328063700299006 /* function.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = function.h; sourceTree = "<group>"; };
+		A979631B2328063700299006 /* validate_composites.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = validate_composites.cpp; sourceTree = "<group>"; };
+		A979631C2328063700299006 /* validation_state.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = validation_state.cpp; sourceTree = "<group>"; };
+		A979631D2328063700299006 /* validate_primitives.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = validate_primitives.cpp; sourceTree = "<group>"; };
+		A979631E2328063700299006 /* decoration.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = decoration.h; sourceTree = "<group>"; };
 		A9C2104521D14FD7006BA2D3 /* fetchDependencies */ = {isa = PBXFileReference; lastKnownFileType = text; path = fetchDependencies; sourceTree = "<group>"; };
 		A9C2104721D15843006BA2D3 /* ExternalRevisions */ = {isa = PBXFileReference; lastKnownFileType = folder; path = ExternalRevisions; sourceTree = "<group>"; };
-		A9C2EF7822E7833C001763CE /* spirv_target_env.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = spirv_target_env.cpp; sourceTree = "<group>"; };
-		A9C2EF7922E7833C001763CE /* extinst.spv-amd-shader-explicit-vertex-parameter.grammar.json */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.json; path = "extinst.spv-amd-shader-explicit-vertex-parameter.grammar.json"; sourceTree = "<group>"; };
-		A9C2EF7A22E7833C001763CE /* spirv_fuzzer_options.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = spirv_fuzzer_options.h; sourceTree = "<group>"; };
-		A9C2EF7B22E7833C001763CE /* assembly_grammar.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = assembly_grammar.h; sourceTree = "<group>"; };
-		A9C2EF7C22E7833C001763CE /* enum_set.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = enum_set.h; sourceTree = "<group>"; };
-		A9C2EF7D22E7833C001763CE /* CMakeLists.txt */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text; path = CMakeLists.txt; sourceTree = "<group>"; };
-		A9C2EF7E22E7833C001763CE /* extinst.spv-amd-shader-ballot.grammar.json */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.json; path = "extinst.spv-amd-shader-ballot.grammar.json"; sourceTree = "<group>"; };
-		A9C2EF7F22E7833C001763CE /* text.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = text.cpp; sourceTree = "<group>"; };
-		A9C2EF8022E7833C001763CE /* assembly_grammar.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = assembly_grammar.cpp; sourceTree = "<group>"; };
-		A9C2EF8122E7833C001763CE /* text.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = text.h; sourceTree = "<group>"; };
-		A9C2EF8222E7833C001763CE /* extensions.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = extensions.cpp; sourceTree = "<group>"; };
-		A9C2EF8322E7833C001763CE /* pch_source.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = pch_source.cpp; sourceTree = "<group>"; };
-		A9C2EF8522E7833C001763CE /* parse_number.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = parse_number.h; sourceTree = "<group>"; };
-		A9C2EF8622E7833C001763CE /* ilist_node.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = ilist_node.h; sourceTree = "<group>"; };
-		A9C2EF8722E7833C001763CE /* make_unique.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = make_unique.h; sourceTree = "<group>"; };
-		A9C2EF8822E7833C001763CE /* string_utils.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = string_utils.h; sourceTree = "<group>"; };
-		A9C2EF8922E7833C001763CE /* small_vector.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = small_vector.h; sourceTree = "<group>"; };
-		A9C2EF8A22E7833C001763CE /* timer.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = timer.cpp; sourceTree = "<group>"; };
-		A9C2EF8B22E7833C001763CE /* timer.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = timer.h; sourceTree = "<group>"; };
-		A9C2EF8C22E7833C001763CE /* string_utils.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = string_utils.cpp; sourceTree = "<group>"; };
-		A9C2EF8D22E7833C001763CE /* bit_vector.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = bit_vector.h; sourceTree = "<group>"; };
-		A9C2EF8E22E7833C001763CE /* bitutils.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = bitutils.h; sourceTree = "<group>"; };
-		A9C2EF8F22E7833C001763CE /* hex_float.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = hex_float.h; sourceTree = "<group>"; };
-		A9C2EF9022E7833C001763CE /* parse_number.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = parse_number.cpp; sourceTree = "<group>"; };
-		A9C2EF9122E7833C001763CE /* bit_vector.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = bit_vector.cpp; sourceTree = "<group>"; };
-		A9C2EF9222E7833C001763CE /* ilist.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = ilist.h; sourceTree = "<group>"; };
-		A9C2EF9322E7833C001763CE /* spirv_target_env.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = spirv_target_env.h; sourceTree = "<group>"; };
-		A9C2EF9422E7833C001763CE /* table.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = table.cpp; sourceTree = "<group>"; };
-		A9C2EF9622E7833C001763CE /* operand_to_undef_reduction_opportunity_finder.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = operand_to_undef_reduction_opportunity_finder.h; sourceTree = "<group>"; };
-		A9C2EF9722E7833C001763CE /* remove_selection_reduction_opportunity.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = remove_selection_reduction_opportunity.cpp; sourceTree = "<group>"; };
-		A9C2EF9822E7833C001763CE /* remove_block_reduction_opportunity.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = remove_block_reduction_opportunity.h; sourceTree = "<group>"; };
-		A9C2EF9922E7833C001763CE /* operand_to_dominating_id_reduction_opportunity_finder.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = operand_to_dominating_id_reduction_opportunity_finder.h; sourceTree = "<group>"; };
-		A9C2EF9A22E7833C001763CE /* reduction_pass.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = reduction_pass.cpp; sourceTree = "<group>"; };
-		A9C2EF9B22E7833C001763CE /* operand_to_const_reduction_opportunity_finder.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = operand_to_const_reduction_opportunity_finder.cpp; sourceTree = "<group>"; };
-		A9C2EF9C22E7833C001763CE /* operand_to_const_reduction_opportunity_finder.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = operand_to_const_reduction_opportunity_finder.h; sourceTree = "<group>"; };
-		A9C2EF9D22E7833C001763CE /* CMakeLists.txt */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text; path = CMakeLists.txt; sourceTree = "<group>"; };
-		A9C2EF9E22E7833C001763CE /* reduction_util.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = reduction_util.cpp; sourceTree = "<group>"; };
-		A9C2EF9F22E7833C001763CE /* structured_loop_to_selection_reduction_opportunity_finder.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = structured_loop_to_selection_reduction_opportunity_finder.cpp; sourceTree = "<group>"; };
-		A9C2EFA022E7833C001763CE /* simple_conditional_branch_to_branch_reduction_opportunity.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = simple_conditional_branch_to_branch_reduction_opportunity.h; sourceTree = "<group>"; };
-		A9C2EFA122E7833C001763CE /* remove_function_reduction_opportunity_finder.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = remove_function_reduction_opportunity_finder.cpp; sourceTree = "<group>"; };
-		A9C2EFA222E7833C001763CE /* remove_instruction_reduction_opportunity.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = remove_instruction_reduction_opportunity.h; sourceTree = "<group>"; };
-		A9C2EFA322E7833C001763CE /* conditional_branch_to_simple_conditional_branch_reduction_opportunity.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = conditional_branch_to_simple_conditional_branch_reduction_opportunity.h; sourceTree = "<group>"; };
-		A9C2EFA422E7833C001763CE /* simple_conditional_branch_to_branch_reduction_opportunity.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = simple_conditional_branch_to_branch_reduction_opportunity.cpp; sourceTree = "<group>"; };
-		A9C2EFA522E7833C001763CE /* remove_function_reduction_opportunity.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = remove_function_reduction_opportunity.cpp; sourceTree = "<group>"; };
-		A9C2EFA622E7833C001763CE /* remove_opname_instruction_reduction_opportunity_finder.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = remove_opname_instruction_reduction_opportunity_finder.h; sourceTree = "<group>"; };
-		A9C2EFA722E7833C001763CE /* simple_conditional_branch_to_branch_opportunity_finder.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = simple_conditional_branch_to_branch_opportunity_finder.cpp; sourceTree = "<group>"; };
-		A9C2EFA822E7833C001763CE /* remove_selection_reduction_opportunity_finder.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = remove_selection_reduction_opportunity_finder.cpp; sourceTree = "<group>"; };
-		A9C2EFA922E7833C001763CE /* conditional_branch_to_simple_conditional_branch_reduction_opportunity.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = conditional_branch_to_simple_conditional_branch_reduction_opportunity.cpp; sourceTree = "<group>"; };
-		A9C2EFAA22E7833C001763CE /* simple_conditional_branch_to_branch_opportunity_finder.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = simple_conditional_branch_to_branch_opportunity_finder.h; sourceTree = "<group>"; };
-		A9C2EFAB22E7833C001763CE /* merge_blocks_reduction_opportunity.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = merge_blocks_reduction_opportunity.cpp; sourceTree = "<group>"; };
-		A9C2EFAC22E7833C001763CE /* change_operand_reduction_opportunity.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = change_operand_reduction_opportunity.cpp; sourceTree = "<group>"; };
-		A9C2EFAD22E7833C001763CE /* structured_loop_to_selection_reduction_opportunity.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = structured_loop_to_selection_reduction_opportunity.h; sourceTree = "<group>"; };
-		A9C2EFAE22E7833C001763CE /* remove_function_reduction_opportunity.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = remove_function_reduction_opportunity.h; sourceTree = "<group>"; };
-		A9C2EFAF22E7833C001763CE /* change_operand_to_undef_reduction_opportunity.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = change_operand_to_undef_reduction_opportunity.h; sourceTree = "<group>"; };
-		A9C2EFB022E7833C001763CE /* remove_unreferenced_instruction_reduction_opportunity_finder.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = remove_unreferenced_instruction_reduction_opportunity_finder.cpp; sourceTree = "<group>"; };
-		A9C2EFB122E7833C001763CE /* structured_loop_to_selection_reduction_opportunity_finder.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = structured_loop_to_selection_reduction_opportunity_finder.h; sourceTree = "<group>"; };
-		A9C2EFB222E7833C001763CE /* remove_selection_reduction_opportunity.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = remove_selection_reduction_opportunity.h; sourceTree = "<group>"; };
-		A9C2EFB322E7833C001763CE /* remove_instruction_reduction_opportunity.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = remove_instruction_reduction_opportunity.cpp; sourceTree = "<group>"; };
-		A9C2EFB422E7833C001763CE /* remove_selection_reduction_opportunity_finder.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = remove_selection_reduction_opportunity_finder.h; sourceTree = "<group>"; };
-		A9C2EFB522E7833C001763CE /* merge_blocks_reduction_opportunity_finder.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = merge_blocks_reduction_opportunity_finder.h; sourceTree = "<group>"; };
-		A9C2EFB622E7833C001763CE /* remove_opname_instruction_reduction_opportunity_finder.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = remove_opname_instruction_reduction_opportunity_finder.cpp; sourceTree = "<group>"; };
-		A9C2EFB722E7833C001763CE /* pch_source_reduce.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = pch_source_reduce.cpp; sourceTree = "<group>"; };
-		A9C2EFB822E7833C001763CE /* reducer.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = reducer.cpp; sourceTree = "<group>"; };
-		A9C2EFB922E7833C001763CE /* operand_to_undef_reduction_opportunity_finder.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = operand_to_undef_reduction_opportunity_finder.cpp; sourceTree = "<group>"; };
-		A9C2EFBA22E7833C001763CE /* remove_function_reduction_opportunity_finder.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = remove_function_reduction_opportunity_finder.h; sourceTree = "<group>"; };
-		A9C2EFBB22E7833C001763CE /* pch_source_reduce.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = pch_source_reduce.h; sourceTree = "<group>"; };
-		A9C2EFBC22E7833C001763CE /* remove_unreferenced_instruction_reduction_opportunity_finder.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = remove_unreferenced_instruction_reduction_opportunity_finder.h; sourceTree = "<group>"; };
-		A9C2EFBD22E7833C001763CE /* merge_blocks_reduction_opportunity_finder.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = merge_blocks_reduction_opportunity_finder.cpp; sourceTree = "<group>"; };
-		A9C2EFBE22E7833C001763CE /* reduction_opportunity.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = reduction_opportunity.cpp; sourceTree = "<group>"; };
-		A9C2EFBF22E7833C001763CE /* reducer.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = reducer.h; sourceTree = "<group>"; };
-		A9C2EFC022E7833C001763CE /* change_operand_to_undef_reduction_opportunity.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = change_operand_to_undef_reduction_opportunity.cpp; sourceTree = "<group>"; };
-		A9C2EFC122E7833C001763CE /* reduction_opportunity.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = reduction_opportunity.h; sourceTree = "<group>"; };
-		A9C2EFC222E7833C001763CE /* conditional_branch_to_simple_conditional_branch_opportunity_finder.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = conditional_branch_to_simple_conditional_branch_opportunity_finder.h; sourceTree = "<group>"; };
-		A9C2EFC322E7833C001763CE /* operand_to_dominating_id_reduction_opportunity_finder.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = operand_to_dominating_id_reduction_opportunity_finder.cpp; sourceTree = "<group>"; };
-		A9C2EFC422E7833C001763CE /* reduction_opportunity_finder.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = reduction_opportunity_finder.h; sourceTree = "<group>"; };
-		A9C2EFC522E7833C001763CE /* change_operand_reduction_opportunity.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = change_operand_reduction_opportunity.h; sourceTree = "<group>"; };
-		A9C2EFC622E7833C001763CE /* remove_block_reduction_opportunity_finder.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = remove_block_reduction_opportunity_finder.h; sourceTree = "<group>"; };
-		A9C2EFC722E7833C001763CE /* remove_block_reduction_opportunity_finder.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = remove_block_reduction_opportunity_finder.cpp; sourceTree = "<group>"; };
-		A9C2EFC822E7833C001763CE /* reduction_util.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = reduction_util.h; sourceTree = "<group>"; };
-		A9C2EFC922E7833C001763CE /* merge_blocks_reduction_opportunity.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = merge_blocks_reduction_opportunity.h; sourceTree = "<group>"; };
-		A9C2EFCA22E7833C001763CE /* conditional_branch_to_simple_conditional_branch_opportunity_finder.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = conditional_branch_to_simple_conditional_branch_opportunity_finder.cpp; sourceTree = "<group>"; };
-		A9C2EFCB22E7833C001763CE /* structured_loop_to_selection_reduction_opportunity.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = structured_loop_to_selection_reduction_opportunity.cpp; sourceTree = "<group>"; };
-		A9C2EFCC22E7833C001763CE /* remove_block_reduction_opportunity.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = remove_block_reduction_opportunity.cpp; sourceTree = "<group>"; };
-		A9C2EFCD22E7833C001763CE /* reduction_pass.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = reduction_pass.h; sourceTree = "<group>"; };
-		A9C2EFCE22E7833C001763CE /* latest_version_opencl_std_header.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = latest_version_opencl_std_header.h; sourceTree = "<group>"; };
-		A9C2EFCF22E7833C001763CE /* spirv_optimizer_options.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = spirv_optimizer_options.cpp; sourceTree = "<group>"; };
-		A9C2EFD022E7833C001763CE /* cfa.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = cfa.h; sourceTree = "<group>"; };
-		A9C2EFD122E7833C001763CE /* pch_source.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = pch_source.h; sourceTree = "<group>"; };
-		A9C2EFD222E7833C001763CE /* enum_string_mapping.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = enum_string_mapping.h; sourceTree = "<group>"; };
-		A9C2EFD322E7833C001763CE /* spirv_fuzzer_options.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = spirv_fuzzer_options.cpp; sourceTree = "<group>"; };
-		A9C2EFD422E7833C001763CE /* spirv_reducer_options.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = spirv_reducer_options.h; sourceTree = "<group>"; };
-		A9C2EFD522E7833C001763CE /* spirv_validator_options.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = spirv_validator_options.cpp; sourceTree = "<group>"; };
-		A9C2EFD622E7833C001763CE /* extinst.spv-amd-shader-trinary-minmax.grammar.json */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.json; path = "extinst.spv-amd-shader-trinary-minmax.grammar.json"; sourceTree = "<group>"; };
-		A9C2EFD722E7833C001763CE /* print.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = print.cpp; sourceTree = "<group>"; };
-		A9C2EFD822E7833C001763CE /* spirv_definition.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = spirv_definition.h; sourceTree = "<group>"; };
-		A9C2EFD922E7833C001763CE /* operand.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = operand.h; sourceTree = "<group>"; };
-		A9C2EFDA22E7833C001763CE /* spirv_endian.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = spirv_endian.cpp; sourceTree = "<group>"; };
-		A9C2EFDB22E7833C001763CE /* macro.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = macro.h; sourceTree = "<group>"; };
-		A9C2EFDC22E7833C001763CE /* spirv_constant.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = spirv_constant.h; sourceTree = "<group>"; };
-		A9C2EFDD22E7833C001763CE /* extinst.spv-amd-gcn-shader.grammar.json */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.json; path = "extinst.spv-amd-gcn-shader.grammar.json"; sourceTree = "<group>"; };
-		A9C2EFDE22E7833C001763CE /* binary.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = binary.cpp; sourceTree = "<group>"; };
-		A9C2EFDF22E7833C001763CE /* spirv_validator_options.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = spirv_validator_options.h; sourceTree = "<group>"; };
-		A9C2EFE022E7833C001763CE /* enum_string_mapping.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = enum_string_mapping.cpp; sourceTree = "<group>"; };
-		A9C2EFE122E7833C001763CE /* text_handler.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = text_handler.h; sourceTree = "<group>"; };
-		A9C2EFE222E7833C001763CE /* parsed_operand.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = parsed_operand.h; sourceTree = "<group>"; };
-		A9C2EFE322E7833C001763CE /* name_mapper.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = name_mapper.h; sourceTree = "<group>"; };
-		A9C2EFE422E7833C001763CE /* spirv_reducer_options.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = spirv_reducer_options.cpp; sourceTree = "<group>"; };
-		A9C2EFE522E7833C001763CE /* parsed_operand.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = parsed_operand.cpp; sourceTree = "<group>"; };
-		A9C2EFE622E7833C001763CE /* diagnostic.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = diagnostic.h; sourceTree = "<group>"; };
-		A9C2EFE722E7833C001763CE /* spirv_endian.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = spirv_endian.h; sourceTree = "<group>"; };
-		A9C2EFE822E7833C001763CE /* name_mapper.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = name_mapper.cpp; sourceTree = "<group>"; };
-		A9C2EFE922E7833C001763CE /* extinst.debuginfo.grammar.json */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.json; path = extinst.debuginfo.grammar.json; sourceTree = "<group>"; };
-		A9C2EFEB22E7833C001763CE /* CMakeLists.txt */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text; path = CMakeLists.txt; sourceTree = "<group>"; };
-		A9C2EFEC22E7833C001763CE /* linker.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = linker.cpp; sourceTree = "<group>"; };
-		A9C2EFED22E7833C001763CE /* software_version.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = software_version.cpp; sourceTree = "<group>"; };
-		A9C2EFEE22E7833C001763CE /* opcode.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = opcode.cpp; sourceTree = "<group>"; };
-		A9C2EFEF22E7833C001763CE /* print.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = print.h; sourceTree = "<group>"; };
-		A9C2EFF022E7833C001763CE /* ext_inst.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = ext_inst.cpp; sourceTree = "<group>"; };
-		A9C2EFF122E7833C001763CE /* disassemble.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = disassemble.h; sourceTree = "<group>"; };
-		A9C2EFF322E7833C001763CE /* optimizer.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = optimizer.cpp; sourceTree = "<group>"; };
-		A9C2EFF422E7833C001763CE /* if_conversion.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = if_conversion.h; sourceTree = "<group>"; };
-		A9C2EFF522E7833C001763CE /* register_pressure.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = register_pressure.cpp; sourceTree = "<group>"; };
-		A9C2EFF622E7833C001763CE /* loop_utils.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = loop_utils.cpp; sourceTree = "<group>"; };
-		A9C2EFF722E7833C001763CE /* merge_return_pass.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = merge_return_pass.h; sourceTree = "<group>"; };
-		A9C2EFF822E7833C001763CE /* inline_opaque_pass.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = inline_opaque_pass.h; sourceTree = "<group>"; };
-		A9C2EFF922E7833C001763CE /* loop_fusion.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = loop_fusion.h; sourceTree = "<group>"; };
-		A9C2EFFA22E7833C001763CE /* combine_access_chains.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = combine_access_chains.cpp; sourceTree = "<group>"; };
-		A9C2EFFB22E7833C001763CE /* build_module.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = build_module.cpp; sourceTree = "<group>"; };
-		A9C2EFFC22E7833C001763CE /* composite.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = composite.h; sourceTree = "<group>"; };
-		A9C2EFFD22E7833C001763CE /* compact_ids_pass.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = compact_ids_pass.h; sourceTree = "<group>"; };
-		A9C2EFFE22E7833C001763CE /* register_pressure.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = register_pressure.h; sourceTree = "<group>"; };
-		A9C2EFFF22E7833C001763CE /* tree_iterator.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = tree_iterator.h; sourceTree = "<group>"; };
-		A9C2F00022E7833C001763CE /* strip_atomic_counter_memory_pass.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = strip_atomic_counter_memory_pass.h; sourceTree = "<group>"; };
-		A9C2F00122E7833C001763CE /* legalize_vector_shuffle_pass.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = legalize_vector_shuffle_pass.h; sourceTree = "<group>"; };
-		A9C2F00222E7833C001763CE /* local_single_store_elim_pass.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = local_single_store_elim_pass.h; sourceTree = "<group>"; };
-		A9C2F00322E7833C001763CE /* reduce_load_size.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = reduce_load_size.h; sourceTree = "<group>"; };
-		A9C2F00422E7833C001763CE /* code_sink.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = code_sink.cpp; sourceTree = "<group>"; };
-		A9C2F00522E7833C001763CE /* types.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = types.cpp; sourceTree = "<group>"; };
-		A9C2F00622E7833C001763CE /* scalar_analysis.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = scalar_analysis.h; sourceTree = "<group>"; };
-		A9C2F00722E7833C001763CE /* strip_debug_info_pass.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = strip_debug_info_pass.h; sourceTree = "<group>"; };
-		A9C2F00822E7833C001763CE /* cfg.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = cfg.cpp; sourceTree = "<group>"; };
-		A9C2F00922E7833C001763CE /* strip_atomic_counter_memory_pass.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = strip_atomic_counter_memory_pass.cpp; sourceTree = "<group>"; };
-		A9C2F00A22E7833C001763CE /* decoration_manager.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = decoration_manager.cpp; sourceTree = "<group>"; };
-		A9C2F00B22E7833C001763CE /* local_single_block_elim_pass.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = local_single_block_elim_pass.cpp; sourceTree = "<group>"; };
-		A9C2F00C22E7833C001763CE /* freeze_spec_constant_value_pass.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = freeze_spec_constant_value_pass.cpp; sourceTree = "<group>"; };
-		A9C2F00D22E7833C001763CE /* replace_invalid_opc.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = replace_invalid_opc.h; sourceTree = "<group>"; };
-		A9C2F00E22E7833C001763CE /* local_access_chain_convert_pass.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = local_access_chain_convert_pass.h; sourceTree = "<group>"; };
-		A9C2F00F22E7833C001763CE /* inst_bindless_check_pass.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = inst_bindless_check_pass.cpp; sourceTree = "<group>"; };
-		A9C2F01022E7833C001763CE /* local_redundancy_elimination.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = local_redundancy_elimination.cpp; sourceTree = "<group>"; };
-		A9C2F01122E7833C001763CE /* CMakeLists.txt */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text; path = CMakeLists.txt; sourceTree = "<group>"; };
-		A9C2F01222E7833C001763CE /* instrument_pass.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = instrument_pass.cpp; sourceTree = "<group>"; };
-		A9C2F01322E7833C001763CE /* propagator.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = propagator.h; sourceTree = "<group>"; };
-		A9C2F01422E7833C001763CE /* instruction_list.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = instruction_list.h; sourceTree = "<group>"; };
-		A9C2F01522E7833C001763CE /* feature_manager.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = feature_manager.cpp; sourceTree = "<group>"; };
-		A9C2F01622E7833C001763CE /* pass.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = pass.cpp; sourceTree = "<group>"; };
-		A9C2F01722E7833C001763CE /* loop_fission.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = loop_fission.cpp; sourceTree = "<group>"; };
-		A9C2F01822E7833C001763CE /* dominator_tree.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = dominator_tree.cpp; sourceTree = "<group>"; };
-		A9C2F01922E7833C001763CE /* merge_return_pass.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = merge_return_pass.cpp; sourceTree = "<group>"; };
-		A9C2F01A22E7833C001763CE /* ir_context.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = ir_context.h; sourceTree = "<group>"; };
-		A9C2F01B22E7833C001763CE /* eliminate_dead_constant_pass.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = eliminate_dead_constant_pass.cpp; sourceTree = "<group>"; };
-		A9C2F01C22E7833C001763CE /* cfg_cleanup_pass.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = cfg_cleanup_pass.cpp; sourceTree = "<group>"; };
-		A9C2F01D22E7833C001763CE /* const_folding_rules.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = const_folding_rules.cpp; sourceTree = "<group>"; };
-		A9C2F01E22E7833C001763CE /* loop_unroller.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = loop_unroller.h; sourceTree = "<group>"; };
-		A9C2F01F22E7833C001763CE /* strip_debug_info_pass.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = strip_debug_info_pass.cpp; sourceTree = "<group>"; };
-		A9C2F02022E7833C001763CE /* ssa_rewrite_pass.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = ssa_rewrite_pass.cpp; sourceTree = "<group>"; };
-		A9C2F02122E7833C001763CE /* loop_dependence.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = loop_dependence.cpp; sourceTree = "<group>"; };
-		A9C2F02222E7833C001763CE /* unify_const_pass.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = unify_const_pass.h; sourceTree = "<group>"; };
-		A9C2F02322E7833C001763CE /* ir_loader.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = ir_loader.h; sourceTree = "<group>"; };
-		A9C2F02422E7833C001763CE /* types.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = types.h; sourceTree = "<group>"; };
-		A9C2F02522E7833C001763CE /* fold_spec_constant_op_and_composite_pass.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = fold_spec_constant_op_and_composite_pass.h; sourceTree = "<group>"; };
-		A9C2F02622E7833C001763CE /* mem_pass.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = mem_pass.cpp; sourceTree = "<group>"; };
-		A9C2F02722E7833C001763CE /* basic_block.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = basic_block.h; sourceTree = "<group>"; };
-		A9C2F02822E7833C001763CE /* remove_duplicates_pass.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = remove_duplicates_pass.cpp; sourceTree = "<group>"; };
-		A9C2F02922E7833C001763CE /* dead_variable_elimination.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = dead_variable_elimination.cpp; sourceTree = "<group>"; };
-		A9C2F02A22E7833C001763CE /* block_merge_pass.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = block_merge_pass.h; sourceTree = "<group>"; };
-		A9C2F02B22E7833C001763CE /* module.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = module.cpp; sourceTree = "<group>"; };
-		A9C2F02C22E7833C001763CE /* fold_spec_constant_op_and_composite_pass.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = fold_spec_constant_op_and_composite_pass.cpp; sourceTree = "<group>"; };
-		A9C2F02D22E7833C001763CE /* loop_unswitch_pass.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = loop_unswitch_pass.cpp; sourceTree = "<group>"; };
-		A9C2F02E22E7833C001763CE /* unify_const_pass.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = unify_const_pass.cpp; sourceTree = "<group>"; };
-		A9C2F02F22E7833C001763CE /* type_manager.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = type_manager.cpp; sourceTree = "<group>"; };
-		A9C2F03022E7833C001763CE /* generate_webgpu_initializers_pass.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = generate_webgpu_initializers_pass.cpp; sourceTree = "<group>"; };
-		A9C2F03122E7833C001763CE /* private_to_local_pass.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = private_to_local_pass.h; sourceTree = "<group>"; };
-		A9C2F03222E7833C001763CE /* inline_pass.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = inline_pass.cpp; sourceTree = "<group>"; };
-		A9C2F03322E7833C001763CE /* def_use_manager.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = def_use_manager.h; sourceTree = "<group>"; };
-		A9C2F03422E7833C001763CE /* ir_loader.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = ir_loader.cpp; sourceTree = "<group>"; };
-		A9C2F03522E7833C001763CE /* cfg_cleanup_pass.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = cfg_cleanup_pass.h; sourceTree = "<group>"; };
-		A9C2F03622E7833C001763CE /* licm_pass.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = licm_pass.cpp; sourceTree = "<group>"; };
-		A9C2F03722E7833C001763CE /* eliminate_dead_functions_pass.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = eliminate_dead_functions_pass.cpp; sourceTree = "<group>"; };
-		A9C2F03822E7833C001763CE /* local_redundancy_elimination.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = local_redundancy_elimination.h; sourceTree = "<group>"; };
-		A9C2F03922E7833C001763CE /* split_invalid_unreachable_pass.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = split_invalid_unreachable_pass.cpp; sourceTree = "<group>"; };
-		A9C2F03A22E7833C001763CE /* loop_peeling.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = loop_peeling.h; sourceTree = "<group>"; };
-		A9C2F03B22E7833C001763CE /* vector_dce.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = vector_dce.cpp; sourceTree = "<group>"; };
-		A9C2F03C22E7833C001763CE /* block_merge_util.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = block_merge_util.h; sourceTree = "<group>"; };
-		A9C2F03D22E7833C001763CE /* loop_unroller.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = loop_unroller.cpp; sourceTree = "<group>"; };
-		A9C2F03E22E7833C001763CE /* constants.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = constants.cpp; sourceTree = "<group>"; };
-		A9C2F03F22E7833C001763CE /* loop_fusion_pass.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = loop_fusion_pass.h; sourceTree = "<group>"; };
-		A9C2F04022E7833C001763CE /* struct_cfg_analysis.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = struct_cfg_analysis.h; sourceTree = "<group>"; };
-		A9C2F04122E7833C001763CE /* def_use_manager.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = def_use_manager.cpp; sourceTree = "<group>"; };
-		A9C2F04222E7833C001763CE /* strip_reflect_info_pass.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = strip_reflect_info_pass.cpp; sourceTree = "<group>"; };
-		A9C2F04322E7833C001763CE /* decoration_manager.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = decoration_manager.h; sourceTree = "<group>"; };
-		A9C2F04422E7833C001763CE /* ccp_pass.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = ccp_pass.cpp; sourceTree = "<group>"; };
-		A9C2F04522E7833C001763CE /* process_lines_pass.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = process_lines_pass.h; sourceTree = "<group>"; };
-		A9C2F04622E7833C001763CE /* local_single_block_elim_pass.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = local_single_block_elim_pass.h; sourceTree = "<group>"; };
-		A9C2F04722E7833C001763CE /* pch_source_opt.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = pch_source_opt.cpp; sourceTree = "<group>"; };
-		A9C2F04822E7833C001763CE /* strength_reduction_pass.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = strength_reduction_pass.h; sourceTree = "<group>"; };
-		A9C2F04922E7833C001763CE /* aggressive_dead_code_elim_pass.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = aggressive_dead_code_elim_pass.cpp; sourceTree = "<group>"; };
-		A9C2F04A22E7833C001763CE /* eliminate_dead_functions_util.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = eliminate_dead_functions_util.cpp; sourceTree = "<group>"; };
-		A9C2F04B22E7833C001763CE /* simplification_pass.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = simplification_pass.cpp; sourceTree = "<group>"; };
-		A9C2F04C22E7833C001763CE /* dead_branch_elim_pass.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = dead_branch_elim_pass.cpp; sourceTree = "<group>"; };
-		A9C2F04D22E7833C001763CE /* flatten_decoration_pass.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = flatten_decoration_pass.cpp; sourceTree = "<group>"; };
-		A9C2F04E22E7833C001763CE /* dead_insert_elim_pass.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = dead_insert_elim_pass.h; sourceTree = "<group>"; };
-		A9C2F04F22E7833C001763CE /* folding_rules.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = folding_rules.cpp; sourceTree = "<group>"; };
-		A9C2F05022E7833C001763CE /* freeze_spec_constant_value_pass.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = freeze_spec_constant_value_pass.h; sourceTree = "<group>"; };
-		A9C2F05122E7833C001763CE /* ir_context.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = ir_context.cpp; sourceTree = "<group>"; };
-		A9C2F05222E7833C001763CE /* instrument_pass.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = instrument_pass.h; sourceTree = "<group>"; };
-		A9C2F05322E7833C001763CE /* mem_pass.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = mem_pass.h; sourceTree = "<group>"; };
-		A9C2F05422E7833C001763CE /* loop_descriptor.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = loop_descriptor.cpp; sourceTree = "<group>"; };
-		A9C2F05522E7833C001763CE /* local_ssa_elim_pass.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = local_ssa_elim_pass.cpp; sourceTree = "<group>"; };
-		A9C2F05622E7833C001763CE /* eliminate_dead_members_pass.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = eliminate_dead_members_pass.h; sourceTree = "<group>"; };
-		A9C2F05722E7833C001763CE /* function.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = function.cpp; sourceTree = "<group>"; };
-		A9C2F05822E7833C001763CE /* instruction_list.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = instruction_list.cpp; sourceTree = "<group>"; };
-		A9C2F05922E7833C001763CE /* composite.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = composite.cpp; sourceTree = "<group>"; };
-		A9C2F05A22E7833C001763CE /* process_lines_pass.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = process_lines_pass.cpp; sourceTree = "<group>"; };
-		A9C2F05B22E7833C001763CE /* inline_pass.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = inline_pass.h; sourceTree = "<group>"; };
-		A9C2F05C22E7833C001763CE /* loop_dependence.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = loop_dependence.h; sourceTree = "<group>"; };
-		A9C2F05D22E7833C001763CE /* value_number_table.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = value_number_table.h; sourceTree = "<group>"; };
-		A9C2F05E22E7833C001763CE /* flatten_decoration_pass.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = flatten_decoration_pass.h; sourceTree = "<group>"; };
-		A9C2F05F22E7833C001763CE /* if_conversion.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = if_conversion.cpp; sourceTree = "<group>"; };
-		A9C2F06022E7833C001763CE /* inline_exhaustive_pass.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = inline_exhaustive_pass.h; sourceTree = "<group>"; };
-		A9C2F06122E7833C001763CE /* constants.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = constants.h; sourceTree = "<group>"; };
-		A9C2F06222E7833C001763CE /* eliminate_dead_members_pass.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = eliminate_dead_members_pass.cpp; sourceTree = "<group>"; };
-		A9C2F06322E7833C001763CE /* strength_reduction_pass.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = strength_reduction_pass.cpp; sourceTree = "<group>"; };
-		A9C2F06422E7833C001763CE /* block_merge_util.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = block_merge_util.cpp; sourceTree = "<group>"; };
-		A9C2F06522E7833C001763CE /* upgrade_memory_model.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = upgrade_memory_model.h; sourceTree = "<group>"; };
-		A9C2F06622E7833C001763CE /* copy_prop_arrays.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = copy_prop_arrays.cpp; sourceTree = "<group>"; };
-		A9C2F06722E7833C001763CE /* pass_manager.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = pass_manager.cpp; sourceTree = "<group>"; };
-		A9C2F06822E7833C001763CE /* inline_exhaustive_pass.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = inline_exhaustive_pass.cpp; sourceTree = "<group>"; };
-		A9C2F06922E7833C001763CE /* loop_fission.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = loop_fission.h; sourceTree = "<group>"; };
-		A9C2F06A22E7833C001763CE /* workaround1209.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = workaround1209.h; sourceTree = "<group>"; };
-		A9C2F06B22E7833C001763CE /* loop_fusion_pass.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = loop_fusion_pass.cpp; sourceTree = "<group>"; };
-		A9C2F06C22E7833C001763CE /* log.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = log.h; sourceTree = "<group>"; };
-		A9C2F06D22E7833C001763CE /* split_invalid_unreachable_pass.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = split_invalid_unreachable_pass.h; sourceTree = "<group>"; };
-		A9C2F06E22E7833C001763CE /* copy_prop_arrays.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = copy_prop_arrays.h; sourceTree = "<group>"; };
-		A9C2F06F22E7833C001763CE /* eliminate_dead_constant_pass.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = eliminate_dead_constant_pass.h; sourceTree = "<group>"; };
-		A9C2F07022E7833C001763CE /* dead_insert_elim_pass.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = dead_insert_elim_pass.cpp; sourceTree = "<group>"; };
-		A9C2F07122E7833C001763CE /* ssa_rewrite_pass.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = ssa_rewrite_pass.h; sourceTree = "<group>"; };
-		A9C2F07222E7833C001763CE /* scalar_analysis.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = scalar_analysis.cpp; sourceTree = "<group>"; };
-		A9C2F07322E7833C001763CE /* dead_variable_elimination.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = dead_variable_elimination.h; sourceTree = "<group>"; };
-		A9C2F07422E7833C001763CE /* block_merge_pass.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = block_merge_pass.cpp; sourceTree = "<group>"; };
-		A9C2F07522E7833C001763CE /* dominator_analysis.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = dominator_analysis.h; sourceTree = "<group>"; };
-		A9C2F07622E7833C001763CE /* pass.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = pass.h; sourceTree = "<group>"; };
-		A9C2F07722E7833C001763CE /* folding_rules.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = folding_rules.h; sourceTree = "<group>"; };
-		A9C2F07822E7833C001763CE /* eliminate_dead_functions_pass.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = eliminate_dead_functions_pass.h; sourceTree = "<group>"; };
-		A9C2F07922E7833C001763CE /* eliminate_dead_functions_util.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = eliminate_dead_functions_util.h; sourceTree = "<group>"; };
-		A9C2F07A22E7833C001763CE /* fold.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = fold.h; sourceTree = "<group>"; };
-		A9C2F07B22E7833C001763CE /* local_single_store_elim_pass.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = local_single_store_elim_pass.cpp; sourceTree = "<group>"; };
-		A9C2F07C22E7833C001763CE /* dead_branch_elim_pass.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = dead_branch_elim_pass.h; sourceTree = "<group>"; };
-		A9C2F07D22E7833C001763CE /* private_to_local_pass.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = private_to_local_pass.cpp; sourceTree = "<group>"; };
-		A9C2F07E22E7833C001763CE /* scalar_analysis_nodes.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = scalar_analysis_nodes.h; sourceTree = "<group>"; };
-		A9C2F07F22E7833C001763CE /* propagator.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = propagator.cpp; sourceTree = "<group>"; };
-		A9C2F08022E7833C001763CE /* fix_storage_class.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = fix_storage_class.h; sourceTree = "<group>"; };
-		A9C2F08122E7833C001763CE /* loop_dependence_helpers.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = loop_dependence_helpers.cpp; sourceTree = "<group>"; };
-		A9C2F08222E7833C001763CE /* set_spec_constant_default_value_pass.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = set_spec_constant_default_value_pass.cpp; sourceTree = "<group>"; };
-		A9C2F08322E7833C001763CE /* passes.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = passes.h; sourceTree = "<group>"; };
-		A9C2F08422E7833C001763CE /* fold.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = fold.cpp; sourceTree = "<group>"; };
-		A9C2F08522E7833C001763CE /* strip_reflect_info_pass.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = strip_reflect_info_pass.h; sourceTree = "<group>"; };
-		A9C2F08622E7833C001763CE /* scalar_replacement_pass.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = scalar_replacement_pass.cpp; sourceTree = "<group>"; };
-		A9C2F08722E7833C001763CE /* simplification_pass.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = simplification_pass.h; sourceTree = "<group>"; };
-		A9C2F08822E7833C001763CE /* remove_duplicates_pass.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = remove_duplicates_pass.h; sourceTree = "<group>"; };
-		A9C2F08922E7833C001763CE /* redundancy_elimination.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = redundancy_elimination.cpp; sourceTree = "<group>"; };
-		A9C2F08A22E7833C001763CE /* reflect.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = reflect.h; sourceTree = "<group>"; };
-		A9C2F08B22E7833C001763CE /* workaround1209.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = workaround1209.cpp; sourceTree = "<group>"; };
-		A9C2F08C22E7833C001763CE /* null_pass.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = null_pass.h; sourceTree = "<group>"; };
-		A9C2F08D22E7833C001763CE /* const_folding_rules.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = const_folding_rules.h; sourceTree = "<group>"; };
-		A9C2F08E22E7833C001763CE /* scalar_replacement_pass.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = scalar_replacement_pass.h; sourceTree = "<group>"; };
-		A9C2F08F22E7833C001763CE /* instruction.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = instruction.cpp; sourceTree = "<group>"; };
-		A9C2F09022E7833C001763CE /* pch_source_opt.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = pch_source_opt.h; sourceTree = "<group>"; };
-		A9C2F09122E7833C001763CE /* reduce_load_size.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = reduce_load_size.cpp; sourceTree = "<group>"; };
-		A9C2F09222E7833C001763CE /* redundancy_elimination.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = redundancy_elimination.h; sourceTree = "<group>"; };
-		A9C2F09322E7833C001763CE /* fix_storage_class.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = fix_storage_class.cpp; sourceTree = "<group>"; };
-		A9C2F09422E7833C001763CE /* value_number_table.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = value_number_table.cpp; sourceTree = "<group>"; };
-		A9C2F09522E7833C001763CE /* local_ssa_elim_pass.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = local_ssa_elim_pass.h; sourceTree = "<group>"; };
-		A9C2F09622E7833C001763CE /* inline_opaque_pass.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = inline_opaque_pass.cpp; sourceTree = "<group>"; };
-		A9C2F09722E7833C001763CE /* replace_invalid_opc.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = replace_invalid_opc.cpp; sourceTree = "<group>"; };
-		A9C2F09822E7833C001763CE /* loop_utils.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = loop_utils.h; sourceTree = "<group>"; };
-		A9C2F09922E7833C001763CE /* module.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = module.h; sourceTree = "<group>"; };
-		A9C2F09A22E7833C001763CE /* dominator_analysis.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = dominator_analysis.cpp; sourceTree = "<group>"; };
-		A9C2F09B22E7833C001763CE /* decompose_initialized_variables_pass.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = decompose_initialized_variables_pass.cpp; sourceTree = "<group>"; };
-		A9C2F09C22E7833C001763CE /* ir_builder.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = ir_builder.h; sourceTree = "<group>"; };
-		A9C2F09D22E7833C001763CE /* loop_unswitch_pass.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = loop_unswitch_pass.h; sourceTree = "<group>"; };
-		A9C2F09E22E7833C001763CE /* cfg.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = cfg.h; sourceTree = "<group>"; };
-		A9C2F09F22E7833C001763CE /* code_sink.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = code_sink.h; sourceTree = "<group>"; };
-		A9C2F0A022E7833C001763CE /* loop_descriptor.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = loop_descriptor.h; sourceTree = "<group>"; };
-		A9C2F0A122E7833C001763CE /* generate_webgpu_initializers_pass.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = generate_webgpu_initializers_pass.h; sourceTree = "<group>"; };
-		A9C2F0A222E7833C001763CE /* instruction.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = instruction.h; sourceTree = "<group>"; };
-		A9C2F0A322E7833C001763CE /* aggressive_dead_code_elim_pass.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = aggressive_dead_code_elim_pass.h; sourceTree = "<group>"; };
-		A9C2F0A422E7833C001763CE /* struct_cfg_analysis.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = struct_cfg_analysis.cpp; sourceTree = "<group>"; };
-		A9C2F0A522E7833C001763CE /* vector_dce.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = vector_dce.h; sourceTree = "<group>"; };
-		A9C2F0A622E7833C001763CE /* combine_access_chains.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = combine_access_chains.h; sourceTree = "<group>"; };
-		A9C2F0A722E7833C001763CE /* pass_manager.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = pass_manager.h; sourceTree = "<group>"; };
-		A9C2F0A822E7833C001763CE /* local_access_chain_convert_pass.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = local_access_chain_convert_pass.cpp; sourceTree = "<group>"; };
-		A9C2F0A922E7833C001763CE /* basic_block.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = basic_block.cpp; sourceTree = "<group>"; };
-		A9C2F0AA22E7833C001763CE /* iterator.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = iterator.h; sourceTree = "<group>"; };
-		A9C2F0AB22E7833C001763CE /* licm_pass.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = licm_pass.h; sourceTree = "<group>"; };
-		A9C2F0AC22E7833C001763CE /* build_module.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = build_module.h; sourceTree = "<group>"; };
-		A9C2F0AD22E7833C001763CE /* ccp_pass.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = ccp_pass.h; sourceTree = "<group>"; };
-		A9C2F0AE22E7833C001763CE /* decompose_initialized_variables_pass.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = decompose_initialized_variables_pass.h; sourceTree = "<group>"; };
-		A9C2F0AF22E7833C001763CE /* function.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = function.h; sourceTree = "<group>"; };
-		A9C2F0B022E7833C001763CE /* loop_fusion.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = loop_fusion.cpp; sourceTree = "<group>"; };
-		A9C2F0B122E7833C001763CE /* upgrade_memory_model.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = upgrade_memory_model.cpp; sourceTree = "<group>"; };
-		A9C2F0B222E7833C001763CE /* feature_manager.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = feature_manager.h; sourceTree = "<group>"; };
-		A9C2F0B322E7833C001763CE /* inst_bindless_check_pass.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = inst_bindless_check_pass.h; sourceTree = "<group>"; };
-		A9C2F0B422E7833C001763CE /* scalar_analysis_simplification.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = scalar_analysis_simplification.cpp; sourceTree = "<group>"; };
-		A9C2F0B522E7833C001763CE /* set_spec_constant_default_value_pass.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = set_spec_constant_default_value_pass.h; sourceTree = "<group>"; };
-		A9C2F0B622E7833C001763CE /* dominator_tree.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = dominator_tree.h; sourceTree = "<group>"; };
-		A9C2F0B722E7833C001763CE /* legalize_vector_shuffle_pass.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = legalize_vector_shuffle_pass.cpp; sourceTree = "<group>"; };
-		A9C2F0B822E7833C001763CE /* type_manager.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = type_manager.h; sourceTree = "<group>"; };
-		A9C2F0B922E7833C001763CE /* compact_ids_pass.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = compact_ids_pass.cpp; sourceTree = "<group>"; };
-		A9C2F0BA22E7833C001763CE /* loop_peeling.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = loop_peeling.cpp; sourceTree = "<group>"; };
-		A9C2F0BB22E7833C001763CE /* table.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = table.h; sourceTree = "<group>"; };
-		A9C2F0F922E7833D001763CE /* ext_inst.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = ext_inst.h; sourceTree = "<group>"; };
-		A9C2F0FA22E7833D001763CE /* diagnostic.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = diagnostic.cpp; sourceTree = "<group>"; };
-		A9C2F0FB22E7833D001763CE /* latest_version_spirv_header.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = latest_version_spirv_header.h; sourceTree = "<group>"; };
-		A9C2F0FC22E7833D001763CE /* libspirv.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = libspirv.cpp; sourceTree = "<group>"; };
-		A9C2F0FD22E7833D001763CE /* instruction.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = instruction.h; sourceTree = "<group>"; };
-		A9C2F0FE22E7833D001763CE /* spirv_optimizer_options.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = spirv_optimizer_options.h; sourceTree = "<group>"; };
-		A9C2F0FF22E7833D001763CE /* opcode.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = opcode.h; sourceTree = "<group>"; };
-		A9C2F10022E7833D001763CE /* operand.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = operand.cpp; sourceTree = "<group>"; };
-		A9C2F10122E7833D001763CE /* latest_version_glsl_std_450_header.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = latest_version_glsl_std_450_header.h; sourceTree = "<group>"; };
-		A9C2F10222E7833D001763CE /* extensions.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = extensions.h; sourceTree = "<group>"; };
-		A9C2F10322E7833D001763CE /* disassemble.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = disassemble.cpp; sourceTree = "<group>"; };
-		A9C2F10422E7833D001763CE /* binary.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = binary.h; sourceTree = "<group>"; };
-		A9C2F10522E7833D001763CE /* text_handler.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = text_handler.cpp; sourceTree = "<group>"; };
-		A9C2F10722E7833D001763CE /* validate_annotation.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = validate_annotation.cpp; sourceTree = "<group>"; };
-		A9C2F10822E7833D001763CE /* validate_misc.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = validate_misc.cpp; sourceTree = "<group>"; };
-		A9C2F10922E7833D001763CE /* validate_cfg.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = validate_cfg.cpp; sourceTree = "<group>"; };
-		A9C2F10A22E7833D001763CE /* validate_capability.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = validate_capability.cpp; sourceTree = "<group>"; };
-		A9C2F10B22E7833D001763CE /* construct.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = construct.h; sourceTree = "<group>"; };
-		A9C2F10C22E7833D001763CE /* validate_barriers.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = validate_barriers.cpp; sourceTree = "<group>"; };
-		A9C2F10D22E7833D001763CE /* validate_non_uniform.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = validate_non_uniform.cpp; sourceTree = "<group>"; };
-		A9C2F10E22E7833D001763CE /* validate_scopes.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = validate_scopes.cpp; sourceTree = "<group>"; };
-		A9C2F10F22E7833D001763CE /* validate_atomics.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = validate_atomics.cpp; sourceTree = "<group>"; };
-		A9C2F11022E7833D001763CE /* basic_block.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = basic_block.h; sourceTree = "<group>"; };
-		A9C2F11122E7833D001763CE /* validate_instruction.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = validate_instruction.cpp; sourceTree = "<group>"; };
-		A9C2F11222E7833D001763CE /* validate_decorations.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = validate_decorations.cpp; sourceTree = "<group>"; };
-		A9C2F11322E7833D001763CE /* validate_debug.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = validate_debug.cpp; sourceTree = "<group>"; };
-		A9C2F11422E7833D001763CE /* validate_builtins.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = validate_builtins.cpp; sourceTree = "<group>"; };
-		A9C2F11522E7833D001763CE /* validate_interfaces.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = validate_interfaces.cpp; sourceTree = "<group>"; };
-		A9C2F11622E7833D001763CE /* validate.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = validate.cpp; sourceTree = "<group>"; };
-		A9C2F11722E7833D001763CE /* validation_state.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = validation_state.h; sourceTree = "<group>"; };
-		A9C2F11822E7833D001763CE /* validate_constants.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = validate_constants.cpp; sourceTree = "<group>"; };
-		A9C2F11922E7833D001763CE /* validate_bitwise.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = validate_bitwise.cpp; sourceTree = "<group>"; };
-		A9C2F11A22E7833D001763CE /* validate_extensions.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = validate_extensions.cpp; sourceTree = "<group>"; };
-		A9C2F11B22E7833D001763CE /* construct.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = construct.cpp; sourceTree = "<group>"; };
-		A9C2F11C22E7833D001763CE /* function.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = function.cpp; sourceTree = "<group>"; };
-		A9C2F11D22E7833D001763CE /* validate.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = validate.h; sourceTree = "<group>"; };
-		A9C2F11E22E7833D001763CE /* validate_adjacency.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = validate_adjacency.cpp; sourceTree = "<group>"; };
-		A9C2F11F22E7833D001763CE /* validate_conversion.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = validate_conversion.cpp; sourceTree = "<group>"; };
-		A9C2F12022E7833D001763CE /* validate_small_type_uses.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = validate_small_type_uses.cpp; sourceTree = "<group>"; };
-		A9C2F12122E7833D001763CE /* validate_datarules.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = validate_datarules.cpp; sourceTree = "<group>"; };
-		A9C2F12222E7833D001763CE /* validate_scopes.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = validate_scopes.h; sourceTree = "<group>"; };
-		A9C2F12322E7833D001763CE /* validate_id.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = validate_id.cpp; sourceTree = "<group>"; };
-		A9C2F12422E7833D001763CE /* validate_memory_semantics.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = validate_memory_semantics.h; sourceTree = "<group>"; };
-		A9C2F12522E7833D001763CE /* validate_arithmetics.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = validate_arithmetics.cpp; sourceTree = "<group>"; };
-		A9C2F12622E7833D001763CE /* validate_mode_setting.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = validate_mode_setting.cpp; sourceTree = "<group>"; };
-		A9C2F12722E7833D001763CE /* validate_memory_semantics.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = validate_memory_semantics.cpp; sourceTree = "<group>"; };
-		A9C2F12822E7833D001763CE /* validate_logicals.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = validate_logicals.cpp; sourceTree = "<group>"; };
-		A9C2F12922E7833D001763CE /* validate_derivatives.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = validate_derivatives.cpp; sourceTree = "<group>"; };
-		A9C2F12A22E7833D001763CE /* validate_memory.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = validate_memory.cpp; sourceTree = "<group>"; };
-		A9C2F12B22E7833D001763CE /* validate_image.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = validate_image.cpp; sourceTree = "<group>"; };
-		A9C2F12C22E7833D001763CE /* validate_literals.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = validate_literals.cpp; sourceTree = "<group>"; };
-		A9C2F12D22E7833D001763CE /* instruction.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = instruction.cpp; sourceTree = "<group>"; };
-		A9C2F12E22E7833D001763CE /* validate_type.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = validate_type.cpp; sourceTree = "<group>"; };
-		A9C2F12F22E7833D001763CE /* instruction.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = instruction.h; sourceTree = "<group>"; };
-		A9C2F13022E7833D001763CE /* validate_execution_limitations.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = validate_execution_limitations.cpp; sourceTree = "<group>"; };
-		A9C2F13122E7833D001763CE /* validate_layout.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = validate_layout.cpp; sourceTree = "<group>"; };
-		A9C2F13222E7833D001763CE /* basic_block.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = basic_block.cpp; sourceTree = "<group>"; };
-		A9C2F13322E7833D001763CE /* validate_function.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = validate_function.cpp; sourceTree = "<group>"; };
-		A9C2F13422E7833D001763CE /* function.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = function.h; sourceTree = "<group>"; };
-		A9C2F13522E7833D001763CE /* validate_composites.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = validate_composites.cpp; sourceTree = "<group>"; };
-		A9C2F13622E7833D001763CE /* validation_state.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = validation_state.cpp; sourceTree = "<group>"; };
-		A9C2F13722E7833D001763CE /* validate_primitives.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = validate_primitives.cpp; sourceTree = "<group>"; };
-		A9C2F13822E7833D001763CE /* decoration.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = decoration.h; sourceTree = "<group>"; };
 /* End PBXFileReference section */
 
 /* Begin PBXGroup section */
@@ -1604,7 +1652,7 @@
 		A972A82421CECC410013AB25 /* SPIRV-Tools */ = {
 			isa = PBXGroup;
 			children = (
-				A9C2EF7722E7833C001763CE /* source */,
+				A97961452328063600299006 /* source */,
 			);
 			name = "SPIRV-Tools";
 			path = "glslang/External/spirv-tools";
@@ -1829,432 +1877,448 @@
 			path = "SPIRV-Cross";
 			sourceTree = "<group>";
 		};
-		A9C2EF7722E7833C001763CE /* source */ = {
+		A97961452328063600299006 /* source */ = {
 			isa = PBXGroup;
 			children = (
-				A9C2EF7822E7833C001763CE /* spirv_target_env.cpp */,
-				A9C2EF7922E7833C001763CE /* extinst.spv-amd-shader-explicit-vertex-parameter.grammar.json */,
-				A9C2EF7A22E7833C001763CE /* spirv_fuzzer_options.h */,
-				A9C2EF7B22E7833C001763CE /* assembly_grammar.h */,
-				A9C2EF7C22E7833C001763CE /* enum_set.h */,
-				A9C2EF7D22E7833C001763CE /* CMakeLists.txt */,
-				A9C2EF7E22E7833C001763CE /* extinst.spv-amd-shader-ballot.grammar.json */,
-				A9C2EF7F22E7833C001763CE /* text.cpp */,
-				A9C2EF8022E7833C001763CE /* assembly_grammar.cpp */,
-				A9C2EF8122E7833C001763CE /* text.h */,
-				A9C2EF8222E7833C001763CE /* extensions.cpp */,
-				A9C2EF8322E7833C001763CE /* pch_source.cpp */,
-				A9C2EF8422E7833C001763CE /* util */,
-				A9C2EF9322E7833C001763CE /* spirv_target_env.h */,
-				A9C2EF9422E7833C001763CE /* table.cpp */,
-				A9C2EF9522E7833C001763CE /* reduce */,
-				A9C2EFCE22E7833C001763CE /* latest_version_opencl_std_header.h */,
-				A9C2EFCF22E7833C001763CE /* spirv_optimizer_options.cpp */,
-				A9C2EFD022E7833C001763CE /* cfa.h */,
-				A9C2EFD122E7833C001763CE /* pch_source.h */,
-				A9C2EFD222E7833C001763CE /* enum_string_mapping.h */,
-				A9C2EFD322E7833C001763CE /* spirv_fuzzer_options.cpp */,
-				A9C2EFD422E7833C001763CE /* spirv_reducer_options.h */,
-				A9C2EFD522E7833C001763CE /* spirv_validator_options.cpp */,
-				A9C2EFD622E7833C001763CE /* extinst.spv-amd-shader-trinary-minmax.grammar.json */,
-				A9C2EFD722E7833C001763CE /* print.cpp */,
-				A9C2EFD822E7833C001763CE /* spirv_definition.h */,
-				A9C2EFD922E7833C001763CE /* operand.h */,
-				A9C2EFDA22E7833C001763CE /* spirv_endian.cpp */,
-				A9C2EFDB22E7833C001763CE /* macro.h */,
-				A9C2EFDC22E7833C001763CE /* spirv_constant.h */,
-				A9C2EFDD22E7833C001763CE /* extinst.spv-amd-gcn-shader.grammar.json */,
-				A9C2EFDE22E7833C001763CE /* binary.cpp */,
-				A9C2EFDF22E7833C001763CE /* spirv_validator_options.h */,
-				A9C2EFE022E7833C001763CE /* enum_string_mapping.cpp */,
-				A9C2EFE122E7833C001763CE /* text_handler.h */,
-				A9C2EFE222E7833C001763CE /* parsed_operand.h */,
-				A9C2EFE322E7833C001763CE /* name_mapper.h */,
-				A9C2EFE422E7833C001763CE /* spirv_reducer_options.cpp */,
-				A9C2EFE522E7833C001763CE /* parsed_operand.cpp */,
-				A9C2EFE622E7833C001763CE /* diagnostic.h */,
-				A9C2EFE722E7833C001763CE /* spirv_endian.h */,
-				A9C2EFE822E7833C001763CE /* name_mapper.cpp */,
-				A9C2EFE922E7833C001763CE /* extinst.debuginfo.grammar.json */,
-				A9C2EFEA22E7833C001763CE /* link */,
-				A9C2EFED22E7833C001763CE /* software_version.cpp */,
-				A9C2EFEE22E7833C001763CE /* opcode.cpp */,
-				A9C2EFEF22E7833C001763CE /* print.h */,
-				A9C2EFF022E7833C001763CE /* ext_inst.cpp */,
-				A9C2EFF122E7833C001763CE /* disassemble.h */,
-				A9C2EFF222E7833C001763CE /* opt */,
-				A9C2F0BB22E7833C001763CE /* table.h */,
-				A9C2F0F922E7833D001763CE /* ext_inst.h */,
-				A9C2F0FA22E7833D001763CE /* diagnostic.cpp */,
-				A9C2F0FB22E7833D001763CE /* latest_version_spirv_header.h */,
-				A9C2F0FC22E7833D001763CE /* libspirv.cpp */,
-				A9C2F0FD22E7833D001763CE /* instruction.h */,
-				A9C2F0FE22E7833D001763CE /* spirv_optimizer_options.h */,
-				A9C2F0FF22E7833D001763CE /* opcode.h */,
-				A9C2F10022E7833D001763CE /* operand.cpp */,
-				A9C2F10122E7833D001763CE /* latest_version_glsl_std_450_header.h */,
-				A9C2F10222E7833D001763CE /* extensions.h */,
-				A9C2F10322E7833D001763CE /* disassemble.cpp */,
-				A9C2F10422E7833D001763CE /* binary.h */,
-				A9C2F10522E7833D001763CE /* text_handler.cpp */,
-				A9C2F10622E7833D001763CE /* val */,
+				A97961462328063600299006 /* spirv_target_env.cpp */,
+				A97961472328063600299006 /* extinst.spv-amd-shader-explicit-vertex-parameter.grammar.json */,
+				A97961482328063600299006 /* spirv_fuzzer_options.h */,
+				A97961492328063600299006 /* assembly_grammar.h */,
+				A979614A2328063600299006 /* enum_set.h */,
+				A979614B2328063600299006 /* CMakeLists.txt */,
+				A979614C2328063600299006 /* extinst.spv-amd-shader-ballot.grammar.json */,
+				A979614D2328063600299006 /* text.cpp */,
+				A979614E2328063600299006 /* assembly_grammar.cpp */,
+				A979614F2328063600299006 /* text.h */,
+				A97961502328063600299006 /* extensions.cpp */,
+				A97961512328063600299006 /* pch_source.cpp */,
+				A97961522328063600299006 /* util */,
+				A97961612328063600299006 /* spirv_target_env.h */,
+				A97961622328063600299006 /* table.cpp */,
+				A97961632328063600299006 /* reduce */,
+				A979619E2328063700299006 /* latest_version_opencl_std_header.h */,
+				A979619F2328063700299006 /* spirv_optimizer_options.cpp */,
+				A97961A02328063700299006 /* cfa.h */,
+				A97961A12328063700299006 /* pch_source.h */,
+				A97961A22328063700299006 /* enum_string_mapping.h */,
+				A97961A32328063700299006 /* spirv_fuzzer_options.cpp */,
+				A97961A42328063700299006 /* spirv_reducer_options.h */,
+				A97961A52328063700299006 /* spirv_validator_options.cpp */,
+				A97961A62328063700299006 /* extinst.spv-amd-shader-trinary-minmax.grammar.json */,
+				A97961A72328063700299006 /* print.cpp */,
+				A97961A82328063700299006 /* spirv_definition.h */,
+				A97961A92328063700299006 /* operand.h */,
+				A97961AA2328063700299006 /* spirv_endian.cpp */,
+				A97961AB2328063700299006 /* macro.h */,
+				A97961AC2328063700299006 /* spirv_constant.h */,
+				A97961AD2328063700299006 /* extinst.spv-amd-gcn-shader.grammar.json */,
+				A97961AE2328063700299006 /* binary.cpp */,
+				A97961AF2328063700299006 /* spirv_validator_options.h */,
+				A97961B02328063700299006 /* enum_string_mapping.cpp */,
+				A97961B12328063700299006 /* text_handler.h */,
+				A97961B22328063700299006 /* parsed_operand.h */,
+				A97961B32328063700299006 /* name_mapper.h */,
+				A97961B42328063700299006 /* spirv_reducer_options.cpp */,
+				A97961B52328063700299006 /* parsed_operand.cpp */,
+				A97961B62328063700299006 /* diagnostic.h */,
+				A97961B72328063700299006 /* spirv_endian.h */,
+				A97961B82328063700299006 /* name_mapper.cpp */,
+				A97961B92328063700299006 /* extinst.debuginfo.grammar.json */,
+				A97961BA2328063700299006 /* link */,
+				A97961BD2328063700299006 /* software_version.cpp */,
+				A97961BE2328063700299006 /* opcode.cpp */,
+				A97961BF2328063700299006 /* print.h */,
+				A97961C02328063700299006 /* ext_inst.cpp */,
+				A97961C12328063700299006 /* disassemble.h */,
+				A97961C22328063700299006 /* opt */,
+				A97962992328063700299006 /* table.h */,
+				A97962DF2328063700299006 /* ext_inst.h */,
+				A97962E02328063700299006 /* diagnostic.cpp */,
+				A97962E12328063700299006 /* latest_version_spirv_header.h */,
+				A97962E22328063700299006 /* libspirv.cpp */,
+				A97962E32328063700299006 /* instruction.h */,
+				A97962E42328063700299006 /* spirv_optimizer_options.h */,
+				A97962E52328063700299006 /* opcode.h */,
+				A97962E62328063700299006 /* operand.cpp */,
+				A97962E72328063700299006 /* latest_version_glsl_std_450_header.h */,
+				A97962E82328063700299006 /* extensions.h */,
+				A97962E92328063700299006 /* disassemble.cpp */,
+				A97962EA2328063700299006 /* binary.h */,
+				A97962EB2328063700299006 /* text_handler.cpp */,
+				A97962EC2328063700299006 /* val */,
 			);
 			path = source;
 			sourceTree = "<group>";
 		};
-		A9C2EF8422E7833C001763CE /* util */ = {
+		A97961522328063600299006 /* util */ = {
 			isa = PBXGroup;
 			children = (
-				A9C2EF8522E7833C001763CE /* parse_number.h */,
-				A9C2EF8622E7833C001763CE /* ilist_node.h */,
-				A9C2EF8722E7833C001763CE /* make_unique.h */,
-				A9C2EF8822E7833C001763CE /* string_utils.h */,
-				A9C2EF8922E7833C001763CE /* small_vector.h */,
-				A9C2EF8A22E7833C001763CE /* timer.cpp */,
-				A9C2EF8B22E7833C001763CE /* timer.h */,
-				A9C2EF8C22E7833C001763CE /* string_utils.cpp */,
-				A9C2EF8D22E7833C001763CE /* bit_vector.h */,
-				A9C2EF8E22E7833C001763CE /* bitutils.h */,
-				A9C2EF8F22E7833C001763CE /* hex_float.h */,
-				A9C2EF9022E7833C001763CE /* parse_number.cpp */,
-				A9C2EF9122E7833C001763CE /* bit_vector.cpp */,
-				A9C2EF9222E7833C001763CE /* ilist.h */,
+				A97961532328063600299006 /* parse_number.h */,
+				A97961542328063600299006 /* ilist_node.h */,
+				A97961552328063600299006 /* make_unique.h */,
+				A97961562328063600299006 /* string_utils.h */,
+				A97961572328063600299006 /* small_vector.h */,
+				A97961582328063600299006 /* timer.cpp */,
+				A97961592328063600299006 /* timer.h */,
+				A979615A2328063600299006 /* string_utils.cpp */,
+				A979615B2328063600299006 /* bit_vector.h */,
+				A979615C2328063600299006 /* bitutils.h */,
+				A979615D2328063600299006 /* hex_float.h */,
+				A979615E2328063600299006 /* parse_number.cpp */,
+				A979615F2328063600299006 /* bit_vector.cpp */,
+				A97961602328063600299006 /* ilist.h */,
 			);
 			path = util;
 			sourceTree = "<group>";
 		};
-		A9C2EF9522E7833C001763CE /* reduce */ = {
+		A97961632328063600299006 /* reduce */ = {
 			isa = PBXGroup;
 			children = (
-				A9C2EF9622E7833C001763CE /* operand_to_undef_reduction_opportunity_finder.h */,
-				A9C2EF9722E7833C001763CE /* remove_selection_reduction_opportunity.cpp */,
-				A9C2EF9822E7833C001763CE /* remove_block_reduction_opportunity.h */,
-				A9C2EF9922E7833C001763CE /* operand_to_dominating_id_reduction_opportunity_finder.h */,
-				A9C2EF9A22E7833C001763CE /* reduction_pass.cpp */,
-				A9C2EF9B22E7833C001763CE /* operand_to_const_reduction_opportunity_finder.cpp */,
-				A9C2EF9C22E7833C001763CE /* operand_to_const_reduction_opportunity_finder.h */,
-				A9C2EF9D22E7833C001763CE /* CMakeLists.txt */,
-				A9C2EF9E22E7833C001763CE /* reduction_util.cpp */,
-				A9C2EF9F22E7833C001763CE /* structured_loop_to_selection_reduction_opportunity_finder.cpp */,
-				A9C2EFA022E7833C001763CE /* simple_conditional_branch_to_branch_reduction_opportunity.h */,
-				A9C2EFA122E7833C001763CE /* remove_function_reduction_opportunity_finder.cpp */,
-				A9C2EFA222E7833C001763CE /* remove_instruction_reduction_opportunity.h */,
-				A9C2EFA322E7833C001763CE /* conditional_branch_to_simple_conditional_branch_reduction_opportunity.h */,
-				A9C2EFA422E7833C001763CE /* simple_conditional_branch_to_branch_reduction_opportunity.cpp */,
-				A9C2EFA522E7833C001763CE /* remove_function_reduction_opportunity.cpp */,
-				A9C2EFA622E7833C001763CE /* remove_opname_instruction_reduction_opportunity_finder.h */,
-				A9C2EFA722E7833C001763CE /* simple_conditional_branch_to_branch_opportunity_finder.cpp */,
-				A9C2EFA822E7833C001763CE /* remove_selection_reduction_opportunity_finder.cpp */,
-				A9C2EFA922E7833C001763CE /* conditional_branch_to_simple_conditional_branch_reduction_opportunity.cpp */,
-				A9C2EFAA22E7833C001763CE /* simple_conditional_branch_to_branch_opportunity_finder.h */,
-				A9C2EFAB22E7833C001763CE /* merge_blocks_reduction_opportunity.cpp */,
-				A9C2EFAC22E7833C001763CE /* change_operand_reduction_opportunity.cpp */,
-				A9C2EFAD22E7833C001763CE /* structured_loop_to_selection_reduction_opportunity.h */,
-				A9C2EFAE22E7833C001763CE /* remove_function_reduction_opportunity.h */,
-				A9C2EFAF22E7833C001763CE /* change_operand_to_undef_reduction_opportunity.h */,
-				A9C2EFB022E7833C001763CE /* remove_unreferenced_instruction_reduction_opportunity_finder.cpp */,
-				A9C2EFB122E7833C001763CE /* structured_loop_to_selection_reduction_opportunity_finder.h */,
-				A9C2EFB222E7833C001763CE /* remove_selection_reduction_opportunity.h */,
-				A9C2EFB322E7833C001763CE /* remove_instruction_reduction_opportunity.cpp */,
-				A9C2EFB422E7833C001763CE /* remove_selection_reduction_opportunity_finder.h */,
-				A9C2EFB522E7833C001763CE /* merge_blocks_reduction_opportunity_finder.h */,
-				A9C2EFB622E7833C001763CE /* remove_opname_instruction_reduction_opportunity_finder.cpp */,
-				A9C2EFB722E7833C001763CE /* pch_source_reduce.cpp */,
-				A9C2EFB822E7833C001763CE /* reducer.cpp */,
-				A9C2EFB922E7833C001763CE /* operand_to_undef_reduction_opportunity_finder.cpp */,
-				A9C2EFBA22E7833C001763CE /* remove_function_reduction_opportunity_finder.h */,
-				A9C2EFBB22E7833C001763CE /* pch_source_reduce.h */,
-				A9C2EFBC22E7833C001763CE /* remove_unreferenced_instruction_reduction_opportunity_finder.h */,
-				A9C2EFBD22E7833C001763CE /* merge_blocks_reduction_opportunity_finder.cpp */,
-				A9C2EFBE22E7833C001763CE /* reduction_opportunity.cpp */,
-				A9C2EFBF22E7833C001763CE /* reducer.h */,
-				A9C2EFC022E7833C001763CE /* change_operand_to_undef_reduction_opportunity.cpp */,
-				A9C2EFC122E7833C001763CE /* reduction_opportunity.h */,
-				A9C2EFC222E7833C001763CE /* conditional_branch_to_simple_conditional_branch_opportunity_finder.h */,
-				A9C2EFC322E7833C001763CE /* operand_to_dominating_id_reduction_opportunity_finder.cpp */,
-				A9C2EFC422E7833C001763CE /* reduction_opportunity_finder.h */,
-				A9C2EFC522E7833C001763CE /* change_operand_reduction_opportunity.h */,
-				A9C2EFC622E7833C001763CE /* remove_block_reduction_opportunity_finder.h */,
-				A9C2EFC722E7833C001763CE /* remove_block_reduction_opportunity_finder.cpp */,
-				A9C2EFC822E7833C001763CE /* reduction_util.h */,
-				A9C2EFC922E7833C001763CE /* merge_blocks_reduction_opportunity.h */,
-				A9C2EFCA22E7833C001763CE /* conditional_branch_to_simple_conditional_branch_opportunity_finder.cpp */,
-				A9C2EFCB22E7833C001763CE /* structured_loop_to_selection_reduction_opportunity.cpp */,
-				A9C2EFCC22E7833C001763CE /* remove_block_reduction_opportunity.cpp */,
-				A9C2EFCD22E7833C001763CE /* reduction_pass.h */,
+				A97961642328063600299006 /* operand_to_undef_reduction_opportunity_finder.h */,
+				A97961652328063600299006 /* remove_selection_reduction_opportunity.cpp */,
+				A97961662328063600299006 /* remove_block_reduction_opportunity.h */,
+				A97961672328063600299006 /* operand_to_dominating_id_reduction_opportunity_finder.h */,
+				A97961682328063600299006 /* reduction_pass.cpp */,
+				A97961692328063600299006 /* operand_to_const_reduction_opportunity_finder.cpp */,
+				A979616A2328063600299006 /* operand_to_const_reduction_opportunity_finder.h */,
+				A979616B2328063600299006 /* CMakeLists.txt */,
+				A979616C2328063600299006 /* reduction_util.cpp */,
+				A979616D2328063600299006 /* remove_relaxed_precision_decoration_opportunity_finder.cpp */,
+				A979616E2328063600299006 /* structured_loop_to_selection_reduction_opportunity_finder.cpp */,
+				A979616F2328063600299006 /* simple_conditional_branch_to_branch_reduction_opportunity.h */,
+				A97961702328063600299006 /* remove_function_reduction_opportunity_finder.cpp */,
+				A97961712328063600299006 /* remove_instruction_reduction_opportunity.h */,
+				A97961722328063600299006 /* conditional_branch_to_simple_conditional_branch_reduction_opportunity.h */,
+				A97961732328063600299006 /* simple_conditional_branch_to_branch_reduction_opportunity.cpp */,
+				A97961742328063600299006 /* remove_function_reduction_opportunity.cpp */,
+				A97961752328063600299006 /* remove_opname_instruction_reduction_opportunity_finder.h */,
+				A97961762328063600299006 /* simple_conditional_branch_to_branch_opportunity_finder.cpp */,
+				A97961772328063600299006 /* remove_selection_reduction_opportunity_finder.cpp */,
+				A97961782328063600299006 /* conditional_branch_to_simple_conditional_branch_reduction_opportunity.cpp */,
+				A97961792328063600299006 /* simple_conditional_branch_to_branch_opportunity_finder.h */,
+				A979617A2328063600299006 /* merge_blocks_reduction_opportunity.cpp */,
+				A979617B2328063600299006 /* change_operand_reduction_opportunity.cpp */,
+				A979617C2328063600299006 /* structured_loop_to_selection_reduction_opportunity.h */,
+				A979617D2328063600299006 /* remove_function_reduction_opportunity.h */,
+				A979617E2328063600299006 /* change_operand_to_undef_reduction_opportunity.h */,
+				A979617F2328063600299006 /* remove_unreferenced_instruction_reduction_opportunity_finder.cpp */,
+				A97961802328063600299006 /* structured_loop_to_selection_reduction_opportunity_finder.h */,
+				A97961812328063600299006 /* remove_selection_reduction_opportunity.h */,
+				A97961822328063600299006 /* remove_instruction_reduction_opportunity.cpp */,
+				A97961832328063600299006 /* remove_relaxed_precision_decoration_opportunity_finder.h */,
+				A97961842328063600299006 /* remove_selection_reduction_opportunity_finder.h */,
+				A97961852328063600299006 /* merge_blocks_reduction_opportunity_finder.h */,
+				A97961862328063600299006 /* remove_opname_instruction_reduction_opportunity_finder.cpp */,
+				A97961872328063600299006 /* pch_source_reduce.cpp */,
+				A97961882328063600299006 /* reducer.cpp */,
+				A97961892328063600299006 /* operand_to_undef_reduction_opportunity_finder.cpp */,
+				A979618A2328063600299006 /* remove_function_reduction_opportunity_finder.h */,
+				A979618B2328063600299006 /* pch_source_reduce.h */,
+				A979618C2328063600299006 /* remove_unreferenced_instruction_reduction_opportunity_finder.h */,
+				A979618D2328063700299006 /* merge_blocks_reduction_opportunity_finder.cpp */,
+				A979618E2328063700299006 /* reduction_opportunity.cpp */,
+				A979618F2328063700299006 /* reducer.h */,
+				A97961902328063700299006 /* change_operand_to_undef_reduction_opportunity.cpp */,
+				A97961912328063700299006 /* reduction_opportunity.h */,
+				A97961922328063700299006 /* conditional_branch_to_simple_conditional_branch_opportunity_finder.h */,
+				A97961932328063700299006 /* operand_to_dominating_id_reduction_opportunity_finder.cpp */,
+				A97961942328063700299006 /* reduction_opportunity_finder.h */,
+				A97961952328063700299006 /* change_operand_reduction_opportunity.h */,
+				A97961962328063700299006 /* remove_block_reduction_opportunity_finder.h */,
+				A97961972328063700299006 /* remove_block_reduction_opportunity_finder.cpp */,
+				A97961982328063700299006 /* reduction_util.h */,
+				A97961992328063700299006 /* merge_blocks_reduction_opportunity.h */,
+				A979619A2328063700299006 /* conditional_branch_to_simple_conditional_branch_opportunity_finder.cpp */,
+				A979619B2328063700299006 /* structured_loop_to_selection_reduction_opportunity.cpp */,
+				A979619C2328063700299006 /* remove_block_reduction_opportunity.cpp */,
+				A979619D2328063700299006 /* reduction_pass.h */,
 			);
 			path = reduce;
 			sourceTree = "<group>";
 		};
-		A9C2EFEA22E7833C001763CE /* link */ = {
+		A97961BA2328063700299006 /* link */ = {
 			isa = PBXGroup;
 			children = (
-				A9C2EFEB22E7833C001763CE /* CMakeLists.txt */,
-				A9C2EFEC22E7833C001763CE /* linker.cpp */,
+				A97961BB2328063700299006 /* CMakeLists.txt */,
+				A97961BC2328063700299006 /* linker.cpp */,
 			);
 			path = link;
 			sourceTree = "<group>";
 		};
-		A9C2EFF222E7833C001763CE /* opt */ = {
+		A97961C22328063700299006 /* opt */ = {
 			isa = PBXGroup;
 			children = (
-				A9C2EFF322E7833C001763CE /* optimizer.cpp */,
-				A9C2EFF422E7833C001763CE /* if_conversion.h */,
-				A9C2EFF522E7833C001763CE /* register_pressure.cpp */,
-				A9C2EFF622E7833C001763CE /* loop_utils.cpp */,
-				A9C2EFF722E7833C001763CE /* merge_return_pass.h */,
-				A9C2EFF822E7833C001763CE /* inline_opaque_pass.h */,
-				A9C2EFF922E7833C001763CE /* loop_fusion.h */,
-				A9C2EFFA22E7833C001763CE /* combine_access_chains.cpp */,
-				A9C2EFFB22E7833C001763CE /* build_module.cpp */,
-				A9C2EFFC22E7833C001763CE /* composite.h */,
-				A9C2EFFD22E7833C001763CE /* compact_ids_pass.h */,
-				A9C2EFFE22E7833C001763CE /* register_pressure.h */,
-				A9C2EFFF22E7833C001763CE /* tree_iterator.h */,
-				A9C2F00022E7833C001763CE /* strip_atomic_counter_memory_pass.h */,
-				A9C2F00122E7833C001763CE /* legalize_vector_shuffle_pass.h */,
-				A9C2F00222E7833C001763CE /* local_single_store_elim_pass.h */,
-				A9C2F00322E7833C001763CE /* reduce_load_size.h */,
-				A9C2F00422E7833C001763CE /* code_sink.cpp */,
-				A9C2F00522E7833C001763CE /* types.cpp */,
-				A9C2F00622E7833C001763CE /* scalar_analysis.h */,
-				A9C2F00722E7833C001763CE /* strip_debug_info_pass.h */,
-				A9C2F00822E7833C001763CE /* cfg.cpp */,
-				A9C2F00922E7833C001763CE /* strip_atomic_counter_memory_pass.cpp */,
-				A9C2F00A22E7833C001763CE /* decoration_manager.cpp */,
-				A9C2F00B22E7833C001763CE /* local_single_block_elim_pass.cpp */,
-				A9C2F00C22E7833C001763CE /* freeze_spec_constant_value_pass.cpp */,
-				A9C2F00D22E7833C001763CE /* replace_invalid_opc.h */,
-				A9C2F00E22E7833C001763CE /* local_access_chain_convert_pass.h */,
-				A9C2F00F22E7833C001763CE /* inst_bindless_check_pass.cpp */,
-				A9C2F01022E7833C001763CE /* local_redundancy_elimination.cpp */,
-				A9C2F01122E7833C001763CE /* CMakeLists.txt */,
-				A9C2F01222E7833C001763CE /* instrument_pass.cpp */,
-				A9C2F01322E7833C001763CE /* propagator.h */,
-				A9C2F01422E7833C001763CE /* instruction_list.h */,
-				A9C2F01522E7833C001763CE /* feature_manager.cpp */,
-				A9C2F01622E7833C001763CE /* pass.cpp */,
-				A9C2F01722E7833C001763CE /* loop_fission.cpp */,
-				A9C2F01822E7833C001763CE /* dominator_tree.cpp */,
-				A9C2F01922E7833C001763CE /* merge_return_pass.cpp */,
-				A9C2F01A22E7833C001763CE /* ir_context.h */,
-				A9C2F01B22E7833C001763CE /* eliminate_dead_constant_pass.cpp */,
-				A9C2F01C22E7833C001763CE /* cfg_cleanup_pass.cpp */,
-				A9C2F01D22E7833C001763CE /* const_folding_rules.cpp */,
-				A9C2F01E22E7833C001763CE /* loop_unroller.h */,
-				A9C2F01F22E7833C001763CE /* strip_debug_info_pass.cpp */,
-				A9C2F02022E7833C001763CE /* ssa_rewrite_pass.cpp */,
-				A9C2F02122E7833C001763CE /* loop_dependence.cpp */,
-				A9C2F02222E7833C001763CE /* unify_const_pass.h */,
-				A9C2F02322E7833C001763CE /* ir_loader.h */,
-				A9C2F02422E7833C001763CE /* types.h */,
-				A9C2F02522E7833C001763CE /* fold_spec_constant_op_and_composite_pass.h */,
-				A9C2F02622E7833C001763CE /* mem_pass.cpp */,
-				A9C2F02722E7833C001763CE /* basic_block.h */,
-				A9C2F02822E7833C001763CE /* remove_duplicates_pass.cpp */,
-				A9C2F02922E7833C001763CE /* dead_variable_elimination.cpp */,
-				A9C2F02A22E7833C001763CE /* block_merge_pass.h */,
-				A9C2F02B22E7833C001763CE /* module.cpp */,
-				A9C2F02C22E7833C001763CE /* fold_spec_constant_op_and_composite_pass.cpp */,
-				A9C2F02D22E7833C001763CE /* loop_unswitch_pass.cpp */,
-				A9C2F02E22E7833C001763CE /* unify_const_pass.cpp */,
-				A9C2F02F22E7833C001763CE /* type_manager.cpp */,
-				A9C2F03022E7833C001763CE /* generate_webgpu_initializers_pass.cpp */,
-				A9C2F03122E7833C001763CE /* private_to_local_pass.h */,
-				A9C2F03222E7833C001763CE /* inline_pass.cpp */,
-				A9C2F03322E7833C001763CE /* def_use_manager.h */,
-				A9C2F03422E7833C001763CE /* ir_loader.cpp */,
-				A9C2F03522E7833C001763CE /* cfg_cleanup_pass.h */,
-				A9C2F03622E7833C001763CE /* licm_pass.cpp */,
-				A9C2F03722E7833C001763CE /* eliminate_dead_functions_pass.cpp */,
-				A9C2F03822E7833C001763CE /* local_redundancy_elimination.h */,
-				A9C2F03922E7833C001763CE /* split_invalid_unreachable_pass.cpp */,
-				A9C2F03A22E7833C001763CE /* loop_peeling.h */,
-				A9C2F03B22E7833C001763CE /* vector_dce.cpp */,
-				A9C2F03C22E7833C001763CE /* block_merge_util.h */,
-				A9C2F03D22E7833C001763CE /* loop_unroller.cpp */,
-				A9C2F03E22E7833C001763CE /* constants.cpp */,
-				A9C2F03F22E7833C001763CE /* loop_fusion_pass.h */,
-				A9C2F04022E7833C001763CE /* struct_cfg_analysis.h */,
-				A9C2F04122E7833C001763CE /* def_use_manager.cpp */,
-				A9C2F04222E7833C001763CE /* strip_reflect_info_pass.cpp */,
-				A9C2F04322E7833C001763CE /* decoration_manager.h */,
-				A9C2F04422E7833C001763CE /* ccp_pass.cpp */,
-				A9C2F04522E7833C001763CE /* process_lines_pass.h */,
-				A9C2F04622E7833C001763CE /* local_single_block_elim_pass.h */,
-				A9C2F04722E7833C001763CE /* pch_source_opt.cpp */,
-				A9C2F04822E7833C001763CE /* strength_reduction_pass.h */,
-				A9C2F04922E7833C001763CE /* aggressive_dead_code_elim_pass.cpp */,
-				A9C2F04A22E7833C001763CE /* eliminate_dead_functions_util.cpp */,
-				A9C2F04B22E7833C001763CE /* simplification_pass.cpp */,
-				A9C2F04C22E7833C001763CE /* dead_branch_elim_pass.cpp */,
-				A9C2F04D22E7833C001763CE /* flatten_decoration_pass.cpp */,
-				A9C2F04E22E7833C001763CE /* dead_insert_elim_pass.h */,
-				A9C2F04F22E7833C001763CE /* folding_rules.cpp */,
-				A9C2F05022E7833C001763CE /* freeze_spec_constant_value_pass.h */,
-				A9C2F05122E7833C001763CE /* ir_context.cpp */,
-				A9C2F05222E7833C001763CE /* instrument_pass.h */,
-				A9C2F05322E7833C001763CE /* mem_pass.h */,
-				A9C2F05422E7833C001763CE /* loop_descriptor.cpp */,
-				A9C2F05522E7833C001763CE /* local_ssa_elim_pass.cpp */,
-				A9C2F05622E7833C001763CE /* eliminate_dead_members_pass.h */,
-				A9C2F05722E7833C001763CE /* function.cpp */,
-				A9C2F05822E7833C001763CE /* instruction_list.cpp */,
-				A9C2F05922E7833C001763CE /* composite.cpp */,
-				A9C2F05A22E7833C001763CE /* process_lines_pass.cpp */,
-				A9C2F05B22E7833C001763CE /* inline_pass.h */,
-				A9C2F05C22E7833C001763CE /* loop_dependence.h */,
-				A9C2F05D22E7833C001763CE /* value_number_table.h */,
-				A9C2F05E22E7833C001763CE /* flatten_decoration_pass.h */,
-				A9C2F05F22E7833C001763CE /* if_conversion.cpp */,
-				A9C2F06022E7833C001763CE /* inline_exhaustive_pass.h */,
-				A9C2F06122E7833C001763CE /* constants.h */,
-				A9C2F06222E7833C001763CE /* eliminate_dead_members_pass.cpp */,
-				A9C2F06322E7833C001763CE /* strength_reduction_pass.cpp */,
-				A9C2F06422E7833C001763CE /* block_merge_util.cpp */,
-				A9C2F06522E7833C001763CE /* upgrade_memory_model.h */,
-				A9C2F06622E7833C001763CE /* copy_prop_arrays.cpp */,
-				A9C2F06722E7833C001763CE /* pass_manager.cpp */,
-				A9C2F06822E7833C001763CE /* inline_exhaustive_pass.cpp */,
-				A9C2F06922E7833C001763CE /* loop_fission.h */,
-				A9C2F06A22E7833C001763CE /* workaround1209.h */,
-				A9C2F06B22E7833C001763CE /* loop_fusion_pass.cpp */,
-				A9C2F06C22E7833C001763CE /* log.h */,
-				A9C2F06D22E7833C001763CE /* split_invalid_unreachable_pass.h */,
-				A9C2F06E22E7833C001763CE /* copy_prop_arrays.h */,
-				A9C2F06F22E7833C001763CE /* eliminate_dead_constant_pass.h */,
-				A9C2F07022E7833C001763CE /* dead_insert_elim_pass.cpp */,
-				A9C2F07122E7833C001763CE /* ssa_rewrite_pass.h */,
-				A9C2F07222E7833C001763CE /* scalar_analysis.cpp */,
-				A9C2F07322E7833C001763CE /* dead_variable_elimination.h */,
-				A9C2F07422E7833C001763CE /* block_merge_pass.cpp */,
-				A9C2F07522E7833C001763CE /* dominator_analysis.h */,
-				A9C2F07622E7833C001763CE /* pass.h */,
-				A9C2F07722E7833C001763CE /* folding_rules.h */,
-				A9C2F07822E7833C001763CE /* eliminate_dead_functions_pass.h */,
-				A9C2F07922E7833C001763CE /* eliminate_dead_functions_util.h */,
-				A9C2F07A22E7833C001763CE /* fold.h */,
-				A9C2F07B22E7833C001763CE /* local_single_store_elim_pass.cpp */,
-				A9C2F07C22E7833C001763CE /* dead_branch_elim_pass.h */,
-				A9C2F07D22E7833C001763CE /* private_to_local_pass.cpp */,
-				A9C2F07E22E7833C001763CE /* scalar_analysis_nodes.h */,
-				A9C2F07F22E7833C001763CE /* propagator.cpp */,
-				A9C2F08022E7833C001763CE /* fix_storage_class.h */,
-				A9C2F08122E7833C001763CE /* loop_dependence_helpers.cpp */,
-				A9C2F08222E7833C001763CE /* set_spec_constant_default_value_pass.cpp */,
-				A9C2F08322E7833C001763CE /* passes.h */,
-				A9C2F08422E7833C001763CE /* fold.cpp */,
-				A9C2F08522E7833C001763CE /* strip_reflect_info_pass.h */,
-				A9C2F08622E7833C001763CE /* scalar_replacement_pass.cpp */,
-				A9C2F08722E7833C001763CE /* simplification_pass.h */,
-				A9C2F08822E7833C001763CE /* remove_duplicates_pass.h */,
-				A9C2F08922E7833C001763CE /* redundancy_elimination.cpp */,
-				A9C2F08A22E7833C001763CE /* reflect.h */,
-				A9C2F08B22E7833C001763CE /* workaround1209.cpp */,
-				A9C2F08C22E7833C001763CE /* null_pass.h */,
-				A9C2F08D22E7833C001763CE /* const_folding_rules.h */,
-				A9C2F08E22E7833C001763CE /* scalar_replacement_pass.h */,
-				A9C2F08F22E7833C001763CE /* instruction.cpp */,
-				A9C2F09022E7833C001763CE /* pch_source_opt.h */,
-				A9C2F09122E7833C001763CE /* reduce_load_size.cpp */,
-				A9C2F09222E7833C001763CE /* redundancy_elimination.h */,
-				A9C2F09322E7833C001763CE /* fix_storage_class.cpp */,
-				A9C2F09422E7833C001763CE /* value_number_table.cpp */,
-				A9C2F09522E7833C001763CE /* local_ssa_elim_pass.h */,
-				A9C2F09622E7833C001763CE /* inline_opaque_pass.cpp */,
-				A9C2F09722E7833C001763CE /* replace_invalid_opc.cpp */,
-				A9C2F09822E7833C001763CE /* loop_utils.h */,
-				A9C2F09922E7833C001763CE /* module.h */,
-				A9C2F09A22E7833C001763CE /* dominator_analysis.cpp */,
-				A9C2F09B22E7833C001763CE /* decompose_initialized_variables_pass.cpp */,
-				A9C2F09C22E7833C001763CE /* ir_builder.h */,
-				A9C2F09D22E7833C001763CE /* loop_unswitch_pass.h */,
-				A9C2F09E22E7833C001763CE /* cfg.h */,
-				A9C2F09F22E7833C001763CE /* code_sink.h */,
-				A9C2F0A022E7833C001763CE /* loop_descriptor.h */,
-				A9C2F0A122E7833C001763CE /* generate_webgpu_initializers_pass.h */,
-				A9C2F0A222E7833C001763CE /* instruction.h */,
-				A9C2F0A322E7833C001763CE /* aggressive_dead_code_elim_pass.h */,
-				A9C2F0A422E7833C001763CE /* struct_cfg_analysis.cpp */,
-				A9C2F0A522E7833C001763CE /* vector_dce.h */,
-				A9C2F0A622E7833C001763CE /* combine_access_chains.h */,
-				A9C2F0A722E7833C001763CE /* pass_manager.h */,
-				A9C2F0A822E7833C001763CE /* local_access_chain_convert_pass.cpp */,
-				A9C2F0A922E7833C001763CE /* basic_block.cpp */,
-				A9C2F0AA22E7833C001763CE /* iterator.h */,
-				A9C2F0AB22E7833C001763CE /* licm_pass.h */,
-				A9C2F0AC22E7833C001763CE /* build_module.h */,
-				A9C2F0AD22E7833C001763CE /* ccp_pass.h */,
-				A9C2F0AE22E7833C001763CE /* decompose_initialized_variables_pass.h */,
-				A9C2F0AF22E7833C001763CE /* function.h */,
-				A9C2F0B022E7833C001763CE /* loop_fusion.cpp */,
-				A9C2F0B122E7833C001763CE /* upgrade_memory_model.cpp */,
-				A9C2F0B222E7833C001763CE /* feature_manager.h */,
-				A9C2F0B322E7833C001763CE /* inst_bindless_check_pass.h */,
-				A9C2F0B422E7833C001763CE /* scalar_analysis_simplification.cpp */,
-				A9C2F0B522E7833C001763CE /* set_spec_constant_default_value_pass.h */,
-				A9C2F0B622E7833C001763CE /* dominator_tree.h */,
-				A9C2F0B722E7833C001763CE /* legalize_vector_shuffle_pass.cpp */,
-				A9C2F0B822E7833C001763CE /* type_manager.h */,
-				A9C2F0B922E7833C001763CE /* compact_ids_pass.cpp */,
-				A9C2F0BA22E7833C001763CE /* loop_peeling.cpp */,
+				A97961C32328063700299006 /* optimizer.cpp */,
+				A97961C42328063700299006 /* if_conversion.h */,
+				A97961C52328063700299006 /* register_pressure.cpp */,
+				A97961C62328063700299006 /* loop_utils.cpp */,
+				A97961C72328063700299006 /* merge_return_pass.h */,
+				A97961C82328063700299006 /* inline_opaque_pass.h */,
+				A97961C92328063700299006 /* loop_fusion.h */,
+				A97961CA2328063700299006 /* combine_access_chains.cpp */,
+				A97961CB2328063700299006 /* build_module.cpp */,
+				A97961CC2328063700299006 /* composite.h */,
+				A97961CD2328063700299006 /* compact_ids_pass.h */,
+				A97961CE2328063700299006 /* register_pressure.h */,
+				A97961CF2328063700299006 /* tree_iterator.h */,
+				A97961D02328063700299006 /* graphics_robust_access_pass.h */,
+				A97961D12328063700299006 /* strip_atomic_counter_memory_pass.h */,
+				A97961D22328063700299006 /* legalize_vector_shuffle_pass.h */,
+				A97961D32328063700299006 /* local_single_store_elim_pass.h */,
+				A97961D42328063700299006 /* reduce_load_size.h */,
+				A97961D52328063700299006 /* code_sink.cpp */,
+				A97961D62328063700299006 /* types.cpp */,
+				A97961D72328063700299006 /* scalar_analysis.h */,
+				A97961D82328063700299006 /* strip_debug_info_pass.h */,
+				A97961D92328063700299006 /* cfg.cpp */,
+				A97961DA2328063700299006 /* strip_atomic_counter_memory_pass.cpp */,
+				A97961DB2328063700299006 /* decoration_manager.cpp */,
+				A97961DC2328063700299006 /* local_single_block_elim_pass.cpp */,
+				A97961DD2328063700299006 /* freeze_spec_constant_value_pass.cpp */,
+				A97961DE2328063700299006 /* replace_invalid_opc.h */,
+				A97961DF2328063700299006 /* local_access_chain_convert_pass.h */,
+				A97961E02328063700299006 /* inst_bindless_check_pass.cpp */,
+				A97961E12328063700299006 /* local_redundancy_elimination.cpp */,
+				A97961E22328063700299006 /* CMakeLists.txt */,
+				A97961E32328063700299006 /* instrument_pass.cpp */,
+				A97961E42328063700299006 /* propagator.h */,
+				A97961E52328063700299006 /* instruction_list.h */,
+				A97961E62328063700299006 /* feature_manager.cpp */,
+				A97961E72328063700299006 /* pass.cpp */,
+				A97961E82328063700299006 /* loop_fission.cpp */,
+				A97961E92328063700299006 /* dominator_tree.cpp */,
+				A97961EA2328063700299006 /* amd_ext_to_khr.h */,
+				A97961EB2328063700299006 /* merge_return_pass.cpp */,
+				A97961EC2328063700299006 /* ir_context.h */,
+				A97961ED2328063700299006 /* eliminate_dead_constant_pass.cpp */,
+				A97961EE2328063700299006 /* cfg_cleanup_pass.cpp */,
+				A97961EF2328063700299006 /* wrap_opkill.cpp */,
+				A97961F02328063700299006 /* const_folding_rules.cpp */,
+				A97961F12328063700299006 /* loop_unroller.h */,
+				A97961F22328063700299006 /* strip_debug_info_pass.cpp */,
+				A97961F32328063700299006 /* ssa_rewrite_pass.cpp */,
+				A97961F42328063700299006 /* loop_dependence.cpp */,
+				A97961F52328063700299006 /* unify_const_pass.h */,
+				A97961F62328063700299006 /* ir_loader.h */,
+				A97961F72328063700299006 /* types.h */,
+				A97961F82328063700299006 /* fold_spec_constant_op_and_composite_pass.h */,
+				A97961F92328063700299006 /* mem_pass.cpp */,
+				A97961FA2328063700299006 /* basic_block.h */,
+				A97961FB2328063700299006 /* remove_duplicates_pass.cpp */,
+				A97961FC2328063700299006 /* dead_variable_elimination.cpp */,
+				A97961FD2328063700299006 /* block_merge_pass.h */,
+				A97961FE2328063700299006 /* module.cpp */,
+				A97961FF2328063700299006 /* fold_spec_constant_op_and_composite_pass.cpp */,
+				A97962002328063700299006 /* loop_unswitch_pass.cpp */,
+				A97962012328063700299006 /* unify_const_pass.cpp */,
+				A97962022328063700299006 /* type_manager.cpp */,
+				A97962032328063700299006 /* generate_webgpu_initializers_pass.cpp */,
+				A97962042328063700299006 /* private_to_local_pass.h */,
+				A97962052328063700299006 /* convert_to_half_pass.h */,
+				A97962062328063700299006 /* relax_float_ops_pass.h */,
+				A97962072328063700299006 /* inline_pass.cpp */,
+				A97962082328063700299006 /* def_use_manager.h */,
+				A97962092328063700299006 /* ir_loader.cpp */,
+				A979620A2328063700299006 /* cfg_cleanup_pass.h */,
+				A979620B2328063700299006 /* licm_pass.cpp */,
+				A979620C2328063700299006 /* eliminate_dead_functions_pass.cpp */,
+				A979620D2328063700299006 /* local_redundancy_elimination.h */,
+				A979620E2328063700299006 /* split_invalid_unreachable_pass.cpp */,
+				A979620F2328063700299006 /* loop_peeling.h */,
+				A97962102328063700299006 /* vector_dce.cpp */,
+				A97962112328063700299006 /* block_merge_util.h */,
+				A97962122328063700299006 /* loop_unroller.cpp */,
+				A97962132328063700299006 /* desc_sroa.h */,
+				A97962142328063700299006 /* constants.cpp */,
+				A97962152328063700299006 /* loop_fusion_pass.h */,
+				A97962162328063700299006 /* struct_cfg_analysis.h */,
+				A97962172328063700299006 /* inst_buff_addr_check_pass.cpp */,
+				A97962182328063700299006 /* def_use_manager.cpp */,
+				A97962192328063700299006 /* wrap_opkill.h */,
+				A979621A2328063700299006 /* strip_reflect_info_pass.cpp */,
+				A979621B2328063700299006 /* decoration_manager.h */,
+				A979621C2328063700299006 /* ccp_pass.cpp */,
+				A979621D2328063700299006 /* process_lines_pass.h */,
+				A979621E2328063700299006 /* local_single_block_elim_pass.h */,
+				A979621F2328063700299006 /* pch_source_opt.cpp */,
+				A97962202328063700299006 /* inst_buff_addr_check_pass.h */,
+				A97962212328063700299006 /* strength_reduction_pass.h */,
+				A97962222328063700299006 /* aggressive_dead_code_elim_pass.cpp */,
+				A97962232328063700299006 /* eliminate_dead_functions_util.cpp */,
+				A97962242328063700299006 /* simplification_pass.cpp */,
+				A97962252328063700299006 /* dead_branch_elim_pass.cpp */,
+				A97962262328063700299006 /* flatten_decoration_pass.cpp */,
+				A97962272328063700299006 /* dead_insert_elim_pass.h */,
+				A97962282328063700299006 /* folding_rules.cpp */,
+				A97962292328063700299006 /* freeze_spec_constant_value_pass.h */,
+				A979622A2328063700299006 /* ir_context.cpp */,
+				A979622B2328063700299006 /* instrument_pass.h */,
+				A979622C2328063700299006 /* mem_pass.h */,
+				A979622D2328063700299006 /* loop_descriptor.cpp */,
+				A979622E2328063700299006 /* local_ssa_elim_pass.cpp */,
+				A979622F2328063700299006 /* eliminate_dead_members_pass.h */,
+				A97962302328063700299006 /* function.cpp */,
+				A97962312328063700299006 /* instruction_list.cpp */,
+				A97962322328063700299006 /* composite.cpp */,
+				A97962332328063700299006 /* convert_to_half_pass.cpp */,
+				A97962342328063700299006 /* process_lines_pass.cpp */,
+				A97962352328063700299006 /* inline_pass.h */,
+				A97962362328063700299006 /* loop_dependence.h */,
+				A97962372328063700299006 /* value_number_table.h */,
+				A97962382328063700299006 /* flatten_decoration_pass.h */,
+				A97962392328063700299006 /* if_conversion.cpp */,
+				A979623A2328063700299006 /* inline_exhaustive_pass.h */,
+				A979623B2328063700299006 /* constants.h */,
+				A979623C2328063700299006 /* eliminate_dead_members_pass.cpp */,
+				A979623D2328063700299006 /* strength_reduction_pass.cpp */,
+				A979623E2328063700299006 /* desc_sroa.cpp */,
+				A979623F2328063700299006 /* block_merge_util.cpp */,
+				A97962402328063700299006 /* upgrade_memory_model.h */,
+				A97962412328063700299006 /* copy_prop_arrays.cpp */,
+				A97962422328063700299006 /* pass_manager.cpp */,
+				A97962432328063700299006 /* inline_exhaustive_pass.cpp */,
+				A97962442328063700299006 /* loop_fission.h */,
+				A97962452328063700299006 /* workaround1209.h */,
+				A97962462328063700299006 /* loop_fusion_pass.cpp */,
+				A97962472328063700299006 /* log.h */,
+				A97962482328063700299006 /* split_invalid_unreachable_pass.h */,
+				A97962492328063700299006 /* copy_prop_arrays.h */,
+				A979624A2328063700299006 /* eliminate_dead_constant_pass.h */,
+				A979624B2328063700299006 /* dead_insert_elim_pass.cpp */,
+				A979624C2328063700299006 /* ssa_rewrite_pass.h */,
+				A979624D2328063700299006 /* scalar_analysis.cpp */,
+				A979624E2328063700299006 /* dead_variable_elimination.h */,
+				A979624F2328063700299006 /* block_merge_pass.cpp */,
+				A97962502328063700299006 /* dominator_analysis.h */,
+				A97962512328063700299006 /* pass.h */,
+				A97962522328063700299006 /* folding_rules.h */,
+				A97962532328063700299006 /* eliminate_dead_functions_pass.h */,
+				A97962542328063700299006 /* eliminate_dead_functions_util.h */,
+				A97962552328063700299006 /* fold.h */,
+				A97962562328063700299006 /* local_single_store_elim_pass.cpp */,
+				A97962572328063700299006 /* dead_branch_elim_pass.h */,
+				A97962582328063700299006 /* private_to_local_pass.cpp */,
+				A97962592328063700299006 /* scalar_analysis_nodes.h */,
+				A979625A2328063700299006 /* propagator.cpp */,
+				A979625B2328063700299006 /* fix_storage_class.h */,
+				A979625C2328063700299006 /* loop_dependence_helpers.cpp */,
+				A979625D2328063700299006 /* set_spec_constant_default_value_pass.cpp */,
+				A979625E2328063700299006 /* passes.h */,
+				A979625F2328063700299006 /* fold.cpp */,
+				A97962602328063700299006 /* amd_ext_to_khr.cpp */,
+				A97962612328063700299006 /* strip_reflect_info_pass.h */,
+				A97962622328063700299006 /* scalar_replacement_pass.cpp */,
+				A97962632328063700299006 /* simplification_pass.h */,
+				A97962642328063700299006 /* remove_duplicates_pass.h */,
+				A97962652328063700299006 /* redundancy_elimination.cpp */,
+				A97962662328063700299006 /* reflect.h */,
+				A97962672328063700299006 /* workaround1209.cpp */,
+				A97962682328063700299006 /* null_pass.h */,
+				A97962692328063700299006 /* relax_float_ops_pass.cpp */,
+				A979626A2328063700299006 /* const_folding_rules.h */,
+				A979626B2328063700299006 /* scalar_replacement_pass.h */,
+				A979626C2328063700299006 /* instruction.cpp */,
+				A979626D2328063700299006 /* pch_source_opt.h */,
+				A979626E2328063700299006 /* reduce_load_size.cpp */,
+				A979626F2328063700299006 /* redundancy_elimination.h */,
+				A97962702328063700299006 /* fix_storage_class.cpp */,
+				A97962712328063700299006 /* value_number_table.cpp */,
+				A97962722328063700299006 /* local_ssa_elim_pass.h */,
+				A97962732328063700299006 /* inline_opaque_pass.cpp */,
+				A97962742328063700299006 /* replace_invalid_opc.cpp */,
+				A97962752328063700299006 /* loop_utils.h */,
+				A97962762328063700299006 /* module.h */,
+				A97962772328063700299006 /* dominator_analysis.cpp */,
+				A97962782328063700299006 /* decompose_initialized_variables_pass.cpp */,
+				A97962792328063700299006 /* ir_builder.h */,
+				A979627A2328063700299006 /* loop_unswitch_pass.h */,
+				A979627B2328063700299006 /* cfg.h */,
+				A979627C2328063700299006 /* code_sink.h */,
+				A979627D2328063700299006 /* loop_descriptor.h */,
+				A979627E2328063700299006 /* generate_webgpu_initializers_pass.h */,
+				A979627F2328063700299006 /* instruction.h */,
+				A97962802328063700299006 /* aggressive_dead_code_elim_pass.h */,
+				A97962812328063700299006 /* struct_cfg_analysis.cpp */,
+				A97962822328063700299006 /* vector_dce.h */,
+				A97962832328063700299006 /* combine_access_chains.h */,
+				A97962842328063700299006 /* pass_manager.h */,
+				A97962852328063700299006 /* local_access_chain_convert_pass.cpp */,
+				A97962862328063700299006 /* basic_block.cpp */,
+				A97962872328063700299006 /* iterator.h */,
+				A97962882328063700299006 /* licm_pass.h */,
+				A97962892328063700299006 /* build_module.h */,
+				A979628A2328063700299006 /* ccp_pass.h */,
+				A979628B2328063700299006 /* graphics_robust_access_pass.cpp */,
+				A979628C2328063700299006 /* decompose_initialized_variables_pass.h */,
+				A979628D2328063700299006 /* function.h */,
+				A979628E2328063700299006 /* loop_fusion.cpp */,
+				A979628F2328063700299006 /* upgrade_memory_model.cpp */,
+				A97962902328063700299006 /* feature_manager.h */,
+				A97962912328063700299006 /* inst_bindless_check_pass.h */,
+				A97962922328063700299006 /* scalar_analysis_simplification.cpp */,
+				A97962932328063700299006 /* set_spec_constant_default_value_pass.h */,
+				A97962942328063700299006 /* dominator_tree.h */,
+				A97962952328063700299006 /* legalize_vector_shuffle_pass.cpp */,
+				A97962962328063700299006 /* type_manager.h */,
+				A97962972328063700299006 /* compact_ids_pass.cpp */,
+				A97962982328063700299006 /* loop_peeling.cpp */,
 			);
 			path = opt;
 			sourceTree = "<group>";
 		};
-		A9C2F10622E7833D001763CE /* val */ = {
+		A97962EC2328063700299006 /* val */ = {
 			isa = PBXGroup;
 			children = (
-				A9C2F10722E7833D001763CE /* validate_annotation.cpp */,
-				A9C2F10822E7833D001763CE /* validate_misc.cpp */,
-				A9C2F10922E7833D001763CE /* validate_cfg.cpp */,
-				A9C2F10A22E7833D001763CE /* validate_capability.cpp */,
-				A9C2F10B22E7833D001763CE /* construct.h */,
-				A9C2F10C22E7833D001763CE /* validate_barriers.cpp */,
-				A9C2F10D22E7833D001763CE /* validate_non_uniform.cpp */,
-				A9C2F10E22E7833D001763CE /* validate_scopes.cpp */,
-				A9C2F10F22E7833D001763CE /* validate_atomics.cpp */,
-				A9C2F11022E7833D001763CE /* basic_block.h */,
-				A9C2F11122E7833D001763CE /* validate_instruction.cpp */,
-				A9C2F11222E7833D001763CE /* validate_decorations.cpp */,
-				A9C2F11322E7833D001763CE /* validate_debug.cpp */,
-				A9C2F11422E7833D001763CE /* validate_builtins.cpp */,
-				A9C2F11522E7833D001763CE /* validate_interfaces.cpp */,
-				A9C2F11622E7833D001763CE /* validate.cpp */,
-				A9C2F11722E7833D001763CE /* validation_state.h */,
-				A9C2F11822E7833D001763CE /* validate_constants.cpp */,
-				A9C2F11922E7833D001763CE /* validate_bitwise.cpp */,
-				A9C2F11A22E7833D001763CE /* validate_extensions.cpp */,
-				A9C2F11B22E7833D001763CE /* construct.cpp */,
-				A9C2F11C22E7833D001763CE /* function.cpp */,
-				A9C2F11D22E7833D001763CE /* validate.h */,
-				A9C2F11E22E7833D001763CE /* validate_adjacency.cpp */,
-				A9C2F11F22E7833D001763CE /* validate_conversion.cpp */,
-				A9C2F12022E7833D001763CE /* validate_small_type_uses.cpp */,
-				A9C2F12122E7833D001763CE /* validate_datarules.cpp */,
-				A9C2F12222E7833D001763CE /* validate_scopes.h */,
-				A9C2F12322E7833D001763CE /* validate_id.cpp */,
-				A9C2F12422E7833D001763CE /* validate_memory_semantics.h */,
-				A9C2F12522E7833D001763CE /* validate_arithmetics.cpp */,
-				A9C2F12622E7833D001763CE /* validate_mode_setting.cpp */,
-				A9C2F12722E7833D001763CE /* validate_memory_semantics.cpp */,
-				A9C2F12822E7833D001763CE /* validate_logicals.cpp */,
-				A9C2F12922E7833D001763CE /* validate_derivatives.cpp */,
-				A9C2F12A22E7833D001763CE /* validate_memory.cpp */,
-				A9C2F12B22E7833D001763CE /* validate_image.cpp */,
-				A9C2F12C22E7833D001763CE /* validate_literals.cpp */,
-				A9C2F12D22E7833D001763CE /* instruction.cpp */,
-				A9C2F12E22E7833D001763CE /* validate_type.cpp */,
-				A9C2F12F22E7833D001763CE /* instruction.h */,
-				A9C2F13022E7833D001763CE /* validate_execution_limitations.cpp */,
-				A9C2F13122E7833D001763CE /* validate_layout.cpp */,
-				A9C2F13222E7833D001763CE /* basic_block.cpp */,
-				A9C2F13322E7833D001763CE /* validate_function.cpp */,
-				A9C2F13422E7833D001763CE /* function.h */,
-				A9C2F13522E7833D001763CE /* validate_composites.cpp */,
-				A9C2F13622E7833D001763CE /* validation_state.cpp */,
-				A9C2F13722E7833D001763CE /* validate_primitives.cpp */,
-				A9C2F13822E7833D001763CE /* decoration.h */,
+				A97962ED2328063700299006 /* validate_annotation.cpp */,
+				A97962EE2328063700299006 /* validate_misc.cpp */,
+				A97962EF2328063700299006 /* validate_cfg.cpp */,
+				A97962F02328063700299006 /* validate_capability.cpp */,
+				A97962F12328063700299006 /* construct.h */,
+				A97962F22328063700299006 /* validate_barriers.cpp */,
+				A97962F32328063700299006 /* validate_non_uniform.cpp */,
+				A97962F42328063700299006 /* validate_scopes.cpp */,
+				A97962F52328063700299006 /* validate_atomics.cpp */,
+				A97962F62328063700299006 /* basic_block.h */,
+				A97962F72328063700299006 /* validate_instruction.cpp */,
+				A97962F82328063700299006 /* validate_decorations.cpp */,
+				A97962F92328063700299006 /* validate_debug.cpp */,
+				A97962FA2328063700299006 /* validate_builtins.cpp */,
+				A97962FB2328063700299006 /* validate_interfaces.cpp */,
+				A97962FC2328063700299006 /* validate.cpp */,
+				A97962FD2328063700299006 /* validation_state.h */,
+				A97962FE2328063700299006 /* validate_constants.cpp */,
+				A97962FF2328063700299006 /* validate_bitwise.cpp */,
+				A97963002328063700299006 /* validate_extensions.cpp */,
+				A97963012328063700299006 /* construct.cpp */,
+				A97963022328063700299006 /* function.cpp */,
+				A97963032328063700299006 /* validate.h */,
+				A97963042328063700299006 /* validate_adjacency.cpp */,
+				A97963052328063700299006 /* validate_conversion.cpp */,
+				A97963062328063700299006 /* validate_small_type_uses.cpp */,
+				A97963072328063700299006 /* validate_datarules.cpp */,
+				A97963082328063700299006 /* validate_scopes.h */,
+				A97963092328063700299006 /* validate_id.cpp */,
+				A979630A2328063700299006 /* validate_memory_semantics.h */,
+				A979630B2328063700299006 /* validate_arithmetics.cpp */,
+				A979630C2328063700299006 /* validate_mode_setting.cpp */,
+				A979630D2328063700299006 /* validate_memory_semantics.cpp */,
+				A979630E2328063700299006 /* validate_logicals.cpp */,
+				A979630F2328063700299006 /* validate_derivatives.cpp */,
+				A97963102328063700299006 /* validate_memory.cpp */,
+				A97963112328063700299006 /* validate_image.cpp */,
+				A97963122328063700299006 /* validate_literals.cpp */,
+				A97963132328063700299006 /* instruction.cpp */,
+				A97963142328063700299006 /* validate_type.cpp */,
+				A97963152328063700299006 /* instruction.h */,
+				A97963162328063700299006 /* validate_execution_limitations.cpp */,
+				A97963172328063700299006 /* validate_layout.cpp */,
+				A97963182328063700299006 /* basic_block.cpp */,
+				A97963192328063700299006 /* validate_function.cpp */,
+				A979631A2328063700299006 /* function.h */,
+				A979631B2328063700299006 /* validate_composites.cpp */,
+				A979631C2328063700299006 /* validation_state.cpp */,
+				A979631D2328063700299006 /* validate_primitives.cpp */,
+				A979631E2328063700299006 /* decoration.h */,
 			);
 			path = val;
 			sourceTree = "<group>";
@@ -2277,186 +2341,194 @@
 			isa = PBXHeadersBuildPhase;
 			buildActionMask = 2147483647;
 			files = (
-				A9C2F37922E7833D001763CE /* vector_dce.h in Headers */,
-				A9C2F42B22E7833D001763CE /* latest_version_glsl_std_450_header.h in Headers */,
-				A9C2F27722E7833D001763CE /* types.h in Headers */,
-				A9C2F23F22E7833D001763CE /* strip_debug_info_pass.h in Headers */,
-				A9C2F31D22E7833D001763CE /* folding_rules.h in Headers */,
-				A9C2F16B22E7833D001763CE /* operand_to_undef_reduction_opportunity_finder.h in Headers */,
-				A9C2F48F22E7833D001763CE /* function.h in Headers */,
-				A9C2F38522E7833D001763CE /* licm_pass.h in Headers */,
-				A9C2F32B22E7833D001763CE /* scalar_analysis_nodes.h in Headers */,
-				A9C2F19F22E7833D001763CE /* structured_loop_to_selection_reduction_opportunity_finder.h in Headers */,
-				A9C2F23D22E7833D001763CE /* scalar_analysis.h in Headers */,
-				A9C2F2E722E7833D001763CE /* loop_dependence.h in Headers */,
-				A9C2F27522E7833D001763CE /* ir_loader.h in Headers */,
-				A9C2F1C522E7833D001763CE /* reduction_opportunity_finder.h in Headers */,
-				A9C2F42722E7833D001763CE /* opcode.h in Headers */,
-				A9C2F2D522E7833D001763CE /* mem_pass.h in Headers */,
-				A9C2F44722E7833D001763CE /* basic_block.h in Headers */,
-				A9C2F21522E7833D001763CE /* disassemble.h in Headers */,
-				A9C2F46F22E7833D001763CE /* validate_memory_semantics.h in Headers */,
-				A9C2F18322E7833D001763CE /* conditional_branch_to_simple_conditional_branch_reduction_opportunity.h in Headers */,
-				A9C2F34B22E7833D001763CE /* scalar_replacement_pass.h in Headers */,
-				A9C2F19122E7833D001763CE /* simple_conditional_branch_to_branch_opportunity_finder.h in Headers */,
-				A9C2F2AD22E7833D001763CE /* loop_fusion_pass.h in Headers */,
-				A9C2F49722E7833D001763CE /* decoration.h in Headers */,
-				A9C2F36122E7833D001763CE /* module.h in Headers */,
-				A9C2F27D22E7833D001763CE /* basic_block.h in Headers */,
-				A9C2F43122E7833D001763CE /* binary.h in Headers */,
-				A9C2F37522E7833D001763CE /* aggressive_dead_code_elim_pass.h in Headers */,
-				A9C2F37D22E7833D001763CE /* pass_manager.h in Headers */,
-				A9C2F21F22E7833D001763CE /* merge_return_pass.h in Headers */,
-				A9C2F1E522E7833D001763CE /* spirv_reducer_options.h in Headers */,
-				A9C2F22922E7833D001763CE /* composite.h in Headers */,
-				A9C2F31922E7833D001763CE /* dominator_analysis.h in Headers */,
-				A9C2F38922E7833D001763CE /* ccp_pass.h in Headers */,
-				A9C2F2EB22E7833D001763CE /* flatten_decoration_pass.h in Headers */,
-				A9C2F20722E7833D001763CE /* spirv_endian.h in Headers */,
-				A9C2F18922E7833D001763CE /* remove_opname_instruction_reduction_opportunity_finder.h in Headers */,
-				A9C2F1F322E7833D001763CE /* spirv_constant.h in Headers */,
-				A9C2F21922E7833D001763CE /* if_conversion.h in Headers */,
-				A9C2F1B522E7833D001763CE /* remove_unreferenced_instruction_reduction_opportunity_finder.h in Headers */,
-				A9C2F15D22E7833D001763CE /* bitutils.h in Headers */,
-				A9C2F26B22E7833D001763CE /* loop_unroller.h in Headers */,
-				A9C2F1C922E7833D001763CE /* remove_block_reduction_opportunity_finder.h in Headers */,
-				A9C2F16722E7833D001763CE /* spirv_target_env.h in Headers */,
-				A9C2F36D22E7833D001763CE /* code_sink.h in Headers */,
-				A9C2F23122E7833D001763CE /* strip_atomic_counter_memory_pass.h in Headers */,
-				A9C2F2D322E7833D001763CE /* instrument_pass.h in Headers */,
-				A9C2F38722E7833D001763CE /* build_module.h in Headers */,
-				A9C2F42D22E7833D001763CE /* extensions.h in Headers */,
-				A9C2F48522E7833D001763CE /* instruction.h in Headers */,
-				A9C2F32F22E7833D001763CE /* fix_storage_class.h in Headers */,
-				A9C2F36722E7833D001763CE /* ir_builder.h in Headers */,
-				A9C2F2B522E7833D001763CE /* decoration_manager.h in Headers */,
-				A9C2F33922E7833D001763CE /* strip_reflect_info_pass.h in Headers */,
-				A9C2F38322E7833D001763CE /* iterator.h in Headers */,
-				A9C2F38B22E7833D001763CE /* decompose_initialized_variables_pass.h in Headers */,
-				A9C2F34722E7833D001763CE /* null_pass.h in Headers */,
-				A9C2F30922E7833D001763CE /* split_invalid_unreachable_pass.h in Headers */,
-				A9C2F30B22E7833D001763CE /* copy_prop_arrays.h in Headers */,
-				A9C2F22322E7833D001763CE /* loop_fusion.h in Headers */,
-				A9C2F3A522E7833D001763CE /* table.h in Headers */,
-				A9C2F14F22E7833D001763CE /* make_unique.h in Headers */,
-				A9C2F31B22E7833D001763CE /* pass.h in Headers */,
-				A9C2F2BB22E7833D001763CE /* local_single_block_elim_pass.h in Headers */,
-				A9C2F2A322E7833D001763CE /* loop_peeling.h in Headers */,
-				A9C2F19722E7833D001763CE /* structured_loop_to_selection_reduction_opportunity.h in Headers */,
-				A9C2F1DD22E7833D001763CE /* cfa.h in Headers */,
-				A9C2F2BF22E7833D001763CE /* strength_reduction_pass.h in Headers */,
-				A9C2F28322E7833D001763CE /* block_merge_pass.h in Headers */,
-				A9C2F33522E7833D001763CE /* passes.h in Headers */,
-				A9C2F46122E7833D001763CE /* validate.h in Headers */,
-				A9C2F22D22E7833D001763CE /* register_pressure.h in Headers */,
-				A9C2F1BF22E7833D001763CE /* reduction_opportunity.h in Headers */,
-				A9C2F1A522E7833D001763CE /* remove_selection_reduction_opportunity_finder.h in Headers */,
-				A9C2F2AF22E7833D001763CE /* struct_cfg_analysis.h in Headers */,
-				A9C2F1CD22E7833D001763CE /* reduction_util.h in Headers */,
-				A9C2F23522E7833D001763CE /* local_single_store_elim_pass.h in Headers */,
-				A9C2F18122E7833D001763CE /* remove_instruction_reduction_opportunity.h in Headers */,
-				A9C2F13D22E7833D001763CE /* assembly_grammar.h in Headers */,
-				A9C2F20522E7833D001763CE /* diagnostic.h in Headers */,
-				A9C2F45522E7833D001763CE /* validation_state.h in Headers */,
-				A9C2F1EB22E7833D001763CE /* spirv_definition.h in Headers */,
-				A9C2F34F22E7833D001763CE /* pch_source_opt.h in Headers */,
-				A9C2F25722E7833D001763CE /* instruction_list.h in Headers */,
-				A9C2F30122E7833D001763CE /* loop_fission.h in Headers */,
-				A9C2F16F22E7833D001763CE /* remove_block_reduction_opportunity.h in Headers */,
-				A9C2F39522E7833D001763CE /* inst_bindless_check_pass.h in Headers */,
-				A9C2F2F122E7833D001763CE /* constants.h in Headers */,
-				A9C2F1F122E7833D001763CE /* macro.h in Headers */,
-				A9C2F42522E7833D001763CE /* spirv_optimizer_options.h in Headers */,
-				A9C2F43D22E7833D001763CE /* construct.h in Headers */,
-				A9C2F25522E7833D001763CE /* propagator.h in Headers */,
-				A9C2F39322E7833D001763CE /* feature_manager.h in Headers */,
-				A9C2F2CB22E7833D001763CE /* dead_insert_elim_pass.h in Headers */,
-				A9C2F41F22E7833D001763CE /* latest_version_spirv_header.h in Headers */,
-				A9C2F39F22E7833D001763CE /* type_manager.h in Headers */,
-				A9C2F27922E7833D001763CE /* fold_spec_constant_op_and_composite_pass.h in Headers */,
-				A9C2F17D22E7833D001763CE /* simple_conditional_branch_to_branch_reduction_opportunity.h in Headers */,
-				A9C2F30722E7833D001763CE /* log.h in Headers */,
-				A9C2F39B22E7833D001763CE /* dominator_tree.h in Headers */,
-				A9C2F2F922E7833D001763CE /* upgrade_memory_model.h in Headers */,
-				A9C2F1FF22E7833D001763CE /* name_mapper.h in Headers */,
-				A9C2F19922E7833D001763CE /* remove_function_reduction_opportunity.h in Headers */,
-				A9C2F22F22E7833D001763CE /* tree_iterator.h in Headers */,
-				A9C2F34922E7833D001763CE /* const_folding_rules.h in Headers */,
-				A9C2F33F22E7833D001763CE /* remove_duplicates_pass.h in Headers */,
-				A9C2F41B22E7833D001763CE /* ext_inst.h in Headers */,
-				A9C2F2E522E7833D001763CE /* inline_pass.h in Headers */,
-				A9C2F37B22E7833D001763CE /* combine_access_chains.h in Headers */,
-				A9C2F31F22E7833D001763CE /* eliminate_dead_functions_pass.h in Headers */,
-				A9C2F31122E7833D001763CE /* ssa_rewrite_pass.h in Headers */,
-				A9C2F15722E7833D001763CE /* timer.h in Headers */,
-				A9C2F42322E7833D001763CE /* instruction.h in Headers */,
-				A9C2F35922E7833D001763CE /* local_ssa_elim_pass.h in Headers */,
-				A9C2F34322E7833D001763CE /* reflect.h in Headers */,
-				A9C2F1A722E7833D001763CE /* merge_blocks_reduction_opportunity_finder.h in Headers */,
-				A9C2F1F722E7833D001763CE /* spirv_validator_options.h in Headers */,
-				A9C2F32322E7833D001763CE /* fold.h in Headers */,
-				A9C2F16522E7833D001763CE /* ilist.h in Headers */,
-				A9C2F15322E7833D001763CE /* small_vector.h in Headers */,
-				A9C2F15F22E7833D001763CE /* hex_float.h in Headers */,
-				A9C2F2B922E7833D001763CE /* process_lines_pass.h in Headers */,
-				A9C2F14522E7833D001763CE /* text.h in Headers */,
-				A9C2F1C722E7833D001763CE /* change_operand_reduction_opportunity.h in Headers */,
-				A9C2F38D22E7833D001763CE /* function.h in Headers */,
-				A9C2F15122E7833D001763CE /* string_utils.h in Headers */,
-				A9C2F1D922E7833D001763CE /* latest_version_opencl_std_header.h in Headers */,
-				A9C2F30D22E7833D001763CE /* eliminate_dead_constant_pass.h in Headers */,
-				A9C2F1BB22E7833D001763CE /* reducer.h in Headers */,
-				A9C2F35F22E7833D001763CE /* loop_utils.h in Headers */,
-				A9C2F23322E7833D001763CE /* legalize_vector_shuffle_pass.h in Headers */,
-				A9C2F29F22E7833D001763CE /* local_redundancy_elimination.h in Headers */,
-				A9C2F22B22E7833D001763CE /* compact_ids_pass.h in Headers */,
-				A9C2F1B122E7833D001763CE /* remove_function_reduction_opportunity_finder.h in Headers */,
-				A9C2F30322E7833D001763CE /* workaround1209.h in Headers */,
-				A9C2F1B322E7833D001763CE /* pch_source_reduce.h in Headers */,
-				A9C2F1FB22E7833D001763CE /* text_handler.h in Headers */,
-				A9C2F1E122E7833D001763CE /* enum_string_mapping.h in Headers */,
-				A9C2F17122E7833D001763CE /* operand_to_dominating_id_reduction_opportunity_finder.h in Headers */,
-				A9C2F27322E7833D001763CE /* unify_const_pass.h in Headers */,
-				A9C2F14B22E7833D001763CE /* parse_number.h in Headers */,
-				A9C2F2E922E7833D001763CE /* value_number_table.h in Headers */,
-				A9C2F1C122E7833D001763CE /* conditional_branch_to_simple_conditional_branch_opportunity_finder.h in Headers */,
-				A9C2F24B22E7833D001763CE /* replace_invalid_opc.h in Headers */,
-				A9C2F2A722E7833D001763CE /* block_merge_util.h in Headers */,
-				A9C2F35322E7833D001763CE /* redundancy_elimination.h in Headers */,
-				A9C2F37122E7833D001763CE /* generate_webgpu_initializers_pass.h in Headers */,
-				A9C2F2CF22E7833D001763CE /* freeze_spec_constant_value_pass.h in Headers */,
-				A9C2F23722E7833D001763CE /* reduce_load_size.h in Headers */,
-				A9C2F37322E7833D001763CE /* instruction.h in Headers */,
-				A9C2F13B22E7833D001763CE /* spirv_fuzzer_options.h in Headers */,
-				A9C2F46B22E7833D001763CE /* validate_scopes.h in Headers */,
-				A9C2F14D22E7833D001763CE /* ilist_node.h in Headers */,
-				A9C2F13F22E7833D001763CE /* enum_set.h in Headers */,
-				A9C2F1FD22E7833D001763CE /* parsed_operand.h in Headers */,
-				A9C2F26322E7833D001763CE /* ir_context.h in Headers */,
-				A9C2F36B22E7833D001763CE /* cfg.h in Headers */,
-				A9C2F2EF22E7833D001763CE /* inline_exhaustive_pass.h in Headers */,
-				A9C2F1CF22E7833D001763CE /* merge_blocks_reduction_opportunity.h in Headers */,
-				A9C2F33D22E7833D001763CE /* simplification_pass.h in Headers */,
-				A9C2F29522E7833D001763CE /* def_use_manager.h in Headers */,
-				A9C2F29922E7833D001763CE /* cfg_cleanup_pass.h in Headers */,
-				A9C2F21122E7833D001763CE /* print.h in Headers */,
-				A9C2F22122E7833D001763CE /* inline_opaque_pass.h in Headers */,
-				A9C2F19B22E7833D001763CE /* change_operand_to_undef_reduction_opportunity.h in Headers */,
-				A9C2F39922E7833D001763CE /* set_spec_constant_default_value_pass.h in Headers */,
-				A9C2F24D22E7833D001763CE /* local_access_chain_convert_pass.h in Headers */,
-				A9C2F1ED22E7833D001763CE /* operand.h in Headers */,
-				A9C2F31522E7833D001763CE /* dead_variable_elimination.h in Headers */,
-				A9C2F32122E7833D001763CE /* eliminate_dead_functions_util.h in Headers */,
-				A9C2F17722E7833D001763CE /* operand_to_const_reduction_opportunity_finder.h in Headers */,
-				A9C2F36F22E7833D001763CE /* loop_descriptor.h in Headers */,
-				A9C2F1D722E7833D001763CE /* reduction_pass.h in Headers */,
-				A9C2F1A122E7833D001763CE /* remove_selection_reduction_opportunity.h in Headers */,
-				A9C2F29122E7833D001763CE /* private_to_local_pass.h in Headers */,
-				A9C2F15B22E7833D001763CE /* bit_vector.h in Headers */,
-				A9C2F36922E7833D001763CE /* loop_unswitch_pass.h in Headers */,
-				A9C2F2DB22E7833D001763CE /* eliminate_dead_members_pass.h in Headers */,
-				A9C2F1DF22E7833D001763CE /* pch_source.h in Headers */,
-				A9C2F32722E7833D001763CE /* dead_branch_elim_pass.h in Headers */,
+				A979663B2328063800299006 /* spirv_optimizer_options.h in Headers */,
+				A97964ED2328063700299006 /* inline_exhaustive_pass.h in Headers */,
+				A97964672328063700299006 /* types.h in Headers */,
+				A97964972328063700299006 /* loop_peeling.h in Headers */,
+				A97963512328063700299006 /* operand_to_undef_reduction_opportunity_finder.h in Headers */,
+				A979656D2328063700299006 /* loop_unswitch_pass.h in Headers */,
+				A97965732328063700299006 /* loop_descriptor.h in Headers */,
+				A97964E52328063700299006 /* loop_dependence.h in Headers */,
+				A97964C72328063700299006 /* dead_insert_elim_pass.h in Headers */,
+				A97965572328063700299006 /* redundancy_elimination.h in Headers */,
+				A97964732328063700299006 /* block_merge_pass.h in Headers */,
+				A979658D2328063700299006 /* ccp_pass.h in Headers */,
+				A97965112328063700299006 /* ssa_rewrite_pass.h in Headers */,
+				A97965272328063700299006 /* dead_branch_elim_pass.h in Headers */,
+				A97963D72328063700299006 /* operand.h in Headers */,
+				A97963B32328063700299006 /* remove_block_reduction_opportunity_finder.h in Headers */,
+				A979649F2328063700299006 /* desc_sroa.h in Headers */,
+				A97964E32328063700299006 /* inline_pass.h in Headers */,
+				A97964B32328063700299006 /* process_lines_pass.h in Headers */,
+				A97965232328063700299006 /* fold.h in Headers */,
+				A97966772328063800299006 /* validate.h in Headers */,
+				A979650D2328063700299006 /* eliminate_dead_constant_pass.h in Headers */,
+				A97966432328063800299006 /* extensions.h in Headers */,
+				A97963DB2328063700299006 /* macro.h in Headers */,
+				A97963AF2328063700299006 /* reduction_opportunity_finder.h in Headers */,
+				A97963C72328063700299006 /* cfa.h in Headers */,
+				A97964832328063700299006 /* convert_to_half_pass.h in Headers */,
+				A97964132328063700299006 /* composite.h in Headers */,
+				A979651B2328063700299006 /* pass.h in Headers */,
+				A97963A52328063700299006 /* reducer.h in Headers */,
+				A97966312328063800299006 /* ext_inst.h in Headers */,
+				A97965AB2328063800299006 /* table.h in Headers */,
+				A97965012328063700299006 /* loop_fission.h in Headers */,
+				A97964D12328063700299006 /* mem_pass.h in Headers */,
+				A97965092328063700299006 /* split_invalid_unreachable_pass.h in Headers */,
+				A97963872328063700299006 /* structured_loop_to_selection_reduction_opportunity_finder.h in Headers */,
+				A979657D2328063700299006 /* vector_dce.h in Headers */,
+				A979655D2328063700299006 /* local_ssa_elim_pass.h in Headers */,
+				A979641B2328063700299006 /* graphics_robust_access_pass.h in Headers */,
+				A979638F2328063700299006 /* remove_selection_reduction_opportunity_finder.h in Headers */,
+				A979649B2328063700299006 /* block_merge_util.h in Headers */,
+				A97963EF2328063700299006 /* diagnostic.h in Headers */,
+				A97965A12328063800299006 /* dominator_tree.h in Headers */,
+				A97965772328063700299006 /* instruction.h in Headers */,
+				A979639B2328063700299006 /* remove_function_reduction_opportunity_finder.h in Headers */,
+				A979659B2328063800299006 /* inst_bindless_check_pass.h in Headers */,
+				A97964412328063700299006 /* propagator.h in Headers */,
+				A97966412328063800299006 /* latest_version_glsl_std_450_header.h in Headers */,
+				A97963E92328063700299006 /* name_mapper.h in Headers */,
+				A97966392328063800299006 /* instruction.h in Headers */,
+				A97964632328063700299006 /* unify_const_pass.h in Headers */,
+				A97964A52328063700299006 /* struct_cfg_analysis.h in Headers */,
+				A97965872328063700299006 /* iterator.h in Headers */,
+				A97964812328063700299006 /* private_to_local_pass.h in Headers */,
+				A979636B2328063700299006 /* conditional_branch_to_simple_conditional_branch_reduction_opportunity.h in Headers */,
+				A97963FF2328063700299006 /* disassemble.h in Headers */,
+				A97963792328063700299006 /* simple_conditional_branch_to_branch_opportunity_finder.h in Headers */,
+				A979651F2328063700299006 /* eliminate_dead_functions_pass.h in Headers */,
+				A97965992328063800299006 /* feature_manager.h in Headers */,
+				A97963712328063700299006 /* remove_opname_instruction_reduction_opportunity_finder.h in Headers */,
+				A97964CF2328063700299006 /* instrument_pass.h in Headers */,
+				A97965A52328063800299006 /* type_manager.h in Headers */,
+				A979645B2328063700299006 /* loop_unroller.h in Headers */,
+				A97964B52328063700299006 /* local_single_block_elim_pass.h in Headers */,
+				A97966352328063800299006 /* latest_version_spirv_header.h in Headers */,
+				A97964E72328063700299006 /* value_number_table.h in Headers */,
+				A97966812328063800299006 /* validate_scopes.h in Headers */,
+				A97965912328063700299006 /* decompose_initialized_variables_pass.h in Headers */,
+				A97965932328063700299006 /* function.h in Headers */,
+				A979653F2328063700299006 /* simplification_pass.h in Headers */,
+				A979642B2328063700299006 /* strip_debug_info_pass.h in Headers */,
+				A97963432328063700299006 /* bitutils.h in Headers */,
+				A979634D2328063700299006 /* spirv_target_env.h in Headers */,
+				A97963CF2328063700299006 /* spirv_reducer_options.h in Headers */,
+				A97963352328063700299006 /* make_unique.h in Headers */,
+				A97965072328063700299006 /* log.h in Headers */,
+				A979637F2328063700299006 /* structured_loop_to_selection_reduction_opportunity.h in Headers */,
+				A97964F92328063700299006 /* upgrade_memory_model.h in Headers */,
+				A97964A32328063700299006 /* loop_fusion_pass.h in Headers */,
+				A97963692328063700299006 /* remove_instruction_reduction_opportunity.h in Headers */,
+				A97963DD2328063700299006 /* spirv_constant.h in Headers */,
+				A979657F2328063700299006 /* combine_access_chains.h in Headers */,
+				A97965212328063700299006 /* eliminate_dead_functions_util.h in Headers */,
+				A97964E92328063700299006 /* flatten_decoration_pass.h in Headers */,
+				A979652F2328063700299006 /* fix_storage_class.h in Headers */,
+				A97963232328063700299006 /* assembly_grammar.h in Headers */,
+				A97965352328063700299006 /* passes.h in Headers */,
+				A97964932328063700299006 /* local_redundancy_elimination.h in Headers */,
+				A979669B2328063800299006 /* instruction.h in Headers */,
+				A97965152328063700299006 /* dead_variable_elimination.h in Headers */,
+				A979646D2328063700299006 /* basic_block.h in Headers */,
+				A97964212328063700299006 /* local_single_store_elim_pass.h in Headers */,
+				A97963552328063700299006 /* remove_block_reduction_opportunity.h in Headers */,
+				A97966532328063800299006 /* construct.h in Headers */,
+				A979663D2328063800299006 /* opcode.h in Headers */,
+				A97966A52328063800299006 /* function.h in Headers */,
+				A97964292328063700299006 /* scalar_analysis.h in Headers */,
+				A97965792328063700299006 /* aggressive_dead_code_elim_pass.h in Headers */,
+				A97964692328063700299006 /* fold_spec_constant_op_and_composite_pass.h in Headers */,
+				A97963C12328063700299006 /* reduction_pass.h in Headers */,
+				A97963912328063700299006 /* merge_blocks_reduction_opportunity_finder.h in Headers */,
+				A979641F2328063700299006 /* legalize_vector_shuffle_pass.h in Headers */,
+				A97963C32328063700299006 /* latest_version_opencl_std_header.h in Headers */,
+				A97963E52328063700299006 /* text_handler.h in Headers */,
+				A97965412328063700299006 /* remove_duplicates_pass.h in Headers */,
+				A979639F2328063700299006 /* remove_unreferenced_instruction_reduction_opportunity_finder.h in Headers */,
+				A97966AD2328063800299006 /* decoration.h in Headers */,
+				A97964432328063700299006 /* instruction_list.h in Headers */,
+				A97964D72328063700299006 /* eliminate_dead_members_pass.h in Headers */,
+				A97964192328063700299006 /* tree_iterator.h in Headers */,
+				A979666B2328063800299006 /* validation_state.h in Headers */,
+				A97965452328063700299006 /* reflect.h in Headers */,
+				A97964652328063700299006 /* ir_loader.h in Headers */,
+				A979639D2328063700299006 /* pch_source_reduce.h in Headers */,
+				A979659F2328063800299006 /* set_spec_constant_default_value_pass.h in Headers */,
+				A979654F2328063700299006 /* scalar_replacement_pass.h in Headers */,
+				A97963652328063700299006 /* simple_conditional_branch_to_branch_reduction_opportunity.h in Headers */,
+				A97963812328063700299006 /* remove_function_reduction_opportunity.h in Headers */,
+				A979633D2328063700299006 /* timer.h in Headers */,
+				A979634B2328063700299006 /* ilist.h in Headers */,
+				A97964B92328063700299006 /* inst_buff_addr_check_pass.h in Headers */,
+				A97964092328063700299006 /* merge_return_pass.h in Headers */,
+				A97963B72328063700299006 /* reduction_util.h in Headers */,
+				A97963392328063700299006 /* small_vector.h in Headers */,
+				A97966472328063800299006 /* binary.h in Headers */,
+				A97964AF2328063700299006 /* decoration_manager.h in Headers */,
+				A97964CB2328063700299006 /* freeze_spec_constant_value_pass.h in Headers */,
+				A97965032328063700299006 /* workaround1209.h in Headers */,
+				A97963452328063700299006 /* hex_float.h in Headers */,
+				A979665D2328063800299006 /* basic_block.h in Headers */,
+				A979656F2328063700299006 /* cfg.h in Headers */,
+				A97963B92328063700299006 /* merge_blocks_reduction_opportunity.h in Headers */,
+				A979632B2328063700299006 /* text.h in Headers */,
+				A979640B2328063700299006 /* inline_opaque_pass.h in Headers */,
+				A97965632328063700299006 /* loop_utils.h in Headers */,
+				A97964BB2328063700299006 /* strength_reduction_pass.h in Headers */,
+				A97963C92328063700299006 /* pch_source.h in Headers */,
+				A979654D2328063700299006 /* const_folding_rules.h in Headers */,
+				A97963CB2328063700299006 /* enum_string_mapping.h in Headers */,
+				A97963372328063700299006 /* string_utils.h in Headers */,
+				A97963572328063700299006 /* operand_to_dominating_id_reduction_opportunity_finder.h in Headers */,
+				A97963F12328063700299006 /* spirv_endian.h in Headers */,
+				A979640D2328063700299006 /* loop_fusion.h in Headers */,
+				A97963312328063700299006 /* parse_number.h in Headers */,
+				A979658B2328063700299006 /* build_module.h in Headers */,
+				A97963212328063700299006 /* spirv_fuzzer_options.h in Headers */,
+				A979638D2328063700299006 /* remove_relaxed_precision_decoration_opportunity_finder.h in Headers */,
+				A97963332328063700299006 /* ilist_node.h in Headers */,
+				A97963252328063700299006 /* enum_set.h in Headers */,
+				A97964172328063700299006 /* register_pressure.h in Headers */,
+				A97965652328063700299006 /* module.h in Headers */,
+				A979650B2328063700299006 /* copy_prop_arrays.h in Headers */,
+				A97963E12328063700299006 /* spirv_validator_options.h in Headers */,
+				A97965532328063700299006 /* pch_source_opt.h in Headers */,
+				A97963D52328063700299006 /* spirv_definition.h in Headers */,
+				A97964892328063700299006 /* def_use_manager.h in Headers */,
+				A979652B2328063700299006 /* scalar_analysis_nodes.h in Headers */,
+				A97963832328063700299006 /* change_operand_to_undef_reduction_opportunity.h in Headers */,
+				A97964152328063700299006 /* compact_ids_pass.h in Headers */,
+				A97965492328063700299006 /* null_pass.h in Headers */,
+				A97963B12328063700299006 /* change_operand_reduction_opportunity.h in Headers */,
+				A97963A92328063700299006 /* reduction_opportunity.h in Headers */,
+				A97964392328063700299006 /* local_access_chain_convert_pass.h in Headers */,
+				A97963FB2328063700299006 /* print.h in Headers */,
+				A979635D2328063700299006 /* operand_to_const_reduction_opportunity_finder.h in Headers */,
+				A97964032328063700299006 /* if_conversion.h in Headers */,
+				A979651D2328063700299006 /* folding_rules.h in Headers */,
+				A97965812328063700299006 /* pass_manager.h in Headers */,
+				A979653B2328063700299006 /* strip_reflect_info_pass.h in Headers */,
+				A97965712328063700299006 /* code_sink.h in Headers */,
+				A97964AB2328063700299006 /* wrap_opkill.h in Headers */,
+				A979641D2328063700299006 /* strip_atomic_counter_memory_pass.h in Headers */,
+				A979656B2328063700299006 /* ir_builder.h in Headers */,
+				A97963892328063700299006 /* remove_selection_reduction_opportunity.h in Headers */,
+				A97963E72328063700299006 /* parsed_operand.h in Headers */,
+				A97963412328063700299006 /* bit_vector.h in Headers */,
+				A97963AB2328063700299006 /* conditional_branch_to_simple_conditional_branch_opportunity_finder.h in Headers */,
+				A97966852328063800299006 /* validate_memory_semantics.h in Headers */,
+				A97964372328063700299006 /* replace_invalid_opc.h in Headers */,
+				A97965192328063700299006 /* dominator_analysis.h in Headers */,
+				A97964EF2328063700299006 /* constants.h in Headers */,
+				A97964852328063700299006 /* relax_float_ops_pass.h in Headers */,
+				A97964232328063700299006 /* reduce_load_size.h in Headers */,
+				A979648D2328063700299006 /* cfg_cleanup_pass.h in Headers */,
+				A97965752328063700299006 /* generate_webgpu_initializers_pass.h in Headers */,
+				A979644D2328063700299006 /* amd_ext_to_khr.h in Headers */,
+				A97965892328063700299006 /* licm_pass.h in Headers */,
+				A97964512328063700299006 /* ir_context.h in Headers */,
 			);
 			runOnlyForDeploymentPostprocessing = 0;
 		};
@@ -2464,186 +2536,194 @@
 			isa = PBXHeadersBuildPhase;
 			buildActionMask = 2147483647;
 			files = (
-				A9C2F37A22E7833D001763CE /* vector_dce.h in Headers */,
-				A9C2F42C22E7833D001763CE /* latest_version_glsl_std_450_header.h in Headers */,
-				A9C2F27822E7833D001763CE /* types.h in Headers */,
-				A9C2F24022E7833D001763CE /* strip_debug_info_pass.h in Headers */,
-				A9C2F31E22E7833D001763CE /* folding_rules.h in Headers */,
-				A9C2F16C22E7833D001763CE /* operand_to_undef_reduction_opportunity_finder.h in Headers */,
-				A9C2F49022E7833D001763CE /* function.h in Headers */,
-				A9C2F38622E7833D001763CE /* licm_pass.h in Headers */,
-				A9C2F32C22E7833D001763CE /* scalar_analysis_nodes.h in Headers */,
-				A9C2F1A022E7833D001763CE /* structured_loop_to_selection_reduction_opportunity_finder.h in Headers */,
-				A9C2F23E22E7833D001763CE /* scalar_analysis.h in Headers */,
-				A9C2F2E822E7833D001763CE /* loop_dependence.h in Headers */,
-				A9C2F27622E7833D001763CE /* ir_loader.h in Headers */,
-				A9C2F1C622E7833D001763CE /* reduction_opportunity_finder.h in Headers */,
-				A9C2F42822E7833D001763CE /* opcode.h in Headers */,
-				A9C2F2D622E7833D001763CE /* mem_pass.h in Headers */,
-				A9C2F44822E7833D001763CE /* basic_block.h in Headers */,
-				A9C2F21622E7833D001763CE /* disassemble.h in Headers */,
-				A9C2F47022E7833D001763CE /* validate_memory_semantics.h in Headers */,
-				A9C2F18422E7833D001763CE /* conditional_branch_to_simple_conditional_branch_reduction_opportunity.h in Headers */,
-				A9C2F34C22E7833D001763CE /* scalar_replacement_pass.h in Headers */,
-				A9C2F19222E7833D001763CE /* simple_conditional_branch_to_branch_opportunity_finder.h in Headers */,
-				A9C2F2AE22E7833D001763CE /* loop_fusion_pass.h in Headers */,
-				A9C2F49822E7833D001763CE /* decoration.h in Headers */,
-				A9C2F36222E7833D001763CE /* module.h in Headers */,
-				A9C2F27E22E7833D001763CE /* basic_block.h in Headers */,
-				A9C2F43222E7833D001763CE /* binary.h in Headers */,
-				A9C2F37622E7833D001763CE /* aggressive_dead_code_elim_pass.h in Headers */,
-				A9C2F37E22E7833D001763CE /* pass_manager.h in Headers */,
-				A9C2F22022E7833D001763CE /* merge_return_pass.h in Headers */,
-				A9C2F1E622E7833D001763CE /* spirv_reducer_options.h in Headers */,
-				A9C2F22A22E7833D001763CE /* composite.h in Headers */,
-				A9C2F31A22E7833D001763CE /* dominator_analysis.h in Headers */,
-				A9C2F38A22E7833D001763CE /* ccp_pass.h in Headers */,
-				A9C2F2EC22E7833D001763CE /* flatten_decoration_pass.h in Headers */,
-				A9C2F20822E7833D001763CE /* spirv_endian.h in Headers */,
-				A9C2F18A22E7833D001763CE /* remove_opname_instruction_reduction_opportunity_finder.h in Headers */,
-				A9C2F1F422E7833D001763CE /* spirv_constant.h in Headers */,
-				A9C2F21A22E7833D001763CE /* if_conversion.h in Headers */,
-				A9C2F1B622E7833D001763CE /* remove_unreferenced_instruction_reduction_opportunity_finder.h in Headers */,
-				A9C2F15E22E7833D001763CE /* bitutils.h in Headers */,
-				A9C2F26C22E7833D001763CE /* loop_unroller.h in Headers */,
-				A9C2F1CA22E7833D001763CE /* remove_block_reduction_opportunity_finder.h in Headers */,
-				A9C2F16822E7833D001763CE /* spirv_target_env.h in Headers */,
-				A9C2F36E22E7833D001763CE /* code_sink.h in Headers */,
-				A9C2F23222E7833D001763CE /* strip_atomic_counter_memory_pass.h in Headers */,
-				A9C2F2D422E7833D001763CE /* instrument_pass.h in Headers */,
-				A9C2F38822E7833D001763CE /* build_module.h in Headers */,
-				A9C2F42E22E7833D001763CE /* extensions.h in Headers */,
-				A9C2F48622E7833D001763CE /* instruction.h in Headers */,
-				A9C2F33022E7833D001763CE /* fix_storage_class.h in Headers */,
-				A9C2F36822E7833D001763CE /* ir_builder.h in Headers */,
-				A9C2F2B622E7833D001763CE /* decoration_manager.h in Headers */,
-				A9C2F33A22E7833D001763CE /* strip_reflect_info_pass.h in Headers */,
-				A9C2F38422E7833D001763CE /* iterator.h in Headers */,
-				A9C2F38C22E7833D001763CE /* decompose_initialized_variables_pass.h in Headers */,
-				A9C2F34822E7833D001763CE /* null_pass.h in Headers */,
-				A9C2F30A22E7833D001763CE /* split_invalid_unreachable_pass.h in Headers */,
-				A9C2F30C22E7833D001763CE /* copy_prop_arrays.h in Headers */,
-				A9C2F22422E7833D001763CE /* loop_fusion.h in Headers */,
-				A9C2F3A622E7833D001763CE /* table.h in Headers */,
-				A9C2F15022E7833D001763CE /* make_unique.h in Headers */,
-				A9C2F31C22E7833D001763CE /* pass.h in Headers */,
-				A9C2F2BC22E7833D001763CE /* local_single_block_elim_pass.h in Headers */,
-				A9C2F2A422E7833D001763CE /* loop_peeling.h in Headers */,
-				A9C2F19822E7833D001763CE /* structured_loop_to_selection_reduction_opportunity.h in Headers */,
-				A9C2F1DE22E7833D001763CE /* cfa.h in Headers */,
-				A9C2F2C022E7833D001763CE /* strength_reduction_pass.h in Headers */,
-				A9C2F28422E7833D001763CE /* block_merge_pass.h in Headers */,
-				A9C2F33622E7833D001763CE /* passes.h in Headers */,
-				A9C2F46222E7833D001763CE /* validate.h in Headers */,
-				A9C2F22E22E7833D001763CE /* register_pressure.h in Headers */,
-				A9C2F1C022E7833D001763CE /* reduction_opportunity.h in Headers */,
-				A9C2F1A622E7833D001763CE /* remove_selection_reduction_opportunity_finder.h in Headers */,
-				A9C2F2B022E7833D001763CE /* struct_cfg_analysis.h in Headers */,
-				A9C2F1CE22E7833D001763CE /* reduction_util.h in Headers */,
-				A9C2F23622E7833D001763CE /* local_single_store_elim_pass.h in Headers */,
-				A9C2F18222E7833D001763CE /* remove_instruction_reduction_opportunity.h in Headers */,
-				A9C2F13E22E7833D001763CE /* assembly_grammar.h in Headers */,
-				A9C2F20622E7833D001763CE /* diagnostic.h in Headers */,
-				A9C2F45622E7833D001763CE /* validation_state.h in Headers */,
-				A9C2F1EC22E7833D001763CE /* spirv_definition.h in Headers */,
-				A9C2F35022E7833D001763CE /* pch_source_opt.h in Headers */,
-				A9C2F25822E7833D001763CE /* instruction_list.h in Headers */,
-				A9C2F30222E7833D001763CE /* loop_fission.h in Headers */,
-				A9C2F17022E7833D001763CE /* remove_block_reduction_opportunity.h in Headers */,
-				A9C2F39622E7833D001763CE /* inst_bindless_check_pass.h in Headers */,
-				A9C2F2F222E7833D001763CE /* constants.h in Headers */,
-				A9C2F1F222E7833D001763CE /* macro.h in Headers */,
-				A9C2F42622E7833D001763CE /* spirv_optimizer_options.h in Headers */,
-				A9C2F43E22E7833D001763CE /* construct.h in Headers */,
-				A9C2F25622E7833D001763CE /* propagator.h in Headers */,
-				A9C2F39422E7833D001763CE /* feature_manager.h in Headers */,
-				A9C2F2CC22E7833D001763CE /* dead_insert_elim_pass.h in Headers */,
-				A9C2F42022E7833D001763CE /* latest_version_spirv_header.h in Headers */,
-				A9C2F3A022E7833D001763CE /* type_manager.h in Headers */,
-				A9C2F27A22E7833D001763CE /* fold_spec_constant_op_and_composite_pass.h in Headers */,
-				A9C2F17E22E7833D001763CE /* simple_conditional_branch_to_branch_reduction_opportunity.h in Headers */,
-				A9C2F30822E7833D001763CE /* log.h in Headers */,
-				A9C2F39C22E7833D001763CE /* dominator_tree.h in Headers */,
-				A9C2F2FA22E7833D001763CE /* upgrade_memory_model.h in Headers */,
-				A9C2F20022E7833D001763CE /* name_mapper.h in Headers */,
-				A9C2F19A22E7833D001763CE /* remove_function_reduction_opportunity.h in Headers */,
-				A9C2F23022E7833D001763CE /* tree_iterator.h in Headers */,
-				A9C2F34A22E7833D001763CE /* const_folding_rules.h in Headers */,
-				A9C2F34022E7833D001763CE /* remove_duplicates_pass.h in Headers */,
-				A9C2F41C22E7833D001763CE /* ext_inst.h in Headers */,
-				A9C2F2E622E7833D001763CE /* inline_pass.h in Headers */,
-				A9C2F37C22E7833D001763CE /* combine_access_chains.h in Headers */,
-				A9C2F32022E7833D001763CE /* eliminate_dead_functions_pass.h in Headers */,
-				A9C2F31222E7833D001763CE /* ssa_rewrite_pass.h in Headers */,
-				A9C2F15822E7833D001763CE /* timer.h in Headers */,
-				A9C2F42422E7833D001763CE /* instruction.h in Headers */,
-				A9C2F35A22E7833D001763CE /* local_ssa_elim_pass.h in Headers */,
-				A9C2F34422E7833D001763CE /* reflect.h in Headers */,
-				A9C2F1A822E7833D001763CE /* merge_blocks_reduction_opportunity_finder.h in Headers */,
-				A9C2F1F822E7833D001763CE /* spirv_validator_options.h in Headers */,
-				A9C2F32422E7833D001763CE /* fold.h in Headers */,
-				A9C2F16622E7833D001763CE /* ilist.h in Headers */,
-				A9C2F15422E7833D001763CE /* small_vector.h in Headers */,
-				A9C2F16022E7833D001763CE /* hex_float.h in Headers */,
-				A9C2F2BA22E7833D001763CE /* process_lines_pass.h in Headers */,
-				A9C2F14622E7833D001763CE /* text.h in Headers */,
-				A9C2F1C822E7833D001763CE /* change_operand_reduction_opportunity.h in Headers */,
-				A9C2F38E22E7833D001763CE /* function.h in Headers */,
-				A9C2F15222E7833D001763CE /* string_utils.h in Headers */,
-				A9C2F1DA22E7833D001763CE /* latest_version_opencl_std_header.h in Headers */,
-				A9C2F30E22E7833D001763CE /* eliminate_dead_constant_pass.h in Headers */,
-				A9C2F1BC22E7833D001763CE /* reducer.h in Headers */,
-				A9C2F36022E7833D001763CE /* loop_utils.h in Headers */,
-				A9C2F23422E7833D001763CE /* legalize_vector_shuffle_pass.h in Headers */,
-				A9C2F2A022E7833D001763CE /* local_redundancy_elimination.h in Headers */,
-				A9C2F22C22E7833D001763CE /* compact_ids_pass.h in Headers */,
-				A9C2F1B222E7833D001763CE /* remove_function_reduction_opportunity_finder.h in Headers */,
-				A9C2F30422E7833D001763CE /* workaround1209.h in Headers */,
-				A9C2F1B422E7833D001763CE /* pch_source_reduce.h in Headers */,
-				A9C2F1FC22E7833D001763CE /* text_handler.h in Headers */,
-				A9C2F1E222E7833D001763CE /* enum_string_mapping.h in Headers */,
-				A9C2F17222E7833D001763CE /* operand_to_dominating_id_reduction_opportunity_finder.h in Headers */,
-				A9C2F27422E7833D001763CE /* unify_const_pass.h in Headers */,
-				A9C2F14C22E7833D001763CE /* parse_number.h in Headers */,
-				A9C2F2EA22E7833D001763CE /* value_number_table.h in Headers */,
-				A9C2F1C222E7833D001763CE /* conditional_branch_to_simple_conditional_branch_opportunity_finder.h in Headers */,
-				A9C2F24C22E7833D001763CE /* replace_invalid_opc.h in Headers */,
-				A9C2F2A822E7833D001763CE /* block_merge_util.h in Headers */,
-				A9C2F35422E7833D001763CE /* redundancy_elimination.h in Headers */,
-				A9C2F37222E7833D001763CE /* generate_webgpu_initializers_pass.h in Headers */,
-				A9C2F2D022E7833D001763CE /* freeze_spec_constant_value_pass.h in Headers */,
-				A9C2F23822E7833D001763CE /* reduce_load_size.h in Headers */,
-				A9C2F37422E7833D001763CE /* instruction.h in Headers */,
-				A9C2F13C22E7833D001763CE /* spirv_fuzzer_options.h in Headers */,
-				A9C2F46C22E7833D001763CE /* validate_scopes.h in Headers */,
-				A9C2F14E22E7833D001763CE /* ilist_node.h in Headers */,
-				A9C2F14022E7833D001763CE /* enum_set.h in Headers */,
-				A9C2F1FE22E7833D001763CE /* parsed_operand.h in Headers */,
-				A9C2F26422E7833D001763CE /* ir_context.h in Headers */,
-				A9C2F36C22E7833D001763CE /* cfg.h in Headers */,
-				A9C2F2F022E7833D001763CE /* inline_exhaustive_pass.h in Headers */,
-				A9C2F1D022E7833D001763CE /* merge_blocks_reduction_opportunity.h in Headers */,
-				A9C2F33E22E7833D001763CE /* simplification_pass.h in Headers */,
-				A9C2F29622E7833D001763CE /* def_use_manager.h in Headers */,
-				A9C2F29A22E7833D001763CE /* cfg_cleanup_pass.h in Headers */,
-				A9C2F21222E7833D001763CE /* print.h in Headers */,
-				A9C2F22222E7833D001763CE /* inline_opaque_pass.h in Headers */,
-				A9C2F19C22E7833D001763CE /* change_operand_to_undef_reduction_opportunity.h in Headers */,
-				A9C2F39A22E7833D001763CE /* set_spec_constant_default_value_pass.h in Headers */,
-				A9C2F24E22E7833D001763CE /* local_access_chain_convert_pass.h in Headers */,
-				A9C2F1EE22E7833D001763CE /* operand.h in Headers */,
-				A9C2F31622E7833D001763CE /* dead_variable_elimination.h in Headers */,
-				A9C2F32222E7833D001763CE /* eliminate_dead_functions_util.h in Headers */,
-				A9C2F17822E7833D001763CE /* operand_to_const_reduction_opportunity_finder.h in Headers */,
-				A9C2F37022E7833D001763CE /* loop_descriptor.h in Headers */,
-				A9C2F1D822E7833D001763CE /* reduction_pass.h in Headers */,
-				A9C2F1A222E7833D001763CE /* remove_selection_reduction_opportunity.h in Headers */,
-				A9C2F29222E7833D001763CE /* private_to_local_pass.h in Headers */,
-				A9C2F15C22E7833D001763CE /* bit_vector.h in Headers */,
-				A9C2F36A22E7833D001763CE /* loop_unswitch_pass.h in Headers */,
-				A9C2F2DC22E7833D001763CE /* eliminate_dead_members_pass.h in Headers */,
-				A9C2F1E022E7833D001763CE /* pch_source.h in Headers */,
-				A9C2F32822E7833D001763CE /* dead_branch_elim_pass.h in Headers */,
+				A979663C2328063800299006 /* spirv_optimizer_options.h in Headers */,
+				A97964EE2328063700299006 /* inline_exhaustive_pass.h in Headers */,
+				A97964682328063700299006 /* types.h in Headers */,
+				A97964982328063700299006 /* loop_peeling.h in Headers */,
+				A97963522328063700299006 /* operand_to_undef_reduction_opportunity_finder.h in Headers */,
+				A979656E2328063700299006 /* loop_unswitch_pass.h in Headers */,
+				A97965742328063700299006 /* loop_descriptor.h in Headers */,
+				A97964E62328063700299006 /* loop_dependence.h in Headers */,
+				A97964C82328063700299006 /* dead_insert_elim_pass.h in Headers */,
+				A97965582328063700299006 /* redundancy_elimination.h in Headers */,
+				A97964742328063700299006 /* block_merge_pass.h in Headers */,
+				A979658E2328063700299006 /* ccp_pass.h in Headers */,
+				A97965122328063700299006 /* ssa_rewrite_pass.h in Headers */,
+				A97965282328063700299006 /* dead_branch_elim_pass.h in Headers */,
+				A97963D82328063700299006 /* operand.h in Headers */,
+				A97963B42328063700299006 /* remove_block_reduction_opportunity_finder.h in Headers */,
+				A97964A02328063700299006 /* desc_sroa.h in Headers */,
+				A97964E42328063700299006 /* inline_pass.h in Headers */,
+				A97964B42328063700299006 /* process_lines_pass.h in Headers */,
+				A97965242328063700299006 /* fold.h in Headers */,
+				A97966782328063800299006 /* validate.h in Headers */,
+				A979650E2328063700299006 /* eliminate_dead_constant_pass.h in Headers */,
+				A97966442328063800299006 /* extensions.h in Headers */,
+				A97963DC2328063700299006 /* macro.h in Headers */,
+				A97963B02328063700299006 /* reduction_opportunity_finder.h in Headers */,
+				A97963C82328063700299006 /* cfa.h in Headers */,
+				A97964842328063700299006 /* convert_to_half_pass.h in Headers */,
+				A97964142328063700299006 /* composite.h in Headers */,
+				A979651C2328063700299006 /* pass.h in Headers */,
+				A97963A62328063700299006 /* reducer.h in Headers */,
+				A97966322328063800299006 /* ext_inst.h in Headers */,
+				A97965AC2328063800299006 /* table.h in Headers */,
+				A97965022328063700299006 /* loop_fission.h in Headers */,
+				A97964D22328063700299006 /* mem_pass.h in Headers */,
+				A979650A2328063700299006 /* split_invalid_unreachable_pass.h in Headers */,
+				A97963882328063700299006 /* structured_loop_to_selection_reduction_opportunity_finder.h in Headers */,
+				A979657E2328063700299006 /* vector_dce.h in Headers */,
+				A979655E2328063700299006 /* local_ssa_elim_pass.h in Headers */,
+				A979641C2328063700299006 /* graphics_robust_access_pass.h in Headers */,
+				A97963902328063700299006 /* remove_selection_reduction_opportunity_finder.h in Headers */,
+				A979649C2328063700299006 /* block_merge_util.h in Headers */,
+				A97963F02328063700299006 /* diagnostic.h in Headers */,
+				A97965A22328063800299006 /* dominator_tree.h in Headers */,
+				A97965782328063700299006 /* instruction.h in Headers */,
+				A979639C2328063700299006 /* remove_function_reduction_opportunity_finder.h in Headers */,
+				A979659C2328063800299006 /* inst_bindless_check_pass.h in Headers */,
+				A97964422328063700299006 /* propagator.h in Headers */,
+				A97966422328063800299006 /* latest_version_glsl_std_450_header.h in Headers */,
+				A97963EA2328063700299006 /* name_mapper.h in Headers */,
+				A979663A2328063800299006 /* instruction.h in Headers */,
+				A97964642328063700299006 /* unify_const_pass.h in Headers */,
+				A97964A62328063700299006 /* struct_cfg_analysis.h in Headers */,
+				A97965882328063700299006 /* iterator.h in Headers */,
+				A97964822328063700299006 /* private_to_local_pass.h in Headers */,
+				A979636C2328063700299006 /* conditional_branch_to_simple_conditional_branch_reduction_opportunity.h in Headers */,
+				A97964002328063700299006 /* disassemble.h in Headers */,
+				A979637A2328063700299006 /* simple_conditional_branch_to_branch_opportunity_finder.h in Headers */,
+				A97965202328063700299006 /* eliminate_dead_functions_pass.h in Headers */,
+				A979659A2328063800299006 /* feature_manager.h in Headers */,
+				A97963722328063700299006 /* remove_opname_instruction_reduction_opportunity_finder.h in Headers */,
+				A97964D02328063700299006 /* instrument_pass.h in Headers */,
+				A97965A62328063800299006 /* type_manager.h in Headers */,
+				A979645C2328063700299006 /* loop_unroller.h in Headers */,
+				A97964B62328063700299006 /* local_single_block_elim_pass.h in Headers */,
+				A97966362328063800299006 /* latest_version_spirv_header.h in Headers */,
+				A97964E82328063700299006 /* value_number_table.h in Headers */,
+				A97966822328063800299006 /* validate_scopes.h in Headers */,
+				A97965922328063700299006 /* decompose_initialized_variables_pass.h in Headers */,
+				A97965942328063800299006 /* function.h in Headers */,
+				A97965402328063700299006 /* simplification_pass.h in Headers */,
+				A979642C2328063700299006 /* strip_debug_info_pass.h in Headers */,
+				A97963442328063700299006 /* bitutils.h in Headers */,
+				A979634E2328063700299006 /* spirv_target_env.h in Headers */,
+				A97963D02328063700299006 /* spirv_reducer_options.h in Headers */,
+				A97963362328063700299006 /* make_unique.h in Headers */,
+				A97965082328063700299006 /* log.h in Headers */,
+				A97963802328063700299006 /* structured_loop_to_selection_reduction_opportunity.h in Headers */,
+				A97964FA2328063700299006 /* upgrade_memory_model.h in Headers */,
+				A97964A42328063700299006 /* loop_fusion_pass.h in Headers */,
+				A979636A2328063700299006 /* remove_instruction_reduction_opportunity.h in Headers */,
+				A97963DE2328063700299006 /* spirv_constant.h in Headers */,
+				A97965802328063700299006 /* combine_access_chains.h in Headers */,
+				A97965222328063700299006 /* eliminate_dead_functions_util.h in Headers */,
+				A97964EA2328063700299006 /* flatten_decoration_pass.h in Headers */,
+				A97965302328063700299006 /* fix_storage_class.h in Headers */,
+				A97963242328063700299006 /* assembly_grammar.h in Headers */,
+				A97965362328063700299006 /* passes.h in Headers */,
+				A97964942328063700299006 /* local_redundancy_elimination.h in Headers */,
+				A979669C2328063800299006 /* instruction.h in Headers */,
+				A97965162328063700299006 /* dead_variable_elimination.h in Headers */,
+				A979646E2328063700299006 /* basic_block.h in Headers */,
+				A97964222328063700299006 /* local_single_store_elim_pass.h in Headers */,
+				A97963562328063700299006 /* remove_block_reduction_opportunity.h in Headers */,
+				A97966542328063800299006 /* construct.h in Headers */,
+				A979663E2328063800299006 /* opcode.h in Headers */,
+				A97966A62328063800299006 /* function.h in Headers */,
+				A979642A2328063700299006 /* scalar_analysis.h in Headers */,
+				A979657A2328063700299006 /* aggressive_dead_code_elim_pass.h in Headers */,
+				A979646A2328063700299006 /* fold_spec_constant_op_and_composite_pass.h in Headers */,
+				A97963C22328063700299006 /* reduction_pass.h in Headers */,
+				A97963922328063700299006 /* merge_blocks_reduction_opportunity_finder.h in Headers */,
+				A97964202328063700299006 /* legalize_vector_shuffle_pass.h in Headers */,
+				A97963C42328063700299006 /* latest_version_opencl_std_header.h in Headers */,
+				A97963E62328063700299006 /* text_handler.h in Headers */,
+				A97965422328063700299006 /* remove_duplicates_pass.h in Headers */,
+				A97963A02328063700299006 /* remove_unreferenced_instruction_reduction_opportunity_finder.h in Headers */,
+				A97966AE2328063800299006 /* decoration.h in Headers */,
+				A97964442328063700299006 /* instruction_list.h in Headers */,
+				A97964D82328063700299006 /* eliminate_dead_members_pass.h in Headers */,
+				A979641A2328063700299006 /* tree_iterator.h in Headers */,
+				A979666C2328063800299006 /* validation_state.h in Headers */,
+				A97965462328063700299006 /* reflect.h in Headers */,
+				A97964662328063700299006 /* ir_loader.h in Headers */,
+				A979639E2328063700299006 /* pch_source_reduce.h in Headers */,
+				A97965A02328063800299006 /* set_spec_constant_default_value_pass.h in Headers */,
+				A97965502328063700299006 /* scalar_replacement_pass.h in Headers */,
+				A97963662328063700299006 /* simple_conditional_branch_to_branch_reduction_opportunity.h in Headers */,
+				A97963822328063700299006 /* remove_function_reduction_opportunity.h in Headers */,
+				A979633E2328063700299006 /* timer.h in Headers */,
+				A979634C2328063700299006 /* ilist.h in Headers */,
+				A97964BA2328063700299006 /* inst_buff_addr_check_pass.h in Headers */,
+				A979640A2328063700299006 /* merge_return_pass.h in Headers */,
+				A97963B82328063700299006 /* reduction_util.h in Headers */,
+				A979633A2328063700299006 /* small_vector.h in Headers */,
+				A97966482328063800299006 /* binary.h in Headers */,
+				A97964B02328063700299006 /* decoration_manager.h in Headers */,
+				A97964CC2328063700299006 /* freeze_spec_constant_value_pass.h in Headers */,
+				A97965042328063700299006 /* workaround1209.h in Headers */,
+				A97963462328063700299006 /* hex_float.h in Headers */,
+				A979665E2328063800299006 /* basic_block.h in Headers */,
+				A97965702328063700299006 /* cfg.h in Headers */,
+				A97963BA2328063700299006 /* merge_blocks_reduction_opportunity.h in Headers */,
+				A979632C2328063700299006 /* text.h in Headers */,
+				A979640C2328063700299006 /* inline_opaque_pass.h in Headers */,
+				A97965642328063700299006 /* loop_utils.h in Headers */,
+				A97964BC2328063700299006 /* strength_reduction_pass.h in Headers */,
+				A97963CA2328063700299006 /* pch_source.h in Headers */,
+				A979654E2328063700299006 /* const_folding_rules.h in Headers */,
+				A97963CC2328063700299006 /* enum_string_mapping.h in Headers */,
+				A97963382328063700299006 /* string_utils.h in Headers */,
+				A97963582328063700299006 /* operand_to_dominating_id_reduction_opportunity_finder.h in Headers */,
+				A97963F22328063700299006 /* spirv_endian.h in Headers */,
+				A979640E2328063700299006 /* loop_fusion.h in Headers */,
+				A97963322328063700299006 /* parse_number.h in Headers */,
+				A979658C2328063700299006 /* build_module.h in Headers */,
+				A97963222328063700299006 /* spirv_fuzzer_options.h in Headers */,
+				A979638E2328063700299006 /* remove_relaxed_precision_decoration_opportunity_finder.h in Headers */,
+				A97963342328063700299006 /* ilist_node.h in Headers */,
+				A97963262328063700299006 /* enum_set.h in Headers */,
+				A97964182328063700299006 /* register_pressure.h in Headers */,
+				A97965662328063700299006 /* module.h in Headers */,
+				A979650C2328063700299006 /* copy_prop_arrays.h in Headers */,
+				A97963E22328063700299006 /* spirv_validator_options.h in Headers */,
+				A97965542328063700299006 /* pch_source_opt.h in Headers */,
+				A97963D62328063700299006 /* spirv_definition.h in Headers */,
+				A979648A2328063700299006 /* def_use_manager.h in Headers */,
+				A979652C2328063700299006 /* scalar_analysis_nodes.h in Headers */,
+				A97963842328063700299006 /* change_operand_to_undef_reduction_opportunity.h in Headers */,
+				A97964162328063700299006 /* compact_ids_pass.h in Headers */,
+				A979654A2328063700299006 /* null_pass.h in Headers */,
+				A97963B22328063700299006 /* change_operand_reduction_opportunity.h in Headers */,
+				A97963AA2328063700299006 /* reduction_opportunity.h in Headers */,
+				A979643A2328063700299006 /* local_access_chain_convert_pass.h in Headers */,
+				A97963FC2328063700299006 /* print.h in Headers */,
+				A979635E2328063700299006 /* operand_to_const_reduction_opportunity_finder.h in Headers */,
+				A97964042328063700299006 /* if_conversion.h in Headers */,
+				A979651E2328063700299006 /* folding_rules.h in Headers */,
+				A97965822328063700299006 /* pass_manager.h in Headers */,
+				A979653C2328063700299006 /* strip_reflect_info_pass.h in Headers */,
+				A97965722328063700299006 /* code_sink.h in Headers */,
+				A97964AC2328063700299006 /* wrap_opkill.h in Headers */,
+				A979641E2328063700299006 /* strip_atomic_counter_memory_pass.h in Headers */,
+				A979656C2328063700299006 /* ir_builder.h in Headers */,
+				A979638A2328063700299006 /* remove_selection_reduction_opportunity.h in Headers */,
+				A97963E82328063700299006 /* parsed_operand.h in Headers */,
+				A97963422328063700299006 /* bit_vector.h in Headers */,
+				A97963AC2328063700299006 /* conditional_branch_to_simple_conditional_branch_opportunity_finder.h in Headers */,
+				A97966862328063800299006 /* validate_memory_semantics.h in Headers */,
+				A97964382328063700299006 /* replace_invalid_opc.h in Headers */,
+				A979651A2328063700299006 /* dominator_analysis.h in Headers */,
+				A97964F02328063700299006 /* constants.h in Headers */,
+				A97964862328063700299006 /* relax_float_ops_pass.h in Headers */,
+				A97964242328063700299006 /* reduce_load_size.h in Headers */,
+				A979648E2328063700299006 /* cfg_cleanup_pass.h in Headers */,
+				A97965762328063700299006 /* generate_webgpu_initializers_pass.h in Headers */,
+				A979644E2328063700299006 /* amd_ext_to_khr.h in Headers */,
+				A979658A2328063700299006 /* licm_pass.h in Headers */,
+				A97964522328063700299006 /* ir_context.h in Headers */,
 			);
 			runOnlyForDeploymentPostprocessing = 0;
 		};
@@ -2981,200 +3061,208 @@
 			isa = PBXSourcesBuildPhase;
 			buildActionMask = 2147483647;
 			files = (
-				A9C2F30F22E7833D001763CE /* dead_insert_elim_pass.cpp in Sources */,
-				A9C2F2BD22E7833D001763CE /* pch_source_opt.cpp in Sources */,
-				A9C2F28522E7833D001763CE /* module.cpp in Sources */,
-				A9C2F30522E7833D001763CE /* loop_fusion_pass.cpp in Sources */,
-				A9C2F33122E7833D001763CE /* loop_dependence_helpers.cpp in Sources */,
-				A9C2F44F22E7833D001763CE /* validate_builtins.cpp in Sources */,
-				A9C2F1C322E7833D001763CE /* operand_to_dominating_id_reduction_opportunity_finder.cpp in Sources */,
-				A9C2F18522E7833D001763CE /* simple_conditional_branch_to_branch_reduction_opportunity.cpp in Sources */,
-				A9C2F44122E7833D001763CE /* validate_non_uniform.cpp in Sources */,
-				A9C2F2B322E7833D001763CE /* strip_reflect_info_pass.cpp in Sources */,
-				A9C2F2A922E7833D001763CE /* loop_unroller.cpp in Sources */,
-				A9C2F47122E7833D001763CE /* validate_arithmetics.cpp in Sources */,
-				A9C2F26722E7833D001763CE /* cfg_cleanup_pass.cpp in Sources */,
-				A9C2F44B22E7833D001763CE /* validate_decorations.cpp in Sources */,
-				A9C2F3A322E7833D001763CE /* loop_peeling.cpp in Sources */,
-				A9C2F21B22E7833D001763CE /* register_pressure.cpp in Sources */,
-				A9C2F1A322E7833D001763CE /* remove_instruction_reduction_opportunity.cpp in Sources */,
-				A9C2F27122E7833D001763CE /* loop_dependence.cpp in Sources */,
-				A9C2F36322E7833D001763CE /* dominator_analysis.cpp in Sources */,
-				A9C2F26122E7833D001763CE /* merge_return_pass.cpp in Sources */,
-				A9C2F28F22E7833D001763CE /* generate_webgpu_initializers_pass.cpp in Sources */,
-				A9C2F47522E7833D001763CE /* validate_memory_semantics.cpp in Sources */,
-				A9C2F1AD22E7833D001763CE /* reducer.cpp in Sources */,
-				A9C2F46722E7833D001763CE /* validate_small_type_uses.cpp in Sources */,
-				A9C2F2C722E7833D001763CE /* dead_branch_elim_pass.cpp in Sources */,
-				A9C2F2C522E7833D001763CE /* simplification_pass.cpp in Sources */,
-				A9C2F38F22E7833D001763CE /* loop_fusion.cpp in Sources */,
-				A9C2F29322E7833D001763CE /* inline_pass.cpp in Sources */,
-				A9C2F28722E7833D001763CE /* fold_spec_constant_op_and_composite_pass.cpp in Sources */,
-				A9C2F2F522E7833D001763CE /* strength_reduction_pass.cpp in Sources */,
-				A9C2F2A122E7833D001763CE /* split_invalid_unreachable_pass.cpp in Sources */,
-				A9C2F35B22E7833D001763CE /* inline_opaque_pass.cpp in Sources */,
-				A9C2F14122E7833D001763CE /* text.cpp in Sources */,
-				A9C2F48322E7833D001763CE /* validate_type.cpp in Sources */,
-				A9C2F42F22E7833D001763CE /* disassemble.cpp in Sources */,
-				A9C2F2C922E7833D001763CE /* flatten_decoration_pass.cpp in Sources */,
-				A9C2F21322E7833D001763CE /* ext_inst.cpp in Sources */,
-				A9C2F14922E7833D001763CE /* pch_source.cpp in Sources */,
-				A9C2F2ED22E7833D001763CE /* if_conversion.cpp in Sources */,
-				A9C2F24122E7833D001763CE /* cfg.cpp in Sources */,
-				A9C2F31722E7833D001763CE /* block_merge_pass.cpp in Sources */,
-				A9C2F45D22E7833D001763CE /* construct.cpp in Sources */,
-				A9C2F2DD22E7833D001763CE /* function.cpp in Sources */,
-				A9C2F33722E7833D001763CE /* fold.cpp in Sources */,
-				A9C2F26F22E7833D001763CE /* ssa_rewrite_pass.cpp in Sources */,
-				A9C2F2D722E7833D001763CE /* loop_descriptor.cpp in Sources */,
-				A9C2F18722E7833D001763CE /* remove_function_reduction_opportunity.cpp in Sources */,
-				A9C2F18D22E7833D001763CE /* remove_selection_reduction_opportunity_finder.cpp in Sources */,
-				A9C2F49322E7833D001763CE /* validation_state.cpp in Sources */,
-				A9C2F2AB22E7833D001763CE /* constants.cpp in Sources */,
-				A9C2F35722E7833D001763CE /* value_number_table.cpp in Sources */,
-				A9C2F18F22E7833D001763CE /* conditional_branch_to_simple_conditional_branch_reduction_opportunity.cpp in Sources */,
-				A9C2F39122E7833D001763CE /* upgrade_memory_model.cpp in Sources */,
-				A9C2F1B722E7833D001763CE /* merge_blocks_reduction_opportunity_finder.cpp in Sources */,
-				A9C2F16922E7833D001763CE /* table.cpp in Sources */,
-				A9C2F20F22E7833D001763CE /* opcode.cpp in Sources */,
-				A9C2F29722E7833D001763CE /* ir_loader.cpp in Sources */,
-				A9C2F43922E7833D001763CE /* validate_cfg.cpp in Sources */,
-				A9C2F3A122E7833D001763CE /* compact_ids_pass.cpp in Sources */,
-				A9C2F2F722E7833D001763CE /* block_merge_util.cpp in Sources */,
-				A9C2F24922E7833D001763CE /* freeze_spec_constant_value_pass.cpp in Sources */,
-				A9C2F33322E7833D001763CE /* set_spec_constant_default_value_pass.cpp in Sources */,
-				A9C2F21722E7833D001763CE /* optimizer.cpp in Sources */,
-				A9C2F37F22E7833D001763CE /* local_access_chain_convert_pass.cpp in Sources */,
-				A9C2F32D22E7833D001763CE /* propagator.cpp in Sources */,
-				A9C2F48922E7833D001763CE /* validate_layout.cpp in Sources */,
-				A9C2F47B22E7833D001763CE /* validate_memory.cpp in Sources */,
-				A9C2F48B22E7833D001763CE /* basic_block.cpp in Sources */,
-				A9C2F1E322E7833D001763CE /* spirv_fuzzer_options.cpp in Sources */,
-				A9C2F47D22E7833D001763CE /* validate_image.cpp in Sources */,
-				A9C2F45122E7833D001763CE /* validate_interfaces.cpp in Sources */,
-				A9C2F48722E7833D001763CE /* validate_execution_limitations.cpp in Sources */,
-				A9C2F23922E7833D001763CE /* code_sink.cpp in Sources */,
-				A9C2F1AB22E7833D001763CE /* pch_source_reduce.cpp in Sources */,
-				A9C2F24522E7833D001763CE /* decoration_manager.cpp in Sources */,
-				A9C2F31322E7833D001763CE /* scalar_analysis.cpp in Sources */,
-				A9C2F1BD22E7833D001763CE /* change_operand_to_undef_reduction_opportunity.cpp in Sources */,
-				A9C2F33B22E7833D001763CE /* scalar_replacement_pass.cpp in Sources */,
-				A9C2F17F22E7833D001763CE /* remove_function_reduction_opportunity_finder.cpp in Sources */,
-				A9C2F13922E7833D001763CE /* spirv_target_env.cpp in Sources */,
-				A9C2F16D22E7833D001763CE /* remove_selection_reduction_opportunity.cpp in Sources */,
-				A9C2F1B922E7833D001763CE /* reduction_opportunity.cpp in Sources */,
-				A9C2F26D22E7833D001763CE /* strip_debug_info_pass.cpp in Sources */,
-				A9C2F2FB22E7833D001763CE /* copy_prop_arrays.cpp in Sources */,
-				A9C2F47322E7833D001763CE /* validate_mode_setting.cpp in Sources */,
-				A9C2F46D22E7833D001763CE /* validate_id.cpp in Sources */,
-				A9C2F39722E7833D001763CE /* scalar_analysis_simplification.cpp in Sources */,
-				A9C2F45322E7833D001763CE /* validate.cpp in Sources */,
-				A9C2F43522E7833D001763CE /* validate_annotation.cpp in Sources */,
-				A9C2F2A522E7833D001763CE /* vector_dce.cpp in Sources */,
-				A9C2F20122E7833D001763CE /* spirv_reducer_options.cpp in Sources */,
-				A9C2F20D22E7833D001763CE /* software_version.cpp in Sources */,
-				A9C2F15922E7833D001763CE /* string_utils.cpp in Sources */,
-				A9C2F25F22E7833D001763CE /* dominator_tree.cpp in Sources */,
-				A9C2F43F22E7833D001763CE /* validate_barriers.cpp in Sources */,
-				A9C2F37722E7833D001763CE /* struct_cfg_analysis.cpp in Sources */,
-				A9C2F24722E7833D001763CE /* local_single_block_elim_pass.cpp in Sources */,
-				A9C2F16122E7833D001763CE /* parse_number.cpp in Sources */,
-				A9C2F1AF22E7833D001763CE /* operand_to_undef_reduction_opportunity_finder.cpp in Sources */,
-				A9C2F20922E7833D001763CE /* name_mapper.cpp in Sources */,
-				A9C2F2DF22E7833D001763CE /* instruction_list.cpp in Sources */,
-				A9C2F44D22E7833D001763CE /* validate_debug.cpp in Sources */,
-				A9C2F35122E7833D001763CE /* reduce_load_size.cpp in Sources */,
-				A9C2F17922E7833D001763CE /* reduction_util.cpp in Sources */,
-				A9C2F41D22E7833D001763CE /* diagnostic.cpp in Sources */,
-				A9C2F2C122E7833D001763CE /* aggressive_dead_code_elim_pass.cpp in Sources */,
-				A9C2F1D522E7833D001763CE /* remove_block_reduction_opportunity.cpp in Sources */,
-				A9C2F28122E7833D001763CE /* dead_variable_elimination.cpp in Sources */,
-				A9C2F23B22E7833D001763CE /* types.cpp in Sources */,
-				A9C2F27B22E7833D001763CE /* mem_pass.cpp in Sources */,
-				A9C2F14322E7833D001763CE /* assembly_grammar.cpp in Sources */,
-				A9C2F47922E7833D001763CE /* validate_derivatives.cpp in Sources */,
-				A9C2F21D22E7833D001763CE /* loop_utils.cpp in Sources */,
-				A9C2F44922E7833D001763CE /* validate_instruction.cpp in Sources */,
-				A9C2F25D22E7833D001763CE /* loop_fission.cpp in Sources */,
-				A9C2F44322E7833D001763CE /* validate_scopes.cpp in Sources */,
-				A9C2F49122E7833D001763CE /* validate_composites.cpp in Sources */,
-				A9C2F45F22E7833D001763CE /* function.cpp in Sources */,
-				A9C2F1D122E7833D001763CE /* conditional_branch_to_simple_conditional_branch_opportunity_finder.cpp in Sources */,
-				A9C2F19522E7833D001763CE /* change_operand_reduction_opportunity.cpp in Sources */,
-				A9C2F48122E7833D001763CE /* instruction.cpp in Sources */,
-				A9C2F35D22E7833D001763CE /* replace_invalid_opc.cpp in Sources */,
-				A9C2F22522E7833D001763CE /* combine_access_chains.cpp in Sources */,
-				A9C2F18B22E7833D001763CE /* simple_conditional_branch_to_branch_opportunity_finder.cpp in Sources */,
-				A9C2F20322E7833D001763CE /* parsed_operand.cpp in Sources */,
-				A9C2F29D22E7833D001763CE /* eliminate_dead_functions_pass.cpp in Sources */,
-				A9C2F2FD22E7833D001763CE /* pass_manager.cpp in Sources */,
-				A9C2F26922E7833D001763CE /* const_folding_rules.cpp in Sources */,
-				A9C2F42922E7833D001763CE /* operand.cpp in Sources */,
-				A9C2F19D22E7833D001763CE /* remove_unreferenced_instruction_reduction_opportunity_finder.cpp in Sources */,
-				A9C2F36522E7833D001763CE /* decompose_initialized_variables_pass.cpp in Sources */,
-				A9C2F34522E7833D001763CE /* workaround1209.cpp in Sources */,
-				A9C2F16322E7833D001763CE /* bit_vector.cpp in Sources */,
-				A9C2F20B22E7833D001763CE /* linker.cpp in Sources */,
-				A9C2F14722E7833D001763CE /* extensions.cpp in Sources */,
-				A9C2F46922E7833D001763CE /* validate_datarules.cpp in Sources */,
-				A9C2F43722E7833D001763CE /* validate_misc.cpp in Sources */,
-				A9C2F2FF22E7833D001763CE /* inline_exhaustive_pass.cpp in Sources */,
-				A9C2F26522E7833D001763CE /* eliminate_dead_constant_pass.cpp in Sources */,
-				A9C2F17B22E7833D001763CE /* structured_loop_to_selection_reduction_opportunity_finder.cpp in Sources */,
-				A9C2F19322E7833D001763CE /* merge_blocks_reduction_opportunity.cpp in Sources */,
-				A9C2F2E322E7833D001763CE /* process_lines_pass.cpp in Sources */,
-				A9C2F24F22E7833D001763CE /* inst_bindless_check_pass.cpp in Sources */,
-				A9C2F1E922E7833D001763CE /* print.cpp in Sources */,
-				A9C2F1E722E7833D001763CE /* spirv_validator_options.cpp in Sources */,
-				A9C2F44522E7833D001763CE /* validate_atomics.cpp in Sources */,
-				A9C2F17322E7833D001763CE /* reduction_pass.cpp in Sources */,
-				A9C2F46522E7833D001763CE /* validate_conversion.cpp in Sources */,
-				A9C2F22722E7833D001763CE /* build_module.cpp in Sources */,
-				A9C2F39D22E7833D001763CE /* legalize_vector_shuffle_pass.cpp in Sources */,
-				A9C2F25122E7833D001763CE /* local_redundancy_elimination.cpp in Sources */,
-				A9C2F15522E7833D001763CE /* timer.cpp in Sources */,
-				A9C2F2F322E7833D001763CE /* eliminate_dead_members_pass.cpp in Sources */,
-				A9C2F45922E7833D001763CE /* validate_bitwise.cpp in Sources */,
-				A9C2F2D922E7833D001763CE /* local_ssa_elim_pass.cpp in Sources */,
-				A9C2F2E122E7833D001763CE /* composite.cpp in Sources */,
-				A9C2F42122E7833D001763CE /* libspirv.cpp in Sources */,
-				A9C2F1DB22E7833D001763CE /* spirv_optimizer_options.cpp in Sources */,
-				A9C2F25922E7833D001763CE /* feature_manager.cpp in Sources */,
-				A9C2F1D322E7833D001763CE /* structured_loop_to_selection_reduction_opportunity.cpp in Sources */,
-				A9C2F28D22E7833D001763CE /* type_manager.cpp in Sources */,
-				A9C2F2B722E7833D001763CE /* ccp_pass.cpp in Sources */,
-				A9C2F46322E7833D001763CE /* validate_adjacency.cpp in Sources */,
-				A9C2F1A922E7833D001763CE /* remove_opname_instruction_reduction_opportunity_finder.cpp in Sources */,
-				A9C2F25322E7833D001763CE /* instrument_pass.cpp in Sources */,
-				A9C2F43B22E7833D001763CE /* validate_capability.cpp in Sources */,
-				A9C2F47F22E7833D001763CE /* validate_literals.cpp in Sources */,
-				A9C2F34122E7833D001763CE /* redundancy_elimination.cpp in Sources */,
-				A9C2F45722E7833D001763CE /* validate_constants.cpp in Sources */,
-				A9C2F34D22E7833D001763CE /* instruction.cpp in Sources */,
-				A9C2F28922E7833D001763CE /* loop_unswitch_pass.cpp in Sources */,
-				A9C2F1F522E7833D001763CE /* binary.cpp in Sources */,
-				A9C2F29B22E7833D001763CE /* licm_pass.cpp in Sources */,
-				A9C2F17522E7833D001763CE /* operand_to_const_reduction_opportunity_finder.cpp in Sources */,
-				A9C2F27F22E7833D001763CE /* remove_duplicates_pass.cpp in Sources */,
-				A9C2F48D22E7833D001763CE /* validate_function.cpp in Sources */,
-				A9C2F24322E7833D001763CE /* strip_atomic_counter_memory_pass.cpp in Sources */,
-				A9C2F49522E7833D001763CE /* validate_primitives.cpp in Sources */,
-				A9C2F43322E7833D001763CE /* text_handler.cpp in Sources */,
-				A9C2F25B22E7833D001763CE /* pass.cpp in Sources */,
-				A9C2F32522E7833D001763CE /* local_single_store_elim_pass.cpp in Sources */,
-				A9C2F45B22E7833D001763CE /* validate_extensions.cpp in Sources */,
-				A9C2F47722E7833D001763CE /* validate_logicals.cpp in Sources */,
-				A9C2F35522E7833D001763CE /* fix_storage_class.cpp in Sources */,
-				A9C2F32922E7833D001763CE /* private_to_local_pass.cpp in Sources */,
-				A9C2F28B22E7833D001763CE /* unify_const_pass.cpp in Sources */,
-				A9C2F38122E7833D001763CE /* basic_block.cpp in Sources */,
-				A9C2F1CB22E7833D001763CE /* remove_block_reduction_opportunity_finder.cpp in Sources */,
-				A9C2F2C322E7833D001763CE /* eliminate_dead_functions_util.cpp in Sources */,
-				A9C2F1F922E7833D001763CE /* enum_string_mapping.cpp in Sources */,
-				A9C2F1EF22E7833D001763CE /* spirv_endian.cpp in Sources */,
-				A9C2F2D122E7833D001763CE /* ir_context.cpp in Sources */,
-				A9C2F2B122E7833D001763CE /* def_use_manager.cpp in Sources */,
-				A9C2F2CD22E7833D001763CE /* folding_rules.cpp in Sources */,
+				A97963EB2328063700299006 /* spirv_reducer_options.cpp in Sources */,
+				A97964492328063700299006 /* loop_fission.cpp in Sources */,
+				A97963DF2328063700299006 /* binary.cpp in Sources */,
+				A97963272328063700299006 /* text.cpp in Sources */,
+				A979657B2328063700299006 /* struct_cfg_analysis.cpp in Sources */,
+				A97965052328063700299006 /* loop_fusion_pass.cpp in Sources */,
+				A97964252328063700299006 /* code_sink.cpp in Sources */,
+				A979665B2328063800299006 /* validate_atomics.cpp in Sources */,
+				A97964F52328063700299006 /* desc_sroa.cpp in Sources */,
+				A97964FD2328063700299006 /* pass_manager.cpp in Sources */,
+				A97964D92328063700299006 /* function.cpp in Sources */,
+				A97963AD2328063700299006 /* operand_to_dominating_id_reduction_opportunity_finder.cpp in Sources */,
+				A97963612328063700299006 /* remove_relaxed_precision_decoration_opportunity_finder.cpp in Sources */,
+				A97963F92328063700299006 /* opcode.cpp in Sources */,
+				A97963672328063700299006 /* remove_function_reduction_opportunity_finder.cpp in Sources */,
+				A97964772328063700299006 /* fold_spec_constant_op_and_composite_pass.cpp in Sources */,
+				A97964712328063700299006 /* dead_variable_elimination.cpp in Sources */,
+				A97965832328063700299006 /* local_access_chain_convert_pass.cpp in Sources */,
+				A97966952328063800299006 /* validate_literals.cpp in Sources */,
+				A97964472328063700299006 /* pass.cpp in Sources */,
+				A97966A92328063800299006 /* validation_state.cpp in Sources */,
+				A979667D2328063800299006 /* validate_small_type_uses.cpp in Sources */,
+				A979669F2328063800299006 /* validate_layout.cpp in Sources */,
+				A97965592328063700299006 /* fix_storage_class.cpp in Sources */,
+				A97966972328063800299006 /* instruction.cpp in Sources */,
+				A97963992328063700299006 /* operand_to_undef_reduction_opportunity_finder.cpp in Sources */,
+				A97966A72328063800299006 /* validate_composites.cpp in Sources */,
+				A979644F2328063700299006 /* merge_return_pass.cpp in Sources */,
+				A97963632328063700299006 /* structured_loop_to_selection_reduction_opportunity_finder.cpp in Sources */,
+				A97964352328063700299006 /* freeze_spec_constant_value_pass.cpp in Sources */,
+				A979638B2328063700299006 /* remove_instruction_reduction_opportunity.cpp in Sources */,
+				A97964B12328063700299006 /* ccp_pass.cpp in Sources */,
+				A979632F2328063700299006 /* pch_source.cpp in Sources */,
+				A979642D2328063700299006 /* cfg.cpp in Sources */,
+				A97966A12328063800299006 /* basic_block.cpp in Sources */,
+				A97963A12328063700299006 /* merge_blocks_reduction_opportunity_finder.cpp in Sources */,
+				A97966712328063800299006 /* validate_extensions.cpp in Sources */,
+				A979637B2328063700299006 /* merge_blocks_reduction_opportunity.cpp in Sources */,
+				A979664D2328063800299006 /* validate_misc.cpp in Sources */,
+				A97964C32328063700299006 /* dead_branch_elim_pass.cpp in Sources */,
+				A97965512328063700299006 /* instruction.cpp in Sources */,
+				A979634F2328063700299006 /* table.cpp in Sources */,
+				A979667F2328063800299006 /* validate_datarules.cpp in Sources */,
+				A97964572328063700299006 /* wrap_opkill.cpp in Sources */,
+				A97965692328063700299006 /* decompose_initialized_variables_pass.cpp in Sources */,
+				A97965952328063800299006 /* loop_fusion.cpp in Sources */,
+				A97964D32328063700299006 /* loop_descriptor.cpp in Sources */,
+				A97965A32328063800299006 /* legalize_vector_shuffle_pass.cpp in Sources */,
+				A97963932328063700299006 /* remove_opname_instruction_reduction_opportunity_finder.cpp in Sources */,
+				A979654B2328063700299006 /* relax_float_ops_pass.cpp in Sources */,
+				A97964E12328063700299006 /* process_lines_pass.cpp in Sources */,
+				A97964112328063700299006 /* build_module.cpp in Sources */,
+				A97965392328063700299006 /* amd_ext_to_khr.cpp in Sources */,
+				A979669D2328063800299006 /* validate_execution_limitations.cpp in Sources */,
+				A97965292328063700299006 /* private_to_local_pass.cpp in Sources */,
+				A97966692328063800299006 /* validate.cpp in Sources */,
+				A97966512328063800299006 /* validate_capability.cpp in Sources */,
+				A97964532328063700299006 /* eliminate_dead_constant_pass.cpp in Sources */,
+				A979647B2328063700299006 /* unify_const_pass.cpp in Sources */,
+				A97963972328063700299006 /* reducer.cpp in Sources */,
+				A97964012328063700299006 /* optimizer.cpp in Sources */,
+				A97963F72328063700299006 /* software_version.cpp in Sources */,
+				A97965612328063700299006 /* replace_invalid_opc.cpp in Sources */,
+				A979643F2328063700299006 /* instrument_pass.cpp in Sources */,
+				A97965852328063700299006 /* basic_block.cpp in Sources */,
+				A97964992328063700299006 /* vector_dce.cpp in Sources */,
+				A97963CD2328063700299006 /* spirv_fuzzer_options.cpp in Sources */,
+				A97964AD2328063700299006 /* strip_reflect_info_pass.cpp in Sources */,
+				A979658F2328063700299006 /* graphics_robust_access_pass.cpp in Sources */,
+				A97964952328063700299006 /* split_invalid_unreachable_pass.cpp in Sources */,
+				A979637D2328063700299006 /* change_operand_reduction_opportunity.cpp in Sources */,
+				A979643B2328063700299006 /* inst_bindless_check_pass.cpp in Sources */,
+				A979668D2328063800299006 /* validate_logicals.cpp in Sources */,
+				A979668B2328063800299006 /* validate_memory_semantics.cpp in Sources */,
+				A97965672328063700299006 /* dominator_analysis.cpp in Sources */,
+				A97963FD2328063700299006 /* ext_inst.cpp in Sources */,
+				A97966992328063800299006 /* validate_type.cpp in Sources */,
+				A97964912328063700299006 /* eliminate_dead_functions_pass.cpp in Sources */,
+				A979631F2328063700299006 /* spirv_target_env.cpp in Sources */,
+				A979645F2328063700299006 /* ssa_rewrite_pass.cpp in Sources */,
+				A97964552328063700299006 /* cfg_cleanup_pass.cpp in Sources */,
+				A97963532328063700299006 /* remove_selection_reduction_opportunity.cpp in Sources */,
+				A97964752328063700299006 /* module.cpp in Sources */,
+				A97966652328063800299006 /* validate_builtins.cpp in Sources */,
+				A979633F2328063700299006 /* string_utils.cpp in Sources */,
+				A97966552328063800299006 /* validate_barriers.cpp in Sources */,
+				A979646F2328063700299006 /* remove_duplicates_pass.cpp in Sources */,
+				A979649D2328063700299006 /* loop_unroller.cpp in Sources */,
+				A979655F2328063700299006 /* inline_opaque_pass.cpp in Sources */,
+				A97964DD2328063700299006 /* composite.cpp in Sources */,
+				A97964332328063700299006 /* local_single_block_elim_pass.cpp in Sources */,
+				A97966372328063800299006 /* libspirv.cpp in Sources */,
+				A97963472328063700299006 /* parse_number.cpp in Sources */,
+				A97966892328063800299006 /* validate_mode_setting.cpp in Sources */,
+				A97966752328063800299006 /* function.cpp in Sources */,
+				A97964FB2328063700299006 /* copy_prop_arrays.cpp in Sources */,
+				A97963BB2328063700299006 /* conditional_branch_to_simple_conditional_branch_opportunity_finder.cpp in Sources */,
+				A97966A32328063800299006 /* validate_function.cpp in Sources */,
+				A97964592328063700299006 /* const_folding_rules.cpp in Sources */,
+				A979652D2328063700299006 /* propagator.cpp in Sources */,
+				A97963C52328063700299006 /* spirv_optimizer_options.cpp in Sources */,
+				A97963B52328063700299006 /* remove_block_reduction_opportunity_finder.cpp in Sources */,
+				A979635F2328063700299006 /* reduction_util.cpp in Sources */,
+				A97966572328063800299006 /* validate_non_uniform.cpp in Sources */,
+				A979648B2328063700299006 /* ir_loader.cpp in Sources */,
+				A97965A72328063800299006 /* compact_ids_pass.cpp in Sources */,
+				A97964C92328063700299006 /* folding_rules.cpp in Sources */,
+				A97964BF2328063700299006 /* eliminate_dead_functions_util.cpp in Sources */,
+				A97964072328063700299006 /* loop_utils.cpp in Sources */,
+				A97964312328063700299006 /* decoration_manager.cpp in Sources */,
+				A979666D2328063800299006 /* validate_constants.cpp in Sources */,
+				A97965172328063700299006 /* block_merge_pass.cpp in Sources */,
+				A97965132328063700299006 /* scalar_analysis.cpp in Sources */,
+				A97966492328063800299006 /* text_handler.cpp in Sources */,
+				A979664F2328063800299006 /* validate_cfg.cpp in Sources */,
+				A97963D12328063700299006 /* spirv_validator_options.cpp in Sources */,
+				A97965472328063700299006 /* workaround1209.cpp in Sources */,
+				A97963732328063700299006 /* simple_conditional_branch_to_branch_opportunity_finder.cpp in Sources */,
+				A97963A72328063700299006 /* change_operand_to_undef_reduction_opportunity.cpp in Sources */,
+				A97965252328063700299006 /* local_single_store_elim_pass.cpp in Sources */,
+				A97966592328063800299006 /* validate_scopes.cpp in Sources */,
+				A97964DB2328063700299006 /* instruction_list.cpp in Sources */,
+				A97964A72328063700299006 /* inst_buff_addr_check_pass.cpp in Sources */,
+				A97964A12328063700299006 /* constants.cpp in Sources */,
+				A97966332328063800299006 /* diagnostic.cpp in Sources */,
+				A97964F32328063700299006 /* strength_reduction_pass.cpp in Sources */,
+				A97964CD2328063700299006 /* ir_context.cpp in Sources */,
+				A97963A32328063700299006 /* reduction_opportunity.cpp in Sources */,
+				A979642F2328063700299006 /* strip_atomic_counter_memory_pass.cpp in Sources */,
+				A97963952328063700299006 /* pch_source_reduce.cpp in Sources */,
+				A97964872328063700299006 /* inline_pass.cpp in Sources */,
+				A97963292328063700299006 /* assembly_grammar.cpp in Sources */,
+				A97966872328063800299006 /* validate_arithmetics.cpp in Sources */,
+				A97964B72328063700299006 /* pch_source_opt.cpp in Sources */,
+				A97963BD2328063700299006 /* structured_loop_to_selection_reduction_opportunity.cpp in Sources */,
+				A97964DF2328063700299006 /* convert_to_half_pass.cpp in Sources */,
+				A979655B2328063700299006 /* value_number_table.cpp in Sources */,
+				A97965972328063800299006 /* upgrade_memory_model.cpp in Sources */,
+				A979650F2328063700299006 /* dead_insert_elim_pass.cpp in Sources */,
+				A97966732328063800299006 /* construct.cpp in Sources */,
+				A97963492328063700299006 /* bit_vector.cpp in Sources */,
+				A979668F2328063800299006 /* validate_derivatives.cpp in Sources */,
+				A97964612328063700299006 /* loop_dependence.cpp in Sources */,
+				A97964BD2328063700299006 /* aggressive_dead_code_elim_pass.cpp in Sources */,
+				A97964A92328063700299006 /* def_use_manager.cpp in Sources */,
+				A97966612328063800299006 /* validate_decorations.cpp in Sources */,
+				A97965432328063700299006 /* redundancy_elimination.cpp in Sources */,
+				A979636D2328063700299006 /* simple_conditional_branch_to_branch_reduction_opportunity.cpp in Sources */,
+				A97964792328063700299006 /* loop_unswitch_pass.cpp in Sources */,
+				A97963852328063700299006 /* remove_unreferenced_instruction_reduction_opportunity_finder.cpp in Sources */,
+				A97963ED2328063700299006 /* parsed_operand.cpp in Sources */,
+				A979653D2328063700299006 /* scalar_replacement_pass.cpp in Sources */,
+				A979632D2328063700299006 /* extensions.cpp in Sources */,
+				A97966912328063800299006 /* validate_memory.cpp in Sources */,
+				A97963F32328063700299006 /* name_mapper.cpp in Sources */,
+				A97963D92328063700299006 /* spirv_endian.cpp in Sources */,
+				A97966632328063800299006 /* validate_debug.cpp in Sources */,
+				A979643D2328063700299006 /* local_redundancy_elimination.cpp in Sources */,
+				A97964452328063700299006 /* feature_manager.cpp in Sources */,
+				A979647F2328063700299006 /* generate_webgpu_initializers_pass.cpp in Sources */,
+				A97963772328063700299006 /* conditional_branch_to_simple_conditional_branch_reduction_opportunity.cpp in Sources */,
+				A97965332328063700299006 /* set_spec_constant_default_value_pass.cpp in Sources */,
+				A979666F2328063800299006 /* validate_bitwise.cpp in Sources */,
+				A979645D2328063700299006 /* strip_debug_info_pass.cpp in Sources */,
+				A97965372328063700299006 /* fold.cpp in Sources */,
+				A979646B2328063700299006 /* mem_pass.cpp in Sources */,
+				A97964272328063700299006 /* types.cpp in Sources */,
+				A97963E32328063700299006 /* enum_string_mapping.cpp in Sources */,
+				A97965552328063700299006 /* reduce_load_size.cpp in Sources */,
+				A97963D32328063700299006 /* print.cpp in Sources */,
+				A97965A92328063800299006 /* loop_peeling.cpp in Sources */,
+				A97963592328063700299006 /* reduction_pass.cpp in Sources */,
+				A97964C52328063700299006 /* flatten_decoration_pass.cpp in Sources */,
+				A97966792328063800299006 /* validate_adjacency.cpp in Sources */,
+				A979663F2328063800299006 /* operand.cpp in Sources */,
+				A97964EB2328063700299006 /* if_conversion.cpp in Sources */,
+				A979664B2328063800299006 /* validate_annotation.cpp in Sources */,
+				A97966832328063800299006 /* validate_id.cpp in Sources */,
+				A979644B2328063700299006 /* dominator_tree.cpp in Sources */,
+				A979648F2328063700299006 /* licm_pass.cpp in Sources */,
+				A97966932328063800299006 /* validate_image.cpp in Sources */,
+				A97964052328063700299006 /* register_pressure.cpp in Sources */,
+				A97966672328063800299006 /* validate_interfaces.cpp in Sources */,
+				A97964F12328063700299006 /* eliminate_dead_members_pass.cpp in Sources */,
+				A97963F52328063700299006 /* linker.cpp in Sources */,
+				A97963BF2328063700299006 /* remove_block_reduction_opportunity.cpp in Sources */,
+				A97964FF2328063700299006 /* inline_exhaustive_pass.cpp in Sources */,
+				A97964C12328063700299006 /* simplification_pass.cpp in Sources */,
+				A979659D2328063800299006 /* scalar_analysis_simplification.cpp in Sources */,
+				A97966AB2328063800299006 /* validate_primitives.cpp in Sources */,
+				A97966452328063800299006 /* disassemble.cpp in Sources */,
+				A97965312328063700299006 /* loop_dependence_helpers.cpp in Sources */,
+				A979647D2328063700299006 /* type_manager.cpp in Sources */,
+				A979667B2328063800299006 /* validate_conversion.cpp in Sources */,
+				A979633B2328063700299006 /* timer.cpp in Sources */,
+				A97963752328063700299006 /* remove_selection_reduction_opportunity_finder.cpp in Sources */,
+				A979640F2328063700299006 /* combine_access_chains.cpp in Sources */,
+				A979665F2328063800299006 /* validate_instruction.cpp in Sources */,
+				A97964F72328063700299006 /* block_merge_util.cpp in Sources */,
+				A979636F2328063700299006 /* remove_function_reduction_opportunity.cpp in Sources */,
+				A979635B2328063700299006 /* operand_to_const_reduction_opportunity_finder.cpp in Sources */,
+				A97964D52328063700299006 /* local_ssa_elim_pass.cpp in Sources */,
 			);
 			runOnlyForDeploymentPostprocessing = 0;
 		};
@@ -3182,200 +3270,208 @@
 			isa = PBXSourcesBuildPhase;
 			buildActionMask = 2147483647;
 			files = (
-				A9C2F31022E7833D001763CE /* dead_insert_elim_pass.cpp in Sources */,
-				A9C2F2BE22E7833D001763CE /* pch_source_opt.cpp in Sources */,
-				A9C2F28622E7833D001763CE /* module.cpp in Sources */,
-				A9C2F30622E7833D001763CE /* loop_fusion_pass.cpp in Sources */,
-				A9C2F33222E7833D001763CE /* loop_dependence_helpers.cpp in Sources */,
-				A9C2F45022E7833D001763CE /* validate_builtins.cpp in Sources */,
-				A9C2F1C422E7833D001763CE /* operand_to_dominating_id_reduction_opportunity_finder.cpp in Sources */,
-				A9C2F18622E7833D001763CE /* simple_conditional_branch_to_branch_reduction_opportunity.cpp in Sources */,
-				A9C2F44222E7833D001763CE /* validate_non_uniform.cpp in Sources */,
-				A9C2F2B422E7833D001763CE /* strip_reflect_info_pass.cpp in Sources */,
-				A9C2F2AA22E7833D001763CE /* loop_unroller.cpp in Sources */,
-				A9C2F47222E7833D001763CE /* validate_arithmetics.cpp in Sources */,
-				A9C2F26822E7833D001763CE /* cfg_cleanup_pass.cpp in Sources */,
-				A9C2F44C22E7833D001763CE /* validate_decorations.cpp in Sources */,
-				A9C2F3A422E7833D001763CE /* loop_peeling.cpp in Sources */,
-				A9C2F21C22E7833D001763CE /* register_pressure.cpp in Sources */,
-				A9C2F1A422E7833D001763CE /* remove_instruction_reduction_opportunity.cpp in Sources */,
-				A9C2F27222E7833D001763CE /* loop_dependence.cpp in Sources */,
-				A9C2F36422E7833D001763CE /* dominator_analysis.cpp in Sources */,
-				A9C2F26222E7833D001763CE /* merge_return_pass.cpp in Sources */,
-				A9C2F29022E7833D001763CE /* generate_webgpu_initializers_pass.cpp in Sources */,
-				A9C2F47622E7833D001763CE /* validate_memory_semantics.cpp in Sources */,
-				A9C2F1AE22E7833D001763CE /* reducer.cpp in Sources */,
-				A9C2F46822E7833D001763CE /* validate_small_type_uses.cpp in Sources */,
-				A9C2F2C822E7833D001763CE /* dead_branch_elim_pass.cpp in Sources */,
-				A9C2F2C622E7833D001763CE /* simplification_pass.cpp in Sources */,
-				A9C2F39022E7833D001763CE /* loop_fusion.cpp in Sources */,
-				A9C2F29422E7833D001763CE /* inline_pass.cpp in Sources */,
-				A9C2F28822E7833D001763CE /* fold_spec_constant_op_and_composite_pass.cpp in Sources */,
-				A9C2F2F622E7833D001763CE /* strength_reduction_pass.cpp in Sources */,
-				A9C2F2A222E7833D001763CE /* split_invalid_unreachable_pass.cpp in Sources */,
-				A9C2F35C22E7833D001763CE /* inline_opaque_pass.cpp in Sources */,
-				A9C2F14222E7833D001763CE /* text.cpp in Sources */,
-				A9C2F48422E7833D001763CE /* validate_type.cpp in Sources */,
-				A9C2F43022E7833D001763CE /* disassemble.cpp in Sources */,
-				A9C2F2CA22E7833D001763CE /* flatten_decoration_pass.cpp in Sources */,
-				A9C2F21422E7833D001763CE /* ext_inst.cpp in Sources */,
-				A9C2F14A22E7833D001763CE /* pch_source.cpp in Sources */,
-				A9C2F2EE22E7833D001763CE /* if_conversion.cpp in Sources */,
-				A9C2F24222E7833D001763CE /* cfg.cpp in Sources */,
-				A9C2F31822E7833D001763CE /* block_merge_pass.cpp in Sources */,
-				A9C2F45E22E7833D001763CE /* construct.cpp in Sources */,
-				A9C2F2DE22E7833D001763CE /* function.cpp in Sources */,
-				A9C2F33822E7833D001763CE /* fold.cpp in Sources */,
-				A9C2F27022E7833D001763CE /* ssa_rewrite_pass.cpp in Sources */,
-				A9C2F2D822E7833D001763CE /* loop_descriptor.cpp in Sources */,
-				A9C2F18822E7833D001763CE /* remove_function_reduction_opportunity.cpp in Sources */,
-				A9C2F18E22E7833D001763CE /* remove_selection_reduction_opportunity_finder.cpp in Sources */,
-				A9C2F49422E7833D001763CE /* validation_state.cpp in Sources */,
-				A9C2F2AC22E7833D001763CE /* constants.cpp in Sources */,
-				A9C2F35822E7833D001763CE /* value_number_table.cpp in Sources */,
-				A9C2F19022E7833D001763CE /* conditional_branch_to_simple_conditional_branch_reduction_opportunity.cpp in Sources */,
-				A9C2F39222E7833D001763CE /* upgrade_memory_model.cpp in Sources */,
-				A9C2F1B822E7833D001763CE /* merge_blocks_reduction_opportunity_finder.cpp in Sources */,
-				A9C2F16A22E7833D001763CE /* table.cpp in Sources */,
-				A9C2F21022E7833D001763CE /* opcode.cpp in Sources */,
-				A9C2F29822E7833D001763CE /* ir_loader.cpp in Sources */,
-				A9C2F43A22E7833D001763CE /* validate_cfg.cpp in Sources */,
-				A9C2F3A222E7833D001763CE /* compact_ids_pass.cpp in Sources */,
-				A9C2F2F822E7833D001763CE /* block_merge_util.cpp in Sources */,
-				A9C2F24A22E7833D001763CE /* freeze_spec_constant_value_pass.cpp in Sources */,
-				A9C2F33422E7833D001763CE /* set_spec_constant_default_value_pass.cpp in Sources */,
-				A9C2F21822E7833D001763CE /* optimizer.cpp in Sources */,
-				A9C2F38022E7833D001763CE /* local_access_chain_convert_pass.cpp in Sources */,
-				A9C2F32E22E7833D001763CE /* propagator.cpp in Sources */,
-				A9C2F48A22E7833D001763CE /* validate_layout.cpp in Sources */,
-				A9C2F47C22E7833D001763CE /* validate_memory.cpp in Sources */,
-				A9C2F48C22E7833D001763CE /* basic_block.cpp in Sources */,
-				A9C2F1E422E7833D001763CE /* spirv_fuzzer_options.cpp in Sources */,
-				A9C2F47E22E7833D001763CE /* validate_image.cpp in Sources */,
-				A9C2F45222E7833D001763CE /* validate_interfaces.cpp in Sources */,
-				A9C2F48822E7833D001763CE /* validate_execution_limitations.cpp in Sources */,
-				A9C2F23A22E7833D001763CE /* code_sink.cpp in Sources */,
-				A9C2F1AC22E7833D001763CE /* pch_source_reduce.cpp in Sources */,
-				A9C2F24622E7833D001763CE /* decoration_manager.cpp in Sources */,
-				A9C2F31422E7833D001763CE /* scalar_analysis.cpp in Sources */,
-				A9C2F1BE22E7833D001763CE /* change_operand_to_undef_reduction_opportunity.cpp in Sources */,
-				A9C2F33C22E7833D001763CE /* scalar_replacement_pass.cpp in Sources */,
-				A9C2F18022E7833D001763CE /* remove_function_reduction_opportunity_finder.cpp in Sources */,
-				A9C2F13A22E7833D001763CE /* spirv_target_env.cpp in Sources */,
-				A9C2F16E22E7833D001763CE /* remove_selection_reduction_opportunity.cpp in Sources */,
-				A9C2F1BA22E7833D001763CE /* reduction_opportunity.cpp in Sources */,
-				A9C2F26E22E7833D001763CE /* strip_debug_info_pass.cpp in Sources */,
-				A9C2F2FC22E7833D001763CE /* copy_prop_arrays.cpp in Sources */,
-				A9C2F47422E7833D001763CE /* validate_mode_setting.cpp in Sources */,
-				A9C2F46E22E7833D001763CE /* validate_id.cpp in Sources */,
-				A9C2F39822E7833D001763CE /* scalar_analysis_simplification.cpp in Sources */,
-				A9C2F45422E7833D001763CE /* validate.cpp in Sources */,
-				A9C2F43622E7833D001763CE /* validate_annotation.cpp in Sources */,
-				A9C2F2A622E7833D001763CE /* vector_dce.cpp in Sources */,
-				A9C2F20222E7833D001763CE /* spirv_reducer_options.cpp in Sources */,
-				A9C2F20E22E7833D001763CE /* software_version.cpp in Sources */,
-				A9C2F15A22E7833D001763CE /* string_utils.cpp in Sources */,
-				A9C2F26022E7833D001763CE /* dominator_tree.cpp in Sources */,
-				A9C2F44022E7833D001763CE /* validate_barriers.cpp in Sources */,
-				A9C2F37822E7833D001763CE /* struct_cfg_analysis.cpp in Sources */,
-				A9C2F24822E7833D001763CE /* local_single_block_elim_pass.cpp in Sources */,
-				A9C2F16222E7833D001763CE /* parse_number.cpp in Sources */,
-				A9C2F1B022E7833D001763CE /* operand_to_undef_reduction_opportunity_finder.cpp in Sources */,
-				A9C2F20A22E7833D001763CE /* name_mapper.cpp in Sources */,
-				A9C2F2E022E7833D001763CE /* instruction_list.cpp in Sources */,
-				A9C2F44E22E7833D001763CE /* validate_debug.cpp in Sources */,
-				A9C2F35222E7833D001763CE /* reduce_load_size.cpp in Sources */,
-				A9C2F17A22E7833D001763CE /* reduction_util.cpp in Sources */,
-				A9C2F41E22E7833D001763CE /* diagnostic.cpp in Sources */,
-				A9C2F2C222E7833D001763CE /* aggressive_dead_code_elim_pass.cpp in Sources */,
-				A9C2F1D622E7833D001763CE /* remove_block_reduction_opportunity.cpp in Sources */,
-				A9C2F28222E7833D001763CE /* dead_variable_elimination.cpp in Sources */,
-				A9C2F23C22E7833D001763CE /* types.cpp in Sources */,
-				A9C2F27C22E7833D001763CE /* mem_pass.cpp in Sources */,
-				A9C2F14422E7833D001763CE /* assembly_grammar.cpp in Sources */,
-				A9C2F47A22E7833D001763CE /* validate_derivatives.cpp in Sources */,
-				A9C2F21E22E7833D001763CE /* loop_utils.cpp in Sources */,
-				A9C2F44A22E7833D001763CE /* validate_instruction.cpp in Sources */,
-				A9C2F25E22E7833D001763CE /* loop_fission.cpp in Sources */,
-				A9C2F44422E7833D001763CE /* validate_scopes.cpp in Sources */,
-				A9C2F49222E7833D001763CE /* validate_composites.cpp in Sources */,
-				A9C2F46022E7833D001763CE /* function.cpp in Sources */,
-				A9C2F1D222E7833D001763CE /* conditional_branch_to_simple_conditional_branch_opportunity_finder.cpp in Sources */,
-				A9C2F19622E7833D001763CE /* change_operand_reduction_opportunity.cpp in Sources */,
-				A9C2F48222E7833D001763CE /* instruction.cpp in Sources */,
-				A9C2F35E22E7833D001763CE /* replace_invalid_opc.cpp in Sources */,
-				A9C2F22622E7833D001763CE /* combine_access_chains.cpp in Sources */,
-				A9C2F18C22E7833D001763CE /* simple_conditional_branch_to_branch_opportunity_finder.cpp in Sources */,
-				A9C2F20422E7833D001763CE /* parsed_operand.cpp in Sources */,
-				A9C2F29E22E7833D001763CE /* eliminate_dead_functions_pass.cpp in Sources */,
-				A9C2F2FE22E7833D001763CE /* pass_manager.cpp in Sources */,
-				A9C2F26A22E7833D001763CE /* const_folding_rules.cpp in Sources */,
-				A9C2F42A22E7833D001763CE /* operand.cpp in Sources */,
-				A9C2F19E22E7833D001763CE /* remove_unreferenced_instruction_reduction_opportunity_finder.cpp in Sources */,
-				A9C2F36622E7833D001763CE /* decompose_initialized_variables_pass.cpp in Sources */,
-				A9C2F34622E7833D001763CE /* workaround1209.cpp in Sources */,
-				A9C2F16422E7833D001763CE /* bit_vector.cpp in Sources */,
-				A9C2F20C22E7833D001763CE /* linker.cpp in Sources */,
-				A9C2F14822E7833D001763CE /* extensions.cpp in Sources */,
-				A9C2F46A22E7833D001763CE /* validate_datarules.cpp in Sources */,
-				A9C2F43822E7833D001763CE /* validate_misc.cpp in Sources */,
-				A9C2F30022E7833D001763CE /* inline_exhaustive_pass.cpp in Sources */,
-				A9C2F26622E7833D001763CE /* eliminate_dead_constant_pass.cpp in Sources */,
-				A9C2F17C22E7833D001763CE /* structured_loop_to_selection_reduction_opportunity_finder.cpp in Sources */,
-				A9C2F19422E7833D001763CE /* merge_blocks_reduction_opportunity.cpp in Sources */,
-				A9C2F2E422E7833D001763CE /* process_lines_pass.cpp in Sources */,
-				A9C2F25022E7833D001763CE /* inst_bindless_check_pass.cpp in Sources */,
-				A9C2F1EA22E7833D001763CE /* print.cpp in Sources */,
-				A9C2F1E822E7833D001763CE /* spirv_validator_options.cpp in Sources */,
-				A9C2F44622E7833D001763CE /* validate_atomics.cpp in Sources */,
-				A9C2F17422E7833D001763CE /* reduction_pass.cpp in Sources */,
-				A9C2F46622E7833D001763CE /* validate_conversion.cpp in Sources */,
-				A9C2F22822E7833D001763CE /* build_module.cpp in Sources */,
-				A9C2F39E22E7833D001763CE /* legalize_vector_shuffle_pass.cpp in Sources */,
-				A9C2F25222E7833D001763CE /* local_redundancy_elimination.cpp in Sources */,
-				A9C2F15622E7833D001763CE /* timer.cpp in Sources */,
-				A9C2F2F422E7833D001763CE /* eliminate_dead_members_pass.cpp in Sources */,
-				A9C2F45A22E7833D001763CE /* validate_bitwise.cpp in Sources */,
-				A9C2F2DA22E7833D001763CE /* local_ssa_elim_pass.cpp in Sources */,
-				A9C2F2E222E7833D001763CE /* composite.cpp in Sources */,
-				A9C2F42222E7833D001763CE /* libspirv.cpp in Sources */,
-				A9C2F1DC22E7833D001763CE /* spirv_optimizer_options.cpp in Sources */,
-				A9C2F25A22E7833D001763CE /* feature_manager.cpp in Sources */,
-				A9C2F1D422E7833D001763CE /* structured_loop_to_selection_reduction_opportunity.cpp in Sources */,
-				A9C2F28E22E7833D001763CE /* type_manager.cpp in Sources */,
-				A9C2F2B822E7833D001763CE /* ccp_pass.cpp in Sources */,
-				A9C2F46422E7833D001763CE /* validate_adjacency.cpp in Sources */,
-				A9C2F1AA22E7833D001763CE /* remove_opname_instruction_reduction_opportunity_finder.cpp in Sources */,
-				A9C2F25422E7833D001763CE /* instrument_pass.cpp in Sources */,
-				A9C2F43C22E7833D001763CE /* validate_capability.cpp in Sources */,
-				A9C2F48022E7833D001763CE /* validate_literals.cpp in Sources */,
-				A9C2F34222E7833D001763CE /* redundancy_elimination.cpp in Sources */,
-				A9C2F45822E7833D001763CE /* validate_constants.cpp in Sources */,
-				A9C2F34E22E7833D001763CE /* instruction.cpp in Sources */,
-				A9C2F28A22E7833D001763CE /* loop_unswitch_pass.cpp in Sources */,
-				A9C2F1F622E7833D001763CE /* binary.cpp in Sources */,
-				A9C2F29C22E7833D001763CE /* licm_pass.cpp in Sources */,
-				A9C2F17622E7833D001763CE /* operand_to_const_reduction_opportunity_finder.cpp in Sources */,
-				A9C2F28022E7833D001763CE /* remove_duplicates_pass.cpp in Sources */,
-				A9C2F48E22E7833D001763CE /* validate_function.cpp in Sources */,
-				A9C2F24422E7833D001763CE /* strip_atomic_counter_memory_pass.cpp in Sources */,
-				A9C2F49622E7833D001763CE /* validate_primitives.cpp in Sources */,
-				A9C2F43422E7833D001763CE /* text_handler.cpp in Sources */,
-				A9C2F25C22E7833D001763CE /* pass.cpp in Sources */,
-				A9C2F32622E7833D001763CE /* local_single_store_elim_pass.cpp in Sources */,
-				A9C2F45C22E7833D001763CE /* validate_extensions.cpp in Sources */,
-				A9C2F47822E7833D001763CE /* validate_logicals.cpp in Sources */,
-				A9C2F35622E7833D001763CE /* fix_storage_class.cpp in Sources */,
-				A9C2F32A22E7833D001763CE /* private_to_local_pass.cpp in Sources */,
-				A9C2F28C22E7833D001763CE /* unify_const_pass.cpp in Sources */,
-				A9C2F38222E7833D001763CE /* basic_block.cpp in Sources */,
-				A9C2F1CC22E7833D001763CE /* remove_block_reduction_opportunity_finder.cpp in Sources */,
-				A9C2F2C422E7833D001763CE /* eliminate_dead_functions_util.cpp in Sources */,
-				A9C2F1FA22E7833D001763CE /* enum_string_mapping.cpp in Sources */,
-				A9C2F1F022E7833D001763CE /* spirv_endian.cpp in Sources */,
-				A9C2F2D222E7833D001763CE /* ir_context.cpp in Sources */,
-				A9C2F2B222E7833D001763CE /* def_use_manager.cpp in Sources */,
-				A9C2F2CE22E7833D001763CE /* folding_rules.cpp in Sources */,
+				A97963EC2328063700299006 /* spirv_reducer_options.cpp in Sources */,
+				A979644A2328063700299006 /* loop_fission.cpp in Sources */,
+				A97963E02328063700299006 /* binary.cpp in Sources */,
+				A97963282328063700299006 /* text.cpp in Sources */,
+				A979657C2328063700299006 /* struct_cfg_analysis.cpp in Sources */,
+				A97965062328063700299006 /* loop_fusion_pass.cpp in Sources */,
+				A97964262328063700299006 /* code_sink.cpp in Sources */,
+				A979665C2328063800299006 /* validate_atomics.cpp in Sources */,
+				A97964F62328063700299006 /* desc_sroa.cpp in Sources */,
+				A97964FE2328063700299006 /* pass_manager.cpp in Sources */,
+				A97964DA2328063700299006 /* function.cpp in Sources */,
+				A97963AE2328063700299006 /* operand_to_dominating_id_reduction_opportunity_finder.cpp in Sources */,
+				A97963622328063700299006 /* remove_relaxed_precision_decoration_opportunity_finder.cpp in Sources */,
+				A97963FA2328063700299006 /* opcode.cpp in Sources */,
+				A97963682328063700299006 /* remove_function_reduction_opportunity_finder.cpp in Sources */,
+				A97964782328063700299006 /* fold_spec_constant_op_and_composite_pass.cpp in Sources */,
+				A97964722328063700299006 /* dead_variable_elimination.cpp in Sources */,
+				A97965842328063700299006 /* local_access_chain_convert_pass.cpp in Sources */,
+				A97966962328063800299006 /* validate_literals.cpp in Sources */,
+				A97964482328063700299006 /* pass.cpp in Sources */,
+				A97966AA2328063800299006 /* validation_state.cpp in Sources */,
+				A979667E2328063800299006 /* validate_small_type_uses.cpp in Sources */,
+				A97966A02328063800299006 /* validate_layout.cpp in Sources */,
+				A979655A2328063700299006 /* fix_storage_class.cpp in Sources */,
+				A97966982328063800299006 /* instruction.cpp in Sources */,
+				A979639A2328063700299006 /* operand_to_undef_reduction_opportunity_finder.cpp in Sources */,
+				A97966A82328063800299006 /* validate_composites.cpp in Sources */,
+				A97964502328063700299006 /* merge_return_pass.cpp in Sources */,
+				A97963642328063700299006 /* structured_loop_to_selection_reduction_opportunity_finder.cpp in Sources */,
+				A97964362328063700299006 /* freeze_spec_constant_value_pass.cpp in Sources */,
+				A979638C2328063700299006 /* remove_instruction_reduction_opportunity.cpp in Sources */,
+				A97964B22328063700299006 /* ccp_pass.cpp in Sources */,
+				A97963302328063700299006 /* pch_source.cpp in Sources */,
+				A979642E2328063700299006 /* cfg.cpp in Sources */,
+				A97966A22328063800299006 /* basic_block.cpp in Sources */,
+				A97963A22328063700299006 /* merge_blocks_reduction_opportunity_finder.cpp in Sources */,
+				A97966722328063800299006 /* validate_extensions.cpp in Sources */,
+				A979637C2328063700299006 /* merge_blocks_reduction_opportunity.cpp in Sources */,
+				A979664E2328063800299006 /* validate_misc.cpp in Sources */,
+				A97964C42328063700299006 /* dead_branch_elim_pass.cpp in Sources */,
+				A97965522328063700299006 /* instruction.cpp in Sources */,
+				A97963502328063700299006 /* table.cpp in Sources */,
+				A97966802328063800299006 /* validate_datarules.cpp in Sources */,
+				A97964582328063700299006 /* wrap_opkill.cpp in Sources */,
+				A979656A2328063700299006 /* decompose_initialized_variables_pass.cpp in Sources */,
+				A97965962328063800299006 /* loop_fusion.cpp in Sources */,
+				A97964D42328063700299006 /* loop_descriptor.cpp in Sources */,
+				A97965A42328063800299006 /* legalize_vector_shuffle_pass.cpp in Sources */,
+				A97963942328063700299006 /* remove_opname_instruction_reduction_opportunity_finder.cpp in Sources */,
+				A979654C2328063700299006 /* relax_float_ops_pass.cpp in Sources */,
+				A97964E22328063700299006 /* process_lines_pass.cpp in Sources */,
+				A97964122328063700299006 /* build_module.cpp in Sources */,
+				A979653A2328063700299006 /* amd_ext_to_khr.cpp in Sources */,
+				A979669E2328063800299006 /* validate_execution_limitations.cpp in Sources */,
+				A979652A2328063700299006 /* private_to_local_pass.cpp in Sources */,
+				A979666A2328063800299006 /* validate.cpp in Sources */,
+				A97966522328063800299006 /* validate_capability.cpp in Sources */,
+				A97964542328063700299006 /* eliminate_dead_constant_pass.cpp in Sources */,
+				A979647C2328063700299006 /* unify_const_pass.cpp in Sources */,
+				A97963982328063700299006 /* reducer.cpp in Sources */,
+				A97964022328063700299006 /* optimizer.cpp in Sources */,
+				A97963F82328063700299006 /* software_version.cpp in Sources */,
+				A97965622328063700299006 /* replace_invalid_opc.cpp in Sources */,
+				A97964402328063700299006 /* instrument_pass.cpp in Sources */,
+				A97965862328063700299006 /* basic_block.cpp in Sources */,
+				A979649A2328063700299006 /* vector_dce.cpp in Sources */,
+				A97963CE2328063700299006 /* spirv_fuzzer_options.cpp in Sources */,
+				A97964AE2328063700299006 /* strip_reflect_info_pass.cpp in Sources */,
+				A97965902328063700299006 /* graphics_robust_access_pass.cpp in Sources */,
+				A97964962328063700299006 /* split_invalid_unreachable_pass.cpp in Sources */,
+				A979637E2328063700299006 /* change_operand_reduction_opportunity.cpp in Sources */,
+				A979643C2328063700299006 /* inst_bindless_check_pass.cpp in Sources */,
+				A979668E2328063800299006 /* validate_logicals.cpp in Sources */,
+				A979668C2328063800299006 /* validate_memory_semantics.cpp in Sources */,
+				A97965682328063700299006 /* dominator_analysis.cpp in Sources */,
+				A97963FE2328063700299006 /* ext_inst.cpp in Sources */,
+				A979669A2328063800299006 /* validate_type.cpp in Sources */,
+				A97964922328063700299006 /* eliminate_dead_functions_pass.cpp in Sources */,
+				A97963202328063700299006 /* spirv_target_env.cpp in Sources */,
+				A97964602328063700299006 /* ssa_rewrite_pass.cpp in Sources */,
+				A97964562328063700299006 /* cfg_cleanup_pass.cpp in Sources */,
+				A97963542328063700299006 /* remove_selection_reduction_opportunity.cpp in Sources */,
+				A97964762328063700299006 /* module.cpp in Sources */,
+				A97966662328063800299006 /* validate_builtins.cpp in Sources */,
+				A97963402328063700299006 /* string_utils.cpp in Sources */,
+				A97966562328063800299006 /* validate_barriers.cpp in Sources */,
+				A97964702328063700299006 /* remove_duplicates_pass.cpp in Sources */,
+				A979649E2328063700299006 /* loop_unroller.cpp in Sources */,
+				A97965602328063700299006 /* inline_opaque_pass.cpp in Sources */,
+				A97964DE2328063700299006 /* composite.cpp in Sources */,
+				A97964342328063700299006 /* local_single_block_elim_pass.cpp in Sources */,
+				A97966382328063800299006 /* libspirv.cpp in Sources */,
+				A97963482328063700299006 /* parse_number.cpp in Sources */,
+				A979668A2328063800299006 /* validate_mode_setting.cpp in Sources */,
+				A97966762328063800299006 /* function.cpp in Sources */,
+				A97964FC2328063700299006 /* copy_prop_arrays.cpp in Sources */,
+				A97963BC2328063700299006 /* conditional_branch_to_simple_conditional_branch_opportunity_finder.cpp in Sources */,
+				A97966A42328063800299006 /* validate_function.cpp in Sources */,
+				A979645A2328063700299006 /* const_folding_rules.cpp in Sources */,
+				A979652E2328063700299006 /* propagator.cpp in Sources */,
+				A97963C62328063700299006 /* spirv_optimizer_options.cpp in Sources */,
+				A97963B62328063700299006 /* remove_block_reduction_opportunity_finder.cpp in Sources */,
+				A97963602328063700299006 /* reduction_util.cpp in Sources */,
+				A97966582328063800299006 /* validate_non_uniform.cpp in Sources */,
+				A979648C2328063700299006 /* ir_loader.cpp in Sources */,
+				A97965A82328063800299006 /* compact_ids_pass.cpp in Sources */,
+				A97964CA2328063700299006 /* folding_rules.cpp in Sources */,
+				A97964C02328063700299006 /* eliminate_dead_functions_util.cpp in Sources */,
+				A97964082328063700299006 /* loop_utils.cpp in Sources */,
+				A97964322328063700299006 /* decoration_manager.cpp in Sources */,
+				A979666E2328063800299006 /* validate_constants.cpp in Sources */,
+				A97965182328063700299006 /* block_merge_pass.cpp in Sources */,
+				A97965142328063700299006 /* scalar_analysis.cpp in Sources */,
+				A979664A2328063800299006 /* text_handler.cpp in Sources */,
+				A97966502328063800299006 /* validate_cfg.cpp in Sources */,
+				A97963D22328063700299006 /* spirv_validator_options.cpp in Sources */,
+				A97965482328063700299006 /* workaround1209.cpp in Sources */,
+				A97963742328063700299006 /* simple_conditional_branch_to_branch_opportunity_finder.cpp in Sources */,
+				A97963A82328063700299006 /* change_operand_to_undef_reduction_opportunity.cpp in Sources */,
+				A97965262328063700299006 /* local_single_store_elim_pass.cpp in Sources */,
+				A979665A2328063800299006 /* validate_scopes.cpp in Sources */,
+				A97964DC2328063700299006 /* instruction_list.cpp in Sources */,
+				A97964A82328063700299006 /* inst_buff_addr_check_pass.cpp in Sources */,
+				A97964A22328063700299006 /* constants.cpp in Sources */,
+				A97966342328063800299006 /* diagnostic.cpp in Sources */,
+				A97964F42328063700299006 /* strength_reduction_pass.cpp in Sources */,
+				A97964CE2328063700299006 /* ir_context.cpp in Sources */,
+				A97963A42328063700299006 /* reduction_opportunity.cpp in Sources */,
+				A97964302328063700299006 /* strip_atomic_counter_memory_pass.cpp in Sources */,
+				A97963962328063700299006 /* pch_source_reduce.cpp in Sources */,
+				A97964882328063700299006 /* inline_pass.cpp in Sources */,
+				A979632A2328063700299006 /* assembly_grammar.cpp in Sources */,
+				A97966882328063800299006 /* validate_arithmetics.cpp in Sources */,
+				A97964B82328063700299006 /* pch_source_opt.cpp in Sources */,
+				A97963BE2328063700299006 /* structured_loop_to_selection_reduction_opportunity.cpp in Sources */,
+				A97964E02328063700299006 /* convert_to_half_pass.cpp in Sources */,
+				A979655C2328063700299006 /* value_number_table.cpp in Sources */,
+				A97965982328063800299006 /* upgrade_memory_model.cpp in Sources */,
+				A97965102328063700299006 /* dead_insert_elim_pass.cpp in Sources */,
+				A97966742328063800299006 /* construct.cpp in Sources */,
+				A979634A2328063700299006 /* bit_vector.cpp in Sources */,
+				A97966902328063800299006 /* validate_derivatives.cpp in Sources */,
+				A97964622328063700299006 /* loop_dependence.cpp in Sources */,
+				A97964BE2328063700299006 /* aggressive_dead_code_elim_pass.cpp in Sources */,
+				A97964AA2328063700299006 /* def_use_manager.cpp in Sources */,
+				A97966622328063800299006 /* validate_decorations.cpp in Sources */,
+				A97965442328063700299006 /* redundancy_elimination.cpp in Sources */,
+				A979636E2328063700299006 /* simple_conditional_branch_to_branch_reduction_opportunity.cpp in Sources */,
+				A979647A2328063700299006 /* loop_unswitch_pass.cpp in Sources */,
+				A97963862328063700299006 /* remove_unreferenced_instruction_reduction_opportunity_finder.cpp in Sources */,
+				A97963EE2328063700299006 /* parsed_operand.cpp in Sources */,
+				A979653E2328063700299006 /* scalar_replacement_pass.cpp in Sources */,
+				A979632E2328063700299006 /* extensions.cpp in Sources */,
+				A97966922328063800299006 /* validate_memory.cpp in Sources */,
+				A97963F42328063700299006 /* name_mapper.cpp in Sources */,
+				A97963DA2328063700299006 /* spirv_endian.cpp in Sources */,
+				A97966642328063800299006 /* validate_debug.cpp in Sources */,
+				A979643E2328063700299006 /* local_redundancy_elimination.cpp in Sources */,
+				A97964462328063700299006 /* feature_manager.cpp in Sources */,
+				A97964802328063700299006 /* generate_webgpu_initializers_pass.cpp in Sources */,
+				A97963782328063700299006 /* conditional_branch_to_simple_conditional_branch_reduction_opportunity.cpp in Sources */,
+				A97965342328063700299006 /* set_spec_constant_default_value_pass.cpp in Sources */,
+				A97966702328063800299006 /* validate_bitwise.cpp in Sources */,
+				A979645E2328063700299006 /* strip_debug_info_pass.cpp in Sources */,
+				A97965382328063700299006 /* fold.cpp in Sources */,
+				A979646C2328063700299006 /* mem_pass.cpp in Sources */,
+				A97964282328063700299006 /* types.cpp in Sources */,
+				A97963E42328063700299006 /* enum_string_mapping.cpp in Sources */,
+				A97965562328063700299006 /* reduce_load_size.cpp in Sources */,
+				A97963D42328063700299006 /* print.cpp in Sources */,
+				A97965AA2328063800299006 /* loop_peeling.cpp in Sources */,
+				A979635A2328063700299006 /* reduction_pass.cpp in Sources */,
+				A97964C62328063700299006 /* flatten_decoration_pass.cpp in Sources */,
+				A979667A2328063800299006 /* validate_adjacency.cpp in Sources */,
+				A97966402328063800299006 /* operand.cpp in Sources */,
+				A97964EC2328063700299006 /* if_conversion.cpp in Sources */,
+				A979664C2328063800299006 /* validate_annotation.cpp in Sources */,
+				A97966842328063800299006 /* validate_id.cpp in Sources */,
+				A979644C2328063700299006 /* dominator_tree.cpp in Sources */,
+				A97964902328063700299006 /* licm_pass.cpp in Sources */,
+				A97966942328063800299006 /* validate_image.cpp in Sources */,
+				A97964062328063700299006 /* register_pressure.cpp in Sources */,
+				A97966682328063800299006 /* validate_interfaces.cpp in Sources */,
+				A97964F22328063700299006 /* eliminate_dead_members_pass.cpp in Sources */,
+				A97963F62328063700299006 /* linker.cpp in Sources */,
+				A97963C02328063700299006 /* remove_block_reduction_opportunity.cpp in Sources */,
+				A97965002328063700299006 /* inline_exhaustive_pass.cpp in Sources */,
+				A97964C22328063700299006 /* simplification_pass.cpp in Sources */,
+				A979659E2328063800299006 /* scalar_analysis_simplification.cpp in Sources */,
+				A97966AC2328063800299006 /* validate_primitives.cpp in Sources */,
+				A97966462328063800299006 /* disassemble.cpp in Sources */,
+				A97965322328063700299006 /* loop_dependence_helpers.cpp in Sources */,
+				A979647E2328063700299006 /* type_manager.cpp in Sources */,
+				A979667C2328063800299006 /* validate_conversion.cpp in Sources */,
+				A979633C2328063700299006 /* timer.cpp in Sources */,
+				A97963762328063700299006 /* remove_selection_reduction_opportunity_finder.cpp in Sources */,
+				A97964102328063700299006 /* combine_access_chains.cpp in Sources */,
+				A97966602328063800299006 /* validate_instruction.cpp in Sources */,
+				A97964F82328063700299006 /* block_merge_util.cpp in Sources */,
+				A97963702328063700299006 /* remove_function_reduction_opportunity.cpp in Sources */,
+				A979635C2328063700299006 /* operand_to_const_reduction_opportunity_finder.cpp in Sources */,
+				A97964D62328063700299006 /* local_ssa_elim_pass.cpp in Sources */,
 			);
 			runOnlyForDeploymentPostprocessing = 0;
 		};
@@ -3843,7 +3939,7 @@
 				GCC_OPTIMIZATION_LEVEL = 0;
 				GCC_PREPROCESSOR_DEFINITIONS = "DEBUG=1";
 				GCC_SYMBOLS_PRIVATE_EXTERN = YES;
-				GCC_WARN_64_TO_32_BIT_CONVERSION = YES;
+				GCC_WARN_64_TO_32_BIT_CONVERSION = NO;
 				GCC_WARN_ABOUT_MISSING_FIELD_INITIALIZERS = YES;
 				GCC_WARN_ABOUT_MISSING_PROTOTYPES = YES;
 				GCC_WARN_ABOUT_RETURN_TYPE = YES;
@@ -3890,7 +3986,7 @@
 				GCC_NO_COMMON_BLOCKS = YES;
 				GCC_OPTIMIZATION_LEVEL = fast;
 				GCC_SYMBOLS_PRIVATE_EXTERN = YES;
-				GCC_WARN_64_TO_32_BIT_CONVERSION = YES;
+				GCC_WARN_64_TO_32_BIT_CONVERSION = NO;
 				GCC_WARN_ABOUT_MISSING_FIELD_INITIALIZERS = YES;
 				GCC_WARN_ABOUT_MISSING_PROTOTYPES = YES;
 				GCC_WARN_ABOUT_RETURN_TYPE = YES;
diff --git a/ExternalRevisions/SPIRV-Cross_repo_revision b/ExternalRevisions/SPIRV-Cross_repo_revision
index 337aa79..999ffa7 100644
--- a/ExternalRevisions/SPIRV-Cross_repo_revision
+++ b/ExternalRevisions/SPIRV-Cross_repo_revision
@@ -1 +1 @@
-07bb1a53e0cb86cfb9b116623493df974ad9ccee
+2082e7e80189843a52d9a79bc17787af93b517de
diff --git a/ExternalRevisions/Vulkan-Headers_repo_revision b/ExternalRevisions/Vulkan-Headers_repo_revision
index ddbb6f5..7761e26 100644
--- a/ExternalRevisions/Vulkan-Headers_repo_revision
+++ b/ExternalRevisions/Vulkan-Headers_repo_revision
@@ -1 +1 @@
-e3f96a9ccab9397481eb81c4d9bce4ea7590dc33
+5671d014bc1792a116d374792f8a6cfba2e6f512
diff --git a/ExternalRevisions/Vulkan-Tools_repo_revision b/ExternalRevisions/Vulkan-Tools_repo_revision
index b6a15de..ada8321 100644
--- a/ExternalRevisions/Vulkan-Tools_repo_revision
+++ b/ExternalRevisions/Vulkan-Tools_repo_revision
@@ -1 +1 @@
-fb1fd1d63eb20cc6f922228f04d8b96cec452b46
+bcabc204a27a93d6b686920a6d46c17f9aaa3ce0
diff --git a/ExternalRevisions/VulkanSamples_repo_revision b/ExternalRevisions/VulkanSamples_repo_revision
index 1f3f4e1..a82fe2b 100644
--- a/ExternalRevisions/VulkanSamples_repo_revision
+++ b/ExternalRevisions/VulkanSamples_repo_revision
@@ -1 +1 @@
-5a52ebd648b5baf94f2346819b5cf3fdc14b4127
+2403b94ed6463062acff8cfff563ad7ec5cf2b58
diff --git a/ExternalRevisions/glslang_repo_revision b/ExternalRevisions/glslang_repo_revision
index 1c370c0..07c5cad 100644
--- a/ExternalRevisions/glslang_repo_revision
+++ b/ExternalRevisions/glslang_repo_revision
@@ -1 +1 @@
-333d1c95792692205472c457d7bec915a94c8000
+34953810a62c5230cc059cfdf42dc44c5aab2246
diff --git a/MoltenVK/MoltenVK/API/vk_mvk_moltenvk.h b/MoltenVK/MoltenVK/API/vk_mvk_moltenvk.h
index 7a09f83..4d0699d 100644
--- a/MoltenVK/MoltenVK/API/vk_mvk_moltenvk.h
+++ b/MoltenVK/MoltenVK/API/vk_mvk_moltenvk.h
@@ -50,12 +50,12 @@
  */
 #define MVK_VERSION_MAJOR   1
 #define MVK_VERSION_MINOR   0
-#define MVK_VERSION_PATCH   36
+#define MVK_VERSION_PATCH   37
 
 #define MVK_MAKE_VERSION(major, minor, patch)    (((major) * 10000) + ((minor) * 100) + (patch))
 #define MVK_VERSION     MVK_MAKE_VERSION(MVK_VERSION_MAJOR, MVK_VERSION_MINOR, MVK_VERSION_PATCH)
 
-#define VK_MVK_MOLTENVK_SPEC_VERSION            21
+#define VK_MVK_MOLTENVK_SPEC_VERSION            22
 #define VK_MVK_MOLTENVK_EXTENSION_NAME          "VK_MVK_moltenvk"
 
 /**
@@ -102,8 +102,8 @@
  *      2: Log errors and informational messages.
  *    If neither is set, errors and informational messages are logged.
  *
- * 2. Setting the MVK_CONFIG_TRACE_VULKAN_CALLS runtime environment variable or MoltenVK compile-time build
- *    setting will cause MoltenVK to log the name of each Vulkan call made by the application. The logging
+ * 2. The MVK_CONFIG_TRACE_VULKAN_CALLS runtime environment variable or MoltenVK compile-time build
+ *    setting causes MoltenVK to log the name of each Vulkan call made by the application. The logging
  *    format options can be controlled by setting the value of MVK_CONFIG_TRACE_VULKAN_CALLS as follows:
  *        0: No Vulkan call logging.
  *        1: Log the name of each Vulkan call when the call is entered.
@@ -114,9 +114,23 @@
  * 3. Setting the MVK_CONFIG_FORCE_LOW_POWER_GPU runtime environment variable or MoltenVK compile-time
  *    build setting to 1 will force MoltenVK to use a low-power GPU, if one is availble on the device.
  *
- * 4. Setting the MVK_ALLOW_METAL_EVENTS runtime environment variable or MoltenVK compile-time build
- *    setting to 1 will cause MoltenVK to use Metal events, if they are available on the device, for
- *    Vulkan sychronization components such as VkSemaphore. This is disabled by default.
+ * 4. Setting the MVK_ALLOW_METAL_FENCES or MVK_ALLOW_METAL_EVENTS runtime environment variable
+ *    or MoltenVK compile-time build setting to 1 will cause MoltenVK to use MTLFence or MTLEvent
+ *    if they are available on the device, for VkSemaphore sychronization behaviour.
+ *    If both variables are set, MVK_ALLOW_METAL_FENCES takes priority over MVK_ALLOW_METAL_EVENTS.
+ *    Both options are disabled by default.
+ *
+ * 5. The MVK_CONFIG_AUTO_GPU_CAPTURE_SCOPE runtime environment variable or MoltenVK compile-time
+ *    build setting controls whether Xcode should run an automatic GPU capture without the user
+ *    having to trigger it manually via the Xcode user interface, and controls the scope under
+ *    which that GPU capture will occur. This is useful when trying to capture a one-shot GPU
+ *    trace, such as when running a Vulkan CTS test case. For the automatic GPU capture to occur,
+ *    the Xcode scheme under which the app is run must have the Metal GPU capture option turned on.
+ *    MVK_CONFIG_AUTO_GPU_CAPTURE_SCOPE should not be set to manually trigger a GPU capture via the
+ *    Xcode user interface.
+ *      0: No automatic GPU capture.
+ *      1: Capture all GPU commands issued during the lifetime of the VkDevice.
+ *    If none of these is set, no automatic GPU capture will occur.
  */
 typedef struct {
 
@@ -167,7 +181,10 @@
 	 * The initial value or this parameter is set by the
 	 * MVK_CONFIG_SYNCHRONOUS_QUEUE_SUBMITS
 	 * runtime environment variable or MoltenVK compile-time build setting.
-	 * If neither is set, the value of this parameter defaults to true.
+	 * If neither is set, the value of this parameter defaults to true for macOS 10.14
+	 * and above or iOS 12 and above, and false otherwise. The reason for this distinction
+	 * is that this feature should be disabled when emulation is required to support VkEvents
+	 * because native support for events (MTLEvent) is not available.
 	 */
 	VkBool32 synchronousQueueSubmits;
 
@@ -191,7 +208,7 @@
 	 * buffers (VK_COMMAND_BUFFER_LEVEL_SECONDARY), or for primary command buffers that are intended
 	 * to be submitted to multiple queues concurrently (VK_COMMAND_BUFFER_USAGE_SIMULTANEOUS_USE_BIT).
 	 *
-	 * When enabling this features, be aware that one Metal command buffer is required for each Vulkan
+	 * When enabling this feature, be aware that one Metal command buffer is required for each Vulkan
 	 * command buffer. Depending on the number of command buffers that you use, you may also need to
 	 * change the value of the maxActiveMetalCommandBuffersPerQueue setting.
 	 *
@@ -251,18 +268,7 @@
 	 */
 	VkBool32 supportLargeQueryPools;
 
-	/**
-	 * If enabled, each surface presentation is scheduled using a command buffer. Enabling this
-	 * setting may improve rendering frame synchronization, but may result in reduced frame rates.
-	 *
-	 * The value of this parameter may be changed at any time during application runtime,
-	 * and the changed value will immediately effect subsequent MoltenVK behaviour.
-	 *
-	 * The initial value or this parameter is set by the
-	 * MVK_CONFIG_PRESENT_WITH_COMMAND_BUFFER
-	 * runtime environment variable or MoltenVK compile-time build setting.
-	 * If neither is set, the value of this parameter defaults to true.
-	 */
+	/** Obsolete, ignored, and deprecated. All surface presentations are performed with a command buffer. */
 	VkBool32 presentWithCommandBuffer;
 
 	/**
@@ -534,12 +540,14 @@
 	VkBool32 arrayOfSamplers;			 	  	/**< If true, arrays of texture samplers is supported. */
 	MTLLanguageVersion mslVersionEnum;			/**< The version of the Metal Shading Language available on this device, as a Metal enumeration. */
 	VkBool32 depthSampleCompare;				/**< If true, depth texture samplers support the comparison of the pixel value against a reference value. */
-	VkBool32 events;							/**< If true, Metal synchronization events are supported. */
+	VkBool32 events;							/**< If true, Metal synchronization events (MTLEvent) are supported. */
 	VkBool32 memoryBarriers;					/**< If true, full memory barriers within Metal render passes are supported. */
 	VkBool32 multisampleLayeredRendering;       /**< If true, layered rendering to multiple multi-sampled cube or texture array layers is supported. */
 	VkBool32 stencilFeedback;					/**< If true, fragment shaders that write to [[stencil]] outputs are supported. */
 	VkBool32 textureBuffers;					/**< If true, textures of type MTLTextureTypeBuffer are supported. */
 	VkBool32 postDepthCoverage;					/**< If true, coverage masks in fragment shaders post-depth-test are supported. */
+	VkBool32 fences;							/**< If true, Metal synchronization fences (MTLFence) are supported. */
+	VkBool32 rasterOrderGroups;					/**< If true, Raster order groups in fragment shaders are supported. */
 	VkBool32 native3DCompressedTextures;		/**< If true, 3D compressed images are supported natively, without manual decompression. */
 	VkBool32 nativeTextureSwizzle;				/**< If true, component swizzle is supported natively, without manual swizzling in shaders. */
 	VkBool32 placementHeaps;					/**< If true, MTLHeap objects support placement of resources. */
diff --git a/MoltenVK/MoltenVK/Commands/MVKCmdDebug.h b/MoltenVK/MoltenVK/Commands/MVKCmdDebug.h
index dac03b9..67199a2 100644
--- a/MoltenVK/MoltenVK/Commands/MVKCmdDebug.h
+++ b/MoltenVK/MoltenVK/Commands/MVKCmdDebug.h
@@ -95,3 +95,11 @@
 
 void mvkCmdInsertDebugUtilsLabel(MVKCommandBuffer* cmdBuff, const VkDebugUtilsLabelEXT* pLabelInfo);
 
+
+#pragma mark -
+#pragma mark Support functions
+
+void mvkPushDebugGroup(id<MTLCommandBuffer> mtlCmdBuffer, NSString* name);
+
+void mvkPopDebugGroup(id<MTLCommandBuffer> mtlCmdBuffer);
+
diff --git a/MoltenVK/MoltenVK/Commands/MVKCmdDebug.mm b/MoltenVK/MoltenVK/Commands/MVKCmdDebug.mm
index 3e15659..803a744 100644
--- a/MoltenVK/MoltenVK/Commands/MVKCmdDebug.mm
+++ b/MoltenVK/MoltenVK/Commands/MVKCmdDebug.mm
@@ -47,7 +47,7 @@
 	if (mtlCmdEnc) {
 		[mtlCmdEnc pushDebugGroup: _markerName];
 	} else {
-		[cmdEncoder->_mtlCmdBuffer pushDebugGroup: _markerName];
+		mvkPushDebugGroup(cmdEncoder->_mtlCmdBuffer, _markerName);
 	}
 }
 
@@ -65,7 +65,7 @@
 	if (mtlCmdEnc) {
 		[mtlCmdEnc popDebugGroup];
 	} else {
-		[cmdEncoder->_mtlCmdBuffer popDebugGroup];
+		mvkPopDebugGroup(cmdEncoder->_mtlCmdBuffer);
 	}
 }
 
@@ -121,3 +121,18 @@
 	cmdBuff->addCommand(cmd);
 }
 
+
+#pragma mark -
+#pragma mark Support functions
+
+void mvkPushDebugGroup(id<MTLCommandBuffer> mtlCmdBuffer, NSString* name) {
+	if ([mtlCmdBuffer respondsToSelector: @selector(pushDebugGroup:)]) {
+		[mtlCmdBuffer pushDebugGroup: name];
+	}
+}
+
+void mvkPopDebugGroup(id<MTLCommandBuffer> mtlCmdBuffer) {
+	if ([mtlCmdBuffer respondsToSelector: @selector(popDebugGroup)]) {
+		[mtlCmdBuffer popDebugGroup];
+	}
+}
diff --git a/MoltenVK/MoltenVK/Commands/MVKCmdDispatch.h b/MoltenVK/MoltenVK/Commands/MVKCmdDispatch.h
index 9213901..d6b45fa 100644
--- a/MoltenVK/MoltenVK/Commands/MVKCmdDispatch.h
+++ b/MoltenVK/MoltenVK/Commands/MVKCmdDispatch.h
@@ -20,7 +20,6 @@
 
 #include "MVKCommand.h"
 #include "MVKMTLResourceBindings.h"
-#include <vector>
 
 #import <Metal/Metal.h>
 
@@ -32,14 +31,15 @@
 class MVKCmdDispatch : public MVKCommand {
 
 public:
-	void setContent(uint32_t x, uint32_t y, uint32_t z);
+    void setContent(uint32_t baseGroupX, uint32_t baseGroupY, uint32_t baseGroupZ,
+                    uint32_t groupCountX, uint32_t groupCountY, uint32_t groupCountZ);
 
     void encode(MVKCommandEncoder* cmdEncoder) override;
 
     MVKCmdDispatch(MVKCommandTypePool<MVKCmdDispatch>* pool);
 
 protected:
-    MTLSize  _mtlThreadgroupCount;
+    MTLRegion  _mtlThreadgroupCount;
 };
 
 
@@ -71,3 +71,6 @@
 /** Adds an indirect compute threadgroup dispatch command to the specified command buffer. */
 void mvkCmdDispatchIndirect(MVKCommandBuffer* cmdBuff, VkBuffer buffer, VkDeviceSize offset);
 
+/** Adds a compute threadgroup dispatch command to the specified command buffer, with thread IDs starting from the given base. */
+void mvkCmdDispatchBase(MVKCommandBuffer* cmdBuff, uint32_t baseGroupX, uint32_t baseGroupY, uint32_t baseGroupZ, uint32_t groupCountX, uint32_t groupCountY, uint32_t groupCountZ);
+
diff --git a/MoltenVK/MoltenVK/Commands/MVKCmdDispatch.mm b/MoltenVK/MoltenVK/Commands/MVKCmdDispatch.mm
index d52d36a..f1f4e55 100644
--- a/MoltenVK/MoltenVK/Commands/MVKCmdDispatch.mm
+++ b/MoltenVK/MoltenVK/Commands/MVKCmdDispatch.mm
@@ -20,6 +20,7 @@
 #include "MVKCommandBuffer.h"
 #include "MVKCommandPool.h"
 #include "MVKBuffer.h"
+#include "MVKPipeline.h"
 #include "MVKFoundation.h"
 #include "mvk_datatypes.hpp"
 
@@ -27,18 +28,30 @@
 #pragma mark -
 #pragma mark MVKCmdDispatch
 
-void MVKCmdDispatch::setContent(uint32_t x, uint32_t y, uint32_t z) {
-    _mtlThreadgroupCount.width = x;
-    _mtlThreadgroupCount.height = y;
-    _mtlThreadgroupCount.depth = z;
+void MVKCmdDispatch::setContent(uint32_t baseGroupX, uint32_t baseGroupY, uint32_t baseGroupZ,
+                                uint32_t groupCountX, uint32_t groupCountY, uint32_t groupCountZ) {
+    _mtlThreadgroupCount = MTLRegionMake3D(baseGroupX, baseGroupY, baseGroupZ, groupCountX, groupCountY, groupCountZ);
 }
 
 void MVKCmdDispatch::encode(MVKCommandEncoder* cmdEncoder) {
 //    MVKLogDebug("vkCmdDispatch() dispatching (%d, %d, %d) threadgroups.", _x, _y, _z);
 
 	cmdEncoder->finalizeDispatchState();	// Ensure all updated state has been submitted to Metal
-    [cmdEncoder->getMTLComputeEncoder(kMVKCommandUseDispatch) dispatchThreadgroups: _mtlThreadgroupCount
-															 threadsPerThreadgroup: cmdEncoder->_mtlThreadgroupSize];
+	id<MTLComputeCommandEncoder> mtlEncoder = cmdEncoder->getMTLComputeEncoder(kMVKCommandUseDispatch);
+	auto* pipeline = (MVKComputePipeline*)cmdEncoder->_computePipelineState.getPipeline();
+	if (pipeline->allowsDispatchBase()) {
+		if ([mtlEncoder respondsToSelector: @selector(setStageInRegion:)]) {
+			// We'll use the stage-input region to pass the base along to the shader.
+			// Hopefully Metal won't complain that we didn't set up a stage-input descriptor.
+			[mtlEncoder setStageInRegion: _mtlThreadgroupCount];
+		} else {
+			// We have to pass the base group in a buffer.
+			unsigned int base[3] = {(uint32_t)_mtlThreadgroupCount.origin.x, (uint32_t)_mtlThreadgroupCount.origin.y, (uint32_t)_mtlThreadgroupCount.origin.z};
+			cmdEncoder->setComputeBytes(mtlEncoder, base, sizeof(base), pipeline->getIndirectParamsIndex().stages[kMVKShaderStageCompute]);
+		}
+	}
+	[mtlEncoder dispatchThreadgroups: _mtlThreadgroupCount.size
+			   threadsPerThreadgroup: cmdEncoder->_mtlThreadgroupSize];
 }
 
 MVKCmdDispatch::MVKCmdDispatch(MVKCommandTypePool<MVKCmdDispatch>* pool)
@@ -75,7 +88,7 @@
 
 void mvkCmdDispatch(MVKCommandBuffer* cmdBuff, uint32_t x, uint32_t y, uint32_t z) {
 	MVKCmdDispatch* cmd = cmdBuff->_commandPool->_cmdDispatchPool.acquireObject();
-	cmd->setContent(x, y, z);
+	cmd->setContent(0, 0, 0, x, y, z);
 	cmdBuff->addCommand(cmd);
 }
 
@@ -85,4 +98,11 @@
 	cmdBuff->addCommand(cmd);
 }
 
+void mvkCmdDispatchBase(MVKCommandBuffer* cmdBuff, uint32_t baseGroupX, uint32_t baseGroupY, uint32_t baseGroupZ,
+						uint32_t groupCountX, uint32_t groupCountY, uint32_t groupCountZ) {
+	MVKCmdDispatch* cmd = cmdBuff->_commandPool->_cmdDispatchPool.acquireObject();
+	cmd->setContent(baseGroupX, baseGroupY, baseGroupZ, groupCountX, groupCountY, groupCountZ);
+	cmdBuff->addCommand(cmd);
+}
+
 
diff --git a/MoltenVK/MoltenVK/Commands/MVKCmdPipeline.h b/MoltenVK/MoltenVK/Commands/MVKCmdPipeline.h
index d5bf3dd..3812739 100644
--- a/MoltenVK/MoltenVK/Commands/MVKCmdPipeline.h
+++ b/MoltenVK/MoltenVK/Commands/MVKCmdPipeline.h
@@ -20,7 +20,6 @@
 
 #include "MVKCommand.h"
 #include "MVKVector.h"
-#include <vector>
 
 class MVKCommandBuffer;
 class MVKPipeline;
@@ -54,9 +53,9 @@
 	VkPipelineStageFlags _srcStageMask;
 	VkPipelineStageFlags _dstStageMask;
 	VkDependencyFlags _dependencyFlags;
-	std::vector<VkMemoryBarrier> _memoryBarriers;
-	std::vector<VkBufferMemoryBarrier> _bufferMemoryBarriers;
-	std::vector<VkImageMemoryBarrier> _imageMemoryBarriers;
+	MVKVectorInline<VkMemoryBarrier, 4> _memoryBarriers;
+	MVKVectorInline<VkBufferMemoryBarrier, 4> _bufferMemoryBarriers;
+	MVKVectorInline<VkImageMemoryBarrier, 4> _imageMemoryBarriers;
 };
 
 
@@ -191,6 +190,54 @@
 
 
 #pragma mark -
+#pragma mark MVKCmdSetResetEvent
+
+/** Vulkan command to set or reset an event. */
+class MVKCmdSetResetEvent : public MVKCommand {
+
+public:
+	void setContent(VkEvent event, VkPipelineStageFlags stageMask, bool status);
+
+	void encode(MVKCommandEncoder* cmdEncoder) override;
+
+	MVKCmdSetResetEvent(MVKCommandTypePool<MVKCmdSetResetEvent>* pool);
+
+private:
+	MVKEvent* _mvkEvent;
+	bool _status;
+
+};
+
+
+#pragma mark -
+#pragma mark MVKCmdWaitEvents
+
+/** Vulkan command to wait for an event to be signaled. */
+class MVKCmdWaitEvents : public MVKCommand {
+
+public:
+	void setContent(uint32_t eventCount,
+					const VkEvent* pEvents,
+					VkPipelineStageFlags srcStageMask,
+					VkPipelineStageFlags dstStageMask,
+					uint32_t memoryBarrierCount,
+					const VkMemoryBarrier* pMemoryBarriers,
+					uint32_t bufferMemoryBarrierCount,
+					const VkBufferMemoryBarrier* pBufferMemoryBarriers,
+					uint32_t imageMemoryBarrierCount,
+					const VkImageMemoryBarrier* pImageMemoryBarriers);
+
+	void encode(MVKCommandEncoder* cmdEncoder) override;
+
+	MVKCmdWaitEvents(MVKCommandTypePool<MVKCmdWaitEvents>* pool);
+
+private:
+	MVKVectorInline<MVKEvent*, 4> _mvkEvents;
+
+};
+
+
+#pragma mark -
 #pragma mark Command creation functions
 
 /** Adds commands to the specified command buffer that insert the specified pipeline barriers. */
@@ -242,3 +289,30 @@
 										 VkPipelineLayout layout,
 										 uint32_t set,
 										 const void* pData);
+
+/** Adds a set event command to the specified command buffer. */
+void mvkCmdSetEvent(MVKCommandBuffer* cmdBuff,
+					VkEvent event,
+					VkPipelineStageFlags stageMask);
+
+/** Adds a reset event command to the specified command buffer. */
+void mvkCmdResetEvent(MVKCommandBuffer* cmdBuff,
+					  VkEvent event,
+					  VkPipelineStageFlags stageMask);
+
+
+/** Adds a wait events command to the specified command buffer. */
+void mvkCmdWaitEvents(MVKCommandBuffer* cmdBuff,
+					  uint32_t eventCount,
+					  const VkEvent* pEvents,
+					  VkPipelineStageFlags srcStageMask,
+					  VkPipelineStageFlags dstStageMask,
+					  uint32_t memoryBarrierCount,
+					  const VkMemoryBarrier* pMemoryBarriers,
+					  uint32_t bufferMemoryBarrierCount,
+					  const VkBufferMemoryBarrier* pBufferMemoryBarriers,
+					  uint32_t imageMemoryBarrierCount,
+					  const VkImageMemoryBarrier* pImageMemoryBarriers);
+
+/** Indicates that following commands are to be recorded only for the devices in the given device mask. */
+void mvkCmdSetDeviceMask(MVKCommandBuffer* cmdBuff, uint32_t deviceMask);
diff --git a/MoltenVK/MoltenVK/Commands/MVKCmdPipeline.mm b/MoltenVK/MoltenVK/Commands/MVKCmdPipeline.mm
index 18fe127..afab76a 100644
--- a/MoltenVK/MoltenVK/Commands/MVKCmdPipeline.mm
+++ b/MoltenVK/MoltenVK/Commands/MVKCmdPipeline.mm
@@ -77,7 +77,7 @@
 													  afterStages: srcStages
 													 beforeStages: dstStages];
 		}
-		std::vector<id<MTLResource>> resources;
+		MVKVectorInline<id<MTLResource>, 16> resources;
 		resources.reserve(_bufferMemoryBarriers.size() + _imageMemoryBarriers.size());
 		for (auto& mb : _bufferMemoryBarriers) {
 			auto* mvkBuff = (MVKBuffer*)mb.buffer;
@@ -347,6 +347,54 @@
 
 
 #pragma mark -
+#pragma mark MVKCmdSetResetEvent
+
+void MVKCmdSetResetEvent::setContent(VkEvent event, VkPipelineStageFlags stageMask, bool status) {
+	_mvkEvent = (MVKEvent*)event;
+	_status = status;
+}
+
+void MVKCmdSetResetEvent::encode(MVKCommandEncoder* cmdEncoder) {
+	cmdEncoder->signalEvent(_mvkEvent, _status);
+}
+
+MVKCmdSetResetEvent::MVKCmdSetResetEvent(MVKCommandTypePool<MVKCmdSetResetEvent>* pool)
+	: MVKCommand::MVKCommand((MVKCommandTypePool<MVKCommand>*)pool) {}
+
+
+#pragma mark -
+#pragma mark MVKCmdWaitEvents
+
+void MVKCmdWaitEvents::setContent(uint32_t eventCount,
+							   const VkEvent* pEvents,
+							   VkPipelineStageFlags srcStageMask,
+							   VkPipelineStageFlags dstStageMask,
+							   uint32_t memoryBarrierCount,
+							   const VkMemoryBarrier* pMemoryBarriers,
+							   uint32_t bufferMemoryBarrierCount,
+							   const VkBufferMemoryBarrier* pBufferMemoryBarriers,
+							   uint32_t imageMemoryBarrierCount,
+							   const VkImageMemoryBarrier* pImageMemoryBarriers) {
+
+	_mvkEvents.clear();	// Clear for reuse
+	_mvkEvents.reserve(eventCount);
+	for (uint32_t i = 0; i < eventCount; i++) {
+		_mvkEvents.push_back((MVKEvent*)pEvents[i]);
+	}
+
+}
+
+void MVKCmdWaitEvents::encode(MVKCommandEncoder* cmdEncoder) {
+	for (MVKEvent* mvkEvt : _mvkEvents) {
+		mvkEvt->encodeWait(cmdEncoder->_mtlCmdBuffer);
+	}
+}
+
+MVKCmdWaitEvents::MVKCmdWaitEvents(MVKCommandTypePool<MVKCmdWaitEvents>* pool)
+	: MVKCommand::MVKCommand((MVKCommandTypePool<MVKCommand>*)pool) {}
+
+
+#pragma mark -
 #pragma mark Command creation functions
 
 void mvkCmdPipelineBarrier(MVKCommandBuffer* cmdBuff,
@@ -420,3 +468,43 @@
 	cmd->setContent(descUpdateTemplate, layout, set, pData);
 	cmdBuff->addCommand(cmd);
 }
+
+void mvkCmdSetEvent(MVKCommandBuffer* cmdBuff,
+					VkEvent event,
+					VkPipelineStageFlags stageMask) {
+	MVKCmdSetResetEvent* cmd = cmdBuff->_commandPool->_cmdSetResetEventPool.acquireObject();
+	cmd->setContent(event, stageMask, true);
+	cmdBuff->addCommand(cmd);
+}
+
+void mvkCmdResetEvent(MVKCommandBuffer* cmdBuff,
+					  VkEvent event,
+					  VkPipelineStageFlags stageMask) {
+	MVKCmdSetResetEvent* cmd = cmdBuff->_commandPool->_cmdSetResetEventPool.acquireObject();
+	cmd->setContent(event, stageMask, false);
+	cmdBuff->addCommand(cmd);
+}
+
+void mvkCmdWaitEvents(MVKCommandBuffer* cmdBuff,
+					  uint32_t eventCount,
+					  const VkEvent* pEvents,
+					  VkPipelineStageFlags srcStageMask,
+					  VkPipelineStageFlags dstStageMask,
+					  uint32_t memoryBarrierCount,
+					  const VkMemoryBarrier* pMemoryBarriers,
+					  uint32_t bufferMemoryBarrierCount,
+					  const VkBufferMemoryBarrier* pBufferMemoryBarriers,
+					  uint32_t imageMemoryBarrierCount,
+					  const VkImageMemoryBarrier* pImageMemoryBarriers) {
+	MVKCmdWaitEvents* cmd = cmdBuff->_commandPool->_cmdWaitEventsPool.acquireObject();
+	cmd->setContent(eventCount, pEvents,
+					srcStageMask, dstStageMask,
+					memoryBarrierCount, pMemoryBarriers,
+					bufferMemoryBarrierCount, pBufferMemoryBarriers,
+					imageMemoryBarrierCount, pImageMemoryBarriers);
+	cmdBuff->addCommand(cmd);
+}
+
+void mvkCmdSetDeviceMask(MVKCommandBuffer* cmdBuff, uint32_t deviceMask) {
+	// No-op for now...
+}
diff --git a/MoltenVK/MoltenVK/Commands/MVKCmdRenderPass.h b/MoltenVK/MoltenVK/Commands/MVKCmdRenderPass.h
index 2658c0f..0f84ff0 100644
--- a/MoltenVK/MoltenVK/Commands/MVKCmdRenderPass.h
+++ b/MoltenVK/MoltenVK/Commands/MVKCmdRenderPass.h
@@ -20,7 +20,6 @@
 
 #include "MVKCommand.h"
 #include "MVKVector.h"
-#include <vector>
 
 #import <Metal/Metal.h>
 
@@ -85,7 +84,7 @@
 #pragma mark -
 #pragma mark MVKCmdExecuteCommands
 
-/** Vulkan command to end the current render pass. */
+/** Vulkan command to execute secondary command buffers. */
 class MVKCmdExecuteCommands : public MVKCommand {
 
 public:
@@ -96,7 +95,7 @@
 	MVKCmdExecuteCommands(MVKCommandTypePool<MVKCmdExecuteCommands>* pool);
 
 private:
-	std::vector<MVKCommandBuffer*> _secondaryCommandBuffers;
+	MVKVectorInline<MVKCommandBuffer*, 64> _secondaryCommandBuffers;
 };
 
 #pragma mark -
diff --git a/MoltenVK/MoltenVK/Commands/MVKCmdTransfer.h b/MoltenVK/MoltenVK/Commands/MVKCmdTransfer.h
index 231924a..eaea4c9 100644
--- a/MoltenVK/MoltenVK/Commands/MVKCmdTransfer.h
+++ b/MoltenVK/MoltenVK/Commands/MVKCmdTransfer.h
@@ -22,7 +22,7 @@
 #include "MVKMTLBufferAllocation.h"
 #include "MVKCommandResourceFactory.h"
 #include "MVKFoundation.h"
-#include <vector>
+#include "MVKVector.h"
 
 #import <Metal/Metal.h>
 
@@ -52,7 +52,8 @@
 
 protected:
 	void setContent(VkImage srcImage, VkImageLayout srcImageLayout,
-					VkImage dstImage, VkImageLayout dstImageLayout, MVKCommandUse commandUse);
+					VkImage dstImage, VkImageLayout dstImageLayout,
+					bool formatsMustMatch, MVKCommandUse commandUse);
 	void addImageCopyRegion(const VkImageCopy& region);
 	void addTempBufferImageCopyRegion(const VkImageCopy& region);
 
@@ -68,9 +69,9 @@
 	bool _isDstCompressed;
 	bool _canCopyFormats;
 	bool _useTempBuffer;
-	std::vector<VkImageCopy> _imageCopyRegions;
-	std::vector<VkBufferImageCopy> _srcTmpBuffImgCopies;
-	std::vector<VkBufferImageCopy> _dstTmpBuffImgCopies;
+	MVKVectorInline<VkImageCopy, 4> _imageCopyRegions;
+	MVKVectorInline<VkBufferImageCopy, 4> _srcTmpBuffImgCopies;
+	MVKVectorInline<VkBufferImageCopy, 4> _dstTmpBuffImgCopies;
 	size_t _tmpBuffSize;
     MVKCommandUse _commandUse;
 };
@@ -117,7 +118,7 @@
 	MTLRenderPassDescriptor* _mtlRenderPassDescriptor;
 	MTLSamplerMinMagFilter _mtlFilter;
 	MVKRPSKeyBlitImg _blitKey;
-	std::vector<MVKImageBlitRender> _mvkImageBlitRenders;
+	MVKVectorInline<MVKImageBlitRender, 4> _mvkImageBlitRenders;
 };
 
 
@@ -157,11 +158,11 @@
     VkImageLayout _srcLayout;
     MVKImage* _dstImage;
     VkImageLayout _dstLayout;
-    std::vector<VkImageBlit> _expansionRegions;
-    std::vector<VkImageCopy> _copyRegions;
     MVKImageDescriptorData _transferImageData;
     MTLRenderPassDescriptor* _mtlRenderPassDescriptor;
-    std::vector<MVKMetalResolveSlice> _mtlResolveSlices;
+	MVKVectorInline<VkImageBlit, 4> _expansionRegions;
+	MVKVectorInline<VkImageCopy, 4> _copyRegions;
+	MVKVectorInline<MVKMetalResolveSlice, 4> _mtlResolveSlices;
 };
 
 
@@ -186,7 +187,7 @@
 
 	MVKBuffer* _srcBuffer;
 	MVKBuffer* _dstBuffer;
-	std::vector<VkBufferCopy> _mtlBuffCopyRegions;
+	MVKVectorInline<VkBufferCopy, 4> _mtlBuffCopyRegions;
 };
 
 
@@ -215,7 +216,7 @@
     MVKBuffer* _buffer;
     MVKImage* _image;
     VkImageLayout _imageLayout;
-    std::vector<VkBufferImageCopy> _bufferImageCopyRegions;
+	MVKVectorInline<VkBufferImageCopy, 4> _bufferImageCopyRegions;
     bool _toImage = false;
 };
 
@@ -241,8 +242,8 @@
     void populateVertices(float attWidth, float attHeight);
     void populateVertices(VkClearRect& clearRect, float attWidth, float attHeight);
 
-    std::vector<VkClearRect> _clearRects;
-    std::vector<simd::float4> _vertices;
+	MVKVectorInline<VkClearRect, 4> _clearRects;
+	MVKVectorInline<simd::float4, (4 * 6)> _vertices;
     simd::float4 _clearColors[kMVKClearAttachmentCount];
     VkClearValue _vkClearValues[kMVKClearAttachmentCount];
     MVKRPSKeyClearAtt _rpsKey;
@@ -278,7 +279,7 @@
     
     MVKImage* _image;
     VkImageLayout _imgLayout;
-    std::vector<VkImageSubresourceRange> _subresourceRanges;
+	MVKVectorInline<VkImageSubresourceRange, 4> _subresourceRanges;
 	MTLClearColor _mtlColorClearValue;
 	double _mtlDepthClearValue;
     uint32_t _mtlStencilClearValue;
@@ -303,7 +304,7 @@
 protected:
     MVKBuffer* _dstBuffer;
     VkDeviceSize _dstOffset;
-    VkDeviceSize _size;
+    uint32_t _wordCount;
     uint32_t _dataValue;
 };
 
@@ -330,7 +331,7 @@
     MVKBuffer* _dstBuffer;
     VkDeviceSize _dstOffset;
     VkDeviceSize _dataSize;
-    std::vector<uint8_t> _srcDataCache;
+    MVKVectorDefault<uint8_t> _srcDataCache;
 };
 
 
diff --git a/MoltenVK/MoltenVK/Commands/MVKCmdTransfer.mm b/MoltenVK/MoltenVK/Commands/MVKCmdTransfer.mm
index ee13273..71b5fb6 100644
--- a/MoltenVK/MoltenVK/Commands/MVKCmdTransfer.mm
+++ b/MoltenVK/MoltenVK/Commands/MVKCmdTransfer.mm
@@ -41,7 +41,7 @@
 								 const VkImageCopy* pRegions,
 								 MVKCommandUse commandUse) {
 
-	setContent(srcImage, srcImageLayout, dstImage, dstImageLayout, commandUse);
+	setContent(srcImage, srcImageLayout, dstImage, dstImageLayout, false, commandUse);
 
 	for (uint32_t i = 0; i < regionCount; i++) {
 		addImageCopyRegion(pRegions[i]);
@@ -56,11 +56,12 @@
 	}
 }
 
-// Sets basic content for use by this class and subclasses
+// Sets common content for use by this class and subclasses
 void MVKCmdCopyImage::setContent(VkImage srcImage,
 								 VkImageLayout srcImageLayout,
 								 VkImage dstImage,
 								 VkImageLayout dstImageLayout,
+								 bool formatsMustMatch,
 								 MVKCommandUse commandUse) {
 	_srcImage = (MVKImage*)srcImage;
 	_srcLayout = srcImageLayout;
@@ -76,7 +77,10 @@
 	_isDstCompressed = _dstImage->getIsCompressed();
 	uint32_t dstBytesPerBlock = mvkMTLPixelFormatBytesPerBlock(_dstMTLPixFmt);
 
-	_canCopyFormats = (srcBytesPerBlock == dstBytesPerBlock) && (_srcSampleCount == _dstSampleCount);
+	_canCopyFormats = (_dstSampleCount == _srcSampleCount) && (formatsMustMatch
+																? (_dstMTLPixFmt == _srcMTLPixFmt)
+																: (dstBytesPerBlock == srcBytesPerBlock));
+
 	_useTempBuffer = (_srcMTLPixFmt != _dstMTLPixFmt) && (_isSrcCompressed || _isDstCompressed);	// Different formats and at least one is compressed
 
 	_commandUse = commandUse;
@@ -214,7 +218,7 @@
 								 VkFilter filter,
 								 MVKCommandUse commandUse) {
 
-	MVKCmdCopyImage::setContent(srcImage, srcImageLayout, dstImage, dstImageLayout, commandUse);
+	MVKCmdCopyImage::setContent(srcImage, srcImageLayout, dstImage, dstImageLayout, true, commandUse);
 
 	_mtlFilter = mvkMTLSamplerMinMagFilterFromVkFilter(filter);
 
@@ -1056,7 +1060,11 @@
     }
 
 	// Validate
-	if ( !_image->getSupportsAllFormatFeatures(VK_FORMAT_FEATURE_COLOR_ATTACHMENT_BIT) ) {
+	if (_image->getImageType() == VK_IMAGE_TYPE_1D) {
+		setConfigurationResult(reportError(VK_ERROR_FEATURE_NOT_PRESENT, "vkCmdClearImage(): 1D images cannot be cleared on this device."));
+	}
+	if ((_isDepthStencilClear && !_image->getSupportsAllFormatFeatures(VK_FORMAT_FEATURE_DEPTH_STENCIL_ATTACHMENT_BIT)) ||
+		(!_isDepthStencilClear && !_image->getSupportsAllFormatFeatures(VK_FORMAT_FEATURE_COLOR_ATTACHMENT_BIT))) {
 		setConfigurationResult(reportError(VK_ERROR_FEATURE_NOT_PRESENT, "vkCmdClearImage(): Format %s cannot be cleared on this device.", mvkVkFormatName(_image->getVkFormat())));
 	}
 }
@@ -1144,43 +1152,62 @@
 #pragma mark -
 #pragma mark MVKCmdFillBuffer
 
-// Matches shader struct
-typedef struct {
-	uint32_t size;
-	uint32_t data;
-} MVKCmdFillBufferInfo;
-
 void MVKCmdFillBuffer::setContent(VkBuffer dstBuffer,
                                   VkDeviceSize dstOffset,
                                   VkDeviceSize size,
                                   uint32_t data) {
     _dstBuffer = (MVKBuffer*)dstBuffer;
     _dstOffset = dstOffset;
-    _size = size;
     _dataValue = data;
+
+	// Round up in case of VK_WHOLE_SIZE on a buffer size which is not aligned to 4 bytes.
+	VkDeviceSize byteCnt = (size == VK_WHOLE_SIZE) ? (_dstBuffer->getByteCount() - _dstOffset) : size;
+	VkDeviceSize wdCnt = (byteCnt + 3) >> 2;
+	if (mvkFits<uint32_t>(wdCnt)) {
+		_wordCount = (uint32_t)wdCnt;
+	} else {
+		setConfigurationResult(reportError(VK_ERROR_FEATURE_NOT_PRESENT, "vkCmdFillBuffer(): Buffer fill size must fit into a 32-bit unsigned integer. Fill size %llu is too large.", wdCnt));
+		_wordCount = std::numeric_limits<uint32_t>::max();
+	}
 }
 
 void MVKCmdFillBuffer::encode(MVKCommandEncoder* cmdEncoder) {
-    id<MTLBuffer> dstMTLBuff = _dstBuffer->getMTLBuffer();
-    VkDeviceSize dstMTLBuffOffset = _dstBuffer->getMTLBufferOffset();
-    VkDeviceSize byteCnt = (_size == VK_WHOLE_SIZE) ? (_dstBuffer->getByteCount() - _dstOffset) : _size;
+	if (_wordCount == 0) { return; }
 
-    // Round up in case of VK_WHOLE_SIZE on a buffer size which is not aligned to 4 bytes.
-    VkDeviceSize wordCnt = (byteCnt + 3) >> 2;
+	id<MTLBuffer> dstMTLBuff = _dstBuffer->getMTLBuffer();
+	NSUInteger dstMTLBuffOffset = _dstBuffer->getMTLBufferOffset() + _dstOffset;
 
-	MVKAssert(mvkFits<uint32_t>(wordCnt),
-			  "Buffer fill size must fit into a 32-bit unsigned integer.");
+	// Determine the number of full threadgroups we can dispatch to cover the buffer content efficiently.
+	// Some GPU's report different values for max threadgroup width between the pipeline state and device,
+	// so conservatively use the minimum of these two reported values.
+	id<MTLComputePipelineState> cps = getCommandEncodingPool()->getCmdFillBufferMTLComputePipelineState();
+	NSUInteger tgWidth = std::min(cps.maxTotalThreadsPerThreadgroup, getMTLDevice().maxThreadsPerThreadgroup.width);
+	NSUInteger tgCount = _wordCount / tgWidth;
 
-	MVKCmdFillBufferInfo fillInfo;
-	fillInfo.size = (uint32_t)wordCnt;
-	fillInfo.data = _dataValue;
-
-	id<MTLComputeCommandEncoder> mtlComputeEnc = cmdEncoder->getMTLComputeEncoder(kMVKCommandUseCopyBuffer);
+	id<MTLComputeCommandEncoder> mtlComputeEnc = cmdEncoder->getMTLComputeEncoder(kMVKCommandUseFillBuffer);
 	[mtlComputeEnc pushDebugGroup: @"vkCmdFillBuffer"];
-	[mtlComputeEnc setComputePipelineState: getCommandEncodingPool()->getCmdFillBufferMTLComputePipelineState()];
-	[mtlComputeEnc setBuffer: dstMTLBuff offset: dstMTLBuffOffset+_dstOffset atIndex: 0];
-	[mtlComputeEnc setBytes: &fillInfo length: sizeof(fillInfo) atIndex: 1];
-	[mtlComputeEnc dispatchThreadgroups: MTLSizeMake(1, 1, 1) threadsPerThreadgroup: MTLSizeMake(1, 1, 1)];
+	[mtlComputeEnc setComputePipelineState: cps];
+	[mtlComputeEnc setBytes: &_dataValue length: sizeof(_dataValue) atIndex: 1];
+	[mtlComputeEnc setBuffer: dstMTLBuff offset: dstMTLBuffOffset atIndex: 0];
+
+	// Run as many full threadgroups as will fit into the buffer content.
+	if (tgCount > 0) {
+		[mtlComputeEnc dispatchThreadgroups: MTLSizeMake(tgCount, 1, 1)
+					  threadsPerThreadgroup: MTLSizeMake(tgWidth, 1, 1)];
+	}
+
+	// If there is left-over buffer content after running full threadgroups, or if the buffer content
+	// fits within a single threadgroup, run a single partial threadgroup of the appropriate size.
+	uint32_t remainderWordCount = _wordCount % tgWidth;
+	if (remainderWordCount > 0) {
+		if (tgCount > 0) {		// If we've already written full threadgroups, skip ahead to unwritten content
+			dstMTLBuffOffset += tgCount * tgWidth * sizeof(_dataValue);
+			[mtlComputeEnc setBufferOffset: dstMTLBuffOffset atIndex: 0];
+		}
+		[mtlComputeEnc dispatchThreadgroups: MTLSizeMake(1, 1, 1)
+					  threadsPerThreadgroup: MTLSizeMake(remainderWordCount, 1, 1)];
+	}
+
 	[mtlComputeEnc popDebugGroup];
 }
 
diff --git a/MoltenVK/MoltenVK/Commands/MVKCommand.h b/MoltenVK/MoltenVK/Commands/MVKCommand.h
index ce32b91..4d71165 100644
--- a/MoltenVK/MoltenVK/Commands/MVKCommand.h
+++ b/MoltenVK/MoltenVK/Commands/MVKCommand.h
@@ -33,7 +33,7 @@
 #pragma mark MVKCommand
 
 /** Abstract class that represents a Vulkan command. */
-class MVKCommand : public MVKConfigurableObject {
+class MVKCommand : public MVKConfigurableObject, public MVKLinkableMixin<MVKCommand> {
 
 public:
 
@@ -50,7 +50,7 @@
 	virtual void encode(MVKCommandEncoder* cmdEncoder) = 0;
 
 	/** 
-     * Returns this object back to the pool that created it. This will reset the value of _next member.
+     * Returns this object back to the pool that created it.
      *
      * This method is not thread-safe. Vulkan Command Pools are externally synchronized. 
      * For a particular MVKCommandTypePool instance, all calls to pool->aquireObject(), 
@@ -78,13 +78,6 @@
     /** Returns the underlying Metal device. */
     id<MTLDevice> getMTLDevice();
 
-	/**
-	 * Instances of this class can participate in a linked list or pool. When so participating,
-	 * this is a reference to the next instance in the list or pool. This value should only be
-	 * managed and set by the list or pool.
-	 */
-	MVKCommand* _next = nullptr;
-
 protected:
     MVKCommandTypePool<MVKCommand>* _pool;
 	MVKCommandBuffer* _commandBuffer = nullptr;
diff --git a/MoltenVK/MoltenVK/Commands/MVKCommandBuffer.h b/MoltenVK/MoltenVK/Commands/MVKCommandBuffer.h
index 2a6289a..bbff428 100644
--- a/MoltenVK/MoltenVK/Commands/MVKCommandBuffer.h
+++ b/MoltenVK/MoltenVK/Commands/MVKCommandBuffer.h
@@ -23,8 +23,8 @@
 #include "MVKCommandEncoderState.h"
 #include "MVKMTLBufferAllocation.h"
 #include "MVKCmdPipeline.h"
+#include "MVKQueryPool.h"
 #include "MVKVector.h"
-#include <vector>
 #include <unordered_map>
 
 class MVKCommandPool;
@@ -50,8 +50,9 @@
 #pragma mark MVKCommandBuffer
 
 /** Represents a Vulkan command pool. */
-class MVKCommandBuffer : public MVKDispatchableVulkanAPIObject, public MVKDeviceTrackingMixin {
-
+class MVKCommandBuffer : public MVKDispatchableVulkanAPIObject,
+						 public MVKDeviceTrackingMixin,
+						 public MVKLinkableMixin<MVKCommandBuffer> {
 public:
 
 	/** Returns the Vulkan type of this object. */
@@ -96,13 +97,6 @@
      */
     id<MTLBuffer> _initialVisibilityResultMTLBuffer;
 
-	/**
-	 * Instances of this class can participate in a linked list or pool. When so participating,
-	 * this is a reference to the next instance in the list or pool. This value should only be
-	 * managed and set by the list or pool.
-	 */
-	MVKCommandBuffer* _next;
-
 
 #pragma mark Constituent render pass management
     /** Preps metadata for recording render pass */
@@ -246,7 +240,7 @@
 
 
 /*** Holds a collection of active queries for each query pool. */
-typedef std::unordered_map<MVKQueryPool*, std::vector<uint32_t>> MVKActivatedQueries;
+typedef std::unordered_map<MVKQueryPool*, MVKVectorInline<uint32_t, kMVKDefaultQueryCount>> MVKActivatedQueries;
 
 /** 
  * MVKCommandEncoder uses a visitor design pattern iterate the commands in a MVKCommandBuffer, 
@@ -289,6 +283,9 @@
     /** Binds a pipeline to a bind point. */
     void bindPipeline(VkPipelineBindPoint pipelineBindPoint, MVKPipeline* pipeline);
 
+	/** Encodes an operation to signal an event to a status. */
+	void signalEvent(MVKEvent* mvkEvent, bool status);
+
     /**
      * If a pipeline is currently bound, returns whether the current pipeline permits dynamic
      * setting of the specified state. If no pipeline is currently bound, returns true.
diff --git a/MoltenVK/MoltenVK/Commands/MVKCommandBuffer.mm b/MoltenVK/MoltenVK/Commands/MVKCommandBuffer.mm
index 40dfbd9..c8fbbdd 100644
--- a/MoltenVK/MoltenVK/Commands/MVKCommandBuffer.mm
+++ b/MoltenVK/MoltenVK/Commands/MVKCommandBuffer.mm
@@ -359,6 +359,11 @@
     }
 }
 
+void MVKCommandEncoder::signalEvent(MVKEvent* mvkEvent, bool status) {
+	endCurrentMetalEncoding();
+	mvkEvent->encodeSignal(_mtlCmdBuffer, status);
+}
+
 bool MVKCommandEncoder::supportsDynamicState(VkDynamicState state) {
     MVKGraphicsPipeline* gpl = (MVKGraphicsPipeline*)_graphicsPipelineState.getPipeline();
     return !gpl || gpl->supportsDynamicState(state);
@@ -398,7 +403,7 @@
 // Clears the render area of the framebuffer attachments.
 void MVKCommandEncoder::clearRenderArea() {
 
-	vector<VkClearAttachment> clearAtts;
+	MVKVectorInline<VkClearAttachment, kMVKDefaultAttachmentCount> clearAtts;
 	getSubpass()->populateClearAttachments(clearAtts, _clearValues);
 
 	uint32_t clearAttCnt = (uint32_t)clearAtts.size();
diff --git a/MoltenVK/MoltenVK/Commands/MVKCommandEncoderState.h b/MoltenVK/MoltenVK/Commands/MVKCommandEncoderState.h
index 901f457..7fd30e8 100644
--- a/MoltenVK/MoltenVK/Commands/MVKCommandEncoderState.h
+++ b/MoltenVK/MoltenVK/Commands/MVKCommandEncoderState.h
@@ -62,7 +62,7 @@
      * will be encoded to Metal, otherwise it is marked as clean, so the contents will NOT
      * be encoded. Default state can be left unencoded on a new Metal encoder.
      */
-    void beginMetalRenderPass() { if (_isModified) { markDirty(); } }
+	virtual void beginMetalRenderPass() { if (_isModified) { markDirty(); } }
 
     /**
      * If the content of this instance is dirty, marks this instance as no longer dirty
@@ -237,6 +237,8 @@
      */
     void setStencilWriteMask(VkStencilFaceFlags faceMask, uint32_t stencilWriteMask);
 
+	void beginMetalRenderPass() override;
+
     /** Constructs this instance for the specified command encoder. */
     MVKDepthStencilCommandEncoderState(MVKCommandEncoder* cmdEncoder)
         : MVKCommandEncoderState(cmdEncoder) {}
@@ -248,7 +250,9 @@
                          const VkStencilOpState& vkStencil,
                          bool enabled);
 
-    MVKMTLDepthStencilDescriptorData _depthStencilData;
+    MVKMTLDepthStencilDescriptorData _depthStencilData = kMVKMTLDepthStencilDescriptorDataDefault;
+	bool _hasDepthAttachment = false;
+	bool _hasStencilAttachment = false;
 };
 
 
@@ -519,11 +523,11 @@
     void resetImpl() override;
     void markDirty() override;
 
-    MVKVectorDefault<MVKMTLBufferBinding> _bufferBindings;
-    MVKVectorDefault<MVKMTLTextureBinding> _textureBindings;
-    MVKVectorDefault<MVKMTLSamplerStateBinding> _samplerStateBindings;
-    MVKVectorDefault<uint32_t> _swizzleConstants;
-    MVKVectorDefault<uint32_t> _bufferSizes;
+    MVKVectorInline<MVKMTLBufferBinding, 4> _bufferBindings;
+    MVKVectorInline<MVKMTLTextureBinding, 4> _textureBindings;
+    MVKVectorInline<MVKMTLSamplerStateBinding, 4> _samplerStateBindings;
+    MVKVectorInline<uint32_t, 4> _swizzleConstants;
+    MVKVectorInline<uint32_t, 4> _bufferSizes;
     MVKMTLBufferBinding _swizzleBufferBinding;
     MVKMTLBufferBinding _bufferSizeBufferBinding;
 
diff --git a/MoltenVK/MoltenVK/Commands/MVKCommandEncoderState.mm b/MoltenVK/MoltenVK/Commands/MVKCommandEncoderState.mm
index b6aa2e0..42ff1a1 100644
--- a/MoltenVK/MoltenVK/Commands/MVKCommandEncoderState.mm
+++ b/MoltenVK/MoltenVK/Commands/MVKCommandEncoderState.mm
@@ -312,26 +312,43 @@
     markDirty();
 }
 
+void MVKDepthStencilCommandEncoderState::beginMetalRenderPass() {
+	MVKRenderSubpass* mvkSubpass = _cmdEncoder->getSubpass();
+	MTLPixelFormat mtlDSFormat = _cmdEncoder->getMTLPixelFormatFromVkFormat(mvkSubpass->getDepthStencilFormat());
+
+	bool prevHasDepthAttachment = _hasDepthAttachment;
+	_hasDepthAttachment = mvkMTLPixelFormatIsDepthFormat(mtlDSFormat);
+	if (_hasDepthAttachment != prevHasDepthAttachment) { markDirty(); }
+
+	bool prevHasStencilAttachment = _hasStencilAttachment;
+	_hasStencilAttachment = mvkMTLPixelFormatIsStencilFormat(mtlDSFormat);
+	if (_hasStencilAttachment != prevHasStencilAttachment) { markDirty(); }
+}
+
 void MVKDepthStencilCommandEncoderState::encodeImpl(uint32_t stage) {
-    if (stage != kMVKGraphicsStageRasterization && stage != kMVKGraphicsStageVertex) { return; }
-    MVKRenderSubpass *subpass = _cmdEncoder->getSubpass();
-    id<MTLDepthStencilState> mtlDSS = nil;
-    if (stage != kMVKGraphicsStageVertex && subpass->getDepthStencilFormat() != VK_FORMAT_UNDEFINED) {
-        mtlDSS = _cmdEncoder->getCommandEncodingPool()->getMTLDepthStencilState(_depthStencilData);
-    } else {
-        // If there is no depth attachment but the depth/stencil state contains a non-always depth
-        // test, Metal Validation will give the following error:
-        // "validateDepthStencilState:3657: failed assertion `MTLDepthStencilDescriptor sets
-        //  depth test but MTLRenderPassDescriptor has a nil depthAttachment texture'"
-        // Check the subpass to see if there is a depth/stencil attachment, and if not use
-        // a depth/stencil state with depth test always, depth write disabled, and no stencil state.
-        mtlDSS = _cmdEncoder->getCommandEncodingPool()->getMTLDepthStencilState(false, false);
-    }
-    [_cmdEncoder->_mtlRenderEncoder setDepthStencilState: mtlDSS];
+	auto cmdEncPool = _cmdEncoder->getCommandEncodingPool();
+	switch (stage) {
+		case kMVKGraphicsStageRasterization: {
+			// If renderpass does not have a depth or a stencil attachment, disable corresponding test
+			MVKMTLDepthStencilDescriptorData adjustedDSData = _depthStencilData;
+			adjustedDSData.disable(!_hasDepthAttachment, !_hasStencilAttachment);
+			[_cmdEncoder->_mtlRenderEncoder setDepthStencilState: cmdEncPool->getMTLDepthStencilState(adjustedDSData)];
+			break;
+		}
+		case kMVKGraphicsStageVertex: {
+			// Vertex stage of tessellation pipeline requires depth/stencil testing be disabled
+			[_cmdEncoder->_mtlRenderEncoder setDepthStencilState: cmdEncPool->getMTLDepthStencilState(false, false)];
+			break;
+		}
+		default:		// Do nothing on other stages
+			break;
+	}
 }
 
 void MVKDepthStencilCommandEncoderState::resetImpl() {
     _depthStencilData = kMVKMTLDepthStencilDescriptorDataDefault;
+	_hasDepthAttachment = false;
+	_hasStencilAttachment = false;
 }
 
 
diff --git a/MoltenVK/MoltenVK/Commands/MVKCommandPipelineStateFactoryShaderSource.h b/MoltenVK/MoltenVK/Commands/MVKCommandPipelineStateFactoryShaderSource.h
index 6726212..4e5065d 100644
--- a/MoltenVK/MoltenVK/Commands/MVKCommandPipelineStateFactoryShaderSource.h
+++ b/MoltenVK/MoltenVK/Commands/MVKCommandPipelineStateFactoryShaderSource.h
@@ -93,16 +93,10 @@
     }                                                                                                           \n\
 };                                                                                                              \n\
                                                                                                                 \n\
-typedef struct {                                                                                                \n\
-    uint32_t size;                                                                                              \n\
-    uint32_t data;                                                                                              \n\
-} FillInfo;                                                                                                     \n\
-                                                                                                                \n\
 kernel void cmdFillBuffer(device uint32_t* dst [[ buffer(0) ]],                                                 \n\
-                          constant FillInfo& info [[ buffer(1) ]]) {                                            \n\
-    for (uint32_t i = 0; i < info.size; i++) {                                                                  \n\
-        dst[i] = info.data;                                                                                     \n\
-    }                                                                                                           \n\
+                          constant uint32_t& fillValue [[ buffer(1) ]],                                         \n\
+                          uint pos [[thread_position_in_grid]]) {                                               \n\
+    dst[pos] = fillValue;                                                                                       \n\
 };                                                                                                              \n\
                                                                                                                 \n\
 typedef struct {                                                                                                \n\
diff --git a/MoltenVK/MoltenVK/Commands/MVKCommandPool.h b/MoltenVK/MoltenVK/Commands/MVKCommandPool.h
index 45cc0a6..e65989e 100644
--- a/MoltenVK/MoltenVK/Commands/MVKCommandPool.h
+++ b/MoltenVK/MoltenVK/Commands/MVKCommandPool.h
@@ -149,6 +149,10 @@
 
 	MVKCommandTypePool<MVKCmdDebugMarkerInsert> _cmdDebugMarkerInsertPool;
 
+	MVKCommandTypePool<MVKCmdSetResetEvent> _cmdSetResetEventPool;
+
+	MVKCommandTypePool<MVKCmdWaitEvents> _cmdWaitEventsPool;
+
 
 #pragma mark Command resources
 
diff --git a/MoltenVK/MoltenVK/Commands/MVKCommandPool.mm b/MoltenVK/MoltenVK/Commands/MVKCommandPool.mm
index 1c5d51e..6c95e70 100644
--- a/MoltenVK/MoltenVK/Commands/MVKCommandPool.mm
+++ b/MoltenVK/MoltenVK/Commands/MVKCommandPool.mm
@@ -123,6 +123,11 @@
 	_cmdDispatchIndirectPool.clear();
 	_cmdPushDescriptorSetPool.clear();
 	_cmdPushSetWithTemplatePool.clear();
+	_cmdDebugMarkerBeginPool.clear();
+	_cmdDebugMarkerEndPool.clear();
+	_cmdDebugMarkerInsertPool.clear();
+	_cmdSetResetEventPool.clear();
+	_cmdWaitEventsPool.clear();
 }
 
 
@@ -131,9 +136,9 @@
 MVKCommandPool::MVKCommandPool(MVKDevice* device,
 							   const VkCommandPoolCreateInfo* pCreateInfo) :
 	MVKVulkanAPIDeviceObject(device),
+	_queueFamilyIndex(pCreateInfo->queueFamilyIndex),
 	_commandBufferPool(device),
 	_commandEncodingPool(this),
-	_queueFamilyIndex(pCreateInfo->queueFamilyIndex),
 	_cmdPipelineBarrierPool(this),
 	_cmdBindPipelinePool(this),
 	_cmdBeginRenderPassPool(this),
@@ -143,13 +148,13 @@
 	_cmdBindDescriptorSetsPool(this),
 	_cmdSetViewportPool(this),
 	_cmdSetScissorPool(this),
-    _cmdSetLineWidthPool(this),
-    _cmdSetDepthBiasPool(this),
-    _cmdSetBlendConstantsPool(this),
-    _cmdSetDepthBoundsPool(this),
-    _cmdSetStencilCompareMaskPool(this),
-    _cmdSetStencilWriteMaskPool(this),
-    _cmdSetStencilReferencePool(this),
+	_cmdSetLineWidthPool(this),
+	_cmdSetDepthBiasPool(this),
+	_cmdSetBlendConstantsPool(this),
+	_cmdSetDepthBoundsPool(this),
+	_cmdSetStencilCompareMaskPool(this),
+	_cmdSetStencilWriteMaskPool(this),
+	_cmdSetStencilReferencePool(this),
 	_cmdBindVertexBuffersPool(this),
 	_cmdBindIndexBufferPool(this),
 	_cmdDrawPool(this),
@@ -158,26 +163,29 @@
 	_cmdDrawIndexedIndirectPool(this),
 	_cmdCopyImagePool(this),
 	_cmdBlitImagePool(this),
-    _cmdResolveImagePool(this),
-    _cmdFillBufferPool(this),
-    _cmdUpdateBufferPool(this),
+	_cmdResolveImagePool(this),
+	_cmdFillBufferPool(this),
+	_cmdUpdateBufferPool(this),
 	_cmdCopyBufferPool(this),
-    _cmdBufferImageCopyPool(this),
+	_cmdBufferImageCopyPool(this),
 	_cmdClearAttachmentsPool(this),
 	_cmdClearImagePool(this),
-    _cmdBeginQueryPool(this),
-    _cmdEndQueryPool(this),
+	_cmdBeginQueryPool(this),
+	_cmdEndQueryPool(this),
 	_cmdWriteTimestampPool(this),
-    _cmdResetQueryPoolPool(this),
-    _cmdCopyQueryPoolResultsPool(this),
+	_cmdResetQueryPoolPool(this),
+	_cmdCopyQueryPoolResultsPool(this),
 	_cmdPushConstantsPool(this),
-    _cmdDispatchPool(this),
-    _cmdDispatchIndirectPool(this),
-    _cmdPushDescriptorSetPool(this),
-    _cmdPushSetWithTemplatePool(this),
+	_cmdDispatchPool(this),
+	_cmdDispatchIndirectPool(this),
+	_cmdPushDescriptorSetPool(this),
+	_cmdPushSetWithTemplatePool(this),
 	_cmdDebugMarkerBeginPool(this),
 	_cmdDebugMarkerEndPool(this),
-	_cmdDebugMarkerInsertPool(this)
+	_cmdDebugMarkerInsertPool(this),
+	_cmdSetResetEventPool(this),
+	_cmdWaitEventsPool(this)
+// when extending be sure to add to trim() as well
 {}
 
 MVKCommandPool::~MVKCommandPool() {
diff --git a/MoltenVK/MoltenVK/Commands/MVKCommandResourceFactory.h b/MoltenVK/MoltenVK/Commands/MVKCommandResourceFactory.h
index a14e2de..46e0fb5 100644
--- a/MoltenVK/MoltenVK/Commands/MVKCommandResourceFactory.h
+++ b/MoltenVK/MoltenVK/Commands/MVKCommandResourceFactory.h
@@ -207,18 +207,24 @@
 		return mvkHash((uint64_t*)this, sizeof(*this) / sizeof(uint64_t));
 	}
 
-    MVKMTLDepthStencilDescriptorData_t() {
+	/** Disable depth and/or stencil testing. */
+	void disable(bool disableDepth, bool disableStencil) {
+		if (disableDepth) {
+			depthCompareFunction = MTLCompareFunctionAlways;
+			depthWriteEnabled = false;
+		}
+		if (disableStencil) {
+			frontFaceStencilData = kMVKMTLStencilDescriptorDataDefault;
+			backFaceStencilData = kMVKMTLStencilDescriptorDataDefault;
+		}
+	}
 
-        // Start with all zeros to ensure memory comparisons will work,
-        // even if the structure contains alignment gaps.
-        memset(this, 0, sizeof(*this));
-
-        depthCompareFunction = MTLCompareFunctionAlways;
-        depthWriteEnabled = false;
-
-        frontFaceStencilData = kMVKMTLStencilDescriptorDataDefault;
-        backFaceStencilData = kMVKMTLStencilDescriptorDataDefault;
-    }
+	MVKMTLDepthStencilDescriptorData_t() {
+		// Start with all zeros to ensure memory comparisons will work,
+		// even if the structure contains alignment gaps.
+		memset(this, 0, sizeof(*this));
+		disable(true, true);
+	}
 
 } __attribute__((aligned(sizeof(uint64_t)))) MVKMTLDepthStencilDescriptorData;
 
@@ -345,10 +351,7 @@
 	id<MTLRenderPipelineState> newCmdClearMTLRenderPipelineState(MVKRPSKeyClearAtt& attKey,
 																 MVKVulkanAPIDeviceObject* owner);
 
-	/**
-	 * Returns a new MTLDepthStencilState dedicated to rendering to several 
-	 * attachments to support clearing regions of those attachments.
-	 */
+	/** Returns a new MTLDepthStencilState that always writes to the depth and/or stencil attachments. */
 	id<MTLDepthStencilState> newMTLDepthStencilState(bool useDepth, bool useStencil);
 
     /**
diff --git a/MoltenVK/MoltenVK/Commands/MVKMTLBufferAllocation.h b/MoltenVK/MoltenVK/Commands/MVKMTLBufferAllocation.h
index 822dac8..c5ff171 100644
--- a/MoltenVK/MoltenVK/Commands/MVKMTLBufferAllocation.h
+++ b/MoltenVK/MoltenVK/Commands/MVKMTLBufferAllocation.h
@@ -22,7 +22,7 @@
 #include "MVKFoundation.h"
 #include "MVKObjectPool.h"
 #include "MVKDevice.h"
-#include <vector>
+#include "MVKVector.h"
 
 class MVKMTLBufferAllocationPool;
 
@@ -31,7 +31,7 @@
 #pragma mark MVKMTLBufferAllocation
 
 /** Defines a contiguous region of bytes within a MTLBuffer. */
-class MVKMTLBufferAllocation : public MVKBaseObject {
+class MVKMTLBufferAllocation : public MVKBaseObject, public MVKLinkableMixin<MVKMTLBufferAllocation> {
 
 public:
     id<MTLBuffer> _mtlBuffer;
@@ -50,7 +50,7 @@
     /** Returns the pool whence this object was created. */
     MVKMTLBufferAllocationPool* getPool() const { return _pool; }
 
-	/** Returns this object back to the pool that created it. This will reset the value of _next member. */
+	/** Returns this object back to the pool that created it. */
     void returnToPool();
 
 	/** Constructs this instance with the specified pool as its origin. */
@@ -59,13 +59,6 @@
                            NSUInteger offset,
                            NSUInteger length) : _pool(pool), _mtlBuffer(mtlBuffer), _offset(offset), _length(length) {}
 
-    /**
-	 * Instances of this class can participate in a linked list or pool. When so participating,
-	 * this is a reference to the next instance in the list or pool. This value should only be
-	 * managed and set by the list or pool.
-	 */
-	MVKMTLBufferAllocation* _next = nullptr;
-
 protected:
 	MVKMTLBufferAllocationPool* _pool;
 
@@ -104,7 +97,7 @@
     NSUInteger _nextOffset;
     NSUInteger _allocationLength;
     NSUInteger _mtlBufferLength;
-    std::vector<id<MTLBuffer>> _mtlBuffers;
+	MVKVectorInline<id<MTLBuffer>, 64> _mtlBuffers;
     MVKDevice* _device;
 };
 
@@ -149,7 +142,7 @@
     ~MVKMTLBufferAllocator() override;
 
 protected:
-    std::vector<MVKMTLBufferAllocationPool*> _regionPools;
+	MVKVectorInline<MVKMTLBufferAllocationPool*, 32> _regionPools;
     NSUInteger _maxAllocationLength;
 	bool _makeThreadSafe;
 
diff --git a/MoltenVK/MoltenVK/GPUObjects/MVKBuffer.mm b/MoltenVK/MoltenVK/GPUObjects/MVKBuffer.mm
index bf1be23..b2d18e3 100644
--- a/MoltenVK/MoltenVK/GPUObjects/MVKBuffer.mm
+++ b/MoltenVK/MoltenVK/GPUObjects/MVKBuffer.mm
@@ -117,10 +117,8 @@
 #endif
 }
 
-/**
- * Returns whether the specified buffer memory barrier requires a sync between this
- * buffer and host memory for the purpose of the host reading texture memory.
- */
+// Returns whether the specified buffer memory barrier requires a sync between this
+// buffer and host memory for the purpose of the host reading texture memory.
 bool MVKBuffer::needsHostReadSync(VkPipelineStageFlags srcStageMask,
 								  VkPipelineStageFlags dstStageMask,
 								  VkBufferMemoryBarrier* pBufferMemoryBarrier) {
diff --git a/MoltenVK/MoltenVK/GPUObjects/MVKDescriptorSet.h b/MoltenVK/MoltenVK/GPUObjects/MVKDescriptorSet.h
index 6bd5ae8..9b80795 100644
--- a/MoltenVK/MoltenVK/GPUObjects/MVKDescriptorSet.h
+++ b/MoltenVK/MoltenVK/GPUObjects/MVKDescriptorSet.h
@@ -24,7 +24,6 @@
 #include <MoltenVKSPIRVToMSLConverter/SPIRVToMSLConverter.h>
 #include <unordered_set>
 #include <unordered_map>
-#include <vector>
 
 class MVKDescriptorPool;
 class MVKDescriptorBinding;
@@ -118,7 +117,7 @@
 
 	MVKDescriptorSetLayout* _layout;
 	VkDescriptorSetLayoutBinding _info;
-	std::vector<MVKSampler*> _immutableSamplers;
+	MVKVectorInline<MVKSampler*, 16> _immutableSamplers;
 	MVKShaderResourceBinding _mtlResourceIndexOffsets;
 	bool _applyToStage[kMVKShaderStageMax];
 };
@@ -272,13 +271,13 @@
 
 	MVKDescriptorSet* _pDescSet;
 	MVKDescriptorSetLayoutBinding* _pBindingLayout;
-	std::vector<VkDescriptorImageInfo> _imageBindings;
-	std::vector<VkDescriptorBufferInfo> _bufferBindings;
-	std::vector<VkBufferView> _texelBufferBindings;
-	std::vector<id<MTLBuffer>> _mtlBuffers;
-	std::vector<NSUInteger> _mtlBufferOffsets;
-	std::vector<id<MTLTexture>> _mtlTextures;
-	std::vector<id<MTLSamplerState>> _mtlSamplers;
+	MVKVectorInline<VkDescriptorImageInfo, 1> _imageBindings;
+	MVKVectorInline<VkDescriptorBufferInfo, 1> _bufferBindings;
+	MVKVectorInline<VkBufferView, 1> _texelBufferBindings;
+	MVKVectorInline<id<MTLBuffer>, 1> _mtlBuffers;
+	MVKVectorInline<NSUInteger, 1> _mtlBufferOffsets;
+	MVKVectorInline<id<MTLTexture>, 1> _mtlTextures;
+	MVKVectorInline<id<MTLSamplerState>, 1> _mtlSamplers;
 	bool _hasDynamicSamplers;
 };
 
@@ -287,7 +286,7 @@
 #pragma mark MVKDescriptorSet
 
 /** Represents a Vulkan descriptor set. */
-class MVKDescriptorSet : public MVKVulkanAPIDeviceObject {
+class MVKDescriptorSet : public MVKVulkanAPIDeviceObject, public MVKLinkableMixin<MVKDescriptorSet> {
 
 public:
 
@@ -313,13 +312,6 @@
 							VkDescriptorBufferInfo* pBufferInfo,
 							VkBufferView* pTexelBufferView);
 
-	/**
-	 * Instances of this class can participate in a linked list or pool. When so participating,
-	 * this is a reference to the next instance in the list or pool. This value should only be
-	 * managed and set by the list or pool.
-	 */
-	MVKDescriptorSet* _next;
-
 	MVKDescriptorSet(MVKDevice* device) : MVKVulkanAPIDeviceObject(device) {}
 
 protected:
@@ -331,7 +323,7 @@
     MVKDescriptorBinding* getBinding(uint32_t binding);
 
 	MVKDescriptorSetLayout* _pLayout = nullptr;
-	std::vector<MVKDescriptorBinding> _bindings;
+	MVKVectorInline<MVKDescriptorBinding, 8> _bindings;
 };
 
 
@@ -415,7 +407,7 @@
 	void propogateDebugName() override {}
 
 	VkDescriptorUpdateTemplateTypeKHR _type;
-	std::vector<VkDescriptorUpdateTemplateEntryKHR> _entries;
+	MVKVectorInline<VkDescriptorUpdateTemplateEntryKHR, 4> _entries;
 };
 
 #pragma mark -
diff --git a/MoltenVK/MoltenVK/GPUObjects/MVKDevice.h b/MoltenVK/MoltenVK/GPUObjects/MVKDevice.h
index ce9e2f1..800d5c1 100644
--- a/MoltenVK/MoltenVK/GPUObjects/MVKDevice.h
+++ b/MoltenVK/MoltenVK/GPUObjects/MVKDevice.h
@@ -22,9 +22,9 @@
 #include "MVKVulkanAPIObject.h"
 #include "MVKLayers.h"
 #include "MVKObjectPool.h"
+#include "MVKVector.h"
 #include "mvk_datatypes.hpp"
 #include "vk_mvk_moltenvk.h"
-#include <vector>
 #include <string>
 #include <mutex>
 
@@ -47,6 +47,7 @@
 class MVKDeviceMemory;
 class MVKFence;
 class MVKSemaphore;
+class MVKEvent;
 class MVKQueryPool;
 class MVKShaderModule;
 class MVKPipelineCache;
@@ -67,6 +68,10 @@
 const static uint32_t kMVKVertexContentBufferIndex = 0;
 
 // Parameters to define the sizing of inline collections
+const static uint32_t kMVKQueueFamilyCount = 4;
+const static uint32_t kMVKQueueCountPerQueueFamily = 1;		// Must be 1. See comments in MVKPhysicalDevice::getQueueFamilies()
+const static uint32_t kMVKMinSwapchainImageCount = 2;
+const static uint32_t kMVKMaxSwapchainImageCount = 3;
 const static uint32_t kMVKCachedViewportScissorCount = 16;
 const static uint32_t kMVKCachedColorAttachmentCount = 8;
 
@@ -337,8 +342,7 @@
 	uint64_t getRecommendedMaxWorkingSetSize();
 	uint64_t getCurrentAllocatedSize();
 	void initExtensions();
-	MVKExtensionList* getSupportedExtensions(const char* pLayerName = nullptr);
-	std::vector<MVKQueueFamily*>& getQueueFamilies();
+	MVKVector<MVKQueueFamily*>& getQueueFamilies();
 	void initPipelineCacheUUID();
 	uint32_t getHighestMTLFeatureSet();
 	uint64_t getSpirvCrossRevision();
@@ -347,13 +351,13 @@
 
 	id<MTLDevice> _mtlDevice;
 	MVKInstance* _mvkInstance;
-	MVKExtensionList _supportedExtensions;
+	const MVKExtensionList _supportedExtensions;
 	VkPhysicalDeviceFeatures _features;
 	MVKPhysicalDeviceMetalFeatures _metalFeatures;
 	VkPhysicalDeviceProperties _properties;
 	VkPhysicalDeviceTexelBufferAlignmentPropertiesEXT _texelBuffAlignProperties;
 	VkPhysicalDeviceMemoryProperties _memoryProperties;
-	std::vector<MVKQueueFamily*> _queueFamilies;
+	MVKVectorInline<MVKQueueFamily*, kMVKQueueFamilyCount> _queueFamilies;
 	uint32_t _allMemoryTypes;
 	uint32_t _hostVisibleMemoryTypes;
 	uint32_t _hostCoherentMemoryTypes;
@@ -365,6 +369,11 @@
 #pragma mark -
 #pragma mark MVKDevice
 
+typedef struct {
+	id<MTLBlitCommandEncoder> mtlBlitEncoder = nil;
+	id<MTLCommandBuffer> mtlCmdBuffer = nil;
+} MVKMTLBlitEncoder;
+
 /** Represents a Vulkan logical GPU device, associated with a physical device. */
 class MVKDevice : public MVKDispatchableVulkanAPIObject {
 
@@ -392,7 +401,7 @@
 	PFN_vkVoidFunction getProcAddr(const char* pName);
 
 	/** Retrieves a queue at the specified index within the specified family. */
-	MVKQueue* getQueue(uint32_t queueFamilyIndex, uint32_t queueIndex);
+	MVKQueue* getQueue(uint32_t queueFamilyIndex = 0, uint32_t queueIndex = 0);
 
 	/** Block the current thread until all queues in this device are idle. */
 	VkResult waitIdle();
@@ -407,6 +416,9 @@
 	/** Populates the device group surface presentation modes. */
 	VkResult getDeviceGroupSurfacePresentModes(MVKSurface* surface, VkDeviceGroupPresentModeFlagsKHR* pModes);
 
+	/** Populates the device group peer memory features. */
+	void getPeerMemoryFeatures(uint32_t heapIndex, uint32_t localDevice, uint32_t remoteDevice, VkPeerMemoryFeatureFlags* pPeerMemoryFeatures);
+
 
 #pragma mark Object lifecycle
 
@@ -451,6 +463,11 @@
 	void destroySemaphore(MVKSemaphore* mvkSem4,
 						  const VkAllocationCallbacks* pAllocator);
 
+	MVKEvent* createEvent(const VkEventCreateInfo* pCreateInfo,
+						  const VkAllocationCallbacks* pAllocator);
+	void destroyEvent(MVKEvent* mvkEvent,
+					  const VkAllocationCallbacks* pAllocator);
+
 	MVKQueryPool* createQueryPool(const VkQueryPoolCreateInfo* pCreateInfo,
 								  const VkAllocationCallbacks* pAllocator);
 	void destroyQueryPool(MVKQueryPool* mvkQP,
@@ -525,6 +542,9 @@
 	void freeMemory(MVKDeviceMemory* mvkDevMem,
 					const VkAllocationCallbacks* pAllocator);
 
+
+#pragma mark Operations
+
 	/** Applies the specified global memory barrier to all resource issued by this device. */
 	void applyMemoryBarrier(VkPipelineStageFlags srcStageMask,
 							VkPipelineStageFlags dstStageMask,
@@ -562,6 +582,9 @@
     /** Populates the specified statistics structure from the current activity performance statistics. */
     void getPerformanceStatistics(MVKPerformanceStatistics* pPerf);
 
+	/** Invalidates the memory regions. */
+	VkResult invalidateMappedMemoryRanges(uint32_t memRangeCount, const VkMappedMemoryRange* pMemRanges);
+
 
 #pragma mark Metal
 
@@ -625,6 +648,7 @@
 	const VkPhysicalDeviceFloat16Int8FeaturesKHR _enabledF16I8Features;
 	const VkPhysicalDeviceUniformBufferStandardLayoutFeaturesKHR _enabledUBOLayoutFeatures;
 	const VkPhysicalDeviceVariablePointerFeatures _enabledVarPtrFeatures;
+	const VkPhysicalDeviceFragmentShaderInterlockFeaturesEXT _enabledInterlockFeatures;
 	const VkPhysicalDeviceHostQueryResetFeaturesEXT _enabledHostQryResetFeatures;
 	const VkPhysicalDeviceScalarBlockLayoutFeaturesEXT _enabledScalarLayoutFeatures;
 	const VkPhysicalDeviceTexelBufferAlignmentFeaturesEXT _enabledTexelBuffAlignFeatures;
@@ -646,6 +670,16 @@
     /** Performance statistics. */
     MVKPerformanceStatistics _performanceStatistics;
 
+	// Indicates whether semaphores should use a MTLFence if available.
+	// Set by the MVK_ALLOW_METAL_FENCES environment variable if MTLFences are available.
+	// This should be a temporary fix after some repair to semaphore handling.
+	bool _useMTLFenceForSemaphores;
+
+	// Indicates whether semaphores should use a MTLEvent if available.
+	// Set by the MVK_ALLOW_METAL_EVENTS environment variable if MTLEvents are available.
+	// This should be a temporary fix after some repair to semaphore handling.
+	bool _useMTLEventForSemaphores;
+
 
 #pragma mark Construction
 
@@ -687,8 +721,8 @@
 	MVKPhysicalDevice* _physicalDevice;
     MVKCommandResourceFactory* _commandResourceFactory;
 	MTLCompileOptions* _mtlCompileOptions;
-	std::vector<std::vector<MVKQueue*>> _queuesByQueueFamilyIndex;
-	std::vector<MVKResource*> _resources;
+	MVKVectorInline<MVKVectorInline<MVKQueue*, kMVKQueueCountPerQueueFamily>, kMVKQueueFamilyCount> _queuesByQueueFamilyIndex;
+	MVKVectorInline<MVKResource*, 256> _resources;
 	std::mutex _rezLock;
     std::mutex _perfLock;
     id<MTLBuffer> _globalVisibilityResultMTLBuffer;
diff --git a/MoltenVK/MoltenVK/GPUObjects/MVKDevice.mm b/MoltenVK/MoltenVK/GPUObjects/MVKDevice.mm
index 331b01c..fe98677 100644
--- a/MoltenVK/MoltenVK/GPUObjects/MVKDevice.mm
+++ b/MoltenVK/MoltenVK/GPUObjects/MVKDevice.mm
@@ -56,8 +56,7 @@
 #pragma mark MVKPhysicalDevice
 
 VkResult MVKPhysicalDevice::getExtensionProperties(const char* pLayerName, uint32_t* pCount, VkExtensionProperties* pProperties) {
-	MVKExtensionList* extensions = getSupportedExtensions(pLayerName);
-	return extensions->getProperties(pCount, pProperties);
+	return _supportedExtensions.getProperties(pCount, pProperties);
 }
 
 void MVKPhysicalDevice::getFeatures(VkPhysicalDeviceFeatures* features) {
@@ -102,6 +101,13 @@
                     varPtrFeatures->variablePointers = true;
                     break;
                 }
+                case VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_FRAGMENT_SHADER_INTERLOCK_FEATURES_EXT: {
+                    auto* interlockFeatures = (VkPhysicalDeviceFragmentShaderInterlockFeaturesEXT*)next;
+                    interlockFeatures->fragmentShaderSampleInterlock = _metalFeatures.rasterOrderGroups;
+                    interlockFeatures->fragmentShaderPixelInterlock = _metalFeatures.rasterOrderGroups;
+                    interlockFeatures->fragmentShaderShadingRateInterlock = false;    // Requires variable rate shading; not supported yet in Metal
+                    break;
+                }
                 case VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_HOST_QUERY_RESET_FEATURES_EXT: {
                     auto* hostQueryResetFeatures = (VkPhysicalDeviceHostQueryResetFeaturesEXT*)next;
                     hostQueryResetFeatures->hostQueryReset = true;
@@ -127,13 +133,13 @@
                     auto* portabilityFeatures = (VkPhysicalDevicePortabilitySubsetFeaturesEXTX*)next;
                     portabilityFeatures->triangleFans = false;
                     portabilityFeatures->separateStencilMaskRef = true;
-                    portabilityFeatures->events = false;
+					portabilityFeatures->events = true;
                     portabilityFeatures->standardImageViews = _mvkInstance->getMoltenVKConfiguration()->fullImageViewSwizzle || _metalFeatures.nativeTextureSwizzle;
                     portabilityFeatures->samplerMipLodBias = false;
                     break;
                 }
-                case VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADER_INTEGER_FUNCTIONS2_FEATURES_INTEL: {
-                    auto* shaderIntFuncsFeatures = (VkPhysicalDeviceShaderIntegerFunctions2INTEL*)next;
+                case VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADER_INTEGER_FUNCTIONS_2_FEATURES_INTEL: {
+                    auto* shaderIntFuncsFeatures = (VkPhysicalDeviceShaderIntegerFunctions2FeaturesINTEL*)next;
                     shaderIntFuncsFeatures->shaderIntegerFunctions2 = true;
                     break;
                 }
@@ -241,7 +247,8 @@
 	if ( !pImageFormatProperties ) { return VK_SUCCESS; }
 
 	// Metal does not support creating uncompressed views of compressed formats.
-	if (mvkIsAnyFlagEnabled(flags, VK_IMAGE_CREATE_BLOCK_TEXEL_VIEW_COMPATIBLE_BIT)) {
+	// Metal does not support split-instance images.
+	if (mvkIsAnyFlagEnabled(flags, VK_IMAGE_CREATE_BLOCK_TEXEL_VIEW_COMPATIBLE_BIT | VK_IMAGE_CREATE_SPLIT_INSTANCE_BIND_REGIONS_BIT)) {
 		return VK_ERROR_FORMAT_NOT_SUPPORTED;
 	}
 
@@ -456,8 +463,8 @@
 	pSurfaceCapabilities->supportedTransforms = (VK_SURFACE_TRANSFORM_IDENTITY_BIT_KHR);
 	pSurfaceCapabilities->currentTransform = VK_SURFACE_TRANSFORM_IDENTITY_BIT_KHR;
     pSurfaceCapabilities->supportedCompositeAlpha = (VK_COMPOSITE_ALPHA_OPAQUE_BIT_KHR |
-                                                     VK_COMPOSITE_ALPHA_PRE_MULTIPLIED_BIT_KHR |
-                                                     VK_COMPOSITE_ALPHA_POST_MULTIPLIED_BIT_KHR);
+                                                     VK_COMPOSITE_ALPHA_POST_MULTIPLIED_BIT_KHR |
+                                                     VK_COMPOSITE_ALPHA_INHERIT_BIT_KHR);
 	pSurfaceCapabilities->supportedUsageFlags = (VK_IMAGE_USAGE_COLOR_ATTACHMENT_BIT |
                                                  VK_IMAGE_USAGE_STORAGE_BIT |
                                                  VK_IMAGE_USAGE_TRANSFER_SRC_BIT |
@@ -635,16 +642,19 @@
 // Metal does not distinguish functionality between queues, which would normally lead us
 // to create only only one general-purpose queue family. However, Vulkan associates command
 // buffers with a queue family, whereas Metal associates command buffers with a Metal queue.
-// In order to allow a Metal command buffer to be prefilled before is is formally submitted to
+// In order to allow a Metal command buffer to be prefilled before it is formally submitted to
 // a Vulkan queue, we need to enforce that each Vulkan queue family can have only one Metal queue.
 // In order to provide parallel queue operations, we therefore provide multiple queue families.
-vector<MVKQueueFamily*>& MVKPhysicalDevice::getQueueFamilies() {
+// In addition, Metal queues are always general purpose, so the default behaviour is for all
+// queue families to support graphics + compute + transfer, unless the app indicates it
+// requires queue family specialization.
+MVKVector<MVKQueueFamily*>& MVKPhysicalDevice::getQueueFamilies() {
 	if (_queueFamilies.empty()) {
 		VkQueueFamilyProperties qfProps;
 		bool specialize = _mvkInstance->getMoltenVKConfiguration()->specializedQueueFamilies;
 		uint32_t qfIdx = 0;
 
-		qfProps.queueCount = 1;		// Each queue family must have a single Metal queue (see above)
+		qfProps.queueCount = kMVKQueueCountPerQueueFamily;
 		qfProps.timestampValidBits = 64;
 		qfProps.minImageTransferGranularity = { 1, 1, 1};
 
@@ -663,6 +673,8 @@
 		// Dedicated transfer queue family...or another general-purpose queue family.
 		if (specialize) { qfProps.queueFlags = VK_QUEUE_TRANSFER_BIT; }
 		_queueFamilies.push_back(new MVKQueueFamily(this, qfIdx++, &qfProps));
+
+		MVKAssert(kMVKQueueFamilyCount >= _queueFamilies.size(), "Adjust value of kMVKQueueFamilyCount.");
 	}
 	return _queueFamilies;
 }
@@ -670,7 +682,7 @@
 VkResult MVKPhysicalDevice::getQueueFamilyProperties(uint32_t* pCount,
 													 VkQueueFamilyProperties* pQueueFamilyProperties) {
 
-	vector<MVKQueueFamily*> qFams = getQueueFamilies();
+	auto& qFams = getQueueFamilies();
 	uint32_t qfCnt = uint32_t(qFams.size());
 
 	// If properties aren't actually being requested yet, simply update the returned count
@@ -778,8 +790,8 @@
 	_metalFeatures.ioSurfaces = MVK_SUPPORT_IOSURFACE_BOOL;
 
 	// Metal supports 2 or 3 concurrent CAMetalLayer drawables.
-	_metalFeatures.minSwapchainImageCount = 2;
-	_metalFeatures.maxSwapchainImageCount = 3;
+	_metalFeatures.minSwapchainImageCount = kMVKMinSwapchainImageCount;
+	_metalFeatures.maxSwapchainImageCount = kMVKMaxSwapchainImageCount;
 
 #if MVK_IOS
 	_metalFeatures.mslVersionEnum = MTLLanguageVersion1_0;
@@ -799,6 +811,7 @@
 		_metalFeatures.mslVersionEnum = MTLLanguageVersion1_2;
         _metalFeatures.shaderSpecialization = true;
         _metalFeatures.stencilViews = true;
+		_metalFeatures.fences = true;
     }
 
     if ( [_mtlDevice supportsFeatureSet: MTLFeatureSet_iOS_GPUFamily1_v4] ) {
@@ -807,7 +820,7 @@
 
 	if ( [_mtlDevice supportsFeatureSet: MTLFeatureSet_iOS_GPUFamily1_v5] ) {
 		_metalFeatures.mslVersionEnum = MTLLanguageVersion2_1;
-		MVK_SET_FROM_ENV_OR_BUILD_BOOL(_metalFeatures.events, MVK_ALLOW_METAL_EVENTS);
+		_metalFeatures.events = true;
 		_metalFeatures.textureBuffers = true;
 	}
 
@@ -873,12 +886,13 @@
 		_metalFeatures.arrayOfTextures = true;
 		_metalFeatures.arrayOfSamplers = true;
 		_metalFeatures.presentModeImmediate = true;
+		_metalFeatures.fences = true;
     }
 
     if ( [_mtlDevice supportsFeatureSet: MTLFeatureSet_macOS_GPUFamily1_v4] ) {
         _metalFeatures.mslVersionEnum = MTLLanguageVersion2_1;
         _metalFeatures.multisampleArrayTextures = true;
-		MVK_SET_FROM_ENV_OR_BUILD_BOOL(_metalFeatures.events, MVK_ALLOW_METAL_EVENTS);
+		_metalFeatures.events = true;
         _metalFeatures.memoryBarriers = true;
         _metalFeatures.textureBuffers = true;
     }
@@ -899,6 +913,11 @@
 
 #endif
 
+    // Note the selector name, which is different from the property name.
+    if ( [_mtlDevice respondsToSelector: @selector(areRasterOrderGroupsSupported)] ) {
+        _metalFeatures.rasterOrderGroups = _mtlDevice.rasterOrderGroupsSupported;
+    }
+
     if ( [_mtlDevice respondsToSelector: @selector(maxBufferLength)] ) {
         _metalFeatures.maxMTLBufferSize = _mtlDevice.maxBufferLength;
     }
@@ -1185,7 +1204,12 @@
 	} else {
 		_properties.limits.maxTexelBufferElements = _properties.limits.maxImageDimension2D * _properties.limits.maxImageDimension2D;
 	}
+#if MVK_MACOS
+	_properties.limits.maxUniformBufferRange = (64 * KIBI);
+#endif
+#if MVK_IOS
 	_properties.limits.maxUniformBufferRange = (uint32_t)_metalFeatures.maxMTLBufferSize;
+#endif
 	_properties.limits.maxStorageBufferRange = (uint32_t)_metalFeatures.maxMTLBufferSize;
 	_properties.limits.maxPushConstantsSize = (4 * KIBI);
 
@@ -1196,18 +1220,20 @@
     _properties.limits.nonCoherentAtomSize = _metalFeatures.mtlBufferAlignment;
 
     if ([_mtlDevice respondsToSelector: @selector(minimumLinearTextureAlignmentForPixelFormat:)]) {
-        // Figure out the greatest alignment required by all supported formats, and
-        // whether or not they only require alignment to a single texel. We'll use this
-        // information to fill out the VkPhysicalDeviceTexelBufferAlignmentPropertiesEXT
-        // struct.
+        // Figure out the greatest alignment required by all supported formats, and whether
+		// or not they only require alignment to a single texel. We'll use this information
+		// to fill out the VkPhysicalDeviceTexelBufferAlignmentPropertiesEXT struct.
         uint32_t maxStorage = 0, maxUniform = 0;
         bool singleTexelStorage = true, singleTexelUniform = true;
         mvkEnumerateSupportedFormats({0, 0, VK_FORMAT_FEATURE_UNIFORM_TEXEL_BUFFER_BIT | VK_FORMAT_FEATURE_STORAGE_TEXEL_BUFFER_BIT}, true, [&](VkFormat vk) {
+			MTLPixelFormat mtlFmt = mvkMTLPixelFormatFromVkFormat(vk);
+			if ( !mtlFmt ) { return false; }	// If format is invalid, avoid validation errors on MTLDevice format alignment calls
+
             NSUInteger alignment;
             if ([_mtlDevice respondsToSelector: @selector(minimumTextureBufferAlignmentForPixelFormat:)]) {
-                alignment = [_mtlDevice minimumTextureBufferAlignmentForPixelFormat: mvkMTLPixelFormatFromVkFormat(vk)];
+                alignment = [_mtlDevice minimumTextureBufferAlignmentForPixelFormat: mtlFmt];
             } else {
-                alignment = [_mtlDevice minimumLinearTextureAlignmentForPixelFormat: mvkMTLPixelFormatFromVkFormat(vk)];
+                alignment = [_mtlDevice minimumLinearTextureAlignmentForPixelFormat: mtlFmt];
             }
             VkFormatProperties props = mvkVkFormatProperties(vk, getFormatIsSupported(vk));
             // For uncompressed formats, this is the size of a single texel.
@@ -1868,20 +1894,20 @@
 }
 
 void MVKPhysicalDevice::initExtensions() {
+	MVKExtensionList* pWritableExtns = (MVKExtensionList*)&_supportedExtensions;
+	pWritableExtns->disableAllButEnabledDeviceExtensions();
+
+	if (!_metalFeatures.rasterOrderGroups) {
+		pWritableExtns->vk_EXT_fragment_shader_interlock.enabled = false;
+	}
 	if (!_metalFeatures.postDepthCoverage) {
-		_supportedExtensions.vk_EXT_post_depth_coverage.enabled = false;
+		pWritableExtns->vk_EXT_post_depth_coverage.enabled = false;
 	}
 	if (!_metalFeatures.stencilFeedback) {
-		_supportedExtensions.vk_EXT_shader_stencil_export.enabled = false;
+		pWritableExtns->vk_EXT_shader_stencil_export.enabled = false;
 	}
 }
 
-// Return all extensions supported by this physical device.
-MVKExtensionList* MVKPhysicalDevice::getSupportedExtensions(const char* pLayerName) {
-	if (!pLayerName || strcmp(pLayerName, "MoltenVK") == 0) { return &_supportedExtensions; }
-	return getInstance()->getLayerManager()->getLayerNamed(pLayerName)->getSupportedExtensions();
-}
-
 void MVKPhysicalDevice::logGPUInfo() {
 	string devTypeStr;
 	switch (_properties.deviceType) {
@@ -1924,10 +1950,10 @@
 	if (getSupportsGPUFamily(MTLGPUFamilyCommon2)) { logMsg += "\n\t\tGPU Family Common 2"; }
 	if (getSupportsGPUFamily(MTLGPUFamilyCommon1)) { logMsg += "\n\t\tGPU Family Common 1"; }
 
+#if MVK_IOS
 	if (getSupportsGPUFamily(MTLGPUFamilyiOSMac2)) { logMsg += "\n\t\tGPU Family iOS-Mac 2"; }
 	if (getSupportsGPUFamily(MTLGPUFamilyiOSMac1)) { logMsg += "\n\t\tGPU Family iOS-Mac 1"; }
 
-#if MVK_IOS
 	if ( [_mtlDevice supportsFeatureSet: MTLFeatureSet_iOS_GPUFamily5_v1] ) { logMsg += "\n\t\tiOS GPU Family 5 v1"; }
 
 	if ( [_mtlDevice supportsFeatureSet: MTLFeatureSet_iOS_GPUFamily4_v2] ) { logMsg += "\n\t\tiOS GPU Family 4 v2"; }
@@ -1952,6 +1978,9 @@
 #endif
 
 #if MVK_MACOS
+	if (getSupportsGPUFamily(MTLGPUFamilyMacCatalyst2)) { logMsg += "\n\t\tGPU Family Mac Catalyst 2"; }
+	if (getSupportsGPUFamily(MTLGPUFamilyMacCatalyst1)) { logMsg += "\n\t\tGPU Family Mac Catalyst 1"; }
+
 	if ( [_mtlDevice supportsFeatureSet: MTLFeatureSet_macOS_GPUFamily2_v1] ) { logMsg += "\n\t\tmacOS GPU Family 2 v1"; }
 
 	if ( [_mtlDevice supportsFeatureSet: MTLFeatureSet_macOS_GPUFamily1_v4] ) { logMsg += "\n\t\tmacOS GPU Family 1 v4"; }
@@ -2030,6 +2059,10 @@
 	return VK_SUCCESS;
 }
 
+void MVKDevice::getPeerMemoryFeatures(uint32_t heapIndex, uint32_t localDevice, uint32_t remoteDevice, VkPeerMemoryFeatureFlags* pPeerMemoryFeatures) {
+	*pPeerMemoryFeatures = VK_PEER_MEMORY_FEATURE_COPY_SRC_BIT | VK_PEER_MEMORY_FEATURE_COPY_DST_BIT;
+}
+
 
 #pragma mark Object lifecycle
 
@@ -2087,6 +2120,20 @@
 
 MVKImage* MVKDevice::createImage(const VkImageCreateInfo* pCreateInfo,
 								 const VkAllocationCallbacks* pAllocator) {
+	// If there's a VkImageSwapchainCreateInfoKHR, then we need to create a swapchain image.
+	const VkImageSwapchainCreateInfoKHR* swapchainInfo = nullptr;
+	for (const auto* next = (const VkBaseInStructure*)pCreateInfo->pNext; next; next = next->pNext) {
+		switch (next->sType) {
+		case VK_STRUCTURE_TYPE_IMAGE_SWAPCHAIN_CREATE_INFO_KHR:
+			swapchainInfo = (const VkImageSwapchainCreateInfoKHR*)next;
+			break;
+		default:
+			break;
+		}
+	}
+	if (swapchainInfo) {
+		return (MVKImage*)addResource(new MVKSwapchainImage(this, pCreateInfo, (MVKSwapchain*)swapchainInfo->swapchain));
+	}
 	return (MVKImage*)addResource(new MVKImage(this, pCreateInfo));
 }
 
@@ -2141,7 +2188,13 @@
 
 MVKSemaphore* MVKDevice::createSemaphore(const VkSemaphoreCreateInfo* pCreateInfo,
 										 const VkAllocationCallbacks* pAllocator) {
-	return new MVKSemaphore(this, pCreateInfo);
+	if (_useMTLFenceForSemaphores) {
+		return new MVKSemaphoreMTLFence(this, pCreateInfo);
+	} else if (_useMTLEventForSemaphores) {
+		return new MVKSemaphoreMTLEvent(this, pCreateInfo);
+	} else {
+		return new MVKSemaphoreEmulated(this, pCreateInfo);
+	}
 }
 
 void MVKDevice::destroySemaphore(MVKSemaphore* mvkSem4,
@@ -2149,6 +2202,19 @@
 	mvkSem4->destroy();
 }
 
+MVKEvent* MVKDevice::createEvent(const VkEventCreateInfo* pCreateInfo,
+								 const VkAllocationCallbacks* pAllocator) {
+	if (_pMetalFeatures->events) {
+		return new MVKEventNative(this, pCreateInfo);
+	} else {
+		return new MVKEventEmulated(this, pCreateInfo);
+	}
+}
+
+void MVKDevice::destroyEvent(MVKEvent* mvkEvent, const VkAllocationCallbacks* pAllocator) {
+	mvkEvent->destroy();
+}
+
 MVKQueryPool* MVKDevice::createQueryPool(const VkQueryPoolCreateInfo* pCreateInfo,
 										 const VkAllocationCallbacks* pAllocator) {
 	switch (pCreateInfo->queryType) {
@@ -2340,14 +2406,17 @@
 	mvkDevMem->destroy();
 }
 
-/** Adds the specified resource for tracking, and returns the added resource. */
+
+#pragma mark Operations
+
+// Adds the specified resource for tracking, and returns the added resource.
 MVKResource* MVKDevice::addResource(MVKResource* rez) {
 	lock_guard<mutex> lock(_rezLock);
 	_resources.push_back(rez);
 	return rez;
 }
 
-/** Removes the specified resource for tracking and returns the removed resource. */
+// Removes the specified resource for tracking and returns the removed resource.
 MVKResource* MVKDevice::removeResource(MVKResource* rez) {
 	lock_guard<mutex> lock(_rezLock);
 	mvkRemoveFirstOccurance(_resources, rez);
@@ -2415,6 +2484,25 @@
     if (pPerf) { *pPerf = _performanceStatistics; }
 }
 
+VkResult MVKDevice::invalidateMappedMemoryRanges(uint32_t memRangeCount, const VkMappedMemoryRange* pMemRanges) {
+	@autoreleasepool {
+		VkResult rslt = VK_SUCCESS;
+		MVKMTLBlitEncoder mvkBlitEnc;
+		for (uint32_t i = 0; i < memRangeCount; i++) {
+			const VkMappedMemoryRange* pMem = &pMemRanges[i];
+			MVKDeviceMemory* mvkMem = (MVKDeviceMemory*)pMem->memory;
+			VkResult r = mvkMem->pullFromDevice(pMem->offset, pMem->size, false, &mvkBlitEnc);
+			if (rslt == VK_SUCCESS) { rslt = r; }
+		}
+		if (mvkBlitEnc.mtlBlitEncoder) { [mvkBlitEnc.mtlBlitEncoder endEncoding]; }
+		if (mvkBlitEnc.mtlCmdBuffer) {
+			[mvkBlitEnc.mtlCmdBuffer commit];
+			[mvkBlitEnc.mtlCmdBuffer waitUntilCompleted];
+		}
+		return rslt;
+	}
+}
+
 
 #pragma mark Metal
 
@@ -2479,6 +2567,7 @@
 	_enabledF16I8Features(),
 	_enabledUBOLayoutFeatures(),
 	_enabledVarPtrFeatures(),
+	_enabledInterlockFeatures(),
 	_enabledHostQryResetFeatures(),
 	_enabledScalarLayoutFeatures(),
 	_enabledTexelBuffAlignFeatures(),
@@ -2501,6 +2590,10 @@
 
 	initQueues(pCreateInfo);
 
+	if (getInstance()->_autoGPUCaptureScope == MVK_CONFIG_AUTO_GPU_CAPTURE_SCOPE_DEVICE) {
+		[[MTLCaptureManager sharedCaptureManager] startCaptureWithDevice: getMTLDevice()];
+	}
+
 	MVKLogInfo("Created VkDevice to run on GPU %s with the following %d Vulkan extensions enabled:%s",
 			   _pProperties->deviceName,
 			   _enabledExtensions.getEnabledCount(),
@@ -2555,6 +2648,16 @@
 	_pProperties = &_physicalDevice->_properties;
 	_pMemoryProperties = &_physicalDevice->_memoryProperties;
 
+	_useMTLFenceForSemaphores = false;
+	if (_pMetalFeatures->fences) {
+		MVK_SET_FROM_ENV_OR_BUILD_BOOL(_useMTLFenceForSemaphores, MVK_ALLOW_METAL_FENCES);
+	}
+	_useMTLEventForSemaphores = false;
+	if (_pMetalFeatures->events) {
+		MVK_SET_FROM_ENV_OR_BUILD_BOOL(_useMTLEventForSemaphores, MVK_ALLOW_METAL_EVENTS);
+	}
+	MVKLogInfo("Using %s for semaphores.", _useMTLFenceForSemaphores ? "MTLFence" : (_useMTLEventForSemaphores ? "MTLEvent" : "emulation"));
+
 #if MVK_MACOS
 	// If we have selected a high-power GPU and want to force the window system
 	// to use it, force the window system to use a high-power GPU by calling the
@@ -2579,6 +2682,7 @@
 	memset((void*)&_enabledF16I8Features, 0, sizeof(_enabledF16I8Features));
 	memset((void*)&_enabledUBOLayoutFeatures, 0, sizeof(_enabledUBOLayoutFeatures));
 	memset((void*)&_enabledVarPtrFeatures, 0, sizeof(_enabledVarPtrFeatures));
+	memset((void*)&_enabledInterlockFeatures, 0, sizeof(_enabledInterlockFeatures));
 	memset((void*)&_enabledHostQryResetFeatures, 0, sizeof(_enabledHostQryResetFeatures));
 	memset((void*)&_enabledScalarLayoutFeatures, 0, sizeof(_enabledScalarLayoutFeatures));
 	memset((void*)&_enabledTexelBuffAlignFeatures, 0, sizeof(_enabledTexelBuffAlignFeatures));
@@ -2606,9 +2710,13 @@
 	pdHostQryResetFeatures.sType = VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_HOST_QUERY_RESET_FEATURES_EXT;
 	pdHostQryResetFeatures.pNext = &pdScalarLayoutFeatures;
 
+	VkPhysicalDeviceFragmentShaderInterlockFeaturesEXT pdInterlockFeatures;
+	pdInterlockFeatures.sType = VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_FRAGMENT_SHADER_INTERLOCK_FEATURES_EXT;
+	pdInterlockFeatures.pNext = &pdHostQryResetFeatures;
+
 	VkPhysicalDeviceVariablePointerFeatures pdVarPtrFeatures;
 	pdVarPtrFeatures.sType = VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_VARIABLE_POINTER_FEATURES;
-	pdVarPtrFeatures.pNext = &pdHostQryResetFeatures;
+	pdVarPtrFeatures.pNext = &pdInterlockFeatures;
 
 	VkPhysicalDeviceUniformBufferStandardLayoutFeaturesKHR pdUBOLayoutFeatures;
 	pdUBOLayoutFeatures.sType = VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_UNIFORM_BUFFER_STANDARD_LAYOUT_FEATURES_KHR;
@@ -2684,6 +2792,13 @@
 							   &pdVarPtrFeatures.variablePointersStorageBuffer, 2);
 				break;
 			}
+			case VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_FRAGMENT_SHADER_INTERLOCK_FEATURES_EXT: {
+				auto* requestedFeatures = (VkPhysicalDeviceFragmentShaderInterlockFeaturesEXT*)next;
+				enableFeatures(&_enabledInterlockFeatures.fragmentShaderSampleInterlock,
+							   &requestedFeatures->fragmentShaderSampleInterlock,
+							   &pdInterlockFeatures.fragmentShaderSampleInterlock, 3);
+				break;
+			}
 			case VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_HOST_QUERY_RESET_FEATURES_EXT: {
 				auto* requestedFeatures = (VkPhysicalDeviceHostQueryResetFeaturesEXT*)next;
 				enableFeatures(&_enabledHostQryResetFeatures.hostQueryReset,
@@ -2739,12 +2854,12 @@
 	MVKExtensionList* pWritableExtns = (MVKExtensionList*)&_enabledExtensions;
 	setConfigurationResult(pWritableExtns->enable(pCreateInfo->enabledExtensionCount,
 												  pCreateInfo->ppEnabledExtensionNames,
-												  getPhysicalDevice()->getSupportedExtensions()));
+												  &_physicalDevice->_supportedExtensions));
 }
 
 // Create the command queues
 void MVKDevice::initQueues(const VkDeviceCreateInfo* pCreateInfo) {
-	vector<MVKQueueFamily*> qFams = _physicalDevice->getQueueFamilies();
+	auto& qFams = _physicalDevice->getQueueFamilies();
 	uint32_t qrCnt = pCreateInfo->queueCreateInfoCount;
 	for (uint32_t qrIdx = 0; qrIdx < qrCnt; qrIdx++) {
 		const VkDeviceQueueCreateInfo* pQFInfo = &pCreateInfo->pQueueCreateInfos[qrIdx];
@@ -2753,7 +2868,11 @@
 		VkQueueFamilyProperties qfProps;
 		qFam->getProperties(&qfProps);
 
-		_queuesByQueueFamilyIndex.resize(qfIdx + 1);	// Ensure an entry for this queue family exists
+		// Ensure an entry for this queue family exists
+		uint32_t qfCntMin = qfIdx + 1;
+		if (_queuesByQueueFamilyIndex.size() < qfCntMin) {
+			_queuesByQueueFamilyIndex.resize(qfCntMin);
+		}
 		auto& queues = _queuesByQueueFamilyIndex[qfIdx];
 		uint32_t qCnt = min(pQFInfo->queueCount, qfProps.queueCount);
 		for (uint32_t qIdx = 0; qIdx < qCnt; qIdx++) {
@@ -2775,6 +2894,10 @@
 
 	[_mtlCompileOptions release];
     [_globalVisibilityResultMTLBuffer release];
+
+	if (getInstance()->_autoGPUCaptureScope == MVK_CONFIG_AUTO_GPU_CAPTURE_SCOPE_DEVICE) {
+		[[MTLCaptureManager sharedCaptureManager] stopCapture];
+	}
 }
 
 
diff --git a/MoltenVK/MoltenVK/GPUObjects/MVKDeviceMemory.h b/MoltenVK/MoltenVK/GPUObjects/MVKDeviceMemory.h
index bd15e52..d2ba33f 100644
--- a/MoltenVK/MoltenVK/GPUObjects/MVKDeviceMemory.h
+++ b/MoltenVK/MoltenVK/GPUObjects/MVKDeviceMemory.h
@@ -19,7 +19,7 @@
 #pragma once
 
 #include "MVKDevice.h"
-#include <vector>
+#include "MVKVector.h"
 #include <mutex>
 
 #import <Metal/Metal.h>
@@ -85,8 +85,18 @@
 	 * If this memory is host-visible, pulls the specified memory range from the device.
 	 * Normally, pulling will only occur if the device memory is non-coherent, but pulling
 	 * to coherent memory can be forced by setting evenIfCoherent to true.
+	 *
+	 * If pBlitEnc is not null, it points to a holder for a MTLBlitCommandEncoder and its
+	 * assocated MTLCommandBuffer. If this instance has a MTLBuffer using managed memory,
+	 * this function may call synchronizeResource: on the MTLBlitCommandEncoder to
+	 * synchronize the GPU contents to the CPU. If the contents of the pBlitEnc do not
+	 * include a MTLBlitCommandEncoder and MTLCommandBuffer, this function will create
+	 * them and populate the contents into the MVKMTLBlitEncoder struct.
 	 */
-	VkResult pullFromDevice(VkDeviceSize offset, VkDeviceSize size, bool evenIfCoherent = false);
+	VkResult pullFromDevice(VkDeviceSize offset,
+							VkDeviceSize size,
+							bool evenIfCoherent = false,
+							MVKMTLBlitEncoder* pBlitEnc = nullptr);
 
 
 #pragma mark Metal
@@ -132,8 +142,8 @@
 	void freeHostMemory();
 	MVKResource* getDedicatedResource();
 
-	std::vector<MVKBuffer*> _buffers;
-	std::vector<MVKImage*> _images;
+	MVKVectorInline<MVKBuffer*, 4> _buffers;
+	MVKVectorInline<MVKImage*, 4> _images;
 	std::mutex _rezLock;
     VkDeviceSize _allocationSize = 0;
 	VkDeviceSize _mapOffset = 0;
diff --git a/MoltenVK/MoltenVK/GPUObjects/MVKDeviceMemory.mm b/MoltenVK/MoltenVK/GPUObjects/MVKDeviceMemory.mm
index c25500c..c191737 100644
--- a/MoltenVK/MoltenVK/GPUObjects/MVKDeviceMemory.mm
+++ b/MoltenVK/MoltenVK/GPUObjects/MVKDeviceMemory.mm
@@ -19,6 +19,7 @@
 #include "MVKDeviceMemory.h"
 #include "MVKBuffer.h"
 #include "MVKImage.h"
+#include "MVKQueue.h"
 #include "MVKEnvironment.h"
 #include "mvk_datatypes.hpp"
 #include "MVKFoundation.h"
@@ -97,12 +98,24 @@
 	return VK_SUCCESS;
 }
 
-VkResult MVKDeviceMemory::pullFromDevice(VkDeviceSize offset, VkDeviceSize size, bool evenIfCoherent) {
+VkResult MVKDeviceMemory::pullFromDevice(VkDeviceSize offset,
+										 VkDeviceSize size,
+										 bool evenIfCoherent,
+										 MVKMTLBlitEncoder* pBlitEnc) {
 	// Coherent memory is flushed on unmap(), so it is only flushed if forced
     VkDeviceSize memSize = adjustMemorySize(size, offset);
 	if (memSize > 0 && isMemoryHostAccessible() && (evenIfCoherent || !isMemoryHostCoherent()) && !_mtlHeap) {
 		lock_guard<mutex> lock(_rezLock);
         for (auto& img : _images) { img->pullFromDevice(offset, memSize); }
+
+#if MVK_MACOS
+		if (pBlitEnc && _mtlBuffer && _mtlStorageMode == MTLStorageModeManaged) {
+			if ( !pBlitEnc->mtlCmdBuffer) { pBlitEnc->mtlCmdBuffer = [_device->getQueue()->getMTLCommandQueue() commandBufferWithUnretainedReferences]; }
+			if ( !pBlitEnc->mtlBlitEncoder) { pBlitEnc->mtlBlitEncoder = [pBlitEnc->mtlCmdBuffer blitCommandEncoder]; }
+			[pBlitEnc->mtlBlitEncoder synchronizeResource: _mtlBuffer];
+		}
+#endif
+
 	}
 	return VK_SUCCESS;
 }
diff --git a/MoltenVK/MoltenVK/GPUObjects/MVKFramebuffer.h b/MoltenVK/MoltenVK/GPUObjects/MVKFramebuffer.h
index 9fd9ef3..e7a0852 100644
--- a/MoltenVK/MoltenVK/GPUObjects/MVKFramebuffer.h
+++ b/MoltenVK/MoltenVK/GPUObjects/MVKFramebuffer.h
@@ -20,7 +20,7 @@
 
 #include "MVKDevice.h"
 #include "MVKImage.h"
-#include <vector>
+#include "MVKVector.h"
 
 
 #pragma mark MVKFramebuffer
@@ -56,6 +56,6 @@
 
 	VkExtent2D _extent;
 	uint32_t _layerCount;
-	std::vector<MVKImageView*> _attachments;
+	MVKVectorInline<MVKImageView*, 8> _attachments;
 };
 
diff --git a/MoltenVK/MoltenVK/GPUObjects/MVKImage.h b/MoltenVK/MoltenVK/GPUObjects/MVKImage.h
index dfbde55..9ac30d9 100644
--- a/MoltenVK/MoltenVK/GPUObjects/MVKImage.h
+++ b/MoltenVK/MoltenVK/GPUObjects/MVKImage.h
@@ -257,7 +257,7 @@
 						   VkPipelineStageFlags dstStageMask,
 						   VkImageMemoryBarrier* pImageMemoryBarrier);
 
-	std::vector<MVKImageSubresource> _subresources;
+	MVKVectorInline<MVKImageSubresource, 4> _subresources;
 	std::unordered_map<NSUInteger, id<MTLTexture>> _mtlTextureViews;
     VkExtent3D _extent;
     uint32_t _mipLevels;
@@ -394,9 +394,6 @@
 #pragma mark -
 #pragma mark MVKSwapchainImage
 
-/** Tracks a semaphore and fence for later signaling. */
-typedef std::pair<MVKSemaphore*, MVKFence*> MVKSwapchainSignaler;
-
 /** Indicates the relative availability of each image in the swapchain. */
 typedef struct MVKSwapchainImageAvailability_t {
 	uint64_t acquisitionID;			/**< When this image was last made available, relative to the other images in the swapchain. Smaller value is earlier. */
@@ -406,33 +403,24 @@
 	bool operator< (const MVKSwapchainImageAvailability_t& rhs) const;
 } MVKSwapchainImageAvailability;
 
+
 /** Represents a Vulkan image used as a rendering destination within a swapchain. */
 class MVKSwapchainImage : public MVKImage {
 
 public:
 
-	/** Returns the encompassing swapchain. */
-	inline MVKSwapchain* getSwapchain() { return _swapchain; }
+	/** Binds this resource to the specified offset within the specified memory allocation. */
+	VkResult bindDeviceMemory(MVKDeviceMemory* mvkMem, VkDeviceSize memOffset) override;
 
-	/** Returns the index of this image within the encompassing swapchain. */
-	inline uint32_t getSwapchainIndex() { return _swapchainIndex; }
-
-	/**
-	 * Registers a semaphore and/or fence that will be signaled when this image becomes available.
-	 * This function accepts both a semaphore and a fence, and either none, one, or both may be provided.
-	 * If this image is available already, the semaphore and fence are immediately signaled.
-	 */
-	void signalWhenAvailable(MVKSemaphore* semaphore, MVKFence* fence);
-
-	/** Returns the availability status of this image, relative to other images in the swapchain. */
-	const MVKSwapchainImageAvailability* getAvailability();
+	/** Binds this resource according to the specified bind information. */
+	VkResult bindDeviceMemory2(const void* pBindInfo) override;
 
 	
 #pragma mark Metal
 
 	/**
 	 * Presents the contained drawable to the OS, releases the Metal drawable and its 
-	 * texture back to the Metal layer's pool, and makes this image available for new use.
+	 * texture back to the Metal layer's pool, and makes the image memory available for new use.
 	 *
 	 * If mtlCmdBuff is not nil, the contained drawable is scheduled for presentation using
 	 * the presentDrawable: method of the command buffer. If mtlCmdBuff is nil, the contained
@@ -449,25 +437,18 @@
 					  MVKSwapchain* swapchain,
 					  uint32_t swapchainIndex);
 
-	~MVKSwapchainImage() override;
+	/** Constructs an instance for the specified device and swapchain, without binding to a particular swapchain image index. */
+	MVKSwapchainImage(MVKDevice* device,
+					  const VkImageCreateInfo* pCreateInfo,
+					  MVKSwapchain* swapchain);
 
 protected:
 	id<MTLTexture> newMTLTexture() override;
 	id<CAMetalDrawable> getCAMetalDrawable();
-	void resetCAMetalDrawable();
     void resetMetalSurface();
-	void signal(MVKSwapchainSignaler& signaler);
-	void markAsTracked(MVKSwapchainSignaler& signaler);
-	void unmarkAsTracked(MVKSwapchainSignaler& signaler);
-	void makeAvailable();
     void renderWatermark(id<MTLCommandBuffer> mtlCmdBuff);
 
 	MVKSwapchain* _swapchain;
 	uint32_t _swapchainIndex;
-	id<CAMetalDrawable> _mtlDrawable;
-	std::mutex _availabilityLock;
-	MVKVectorInline<MVKSwapchainSignaler, 4> _availabilitySignalers;
-	MVKSwapchainSignaler _preSignaled;
-	MVKSwapchainImageAvailability _availability;
 };
 
diff --git a/MoltenVK/MoltenVK/GPUObjects/MVKImage.mm b/MoltenVK/MoltenVK/GPUObjects/MVKImage.mm
index bf51f65..827754a 100644
--- a/MoltenVK/MoltenVK/GPUObjects/MVKImage.mm
+++ b/MoltenVK/MoltenVK/GPUObjects/MVKImage.mm
@@ -20,6 +20,7 @@
 #include "MVKQueue.h"
 #include "MVKSwapchain.h"
 #include "MVKCommandBuffer.h"
+#include "MVKCmdDebug.h"
 #include "mvk_datatypes.hpp"
 #include "MVKFoundation.h"
 #include "MVKLogging.h"
@@ -677,6 +678,9 @@
 	if (mvkIsAnyFlagEnabled(pCreateInfo->flags, VK_IMAGE_CREATE_BLOCK_TEXEL_VIEW_COMPATIBLE_BIT)) {
 		setConfigurationResult(reportError(VK_ERROR_FEATURE_NOT_PRESENT, "vkCreateImage() : Metal does not allow uncompressed views of compressed images."));
 	}
+	if (mvkIsAnyFlagEnabled(pCreateInfo->flags, VK_IMAGE_CREATE_SPLIT_INSTANCE_BIND_REGIONS_BIT)) {
+		setConfigurationResult(reportError(VK_ERROR_FEATURE_NOT_PRESENT, "vkCreateImage() : Metal does not support split-instance memory binding."));
+	}
 }
 
 VkSampleCountFlagBits MVKImage::validateSamples(const VkImageCreateInfo* pCreateInfo, bool isAttachment) {
@@ -1255,101 +1259,28 @@
 #pragma mark -
 #pragma mark MVKSwapchainImage
 
-bool MVKSwapchainImageAvailability_t::operator< (const MVKSwapchainImageAvailability_t& rhs) const {
-	if (  isAvailable && !rhs.isAvailable) { return true; }
-	if ( !isAvailable &&  rhs.isAvailable) { return false; }
-
-	if (waitCount < rhs.waitCount) { return true; }
-	if (waitCount > rhs.waitCount) { return false; }
-
-	return acquisitionID < rhs.acquisitionID;
+VkResult MVKSwapchainImage::bindDeviceMemory(MVKDeviceMemory*, VkDeviceSize) {
+	return VK_ERROR_OUT_OF_DEVICE_MEMORY;
 }
 
-// Makes this image available for acquisition by the app.
-// If any semaphores are waiting to be signaled when this image becomes available, the
-// earliest semaphore is signaled, and this image remains unavailable for other uses.
-void MVKSwapchainImage::makeAvailable() {
-	lock_guard<mutex> lock(_availabilityLock);
-
-	// Mark when this event happened, relative to that of other images
-	_availability.acquisitionID = _swapchain->getNextAcquisitionID();
-
-	// Mark this image as available if no semaphores or fences are waiting to be signaled.
-	_availability.isAvailable = _availabilitySignalers.empty();
-
-	MVKSwapchainSignaler signaler;
-	if (_availability.isAvailable) {
-		// If this image is now available, signal the semaphore and fence that were associated
-		// with the last time this image was acquired while available. This is a workaround for
-		// when an app uses a single semaphore or fence for more than one swapchain image.
-		// Becuase the semaphore or fence will be signaled by more than one image, it will
-		// get out of sync, and the final use of the image would not be signaled as a result.
-
-		signaler = _preSignaled;
-	} else {
-		// If this image is not yet available, extract and signal the first semaphore and fence.
-
-		signaler = _availabilitySignalers.front();
-		_availabilitySignalers.erase( _availabilitySignalers.begin() );
-	}
-
-	// Signal the semaphore and fence, and let them know they are no longer being tracked.
-	signal(signaler);
-	unmarkAsTracked(signaler);
-
-//	MVKLogDebug("Signaling%s swapchain image %p semaphore %p from present, with %lu remaining semaphores.", (_availability.isAvailable ? " pre-signaled" : ""), this, signaler.first, _availabilitySignalers.size());
-}
-
-void MVKSwapchainImage::signalWhenAvailable(MVKSemaphore* semaphore, MVKFence* fence) {
-	lock_guard<mutex> lock(_availabilityLock);
-	auto signaler = make_pair(semaphore, fence);
-	if (_availability.isAvailable) {
-		_availability.isAvailable = false;
-		signal(signaler);
-		if (_device->_pMetalFeatures->events) {
-			// Unfortunately, we can't assume we have an MTLSharedEvent here.
-			// This means we need to execute a command on the device to signal
-			// the semaphore. Alternatively, we could always use an MTLSharedEvent,
-			// but that might impose unacceptable performance costs just to handle
-			// this one case.
-			MVKQueue* queue = _device->getQueue(0, 0);	
-			id<MTLCommandQueue> mtlQ = queue->getMTLCommandQueue();
-			id<MTLCommandBuffer> mtlCmdBuff = [mtlQ commandBufferWithUnretainedReferences];
-			[mtlCmdBuff enqueue];
-			signaler.first->encodeSignal(mtlCmdBuff);
-			[mtlCmdBuff commit];
+VkResult MVKSwapchainImage::bindDeviceMemory2(const void* pBindInfo) {
+	const auto* imageInfo = (const VkBindImageMemoryInfo*)pBindInfo;
+	const VkBindImageMemorySwapchainInfoKHR* swapchainInfo = nullptr;
+	for (const auto* next = (const VkBaseInStructure*)imageInfo->pNext; next; next = next->pNext) {
+		switch (next->sType) {
+		case VK_STRUCTURE_TYPE_BIND_IMAGE_MEMORY_SWAPCHAIN_INFO_KHR:
+			swapchainInfo = (const VkBindImageMemorySwapchainInfoKHR*)next;
+			break;
+		default:
+			break;
 		}
-		_preSignaled = signaler;
-	} else {
-		_availabilitySignalers.push_back(signaler);
+		if (swapchainInfo) { break; }
 	}
-	markAsTracked(signaler);
-
-//	MVKLogDebug("%s swapchain image %p semaphore %p in acquire with %lu other semaphores.", (_availability.isAvailable ? "Signaling" : "Tracking"), this, semaphore, _availabilitySignalers.size());
-}
-
-// Signal either or both of the semaphore and fence in the specified tracker pair.
-void MVKSwapchainImage::signal(MVKSwapchainSignaler& signaler) {
-	if (signaler.first && !_device->_pMetalFeatures->events) { signaler.first->signal(); }
-	if (signaler.second) { signaler.second->signal(); }
-}
-
-// Tell the semaphore and fence that they are being tracked for future signaling.
-void MVKSwapchainImage::markAsTracked(MVKSwapchainSignaler& signaler) {
-	if (signaler.first) { signaler.first->retain(); }
-	if (signaler.second) { signaler.second->retain(); }
-}
-
-// Tell the semaphore and fence that they are no longer being tracked for future signaling.
-void MVKSwapchainImage::unmarkAsTracked(MVKSwapchainSignaler& signaler) {
-	if (signaler.first) { signaler.first->release(); }
-	if (signaler.second) { signaler.second->release(); }
-}
-
-const MVKSwapchainImageAvailability* MVKSwapchainImage::getAvailability() {
-	lock_guard<mutex> lock(_availabilityLock);
-	_availability.waitCount = (uint32_t)_availabilitySignalers.size();
-	return &_availability;
+	if (!swapchainInfo) {
+		return VK_ERROR_OUT_OF_DEVICE_MEMORY;
+	}
+	_swapchainIndex = swapchainInfo->imageIndex;
+	return VK_SUCCESS;
 }
 
 
@@ -1362,58 +1293,34 @@
 }
 
 id<CAMetalDrawable> MVKSwapchainImage::getCAMetalDrawable() {
-	if ( !_mtlDrawable ) {
-		@autoreleasepool {		// Allow auto-released drawable object to be reclaimed before end of loop
-			_mtlDrawable = [_swapchain->getNextCAMetalDrawable() retain];	// retained
-		}
-		MVKAssert(_mtlDrawable, "Could not aquire an available CAMetalDrawable from the CAMetalLayer in MVKSwapchain image: %p.", this);
-	}
-	return _mtlDrawable;
+	id<CAMetalDrawable> mtlDrawable = _swapchain->getCAMetalDrawable(_swapchainIndex);
+	MVKAssert(mtlDrawable, "Could not acquire an available CAMetalDrawable from the CAMetalLayer in MVKSwapchain image: %p.", this);
+	return mtlDrawable;
 }
 
+// Present the drawable and make myself available only once the command buffer has completed.
 void MVKSwapchainImage::presentCAMetalDrawable(id<MTLCommandBuffer> mtlCmdBuff) {
-//	MVKLogDebug("Presenting swapchain image %p from present.", this);
+	_swapchain->willPresentSurface(getMTLTexture(), mtlCmdBuff);
 
-    id<CAMetalDrawable> mtlDrawable = getCAMetalDrawable();
-    _swapchain->willPresentSurface(getMTLTexture(), mtlCmdBuff);
+	NSString* scName = _swapchain->getDebugName();
+	if (scName) { mvkPushDebugGroup(mtlCmdBuff, scName); }
+	[mtlCmdBuff presentDrawable: getCAMetalDrawable()];
+	if (scName) { mvkPopDebugGroup(mtlCmdBuff); }
 
-    // If using a command buffer, present the drawable through it,
-    // and make myself available only once the command buffer has completed.
-    // Otherwise, immediately present the drawable and make myself available.
-    if (mtlCmdBuff) {
-		NSString* scName = _swapchain->getDebugName();
-		if (scName) { [mtlCmdBuff pushDebugGroup: scName]; }
-		[mtlCmdBuff presentDrawable: mtlDrawable];
-		if (scName) { [mtlCmdBuff popDebugGroup]; }
+	resetMetalSurface();
+	_swapchain->signalPresentationSemaphore(_swapchainIndex, mtlCmdBuff);
 
-		resetMetalSurface();
-        if (_device->_pMetalFeatures->events && !_availabilitySignalers.empty()) {
-            // Signal the semaphore device-side.
-            _availabilitySignalers.front().first->encodeSignal(mtlCmdBuff);
-        }
-
-		retain();	// Ensure this image is not destroyed while awaiting MTLCommandBuffer completion
-        [mtlCmdBuff addCompletedHandler: ^(id<MTLCommandBuffer> mcb) {
-			makeAvailable();
-			release();
-		}];
-    } else {
-        [mtlDrawable present];
-        resetMetalSurface();
-        makeAvailable();
-    }
-}
-
-// Removes and releases the Metal drawable object, so that it can be lazily created by getCAMetalDrawable().
-void MVKSwapchainImage::resetCAMetalDrawable() {
-	[_mtlDrawable release];
-	_mtlDrawable = nil;
+	retain();	// Ensure this image is not destroyed while awaiting MTLCommandBuffer completion
+	[mtlCmdBuff addCompletedHandler: ^(id<MTLCommandBuffer> mcb) {
+		_swapchain->makeAvailable(_swapchainIndex);
+		release();
+	}];
 }
 
 // Resets the MTLTexture and CAMetalDrawable underlying this image.
 void MVKSwapchainImage::resetMetalSurface() {
     resetMTLTexture();			// Release texture first so drawable will be last to release it
-    resetCAMetalDrawable();
+    _swapchain->resetCAMetalDrawable(_swapchainIndex);
 }
 
 
@@ -1425,14 +1332,13 @@
 									 uint32_t swapchainIndex) : MVKImage(device, pCreateInfo) {
 	_swapchain = swapchain;
 	_swapchainIndex = swapchainIndex;
-	_availability.acquisitionID = _swapchain->getNextAcquisitionID();
-	_availability.isAvailable = true;
-	_preSignaled = make_pair(nullptr, nullptr);
-	_mtlDrawable = nil;
 }
 
-MVKSwapchainImage::~MVKSwapchainImage() {
-	resetCAMetalDrawable();
+MVKSwapchainImage::MVKSwapchainImage(MVKDevice* device,
+									 const VkImageCreateInfo* pCreateInfo,
+									 MVKSwapchain* swapchain) : MVKImage(device, pCreateInfo) {
+	_swapchain = swapchain;
+	_swapchainIndex = uint32_t(-1);
 }
 
 
diff --git a/MoltenVK/MoltenVK/GPUObjects/MVKInstance.h b/MoltenVK/MoltenVK/GPUObjects/MVKInstance.h
index 5771fe6..301a4f0 100644
--- a/MoltenVK/MoltenVK/GPUObjects/MVKInstance.h
+++ b/MoltenVK/MoltenVK/GPUObjects/MVKInstance.h
@@ -21,8 +21,8 @@
 #include "MVKEnvironment.h"
 #include "MVKLayers.h"
 #include "MVKVulkanAPIObject.h"
+#include "MVKVector.h"
 #include "vk_mvk_moltenvk.h"
-#include <vector>
 #include <unordered_map>
 #include <string>
 #include <mutex>
@@ -100,7 +100,7 @@
 	VkResult getPhysicalDeviceGroups(uint32_t* pCount, VkPhysicalDeviceGroupProperties* pPhysicalDeviceGroupProps);
 
 	/** Returns the driver layer. */
-	MVKLayer* getDriverLayer() { return MVKLayerManager::globalManager()->getDriverLayer(); }
+	MVKLayer* getDriverLayer() { return getLayerManager()->getDriverLayer(); }
 
 	MVKSurface* createSurface(const VkMetalSurfaceCreateInfoEXT* pCreateInfo,
 							  const VkAllocationCallbacks* pAllocator);
@@ -187,15 +187,16 @@
 
 	MVKConfiguration _mvkConfig;
 	VkApplicationInfo _appInfo;
-	std::vector<MVKPhysicalDevice*> _physicalDevices;
+	MVKVectorInline<MVKPhysicalDevice*, 4> _physicalDevices;
+	MVKVectorInline<MVKDebugReportCallback*, 4> _debugReportCallbacks;
+	MVKVectorInline<MVKDebugUtilsMessenger*, 4> _debugUtilMessengers;
 	std::unordered_map<std::string, MVKEntryPoint> _entryPoints;
-	std::vector<MVKDebugReportCallback*> _debugReportCallbacks;
-	std::vector<MVKDebugUtilsMessenger*> _debugUtilMessengers;
 	std::mutex _dcbLock;
 	bool _hasDebugReportCallbacks;
 	bool _hasDebugUtilsMessengers;
 	bool _useCreationCallbacks;
 	const char* _debugReportCallbackLayerPrefix;
+	int32_t _autoGPUCaptureScope;
 };
 
 
diff --git a/MoltenVK/MoltenVK/GPUObjects/MVKInstance.mm b/MoltenVK/MoltenVK/GPUObjects/MVKInstance.mm
index 51e2615..8c0a9b9 100644
--- a/MoltenVK/MoltenVK/GPUObjects/MVKInstance.mm
+++ b/MoltenVK/MoltenVK/GPUObjects/MVKInstance.mm
@@ -348,7 +348,7 @@
 	MVKExtensionList* pWritableExtns = (MVKExtensionList*)&_enabledExtensions;
 	setConfigurationResult(pWritableExtns->enable(pCreateInfo->enabledExtensionCount,
 												  pCreateInfo->ppEnabledExtensionNames,
-												  getDriverLayer()->getSupportedExtensions()));
+												  getDriverLayer()->getSupportedInstanceExtensions()));
 	logVersions();	// Log the MoltenVK and Vulkan versions
 
 	if (MVK_VULKAN_API_VERSION_CONFORM(MVK_VULKAN_API_VERSION) <
@@ -609,6 +609,9 @@
 	ADD_DVC_EXT_ENTRY_POINT(vkCreateDescriptorUpdateTemplateKHR, KHR_DESCRIPTOR_UPDATE_TEMPLATE);
 	ADD_DVC_EXT_ENTRY_POINT(vkDestroyDescriptorUpdateTemplateKHR, KHR_DESCRIPTOR_UPDATE_TEMPLATE);
 	ADD_DVC_EXT_ENTRY_POINT(vkUpdateDescriptorSetWithTemplateKHR, KHR_DESCRIPTOR_UPDATE_TEMPLATE);
+	ADD_DVC_EXT_ENTRY_POINT(vkGetDeviceGroupPeerMemoryFeaturesKHR, KHR_DEVICE_GROUP);
+	ADD_DVC_EXT_ENTRY_POINT(vkCmdSetDeviceMaskKHR, KHR_DEVICE_GROUP);
+	ADD_DVC_EXT_ENTRY_POINT(vkCmdDispatchBaseKHR, KHR_DEVICE_GROUP);
 	ADD_DVC_EXT_ENTRY_POINT(vkGetBufferMemoryRequirements2KHR, KHR_GET_MEMORY_REQUIREMENTS_2);
 	ADD_DVC_EXT_ENTRY_POINT(vkGetImageMemoryRequirements2KHR, KHR_GET_MEMORY_REQUIREMENTS_2);
 	ADD_DVC_EXT_ENTRY_POINT(vkGetImageSparseMemoryRequirements2KHR, KHR_GET_MEMORY_REQUIREMENTS_2);
@@ -636,15 +639,30 @@
 }
 
 void MVKInstance::logVersions() {
-	MVKExtensionList* pExtns  = getDriverLayer()->getSupportedExtensions();
+	MVKExtensionList allExtns(this, true);
 	MVKLogInfo("MoltenVK version %s. Vulkan version %s.\n\tThe following %d Vulkan extensions are supported:%s",
 			   mvkGetMoltenVKVersionString(MVK_VERSION).c_str(),
 			   mvkGetVulkanVersionString(MVK_VULKAN_API_VERSION).c_str(),
-			   pExtns->getEnabledCount(),
-			   pExtns->enabledNamesString("\n\t\t", true).c_str());
+			   allExtns.getEnabledCount(),
+			   allExtns.enabledNamesString("\n\t\t", true).c_str());
 }
 
 void MVKInstance::initConfig() {
+
+// The default value for MVK_CONFIG_SYNCHRONOUS_QUEUE_SUBMITS actually depends on whether
+// MTLEvents are supported, becuase if MTLEvents are not supported, then synchronous queues
+// should be turned off by default to ensure , whereas if MTLEvents are supported, we want
+// sychronous queues for better behaviour. The app can of course still override this default
+// behaviour by setting the env var, or the config directly.
+#undef MVK_CONFIG_SYNCHRONOUS_QUEUE_SUBMITS
+#define MVK_CONFIG_SYNCHRONOUS_QUEUE_SUBMITS	syncQueueSubmits
+#if MVK_MACOS
+	bool syncQueueSubmits = mvkOSVersion() >= 10.14;	// Support for MTLEvents
+#endif
+#if MVK_IOS
+	bool syncQueueSubmits = mvkOSVersion() >= 12.0;		// Support for MTLEvents
+#endif
+
 	MVK_SET_FROM_ENV_OR_BUILD_BOOL( _mvkConfig.debugMode,                              MVK_DEBUG);
 	MVK_SET_FROM_ENV_OR_BUILD_BOOL( _mvkConfig.shaderConversionFlipVertexY,            MVK_CONFIG_SHADER_CONVERSION_FLIP_VERTEX_Y);
 	MVK_SET_FROM_ENV_OR_BUILD_BOOL( _mvkConfig.synchronousQueueSubmits,                MVK_CONFIG_SYNCHRONOUS_QUEUE_SUBMITS);
@@ -662,12 +680,14 @@
 	MVK_SET_FROM_ENV_OR_BUILD_BOOL( _mvkConfig.fullImageViewSwizzle,                   MVK_CONFIG_FULL_IMAGE_VIEW_SWIZZLE);
 	MVK_SET_FROM_ENV_OR_BUILD_BOOL( _mvkConfig.defaultGPUCaptureScopeQueueFamilyIndex, MVK_CONFIG_DEFAULT_GPU_CAPTURE_SCOPE_QUEUE_FAMILY_INDEX);
 	MVK_SET_FROM_ENV_OR_BUILD_BOOL( _mvkConfig.defaultGPUCaptureScopeQueueIndex,       MVK_CONFIG_DEFAULT_GPU_CAPTURE_SCOPE_QUEUE_INDEX);
+
+	MVK_SET_FROM_ENV_OR_BUILD_INT32(_autoGPUCaptureScope, MVK_CONFIG_AUTO_GPU_CAPTURE_SCOPE);
 }
 
 VkResult MVKInstance::verifyLayers(uint32_t count, const char* const* names) {
     VkResult result = VK_SUCCESS;
     for (uint32_t i = 0; i < count; i++) {
-        if ( !MVKLayerManager::globalManager()->getLayerNamed(names[i]) ) {
+        if ( !getLayerManager()->getLayerNamed(names[i]) ) {
             result = reportError(VK_ERROR_LAYER_NOT_PRESENT, "Vulkan layer %s is not supported.", names[i]);
         }
     }
diff --git a/MoltenVK/MoltenVK/GPUObjects/MVKPipeline.h b/MoltenVK/MoltenVK/GPUObjects/MVKPipeline.h
index 99bb888..020af29 100644
--- a/MoltenVK/MoltenVK/GPUObjects/MVKPipeline.h
+++ b/MoltenVK/MoltenVK/GPUObjects/MVKPipeline.h
@@ -102,10 +102,12 @@
 	/** Constructs an instance for the specified device. */
 	MVKPipelineLayout(MVKDevice* device, const VkPipelineLayoutCreateInfo* pCreateInfo);
 
+	~MVKPipelineLayout() override;
+
 protected:
 	void propogateDebugName() override {}
 
-	MVKVectorInline<MVKDescriptorSetLayout, 8> _descriptorSetLayouts;
+	MVKVectorInline<MVKDescriptorSetLayout*, 8> _descriptorSetLayouts;
 	MVKVectorInline<MVKShaderResourceBinding, 8> _dslMTLResourceIndexOffsets;
 	MVKVectorInline<VkPushConstantRange, 8> _pushConstants;
 	MVKShaderResourceBinding _pushConstantsMTLResourceIndexes;
@@ -156,6 +158,9 @@
 	/** Returns the current buffer size buffer bindings. */
 	const MVKShaderImplicitRezBinding& getBufferSizeBufferIndex() { return _bufferSizeBufferIndex; }
 
+	/** Returns the current indirect parameter buffer bindings. */
+	const MVKShaderImplicitRezBinding& getIndirectParamsIndex() { return _indirectParamsIndex; }
+
 	/** Returns whether or not full image view swizzling is enabled for this pipeline. */
 	bool fullImageViewSwizzle() const { return _fullImageViewSwizzle; }
 
@@ -171,6 +176,7 @@
 	MVKPipelineCache* _pipelineCache;
 	MVKShaderImplicitRezBinding _swizzleBufferIndex;
 	MVKShaderImplicitRezBinding _bufferSizeBufferIndex;
+	MVKShaderImplicitRezBinding _indirectParamsIndex;
 	MVKShaderResourceBinding _pushConstantsMTLResourceIndexes;
 	bool _fullImageViewSwizzle;
 	bool _hasValidMTLPipelineStates = true;
@@ -204,9 +210,6 @@
     /** Returns the number of output tessellation patch control points. */
     uint32_t getOutputControlPointCount() { return _outputControlPointCount; }
 
-	/** Returns the current indirect parameter buffer bindings. */
-	const MVKShaderImplicitRezBinding& getIndirectParamsIndex() { return _indirectParamsIndex; }
-
 	/** Returns the current captured output buffer bindings. */
 	const MVKShaderImplicitRezBinding& getOutputBufferIndex() { return _outputBufferIndex; }
 
@@ -281,7 +284,6 @@
 
     float _blendConstants[4] = { 0.0, 0.0, 0.0, 1.0 };
     uint32_t _outputControlPointCount;
-	MVKShaderImplicitRezBinding _indirectParamsIndex;
 	MVKShaderImplicitRezBinding _outputBufferIndex;
 	uint32_t _tessCtlPatchOutputBufferIndex = 0;
 	uint32_t _tessCtlLevelBufferIndex = 0;
@@ -317,6 +319,9 @@
 	/** Binds this pipeline to the specified command encoder. */
 	void encode(MVKCommandEncoder* cmdEncoder, uint32_t = 0) override;
 
+	/** Returns if this pipeline allows non-zero dispatch bases in vkCmdDispatchBase(). */
+	bool allowsDispatchBase() { return _allowsDispatchBase; }
+
 	/** Constructs an instance for the device and parent (which may be NULL). */
 	MVKComputePipeline(MVKDevice* device,
 					   MVKPipelineCache* pipelineCache,
@@ -332,6 +337,8 @@
     MTLSize _mtlThreadgroupSize;
     bool _needsSwizzleBuffer = false;
     bool _needsBufferSizeBuffer = false;
+    bool _needsDispatchBaseBuffer = false;
+    bool _allowsDispatchBase = false;
 };
 
 
diff --git a/MoltenVK/MoltenVK/GPUObjects/MVKPipeline.mm b/MoltenVK/MoltenVK/GPUObjects/MVKPipeline.mm
index 04a2b37..cd0a2dc 100644
--- a/MoltenVK/MoltenVK/GPUObjects/MVKPipeline.mm
+++ b/MoltenVK/MoltenVK/GPUObjects/MVKPipeline.mm
@@ -47,11 +47,11 @@
 	for (uint32_t dsIdx = 0; dsIdx < dsCnt; dsIdx++) {
 		MVKDescriptorSet* descSet = descriptorSets[dsIdx];
 		uint32_t dslIdx = firstSet + dsIdx;
-		auto& dsl = _descriptorSetLayouts[dslIdx];
-		dsl.bindDescriptorSet(cmdEncoder, descSet,
-							  _dslMTLResourceIndexOffsets[dslIdx],
-							  dynamicOffsets, &pDynamicOffsetIndex);
-		setConfigurationResult(dsl.getConfigurationResult());
+		MVKDescriptorSetLayout* dsl = _descriptorSetLayouts[dslIdx];
+		dsl->bindDescriptorSet(cmdEncoder, descSet,
+							   _dslMTLResourceIndexOffsets[dslIdx],
+							   dynamicOffsets, &pDynamicOffsetIndex);
+		setConfigurationResult(dsl->getConfigurationResult());
 	}
 }
 
@@ -60,9 +60,9 @@
                                           MVKVector<VkWriteDescriptorSet>& descriptorWrites,
                                           uint32_t set) {
 	clearConfigurationResult();
-	auto& dsl = _descriptorSetLayouts[set];
-	dsl.pushDescriptorSet(cmdEncoder, descriptorWrites, _dslMTLResourceIndexOffsets[set]);
-	setConfigurationResult(dsl.getConfigurationResult());
+	MVKDescriptorSetLayout* dsl = _descriptorSetLayouts[set];
+	dsl->pushDescriptorSet(cmdEncoder, descriptorWrites, _dslMTLResourceIndexOffsets[set]);
+	setConfigurationResult(dsl->getConfigurationResult());
 }
 
 // A null cmdEncoder can be passed to perform a validation pass
@@ -71,9 +71,9 @@
                                           uint32_t set,
                                           const void* pData) {
 	clearConfigurationResult();
-	auto& dsl = _descriptorSetLayouts[set];
-	dsl.pushDescriptorSet(cmdEncoder, descUpdateTemplate, pData, _dslMTLResourceIndexOffsets[set]);
-	setConfigurationResult(dsl.getConfigurationResult());
+	MVKDescriptorSetLayout* dsl = _descriptorSetLayouts[set];
+	dsl->pushDescriptorSet(cmdEncoder, descUpdateTemplate, pData, _dslMTLResourceIndexOffsets[set]);
+	setConfigurationResult(dsl->getConfigurationResult());
 }
 
 void MVKPipelineLayout::populateShaderConverterContext(SPIRVToMSLConversionConfiguration& context) {
@@ -82,9 +82,9 @@
     // Add resource bindings defined in the descriptor set layouts
 	uint32_t dslCnt = (uint32_t)_descriptorSetLayouts.size();
 	for (uint32_t dslIdx = 0; dslIdx < dslCnt; dslIdx++) {
-        _descriptorSetLayouts[dslIdx].populateShaderConverterContext(context,
-                                                                     _dslMTLResourceIndexOffsets[dslIdx],
-                                                                     dslIdx);
+		_descriptorSetLayouts[dslIdx]->populateShaderConverterContext(context,
+																	  _dslMTLResourceIndexOffsets[dslIdx],
+																	  dslIdx);
 	}
 
 	// Add any resource bindings used by push-constants
@@ -113,16 +113,16 @@
     // with each DSL as it is added. The final accumulation of resource index offsets
     // becomes the resource index offsets that will be used for push contants.
 
-    // According to the Vulkan spec, VkDescriptorSetLayout is intended to be consumed when
-    // passed to any Vulkan function, and may be safely destroyed by app immediately after.
-    // In order for this pipeline layout to retain the content of a VkDescriptorSetLayout,
-    // this pipeline holds onto copies of the MVKDescriptorSetLayout instances, so that the
-    // originals created by the app can be safely destroyed.
+    // According to the Vulkan spec, VkDescriptorSetLayout is intended to be consumed when passed
+	// to any Vulkan function, and may be safely destroyed by app immediately after. In order for
+	// this pipeline layout to retain the VkDescriptorSetLayout, the MVKDescriptorSetLayout
+	// instance is retained, so that it will live on here after it has been destroyed by the API.
 
 	_descriptorSetLayouts.reserve(pCreateInfo->setLayoutCount);
 	for (uint32_t i = 0; i < pCreateInfo->setLayoutCount; i++) {
 		MVKDescriptorSetLayout* pDescSetLayout = (MVKDescriptorSetLayout*)pCreateInfo->pSetLayouts[i];
-		_descriptorSetLayouts.push_back(*pDescSetLayout);
+		pDescSetLayout->retain();
+		_descriptorSetLayouts.push_back(pDescSetLayout);
 		_dslMTLResourceIndexOffsets.push_back(_pushConstantsMTLResourceIndexes);
 		_pushConstantsMTLResourceIndexes += pDescSetLayout->_mtlResourceCounts;
 	}
@@ -150,6 +150,10 @@
 	}
 }
 
+MVKPipelineLayout::~MVKPipelineLayout() {
+	for (auto dsl : _descriptorSetLayouts) { dsl->release(); }
+}
+
 
 #pragma mark -
 #pragma mark MVKPipeline
@@ -1294,6 +1298,8 @@
 									   const VkComputePipelineCreateInfo* pCreateInfo) :
 	MVKPipeline(device, pipelineCache, (MVKPipelineLayout*)pCreateInfo->layout, parent) {
 
+	_allowsDispatchBase = mvkAreAllFlagsEnabled(pCreateInfo->flags, VK_PIPELINE_CREATE_DISPATCH_BASE);	// sic; drafters forgot the 'BIT' suffix
+
 	MVKMTLFunction func = getMTLFunction(pCreateInfo);
 	_mtlThreadgroupSize = func.threadGroupSize;
 	_mtlPipelineState = nil;
@@ -1324,6 +1330,9 @@
 	if (_needsBufferSizeBuffer && _bufferSizeBufferIndex.stages[kMVKShaderStageCompute] > _device->_pMetalFeatures->maxPerStageBufferCount) {
 		setConfigurationResult(reportError(VK_ERROR_INVALID_SHADER_NV, "Compute shader requires buffer size buffer, but there is no free slot to pass it."));
 	}
+	if (_needsDispatchBaseBuffer && _indirectParamsIndex.stages[kMVKShaderStageCompute] > _device->_pMetalFeatures->maxPerStageBufferCount) {
+		setConfigurationResult(reportError(VK_ERROR_INVALID_SHADER_NV, "Compute shader requires dispatch base buffer, but there is no free slot to pass it."));
+	}
 }
 
 // Returns a MTLFunction to use when creating the MTLComputePipelineState.
@@ -1339,6 +1348,7 @@
     shaderContext.options.mslOptions.texel_buffer_texture_width = _device->_pMetalFeatures->maxTextureDimension;
 	shaderContext.options.mslOptions.swizzle_texture_samples = _fullImageViewSwizzle && !getDevice()->_pMetalFeatures->nativeTextureSwizzle;
 	shaderContext.options.mslOptions.texture_buffer_native = _device->_pMetalFeatures->textureBuffers;
+	shaderContext.options.mslOptions.dispatch_base = _allowsDispatchBase;
 
     MVKPipelineLayout* layout = (MVKPipelineLayout*)pCreateInfo->layout;
     layout->populateShaderConverterContext(shaderContext);
@@ -1346,12 +1356,14 @@
     _bufferSizeBufferIndex = layout->getBufferSizeBufferIndex();
     shaderContext.options.mslOptions.swizzle_buffer_index = _swizzleBufferIndex.stages[kMVKShaderStageCompute];
     shaderContext.options.mslOptions.buffer_size_buffer_index = _bufferSizeBufferIndex.stages[kMVKShaderStageCompute];
+    shaderContext.options.mslOptions.indirect_params_buffer_index = _indirectParamsIndex.stages[kMVKShaderStageCompute];
 
     MVKMTLFunction func = ((MVKShaderModule*)pSS->module)->getMTLFunction(&shaderContext, pSS->pSpecializationInfo, _pipelineCache);
 
 	auto& funcRslts = func.shaderConversionResults;
 	_needsSwizzleBuffer = funcRslts.needsSwizzleBuffer;
     _needsBufferSizeBuffer = funcRslts.needsBufferSizeBuffer;
+    _needsDispatchBaseBuffer = funcRslts.needsDispatchBaseBuffer;
 
 	return func;
 }
@@ -1710,7 +1722,8 @@
 				scr.needsOutputBuffer,
 				scr.needsPatchOutputBuffer,
 				scr.needsBufferSizeBuffer,
-				scr.needsInputThreadgroupMem);
+				scr.needsInputThreadgroupMem,
+				scr.needsDispatchBaseBuffer);
 	}
 
 }
diff --git a/MoltenVK/MoltenVK/GPUObjects/MVKQueryPool.h b/MoltenVK/MoltenVK/GPUObjects/MVKQueryPool.h
index 23bdb68..90d86f1 100644
--- a/MoltenVK/MoltenVK/GPUObjects/MVKQueryPool.h
+++ b/MoltenVK/MoltenVK/GPUObjects/MVKQueryPool.h
@@ -20,7 +20,6 @@
 
 #include "MVKDevice.h"
 #include "MVKVector.h"
-#include <vector>
 #include <mutex>
 #include <condition_variable>
 
@@ -29,7 +28,8 @@
 class MVKCommandEncoder;
 
 // The size of one query slot in bytes
-#define kMVKQuerySlotSizeInBytes      sizeof(uint64_t)
+#define kMVKQuerySlotSizeInBytes		sizeof(uint64_t)
+#define kMVKDefaultQueryCount			64
 
 
 #pragma mark -
@@ -57,7 +57,7 @@
     virtual void endQuery(uint32_t query, MVKCommandEncoder* cmdEncoder);
 
     /** Finishes the specified queries and marks them as available. */
-    virtual void finishQueries(std::vector<uint32_t>& queries);
+    virtual void finishQueries(MVKVector<uint32_t>& queries);
 
 	/** Resets the results and availability status of the specified queries. */
 	virtual void resetResults(uint32_t firstQuery, uint32_t queryCount, MVKCommandEncoder* cmdEncoder);
@@ -101,7 +101,7 @@
 	MVKQueryPool(MVKDevice* device,
 				 const VkQueryPoolCreateInfo* pCreateInfo,
 				 const uint32_t queryElementCount) : MVKVulkanAPIDeviceObject(device),
-                    _availability(pCreateInfo->queryCount),
+                    _availability(pCreateInfo->queryCount, Initial),
                     _queryElementCount(queryElementCount) {}
 
 protected:
@@ -127,12 +127,12 @@
 		Available           /**< Query is available to the host. */
 	};
 
-	std::vector<Status> _availability;
+	MVKVectorInline<Status, kMVKDefaultQueryCount> _availability;
+	MVKVectorInline<DeferredCopy, 4> _deferredCopies;
 	uint32_t _queryElementCount;
 	std::mutex _availabilityLock;
 	std::condition_variable _availabilityBlocker;
 	std::mutex _deferredCopiesLock;
-	MVKVectorInline<DeferredCopy, 2> _deferredCopies;
 };
 
 
@@ -143,7 +143,7 @@
 class MVKTimestampQueryPool : public MVKQueryPool {
 
 public:
-    void finishQueries(std::vector<uint32_t>& queries) override;
+    void finishQueries(MVKVector<uint32_t>& queries) override;
 
 
 #pragma mark Construction
@@ -156,7 +156,7 @@
 	id<MTLBuffer> getResultBuffer(MVKCommandEncoder* cmdEncoder, uint32_t firstQuery, uint32_t queryCount, NSUInteger& offset) override;
 	void encodeSetResultBuffer(MVKCommandEncoder* cmdEncoder, uint32_t firstQuery, uint32_t queryCount, uint32_t index) override;
 
-	std::vector<uint64_t> _timestamps;
+	MVKVectorInline<uint64_t, kMVKDefaultQueryCount> _timestamps;
 };
 
 
diff --git a/MoltenVK/MoltenVK/GPUObjects/MVKQueryPool.mm b/MoltenVK/MoltenVK/GPUObjects/MVKQueryPool.mm
index 0090244..b174d07 100644
--- a/MoltenVK/MoltenVK/GPUObjects/MVKQueryPool.mm
+++ b/MoltenVK/MoltenVK/GPUObjects/MVKQueryPool.mm
@@ -47,7 +47,7 @@
 }
 
 // Mark queries as available
-void MVKQueryPool::finishQueries(vector<uint32_t>& queries) {
+void MVKQueryPool::finishQueries(MVKVector<uint32_t>& queries) {
     lock_guard<mutex> lock(_availabilityLock);
     for (uint32_t qry : queries) { _availability[qry] = Available; }
     _availabilityBlocker.notify_all();      // Predicate of each wait() call will check whether all required queries are available
@@ -184,7 +184,7 @@
 #pragma mark MVKTimestampQueryPool
 
 // Update timestamp values, then mark queries as available
-void MVKTimestampQueryPool::finishQueries(vector<uint32_t>& queries) {
+void MVKTimestampQueryPool::finishQueries(MVKVector<uint32_t>& queries) {
     uint64_t ts = mvkGetTimestamp();
     for (uint32_t qry : queries) { _timestamps[qry] = ts; }
 
@@ -215,7 +215,8 @@
 #pragma mark Construction
 
 MVKTimestampQueryPool::MVKTimestampQueryPool(MVKDevice* device,
-											 const VkQueryPoolCreateInfo* pCreateInfo) : MVKQueryPool(device, pCreateInfo, 1), _timestamps(pCreateInfo->queryCount) {
+											 const VkQueryPoolCreateInfo* pCreateInfo) :
+	MVKQueryPool(device, pCreateInfo, 1), _timestamps(pCreateInfo->queryCount, 0) {
 }
 
 
diff --git a/MoltenVK/MoltenVK/GPUObjects/MVKQueue.h b/MoltenVK/MoltenVK/GPUObjects/MVKQueue.h
index 7e326f6..2976527 100644
--- a/MoltenVK/MoltenVK/GPUObjects/MVKQueue.h
+++ b/MoltenVK/MoltenVK/GPUObjects/MVKQueue.h
@@ -23,7 +23,6 @@
 #include "MVKImage.h"
 #include "MVKSync.h"
 #include "MVKVector.h"
-#include <vector>
 #include <mutex>
 
 #import <Metal/Metal.h>
@@ -65,7 +64,7 @@
 	MVKPhysicalDevice* _physicalDevice;
     uint32_t _queueFamilyIndex;
 	VkQueueFamilyProperties _properties;
-	std::vector<id<MTLCommandQueue>> _mtlQueues;
+	MVKVectorInline<id<MTLCommandQueue>, kMVKQueueCountPerQueueFamily> _mtlQueues;
 	std::mutex _qLock;
 };
 
@@ -180,10 +179,7 @@
 	friend class MVKQueue;
 
 	MVKQueue* _queue;
-	MVKQueueSubmission* _prev;
-	MVKQueueSubmission* _next;
 	MVKVectorInline<MVKSemaphore*, 8> _waitSemaphores;
-	bool _isAwaitingSemaphores;
 	bool _trackPerformance;
 };
 
@@ -214,7 +210,6 @@
 	MVKVectorInline<MVKSemaphore*, 16> _signalSemaphores;
 	MVKFence* _fence;
 	id<MTLCommandBuffer> _activeMTLCommandBuffer;
-	bool _isSignalingSemaphores;
 };
 
 
diff --git a/MoltenVK/MoltenVK/GPUObjects/MVKQueue.mm b/MoltenVK/MoltenVK/GPUObjects/MVKQueue.mm
index 6a8647d..9a4dba4 100644
--- a/MoltenVK/MoltenVK/GPUObjects/MVKQueue.mm
+++ b/MoltenVK/MoltenVK/GPUObjects/MVKQueue.mm
@@ -202,11 +202,8 @@
 									   uint32_t waitSemaphoreCount,
 									   const VkSemaphore* pWaitSemaphores) {
 	_queue = queue;
-	_prev = nullptr;
-	_next = nullptr;
 	_trackPerformance = _queue->_device->_pMVKConfig->performanceTracking;
 
-	_isAwaitingSemaphores = waitSemaphoreCount > 0;
 	_waitSemaphores.reserve(waitSemaphoreCount);
 	for (uint32_t i = 0; i < waitSemaphoreCount; i++) {
 		_waitSemaphores.push_back((MVKSemaphore*)pWaitSemaphores[i]);
@@ -223,30 +220,14 @@
 
 	_queue->_submissionCaptureScope->beginScope();
 
-	MVKDevice* mvkDev = _queue->getDevice();
-
-	// If the device supports it, wait for any semaphores on the device.
-	if (mvkDev->_pMetalFeatures->events && _isAwaitingSemaphores) {
-		_isAwaitingSemaphores = false;
-		for (auto* ws : _waitSemaphores) {
-			ws->encodeWait(getActiveMTLCommandBuffer());
-		}
-	}
+	// If using encoded semaphore waiting, do so now.
+	for (auto* ws : _waitSemaphores) { ws->encodeWait(getActiveMTLCommandBuffer()); }
 
 	// Submit each command buffer.
 	for (auto& cb : _cmdBuffers) { cb->submit(this); }
 
-	// If a fence or semaphores were provided, ensure that a MTLCommandBuffer
-	// is available to trigger them, in case no command buffers were provided.
-	if (_fence || _isSignalingSemaphores) { getActiveMTLCommandBuffer(); }
-
-	// If the device supports it, signal all semaphores on the device.
-	if (mvkDev->_pMetalFeatures->events && _isSignalingSemaphores) {
-		_isSignalingSemaphores = false;
-		for (auto* ss : _signalSemaphores) {
-			ss->encodeSignal(getActiveMTLCommandBuffer());
-		}
-	}
+	// If using encoded semaphore signaling, do so now.
+	for (auto* ss : _signalSemaphores) { ss->encodeSignal(getActiveMTLCommandBuffer()); }
 
 	// Commit the last MTLCommandBuffer.
 	// Nothing after this because callback might destroy this instance before this function ends.
@@ -276,16 +257,16 @@
 // allow as much filling of the MTLCommandBuffer as possible before forcing a wait.
 void MVKQueueCommandBufferSubmission::commitActiveMTLCommandBuffer(bool signalCompletion) {
 
-	if (_isAwaitingSemaphores) {
-		_isAwaitingSemaphores = false;
-		for (auto& ws : _waitSemaphores) { ws->wait(); }
-	}
+	// If using inline semaphore waiting, do so now.
+	for (auto& ws : _waitSemaphores) { ws->encodeWait(nil); }
 
 	MVKDevice* mkvDev = _queue->_device;
 	uint64_t startTime = mkvDev->getPerformanceTimestamp();
 
+	// Use getActiveMTLCommandBuffer() to ensure at least one MTLCommandBuffer is used,
+	// otherwise if this instance has no content, it will not finish() and be destroyed.
 	if (signalCompletion || _trackPerformance) {
-		[_activeMTLCommandBuffer addCompletedHandler: ^(id<MTLCommandBuffer> mtlCmdBuff) {
+		[getActiveMTLCommandBuffer() addCompletedHandler: ^(id<MTLCommandBuffer> mtlCmdBuff) {
 			_queue->_device->addActivityPerformance(mkvDev->_performanceStatistics.queue.mtlCommandBufferCompletion, startTime);
 			if (signalCompletion) { this->finish(); }
 		}];
@@ -305,15 +286,13 @@
 	// immediately after a waitIdle() is cleared by fence below, taking the capture scope with it.
 	_queue->_submissionCaptureScope->endScope();
 
-	// Signal each of the signal semaphores.
-    if (_isSignalingSemaphores) {
-        for (auto& ss : _signalSemaphores) { ss->signal(); }
-    }
+	// If using inline semaphore signaling, do so now.
+	for (auto& ss : _signalSemaphores) { ss->encodeSignal(nil); }
 
 	// If a fence exists, signal it.
 	if (_fence) { _fence->signal(); }
 
-    this->destroy();
+	this->destroy();
 }
 
 MVKQueueCommandBufferSubmission::MVKQueueCommandBufferSubmission(MVKQueue* queue,
@@ -334,7 +313,6 @@
         }
 
         uint32_t ssCnt = pSubmit->signalSemaphoreCount;
-        _isSignalingSemaphores = ssCnt > 0;
         _signalSemaphores.reserve(ssCnt);
         for (uint32_t i = 0; i < ssCnt; i++) {
             _signalSemaphores.push_back((MVKSemaphore*)pSubmit->pSignalSemaphores[i]);
@@ -353,37 +331,21 @@
 #pragma mark MVKQueuePresentSurfaceSubmission
 
 void MVKQueuePresentSurfaceSubmission::execute() {
-	// If there are semaphores and this device supports MTLEvent, we must present
-	// with a command buffer in order to synchronize with the semaphores.
-	MVKDevice* mvkDev = _queue->getDevice();
-	if (mvkDev->_pMetalFeatures->events && !_waitSemaphores.empty()) {
-		// Create a command buffer, have it wait for the semaphores, then present
-		// surfaces via the command buffer.
-		id<MTLCommandBuffer> mtlCmdBuff = getMTLCommandBuffer();
-		for (auto& ws : _waitSemaphores) { ws->encodeWait(mtlCmdBuff); }
-		for (auto& si : _surfaceImages) { si->presentCAMetalDrawable(mtlCmdBuff); }
+	// If the semaphores are encodable, wait on them by encoding them on the MTLCommandBuffer before presenting.
+	// If the semaphores are not encodable, wait on them inline after presenting.
+	// The semaphores know what to do.
+	id<MTLCommandBuffer> mtlCmdBuff = getMTLCommandBuffer();
+	for (auto& ws : _waitSemaphores) { ws->encodeWait(mtlCmdBuff); }
+	for (auto& si : _surfaceImages) { si->presentCAMetalDrawable(mtlCmdBuff); }
+	for (auto& ws : _waitSemaphores) { ws->encodeWait(nil); }
+	[mtlCmdBuff commit];
 
-		[mtlCmdBuff commit];
-	} else if (mvkDev->_pMVKConfig->presentWithCommandBuffer || mvkDev->_pMVKConfig->displayWatermark) {
-		// Create a command buffer, present surfaces via the command buffer,
-		// then wait on the semaphores before committing.
-		id<MTLCommandBuffer> mtlCmdBuff = getMTLCommandBuffer();
-		for (auto& si : _surfaceImages) { si->presentCAMetalDrawable(mtlCmdBuff); }
-		for (auto& ws : _waitSemaphores) { ws->wait(); }
-
-		[mtlCmdBuff commit];
-	} else {
-		// Wait on semaphores, then present directly.
-		for (auto& ws : _waitSemaphores) { ws->wait(); }
-		for (auto& si : _surfaceImages) { si->presentCAMetalDrawable(nil); }
-	}
-
-    // Let Xcode know the current frame is done, then start a new frame
+	// Let Xcode know the current frame is done, then start a new frame
 	auto cs = _queue->_presentationCaptureScope;
 	cs->endScope();
 	cs->beginScope();
 
-    this->destroy();
+	this->destroy();
 }
 
 id<MTLCommandBuffer> MVKQueuePresentSurfaceSubmission::getMTLCommandBuffer() {
diff --git a/MoltenVK/MoltenVK/GPUObjects/MVKRenderPass.h b/MoltenVK/MoltenVK/GPUObjects/MVKRenderPass.h
index a93dba6..253f367 100644
--- a/MoltenVK/MoltenVK/GPUObjects/MVKRenderPass.h
+++ b/MoltenVK/MoltenVK/GPUObjects/MVKRenderPass.h
@@ -20,7 +20,6 @@
 
 #include "MVKDevice.h"
 #include "MVKVector.h"
-#include <vector>
 
 #import <Metal/Metal.h>
 
@@ -28,6 +27,10 @@
 class MVKFramebuffer;
 
 
+// Parameters to define the sizing of inline collections
+const static uint32_t kMVKDefaultAttachmentCount = 8;
+
+
 #pragma mark -
 #pragma mark MVKRenderSubpass
 
@@ -70,7 +73,7 @@
 	 * Populates the specified vector with the attachments that need to be cleared
 	 * when the render area is smaller than the full framebuffer size.
 	 */
-	void populateClearAttachments(std::vector<VkClearAttachment>& clearAtts,
+	void populateClearAttachments(MVKVector<VkClearAttachment>& clearAtts,
 								  MVKVector<VkClearValue>& clearValues);
 
 	/** Constructs an instance for the specified parent renderpass. */
@@ -85,10 +88,10 @@
 
 	MVKRenderPass* _renderPass;
 	uint32_t _subpassIndex;
-	std::vector<VkAttachmentReference> _inputAttachments;
-	std::vector<VkAttachmentReference> _colorAttachments;
-	std::vector<VkAttachmentReference> _resolveAttachments;
-	std::vector<uint32_t> _preserveAttachments;
+	MVKVectorInline<VkAttachmentReference, kMVKDefaultAttachmentCount> _inputAttachments;
+	MVKVectorInline<VkAttachmentReference, kMVKDefaultAttachmentCount> _colorAttachments;
+	MVKVectorInline<VkAttachmentReference, kMVKDefaultAttachmentCount> _resolveAttachments;
+	MVKVectorInline<uint32_t, kMVKDefaultAttachmentCount> _preserveAttachments;
 	VkAttachmentReference _depthStencilAttachment;
 	id<MTLTexture> _mtlDummyTex = nil;
 };
@@ -131,6 +134,8 @@
 							const VkAttachmentDescription* pCreateInfo);
 
 protected:
+	VkAttachmentDescription validate(const VkAttachmentDescription* pCreateInfo);
+
 	VkAttachmentDescription _info;
 	MVKRenderPass* _renderPass;
 	uint32_t _attachmentIndex;
@@ -168,9 +173,9 @@
 
 	void propogateDebugName() override {}
 
-	std::vector<MVKRenderSubpass> _subpasses;
-	std::vector<MVKRenderPassAttachment> _attachments;
-	std::vector<VkSubpassDependency> _subpassDependencies;
+	MVKVectorInline<MVKRenderPassAttachment, kMVKDefaultAttachmentCount> _attachments;
+	MVKVectorInline<MVKRenderSubpass, 4> _subpasses;
+	MVKVectorInline<VkSubpassDependency, 4 * 2> _subpassDependencies;
 
 };
 
diff --git a/MoltenVK/MoltenVK/GPUObjects/MVKRenderPass.mm b/MoltenVK/MoltenVK/GPUObjects/MVKRenderPass.mm
index 52609af..42b499b 100644
--- a/MoltenVK/MoltenVK/GPUObjects/MVKRenderPass.mm
+++ b/MoltenVK/MoltenVK/GPUObjects/MVKRenderPass.mm
@@ -165,7 +165,7 @@
 	}
 }
 
-void MVKRenderSubpass::populateClearAttachments(vector<VkClearAttachment>& clearAtts,
+void MVKRenderSubpass::populateClearAttachments(MVKVector<VkClearAttachment>& clearAtts,
 												MVKVector<VkClearValue>& clearValues) {
 	VkClearAttachment cAtt;
 
@@ -321,9 +321,19 @@
 		}
 	}
 
-    _info = *pCreateInfo;
+	_info = validate(pCreateInfo);
 }
 
+// Validate and potentially modify the create info
+VkAttachmentDescription MVKRenderPassAttachment::validate(const VkAttachmentDescription* pCreateInfo) {
+	VkAttachmentDescription info = *pCreateInfo;
+
+	if ( !_renderPass->getMTLPixelFormatFromVkFormat(info.format) ) {
+		_renderPass->setConfigurationResult(reportError(VK_ERROR_FORMAT_NOT_SUPPORTED, "vkCreateRenderPass(): Attachment format %s is not supported on this device.", mvkVkFormatName(info.format)));
+	}
+
+	return info;
+}
 
 #pragma mark -
 #pragma mark MVKRenderPass
diff --git a/MoltenVK/MoltenVK/GPUObjects/MVKShaderModule.h b/MoltenVK/MoltenVK/GPUObjects/MVKShaderModule.h
index d9a8f84..4ef1dfb 100644
--- a/MoltenVK/MoltenVK/GPUObjects/MVKShaderModule.h
+++ b/MoltenVK/MoltenVK/GPUObjects/MVKShaderModule.h
@@ -20,9 +20,9 @@
 
 #include "MVKDevice.h"
 #include "MVKSync.h"
+#include "MVKVector.h"
 #include <MoltenVKSPIRVToMSLConverter/SPIRVToMSLConverter.h>
 #include <MoltenVKGLSLToSPIRVConverter/GLSLToSPIRVConverter.h>
-#include <vector>
 #include <mutex>
 
 #import <Metal/Metal.h>
@@ -151,7 +151,7 @@
 	void merge(MVKShaderLibraryCache* other);
 
 	MVKVulkanAPIDeviceObject* _owner;
-	std::vector<std::pair<SPIRVToMSLConversionConfiguration, MVKShaderLibrary*>> _shaderLibraries;
+	MVKVectorInline<std::pair<SPIRVToMSLConversionConfiguration, MVKShaderLibrary*>, 4> _shaderLibraries;
 };
 
 
diff --git a/MoltenVK/MoltenVK/GPUObjects/MVKSurface.mm b/MoltenVK/MoltenVK/GPUObjects/MVKSurface.mm
index 3dd8118..616b8b2 100644
--- a/MoltenVK/MoltenVK/GPUObjects/MVKSurface.mm
+++ b/MoltenVK/MoltenVK/GPUObjects/MVKSurface.mm
@@ -43,7 +43,7 @@
 					   const Vk_PLATFORM_SurfaceCreateInfoMVK* pCreateInfo,
 					   const VkAllocationCallbacks* pAllocator) : _mvkInstance(mvkInstance) {
 
-	MVKLogInfo("%s(): This function is obsolete. Consider using the vkCreateMetalSurfaceEXT() function from the VK_EXT_metal_surface extension instead.", STR(vkCreate_PLATFORM_SurfaceMVK));
+//	MVKLogInfo("%s(): This function is obsolete. Consider using the vkCreateMetalSurfaceEXT() function from the VK_EXT_metal_surface extension instead.", STR(vkCreate_PLATFORM_SurfaceMVK));
 
 	// Get the platform object contained in pView
 	id<NSObject> obj = (id<NSObject>)pCreateInfo->pView;
diff --git a/MoltenVK/MoltenVK/GPUObjects/MVKSwapchain.h b/MoltenVK/MoltenVK/GPUObjects/MVKSwapchain.h
index d2ca10b..2346699 100644
--- a/MoltenVK/MoltenVK/GPUObjects/MVKSwapchain.h
+++ b/MoltenVK/MoltenVK/GPUObjects/MVKSwapchain.h
@@ -19,9 +19,9 @@
 #pragma once
 
 #include "MVKDevice.h"
-#include <vector>
+#include "MVKImage.h"
+#include "MVKVector.h"
 
-class MVKSwapchainImage;
 class MVKWatermark;
 
 @class MVKBlockObserver;
@@ -29,6 +29,9 @@
 
 #pragma mark MVKSwapchain
 
+/** Tracks a semaphore and fence for later signaling. */
+typedef std::pair<MVKSemaphore*, MVKFence*> MVKSwapchainSignaler;
+
 /** Represents a Vulkan swapchain. */
 class MVKSwapchain : public MVKVulkanAPIDeviceObject {
 
@@ -80,17 +83,25 @@
 	/** Adds HDR metadata to this swapchain. */
 	void setHDRMetadataEXT(const VkHdrMetadataEXT& metadata);
 
+	/**
+	 * Registers a semaphore and/or fence that will be signaled when the image at the given index becomes available.
+	 * This function accepts both a semaphore and a fence, and either none, one, or both may be provided.
+	 * If this image is available already, the semaphore and fence are immediately signaled.
+	 */
+	void signalWhenAvailable(uint32_t imageIndex, MVKSemaphore* semaphore, MVKFence* fence);
 
+	
 #pragma mark Metal
 
 	/** 
-	 * Returns the next Metal drawable available to provide backing for 
-	 * an image in this swapchain. The returned object is autoreleased.
+	 * Returns the Metal drawable providing backing for the image at the given
+	 * index in this swapchain. If none is established, the next available
+	 * drawable is acquired and returned.
 	 *
 	 * This function may block until the next drawable is available, 
 	 * and may return nil if no drawable is available at all.
 	 */
-	id<CAMetalDrawable> getNextCAMetalDrawable();
+	id<CAMetalDrawable> getCAMetalDrawable(uint32_t imgIdx);
 
 
 #pragma mark Construction
@@ -102,6 +113,12 @@
 protected:
 	friend class MVKSwapchainImage;
 
+	struct Availability {
+		MVKSwapchainImageAvailability status;
+		MVKVectorInline<MVKSwapchainSignaler, 4> signalers;
+		MVKSwapchainSignaler preSignaled;
+	};
+
 	void propogateDebugName() override;
 	void initCAMetalLayer(const VkSwapchainCreateInfoKHR* pCreateInfo, uint32_t imgCnt);
 	void initSurfaceImages(const VkSwapchainCreateInfoKHR* pCreateInfo, uint32_t imgCnt);
@@ -111,10 +128,19 @@
     void willPresentSurface(id<MTLTexture> mtlTexture, id<MTLCommandBuffer> mtlCmdBuff);
     void renderWatermark(id<MTLTexture> mtlTexture, id<MTLCommandBuffer> mtlCmdBuff);
     void markFrameInterval();
+	void resetCAMetalDrawable(uint32_t imgIdx);
+	void signal(MVKSwapchainSignaler& signaler, id<MTLCommandBuffer> mtlCmdBuff);
+	void signalPresentationSemaphore(uint32_t imgIdx, id<MTLCommandBuffer> mtlCmdBuff);
+	static void markAsTracked(MVKSwapchainSignaler& signaler);
+	static void unmarkAsTracked(MVKSwapchainSignaler& signaler);
+	void makeAvailable(uint32_t imgIdx);
 
 	CAMetalLayer* _mtlLayer;
     MVKWatermark* _licenseWatermark;
-	std::vector<MVKSwapchainImage*> _surfaceImages;
+	MVKVectorInline<MVKSwapchainImage*, kMVKMaxSwapchainImageCount> _surfaceImages;
+	MVKVectorInline<id<CAMetalDrawable>, kMVKMaxSwapchainImageCount> _mtlDrawables;
+	MVKVectorInline<Availability, kMVKMaxSwapchainImageCount> _imageAvailability;
+	std::mutex _availabilityLock;
 	std::atomic<uint64_t> _currentAcquisitionID;
     CGSize _mtlLayerOrigDrawSize;
     MVKSwapchainPerformance _performanceStatistics;
diff --git a/MoltenVK/MoltenVK/GPUObjects/MVKSwapchain.mm b/MoltenVK/MoltenVK/GPUObjects/MVKSwapchain.mm
index ca26e35..0c396e3 100644
--- a/MoltenVK/MoltenVK/GPUObjects/MVKSwapchain.mm
+++ b/MoltenVK/MoltenVK/GPUObjects/MVKSwapchain.mm
@@ -19,6 +19,7 @@
 #include "MVKSurface.h"
 #include "MVKSwapchain.h"
 #include "MVKImage.h"
+#include "MVKQueue.h"
 #include "MVKFoundation.h"
 #include "MVKOSExtensions.h"
 #include "MVKWatermark.h"
@@ -36,6 +37,16 @@
 
 #pragma mark MVKSwapchain
 
+bool MVKSwapchainImageAvailability_t::operator< (const MVKSwapchainImageAvailability_t& rhs) const {
+	if (  isAvailable && !rhs.isAvailable) { return true; }
+	if ( !isAvailable &&  rhs.isAvailable) { return false; }
+
+	if (waitCount < rhs.waitCount) { return true; }
+	if (waitCount > rhs.waitCount) { return false; }
+
+	return acquisitionID < rhs.acquisitionID;
+}
+
 void MVKSwapchain::propogateDebugName() {
 	if (_debugName) {
 		size_t imgCnt = _surfaceImages.size();
@@ -47,7 +58,7 @@
 	}
 }
 
-uint32_t MVKSwapchain::getImageCount() { return (uint32_t)_surfaceImages.size(); }
+uint32_t MVKSwapchain::getImageCount() { return (uint32_t)_imageAvailability.size(); }
 
 MVKSwapchainImage* MVKSwapchain::getImage(uint32_t index) { return _surfaceImages[index]; }
 
@@ -87,16 +98,16 @@
     MVKSwapchainImageAvailability minAvailability = { .acquisitionID = kMVKUndefinedLargeUInt64,
 													  .waitCount = kMVKUndefinedLargeUInt32,
 													  .isAvailable = false };
-    for (MVKSwapchainImage* mvkSCImg : _surfaceImages) {
-        const MVKSwapchainImageAvailability* currAvailability = mvkSCImg->getAvailability();
-        if (*currAvailability < minAvailability) {
-            minAvailability = *currAvailability;
-            minWaitIndex = mvkSCImg->getSwapchainIndex();
+    for (uint32_t imgIdx = 0; imgIdx < _imageAvailability.size(); imgIdx++) {
+        const Availability& avail = _imageAvailability[imgIdx];
+        if (avail.status < minAvailability) {
+            minAvailability = avail.status;
+            minWaitIndex = imgIdx;
         }
     }
 
     *pImageIndex = minWaitIndex;	// Return the index of the image with the shortest wait
-    _surfaceImages[minWaitIndex]->signalWhenAvailable((MVKSemaphore*)semaphore, (MVKFence*)fence);
+    signalWhenAvailable(minWaitIndex, (MVKSemaphore*)semaphore, (MVKFence*)fence);
     return getHasSurfaceSizeChanged() ? VK_ERROR_OUT_OF_DATE_KHR : VK_SUCCESS;
 }
 
@@ -112,6 +123,98 @@
  */
 void MVKSwapchain::releaseUndisplayedSurfaces() {}
 
+// Makes an image available for acquisition by the app.
+// If any semaphores are waiting to be signaled when this image becomes available, the
+// earliest semaphore is signaled, and this image remains unavailable for other uses.
+void MVKSwapchain::makeAvailable(uint32_t imgIdx) {
+	lock_guard<mutex> lock(_availabilityLock);
+	auto& availability = _imageAvailability[imgIdx].status;
+
+	// Mark when this event happened, relative to that of other images
+	availability.acquisitionID = getNextAcquisitionID();
+
+	// Mark this image as available if no semaphores or fences are waiting to be signaled.
+	availability.isAvailable = _imageAvailability[imgIdx].signalers.empty();
+
+	MVKSwapchainSignaler signaler;
+	if (availability.isAvailable) {
+		// If this image is available, signal the semaphore and fence that were associated
+		// with the last time this image was acquired while available. This is a workaround for
+		// when an app uses a single semaphore or fence for more than one swapchain image.
+		// Becuase the semaphore or fence will be signaled by more than one image, it will
+		// get out of sync, and the final use of the image would not be signaled as a result.
+		signaler = _imageAvailability[imgIdx].preSignaled;
+	} else {
+		// If this image is not yet available, extract and signal the first semaphore and fence.
+		auto& imgSignalers = _imageAvailability[imgIdx].signalers;
+		auto sigIter = imgSignalers.begin();
+		signaler = *sigIter;
+		imgSignalers.erase(sigIter);
+	}
+
+	// Signal the semaphore and fence, and let them know they are no longer being tracked.
+	signal(signaler, nil);
+	unmarkAsTracked(signaler);
+
+//	MVKLogDebug("Signaling%s swapchain image %p semaphore %p from present, with %lu remaining semaphores.", (_availability.isAvailable ? " pre-signaled" : ""), this, signaler.first, _availabilitySignalers.size());
+}
+
+void MVKSwapchain::signalWhenAvailable(uint32_t imageIndex, MVKSemaphore* semaphore, MVKFence* fence) {
+	lock_guard<mutex> lock(_availabilityLock);
+	auto signaler = make_pair(semaphore, fence);
+	auto& availability = _imageAvailability[imageIndex].status;
+	if (availability.isAvailable) {
+		availability.isAvailable = false;
+
+		// If signalling through a MTLEvent, use an ephemeral MTLCommandBuffer.
+		// Another option would be to use MTLSharedEvent in MVKSemaphore, but that might
+		// impose unacceptable performance costs to handle this particular case.
+		@autoreleasepool {
+			MVKSemaphore* mvkSem = signaler.first;
+			id<MTLCommandBuffer> mtlCmdBuff = (mvkSem && mvkSem->isUsingCommandEncoding()
+											   ? [_device->getQueue()->getMTLCommandQueue() commandBufferWithUnretainedReferences]
+											   : nil);
+			signal(signaler, mtlCmdBuff);
+			[mtlCmdBuff commit];
+		}
+
+		_imageAvailability[imageIndex].preSignaled = signaler;
+	} else {
+		_imageAvailability[imageIndex].signalers.push_back(signaler);
+	}
+	markAsTracked(signaler);
+
+//	MVKLogDebug("%s swapchain image %p semaphore %p in acquire with %lu other semaphores.", (_availability.isAvailable ? "Signaling" : "Tracking"), this, semaphore, _availabilitySignalers.size());
+}
+
+// Signal either or both of the semaphore and fence in the specified tracker pair.
+void MVKSwapchain::signal(MVKSwapchainSignaler& signaler, id<MTLCommandBuffer> mtlCmdBuff) {
+	if (signaler.first) { signaler.first->encodeSignal(mtlCmdBuff); }
+	if (signaler.second) { signaler.second->signal(); }
+}
+
+// If present, signal the semaphore for the first waiter for the given image.
+void MVKSwapchain::signalPresentationSemaphore(uint32_t imgIdx, id<MTLCommandBuffer> mtlCmdBuff) {
+	lock_guard<mutex> lock(_availabilityLock);
+	auto& imgSignalers = _imageAvailability[imgIdx].signalers;
+	if ( !imgSignalers.empty() ) {
+		MVKSemaphore* mvkSem = imgSignalers.front().first;
+		if (mvkSem) { mvkSem->encodeSignal(mtlCmdBuff); }
+	}
+}
+
+// Tell the semaphore and fence that they are being tracked for future signaling.
+void MVKSwapchain::markAsTracked(MVKSwapchainSignaler& signaler) {
+	if (signaler.first) { signaler.first->retain(); }
+	if (signaler.second) { signaler.second->retain(); }
+}
+
+// Tell the semaphore and fence that they are no longer being tracked for future signaling.
+void MVKSwapchain::unmarkAsTracked(MVKSwapchainSignaler& signaler) {
+	if (signaler.first) { signaler.first->release(); }
+	if (signaler.second) { signaler.second->release(); }
+}
+
 
 #pragma mark Rendering
 
@@ -242,12 +345,22 @@
 
 #pragma mark Metal
 
-id<CAMetalDrawable> MVKSwapchain::getNextCAMetalDrawable() {
-    id<CAMetalDrawable> nextDrwbl = nil;
-    while ( !(nextDrwbl = [_mtlLayer nextDrawable]) ) {
-        MVKLogError("Drawable could not be retrieved! Elapsed time: %.6f ms.", mvkGetElapsedMilliseconds());
+id<CAMetalDrawable> MVKSwapchain::getCAMetalDrawable(uint32_t imageIndex) {
+    if ( _mtlDrawables[imageIndex] ) { return _mtlDrawables[imageIndex]; }
+    @autoreleasepool {      // Allow auto-released drawable object to be reclaimed before end of loop
+        id<CAMetalDrawable> nextDrwbl = nil;
+        while ( !(nextDrwbl = [_mtlLayer nextDrawable]) ) {
+            MVKLogError("Drawable could not be retrieved! Elapsed time: %.6f ms.", mvkGetElapsedMilliseconds());
+        }
+        _mtlDrawables[imageIndex] = [nextDrwbl retain];
     }
-    return nextDrwbl;
+    return _mtlDrawables[imageIndex];
+}
+
+// Removes and releases a Metal drawable object, so that it can be lazily created by getCAMetalDrawable().
+void MVKSwapchain::resetCAMetalDrawable(uint32_t imgIdx) {
+	[_mtlDrawables[imgIdx] release];
+	_mtlDrawables[imgIdx] = nil;
 }
 
 
@@ -292,6 +405,10 @@
 																			   VK_IMAGE_USAGE_TRANSFER_DST_BIT |
 																			   VK_IMAGE_USAGE_SAMPLED_BIT |
 																			   VK_IMAGE_USAGE_STORAGE_BIT));
+	if (pCreateInfo->compositeAlpha != VK_COMPOSITE_ALPHA_INHERIT_BIT_KHR) {
+		_mtlLayer.opaque = pCreateInfo->compositeAlpha == VK_COMPOSITE_ALPHA_OPAQUE_BIT_KHR;
+	}
+
 	switch (pCreateInfo->imageColorSpace) {
 		case VK_COLOR_SPACE_SRGB_NONLINEAR_KHR:
 			_mtlLayer.colorspace = CGColorSpaceCreateWithName(kCGColorSpaceSRGB);
@@ -384,10 +501,20 @@
 	if (mvkAreAllFlagsEnabled(pCreateInfo->flags, VK_SWAPCHAIN_CREATE_MUTABLE_FORMAT_BIT_KHR)) {
 		mvkEnableFlag(imgInfo.flags, VK_IMAGE_CREATE_MUTABLE_FORMAT_BIT | VK_IMAGE_CREATE_EXTENDED_USAGE_BIT);
 	}
+	if (mvkAreAllFlagsEnabled(pCreateInfo->flags, VK_SWAPCHAIN_CREATE_SPLIT_INSTANCE_BIND_REGIONS_BIT_KHR)) {
+		// We don't really support this, but set the flag anyway.
+		mvkEnableFlag(imgInfo.flags, VK_IMAGE_CREATE_SPLIT_INSTANCE_BIND_REGIONS_BIT);
+	}
 
 	_surfaceImages.reserve(imgCnt);
+	_mtlDrawables.resize(imgCnt);
+	_imageAvailability.resize(imgCnt);
     for (uint32_t imgIdx = 0; imgIdx < imgCnt; imgIdx++) {
         _surfaceImages.push_back(_device->createSwapchainImage(&imgInfo, this, imgIdx, NULL));
+        _imageAvailability[imgIdx].status.acquisitionID = getNextAcquisitionID();
+        _imageAvailability[imgIdx].status.isAvailable = true;
+        _imageAvailability[imgIdx].preSignaled = make_pair(nullptr, nullptr);
+        _mtlDrawables[imgIdx] = nil;
     }
 
     MVKLogInfo("Created %d swapchain images with initial size (%d, %d).", imgCnt, imgExtent.width, imgExtent.height);
diff --git a/MoltenVK/MoltenVK/GPUObjects/MVKSync.h b/MoltenVK/MoltenVK/GPUObjects/MVKSync.h
index fa5f647..95c90c1 100644
--- a/MoltenVK/MoltenVK/GPUObjects/MVKSync.h
+++ b/MoltenVK/MoltenVK/GPUObjects/MVKSync.h
@@ -23,7 +23,6 @@
 #include <mutex>
 #include <condition_variable>
 #include <unordered_set>
-#include <vector>
 
 class MVKFenceSitter;
 
@@ -61,6 +60,9 @@
 	 */
 	bool release();
 
+	/** Returns whether this instance is in a reserved state. */
+	bool isReserved();
+
 	/**
 	 * Blocks processing on the current thread until any or all (depending on configuration) outstanding
      * reservations have been released, or until the specified timeout interval in nanoseconds expires.
@@ -82,7 +84,7 @@
 	 *
 	 * The waitAll parameter indicates whether a call to the release() function is required
 	 * for each call to the reserve() function (waitAll = true), or whether a single call 
-	 * to the release() function will release all outstanding reservations (waitAll = true). 
+	 * to the release() function will release all outstanding reservations (waitAll = false). 
 	 * This value defaults to true, indicating that each call to the reserve() function will
 	 * require a separate call to the release() function to cause the semaphore to stop blocking.
 	 */
@@ -107,7 +109,7 @@
 #pragma mark -
 #pragma mark MVKSemaphore
 
-/** Represents a Vulkan semaphore. */
+/** Abstract class that represents a Vulkan semaphore. */
 class MVKSemaphore : public MVKVulkanAPIDeviceObject {
 
 public:
@@ -118,42 +120,110 @@
 	/** Returns the debug report object type of this object. */
 	VkDebugReportObjectTypeEXT getVkDebugReportObjectType() override { return VK_DEBUG_REPORT_OBJECT_TYPE_SEMAPHORE_EXT; }
 
-	/** 
-	 * Blocks processing on the current thread until this semaphore is 
-	 * signaled, or until the specified timeout in nanoseconds expires.
+	/**
+	 * Wait for this semaphore to be signaled.
 	 *
-	 * If timeout is the special value UINT64_MAX the timeout is treated as infinite.
+	 * If the subclass uses command encoding AND the mtlCmdBuff is not nil, a wait
+	 * is encoded on the mtlCmdBuff, and this call returns immediately. Otherwise, if the
+	 * subclass does NOT use command encoding, AND the mtlCmdBuff is nil, this call blocks
+	 * indefinitely until this semaphore is signaled. Other combinations do nothing.
 	 *
-	 * Returns true if this semaphore was signaled, or false if the timeout interval expired.
+	 * This design allows this function to be blindly called twice, from different points in the
+	 * code path, once with a mtlCmdBuff to support encoding a wait on the command buffer if the
+	 * subclass supports command encoding, and once without a mtlCmdBuff, at the point in the
+	 * code path where the code should block if the subclass does not support command encoding.
 	 */
-	bool wait(uint64_t timeout = UINT64_MAX);
+	virtual void encodeWait(id<MTLCommandBuffer> mtlCmdBuff) = 0;
 
-	/** Signals the semaphore. Unblocks all waiting threads to continue processing. */
-	void signal();
+	/**
+	 * Signals this semaphore.
+	 *
+	 * If the subclass uses command encoding AND the mtlCmdBuff is not nil, a signal is
+	 * encoded on the mtlCmdBuff. Otherwise, if the subclass does NOT use command encoding,
+	 * AND the mtlCmdBuff is nil, this call immediately signals any waiting calls.
+	 * Either way, this call returns immediately. Other combinations do nothing.
+	 *
+	 * This design allows this function to be blindly called twice, from different points in the
+	 * code path, once with a mtlCmdBuff to support encoding a wait on the command buffer if the
+	 * subclass supports command encoding, and once without a mtlCmdBuff, at the point in the
+	 * code path where the code should block if the subclass does not support command encoding.
+	 */
+	virtual void encodeSignal(id<MTLCommandBuffer> mtlCmdBuff) = 0;
 
-	/** Encodes an operation to block command buffer operation until this semaphore is signaled. */
-	void encodeWait(id<MTLCommandBuffer> cmdBuff);
-
-	/** Encodes an operation to signal the semaphore. */
-	void encodeSignal(id<MTLCommandBuffer> cmdBuff);
+	/** Returns whether this semaphore uses command encoding. */
+	virtual bool isUsingCommandEncoding() = 0;
 
 
 #pragma mark Construction
 
-    MVKSemaphore(MVKDevice* device, const VkSemaphoreCreateInfo* pCreateInfo);
-
-    ~MVKSemaphore() override;
+    MVKSemaphore(MVKDevice* device, const VkSemaphoreCreateInfo* pCreateInfo) : MVKVulkanAPIDeviceObject(device) {}
 
 protected:
 	void propogateDebugName() override {}
 
-	MVKSemaphoreImpl _blocker;
+};
+
+
+#pragma mark -
+#pragma mark MVKSemaphoreMTLFence
+
+/** An MVKSemaphore that uses MTLFence to provide synchronization. */
+class MVKSemaphoreMTLFence : public MVKSemaphore {
+
+public:
+	void encodeWait(id<MTLCommandBuffer> mtlCmdBuff) override;
+	void encodeSignal(id<MTLCommandBuffer> mtlCmdBuff) override;
+	bool isUsingCommandEncoding() override { return true; }
+
+	MVKSemaphoreMTLFence(MVKDevice* device, const VkSemaphoreCreateInfo* pCreateInfo);
+
+	~MVKSemaphoreMTLFence() override;
+
+protected:
+	id<MTLFence> _mtlFence;
+};
+
+
+#pragma mark -
+#pragma mark MVKSemaphoreMTLEvent
+
+/** An MVKSemaphore that uses MTLEvent to provide synchronization. */
+class MVKSemaphoreMTLEvent : public MVKSemaphore {
+
+public:
+	void encodeWait(id<MTLCommandBuffer> mtlCmdBuff) override;
+	void encodeSignal(id<MTLCommandBuffer> mtlCmdBuff) override;
+	bool isUsingCommandEncoding() override { return true; }
+
+	MVKSemaphoreMTLEvent(MVKDevice* device, const VkSemaphoreCreateInfo* pCreateInfo);
+
+	~MVKSemaphoreMTLEvent() override;
+
+protected:
 	id<MTLEvent> _mtlEvent;
 	std::atomic<uint64_t> _mtlEventValue;
 };
 
 
 #pragma mark -
+#pragma mark MVKSemaphoreEmulated
+
+/** An MVKSemaphore that uses CPU synchronization to provide synchronization functionality. */
+class MVKSemaphoreEmulated : public MVKSemaphore {
+
+public:
+	void encodeWait(id<MTLCommandBuffer> mtlCmdBuff) override;
+	void encodeSignal(id<MTLCommandBuffer> mtlCmdBuff) override;
+	bool isUsingCommandEncoding() override { return false; }
+
+	MVKSemaphoreEmulated(MVKDevice* device, const VkSemaphoreCreateInfo* pCreateInfo);
+
+protected:
+	MVKSemaphoreImpl _blocker;
+};
+
+
+#pragma mark -
 #pragma mark MVKFence
 
 /** Represents a Vulkan fence. */
@@ -248,6 +318,84 @@
 
 
 #pragma mark -
+#pragma mark MVKEvent
+
+/** Abstract class that represents a Vulkan event. */
+class MVKEvent : public MVKVulkanAPIDeviceObject {
+
+public:
+
+	/** Returns the Vulkan type of this object. */
+	VkObjectType getVkObjectType() override { return VK_OBJECT_TYPE_EVENT; }
+
+	/** Returns the debug report object type of this object. */
+	VkDebugReportObjectTypeEXT getVkDebugReportObjectType() override { return VK_DEBUG_REPORT_OBJECT_TYPE_EVENT_EXT; }
+
+	/** Returns whether this event is set. */
+	virtual bool isSet() = 0;
+
+	/** Sets the signal status. */
+	virtual void signal(bool status) = 0;
+
+	/** Encodes an operation to signal the event with a status. */
+	virtual void e