diff --git a/.github/workflows/CI.yml b/.github/workflows/CI.yml index 9ad882562..cb7921959 100644 --- a/.github/workflows/CI.yml +++ b/.github/workflows/CI.yml @@ -15,20 +15,20 @@ jobs: build: strategy: matrix: - xcode: [ "13.2.1" ] + xcode: [ "14.2" ] platform: [ "macos", "maccat", "ios", "tvos" ] os: [ "macos-latest" ] upload_artifacts: [ true ] # additional specific configurations include: - # "Legacy" Xcode 11.7 & 12.5.1 macOS builds - - xcode: "11.7" + # "Legacy" Xcode 12.5.1 & 11.7 macOS builds + - xcode: "12.5.1" platform: "macos" - os: "macos-10.15" + os: "macos-11" upload_artifacts: false - - xcode: "12.5.1" + - xcode: "11.7" platform: "macos" - os: "macos-11" + os: "macos-11" upload_artifacts: false fail-fast: false diff --git a/Common/MVKCommonEnvironment.h b/Common/MVKCommonEnvironment.h index d91397933..ca6fe5239 100644 --- a/Common/MVKCommonEnvironment.h +++ b/Common/MVKCommonEnvironment.h @@ -1,7 +1,7 @@ /* * MVKCommonEnvironment.h * - * Copyright (c) 2015-2022 The Brenwill Workshop Ltd. (http://www.brenwill.com) + * Copyright (c) 2015-2023 The Brenwill Workshop Ltd. (http://www.brenwill.com) * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. @@ -102,8 +102,7 @@ extern "C" { #endif /** Directive to identify public symbols. */ -#define MVK_PUBLIC_SYMBOL __attribute__((visibility("default"))) - +#define MVK_PUBLIC_SYMBOL __attribute__((visibility("default"))) __attribute__((used)) /** Directive to make a public alias of another symbol. */ #define MVK_PUBLIC_ALIAS(ALIAS, TARGET) asm(".globl _" #ALIAS "\n\t_" #ALIAS " = _" #TARGET) diff --git a/Common/MVKOSExtensions.h b/Common/MVKOSExtensions.h index 97dc9995e..fde73c5c1 100644 --- a/Common/MVKOSExtensions.h +++ b/Common/MVKOSExtensions.h @@ -1,7 +1,7 @@ /* * MVKOSExtensions.h * - * Copyright (c) 2015-2022 The Brenwill Workshop Ltd. (http://www.brenwill.com) + * Copyright (c) 2015-2023 The Brenwill Workshop Ltd. (http://www.brenwill.com) * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. @@ -162,3 +162,5 @@ uint64_t mvkGetAvailableMemorySize(); /** Returns the amount of memory currently used by this process. */ uint64_t mvkGetUsedMemorySize(); +/** Returns the size of a page of host memory on this platform. */ +uint64_t mvkGetHostMemoryPageSize(); diff --git a/Common/MVKOSExtensions.mm b/Common/MVKOSExtensions.mm index 006c9ea32..6c023086a 100644 --- a/Common/MVKOSExtensions.mm +++ b/Common/MVKOSExtensions.mm @@ -1,7 +1,7 @@ /* * MVKOSExtensions.mm * - * Copyright (c) 2015-2022 The Brenwill Workshop Ltd. (http://www.brenwill.com) + * Copyright (c) 2015-2023 The Brenwill Workshop Ltd. (http://www.brenwill.com) * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. @@ -136,3 +136,5 @@ uint64_t mvkGetUsedMemorySize() { return 0; } +uint64_t mvkGetHostMemoryPageSize() { return sysconf(_SC_PAGESIZE); } + diff --git a/Common/MVKStrings.h b/Common/MVKStrings.h index d5dffa41c..ec78d9ad7 100644 --- a/Common/MVKStrings.h +++ b/Common/MVKStrings.h @@ -1,7 +1,7 @@ /* * MVKStrings.h * - * Copyright (c) 2015-2022 The Brenwill Workshop Ltd. (http://www.brenwill.com) + * Copyright (c) 2015-2023 The Brenwill Workshop Ltd. (http://www.brenwill.com) * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. diff --git a/Demos/Cube/Cube.xcodeproj/project.pbxproj b/Demos/Cube/Cube.xcodeproj/project.pbxproj index 9d8812b09..44654e514 100644 --- a/Demos/Cube/Cube.xcodeproj/project.pbxproj +++ b/Demos/Cube/Cube.xcodeproj/project.pbxproj @@ -246,7 +246,7 @@ 29B97313FDCFA39411CA2CEA /* Project object */ = { isa = PBXProject; attributes = { - LastUpgradeCheck = 1400; + LastUpgradeCheck = 1410; }; buildConfigurationList = C01FCF4E08A954540054247B /* Build configuration list for PBXProject "Cube" */; compatibilityVersion = "Xcode 8.0"; diff --git a/Demos/Cube/Cube.xcodeproj/xcshareddata/xcschemes/Cube-iOS.xcscheme b/Demos/Cube/Cube.xcodeproj/xcshareddata/xcschemes/Cube-iOS.xcscheme index a24f509ba..194e4c08b 100644 --- a/Demos/Cube/Cube.xcodeproj/xcshareddata/xcschemes/Cube-iOS.xcscheme +++ b/Demos/Cube/Cube.xcodeproj/xcshareddata/xcschemes/Cube-iOS.xcscheme @@ -1,6 +1,6 @@ LSMinimumSystemVersion ${MACOSX_DEPLOYMENT_TARGET} NSHumanReadableCopyright - Copyright (c) 2015-2022 The Brenwill Workshop Ltd. All rights reserved. + Copyright (c) 2015-2023 The Brenwill Workshop Ltd. All rights reserved. NSMainStoryboardFile Main NSPrincipalClass diff --git a/Demos/Cube/macOS/main.m b/Demos/Cube/macOS/main.m index e49b02740..6a465339d 100644 --- a/Demos/Cube/macOS/main.m +++ b/Demos/Cube/macOS/main.m @@ -1,7 +1,7 @@ /* * main.m * - * Copyright (c) 2015-2022 The Brenwill Workshop Ltd. (http://www.brenwill.com) + * Copyright (c) 2015-2023 The Brenwill Workshop Ltd. (http://www.brenwill.com) * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. diff --git a/Demos/README.md b/Demos/README.md index 9ab40c864..29fddb101 100644 --- a/Demos/README.md +++ b/Demos/README.md @@ -6,7 +6,7 @@ #MoltenVK Demo Projects -Copyright (c) 2015-2022 [The Brenwill Workshop Ltd.](http://www.brenwill.com) +Copyright (c) 2015-2023 [The Brenwill Workshop Ltd.](http://www.brenwill.com) [comment]: # "This document is written in Markdown (http://en.wikipedia.org/wiki/Markdown) format." [comment]: # "For best results, use a Markdown reader." diff --git a/Docs/MoltenVK_Runtime_UserGuide.md b/Docs/MoltenVK_Runtime_UserGuide.md index 2dbb67dc4..a4d951594 100644 --- a/Docs/MoltenVK_Runtime_UserGuide.md +++ b/Docs/MoltenVK_Runtime_UserGuide.md @@ -7,7 +7,7 @@ MoltenVK Runtime User Guide =========================== -Copyright (c) 2015-2022 [The Brenwill Workshop Ltd.](http://www.brenwill.com) +Copyright (c) 2015-2023 [The Brenwill Workshop Ltd.](http://www.brenwill.com) [comment]: # "This document is written in Markdown (http://en.wikipedia.org/wiki/Markdown) format." [comment]: # "For best results, use a Markdown reader." @@ -22,6 +22,7 @@ Table of Contents - [Installing **MoltenVK** in Your *Vulkan* Application](#install) - [Install *MoltenVK* as a Universal `XCFramework`](#install_xcfwk) - [Install *MoltenVK* as a Dynamic Library](#install_dylib) + - [Install *MoltenVK* replacing the Vulkan SDK `libMoltenVK.dylib`](#install_vksdk) - [Build and Runtime Requirements](#requirements) - [Interacting with the **MoltenVK** Runtime](#interaction) - [MoltenVK `VK_MVK_moltenvk` Extension](#moltenvk_extension) @@ -53,7 +54,7 @@ distribution package, see the main [`README.md`](../README.md) document in the ` About **MoltenVK** ------------------ -**MoltenVK** is a layered implementation of [*Vulkan 1.1*](https://www.khronos.org/vulkan) +**MoltenVK** is a layered implementation of [*Vulkan 1.2*](https://www.khronos.org/vulkan) graphics and compute functionality, that is built on Apple's [*Metal*](https://developer.apple.com/metal) graphics and compute framework on *macOS*, *iOS*, and *tvOS*. **MoltenVK** allows you to use *Vulkan* graphics and compute functionality to develop modern, cross-platform, high-performance graphical games @@ -87,6 +88,20 @@ as an `XCFramework`, as it is the simpler option, and encompasses the largest se ### Install *MoltenVK* as a Universal `XCFramework` +> ***Note:*** *Xcode 14* introduced a new static linkage model that is not compatible with previous +versions of *Xcode*. If you link to a `MoltenVK.xcframework` that was built with *Xcode 14* or later, +also use *Xcode 14* or later to link it to your app or game. +> +> If you need to use *Xcode 13* or earlier to link `MoltenVK.xcframework` to your app or game, +first [build](../README.md#building) **MoltenVK** with *Xcode 13* or earlier. +> +> Or, if you want to use *Xcode 14* or later to [build](../README.md#building) **MoltenVK**, in order to be able to use the latest +*Metal* capabilities, but need to use *Xcode 13* or earlier to link `MoltenVK.xcframework` to your +app or game, first add the value `-fno-objc-msgsend-selector-stubs` to the `OTHER_CFLAGS` +*Xcode* build setting in the `MoltenVK.xcodeproj` and `MoltenVKShaderConverter.xcodeproj` *Xcode* +projects, [build](../README.md#building) **MoltenVK** with *Xcode 14* or later, and then link `MoltenVK.xcframework` +to your app or game using *Xcode 13* or earlier. + To link **MoltenVK** to your application as an `XCFramework`, follow these steps: 1. Open your application in *Xcode* and select your application's target in the @@ -205,6 +220,39 @@ To link **MoltenVK** to your application as a dynamic library (`.dylib`), follow - `MoltenVK/dylib/tvOS/libMoltenVK.dylib` *(tvOS)* + +### Install *MoltenVK* replacing the Vulkan SDK `libMoltenVK.dylib` + +There are a few potential issues when building **MoltenVK** to replace the version installed via +the *[Vulkan SDK](https://vulkan.lunarg.com/sdk/home)* standard install process, which lives in +`/usr/local/lib/libMoltenVK.dylib`. + +1. You must *remove* the existing `.dylib` file before copying the new one, because of the way +that the gatekeeper system works to prevent malicious overwriting of files in standard locations +such as `/usr/local`: + +```bash +$ sudo rm /usr/local/lib/libMoltenVK.dylib +$ sudo cp Package/Release/MoltenVK/dylib/macOS/libMoltenVK.dylib /usr/local/lib +``` + +If you do not do the remove first, your application will terminate immediately with a +singularly unhelpful `Killed: 9` message. Alternatively, moving the existing `.dylib` to a +backup name and making a symbolic link to the Package location above is particularly useful +for repeated building and testing. + +2. Do *not* copy the `MoltenVK_icd.json` file from the newly-built package to +`/usr/local/share/vulkan/icd.d` -- it will not work and will result in errors about not being +able to initialize the instance. The one installed by Vulkan SDK uses a relative path to +specify the location of the `.dylib`, whereas the one in the package specifies it in the same +directory. + +3. The default config for command-line build has verbose logging info turned on -- if you want +it to be like the original, use this command for building: + +```bash +$ make macos MVK_CONFIG_LOG_LEVEL=1 +``` ### Build and Runtime Requirements @@ -264,6 +312,7 @@ In addition to core *Vulkan* functionality, **MoltenVK** also supports the foll - `VK_KHR_8bit_storage` - `VK_KHR_bind_memory2` - `VK_KHR_buffer_device_address` *(requires GPU Tier 2 argument buffers support)* +- `VK_KHR_copy_commands2` - `VK_KHR_create_renderpass2` - `VK_KHR_dedicated_allocation` - `VK_KHR_depth_stencil_resolve` @@ -281,6 +330,7 @@ In addition to core *Vulkan* functionality, **MoltenVK** also supports the foll - `VK_KHR_maintenance1` - `VK_KHR_maintenance2` - `VK_KHR_maintenance3` +- `VK_KHR_map_memory2` - `VK_KHR_multiview` - `VK_KHR_portability_subset` - `VK_KHR_push_descriptor` @@ -292,6 +342,7 @@ In addition to core *Vulkan* functionality, **MoltenVK** also supports the foll - `VK_KHR_shader_float_controls` - `VK_KHR_shader_float16_int8` - `VK_KHR_shader_subgroup_extended_types` *(requires Metal 2.1 on Mac or Metal 2.2 and Apple family 4 on iOS)* +- `VK_KHR_spirv_1_4` - `VK_KHR_storage_buffer_storage_class` - `VK_KHR_surface` - `VK_KHR_swapchain` @@ -306,6 +357,7 @@ In addition to core *Vulkan* functionality, **MoltenVK** also supports the foll - `VK_EXT_descriptor_indexing` *(initial release limited to Metal Tier 1: 96/128 textures, 16 samplers, except macOS 11.0 (Big Sur) or later, or on older versions of macOS using an Intel GPU, and if Metal argument buffers enabled in config)* +- `VK_EXT_external_memory_host` - `VK_EXT_fragment_shader_interlock` *(requires Metal 2.0 and Raster Order Groups)* - `VK_EXT_host_query_reset` - `VK_EXT_image_robustness` @@ -313,16 +365,20 @@ In addition to core *Vulkan* functionality, **MoltenVK** also supports the foll - `VK_EXT_memory_budget` *(requires Metal 2.0)* - `VK_EXT_metal_objects` - `VK_EXT_metal_surface` +- `VK_EXT_pipeline_creation_cache_control` - `VK_EXT_post_depth_coverage` *(iOS and macOS, requires family 4 (A11) or better Apple GPU)* - `VK_EXT_private_data ` - `VK_EXT_robustness2` - `VK_EXT_sample_locations` - `VK_EXT_scalar_block_layout` - `VK_EXT_separate_stencil_usage` +- `VK_EXT_shader_atomic_float` *(requires Metal 3.0)* - `VK_EXT_shader_stencil_export` *(requires Mac GPU family 2 or iOS GPU family 5)* - `VK_EXT_shader_viewport_index_layer` - `VK_EXT_subgroup_size_control` *(requires Metal 2.1 on Mac or Metal 2.2 and Apple family 4 on iOS)* +- `VK_EXT_surface_maintenance1` - `VK_EXT_swapchain_colorspace` +- `VK_EXT_swapchain_maintenance1` - `VK_EXT_vertex_attribute_divisor` - `VK_EXT_texel_buffer_alignment` *(requires Metal 2.0)* - `VK_EXT_texture_compression_astc_hdr` *(iOS and macOS, requires family 6 (A13) or better Apple GPU)* diff --git a/Docs/Whats_New.md b/Docs/Whats_New.md index 1fca6740f..ef3d3eb3d 100644 --- a/Docs/Whats_New.md +++ b/Docs/Whats_New.md @@ -6,20 +6,135 @@ # What's New in MoltenVK -Copyright (c) 2015-2022 [The Brenwill Workshop Ltd.](http://www.brenwill.com) +Copyright (c) 2015-2023 [The Brenwill Workshop Ltd.](http://www.brenwill.com) [comment]: # "This document is written in Markdown (http://en.wikipedia.org/wiki/Markdown) format." [comment]: # "For best results, use a Markdown reader." -MoltenVK 1.1.12 +MoltenVK 1.2.3 -------------- -Released TBD +Released 2023/03/22 +- Add support for extensions: + - `VK_EXT_external_memory_host` + - `VK_EXT_pipeline_creation_cache_control` + - `VK_EXT_shader_atomic_float` + - `VK_EXT_surface_maintenance1` + - `VK_EXT_swapchain_maintenance1` +- Fix crash when `VkCommandBufferInheritanceInfo::renderPass` is `VK_NULL_HANDLE` during dynamic rendering. +- Do not clear attachments when dynamic rendering is resumed. +- Allow ending dynamic rendering to trigger next multiview pass if needed. +- Fix premature caching of occlusion query results during tessellation rendering. +- `vkCmdCopyQueryPoolResults()`: Fix loss of queries when query count is not a multiple of GPU threadgroup execution width. +- Disable occlusion recording while clearing attachments or render area. +- Fix issue where extension `VK_KHR_fragment_shader_barycentric` was sometimes incorrectly disabled due to a Metal driver bug. +- Detect when size of surface has changed under the covers. +- Change rounding of surface size provided by Metal from truncation to rounding-with-half-to-even. +- Queue submissions retain wait semaphores until `MTLCommandBuffer` finishes. +- Use a different visibility buffer for each `MTLCommandBuffer` in a queue submit. +- Work around problems with using explicit LoD with arrayed depth images on Apple Silicon. +- Fix issue when `VkPipelineVertexInputDivisorStateCreateInfoEXT::vertexBindingDivisorCount` + doesn't match `VkPipelineVertexInputStateCreateInfo::vertexBindingDescriptionCount`. +- Support Apple Silicon pixel formats on a MoltenVK `x86_64` build that is running on Apple Silicon using Rosetta2. +- Reduce memory footprint of MSL source code retained in pipeline cache. +- Add `MVKConfiguration::shaderSourceCompressionAlgorithm` and + env var `MVK_CONFIG_SHADER_COMPRESSION_ALGORITHM` to support + compressing MSL shader source code held in a pipeline cache. +- Add `MVKShaderCompilationPerformance::mslCompress` and `mslDecompress` + to allow performance of MSL compression to be tracked and queried. +- Add support for logging performance stats accumulated in a `VkDevice`, when it is destroyed. +- Change `MVKConfiguration::logActivityPerformanceInline` boolean to `activityPerformanceLoggingStyle` enumeration value. +- Add `MVK_CONFIG_ACTIVITY_PERFORMANCE_LOGGING_STYLE` environment variable and + build setting to set `MVKConfiguration::activityPerformanceLoggingStyle` value. +- Expand `MVK_CONFIG_TRACE_VULKAN_CALLS` to log thread ID only if requested. +- Update `VK_MVK_MOLTENVK_SPEC_VERSION` to version `37`. +- Update dependency libraries to match _Vulkan SDK 1.3.243_. +- Update to latest SPIRV-Cross: + - MSL: Add support for `OpAtomicFAddEXT` atomic add on float types + - MSL: Add a workaround for broken `level()` arguments. + - MSL: Deduplicate function constants. + + + +MoltenVK 1.2.2 +-------------- + +Released 2023/01/23 + +- Fix Metal validation error caused by `CAMetalDrawable` released before + `MTLCommandBuffer` is finished using it. +- Fix memory leak of `MVKFences` and `MVKSemaphores` when + a swapchain image is acquired more than it is presented. +- Fix issue where fragment shader was not run when no render attachment is available. +- Ensure Vulkan public symbols are not stripped from the library when + statically linked to an app that calls all Vulkan functions dynamically. +- Per Vulkan 1.2 spec, support calling `vkGetInstanceProcAddr()` with a + null instance, when `vkGetInstanceProcAddr` itself is the function name. +- Update `VkPhysicalDeviceLimits` members `maxClipDistances` and + `maxCombinedClipAndCullDistances` to more accurate values. +- Update `VkPhysicalDeviceLimits::maxDrawIndexedIndexValue` to + acknowledge automatic primitive restart. +- Update copyright notices to year 2023. +- Update dependency libraries to match _Vulkan SDK 1.3.239_. +- Update to latest SPIRV-Cross: + - MSL: Add support for writable images in iOS Tier2 argument buffers. + - MSL: Fix potentially uninitialized warnings. + + + +MoltenVK 1.2.1 +-------------- + +Released 2022/12/08 + +- Add support for extensions: + - `VK_KHR_copy_commands2` +- Fix crash on descriptor update with out-of-bounds descriptor count data. +- Fix Metal buffer index binding overrides for push constants and attachment clearing. +- Fix crash when buffer binding updates only offset while it is overridden. +- Fix app performance regression triggered by the previous introduction of `VK_KHR_shader_float_controls`. +- Work around `MTLCounterSet` crash on additional Intel Iris Plus Graphics devices. +- Fix mistaken YCBCR format support indication. +- Fix invalid blit offsets. +- Wait on emulated semaphores only once to prevent freezing when using prefilled command buffers. +- `MVKPipeline`: Stop using vertex-style input for tessellation evaluation shaders. +- `MVKPipeline`: Force extra checks for stores after fragment discard. +- `MVKImage`: Always use a texel buffer for atomic storage images. +- `MVKDevice`: Fix backwards attribution of storage/uniform texel buffer alignments. +- Document new linkage model used by *Xcode 14* and later, and how to link **MoltenVK** + to an app or game using *Xcode 13* or earlier. +- Support *Xcode 14.1* build settings. +- Upgrade GitHub CI to use *Xcode 14.1* on *macOS 12*. +- Update dependency libraries to match _Vulkan SDK 1.3.236_. +- Update to latest SPIRV-Cross: + - MSL: Implement `CompositeInsert` `OpSpecConstantOp`. + - MSL: Support "raw" buffer input in tessellation evaluation shaders. + - MSL: Don't flatten arrayed per-patch output blocks in tessellation shaders. + - MSL: Account for composite types when assigning locations. + - MSL: Handle partial access chains with array-of-UBO/SSBO. + - MSL: Fix restrict vs __restrict incompatibility. + - MSL: Handle implicit integer promotion rules. + - MSL: Manually update `BuiltInHelperInvocation` when a fragment is discarded. + - MSL: Add missing casts to `Op?MulExtended`. + - MSL: Prevent stores to storage resources in discarded fragments. + - MSL: Don't dereference forwarded copies of `OpVariable` pointers. + - MSL: Refactor member reference in terms of one boolean. + - Fix MSL Access Chain. + + + +MoltenVK 1.2.0 +-------------- + +Released 2022/10/17 + +- Add support for _Vulkan 1.2_. - Add support for extensions: - `VK_KHR_shader_float_controls` + - `VK_KHR_spirv_1_4` - Vulkan semaphore functional improvements: - Replace use of `MTLFence` with an option to limit to a single Vulkan queue and use Metal's implicit submisison order guarantees. - Support option to force use of `MTLEvents` for Vulkan semaphores on NVIDIA and Rosetta2. @@ -27,10 +142,28 @@ Released TBD - Support config option to automatically use Metal argument buffers when `VK_EXT_descriptor_indexing` extension is enabled. `MVKConfiguration::useMetalArgumentBuffers` (`MVK_CONFIG_USE_METAL_ARGUMENT_BUFFERS`) is now an enum field. The use of Metal argument buffers is still disabled by default (`MVK_CONFIG_USE_METAL_ARGUMENT_BUFFERS_NEVER`). +- Fix memory leaks when configured for prefilling Metal command buffers. +- `MVKConfiguration` replace boolean `prefillMetalCommandBuffers` with enumeration. +- `MVKPipeline`: Add builtins that are read but not written to tessellation pipelines. - Fix occassional crash from retention of `MVKSwapchain` for future drawable presentations. +- Fix crash in `vkCreateSwapchainKHR()` on macOS 10.14 and earlier - Fix undefined reference to `vkGetBufferDeviceAddressEXT` when building with `MVK_HIDE_VULKAN_SYMBOLS=1`. +- Update `Makefile` to forward any build setting declared on the command line to Xcode. +- Add _**non-functional** Vulkan 1.3_ core function **_stubs_**, to avoid link errors with some external + libraries that assume _Vulkan 1.3_ linkages from the standard _Vulkan_ header files included with **MoltenVK**. - Add `MVK_USE_CEREAL` build setting to avoid use of Cereal external library (for pipeline caching). +- `MoltenVKShaderConverter` tool automatically maps bindings when converting _GLSL_. - Update `VK_MVK_MOLTENVK_SPEC_VERSION` to version `36`. +- Update to latest SPIRV-Cross: + - MSL: Support `OpPtrEqual`, `OpPtrNotEqual`, and `OpPtrDiff`. + - MSL: Emit correct address space when casting during `OpStore`. + - MSL: Add a mechanism to fix up shader outputs. + - MSL: Handle descriptor aliasing of raw buffer descriptors. + - MSL: Do not attempt to alias push constants. + - MSL: only fix up `gl_FragCoord` if really necessary. + - MSL: Expose way to query if a buffer needs array length. + - MSL: Report unsupported 64-bit atomics. + - Don't rename remapped variables like `gl_LastFragDepthARM` diff --git a/ExternalDependencies.xcodeproj/project.pbxproj b/ExternalDependencies.xcodeproj/project.pbxproj index 4b29b10e6..b450046ef 100644 --- a/ExternalDependencies.xcodeproj/project.pbxproj +++ b/ExternalDependencies.xcodeproj/project.pbxproj @@ -85,1227 +85,6 @@ 450A4F66221C5A95007203D7 /* spirv_reflect.hpp in Headers */ = {isa = PBXBuildFile; fileRef = 450A4F63221C5A95007203D7 /* spirv_reflect.hpp */; }; 450A4F67221C5A95007203D7 /* spirv_reflect.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 450A4F64221C5A95007203D7 /* spirv_reflect.cpp */; }; 450A4F68221C5A95007203D7 /* spirv_reflect.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 450A4F64221C5A95007203D7 /* spirv_reflect.cpp */; }; - A926B7B327AC718900144157 /* spirv_target_env.cpp in Sources */ = {isa = PBXBuildFile; fileRef = A926B47F27AC718800144157 /* spirv_target_env.cpp */; }; - A926B7B427AC718900144157 /* spirv_target_env.cpp in Sources */ = {isa = PBXBuildFile; fileRef = A926B47F27AC718800144157 /* spirv_target_env.cpp */; }; - A926B7B527AC718900144157 /* spirv_target_env.cpp in Sources */ = {isa = PBXBuildFile; fileRef = A926B47F27AC718800144157 /* spirv_target_env.cpp */; }; - A926B7B627AC718900144157 /* spirv_fuzzer_options.h in Headers */ = {isa = PBXBuildFile; fileRef = A926B48027AC718800144157 /* spirv_fuzzer_options.h */; }; - A926B7B727AC718900144157 /* spirv_fuzzer_options.h in Headers */ = {isa = PBXBuildFile; fileRef = A926B48027AC718800144157 /* spirv_fuzzer_options.h */; }; - A926B7B827AC718900144157 /* spirv_fuzzer_options.h in Headers */ = {isa = PBXBuildFile; fileRef = A926B48027AC718800144157 /* spirv_fuzzer_options.h */; }; - A926B7B927AC718900144157 /* assembly_grammar.h in Headers */ = {isa = PBXBuildFile; fileRef = A926B48127AC718800144157 /* assembly_grammar.h */; }; - A926B7BA27AC718900144157 /* assembly_grammar.h in Headers */ = {isa = PBXBuildFile; fileRef = A926B48127AC718800144157 /* assembly_grammar.h */; }; - A926B7BB27AC718900144157 /* assembly_grammar.h in Headers */ = {isa = PBXBuildFile; fileRef = A926B48127AC718800144157 /* assembly_grammar.h */; }; - A926B7BC27AC718900144157 /* lint_divergent_derivatives.cpp in Sources */ = {isa = PBXBuildFile; fileRef = A926B48427AC718800144157 /* lint_divergent_derivatives.cpp */; }; - A926B7BD27AC718900144157 /* lint_divergent_derivatives.cpp in Sources */ = {isa = PBXBuildFile; fileRef = A926B48427AC718800144157 /* lint_divergent_derivatives.cpp */; }; - A926B7BE27AC718900144157 /* lint_divergent_derivatives.cpp in Sources */ = {isa = PBXBuildFile; fileRef = A926B48427AC718800144157 /* lint_divergent_derivatives.cpp */; }; - A926B7BF27AC718900144157 /* linter.cpp in Sources */ = {isa = PBXBuildFile; fileRef = A926B48527AC718800144157 /* linter.cpp */; }; - A926B7C027AC718900144157 /* linter.cpp in Sources */ = {isa = PBXBuildFile; fileRef = A926B48527AC718800144157 /* linter.cpp */; }; - A926B7C127AC718900144157 /* linter.cpp in Sources */ = {isa = PBXBuildFile; fileRef = A926B48527AC718800144157 /* linter.cpp */; }; - A926B7C227AC718900144157 /* divergence_analysis.cpp in Sources */ = {isa = PBXBuildFile; fileRef = A926B48627AC718800144157 /* divergence_analysis.cpp */; }; - A926B7C327AC718900144157 /* divergence_analysis.cpp in Sources */ = {isa = PBXBuildFile; fileRef = A926B48627AC718800144157 /* divergence_analysis.cpp */; }; - A926B7C427AC718900144157 /* divergence_analysis.cpp in Sources */ = {isa = PBXBuildFile; fileRef = A926B48627AC718800144157 /* divergence_analysis.cpp */; }; - A926B7C527AC718900144157 /* lints.h in Headers */ = {isa = PBXBuildFile; fileRef = A926B48727AC718800144157 /* lints.h */; }; - A926B7C627AC718900144157 /* lints.h in Headers */ = {isa = PBXBuildFile; fileRef = A926B48727AC718800144157 /* lints.h */; }; - A926B7C727AC718900144157 /* lints.h in Headers */ = {isa = PBXBuildFile; fileRef = A926B48727AC718800144157 /* lints.h */; }; - A926B7C827AC718900144157 /* divergence_analysis.h in Headers */ = {isa = PBXBuildFile; fileRef = A926B48827AC718800144157 /* divergence_analysis.h */; }; - A926B7C927AC718900144157 /* divergence_analysis.h in Headers */ = {isa = PBXBuildFile; fileRef = A926B48827AC718800144157 /* divergence_analysis.h */; }; - A926B7CA27AC718900144157 /* divergence_analysis.h in Headers */ = {isa = PBXBuildFile; fileRef = A926B48827AC718800144157 /* divergence_analysis.h */; }; - A926B7CB27AC718900144157 /* enum_set.h in Headers */ = {isa = PBXBuildFile; fileRef = A926B48927AC718800144157 /* enum_set.h */; }; - A926B7CC27AC718900144157 /* enum_set.h in Headers */ = {isa = PBXBuildFile; fileRef = A926B48927AC718800144157 /* enum_set.h */; }; - A926B7CD27AC718900144157 /* enum_set.h in Headers */ = {isa = PBXBuildFile; fileRef = A926B48927AC718800144157 /* enum_set.h */; }; - A926B7CE27AC718900144157 /* text.cpp in Sources */ = {isa = PBXBuildFile; fileRef = A926B48B27AC718800144157 /* text.cpp */; }; - A926B7CF27AC718900144157 /* text.cpp in Sources */ = {isa = PBXBuildFile; fileRef = A926B48B27AC718800144157 /* text.cpp */; }; - A926B7D027AC718900144157 /* text.cpp in Sources */ = {isa = PBXBuildFile; fileRef = A926B48B27AC718800144157 /* text.cpp */; }; - A926B7D127AC718900144157 /* assembly_grammar.cpp in Sources */ = {isa = PBXBuildFile; fileRef = A926B48C27AC718800144157 /* assembly_grammar.cpp */; }; - A926B7D227AC718900144157 /* assembly_grammar.cpp in Sources */ = {isa = PBXBuildFile; fileRef = A926B48C27AC718800144157 /* assembly_grammar.cpp */; }; - A926B7D327AC718900144157 /* assembly_grammar.cpp in Sources */ = {isa = PBXBuildFile; fileRef = A926B48C27AC718800144157 /* assembly_grammar.cpp */; }; - A926B7D427AC718900144157 /* text.h in Headers */ = {isa = PBXBuildFile; fileRef = A926B48D27AC718800144157 /* text.h */; }; - A926B7D527AC718900144157 /* text.h in Headers */ = {isa = PBXBuildFile; fileRef = A926B48D27AC718800144157 /* text.h */; }; - A926B7D627AC718900144157 /* text.h in Headers */ = {isa = PBXBuildFile; fileRef = A926B48D27AC718800144157 /* text.h */; }; - A926B7D727AC718900144157 /* extensions.cpp in Sources */ = {isa = PBXBuildFile; fileRef = A926B48E27AC718800144157 /* extensions.cpp */; }; - A926B7D827AC718900144157 /* extensions.cpp in Sources */ = {isa = PBXBuildFile; fileRef = A926B48E27AC718800144157 /* extensions.cpp */; }; - A926B7D927AC718900144157 /* extensions.cpp in Sources */ = {isa = PBXBuildFile; fileRef = A926B48E27AC718800144157 /* extensions.cpp */; }; - A926B7DA27AC718900144157 /* pch_source.cpp in Sources */ = {isa = PBXBuildFile; fileRef = A926B48F27AC718800144157 /* pch_source.cpp */; }; - A926B7DB27AC718900144157 /* pch_source.cpp in Sources */ = {isa = PBXBuildFile; fileRef = A926B48F27AC718800144157 /* pch_source.cpp */; }; - A926B7DC27AC718900144157 /* pch_source.cpp in Sources */ = {isa = PBXBuildFile; fileRef = A926B48F27AC718800144157 /* pch_source.cpp */; }; - A926B7DD27AC718900144157 /* parse_number.h in Headers */ = {isa = PBXBuildFile; fileRef = A926B49127AC718800144157 /* parse_number.h */; }; - A926B7DE27AC718900144157 /* parse_number.h in Headers */ = {isa = PBXBuildFile; fileRef = A926B49127AC718800144157 /* parse_number.h */; }; - A926B7DF27AC718900144157 /* parse_number.h in Headers */ = {isa = PBXBuildFile; fileRef = A926B49127AC718800144157 /* parse_number.h */; }; - A926B7E027AC718900144157 /* ilist_node.h in Headers */ = {isa = PBXBuildFile; fileRef = A926B49227AC718800144157 /* ilist_node.h */; }; - A926B7E127AC718900144157 /* ilist_node.h in Headers */ = {isa = PBXBuildFile; fileRef = A926B49227AC718800144157 /* ilist_node.h */; }; - A926B7E227AC718900144157 /* ilist_node.h in Headers */ = {isa = PBXBuildFile; fileRef = A926B49227AC718800144157 /* ilist_node.h */; }; - A926B7E327AC718900144157 /* make_unique.h in Headers */ = {isa = PBXBuildFile; fileRef = A926B49327AC718800144157 /* make_unique.h */; }; - A926B7E427AC718900144157 /* make_unique.h in Headers */ = {isa = PBXBuildFile; fileRef = A926B49327AC718800144157 /* make_unique.h */; }; - A926B7E527AC718900144157 /* make_unique.h in Headers */ = {isa = PBXBuildFile; fileRef = A926B49327AC718800144157 /* make_unique.h */; }; - A926B7E627AC718900144157 /* string_utils.h in Headers */ = {isa = PBXBuildFile; fileRef = A926B49427AC718800144157 /* string_utils.h */; }; - A926B7E727AC718900144157 /* string_utils.h in Headers */ = {isa = PBXBuildFile; fileRef = A926B49427AC718800144157 /* string_utils.h */; }; - A926B7E827AC718900144157 /* string_utils.h in Headers */ = {isa = PBXBuildFile; fileRef = A926B49427AC718800144157 /* string_utils.h */; }; - A926B7E927AC718900144157 /* small_vector.h in Headers */ = {isa = PBXBuildFile; fileRef = A926B49527AC718800144157 /* small_vector.h */; }; - A926B7EA27AC718900144157 /* small_vector.h in Headers */ = {isa = PBXBuildFile; fileRef = A926B49527AC718800144157 /* small_vector.h */; }; - A926B7EB27AC718900144157 /* small_vector.h in Headers */ = {isa = PBXBuildFile; fileRef = A926B49527AC718800144157 /* small_vector.h */; }; - A926B7EC27AC718900144157 /* timer.cpp in Sources */ = {isa = PBXBuildFile; fileRef = A926B49627AC718800144157 /* timer.cpp */; }; - A926B7ED27AC718900144157 /* timer.cpp in Sources */ = {isa = PBXBuildFile; fileRef = A926B49627AC718800144157 /* timer.cpp */; }; - A926B7EE27AC718900144157 /* timer.cpp in Sources */ = {isa = PBXBuildFile; fileRef = A926B49627AC718800144157 /* timer.cpp */; }; - A926B7EF27AC718900144157 /* timer.h in Headers */ = {isa = PBXBuildFile; fileRef = A926B49727AC718800144157 /* timer.h */; }; - A926B7F027AC718900144157 /* timer.h in Headers */ = {isa = PBXBuildFile; fileRef = A926B49727AC718800144157 /* timer.h */; }; - A926B7F127AC718900144157 /* timer.h in Headers */ = {isa = PBXBuildFile; fileRef = A926B49727AC718800144157 /* timer.h */; }; - A926B7F227AC718900144157 /* string_utils.cpp in Sources */ = {isa = PBXBuildFile; fileRef = A926B49827AC718800144157 /* string_utils.cpp */; }; - A926B7F327AC718900144157 /* string_utils.cpp in Sources */ = {isa = PBXBuildFile; fileRef = A926B49827AC718800144157 /* string_utils.cpp */; }; - A926B7F427AC718900144157 /* string_utils.cpp in Sources */ = {isa = PBXBuildFile; fileRef = A926B49827AC718800144157 /* string_utils.cpp */; }; - A926B7F527AC718900144157 /* bit_vector.h in Headers */ = {isa = PBXBuildFile; fileRef = A926B49927AC718800144157 /* bit_vector.h */; }; - A926B7F627AC718900144157 /* bit_vector.h in Headers */ = {isa = PBXBuildFile; fileRef = A926B49927AC718800144157 /* bit_vector.h */; }; - A926B7F727AC718900144157 /* bit_vector.h in Headers */ = {isa = PBXBuildFile; fileRef = A926B49927AC718800144157 /* bit_vector.h */; }; - A926B7F827AC718900144157 /* bitutils.h in Headers */ = {isa = PBXBuildFile; fileRef = A926B49A27AC718800144157 /* bitutils.h */; }; - A926B7F927AC718900144157 /* bitutils.h in Headers */ = {isa = PBXBuildFile; fileRef = A926B49A27AC718800144157 /* bitutils.h */; }; - A926B7FA27AC718900144157 /* bitutils.h in Headers */ = {isa = PBXBuildFile; fileRef = A926B49A27AC718800144157 /* bitutils.h */; }; - A926B7FB27AC718900144157 /* hex_float.h in Headers */ = {isa = PBXBuildFile; fileRef = A926B49B27AC718800144157 /* hex_float.h */; }; - A926B7FC27AC718900144157 /* hex_float.h in Headers */ = {isa = PBXBuildFile; fileRef = A926B49B27AC718800144157 /* hex_float.h */; }; - A926B7FD27AC718900144157 /* hex_float.h in Headers */ = {isa = PBXBuildFile; fileRef = A926B49B27AC718800144157 /* hex_float.h */; }; - A926B7FE27AC718900144157 /* parse_number.cpp in Sources */ = {isa = PBXBuildFile; fileRef = A926B49C27AC718800144157 /* parse_number.cpp */; }; - A926B7FF27AC718900144157 /* parse_number.cpp in Sources */ = {isa = PBXBuildFile; fileRef = A926B49C27AC718800144157 /* parse_number.cpp */; }; - A926B80027AC718900144157 /* parse_number.cpp in Sources */ = {isa = PBXBuildFile; fileRef = A926B49C27AC718800144157 /* parse_number.cpp */; }; - A926B80127AC718900144157 /* bit_vector.cpp in Sources */ = {isa = PBXBuildFile; fileRef = A926B49D27AC718800144157 /* bit_vector.cpp */; }; - A926B80227AC718900144157 /* bit_vector.cpp in Sources */ = {isa = PBXBuildFile; fileRef = A926B49D27AC718800144157 /* bit_vector.cpp */; }; - A926B80327AC718900144157 /* bit_vector.cpp in Sources */ = {isa = PBXBuildFile; fileRef = A926B49D27AC718800144157 /* bit_vector.cpp */; }; - A926B80427AC718900144157 /* ilist.h in Headers */ = {isa = PBXBuildFile; fileRef = A926B49E27AC718800144157 /* ilist.h */; }; - A926B80527AC718900144157 /* ilist.h in Headers */ = {isa = PBXBuildFile; fileRef = A926B49E27AC718800144157 /* ilist.h */; }; - A926B80627AC718900144157 /* ilist.h in Headers */ = {isa = PBXBuildFile; fileRef = A926B49E27AC718800144157 /* ilist.h */; }; - A926B80727AC718900144157 /* spirv_target_env.h in Headers */ = {isa = PBXBuildFile; fileRef = A926B49F27AC718800144157 /* spirv_target_env.h */; }; - A926B80827AC718900144157 /* spirv_target_env.h in Headers */ = {isa = PBXBuildFile; fileRef = A926B49F27AC718800144157 /* spirv_target_env.h */; }; - A926B80927AC718900144157 /* spirv_target_env.h in Headers */ = {isa = PBXBuildFile; fileRef = A926B49F27AC718800144157 /* spirv_target_env.h */; }; - A926B80A27AC718900144157 /* table.cpp in Sources */ = {isa = PBXBuildFile; fileRef = A926B4A027AC718800144157 /* table.cpp */; }; - A926B80B27AC718900144157 /* table.cpp in Sources */ = {isa = PBXBuildFile; fileRef = A926B4A027AC718800144157 /* table.cpp */; }; - A926B80C27AC718900144157 /* table.cpp in Sources */ = {isa = PBXBuildFile; fileRef = A926B4A027AC718800144157 /* table.cpp */; }; - A926B80D27AC718900144157 /* operand_to_undef_reduction_opportunity_finder.h in Headers */ = {isa = PBXBuildFile; fileRef = A926B4A227AC718800144157 /* operand_to_undef_reduction_opportunity_finder.h */; }; - A926B80E27AC718900144157 /* operand_to_undef_reduction_opportunity_finder.h in Headers */ = {isa = PBXBuildFile; fileRef = A926B4A227AC718800144157 /* operand_to_undef_reduction_opportunity_finder.h */; }; - A926B80F27AC718900144157 /* operand_to_undef_reduction_opportunity_finder.h in Headers */ = {isa = PBXBuildFile; fileRef = A926B4A227AC718800144157 /* operand_to_undef_reduction_opportunity_finder.h */; }; - A926B81027AC718900144157 /* remove_selection_reduction_opportunity.cpp in Sources */ = {isa = PBXBuildFile; fileRef = A926B4A327AC718800144157 /* remove_selection_reduction_opportunity.cpp */; }; - A926B81127AC718900144157 /* remove_selection_reduction_opportunity.cpp in Sources */ = {isa = PBXBuildFile; fileRef = A926B4A327AC718800144157 /* remove_selection_reduction_opportunity.cpp */; }; - A926B81227AC718900144157 /* remove_selection_reduction_opportunity.cpp in Sources */ = {isa = PBXBuildFile; fileRef = A926B4A327AC718800144157 /* remove_selection_reduction_opportunity.cpp */; }; - A926B81327AC718900144157 /* remove_block_reduction_opportunity.h in Headers */ = {isa = PBXBuildFile; fileRef = A926B4A427AC718800144157 /* remove_block_reduction_opportunity.h */; }; - A926B81427AC718900144157 /* remove_block_reduction_opportunity.h in Headers */ = {isa = PBXBuildFile; fileRef = A926B4A427AC718800144157 /* remove_block_reduction_opportunity.h */; }; - A926B81527AC718900144157 /* remove_block_reduction_opportunity.h in Headers */ = {isa = PBXBuildFile; fileRef = A926B4A427AC718800144157 /* remove_block_reduction_opportunity.h */; }; - A926B81627AC718900144157 /* operand_to_dominating_id_reduction_opportunity_finder.h in Headers */ = {isa = PBXBuildFile; fileRef = A926B4A527AC718800144157 /* operand_to_dominating_id_reduction_opportunity_finder.h */; }; - A926B81727AC718900144157 /* operand_to_dominating_id_reduction_opportunity_finder.h in Headers */ = {isa = PBXBuildFile; fileRef = A926B4A527AC718800144157 /* operand_to_dominating_id_reduction_opportunity_finder.h */; }; - A926B81827AC718900144157 /* operand_to_dominating_id_reduction_opportunity_finder.h in Headers */ = {isa = PBXBuildFile; fileRef = A926B4A527AC718800144157 /* operand_to_dominating_id_reduction_opportunity_finder.h */; }; - A926B81927AC718900144157 /* reduction_pass.cpp in Sources */ = {isa = PBXBuildFile; fileRef = A926B4A627AC718800144157 /* reduction_pass.cpp */; }; - A926B81A27AC718900144157 /* reduction_pass.cpp in Sources */ = {isa = PBXBuildFile; fileRef = A926B4A627AC718800144157 /* reduction_pass.cpp */; }; - A926B81B27AC718900144157 /* reduction_pass.cpp in Sources */ = {isa = PBXBuildFile; fileRef = A926B4A627AC718800144157 /* reduction_pass.cpp */; }; - A926B81C27AC718900144157 /* structured_construct_to_block_reduction_opportunity.h in Headers */ = {isa = PBXBuildFile; fileRef = A926B4A727AC718800144157 /* structured_construct_to_block_reduction_opportunity.h */; }; - A926B81D27AC718900144157 /* structured_construct_to_block_reduction_opportunity.h in Headers */ = {isa = PBXBuildFile; fileRef = A926B4A727AC718800144157 /* structured_construct_to_block_reduction_opportunity.h */; }; - A926B81E27AC718900144157 /* structured_construct_to_block_reduction_opportunity.h in Headers */ = {isa = PBXBuildFile; fileRef = A926B4A727AC718800144157 /* structured_construct_to_block_reduction_opportunity.h */; }; - A926B81F27AC718900144157 /* operand_to_const_reduction_opportunity_finder.cpp in Sources */ = {isa = PBXBuildFile; fileRef = A926B4A827AC718800144157 /* operand_to_const_reduction_opportunity_finder.cpp */; }; - A926B82027AC718900144157 /* operand_to_const_reduction_opportunity_finder.cpp in Sources */ = {isa = PBXBuildFile; fileRef = A926B4A827AC718800144157 /* operand_to_const_reduction_opportunity_finder.cpp */; }; - A926B82127AC718900144157 /* operand_to_const_reduction_opportunity_finder.cpp in Sources */ = {isa = PBXBuildFile; fileRef = A926B4A827AC718800144157 /* operand_to_const_reduction_opportunity_finder.cpp */; }; - A926B82227AC718900144157 /* operand_to_const_reduction_opportunity_finder.h in Headers */ = {isa = PBXBuildFile; fileRef = A926B4A927AC718800144157 /* operand_to_const_reduction_opportunity_finder.h */; }; - A926B82327AC718900144157 /* operand_to_const_reduction_opportunity_finder.h in Headers */ = {isa = PBXBuildFile; fileRef = A926B4A927AC718800144157 /* operand_to_const_reduction_opportunity_finder.h */; }; - A926B82427AC718900144157 /* operand_to_const_reduction_opportunity_finder.h in Headers */ = {isa = PBXBuildFile; fileRef = A926B4A927AC718800144157 /* operand_to_const_reduction_opportunity_finder.h */; }; - A926B82527AC718900144157 /* reduction_util.cpp in Sources */ = {isa = PBXBuildFile; fileRef = A926B4AB27AC718800144157 /* reduction_util.cpp */; }; - A926B82627AC718900144157 /* reduction_util.cpp in Sources */ = {isa = PBXBuildFile; fileRef = A926B4AB27AC718800144157 /* reduction_util.cpp */; }; - A926B82727AC718900144157 /* reduction_util.cpp in Sources */ = {isa = PBXBuildFile; fileRef = A926B4AB27AC718800144157 /* reduction_util.cpp */; }; - A926B82827AC718900144157 /* structured_construct_to_block_reduction_opportunity_finder.h in Headers */ = {isa = PBXBuildFile; fileRef = A926B4AC27AC718800144157 /* structured_construct_to_block_reduction_opportunity_finder.h */; }; - A926B82927AC718900144157 /* structured_construct_to_block_reduction_opportunity_finder.h in Headers */ = {isa = PBXBuildFile; fileRef = A926B4AC27AC718800144157 /* structured_construct_to_block_reduction_opportunity_finder.h */; }; - A926B82A27AC718900144157 /* structured_construct_to_block_reduction_opportunity_finder.h in Headers */ = {isa = PBXBuildFile; fileRef = A926B4AC27AC718800144157 /* structured_construct_to_block_reduction_opportunity_finder.h */; }; - A926B82B27AC718900144157 /* structured_loop_to_selection_reduction_opportunity_finder.cpp in Sources */ = {isa = PBXBuildFile; fileRef = A926B4AD27AC718800144157 /* structured_loop_to_selection_reduction_opportunity_finder.cpp */; }; - A926B82C27AC718900144157 /* structured_loop_to_selection_reduction_opportunity_finder.cpp in Sources */ = {isa = PBXBuildFile; fileRef = A926B4AD27AC718800144157 /* structured_loop_to_selection_reduction_opportunity_finder.cpp */; }; - A926B82D27AC718900144157 /* structured_loop_to_selection_reduction_opportunity_finder.cpp in Sources */ = {isa = PBXBuildFile; fileRef = A926B4AD27AC718800144157 /* structured_loop_to_selection_reduction_opportunity_finder.cpp */; }; - A926B82E27AC718900144157 /* simple_conditional_branch_to_branch_reduction_opportunity.h in Headers */ = {isa = PBXBuildFile; fileRef = A926B4AE27AC718800144157 /* simple_conditional_branch_to_branch_reduction_opportunity.h */; }; - A926B82F27AC718900144157 /* simple_conditional_branch_to_branch_reduction_opportunity.h in Headers */ = {isa = PBXBuildFile; fileRef = A926B4AE27AC718800144157 /* simple_conditional_branch_to_branch_reduction_opportunity.h */; }; - A926B83027AC718900144157 /* simple_conditional_branch_to_branch_reduction_opportunity.h in Headers */ = {isa = PBXBuildFile; fileRef = A926B4AE27AC718800144157 /* simple_conditional_branch_to_branch_reduction_opportunity.h */; }; - A926B83127AC718900144157 /* remove_function_reduction_opportunity_finder.cpp in Sources */ = {isa = PBXBuildFile; fileRef = A926B4AF27AC718800144157 /* remove_function_reduction_opportunity_finder.cpp */; }; - A926B83227AC718900144157 /* remove_function_reduction_opportunity_finder.cpp in Sources */ = {isa = PBXBuildFile; fileRef = A926B4AF27AC718800144157 /* remove_function_reduction_opportunity_finder.cpp */; }; - A926B83327AC718900144157 /* remove_function_reduction_opportunity_finder.cpp in Sources */ = {isa = PBXBuildFile; fileRef = A926B4AF27AC718800144157 /* remove_function_reduction_opportunity_finder.cpp */; }; - A926B83427AC718900144157 /* remove_instruction_reduction_opportunity.h in Headers */ = {isa = PBXBuildFile; fileRef = A926B4B027AC718800144157 /* remove_instruction_reduction_opportunity.h */; }; - A926B83527AC718900144157 /* remove_instruction_reduction_opportunity.h in Headers */ = {isa = PBXBuildFile; fileRef = A926B4B027AC718800144157 /* remove_instruction_reduction_opportunity.h */; }; - A926B83627AC718900144157 /* remove_instruction_reduction_opportunity.h in Headers */ = {isa = PBXBuildFile; fileRef = A926B4B027AC718800144157 /* remove_instruction_reduction_opportunity.h */; }; - A926B83727AC718900144157 /* conditional_branch_to_simple_conditional_branch_reduction_opportunity.h in Headers */ = {isa = PBXBuildFile; fileRef = A926B4B127AC718800144157 /* conditional_branch_to_simple_conditional_branch_reduction_opportunity.h */; }; - A926B83827AC718900144157 /* conditional_branch_to_simple_conditional_branch_reduction_opportunity.h in Headers */ = {isa = PBXBuildFile; fileRef = A926B4B127AC718800144157 /* conditional_branch_to_simple_conditional_branch_reduction_opportunity.h */; }; - A926B83927AC718900144157 /* conditional_branch_to_simple_conditional_branch_reduction_opportunity.h in Headers */ = {isa = PBXBuildFile; fileRef = A926B4B127AC718800144157 /* conditional_branch_to_simple_conditional_branch_reduction_opportunity.h */; }; - A926B83A27AC718900144157 /* simple_conditional_branch_to_branch_reduction_opportunity.cpp in Sources */ = {isa = PBXBuildFile; fileRef = A926B4B227AC718800144157 /* simple_conditional_branch_to_branch_reduction_opportunity.cpp */; }; - A926B83B27AC718900144157 /* simple_conditional_branch_to_branch_reduction_opportunity.cpp in Sources */ = {isa = PBXBuildFile; fileRef = A926B4B227AC718800144157 /* simple_conditional_branch_to_branch_reduction_opportunity.cpp */; }; - A926B83C27AC718900144157 /* simple_conditional_branch_to_branch_reduction_opportunity.cpp in Sources */ = {isa = PBXBuildFile; fileRef = A926B4B227AC718800144157 /* simple_conditional_branch_to_branch_reduction_opportunity.cpp */; }; - A926B83D27AC718900144157 /* remove_function_reduction_opportunity.cpp in Sources */ = {isa = PBXBuildFile; fileRef = A926B4B327AC718800144157 /* remove_function_reduction_opportunity.cpp */; }; - A926B83E27AC718900144157 /* remove_function_reduction_opportunity.cpp in Sources */ = {isa = PBXBuildFile; fileRef = A926B4B327AC718800144157 /* remove_function_reduction_opportunity.cpp */; }; - A926B83F27AC718900144157 /* remove_function_reduction_opportunity.cpp in Sources */ = {isa = PBXBuildFile; fileRef = A926B4B327AC718800144157 /* remove_function_reduction_opportunity.cpp */; }; - A926B84027AC718900144157 /* simple_conditional_branch_to_branch_opportunity_finder.cpp in Sources */ = {isa = PBXBuildFile; fileRef = A926B4B427AC718800144157 /* simple_conditional_branch_to_branch_opportunity_finder.cpp */; }; - A926B84127AC718900144157 /* simple_conditional_branch_to_branch_opportunity_finder.cpp in Sources */ = {isa = PBXBuildFile; fileRef = A926B4B427AC718800144157 /* simple_conditional_branch_to_branch_opportunity_finder.cpp */; }; - A926B84227AC718900144157 /* simple_conditional_branch_to_branch_opportunity_finder.cpp in Sources */ = {isa = PBXBuildFile; fileRef = A926B4B427AC718800144157 /* simple_conditional_branch_to_branch_opportunity_finder.cpp */; }; - A926B84327AC718900144157 /* remove_selection_reduction_opportunity_finder.cpp in Sources */ = {isa = PBXBuildFile; fileRef = A926B4B527AC718800144157 /* remove_selection_reduction_opportunity_finder.cpp */; }; - A926B84427AC718900144157 /* remove_selection_reduction_opportunity_finder.cpp in Sources */ = {isa = PBXBuildFile; fileRef = A926B4B527AC718800144157 /* remove_selection_reduction_opportunity_finder.cpp */; }; - A926B84527AC718900144157 /* remove_selection_reduction_opportunity_finder.cpp in Sources */ = {isa = PBXBuildFile; fileRef = A926B4B527AC718800144157 /* remove_selection_reduction_opportunity_finder.cpp */; }; - A926B84627AC718900144157 /* conditional_branch_to_simple_conditional_branch_reduction_opportunity.cpp in Sources */ = {isa = PBXBuildFile; fileRef = A926B4B627AC718800144157 /* conditional_branch_to_simple_conditional_branch_reduction_opportunity.cpp */; }; - A926B84727AC718900144157 /* conditional_branch_to_simple_conditional_branch_reduction_opportunity.cpp in Sources */ = {isa = PBXBuildFile; fileRef = A926B4B627AC718800144157 /* conditional_branch_to_simple_conditional_branch_reduction_opportunity.cpp */; }; - A926B84827AC718900144157 /* conditional_branch_to_simple_conditional_branch_reduction_opportunity.cpp in Sources */ = {isa = PBXBuildFile; fileRef = A926B4B627AC718800144157 /* conditional_branch_to_simple_conditional_branch_reduction_opportunity.cpp */; }; - A926B84927AC718900144157 /* remove_struct_member_reduction_opportunity.h in Headers */ = {isa = PBXBuildFile; fileRef = A926B4B727AC718800144157 /* remove_struct_member_reduction_opportunity.h */; }; - A926B84A27AC718900144157 /* remove_struct_member_reduction_opportunity.h in Headers */ = {isa = PBXBuildFile; fileRef = A926B4B727AC718800144157 /* remove_struct_member_reduction_opportunity.h */; }; - A926B84B27AC718900144157 /* remove_struct_member_reduction_opportunity.h in Headers */ = {isa = PBXBuildFile; fileRef = A926B4B727AC718800144157 /* remove_struct_member_reduction_opportunity.h */; }; - A926B84C27AC718900144157 /* simple_conditional_branch_to_branch_opportunity_finder.h in Headers */ = {isa = PBXBuildFile; fileRef = A926B4B827AC718800144157 /* simple_conditional_branch_to_branch_opportunity_finder.h */; }; - A926B84D27AC718900144157 /* simple_conditional_branch_to_branch_opportunity_finder.h in Headers */ = {isa = PBXBuildFile; fileRef = A926B4B827AC718800144157 /* simple_conditional_branch_to_branch_opportunity_finder.h */; }; - A926B84E27AC718900144157 /* simple_conditional_branch_to_branch_opportunity_finder.h in Headers */ = {isa = PBXBuildFile; fileRef = A926B4B827AC718800144157 /* simple_conditional_branch_to_branch_opportunity_finder.h */; }; - A926B84F27AC718900144157 /* merge_blocks_reduction_opportunity.cpp in Sources */ = {isa = PBXBuildFile; fileRef = A926B4B927AC718800144157 /* merge_blocks_reduction_opportunity.cpp */; }; - A926B85027AC718900144157 /* merge_blocks_reduction_opportunity.cpp in Sources */ = {isa = PBXBuildFile; fileRef = A926B4B927AC718800144157 /* merge_blocks_reduction_opportunity.cpp */; }; - A926B85127AC718900144157 /* merge_blocks_reduction_opportunity.cpp in Sources */ = {isa = PBXBuildFile; fileRef = A926B4B927AC718800144157 /* merge_blocks_reduction_opportunity.cpp */; }; - A926B85227AC718900144157 /* change_operand_reduction_opportunity.cpp in Sources */ = {isa = PBXBuildFile; fileRef = A926B4BA27AC718800144157 /* change_operand_reduction_opportunity.cpp */; }; - A926B85327AC718900144157 /* change_operand_reduction_opportunity.cpp in Sources */ = {isa = PBXBuildFile; fileRef = A926B4BA27AC718800144157 /* change_operand_reduction_opportunity.cpp */; }; - A926B85427AC718900144157 /* change_operand_reduction_opportunity.cpp in Sources */ = {isa = PBXBuildFile; fileRef = A926B4BA27AC718800144157 /* change_operand_reduction_opportunity.cpp */; }; - A926B85527AC718900144157 /* structured_loop_to_selection_reduction_opportunity.h in Headers */ = {isa = PBXBuildFile; fileRef = A926B4BB27AC718800144157 /* structured_loop_to_selection_reduction_opportunity.h */; }; - A926B85627AC718900144157 /* structured_loop_to_selection_reduction_opportunity.h in Headers */ = {isa = PBXBuildFile; fileRef = A926B4BB27AC718800144157 /* structured_loop_to_selection_reduction_opportunity.h */; }; - A926B85727AC718900144157 /* structured_loop_to_selection_reduction_opportunity.h in Headers */ = {isa = PBXBuildFile; fileRef = A926B4BB27AC718800144157 /* structured_loop_to_selection_reduction_opportunity.h */; }; - A926B85827AC718900144157 /* remove_function_reduction_opportunity.h in Headers */ = {isa = PBXBuildFile; fileRef = A926B4BC27AC718800144157 /* remove_function_reduction_opportunity.h */; }; - A926B85927AC718900144157 /* remove_function_reduction_opportunity.h in Headers */ = {isa = PBXBuildFile; fileRef = A926B4BC27AC718800144157 /* remove_function_reduction_opportunity.h */; }; - A926B85A27AC718900144157 /* remove_function_reduction_opportunity.h in Headers */ = {isa = PBXBuildFile; fileRef = A926B4BC27AC718800144157 /* remove_function_reduction_opportunity.h */; }; - A926B85B27AC718900144157 /* remove_unused_instruction_reduction_opportunity_finder.h in Headers */ = {isa = PBXBuildFile; fileRef = A926B4BD27AC718800144157 /* remove_unused_instruction_reduction_opportunity_finder.h */; }; - A926B85C27AC718900144157 /* remove_unused_instruction_reduction_opportunity_finder.h in Headers */ = {isa = PBXBuildFile; fileRef = A926B4BD27AC718800144157 /* remove_unused_instruction_reduction_opportunity_finder.h */; }; - A926B85D27AC718900144157 /* remove_unused_instruction_reduction_opportunity_finder.h in Headers */ = {isa = PBXBuildFile; fileRef = A926B4BD27AC718800144157 /* remove_unused_instruction_reduction_opportunity_finder.h */; }; - A926B85E27AC718900144157 /* change_operand_to_undef_reduction_opportunity.h in Headers */ = {isa = PBXBuildFile; fileRef = A926B4BE27AC718800144157 /* change_operand_to_undef_reduction_opportunity.h */; }; - A926B85F27AC718900144157 /* change_operand_to_undef_reduction_opportunity.h in Headers */ = {isa = PBXBuildFile; fileRef = A926B4BE27AC718800144157 /* change_operand_to_undef_reduction_opportunity.h */; }; - A926B86027AC718900144157 /* change_operand_to_undef_reduction_opportunity.h in Headers */ = {isa = PBXBuildFile; fileRef = A926B4BE27AC718800144157 /* change_operand_to_undef_reduction_opportunity.h */; }; - A926B86127AC718900144157 /* structured_loop_to_selection_reduction_opportunity_finder.h in Headers */ = {isa = PBXBuildFile; fileRef = A926B4BF27AC718800144157 /* structured_loop_to_selection_reduction_opportunity_finder.h */; }; - A926B86227AC718900144157 /* structured_loop_to_selection_reduction_opportunity_finder.h in Headers */ = {isa = PBXBuildFile; fileRef = A926B4BF27AC718800144157 /* structured_loop_to_selection_reduction_opportunity_finder.h */; }; - A926B86327AC718900144157 /* structured_loop_to_selection_reduction_opportunity_finder.h in Headers */ = {isa = PBXBuildFile; fileRef = A926B4BF27AC718800144157 /* structured_loop_to_selection_reduction_opportunity_finder.h */; }; - A926B86427AC718900144157 /* remove_selection_reduction_opportunity.h in Headers */ = {isa = PBXBuildFile; fileRef = A926B4C027AC718800144157 /* remove_selection_reduction_opportunity.h */; }; - A926B86527AC718900144157 /* remove_selection_reduction_opportunity.h in Headers */ = {isa = PBXBuildFile; fileRef = A926B4C027AC718800144157 /* remove_selection_reduction_opportunity.h */; }; - A926B86627AC718900144157 /* remove_selection_reduction_opportunity.h in Headers */ = {isa = PBXBuildFile; fileRef = A926B4C027AC718800144157 /* remove_selection_reduction_opportunity.h */; }; - A926B86727AC718900144157 /* remove_instruction_reduction_opportunity.cpp in Sources */ = {isa = PBXBuildFile; fileRef = A926B4C127AC718800144157 /* remove_instruction_reduction_opportunity.cpp */; }; - A926B86827AC718900144157 /* remove_instruction_reduction_opportunity.cpp in Sources */ = {isa = PBXBuildFile; fileRef = A926B4C127AC718800144157 /* remove_instruction_reduction_opportunity.cpp */; }; - A926B86927AC718900144157 /* remove_instruction_reduction_opportunity.cpp in Sources */ = {isa = PBXBuildFile; fileRef = A926B4C127AC718800144157 /* remove_instruction_reduction_opportunity.cpp */; }; - A926B86A27AC718900144157 /* remove_selection_reduction_opportunity_finder.h in Headers */ = {isa = PBXBuildFile; fileRef = A926B4C227AC718800144157 /* remove_selection_reduction_opportunity_finder.h */; }; - A926B86B27AC718900144157 /* remove_selection_reduction_opportunity_finder.h in Headers */ = {isa = PBXBuildFile; fileRef = A926B4C227AC718800144157 /* remove_selection_reduction_opportunity_finder.h */; }; - A926B86C27AC718900144157 /* remove_selection_reduction_opportunity_finder.h in Headers */ = {isa = PBXBuildFile; fileRef = A926B4C227AC718800144157 /* remove_selection_reduction_opportunity_finder.h */; }; - A926B86D27AC718900144157 /* merge_blocks_reduction_opportunity_finder.h in Headers */ = {isa = PBXBuildFile; fileRef = A926B4C327AC718800144157 /* merge_blocks_reduction_opportunity_finder.h */; }; - A926B86E27AC718900144157 /* merge_blocks_reduction_opportunity_finder.h in Headers */ = {isa = PBXBuildFile; fileRef = A926B4C327AC718800144157 /* merge_blocks_reduction_opportunity_finder.h */; }; - A926B86F27AC718900144157 /* merge_blocks_reduction_opportunity_finder.h in Headers */ = {isa = PBXBuildFile; fileRef = A926B4C327AC718800144157 /* merge_blocks_reduction_opportunity_finder.h */; }; - A926B87027AC718900144157 /* pch_source_reduce.cpp in Sources */ = {isa = PBXBuildFile; fileRef = A926B4C427AC718800144157 /* pch_source_reduce.cpp */; }; - A926B87127AC718900144157 /* pch_source_reduce.cpp in Sources */ = {isa = PBXBuildFile; fileRef = A926B4C427AC718800144157 /* pch_source_reduce.cpp */; }; - A926B87227AC718900144157 /* pch_source_reduce.cpp in Sources */ = {isa = PBXBuildFile; fileRef = A926B4C427AC718800144157 /* pch_source_reduce.cpp */; }; - A926B87327AC718900144157 /* remove_struct_member_reduction_opportunity.cpp in Sources */ = {isa = PBXBuildFile; fileRef = A926B4C527AC718800144157 /* remove_struct_member_reduction_opportunity.cpp */; }; - A926B87427AC718900144157 /* remove_struct_member_reduction_opportunity.cpp in Sources */ = {isa = PBXBuildFile; fileRef = A926B4C527AC718800144157 /* remove_struct_member_reduction_opportunity.cpp */; }; - A926B87527AC718900144157 /* remove_struct_member_reduction_opportunity.cpp in Sources */ = {isa = PBXBuildFile; fileRef = A926B4C527AC718800144157 /* remove_struct_member_reduction_opportunity.cpp */; }; - A926B87627AC718900144157 /* remove_unused_struct_member_reduction_opportunity_finder.h in Headers */ = {isa = PBXBuildFile; fileRef = A926B4C627AC718800144157 /* remove_unused_struct_member_reduction_opportunity_finder.h */; }; - A926B87727AC718900144157 /* remove_unused_struct_member_reduction_opportunity_finder.h in Headers */ = {isa = PBXBuildFile; fileRef = A926B4C627AC718800144157 /* remove_unused_struct_member_reduction_opportunity_finder.h */; }; - A926B87827AC718900144157 /* remove_unused_struct_member_reduction_opportunity_finder.h in Headers */ = {isa = PBXBuildFile; fileRef = A926B4C627AC718800144157 /* remove_unused_struct_member_reduction_opportunity_finder.h */; }; - A926B87927AC718900144157 /* remove_unused_instruction_reduction_opportunity_finder.cpp in Sources */ = {isa = PBXBuildFile; fileRef = A926B4C727AC718800144157 /* remove_unused_instruction_reduction_opportunity_finder.cpp */; }; - A926B87A27AC718900144157 /* remove_unused_instruction_reduction_opportunity_finder.cpp in Sources */ = {isa = PBXBuildFile; fileRef = A926B4C727AC718800144157 /* remove_unused_instruction_reduction_opportunity_finder.cpp */; }; - A926B87B27AC718900144157 /* remove_unused_instruction_reduction_opportunity_finder.cpp in Sources */ = {isa = PBXBuildFile; fileRef = A926B4C727AC718800144157 /* remove_unused_instruction_reduction_opportunity_finder.cpp */; }; - A926B87C27AC718900144157 /* reducer.cpp in Sources */ = {isa = PBXBuildFile; fileRef = A926B4C827AC718800144157 /* reducer.cpp */; }; - A926B87D27AC718900144157 /* reducer.cpp in Sources */ = {isa = PBXBuildFile; fileRef = A926B4C827AC718800144157 /* reducer.cpp */; }; - A926B87E27AC718900144157 /* reducer.cpp in Sources */ = {isa = PBXBuildFile; fileRef = A926B4C827AC718800144157 /* reducer.cpp */; }; - A926B87F27AC718900144157 /* operand_to_undef_reduction_opportunity_finder.cpp in Sources */ = {isa = PBXBuildFile; fileRef = A926B4C927AC718800144157 /* operand_to_undef_reduction_opportunity_finder.cpp */; }; - A926B88027AC718900144157 /* operand_to_undef_reduction_opportunity_finder.cpp in Sources */ = {isa = PBXBuildFile; fileRef = A926B4C927AC718800144157 /* operand_to_undef_reduction_opportunity_finder.cpp */; }; - A926B88127AC718900144157 /* operand_to_undef_reduction_opportunity_finder.cpp in Sources */ = {isa = PBXBuildFile; fileRef = A926B4C927AC718800144157 /* operand_to_undef_reduction_opportunity_finder.cpp */; }; - A926B88227AC718900144157 /* remove_function_reduction_opportunity_finder.h in Headers */ = {isa = PBXBuildFile; fileRef = A926B4CA27AC718800144157 /* remove_function_reduction_opportunity_finder.h */; }; - A926B88327AC718900144157 /* remove_function_reduction_opportunity_finder.h in Headers */ = {isa = PBXBuildFile; fileRef = A926B4CA27AC718800144157 /* remove_function_reduction_opportunity_finder.h */; }; - A926B88427AC718900144157 /* remove_function_reduction_opportunity_finder.h in Headers */ = {isa = PBXBuildFile; fileRef = A926B4CA27AC718800144157 /* remove_function_reduction_opportunity_finder.h */; }; - A926B88527AC718900144157 /* pch_source_reduce.h in Headers */ = {isa = PBXBuildFile; fileRef = A926B4CB27AC718800144157 /* pch_source_reduce.h */; }; - A926B88627AC718900144157 /* pch_source_reduce.h in Headers */ = {isa = PBXBuildFile; fileRef = A926B4CB27AC718800144157 /* pch_source_reduce.h */; }; - A926B88727AC718900144157 /* pch_source_reduce.h in Headers */ = {isa = PBXBuildFile; fileRef = A926B4CB27AC718800144157 /* pch_source_reduce.h */; }; - A926B88827AC718900144157 /* merge_blocks_reduction_opportunity_finder.cpp in Sources */ = {isa = PBXBuildFile; fileRef = A926B4CC27AC718800144157 /* merge_blocks_reduction_opportunity_finder.cpp */; }; - A926B88927AC718900144157 /* merge_blocks_reduction_opportunity_finder.cpp in Sources */ = {isa = PBXBuildFile; fileRef = A926B4CC27AC718800144157 /* merge_blocks_reduction_opportunity_finder.cpp */; }; - A926B88A27AC718900144157 /* merge_blocks_reduction_opportunity_finder.cpp in Sources */ = {isa = PBXBuildFile; fileRef = A926B4CC27AC718800144157 /* merge_blocks_reduction_opportunity_finder.cpp */; }; - A926B88B27AC718900144157 /* reduction_opportunity.cpp in Sources */ = {isa = PBXBuildFile; fileRef = A926B4CD27AC718800144157 /* reduction_opportunity.cpp */; }; - A926B88C27AC718900144157 /* reduction_opportunity.cpp in Sources */ = {isa = PBXBuildFile; fileRef = A926B4CD27AC718800144157 /* reduction_opportunity.cpp */; }; - A926B88D27AC718900144157 /* reduction_opportunity.cpp in Sources */ = {isa = PBXBuildFile; fileRef = A926B4CD27AC718800144157 /* reduction_opportunity.cpp */; }; - A926B88E27AC718900144157 /* reducer.h in Headers */ = {isa = PBXBuildFile; fileRef = A926B4CE27AC718800144157 /* reducer.h */; }; - A926B88F27AC718900144157 /* reducer.h in Headers */ = {isa = PBXBuildFile; fileRef = A926B4CE27AC718800144157 /* reducer.h */; }; - A926B89027AC718900144157 /* reducer.h in Headers */ = {isa = PBXBuildFile; fileRef = A926B4CE27AC718800144157 /* reducer.h */; }; - A926B89127AC718900144157 /* change_operand_to_undef_reduction_opportunity.cpp in Sources */ = {isa = PBXBuildFile; fileRef = A926B4CF27AC718800144157 /* change_operand_to_undef_reduction_opportunity.cpp */; }; - A926B89227AC718900144157 /* change_operand_to_undef_reduction_opportunity.cpp in Sources */ = {isa = PBXBuildFile; fileRef = A926B4CF27AC718800144157 /* change_operand_to_undef_reduction_opportunity.cpp */; }; - A926B89327AC718900144157 /* change_operand_to_undef_reduction_opportunity.cpp in Sources */ = {isa = PBXBuildFile; fileRef = A926B4CF27AC718800144157 /* change_operand_to_undef_reduction_opportunity.cpp */; }; - A926B89427AC718900144157 /* reduction_opportunity.h in Headers */ = {isa = PBXBuildFile; fileRef = A926B4D027AC718800144157 /* reduction_opportunity.h */; }; - A926B89527AC718900144157 /* reduction_opportunity.h in Headers */ = {isa = PBXBuildFile; fileRef = A926B4D027AC718800144157 /* reduction_opportunity.h */; }; - A926B89627AC718900144157 /* reduction_opportunity.h in Headers */ = {isa = PBXBuildFile; fileRef = A926B4D027AC718800144157 /* reduction_opportunity.h */; }; - A926B89727AC718900144157 /* conditional_branch_to_simple_conditional_branch_opportunity_finder.h in Headers */ = {isa = PBXBuildFile; fileRef = A926B4D127AC718800144157 /* conditional_branch_to_simple_conditional_branch_opportunity_finder.h */; }; - A926B89827AC718900144157 /* conditional_branch_to_simple_conditional_branch_opportunity_finder.h in Headers */ = {isa = PBXBuildFile; fileRef = A926B4D127AC718800144157 /* conditional_branch_to_simple_conditional_branch_opportunity_finder.h */; }; - A926B89927AC718900144157 /* conditional_branch_to_simple_conditional_branch_opportunity_finder.h in Headers */ = {isa = PBXBuildFile; fileRef = A926B4D127AC718800144157 /* conditional_branch_to_simple_conditional_branch_opportunity_finder.h */; }; - A926B89A27AC718900144157 /* operand_to_dominating_id_reduction_opportunity_finder.cpp in Sources */ = {isa = PBXBuildFile; fileRef = A926B4D227AC718800144157 /* operand_to_dominating_id_reduction_opportunity_finder.cpp */; }; - A926B89B27AC718900144157 /* operand_to_dominating_id_reduction_opportunity_finder.cpp in Sources */ = {isa = PBXBuildFile; fileRef = A926B4D227AC718800144157 /* operand_to_dominating_id_reduction_opportunity_finder.cpp */; }; - A926B89C27AC718900144157 /* operand_to_dominating_id_reduction_opportunity_finder.cpp in Sources */ = {isa = PBXBuildFile; fileRef = A926B4D227AC718800144157 /* operand_to_dominating_id_reduction_opportunity_finder.cpp */; }; - A926B89D27AC718900144157 /* reduction_opportunity_finder.h in Headers */ = {isa = PBXBuildFile; fileRef = A926B4D327AC718800144157 /* reduction_opportunity_finder.h */; }; - A926B89E27AC718900144157 /* reduction_opportunity_finder.h in Headers */ = {isa = PBXBuildFile; fileRef = A926B4D327AC718800144157 /* reduction_opportunity_finder.h */; }; - A926B89F27AC718900144157 /* reduction_opportunity_finder.h in Headers */ = {isa = PBXBuildFile; fileRef = A926B4D327AC718800144157 /* reduction_opportunity_finder.h */; }; - A926B8A027AC718900144157 /* change_operand_reduction_opportunity.h in Headers */ = {isa = PBXBuildFile; fileRef = A926B4D427AC718800144157 /* change_operand_reduction_opportunity.h */; }; - A926B8A127AC718900144157 /* change_operand_reduction_opportunity.h in Headers */ = {isa = PBXBuildFile; fileRef = A926B4D427AC718800144157 /* change_operand_reduction_opportunity.h */; }; - A926B8A227AC718900144157 /* change_operand_reduction_opportunity.h in Headers */ = {isa = PBXBuildFile; fileRef = A926B4D427AC718800144157 /* change_operand_reduction_opportunity.h */; }; - A926B8A327AC718900144157 /* remove_block_reduction_opportunity_finder.h in Headers */ = {isa = PBXBuildFile; fileRef = A926B4D527AC718800144157 /* remove_block_reduction_opportunity_finder.h */; }; - A926B8A427AC718900144157 /* remove_block_reduction_opportunity_finder.h in Headers */ = {isa = PBXBuildFile; fileRef = A926B4D527AC718800144157 /* remove_block_reduction_opportunity_finder.h */; }; - A926B8A527AC718900144157 /* remove_block_reduction_opportunity_finder.h in Headers */ = {isa = PBXBuildFile; fileRef = A926B4D527AC718800144157 /* remove_block_reduction_opportunity_finder.h */; }; - A926B8A627AC718900144157 /* remove_block_reduction_opportunity_finder.cpp in Sources */ = {isa = PBXBuildFile; fileRef = A926B4D627AC718800144157 /* remove_block_reduction_opportunity_finder.cpp */; }; - A926B8A727AC718900144157 /* remove_block_reduction_opportunity_finder.cpp in Sources */ = {isa = PBXBuildFile; fileRef = A926B4D627AC718800144157 /* remove_block_reduction_opportunity_finder.cpp */; }; - A926B8A827AC718900144157 /* remove_block_reduction_opportunity_finder.cpp in Sources */ = {isa = PBXBuildFile; fileRef = A926B4D627AC718800144157 /* remove_block_reduction_opportunity_finder.cpp */; }; - A926B8A927AC718900144157 /* reduction_util.h in Headers */ = {isa = PBXBuildFile; fileRef = A926B4D727AC718800144157 /* reduction_util.h */; }; - A926B8AA27AC718900144157 /* reduction_util.h in Headers */ = {isa = PBXBuildFile; fileRef = A926B4D727AC718800144157 /* reduction_util.h */; }; - A926B8AB27AC718900144157 /* reduction_util.h in Headers */ = {isa = PBXBuildFile; fileRef = A926B4D727AC718800144157 /* reduction_util.h */; }; - A926B8AC27AC718900144157 /* merge_blocks_reduction_opportunity.h in Headers */ = {isa = PBXBuildFile; fileRef = A926B4D827AC718800144157 /* merge_blocks_reduction_opportunity.h */; }; - A926B8AD27AC718900144157 /* merge_blocks_reduction_opportunity.h in Headers */ = {isa = PBXBuildFile; fileRef = A926B4D827AC718800144157 /* merge_blocks_reduction_opportunity.h */; }; - A926B8AE27AC718900144157 /* merge_blocks_reduction_opportunity.h in Headers */ = {isa = PBXBuildFile; fileRef = A926B4D827AC718800144157 /* merge_blocks_reduction_opportunity.h */; }; - A926B8AF27AC718900144157 /* conditional_branch_to_simple_conditional_branch_opportunity_finder.cpp in Sources */ = {isa = PBXBuildFile; fileRef = A926B4D927AC718800144157 /* conditional_branch_to_simple_conditional_branch_opportunity_finder.cpp */; }; - A926B8B027AC718900144157 /* conditional_branch_to_simple_conditional_branch_opportunity_finder.cpp in Sources */ = {isa = PBXBuildFile; fileRef = A926B4D927AC718800144157 /* conditional_branch_to_simple_conditional_branch_opportunity_finder.cpp */; }; - A926B8B127AC718900144157 /* conditional_branch_to_simple_conditional_branch_opportunity_finder.cpp in Sources */ = {isa = PBXBuildFile; fileRef = A926B4D927AC718800144157 /* conditional_branch_to_simple_conditional_branch_opportunity_finder.cpp */; }; - A926B8B227AC718900144157 /* structured_loop_to_selection_reduction_opportunity.cpp in Sources */ = {isa = PBXBuildFile; fileRef = A926B4DA27AC718800144157 /* structured_loop_to_selection_reduction_opportunity.cpp */; }; - A926B8B327AC718900144157 /* structured_loop_to_selection_reduction_opportunity.cpp in Sources */ = {isa = PBXBuildFile; fileRef = A926B4DA27AC718800144157 /* structured_loop_to_selection_reduction_opportunity.cpp */; }; - A926B8B427AC718900144157 /* structured_loop_to_selection_reduction_opportunity.cpp in Sources */ = {isa = PBXBuildFile; fileRef = A926B4DA27AC718800144157 /* structured_loop_to_selection_reduction_opportunity.cpp */; }; - A926B8B527AC718900144157 /* structured_construct_to_block_reduction_opportunity.cpp in Sources */ = {isa = PBXBuildFile; fileRef = A926B4DB27AC718800144157 /* structured_construct_to_block_reduction_opportunity.cpp */; }; - A926B8B627AC718900144157 /* structured_construct_to_block_reduction_opportunity.cpp in Sources */ = {isa = PBXBuildFile; fileRef = A926B4DB27AC718800144157 /* structured_construct_to_block_reduction_opportunity.cpp */; }; - A926B8B727AC718900144157 /* structured_construct_to_block_reduction_opportunity.cpp in Sources */ = {isa = PBXBuildFile; fileRef = A926B4DB27AC718800144157 /* structured_construct_to_block_reduction_opportunity.cpp */; }; - A926B8B827AC718900144157 /* remove_block_reduction_opportunity.cpp in Sources */ = {isa = PBXBuildFile; fileRef = A926B4DC27AC718800144157 /* remove_block_reduction_opportunity.cpp */; }; - A926B8B927AC718900144157 /* remove_block_reduction_opportunity.cpp in Sources */ = {isa = PBXBuildFile; fileRef = A926B4DC27AC718800144157 /* remove_block_reduction_opportunity.cpp */; }; - A926B8BA27AC718900144157 /* remove_block_reduction_opportunity.cpp in Sources */ = {isa = PBXBuildFile; fileRef = A926B4DC27AC718800144157 /* remove_block_reduction_opportunity.cpp */; }; - A926B8BB27AC718900144157 /* remove_unused_struct_member_reduction_opportunity_finder.cpp in Sources */ = {isa = PBXBuildFile; fileRef = A926B4DD27AC718800144157 /* remove_unused_struct_member_reduction_opportunity_finder.cpp */; }; - A926B8BC27AC718900144157 /* remove_unused_struct_member_reduction_opportunity_finder.cpp in Sources */ = {isa = PBXBuildFile; fileRef = A926B4DD27AC718800144157 /* remove_unused_struct_member_reduction_opportunity_finder.cpp */; }; - A926B8BD27AC718900144157 /* remove_unused_struct_member_reduction_opportunity_finder.cpp in Sources */ = {isa = PBXBuildFile; fileRef = A926B4DD27AC718800144157 /* remove_unused_struct_member_reduction_opportunity_finder.cpp */; }; - A926B8BE27AC718900144157 /* reduction_opportunity_finder.cpp in Sources */ = {isa = PBXBuildFile; fileRef = A926B4DE27AC718800144157 /* reduction_opportunity_finder.cpp */; }; - A926B8BF27AC718900144157 /* reduction_opportunity_finder.cpp in Sources */ = {isa = PBXBuildFile; fileRef = A926B4DE27AC718800144157 /* reduction_opportunity_finder.cpp */; }; - A926B8C027AC718900144157 /* reduction_opportunity_finder.cpp in Sources */ = {isa = PBXBuildFile; fileRef = A926B4DE27AC718800144157 /* reduction_opportunity_finder.cpp */; }; - A926B8C127AC718900144157 /* structured_construct_to_block_reduction_opportunity_finder.cpp in Sources */ = {isa = PBXBuildFile; fileRef = A926B4DF27AC718800144157 /* structured_construct_to_block_reduction_opportunity_finder.cpp */; }; - A926B8C227AC718900144157 /* structured_construct_to_block_reduction_opportunity_finder.cpp in Sources */ = {isa = PBXBuildFile; fileRef = A926B4DF27AC718800144157 /* structured_construct_to_block_reduction_opportunity_finder.cpp */; }; - A926B8C327AC718900144157 /* structured_construct_to_block_reduction_opportunity_finder.cpp in Sources */ = {isa = PBXBuildFile; fileRef = A926B4DF27AC718800144157 /* structured_construct_to_block_reduction_opportunity_finder.cpp */; }; - A926B8C427AC718900144157 /* reduction_pass.h in Headers */ = {isa = PBXBuildFile; fileRef = A926B4E027AC718800144157 /* reduction_pass.h */; }; - A926B8C527AC718900144157 /* reduction_pass.h in Headers */ = {isa = PBXBuildFile; fileRef = A926B4E027AC718800144157 /* reduction_pass.h */; }; - A926B8C627AC718900144157 /* reduction_pass.h in Headers */ = {isa = PBXBuildFile; fileRef = A926B4E027AC718800144157 /* reduction_pass.h */; }; - A926B8C727AC718900144157 /* latest_version_opencl_std_header.h in Headers */ = {isa = PBXBuildFile; fileRef = A926B4E127AC718800144157 /* latest_version_opencl_std_header.h */; }; - A926B8C827AC718900144157 /* latest_version_opencl_std_header.h in Headers */ = {isa = PBXBuildFile; fileRef = A926B4E127AC718800144157 /* latest_version_opencl_std_header.h */; }; - A926B8C927AC718900144157 /* latest_version_opencl_std_header.h in Headers */ = {isa = PBXBuildFile; fileRef = A926B4E127AC718800144157 /* latest_version_opencl_std_header.h */; }; - A926B8CA27AC718900144157 /* spirv_optimizer_options.cpp in Sources */ = {isa = PBXBuildFile; fileRef = A926B4E227AC718800144157 /* spirv_optimizer_options.cpp */; }; - A926B8CB27AC718900144157 /* spirv_optimizer_options.cpp in Sources */ = {isa = PBXBuildFile; fileRef = A926B4E227AC718800144157 /* spirv_optimizer_options.cpp */; }; - A926B8CC27AC718900144157 /* spirv_optimizer_options.cpp in Sources */ = {isa = PBXBuildFile; fileRef = A926B4E227AC718800144157 /* spirv_optimizer_options.cpp */; }; - A926B8CD27AC718900144157 /* cfa.h in Headers */ = {isa = PBXBuildFile; fileRef = A926B4E327AC718800144157 /* cfa.h */; }; - A926B8CE27AC718900144157 /* cfa.h in Headers */ = {isa = PBXBuildFile; fileRef = A926B4E327AC718800144157 /* cfa.h */; }; - A926B8CF27AC718900144157 /* cfa.h in Headers */ = {isa = PBXBuildFile; fileRef = A926B4E327AC718800144157 /* cfa.h */; }; - A926B8D027AC718900144157 /* pch_source.h in Headers */ = {isa = PBXBuildFile; fileRef = A926B4E427AC718800144157 /* pch_source.h */; }; - A926B8D127AC718900144157 /* pch_source.h in Headers */ = {isa = PBXBuildFile; fileRef = A926B4E427AC718800144157 /* pch_source.h */; }; - A926B8D227AC718900144157 /* pch_source.h in Headers */ = {isa = PBXBuildFile; fileRef = A926B4E427AC718800144157 /* pch_source.h */; }; - A926B8D327AC718900144157 /* enum_string_mapping.h in Headers */ = {isa = PBXBuildFile; fileRef = A926B4E527AC718800144157 /* enum_string_mapping.h */; }; - A926B8D427AC718900144157 /* enum_string_mapping.h in Headers */ = {isa = PBXBuildFile; fileRef = A926B4E527AC718800144157 /* enum_string_mapping.h */; }; - A926B8D527AC718900144157 /* enum_string_mapping.h in Headers */ = {isa = PBXBuildFile; fileRef = A926B4E527AC718800144157 /* enum_string_mapping.h */; }; - A926B8D627AC718900144157 /* spirv_fuzzer_options.cpp in Sources */ = {isa = PBXBuildFile; fileRef = A926B4E627AC718800144157 /* spirv_fuzzer_options.cpp */; }; - A926B8D727AC718900144157 /* spirv_fuzzer_options.cpp in Sources */ = {isa = PBXBuildFile; fileRef = A926B4E627AC718800144157 /* spirv_fuzzer_options.cpp */; }; - A926B8D827AC718900144157 /* spirv_fuzzer_options.cpp in Sources */ = {isa = PBXBuildFile; fileRef = A926B4E627AC718800144157 /* spirv_fuzzer_options.cpp */; }; - A926B8D927AC718900144157 /* spirv_reducer_options.h in Headers */ = {isa = PBXBuildFile; fileRef = A926B4E727AC718800144157 /* spirv_reducer_options.h */; }; - A926B8DA27AC718900144157 /* spirv_reducer_options.h in Headers */ = {isa = PBXBuildFile; fileRef = A926B4E727AC718800144157 /* spirv_reducer_options.h */; }; - A926B8DB27AC718900144157 /* spirv_reducer_options.h in Headers */ = {isa = PBXBuildFile; fileRef = A926B4E727AC718800144157 /* spirv_reducer_options.h */; }; - A926B8DC27AC718900144157 /* spirv_validator_options.cpp in Sources */ = {isa = PBXBuildFile; fileRef = A926B4E827AC718800144157 /* spirv_validator_options.cpp */; }; - A926B8DD27AC718900144157 /* spirv_validator_options.cpp in Sources */ = {isa = PBXBuildFile; fileRef = A926B4E827AC718800144157 /* spirv_validator_options.cpp */; }; - A926B8DE27AC718900144157 /* spirv_validator_options.cpp in Sources */ = {isa = PBXBuildFile; fileRef = A926B4E827AC718800144157 /* spirv_validator_options.cpp */; }; - A926B8E227AC718900144157 /* print.cpp in Sources */ = {isa = PBXBuildFile; fileRef = A926B4EF27AC718800144157 /* print.cpp */; }; - A926B8E327AC718900144157 /* print.cpp in Sources */ = {isa = PBXBuildFile; fileRef = A926B4EF27AC718800144157 /* print.cpp */; }; - A926B8E427AC718900144157 /* print.cpp in Sources */ = {isa = PBXBuildFile; fileRef = A926B4EF27AC718800144157 /* print.cpp */; }; - A926B8E527AC718900144157 /* spirv_definition.h in Headers */ = {isa = PBXBuildFile; fileRef = A926B4F027AC718800144157 /* spirv_definition.h */; }; - A926B8E627AC718900144157 /* spirv_definition.h in Headers */ = {isa = PBXBuildFile; fileRef = A926B4F027AC718800144157 /* spirv_definition.h */; }; - A926B8E727AC718900144157 /* spirv_definition.h in Headers */ = {isa = PBXBuildFile; fileRef = A926B4F027AC718800144157 /* spirv_definition.h */; }; - A926B8E827AC718900144157 /* operand.h in Headers */ = {isa = PBXBuildFile; fileRef = A926B4F127AC718800144157 /* operand.h */; }; - A926B8E927AC718900144157 /* operand.h in Headers */ = {isa = PBXBuildFile; fileRef = A926B4F127AC718800144157 /* operand.h */; }; - A926B8EA27AC718900144157 /* operand.h in Headers */ = {isa = PBXBuildFile; fileRef = A926B4F127AC718800144157 /* operand.h */; }; - A926B8EB27AC718900144157 /* spirv_endian.cpp in Sources */ = {isa = PBXBuildFile; fileRef = A926B4F227AC718800144157 /* spirv_endian.cpp */; }; - A926B8EC27AC718900144157 /* spirv_endian.cpp in Sources */ = {isa = PBXBuildFile; fileRef = A926B4F227AC718800144157 /* spirv_endian.cpp */; }; - A926B8ED27AC718900144157 /* spirv_endian.cpp in Sources */ = {isa = PBXBuildFile; fileRef = A926B4F227AC718800144157 /* spirv_endian.cpp */; }; - A926B8EE27AC718900144157 /* macro.h in Headers */ = {isa = PBXBuildFile; fileRef = A926B4F327AC718800144157 /* macro.h */; }; - A926B8EF27AC718900144157 /* macro.h in Headers */ = {isa = PBXBuildFile; fileRef = A926B4F327AC718800144157 /* macro.h */; }; - A926B8F027AC718900144157 /* macro.h in Headers */ = {isa = PBXBuildFile; fileRef = A926B4F327AC718800144157 /* macro.h */; }; - A926B8F127AC718900144157 /* spirv_constant.h in Headers */ = {isa = PBXBuildFile; fileRef = A926B4F427AC718800144157 /* spirv_constant.h */; }; - A926B8F227AC718900144157 /* spirv_constant.h in Headers */ = {isa = PBXBuildFile; fileRef = A926B4F427AC718800144157 /* spirv_constant.h */; }; - A926B8F327AC718900144157 /* spirv_constant.h in Headers */ = {isa = PBXBuildFile; fileRef = A926B4F427AC718800144157 /* spirv_constant.h */; }; - A926B8F427AC718900144157 /* binary.cpp in Sources */ = {isa = PBXBuildFile; fileRef = A926B4F527AC718800144157 /* binary.cpp */; }; - A926B8F527AC718900144157 /* binary.cpp in Sources */ = {isa = PBXBuildFile; fileRef = A926B4F527AC718800144157 /* binary.cpp */; }; - A926B8F627AC718900144157 /* binary.cpp in Sources */ = {isa = PBXBuildFile; fileRef = A926B4F527AC718800144157 /* binary.cpp */; }; - A926B8F727AC718900144157 /* spirv_validator_options.h in Headers */ = {isa = PBXBuildFile; fileRef = A926B4F627AC718800144157 /* spirv_validator_options.h */; }; - A926B8F827AC718900144157 /* spirv_validator_options.h in Headers */ = {isa = PBXBuildFile; fileRef = A926B4F627AC718800144157 /* spirv_validator_options.h */; }; - A926B8F927AC718900144157 /* spirv_validator_options.h in Headers */ = {isa = PBXBuildFile; fileRef = A926B4F627AC718800144157 /* spirv_validator_options.h */; }; - A926B8FA27AC718900144157 /* enum_string_mapping.cpp in Sources */ = {isa = PBXBuildFile; fileRef = A926B4F727AC718800144157 /* enum_string_mapping.cpp */; }; - A926B8FB27AC718900144157 /* enum_string_mapping.cpp in Sources */ = {isa = PBXBuildFile; fileRef = A926B4F727AC718800144157 /* enum_string_mapping.cpp */; }; - A926B8FC27AC718900144157 /* enum_string_mapping.cpp in Sources */ = {isa = PBXBuildFile; fileRef = A926B4F727AC718800144157 /* enum_string_mapping.cpp */; }; - A926B8FD27AC718900144157 /* text_handler.h in Headers */ = {isa = PBXBuildFile; fileRef = A926B4F827AC718800144157 /* text_handler.h */; }; - A926B8FE27AC718900144157 /* text_handler.h in Headers */ = {isa = PBXBuildFile; fileRef = A926B4F827AC718800144157 /* text_handler.h */; }; - A926B8FF27AC718900144157 /* text_handler.h in Headers */ = {isa = PBXBuildFile; fileRef = A926B4F827AC718800144157 /* text_handler.h */; }; - A926B90027AC718900144157 /* parsed_operand.h in Headers */ = {isa = PBXBuildFile; fileRef = A926B4F927AC718800144157 /* parsed_operand.h */; }; - A926B90127AC718900144157 /* parsed_operand.h in Headers */ = {isa = PBXBuildFile; fileRef = A926B4F927AC718800144157 /* parsed_operand.h */; }; - A926B90227AC718900144157 /* parsed_operand.h in Headers */ = {isa = PBXBuildFile; fileRef = A926B4F927AC718800144157 /* parsed_operand.h */; }; - A926B90327AC718900144157 /* name_mapper.h in Headers */ = {isa = PBXBuildFile; fileRef = A926B4FA27AC718800144157 /* name_mapper.h */; }; - A926B90427AC718900144157 /* name_mapper.h in Headers */ = {isa = PBXBuildFile; fileRef = A926B4FA27AC718800144157 /* name_mapper.h */; }; - A926B90527AC718900144157 /* name_mapper.h in Headers */ = {isa = PBXBuildFile; fileRef = A926B4FA27AC718800144157 /* name_mapper.h */; }; - A926B90627AC718900144157 /* spirv_reducer_options.cpp in Sources */ = {isa = PBXBuildFile; fileRef = A926B4FB27AC718800144157 /* spirv_reducer_options.cpp */; }; - A926B90727AC718900144157 /* spirv_reducer_options.cpp in Sources */ = {isa = PBXBuildFile; fileRef = A926B4FB27AC718800144157 /* spirv_reducer_options.cpp */; }; - A926B90827AC718900144157 /* spirv_reducer_options.cpp in Sources */ = {isa = PBXBuildFile; fileRef = A926B4FB27AC718800144157 /* spirv_reducer_options.cpp */; }; - A926B90927AC718900144157 /* parsed_operand.cpp in Sources */ = {isa = PBXBuildFile; fileRef = A926B4FC27AC718800144157 /* parsed_operand.cpp */; }; - A926B90A27AC718900144157 /* parsed_operand.cpp in Sources */ = {isa = PBXBuildFile; fileRef = A926B4FC27AC718800144157 /* parsed_operand.cpp */; }; - A926B90B27AC718900144157 /* parsed_operand.cpp in Sources */ = {isa = PBXBuildFile; fileRef = A926B4FC27AC718800144157 /* parsed_operand.cpp */; }; - A926B90C27AC718900144157 /* diagnostic.h in Headers */ = {isa = PBXBuildFile; fileRef = A926B4FD27AC718800144157 /* diagnostic.h */; }; - A926B90D27AC718900144157 /* diagnostic.h in Headers */ = {isa = PBXBuildFile; fileRef = A926B4FD27AC718800144157 /* diagnostic.h */; }; - A926B90E27AC718900144157 /* diagnostic.h in Headers */ = {isa = PBXBuildFile; fileRef = A926B4FD27AC718800144157 /* diagnostic.h */; }; - A926B90F27AC718900144157 /* spirv_endian.h in Headers */ = {isa = PBXBuildFile; fileRef = A926B4FE27AC718800144157 /* spirv_endian.h */; }; - A926B91027AC718900144157 /* spirv_endian.h in Headers */ = {isa = PBXBuildFile; fileRef = A926B4FE27AC718800144157 /* spirv_endian.h */; }; - A926B91127AC718900144157 /* spirv_endian.h in Headers */ = {isa = PBXBuildFile; fileRef = A926B4FE27AC718800144157 /* spirv_endian.h */; }; - A926B91227AC718900144157 /* name_mapper.cpp in Sources */ = {isa = PBXBuildFile; fileRef = A926B4FF27AC718800144157 /* name_mapper.cpp */; }; - A926B91327AC718900144157 /* name_mapper.cpp in Sources */ = {isa = PBXBuildFile; fileRef = A926B4FF27AC718800144157 /* name_mapper.cpp */; }; - A926B91427AC718900144157 /* name_mapper.cpp in Sources */ = {isa = PBXBuildFile; fileRef = A926B4FF27AC718800144157 /* name_mapper.cpp */; }; - A926B91527AC718900144157 /* linker.cpp in Sources */ = {isa = PBXBuildFile; fileRef = A926B50227AC718800144157 /* linker.cpp */; }; - A926B91627AC718900144157 /* linker.cpp in Sources */ = {isa = PBXBuildFile; fileRef = A926B50227AC718800144157 /* linker.cpp */; }; - A926B91727AC718900144157 /* linker.cpp in Sources */ = {isa = PBXBuildFile; fileRef = A926B50227AC718800144157 /* linker.cpp */; }; - A926B91827AC718900144157 /* common_debug_info.h in Headers */ = {isa = PBXBuildFile; fileRef = A926B50327AC718800144157 /* common_debug_info.h */; }; - A926B91927AC718900144157 /* common_debug_info.h in Headers */ = {isa = PBXBuildFile; fileRef = A926B50327AC718800144157 /* common_debug_info.h */; }; - A926B91A27AC718900144157 /* common_debug_info.h in Headers */ = {isa = PBXBuildFile; fileRef = A926B50327AC718800144157 /* common_debug_info.h */; }; - A926B91B27AC718900144157 /* software_version.cpp in Sources */ = {isa = PBXBuildFile; fileRef = A926B50427AC718800144157 /* software_version.cpp */; }; - A926B91C27AC718900144157 /* software_version.cpp in Sources */ = {isa = PBXBuildFile; fileRef = A926B50427AC718800144157 /* software_version.cpp */; }; - A926B91D27AC718900144157 /* software_version.cpp in Sources */ = {isa = PBXBuildFile; fileRef = A926B50427AC718800144157 /* software_version.cpp */; }; - A926B91E27AC718900144157 /* opcode.cpp in Sources */ = {isa = PBXBuildFile; fileRef = A926B50527AC718800144157 /* opcode.cpp */; }; - A926B91F27AC718900144157 /* opcode.cpp in Sources */ = {isa = PBXBuildFile; fileRef = A926B50527AC718800144157 /* opcode.cpp */; }; - A926B92027AC718900144157 /* opcode.cpp in Sources */ = {isa = PBXBuildFile; fileRef = A926B50527AC718800144157 /* opcode.cpp */; }; - A926B92127AC718900144157 /* print.h in Headers */ = {isa = PBXBuildFile; fileRef = A926B50627AC718800144157 /* print.h */; }; - A926B92227AC718900144157 /* print.h in Headers */ = {isa = PBXBuildFile; fileRef = A926B50627AC718800144157 /* print.h */; }; - A926B92327AC718900144157 /* print.h in Headers */ = {isa = PBXBuildFile; fileRef = A926B50627AC718800144157 /* print.h */; }; - A926B92427AC718900144157 /* ext_inst.cpp in Sources */ = {isa = PBXBuildFile; fileRef = A926B50727AC718800144157 /* ext_inst.cpp */; }; - A926B92527AC718900144157 /* ext_inst.cpp in Sources */ = {isa = PBXBuildFile; fileRef = A926B50727AC718800144157 /* ext_inst.cpp */; }; - A926B92627AC718900144157 /* ext_inst.cpp in Sources */ = {isa = PBXBuildFile; fileRef = A926B50727AC718800144157 /* ext_inst.cpp */; }; - A926B92727AC718900144157 /* disassemble.h in Headers */ = {isa = PBXBuildFile; fileRef = A926B50827AC718800144157 /* disassemble.h */; }; - A926B92827AC718900144157 /* disassemble.h in Headers */ = {isa = PBXBuildFile; fileRef = A926B50827AC718800144157 /* disassemble.h */; }; - A926B92927AC718900144157 /* disassemble.h in Headers */ = {isa = PBXBuildFile; fileRef = A926B50827AC718800144157 /* disassemble.h */; }; - A926B92A27AC718900144157 /* optimizer.cpp in Sources */ = {isa = PBXBuildFile; fileRef = A926B50A27AC718800144157 /* optimizer.cpp */; }; - A926B92B27AC718900144157 /* optimizer.cpp in Sources */ = {isa = PBXBuildFile; fileRef = A926B50A27AC718800144157 /* optimizer.cpp */; }; - A926B92C27AC718900144157 /* optimizer.cpp in Sources */ = {isa = PBXBuildFile; fileRef = A926B50A27AC718800144157 /* optimizer.cpp */; }; - A926B92D27AC718900144157 /* if_conversion.h in Headers */ = {isa = PBXBuildFile; fileRef = A926B50B27AC718800144157 /* if_conversion.h */; }; - A926B92E27AC718900144157 /* if_conversion.h in Headers */ = {isa = PBXBuildFile; fileRef = A926B50B27AC718800144157 /* if_conversion.h */; }; - A926B92F27AC718900144157 /* if_conversion.h in Headers */ = {isa = PBXBuildFile; fileRef = A926B50B27AC718800144157 /* if_conversion.h */; }; - A926B93027AC718900144157 /* register_pressure.cpp in Sources */ = {isa = PBXBuildFile; fileRef = A926B50C27AC718800144157 /* register_pressure.cpp */; }; - A926B93127AC718900144157 /* register_pressure.cpp in Sources */ = {isa = PBXBuildFile; fileRef = A926B50C27AC718800144157 /* register_pressure.cpp */; }; - A926B93227AC718900144157 /* register_pressure.cpp in Sources */ = {isa = PBXBuildFile; fileRef = A926B50C27AC718800144157 /* register_pressure.cpp */; }; - A926B93327AC718900144157 /* loop_utils.cpp in Sources */ = {isa = PBXBuildFile; fileRef = A926B50D27AC718800144157 /* loop_utils.cpp */; }; - A926B93427AC718900144157 /* loop_utils.cpp in Sources */ = {isa = PBXBuildFile; fileRef = A926B50D27AC718800144157 /* loop_utils.cpp */; }; - A926B93527AC718900144157 /* loop_utils.cpp in Sources */ = {isa = PBXBuildFile; fileRef = A926B50D27AC718800144157 /* loop_utils.cpp */; }; - A926B93627AC718900144157 /* strip_nonsemantic_info_pass.h in Headers */ = {isa = PBXBuildFile; fileRef = A926B50E27AC718800144157 /* strip_nonsemantic_info_pass.h */; }; - A926B93727AC718900144157 /* strip_nonsemantic_info_pass.h in Headers */ = {isa = PBXBuildFile; fileRef = A926B50E27AC718800144157 /* strip_nonsemantic_info_pass.h */; }; - A926B93827AC718900144157 /* strip_nonsemantic_info_pass.h in Headers */ = {isa = PBXBuildFile; fileRef = A926B50E27AC718800144157 /* strip_nonsemantic_info_pass.h */; }; - A926B93927AC718900144157 /* spread_volatile_semantics.cpp in Sources */ = {isa = PBXBuildFile; fileRef = A926B50F27AC718800144157 /* spread_volatile_semantics.cpp */; }; - A926B93A27AC718900144157 /* spread_volatile_semantics.cpp in Sources */ = {isa = PBXBuildFile; fileRef = A926B50F27AC718800144157 /* spread_volatile_semantics.cpp */; }; - A926B93B27AC718900144157 /* spread_volatile_semantics.cpp in Sources */ = {isa = PBXBuildFile; fileRef = A926B50F27AC718800144157 /* spread_volatile_semantics.cpp */; }; - A926B93C27AC718900144157 /* merge_return_pass.h in Headers */ = {isa = PBXBuildFile; fileRef = A926B51027AC718800144157 /* merge_return_pass.h */; }; - A926B93D27AC718900144157 /* merge_return_pass.h in Headers */ = {isa = PBXBuildFile; fileRef = A926B51027AC718800144157 /* merge_return_pass.h */; }; - A926B93E27AC718900144157 /* merge_return_pass.h in Headers */ = {isa = PBXBuildFile; fileRef = A926B51027AC718800144157 /* merge_return_pass.h */; }; - A926B93F27AC718900144157 /* inline_opaque_pass.h in Headers */ = {isa = PBXBuildFile; fileRef = A926B51127AC718800144157 /* inline_opaque_pass.h */; }; - A926B94027AC718900144157 /* inline_opaque_pass.h in Headers */ = {isa = PBXBuildFile; fileRef = A926B51127AC718800144157 /* inline_opaque_pass.h */; }; - A926B94127AC718900144157 /* inline_opaque_pass.h in Headers */ = {isa = PBXBuildFile; fileRef = A926B51127AC718800144157 /* inline_opaque_pass.h */; }; - A926B94227AC718900144157 /* loop_fusion.h in Headers */ = {isa = PBXBuildFile; fileRef = A926B51227AC718800144157 /* loop_fusion.h */; }; - A926B94327AC718900144157 /* loop_fusion.h in Headers */ = {isa = PBXBuildFile; fileRef = A926B51227AC718800144157 /* loop_fusion.h */; }; - A926B94427AC718900144157 /* loop_fusion.h in Headers */ = {isa = PBXBuildFile; fileRef = A926B51227AC718800144157 /* loop_fusion.h */; }; - A926B94527AC718900144157 /* combine_access_chains.cpp in Sources */ = {isa = PBXBuildFile; fileRef = A926B51327AC718800144157 /* combine_access_chains.cpp */; }; - A926B94627AC718900144157 /* combine_access_chains.cpp in Sources */ = {isa = PBXBuildFile; fileRef = A926B51327AC718800144157 /* combine_access_chains.cpp */; }; - A926B94727AC718900144157 /* combine_access_chains.cpp in Sources */ = {isa = PBXBuildFile; fileRef = A926B51327AC718800144157 /* combine_access_chains.cpp */; }; - A926B94827AC718900144157 /* build_module.cpp in Sources */ = {isa = PBXBuildFile; fileRef = A926B51427AC718800144157 /* build_module.cpp */; }; - A926B94927AC718900144157 /* build_module.cpp in Sources */ = {isa = PBXBuildFile; fileRef = A926B51427AC718800144157 /* build_module.cpp */; }; - A926B94A27AC718900144157 /* build_module.cpp in Sources */ = {isa = PBXBuildFile; fileRef = A926B51427AC718800144157 /* build_module.cpp */; }; - A926B94B27AC718900144157 /* composite.h in Headers */ = {isa = PBXBuildFile; fileRef = A926B51527AC718800144157 /* composite.h */; }; - A926B94C27AC718900144157 /* composite.h in Headers */ = {isa = PBXBuildFile; fileRef = A926B51527AC718800144157 /* composite.h */; }; - A926B94D27AC718900144157 /* composite.h in Headers */ = {isa = PBXBuildFile; fileRef = A926B51527AC718800144157 /* composite.h */; }; - A926B94E27AC718900144157 /* compact_ids_pass.h in Headers */ = {isa = PBXBuildFile; fileRef = A926B51627AC718800144157 /* compact_ids_pass.h */; }; - A926B94F27AC718900144157 /* compact_ids_pass.h in Headers */ = {isa = PBXBuildFile; fileRef = A926B51627AC718800144157 /* compact_ids_pass.h */; }; - A926B95027AC718900144157 /* compact_ids_pass.h in Headers */ = {isa = PBXBuildFile; fileRef = A926B51627AC718800144157 /* compact_ids_pass.h */; }; - A926B95127AC718900144157 /* register_pressure.h in Headers */ = {isa = PBXBuildFile; fileRef = A926B51727AC718800144157 /* register_pressure.h */; }; - A926B95227AC718900144157 /* register_pressure.h in Headers */ = {isa = PBXBuildFile; fileRef = A926B51727AC718800144157 /* register_pressure.h */; }; - A926B95327AC718900144157 /* register_pressure.h in Headers */ = {isa = PBXBuildFile; fileRef = A926B51727AC718800144157 /* register_pressure.h */; }; - A926B95427AC718900144157 /* tree_iterator.h in Headers */ = {isa = PBXBuildFile; fileRef = A926B51827AC718800144157 /* tree_iterator.h */; }; - A926B95527AC718900144157 /* tree_iterator.h in Headers */ = {isa = PBXBuildFile; fileRef = A926B51827AC718800144157 /* tree_iterator.h */; }; - A926B95627AC718900144157 /* tree_iterator.h in Headers */ = {isa = PBXBuildFile; fileRef = A926B51827AC718800144157 /* tree_iterator.h */; }; - A926B95727AC718900144157 /* graphics_robust_access_pass.h in Headers */ = {isa = PBXBuildFile; fileRef = A926B51927AC718800144157 /* graphics_robust_access_pass.h */; }; - A926B95827AC718900144157 /* graphics_robust_access_pass.h in Headers */ = {isa = PBXBuildFile; fileRef = A926B51927AC718800144157 /* graphics_robust_access_pass.h */; }; - A926B95927AC718900144157 /* graphics_robust_access_pass.h in Headers */ = {isa = PBXBuildFile; fileRef = A926B51927AC718800144157 /* graphics_robust_access_pass.h */; }; - A926B95A27AC718900144157 /* local_single_store_elim_pass.h in Headers */ = {isa = PBXBuildFile; fileRef = A926B51A27AC718800144157 /* local_single_store_elim_pass.h */; }; - A926B95B27AC718900144157 /* local_single_store_elim_pass.h in Headers */ = {isa = PBXBuildFile; fileRef = A926B51A27AC718800144157 /* local_single_store_elim_pass.h */; }; - A926B95C27AC718900144157 /* local_single_store_elim_pass.h in Headers */ = {isa = PBXBuildFile; fileRef = A926B51A27AC718800144157 /* local_single_store_elim_pass.h */; }; - A926B95D27AC718900144157 /* reduce_load_size.h in Headers */ = {isa = PBXBuildFile; fileRef = A926B51B27AC718800144157 /* reduce_load_size.h */; }; - A926B95E27AC718900144157 /* reduce_load_size.h in Headers */ = {isa = PBXBuildFile; fileRef = A926B51B27AC718800144157 /* reduce_load_size.h */; }; - A926B95F27AC718900144157 /* reduce_load_size.h in Headers */ = {isa = PBXBuildFile; fileRef = A926B51B27AC718800144157 /* reduce_load_size.h */; }; - A926B96027AC718900144157 /* code_sink.cpp in Sources */ = {isa = PBXBuildFile; fileRef = A926B51C27AC718800144157 /* code_sink.cpp */; }; - A926B96127AC718900144157 /* code_sink.cpp in Sources */ = {isa = PBXBuildFile; fileRef = A926B51C27AC718800144157 /* code_sink.cpp */; }; - A926B96227AC718900144157 /* code_sink.cpp in Sources */ = {isa = PBXBuildFile; fileRef = A926B51C27AC718800144157 /* code_sink.cpp */; }; - A926B96327AC718900144157 /* types.cpp in Sources */ = {isa = PBXBuildFile; fileRef = A926B51D27AC718800144157 /* types.cpp */; }; - A926B96427AC718900144157 /* types.cpp in Sources */ = {isa = PBXBuildFile; fileRef = A926B51D27AC718800144157 /* types.cpp */; }; - A926B96527AC718900144157 /* types.cpp in Sources */ = {isa = PBXBuildFile; fileRef = A926B51D27AC718800144157 /* types.cpp */; }; - A926B96627AC718900144157 /* scalar_analysis.h in Headers */ = {isa = PBXBuildFile; fileRef = A926B51E27AC718800144157 /* scalar_analysis.h */; }; - A926B96727AC718900144157 /* scalar_analysis.h in Headers */ = {isa = PBXBuildFile; fileRef = A926B51E27AC718800144157 /* scalar_analysis.h */; }; - A926B96827AC718900144157 /* scalar_analysis.h in Headers */ = {isa = PBXBuildFile; fileRef = A926B51E27AC718800144157 /* scalar_analysis.h */; }; - A926B96927AC718900144157 /* strip_debug_info_pass.h in Headers */ = {isa = PBXBuildFile; fileRef = A926B51F27AC718800144157 /* strip_debug_info_pass.h */; }; - A926B96A27AC718900144157 /* strip_debug_info_pass.h in Headers */ = {isa = PBXBuildFile; fileRef = A926B51F27AC718800144157 /* strip_debug_info_pass.h */; }; - A926B96B27AC718900144157 /* strip_debug_info_pass.h in Headers */ = {isa = PBXBuildFile; fileRef = A926B51F27AC718800144157 /* strip_debug_info_pass.h */; }; - A926B96C27AC718900144157 /* replace_desc_array_access_using_var_index.h in Headers */ = {isa = PBXBuildFile; fileRef = A926B52027AC718800144157 /* replace_desc_array_access_using_var_index.h */; }; - A926B96D27AC718900144157 /* replace_desc_array_access_using_var_index.h in Headers */ = {isa = PBXBuildFile; fileRef = A926B52027AC718800144157 /* replace_desc_array_access_using_var_index.h */; }; - A926B96E27AC718900144157 /* replace_desc_array_access_using_var_index.h in Headers */ = {isa = PBXBuildFile; fileRef = A926B52027AC718800144157 /* replace_desc_array_access_using_var_index.h */; }; - A926B96F27AC718900144157 /* cfg.cpp in Sources */ = {isa = PBXBuildFile; fileRef = A926B52127AC718800144157 /* cfg.cpp */; }; - A926B97027AC718900144157 /* cfg.cpp in Sources */ = {isa = PBXBuildFile; fileRef = A926B52127AC718800144157 /* cfg.cpp */; }; - A926B97127AC718900144157 /* cfg.cpp in Sources */ = {isa = PBXBuildFile; fileRef = A926B52127AC718800144157 /* cfg.cpp */; }; - A926B97227AC718900144157 /* decoration_manager.cpp in Sources */ = {isa = PBXBuildFile; fileRef = A926B52227AC718800144157 /* decoration_manager.cpp */; }; - A926B97327AC718900144157 /* decoration_manager.cpp in Sources */ = {isa = PBXBuildFile; fileRef = A926B52227AC718800144157 /* decoration_manager.cpp */; }; - A926B97427AC718900144157 /* decoration_manager.cpp in Sources */ = {isa = PBXBuildFile; fileRef = A926B52227AC718800144157 /* decoration_manager.cpp */; }; - A926B97527AC718900144157 /* local_single_block_elim_pass.cpp in Sources */ = {isa = PBXBuildFile; fileRef = A926B52327AC718800144157 /* local_single_block_elim_pass.cpp */; }; - A926B97627AC718900144157 /* local_single_block_elim_pass.cpp in Sources */ = {isa = PBXBuildFile; fileRef = A926B52327AC718800144157 /* local_single_block_elim_pass.cpp */; }; - A926B97727AC718900144157 /* local_single_block_elim_pass.cpp in Sources */ = {isa = PBXBuildFile; fileRef = A926B52327AC718800144157 /* local_single_block_elim_pass.cpp */; }; - A926B97827AC718900144157 /* freeze_spec_constant_value_pass.cpp in Sources */ = {isa = PBXBuildFile; fileRef = A926B52427AC718800144157 /* freeze_spec_constant_value_pass.cpp */; }; - A926B97927AC718900144157 /* freeze_spec_constant_value_pass.cpp in Sources */ = {isa = PBXBuildFile; fileRef = A926B52427AC718800144157 /* freeze_spec_constant_value_pass.cpp */; }; - A926B97A27AC718900144157 /* freeze_spec_constant_value_pass.cpp in Sources */ = {isa = PBXBuildFile; fileRef = A926B52427AC718800144157 /* freeze_spec_constant_value_pass.cpp */; }; - A926B97B27AC718900144157 /* replace_invalid_opc.h in Headers */ = {isa = PBXBuildFile; fileRef = A926B52527AC718800144157 /* replace_invalid_opc.h */; }; - A926B97C27AC718900144157 /* replace_invalid_opc.h in Headers */ = {isa = PBXBuildFile; fileRef = A926B52527AC718800144157 /* replace_invalid_opc.h */; }; - A926B97D27AC718900144157 /* replace_invalid_opc.h in Headers */ = {isa = PBXBuildFile; fileRef = A926B52527AC718800144157 /* replace_invalid_opc.h */; }; - A926B97E27AC718900144157 /* local_access_chain_convert_pass.h in Headers */ = {isa = PBXBuildFile; fileRef = A926B52627AC718800144157 /* local_access_chain_convert_pass.h */; }; - A926B97F27AC718900144157 /* local_access_chain_convert_pass.h in Headers */ = {isa = PBXBuildFile; fileRef = A926B52627AC718800144157 /* local_access_chain_convert_pass.h */; }; - A926B98027AC718900144157 /* local_access_chain_convert_pass.h in Headers */ = {isa = PBXBuildFile; fileRef = A926B52627AC718800144157 /* local_access_chain_convert_pass.h */; }; - A926B98127AC718900144157 /* inst_bindless_check_pass.cpp in Sources */ = {isa = PBXBuildFile; fileRef = A926B52727AC718800144157 /* inst_bindless_check_pass.cpp */; }; - A926B98227AC718900144157 /* inst_bindless_check_pass.cpp in Sources */ = {isa = PBXBuildFile; fileRef = A926B52727AC718800144157 /* inst_bindless_check_pass.cpp */; }; - A926B98327AC718900144157 /* inst_bindless_check_pass.cpp in Sources */ = {isa = PBXBuildFile; fileRef = A926B52727AC718800144157 /* inst_bindless_check_pass.cpp */; }; - A926B98427AC718900144157 /* local_redundancy_elimination.cpp in Sources */ = {isa = PBXBuildFile; fileRef = A926B52827AC718800144157 /* local_redundancy_elimination.cpp */; }; - A926B98527AC718900144157 /* local_redundancy_elimination.cpp in Sources */ = {isa = PBXBuildFile; fileRef = A926B52827AC718800144157 /* local_redundancy_elimination.cpp */; }; - A926B98627AC718900144157 /* local_redundancy_elimination.cpp in Sources */ = {isa = PBXBuildFile; fileRef = A926B52827AC718800144157 /* local_redundancy_elimination.cpp */; }; - A926B98727AC718900144157 /* instrument_pass.cpp in Sources */ = {isa = PBXBuildFile; fileRef = A926B52A27AC718800144157 /* instrument_pass.cpp */; }; - A926B98827AC718900144157 /* instrument_pass.cpp in Sources */ = {isa = PBXBuildFile; fileRef = A926B52A27AC718800144157 /* instrument_pass.cpp */; }; - A926B98927AC718900144157 /* instrument_pass.cpp in Sources */ = {isa = PBXBuildFile; fileRef = A926B52A27AC718800144157 /* instrument_pass.cpp */; }; - A926B98A27AC718900144157 /* propagator.h in Headers */ = {isa = PBXBuildFile; fileRef = A926B52B27AC718800144157 /* propagator.h */; }; - A926B98B27AC718900144157 /* propagator.h in Headers */ = {isa = PBXBuildFile; fileRef = A926B52B27AC718800144157 /* propagator.h */; }; - A926B98C27AC718900144157 /* propagator.h in Headers */ = {isa = PBXBuildFile; fileRef = A926B52B27AC718800144157 /* propagator.h */; }; - A926B98D27AC718900144157 /* instruction_list.h in Headers */ = {isa = PBXBuildFile; fileRef = A926B52C27AC718800144157 /* instruction_list.h */; }; - A926B98E27AC718900144157 /* instruction_list.h in Headers */ = {isa = PBXBuildFile; fileRef = A926B52C27AC718800144157 /* instruction_list.h */; }; - A926B98F27AC718900144157 /* instruction_list.h in Headers */ = {isa = PBXBuildFile; fileRef = A926B52C27AC718800144157 /* instruction_list.h */; }; - A926B99027AC718900144157 /* feature_manager.cpp in Sources */ = {isa = PBXBuildFile; fileRef = A926B52D27AC718800144157 /* feature_manager.cpp */; }; - A926B99127AC718900144157 /* feature_manager.cpp in Sources */ = {isa = PBXBuildFile; fileRef = A926B52D27AC718800144157 /* feature_manager.cpp */; }; - A926B99227AC718900144157 /* feature_manager.cpp in Sources */ = {isa = PBXBuildFile; fileRef = A926B52D27AC718800144157 /* feature_manager.cpp */; }; - A926B99327AC718900144157 /* pass.cpp in Sources */ = {isa = PBXBuildFile; fileRef = A926B52E27AC718800144157 /* pass.cpp */; }; - A926B99427AC718900144157 /* pass.cpp in Sources */ = {isa = PBXBuildFile; fileRef = A926B52E27AC718800144157 /* pass.cpp */; }; - A926B99527AC718900144157 /* pass.cpp in Sources */ = {isa = PBXBuildFile; fileRef = A926B52E27AC718800144157 /* pass.cpp */; }; - A926B99627AC718900144157 /* loop_fission.cpp in Sources */ = {isa = PBXBuildFile; fileRef = A926B52F27AC718800144157 /* loop_fission.cpp */; }; - A926B99727AC718900144157 /* loop_fission.cpp in Sources */ = {isa = PBXBuildFile; fileRef = A926B52F27AC718800144157 /* loop_fission.cpp */; }; - A926B99827AC718900144157 /* loop_fission.cpp in Sources */ = {isa = PBXBuildFile; fileRef = A926B52F27AC718800144157 /* loop_fission.cpp */; }; - A926B99927AC718900144157 /* dominator_tree.cpp in Sources */ = {isa = PBXBuildFile; fileRef = A926B53027AC718800144157 /* dominator_tree.cpp */; }; - A926B99A27AC718900144157 /* dominator_tree.cpp in Sources */ = {isa = PBXBuildFile; fileRef = A926B53027AC718800144157 /* dominator_tree.cpp */; }; - A926B99B27AC718900144157 /* dominator_tree.cpp in Sources */ = {isa = PBXBuildFile; fileRef = A926B53027AC718800144157 /* dominator_tree.cpp */; }; - A926B99C27AC718900144157 /* amd_ext_to_khr.h in Headers */ = {isa = PBXBuildFile; fileRef = A926B53127AC718800144157 /* amd_ext_to_khr.h */; }; - A926B99D27AC718900144157 /* amd_ext_to_khr.h in Headers */ = {isa = PBXBuildFile; fileRef = A926B53127AC718800144157 /* amd_ext_to_khr.h */; }; - A926B99E27AC718900144157 /* amd_ext_to_khr.h in Headers */ = {isa = PBXBuildFile; fileRef = A926B53127AC718800144157 /* amd_ext_to_khr.h */; }; - A926B99F27AC718900144157 /* merge_return_pass.cpp in Sources */ = {isa = PBXBuildFile; fileRef = A926B53227AC718800144157 /* merge_return_pass.cpp */; }; - A926B9A027AC718900144157 /* merge_return_pass.cpp in Sources */ = {isa = PBXBuildFile; fileRef = A926B53227AC718800144157 /* merge_return_pass.cpp */; }; - A926B9A127AC718900144157 /* merge_return_pass.cpp in Sources */ = {isa = PBXBuildFile; fileRef = A926B53227AC718800144157 /* merge_return_pass.cpp */; }; - A926B9A227AC718900144157 /* ir_context.h in Headers */ = {isa = PBXBuildFile; fileRef = A926B53327AC718800144157 /* ir_context.h */; }; - A926B9A327AC718900144157 /* ir_context.h in Headers */ = {isa = PBXBuildFile; fileRef = A926B53327AC718800144157 /* ir_context.h */; }; - A926B9A427AC718900144157 /* ir_context.h in Headers */ = {isa = PBXBuildFile; fileRef = A926B53327AC718800144157 /* ir_context.h */; }; - A926B9A527AC718900144157 /* eliminate_dead_constant_pass.cpp in Sources */ = {isa = PBXBuildFile; fileRef = A926B53427AC718800144157 /* eliminate_dead_constant_pass.cpp */; }; - A926B9A627AC718900144157 /* eliminate_dead_constant_pass.cpp in Sources */ = {isa = PBXBuildFile; fileRef = A926B53427AC718800144157 /* eliminate_dead_constant_pass.cpp */; }; - A926B9A727AC718900144157 /* eliminate_dead_constant_pass.cpp in Sources */ = {isa = PBXBuildFile; fileRef = A926B53427AC718800144157 /* eliminate_dead_constant_pass.cpp */; }; - A926B9A827AC718900144157 /* control_dependence.h in Headers */ = {isa = PBXBuildFile; fileRef = A926B53527AC718800144157 /* control_dependence.h */; }; - A926B9A927AC718900144157 /* control_dependence.h in Headers */ = {isa = PBXBuildFile; fileRef = A926B53527AC718800144157 /* control_dependence.h */; }; - A926B9AA27AC718900144157 /* control_dependence.h in Headers */ = {isa = PBXBuildFile; fileRef = A926B53527AC718800144157 /* control_dependence.h */; }; - A926B9AB27AC718900144157 /* cfg_cleanup_pass.cpp in Sources */ = {isa = PBXBuildFile; fileRef = A926B53627AC718800144157 /* cfg_cleanup_pass.cpp */; }; - A926B9AC27AC718900144157 /* cfg_cleanup_pass.cpp in Sources */ = {isa = PBXBuildFile; fileRef = A926B53627AC718800144157 /* cfg_cleanup_pass.cpp */; }; - A926B9AD27AC718900144157 /* cfg_cleanup_pass.cpp in Sources */ = {isa = PBXBuildFile; fileRef = A926B53627AC718800144157 /* cfg_cleanup_pass.cpp */; }; - A926B9AE27AC718900144157 /* wrap_opkill.cpp in Sources */ = {isa = PBXBuildFile; fileRef = A926B53727AC718800144157 /* wrap_opkill.cpp */; }; - A926B9AF27AC718900144157 /* wrap_opkill.cpp in Sources */ = {isa = PBXBuildFile; fileRef = A926B53727AC718800144157 /* wrap_opkill.cpp */; }; - A926B9B027AC718900144157 /* wrap_opkill.cpp in Sources */ = {isa = PBXBuildFile; fileRef = A926B53727AC718800144157 /* wrap_opkill.cpp */; }; - A926B9B127AC718900144157 /* const_folding_rules.cpp in Sources */ = {isa = PBXBuildFile; fileRef = A926B53827AC718800144157 /* const_folding_rules.cpp */; }; - A926B9B227AC718900144157 /* const_folding_rules.cpp in Sources */ = {isa = PBXBuildFile; fileRef = A926B53827AC718800144157 /* const_folding_rules.cpp */; }; - A926B9B327AC718900144157 /* const_folding_rules.cpp in Sources */ = {isa = PBXBuildFile; fileRef = A926B53827AC718800144157 /* const_folding_rules.cpp */; }; - A926B9B427AC718900144157 /* loop_unroller.h in Headers */ = {isa = PBXBuildFile; fileRef = A926B53927AC718800144157 /* loop_unroller.h */; }; - A926B9B527AC718900144157 /* loop_unroller.h in Headers */ = {isa = PBXBuildFile; fileRef = A926B53927AC718800144157 /* loop_unroller.h */; }; - A926B9B627AC718900144157 /* loop_unroller.h in Headers */ = {isa = PBXBuildFile; fileRef = A926B53927AC718800144157 /* loop_unroller.h */; }; - A926B9B727AC718900144157 /* strip_debug_info_pass.cpp in Sources */ = {isa = PBXBuildFile; fileRef = A926B53A27AC718800144157 /* strip_debug_info_pass.cpp */; }; - A926B9B827AC718900144157 /* strip_debug_info_pass.cpp in Sources */ = {isa = PBXBuildFile; fileRef = A926B53A27AC718800144157 /* strip_debug_info_pass.cpp */; }; - A926B9B927AC718900144157 /* strip_debug_info_pass.cpp in Sources */ = {isa = PBXBuildFile; fileRef = A926B53A27AC718800144157 /* strip_debug_info_pass.cpp */; }; - A926B9BA27AC718900144157 /* ssa_rewrite_pass.cpp in Sources */ = {isa = PBXBuildFile; fileRef = A926B53B27AC718800144157 /* ssa_rewrite_pass.cpp */; }; - A926B9BB27AC718900144157 /* ssa_rewrite_pass.cpp in Sources */ = {isa = PBXBuildFile; fileRef = A926B53B27AC718800144157 /* ssa_rewrite_pass.cpp */; }; - A926B9BC27AC718900144157 /* ssa_rewrite_pass.cpp in Sources */ = {isa = PBXBuildFile; fileRef = A926B53B27AC718800144157 /* ssa_rewrite_pass.cpp */; }; - A926B9BD27AC718900144157 /* loop_dependence.cpp in Sources */ = {isa = PBXBuildFile; fileRef = A926B53C27AC718800144157 /* loop_dependence.cpp */; }; - A926B9BE27AC718900144157 /* loop_dependence.cpp in Sources */ = {isa = PBXBuildFile; fileRef = A926B53C27AC718800144157 /* loop_dependence.cpp */; }; - A926B9BF27AC718900144157 /* loop_dependence.cpp in Sources */ = {isa = PBXBuildFile; fileRef = A926B53C27AC718800144157 /* loop_dependence.cpp */; }; - A926B9C027AC718900144157 /* unify_const_pass.h in Headers */ = {isa = PBXBuildFile; fileRef = A926B53D27AC718800144157 /* unify_const_pass.h */; }; - A926B9C127AC718900144157 /* unify_const_pass.h in Headers */ = {isa = PBXBuildFile; fileRef = A926B53D27AC718800144157 /* unify_const_pass.h */; }; - A926B9C227AC718900144157 /* unify_const_pass.h in Headers */ = {isa = PBXBuildFile; fileRef = A926B53D27AC718800144157 /* unify_const_pass.h */; }; - A926B9C327AC718900144157 /* ir_loader.h in Headers */ = {isa = PBXBuildFile; fileRef = A926B53E27AC718800144157 /* ir_loader.h */; }; - A926B9C427AC718900144157 /* ir_loader.h in Headers */ = {isa = PBXBuildFile; fileRef = A926B53E27AC718800144157 /* ir_loader.h */; }; - A926B9C527AC718900144157 /* ir_loader.h in Headers */ = {isa = PBXBuildFile; fileRef = A926B53E27AC718800144157 /* ir_loader.h */; }; - A926B9C627AC718900144157 /* inst_debug_printf_pass.cpp in Sources */ = {isa = PBXBuildFile; fileRef = A926B53F27AC718800144157 /* inst_debug_printf_pass.cpp */; }; - A926B9C727AC718900144157 /* inst_debug_printf_pass.cpp in Sources */ = {isa = PBXBuildFile; fileRef = A926B53F27AC718800144157 /* inst_debug_printf_pass.cpp */; }; - A926B9C827AC718900144157 /* inst_debug_printf_pass.cpp in Sources */ = {isa = PBXBuildFile; fileRef = A926B53F27AC718800144157 /* inst_debug_printf_pass.cpp */; }; - A926B9C927AC718900144157 /* types.h in Headers */ = {isa = PBXBuildFile; fileRef = A926B54027AC718800144157 /* types.h */; }; - A926B9CA27AC718900144157 /* types.h in Headers */ = {isa = PBXBuildFile; fileRef = A926B54027AC718800144157 /* types.h */; }; - A926B9CB27AC718900144157 /* types.h in Headers */ = {isa = PBXBuildFile; fileRef = A926B54027AC718800144157 /* types.h */; }; - A926B9CC27AC718A00144157 /* fold_spec_constant_op_and_composite_pass.h in Headers */ = {isa = PBXBuildFile; fileRef = A926B54127AC718800144157 /* fold_spec_constant_op_and_composite_pass.h */; }; - A926B9CD27AC718A00144157 /* fold_spec_constant_op_and_composite_pass.h in Headers */ = {isa = PBXBuildFile; fileRef = A926B54127AC718800144157 /* fold_spec_constant_op_and_composite_pass.h */; }; - A926B9CE27AC718A00144157 /* fold_spec_constant_op_and_composite_pass.h in Headers */ = {isa = PBXBuildFile; fileRef = A926B54127AC718800144157 /* fold_spec_constant_op_and_composite_pass.h */; }; - A926B9CF27AC718A00144157 /* mem_pass.cpp in Sources */ = {isa = PBXBuildFile; fileRef = A926B54227AC718800144157 /* mem_pass.cpp */; }; - A926B9D027AC718A00144157 /* mem_pass.cpp in Sources */ = {isa = PBXBuildFile; fileRef = A926B54227AC718800144157 /* mem_pass.cpp */; }; - A926B9D127AC718A00144157 /* mem_pass.cpp in Sources */ = {isa = PBXBuildFile; fileRef = A926B54227AC718800144157 /* mem_pass.cpp */; }; - A926B9D227AC718A00144157 /* basic_block.h in Headers */ = {isa = PBXBuildFile; fileRef = A926B54327AC718800144157 /* basic_block.h */; }; - A926B9D327AC718A00144157 /* basic_block.h in Headers */ = {isa = PBXBuildFile; fileRef = A926B54327AC718800144157 /* basic_block.h */; }; - A926B9D427AC718A00144157 /* basic_block.h in Headers */ = {isa = PBXBuildFile; fileRef = A926B54327AC718800144157 /* basic_block.h */; }; - A926B9D527AC718A00144157 /* remove_duplicates_pass.cpp in Sources */ = {isa = PBXBuildFile; fileRef = A926B54427AC718800144157 /* remove_duplicates_pass.cpp */; }; - A926B9D627AC718A00144157 /* remove_duplicates_pass.cpp in Sources */ = {isa = PBXBuildFile; fileRef = A926B54427AC718800144157 /* remove_duplicates_pass.cpp */; }; - A926B9D727AC718A00144157 /* remove_duplicates_pass.cpp in Sources */ = {isa = PBXBuildFile; fileRef = A926B54427AC718800144157 /* remove_duplicates_pass.cpp */; }; - A926B9D827AC718A00144157 /* dead_variable_elimination.cpp in Sources */ = {isa = PBXBuildFile; fileRef = A926B54527AC718800144157 /* dead_variable_elimination.cpp */; }; - A926B9D927AC718A00144157 /* dead_variable_elimination.cpp in Sources */ = {isa = PBXBuildFile; fileRef = A926B54527AC718800144157 /* dead_variable_elimination.cpp */; }; - A926B9DA27AC718A00144157 /* dead_variable_elimination.cpp in Sources */ = {isa = PBXBuildFile; fileRef = A926B54527AC718800144157 /* dead_variable_elimination.cpp */; }; - A926B9DB27AC718A00144157 /* block_merge_pass.h in Headers */ = {isa = PBXBuildFile; fileRef = A926B54627AC718800144157 /* block_merge_pass.h */; }; - A926B9DC27AC718A00144157 /* block_merge_pass.h in Headers */ = {isa = PBXBuildFile; fileRef = A926B54627AC718800144157 /* block_merge_pass.h */; }; - A926B9DD27AC718A00144157 /* block_merge_pass.h in Headers */ = {isa = PBXBuildFile; fileRef = A926B54627AC718800144157 /* block_merge_pass.h */; }; - A926B9DE27AC718A00144157 /* module.cpp in Sources */ = {isa = PBXBuildFile; fileRef = A926B54727AC718800144157 /* module.cpp */; }; - A926B9DF27AC718A00144157 /* module.cpp in Sources */ = {isa = PBXBuildFile; fileRef = A926B54727AC718800144157 /* module.cpp */; }; - A926B9E027AC718A00144157 /* module.cpp in Sources */ = {isa = PBXBuildFile; fileRef = A926B54727AC718800144157 /* module.cpp */; }; - A926B9E127AC718A00144157 /* debug_info_manager.h in Headers */ = {isa = PBXBuildFile; fileRef = A926B54827AC718800144157 /* debug_info_manager.h */; }; - A926B9E227AC718A00144157 /* debug_info_manager.h in Headers */ = {isa = PBXBuildFile; fileRef = A926B54827AC718800144157 /* debug_info_manager.h */; }; - A926B9E327AC718A00144157 /* debug_info_manager.h in Headers */ = {isa = PBXBuildFile; fileRef = A926B54827AC718800144157 /* debug_info_manager.h */; }; - A926B9E427AC718A00144157 /* fold_spec_constant_op_and_composite_pass.cpp in Sources */ = {isa = PBXBuildFile; fileRef = A926B54927AC718800144157 /* fold_spec_constant_op_and_composite_pass.cpp */; }; - A926B9E527AC718A00144157 /* fold_spec_constant_op_and_composite_pass.cpp in Sources */ = {isa = PBXBuildFile; fileRef = A926B54927AC718800144157 /* fold_spec_constant_op_and_composite_pass.cpp */; }; - A926B9E627AC718A00144157 /* fold_spec_constant_op_and_composite_pass.cpp in Sources */ = {isa = PBXBuildFile; fileRef = A926B54927AC718800144157 /* fold_spec_constant_op_and_composite_pass.cpp */; }; - A926B9E727AC718A00144157 /* loop_unswitch_pass.cpp in Sources */ = {isa = PBXBuildFile; fileRef = A926B54A27AC718800144157 /* loop_unswitch_pass.cpp */; }; - A926B9E827AC718A00144157 /* loop_unswitch_pass.cpp in Sources */ = {isa = PBXBuildFile; fileRef = A926B54A27AC718800144157 /* loop_unswitch_pass.cpp */; }; - A926B9E927AC718A00144157 /* loop_unswitch_pass.cpp in Sources */ = {isa = PBXBuildFile; fileRef = A926B54A27AC718800144157 /* loop_unswitch_pass.cpp */; }; - A926B9EA27AC718A00144157 /* unify_const_pass.cpp in Sources */ = {isa = PBXBuildFile; fileRef = A926B54B27AC718800144157 /* unify_const_pass.cpp */; }; - A926B9EB27AC718A00144157 /* unify_const_pass.cpp in Sources */ = {isa = PBXBuildFile; fileRef = A926B54B27AC718800144157 /* unify_const_pass.cpp */; }; - A926B9EC27AC718A00144157 /* unify_const_pass.cpp in Sources */ = {isa = PBXBuildFile; fileRef = A926B54B27AC718800144157 /* unify_const_pass.cpp */; }; - A926B9ED27AC718A00144157 /* type_manager.cpp in Sources */ = {isa = PBXBuildFile; fileRef = A926B54C27AC718800144157 /* type_manager.cpp */; }; - A926B9EE27AC718A00144157 /* type_manager.cpp in Sources */ = {isa = PBXBuildFile; fileRef = A926B54C27AC718800144157 /* type_manager.cpp */; }; - A926B9EF27AC718A00144157 /* type_manager.cpp in Sources */ = {isa = PBXBuildFile; fileRef = A926B54C27AC718800144157 /* type_manager.cpp */; }; - A926B9F027AC718A00144157 /* private_to_local_pass.h in Headers */ = {isa = PBXBuildFile; fileRef = A926B54D27AC718800144157 /* private_to_local_pass.h */; }; - A926B9F127AC718A00144157 /* private_to_local_pass.h in Headers */ = {isa = PBXBuildFile; fileRef = A926B54D27AC718800144157 /* private_to_local_pass.h */; }; - A926B9F227AC718A00144157 /* private_to_local_pass.h in Headers */ = {isa = PBXBuildFile; fileRef = A926B54D27AC718800144157 /* private_to_local_pass.h */; }; - A926B9F327AC718A00144157 /* convert_to_half_pass.h in Headers */ = {isa = PBXBuildFile; fileRef = A926B54E27AC718800144157 /* convert_to_half_pass.h */; }; - A926B9F427AC718A00144157 /* convert_to_half_pass.h in Headers */ = {isa = PBXBuildFile; fileRef = A926B54E27AC718800144157 /* convert_to_half_pass.h */; }; - A926B9F527AC718A00144157 /* convert_to_half_pass.h in Headers */ = {isa = PBXBuildFile; fileRef = A926B54E27AC718800144157 /* convert_to_half_pass.h */; }; - A926B9F627AC718A00144157 /* relax_float_ops_pass.h in Headers */ = {isa = PBXBuildFile; fileRef = A926B54F27AC718800144157 /* relax_float_ops_pass.h */; }; - A926B9F727AC718A00144157 /* relax_float_ops_pass.h in Headers */ = {isa = PBXBuildFile; fileRef = A926B54F27AC718800144157 /* relax_float_ops_pass.h */; }; - A926B9F827AC718A00144157 /* relax_float_ops_pass.h in Headers */ = {isa = PBXBuildFile; fileRef = A926B54F27AC718800144157 /* relax_float_ops_pass.h */; }; - A926B9F927AC718A00144157 /* inline_pass.cpp in Sources */ = {isa = PBXBuildFile; fileRef = A926B55027AC718800144157 /* inline_pass.cpp */; }; - A926B9FA27AC718A00144157 /* inline_pass.cpp in Sources */ = {isa = PBXBuildFile; fileRef = A926B55027AC718800144157 /* inline_pass.cpp */; }; - A926B9FB27AC718A00144157 /* inline_pass.cpp in Sources */ = {isa = PBXBuildFile; fileRef = A926B55027AC718800144157 /* inline_pass.cpp */; }; - A926B9FC27AC718A00144157 /* def_use_manager.h in Headers */ = {isa = PBXBuildFile; fileRef = A926B55127AC718800144157 /* def_use_manager.h */; }; - A926B9FD27AC718A00144157 /* def_use_manager.h in Headers */ = {isa = PBXBuildFile; fileRef = A926B55127AC718800144157 /* def_use_manager.h */; }; - A926B9FE27AC718A00144157 /* def_use_manager.h in Headers */ = {isa = PBXBuildFile; fileRef = A926B55127AC718800144157 /* def_use_manager.h */; }; - A926B9FF27AC718A00144157 /* ir_loader.cpp in Sources */ = {isa = PBXBuildFile; fileRef = A926B55227AC718800144157 /* ir_loader.cpp */; }; - A926BA0027AC718A00144157 /* ir_loader.cpp in Sources */ = {isa = PBXBuildFile; fileRef = A926B55227AC718800144157 /* ir_loader.cpp */; }; - A926BA0127AC718A00144157 /* ir_loader.cpp in Sources */ = {isa = PBXBuildFile; fileRef = A926B55227AC718800144157 /* ir_loader.cpp */; }; - A926BA0227AC718A00144157 /* convert_to_sampled_image_pass.h in Headers */ = {isa = PBXBuildFile; fileRef = A926B55327AC718800144157 /* convert_to_sampled_image_pass.h */; }; - A926BA0327AC718A00144157 /* convert_to_sampled_image_pass.h in Headers */ = {isa = PBXBuildFile; fileRef = A926B55327AC718800144157 /* convert_to_sampled_image_pass.h */; }; - A926BA0427AC718A00144157 /* convert_to_sampled_image_pass.h in Headers */ = {isa = PBXBuildFile; fileRef = A926B55327AC718800144157 /* convert_to_sampled_image_pass.h */; }; - A926BA0527AC718A00144157 /* cfg_cleanup_pass.h in Headers */ = {isa = PBXBuildFile; fileRef = A926B55427AC718800144157 /* cfg_cleanup_pass.h */; }; - A926BA0627AC718A00144157 /* cfg_cleanup_pass.h in Headers */ = {isa = PBXBuildFile; fileRef = A926B55427AC718800144157 /* cfg_cleanup_pass.h */; }; - A926BA0727AC718A00144157 /* cfg_cleanup_pass.h in Headers */ = {isa = PBXBuildFile; fileRef = A926B55427AC718800144157 /* cfg_cleanup_pass.h */; }; - A926BA0827AC718A00144157 /* licm_pass.cpp in Sources */ = {isa = PBXBuildFile; fileRef = A926B55527AC718800144157 /* licm_pass.cpp */; }; - A926BA0927AC718A00144157 /* licm_pass.cpp in Sources */ = {isa = PBXBuildFile; fileRef = A926B55527AC718800144157 /* licm_pass.cpp */; }; - A926BA0A27AC718A00144157 /* licm_pass.cpp in Sources */ = {isa = PBXBuildFile; fileRef = A926B55527AC718800144157 /* licm_pass.cpp */; }; - A926BA0B27AC718A00144157 /* eliminate_dead_functions_pass.cpp in Sources */ = {isa = PBXBuildFile; fileRef = A926B55627AC718800144157 /* eliminate_dead_functions_pass.cpp */; }; - A926BA0C27AC718A00144157 /* eliminate_dead_functions_pass.cpp in Sources */ = {isa = PBXBuildFile; fileRef = A926B55627AC718800144157 /* eliminate_dead_functions_pass.cpp */; }; - A926BA0D27AC718A00144157 /* eliminate_dead_functions_pass.cpp in Sources */ = {isa = PBXBuildFile; fileRef = A926B55627AC718800144157 /* eliminate_dead_functions_pass.cpp */; }; - A926BA0E27AC718A00144157 /* local_redundancy_elimination.h in Headers */ = {isa = PBXBuildFile; fileRef = A926B55727AC718800144157 /* local_redundancy_elimination.h */; }; - A926BA0F27AC718A00144157 /* local_redundancy_elimination.h in Headers */ = {isa = PBXBuildFile; fileRef = A926B55727AC718800144157 /* local_redundancy_elimination.h */; }; - A926BA1027AC718A00144157 /* local_redundancy_elimination.h in Headers */ = {isa = PBXBuildFile; fileRef = A926B55727AC718800144157 /* local_redundancy_elimination.h */; }; - A926BA1127AC718A00144157 /* loop_peeling.h in Headers */ = {isa = PBXBuildFile; fileRef = A926B55827AC718800144157 /* loop_peeling.h */; }; - A926BA1227AC718A00144157 /* loop_peeling.h in Headers */ = {isa = PBXBuildFile; fileRef = A926B55827AC718800144157 /* loop_peeling.h */; }; - A926BA1327AC718A00144157 /* loop_peeling.h in Headers */ = {isa = PBXBuildFile; fileRef = A926B55827AC718800144157 /* loop_peeling.h */; }; - A926BA1427AC718A00144157 /* vector_dce.cpp in Sources */ = {isa = PBXBuildFile; fileRef = A926B55927AC718800144157 /* vector_dce.cpp */; }; - A926BA1527AC718A00144157 /* vector_dce.cpp in Sources */ = {isa = PBXBuildFile; fileRef = A926B55927AC718800144157 /* vector_dce.cpp */; }; - A926BA1627AC718A00144157 /* vector_dce.cpp in Sources */ = {isa = PBXBuildFile; fileRef = A926B55927AC718800144157 /* vector_dce.cpp */; }; - A926BA1727AC718A00144157 /* block_merge_util.h in Headers */ = {isa = PBXBuildFile; fileRef = A926B55A27AC718800144157 /* block_merge_util.h */; }; - A926BA1827AC718A00144157 /* block_merge_util.h in Headers */ = {isa = PBXBuildFile; fileRef = A926B55A27AC718800144157 /* block_merge_util.h */; }; - A926BA1927AC718A00144157 /* block_merge_util.h in Headers */ = {isa = PBXBuildFile; fileRef = A926B55A27AC718800144157 /* block_merge_util.h */; }; - A926BA1A27AC718A00144157 /* loop_unroller.cpp in Sources */ = {isa = PBXBuildFile; fileRef = A926B55B27AC718800144157 /* loop_unroller.cpp */; }; - A926BA1B27AC718A00144157 /* loop_unroller.cpp in Sources */ = {isa = PBXBuildFile; fileRef = A926B55B27AC718800144157 /* loop_unroller.cpp */; }; - A926BA1C27AC718A00144157 /* loop_unroller.cpp in Sources */ = {isa = PBXBuildFile; fileRef = A926B55B27AC718800144157 /* loop_unroller.cpp */; }; - A926BA1D27AC718A00144157 /* desc_sroa.h in Headers */ = {isa = PBXBuildFile; fileRef = A926B55C27AC718800144157 /* desc_sroa.h */; }; - A926BA1E27AC718A00144157 /* desc_sroa.h in Headers */ = {isa = PBXBuildFile; fileRef = A926B55C27AC718800144157 /* desc_sroa.h */; }; - A926BA1F27AC718A00144157 /* desc_sroa.h in Headers */ = {isa = PBXBuildFile; fileRef = A926B55C27AC718800144157 /* desc_sroa.h */; }; - A926BA2027AC718A00144157 /* constants.cpp in Sources */ = {isa = PBXBuildFile; fileRef = A926B55D27AC718800144157 /* constants.cpp */; }; - A926BA2127AC718A00144157 /* constants.cpp in Sources */ = {isa = PBXBuildFile; fileRef = A926B55D27AC718800144157 /* constants.cpp */; }; - A926BA2227AC718A00144157 /* constants.cpp in Sources */ = {isa = PBXBuildFile; fileRef = A926B55D27AC718800144157 /* constants.cpp */; }; - A926BA2327AC718A00144157 /* loop_fusion_pass.h in Headers */ = {isa = PBXBuildFile; fileRef = A926B55E27AC718800144157 /* loop_fusion_pass.h */; }; - A926BA2427AC718A00144157 /* loop_fusion_pass.h in Headers */ = {isa = PBXBuildFile; fileRef = A926B55E27AC718800144157 /* loop_fusion_pass.h */; }; - A926BA2527AC718A00144157 /* loop_fusion_pass.h in Headers */ = {isa = PBXBuildFile; fileRef = A926B55E27AC718800144157 /* loop_fusion_pass.h */; }; - A926BA2627AC718A00144157 /* struct_cfg_analysis.h in Headers */ = {isa = PBXBuildFile; fileRef = A926B55F27AC718800144157 /* struct_cfg_analysis.h */; }; - A926BA2727AC718A00144157 /* struct_cfg_analysis.h in Headers */ = {isa = PBXBuildFile; fileRef = A926B55F27AC718800144157 /* struct_cfg_analysis.h */; }; - A926BA2827AC718A00144157 /* struct_cfg_analysis.h in Headers */ = {isa = PBXBuildFile; fileRef = A926B55F27AC718800144157 /* struct_cfg_analysis.h */; }; - A926BA2927AC718A00144157 /* desc_sroa_util.cpp in Sources */ = {isa = PBXBuildFile; fileRef = A926B56027AC718800144157 /* desc_sroa_util.cpp */; }; - A926BA2A27AC718A00144157 /* desc_sroa_util.cpp in Sources */ = {isa = PBXBuildFile; fileRef = A926B56027AC718800144157 /* desc_sroa_util.cpp */; }; - A926BA2B27AC718A00144157 /* desc_sroa_util.cpp in Sources */ = {isa = PBXBuildFile; fileRef = A926B56027AC718800144157 /* desc_sroa_util.cpp */; }; - A926BA2C27AC718A00144157 /* inst_buff_addr_check_pass.cpp in Sources */ = {isa = PBXBuildFile; fileRef = A926B56127AC718800144157 /* inst_buff_addr_check_pass.cpp */; }; - A926BA2D27AC718A00144157 /* inst_buff_addr_check_pass.cpp in Sources */ = {isa = PBXBuildFile; fileRef = A926B56127AC718800144157 /* inst_buff_addr_check_pass.cpp */; }; - A926BA2E27AC718A00144157 /* inst_buff_addr_check_pass.cpp in Sources */ = {isa = PBXBuildFile; fileRef = A926B56127AC718800144157 /* inst_buff_addr_check_pass.cpp */; }; - A926BA2F27AC718A00144157 /* def_use_manager.cpp in Sources */ = {isa = PBXBuildFile; fileRef = A926B56227AC718800144157 /* def_use_manager.cpp */; }; - A926BA3027AC718A00144157 /* def_use_manager.cpp in Sources */ = {isa = PBXBuildFile; fileRef = A926B56227AC718800144157 /* def_use_manager.cpp */; }; - A926BA3127AC718A00144157 /* def_use_manager.cpp in Sources */ = {isa = PBXBuildFile; fileRef = A926B56227AC718800144157 /* def_use_manager.cpp */; }; - A926BA3227AC718A00144157 /* wrap_opkill.h in Headers */ = {isa = PBXBuildFile; fileRef = A926B56327AC718800144157 /* wrap_opkill.h */; }; - A926BA3327AC718A00144157 /* wrap_opkill.h in Headers */ = {isa = PBXBuildFile; fileRef = A926B56327AC718800144157 /* wrap_opkill.h */; }; - A926BA3427AC718A00144157 /* wrap_opkill.h in Headers */ = {isa = PBXBuildFile; fileRef = A926B56327AC718800144157 /* wrap_opkill.h */; }; - A926BA3527AC718A00144157 /* empty_pass.h in Headers */ = {isa = PBXBuildFile; fileRef = A926B56427AC718800144157 /* empty_pass.h */; }; - A926BA3627AC718A00144157 /* empty_pass.h in Headers */ = {isa = PBXBuildFile; fileRef = A926B56427AC718800144157 /* empty_pass.h */; }; - A926BA3727AC718A00144157 /* empty_pass.h in Headers */ = {isa = PBXBuildFile; fileRef = A926B56427AC718800144157 /* empty_pass.h */; }; - A926BA3827AC718A00144157 /* decoration_manager.h in Headers */ = {isa = PBXBuildFile; fileRef = A926B56527AC718800144157 /* decoration_manager.h */; }; - A926BA3927AC718A00144157 /* decoration_manager.h in Headers */ = {isa = PBXBuildFile; fileRef = A926B56527AC718800144157 /* decoration_manager.h */; }; - A926BA3A27AC718A00144157 /* decoration_manager.h in Headers */ = {isa = PBXBuildFile; fileRef = A926B56527AC718800144157 /* decoration_manager.h */; }; - A926BA3B27AC718A00144157 /* ccp_pass.cpp in Sources */ = {isa = PBXBuildFile; fileRef = A926B56627AC718800144157 /* ccp_pass.cpp */; }; - A926BA3C27AC718A00144157 /* ccp_pass.cpp in Sources */ = {isa = PBXBuildFile; fileRef = A926B56627AC718800144157 /* ccp_pass.cpp */; }; - A926BA3D27AC718A00144157 /* ccp_pass.cpp in Sources */ = {isa = PBXBuildFile; fileRef = A926B56627AC718800144157 /* ccp_pass.cpp */; }; - A926BA3E27AC718A00144157 /* local_single_block_elim_pass.h in Headers */ = {isa = PBXBuildFile; fileRef = A926B56727AC718800144157 /* local_single_block_elim_pass.h */; }; - A926BA3F27AC718A00144157 /* local_single_block_elim_pass.h in Headers */ = {isa = PBXBuildFile; fileRef = A926B56727AC718800144157 /* local_single_block_elim_pass.h */; }; - A926BA4027AC718A00144157 /* local_single_block_elim_pass.h in Headers */ = {isa = PBXBuildFile; fileRef = A926B56727AC718800144157 /* local_single_block_elim_pass.h */; }; - A926BA4127AC718A00144157 /* interp_fixup_pass.h in Headers */ = {isa = PBXBuildFile; fileRef = A926B56827AC718800144157 /* interp_fixup_pass.h */; }; - A926BA4227AC718A00144157 /* interp_fixup_pass.h in Headers */ = {isa = PBXBuildFile; fileRef = A926B56827AC718800144157 /* interp_fixup_pass.h */; }; - A926BA4327AC718A00144157 /* interp_fixup_pass.h in Headers */ = {isa = PBXBuildFile; fileRef = A926B56827AC718800144157 /* interp_fixup_pass.h */; }; - A926BA4427AC718A00144157 /* pch_source_opt.cpp in Sources */ = {isa = PBXBuildFile; fileRef = A926B56927AC718800144157 /* pch_source_opt.cpp */; }; - A926BA4527AC718A00144157 /* pch_source_opt.cpp in Sources */ = {isa = PBXBuildFile; fileRef = A926B56927AC718800144157 /* pch_source_opt.cpp */; }; - A926BA4627AC718A00144157 /* pch_source_opt.cpp in Sources */ = {isa = PBXBuildFile; fileRef = A926B56927AC718800144157 /* pch_source_opt.cpp */; }; - A926BA4727AC718A00144157 /* inst_buff_addr_check_pass.h in Headers */ = {isa = PBXBuildFile; fileRef = A926B56A27AC718800144157 /* inst_buff_addr_check_pass.h */; }; - A926BA4827AC718A00144157 /* inst_buff_addr_check_pass.h in Headers */ = {isa = PBXBuildFile; fileRef = A926B56A27AC718800144157 /* inst_buff_addr_check_pass.h */; }; - A926BA4927AC718A00144157 /* inst_buff_addr_check_pass.h in Headers */ = {isa = PBXBuildFile; fileRef = A926B56A27AC718800144157 /* inst_buff_addr_check_pass.h */; }; - A926BA4A27AC718A00144157 /* strength_reduction_pass.h in Headers */ = {isa = PBXBuildFile; fileRef = A926B56B27AC718800144157 /* strength_reduction_pass.h */; }; - A926BA4B27AC718A00144157 /* strength_reduction_pass.h in Headers */ = {isa = PBXBuildFile; fileRef = A926B56B27AC718800144157 /* strength_reduction_pass.h */; }; - A926BA4C27AC718A00144157 /* strength_reduction_pass.h in Headers */ = {isa = PBXBuildFile; fileRef = A926B56B27AC718800144157 /* strength_reduction_pass.h */; }; - A926BA4D27AC718A00144157 /* aggressive_dead_code_elim_pass.cpp in Sources */ = {isa = PBXBuildFile; fileRef = A926B56C27AC718800144157 /* aggressive_dead_code_elim_pass.cpp */; }; - A926BA4E27AC718A00144157 /* aggressive_dead_code_elim_pass.cpp in Sources */ = {isa = PBXBuildFile; fileRef = A926B56C27AC718800144157 /* aggressive_dead_code_elim_pass.cpp */; }; - A926BA4F27AC718A00144157 /* aggressive_dead_code_elim_pass.cpp in Sources */ = {isa = PBXBuildFile; fileRef = A926B56C27AC718800144157 /* aggressive_dead_code_elim_pass.cpp */; }; - A926BA5027AC718A00144157 /* eliminate_dead_functions_util.cpp in Sources */ = {isa = PBXBuildFile; fileRef = A926B56D27AC718800144157 /* eliminate_dead_functions_util.cpp */; }; - A926BA5127AC718A00144157 /* eliminate_dead_functions_util.cpp in Sources */ = {isa = PBXBuildFile; fileRef = A926B56D27AC718800144157 /* eliminate_dead_functions_util.cpp */; }; - A926BA5227AC718A00144157 /* eliminate_dead_functions_util.cpp in Sources */ = {isa = PBXBuildFile; fileRef = A926B56D27AC718800144157 /* eliminate_dead_functions_util.cpp */; }; - A926BA5327AC718A00144157 /* inst_debug_printf_pass.h in Headers */ = {isa = PBXBuildFile; fileRef = A926B56E27AC718800144157 /* inst_debug_printf_pass.h */; }; - A926BA5427AC718A00144157 /* inst_debug_printf_pass.h in Headers */ = {isa = PBXBuildFile; fileRef = A926B56E27AC718800144157 /* inst_debug_printf_pass.h */; }; - A926BA5527AC718A00144157 /* inst_debug_printf_pass.h in Headers */ = {isa = PBXBuildFile; fileRef = A926B56E27AC718800144157 /* inst_debug_printf_pass.h */; }; - A926BA5627AC718A00144157 /* simplification_pass.cpp in Sources */ = {isa = PBXBuildFile; fileRef = A926B56F27AC718800144157 /* simplification_pass.cpp */; }; - A926BA5727AC718A00144157 /* simplification_pass.cpp in Sources */ = {isa = PBXBuildFile; fileRef = A926B56F27AC718800144157 /* simplification_pass.cpp */; }; - A926BA5827AC718A00144157 /* simplification_pass.cpp in Sources */ = {isa = PBXBuildFile; fileRef = A926B56F27AC718800144157 /* simplification_pass.cpp */; }; - A926BA5927AC718A00144157 /* dead_branch_elim_pass.cpp in Sources */ = {isa = PBXBuildFile; fileRef = A926B57027AC718800144157 /* dead_branch_elim_pass.cpp */; }; - A926BA5A27AC718A00144157 /* dead_branch_elim_pass.cpp in Sources */ = {isa = PBXBuildFile; fileRef = A926B57027AC718800144157 /* dead_branch_elim_pass.cpp */; }; - A926BA5B27AC718A00144157 /* dead_branch_elim_pass.cpp in Sources */ = {isa = PBXBuildFile; fileRef = A926B57027AC718800144157 /* dead_branch_elim_pass.cpp */; }; - A926BA5C27AC718A00144157 /* flatten_decoration_pass.cpp in Sources */ = {isa = PBXBuildFile; fileRef = A926B57127AC718800144157 /* flatten_decoration_pass.cpp */; }; - A926BA5D27AC718A00144157 /* flatten_decoration_pass.cpp in Sources */ = {isa = PBXBuildFile; fileRef = A926B57127AC718800144157 /* flatten_decoration_pass.cpp */; }; - A926BA5E27AC718A00144157 /* flatten_decoration_pass.cpp in Sources */ = {isa = PBXBuildFile; fileRef = A926B57127AC718800144157 /* flatten_decoration_pass.cpp */; }; - A926BA5F27AC718A00144157 /* dead_insert_elim_pass.h in Headers */ = {isa = PBXBuildFile; fileRef = A926B57227AC718800144157 /* dead_insert_elim_pass.h */; }; - A926BA6027AC718A00144157 /* dead_insert_elim_pass.h in Headers */ = {isa = PBXBuildFile; fileRef = A926B57227AC718800144157 /* dead_insert_elim_pass.h */; }; - A926BA6127AC718A00144157 /* dead_insert_elim_pass.h in Headers */ = {isa = PBXBuildFile; fileRef = A926B57227AC718800144157 /* dead_insert_elim_pass.h */; }; - A926BA6227AC718A00144157 /* folding_rules.cpp in Sources */ = {isa = PBXBuildFile; fileRef = A926B57327AC718800144157 /* folding_rules.cpp */; }; - A926BA6327AC718A00144157 /* folding_rules.cpp in Sources */ = {isa = PBXBuildFile; fileRef = A926B57327AC718800144157 /* folding_rules.cpp */; }; - A926BA6427AC718A00144157 /* folding_rules.cpp in Sources */ = {isa = PBXBuildFile; fileRef = A926B57327AC718800144157 /* folding_rules.cpp */; }; - A926BA6527AC718A00144157 /* freeze_spec_constant_value_pass.h in Headers */ = {isa = PBXBuildFile; fileRef = A926B57427AC718800144157 /* freeze_spec_constant_value_pass.h */; }; - A926BA6627AC718A00144157 /* freeze_spec_constant_value_pass.h in Headers */ = {isa = PBXBuildFile; fileRef = A926B57427AC718800144157 /* freeze_spec_constant_value_pass.h */; }; - A926BA6727AC718A00144157 /* freeze_spec_constant_value_pass.h in Headers */ = {isa = PBXBuildFile; fileRef = A926B57427AC718800144157 /* freeze_spec_constant_value_pass.h */; }; - A926BA6827AC718A00144157 /* ir_context.cpp in Sources */ = {isa = PBXBuildFile; fileRef = A926B57527AC718800144157 /* ir_context.cpp */; }; - A926BA6927AC718A00144157 /* ir_context.cpp in Sources */ = {isa = PBXBuildFile; fileRef = A926B57527AC718800144157 /* ir_context.cpp */; }; - A926BA6A27AC718A00144157 /* ir_context.cpp in Sources */ = {isa = PBXBuildFile; fileRef = A926B57527AC718800144157 /* ir_context.cpp */; }; - A926BA6B27AC718A00144157 /* instrument_pass.h in Headers */ = {isa = PBXBuildFile; fileRef = A926B57627AC718800144157 /* instrument_pass.h */; }; - A926BA6C27AC718A00144157 /* instrument_pass.h in Headers */ = {isa = PBXBuildFile; fileRef = A926B57627AC718800144157 /* instrument_pass.h */; }; - A926BA6D27AC718A00144157 /* instrument_pass.h in Headers */ = {isa = PBXBuildFile; fileRef = A926B57627AC718800144157 /* instrument_pass.h */; }; - A926BA6E27AC718A00144157 /* mem_pass.h in Headers */ = {isa = PBXBuildFile; fileRef = A926B57727AC718800144157 /* mem_pass.h */; }; - A926BA6F27AC718A00144157 /* mem_pass.h in Headers */ = {isa = PBXBuildFile; fileRef = A926B57727AC718800144157 /* mem_pass.h */; }; - A926BA7027AC718A00144157 /* mem_pass.h in Headers */ = {isa = PBXBuildFile; fileRef = A926B57727AC718800144157 /* mem_pass.h */; }; - A926BA7127AC718A00144157 /* loop_descriptor.cpp in Sources */ = {isa = PBXBuildFile; fileRef = A926B57827AC718800144157 /* loop_descriptor.cpp */; }; - A926BA7227AC718A00144157 /* loop_descriptor.cpp in Sources */ = {isa = PBXBuildFile; fileRef = A926B57827AC718800144157 /* loop_descriptor.cpp */; }; - A926BA7327AC718A00144157 /* loop_descriptor.cpp in Sources */ = {isa = PBXBuildFile; fileRef = A926B57827AC718800144157 /* loop_descriptor.cpp */; }; - A926BA7427AC718A00144157 /* eliminate_dead_members_pass.h in Headers */ = {isa = PBXBuildFile; fileRef = A926B57927AC718800144157 /* eliminate_dead_members_pass.h */; }; - A926BA7527AC718A00144157 /* eliminate_dead_members_pass.h in Headers */ = {isa = PBXBuildFile; fileRef = A926B57927AC718800144157 /* eliminate_dead_members_pass.h */; }; - A926BA7627AC718A00144157 /* eliminate_dead_members_pass.h in Headers */ = {isa = PBXBuildFile; fileRef = A926B57927AC718800144157 /* eliminate_dead_members_pass.h */; }; - A926BA7727AC718A00144157 /* function.cpp in Sources */ = {isa = PBXBuildFile; fileRef = A926B57A27AC718800144157 /* function.cpp */; }; - A926BA7827AC718A00144157 /* function.cpp in Sources */ = {isa = PBXBuildFile; fileRef = A926B57A27AC718800144157 /* function.cpp */; }; - A926BA7927AC718A00144157 /* function.cpp in Sources */ = {isa = PBXBuildFile; fileRef = A926B57A27AC718800144157 /* function.cpp */; }; - A926BA7A27AC718A00144157 /* instruction_list.cpp in Sources */ = {isa = PBXBuildFile; fileRef = A926B57B27AC718800144157 /* instruction_list.cpp */; }; - A926BA7B27AC718A00144157 /* instruction_list.cpp in Sources */ = {isa = PBXBuildFile; fileRef = A926B57B27AC718800144157 /* instruction_list.cpp */; }; - A926BA7C27AC718A00144157 /* instruction_list.cpp in Sources */ = {isa = PBXBuildFile; fileRef = A926B57B27AC718800144157 /* instruction_list.cpp */; }; - A926BA7D27AC718A00144157 /* control_dependence.cpp in Sources */ = {isa = PBXBuildFile; fileRef = A926B57C27AC718800144157 /* control_dependence.cpp */; }; - A926BA7E27AC718A00144157 /* control_dependence.cpp in Sources */ = {isa = PBXBuildFile; fileRef = A926B57C27AC718800144157 /* control_dependence.cpp */; }; - A926BA7F27AC718A00144157 /* control_dependence.cpp in Sources */ = {isa = PBXBuildFile; fileRef = A926B57C27AC718800144157 /* control_dependence.cpp */; }; - A926BA8027AC718A00144157 /* composite.cpp in Sources */ = {isa = PBXBuildFile; fileRef = A926B57D27AC718800144157 /* composite.cpp */; }; - A926BA8127AC718A00144157 /* composite.cpp in Sources */ = {isa = PBXBuildFile; fileRef = A926B57D27AC718800144157 /* composite.cpp */; }; - A926BA8227AC718A00144157 /* composite.cpp in Sources */ = {isa = PBXBuildFile; fileRef = A926B57D27AC718800144157 /* composite.cpp */; }; - A926BA8327AC718A00144157 /* convert_to_half_pass.cpp in Sources */ = {isa = PBXBuildFile; fileRef = A926B57E27AC718800144157 /* convert_to_half_pass.cpp */; }; - A926BA8427AC718A00144157 /* convert_to_half_pass.cpp in Sources */ = {isa = PBXBuildFile; fileRef = A926B57E27AC718800144157 /* convert_to_half_pass.cpp */; }; - A926BA8527AC718A00144157 /* convert_to_half_pass.cpp in Sources */ = {isa = PBXBuildFile; fileRef = A926B57E27AC718800144157 /* convert_to_half_pass.cpp */; }; - A926BA8627AC718A00144157 /* inline_pass.h in Headers */ = {isa = PBXBuildFile; fileRef = A926B57F27AC718800144157 /* inline_pass.h */; }; - A926BA8727AC718A00144157 /* inline_pass.h in Headers */ = {isa = PBXBuildFile; fileRef = A926B57F27AC718800144157 /* inline_pass.h */; }; - A926BA8827AC718A00144157 /* inline_pass.h in Headers */ = {isa = PBXBuildFile; fileRef = A926B57F27AC718800144157 /* inline_pass.h */; }; - A926BA8927AC718A00144157 /* loop_dependence.h in Headers */ = {isa = PBXBuildFile; fileRef = A926B58027AC718800144157 /* loop_dependence.h */; }; - A926BA8A27AC718A00144157 /* loop_dependence.h in Headers */ = {isa = PBXBuildFile; fileRef = A926B58027AC718800144157 /* loop_dependence.h */; }; - A926BA8B27AC718A00144157 /* loop_dependence.h in Headers */ = {isa = PBXBuildFile; fileRef = A926B58027AC718800144157 /* loop_dependence.h */; }; - A926BA8C27AC718A00144157 /* value_number_table.h in Headers */ = {isa = PBXBuildFile; fileRef = A926B58127AC718800144157 /* value_number_table.h */; }; - A926BA8D27AC718A00144157 /* value_number_table.h in Headers */ = {isa = PBXBuildFile; fileRef = A926B58127AC718800144157 /* value_number_table.h */; }; - A926BA8E27AC718A00144157 /* value_number_table.h in Headers */ = {isa = PBXBuildFile; fileRef = A926B58127AC718800144157 /* value_number_table.h */; }; - A926BA8F27AC718A00144157 /* strip_nonsemantic_info_pass.cpp in Sources */ = {isa = PBXBuildFile; fileRef = A926B58227AC718800144157 /* strip_nonsemantic_info_pass.cpp */; }; - A926BA9027AC718A00144157 /* strip_nonsemantic_info_pass.cpp in Sources */ = {isa = PBXBuildFile; fileRef = A926B58227AC718800144157 /* strip_nonsemantic_info_pass.cpp */; }; - A926BA9127AC718A00144157 /* strip_nonsemantic_info_pass.cpp in Sources */ = {isa = PBXBuildFile; fileRef = A926B58227AC718800144157 /* strip_nonsemantic_info_pass.cpp */; }; - A926BA9227AC718A00144157 /* flatten_decoration_pass.h in Headers */ = {isa = PBXBuildFile; fileRef = A926B58327AC718800144157 /* flatten_decoration_pass.h */; }; - A926BA9327AC718A00144157 /* flatten_decoration_pass.h in Headers */ = {isa = PBXBuildFile; fileRef = A926B58327AC718800144157 /* flatten_decoration_pass.h */; }; - A926BA9427AC718A00144157 /* flatten_decoration_pass.h in Headers */ = {isa = PBXBuildFile; fileRef = A926B58327AC718800144157 /* flatten_decoration_pass.h */; }; - A926BA9527AC718A00144157 /* if_conversion.cpp in Sources */ = {isa = PBXBuildFile; fileRef = A926B58427AC718800144157 /* if_conversion.cpp */; }; - A926BA9627AC718A00144157 /* if_conversion.cpp in Sources */ = {isa = PBXBuildFile; fileRef = A926B58427AC718800144157 /* if_conversion.cpp */; }; - A926BA9727AC718A00144157 /* if_conversion.cpp in Sources */ = {isa = PBXBuildFile; fileRef = A926B58427AC718800144157 /* if_conversion.cpp */; }; - A926BA9827AC718A00144157 /* debug_info_manager.cpp in Sources */ = {isa = PBXBuildFile; fileRef = A926B58527AC718800144157 /* debug_info_manager.cpp */; }; - A926BA9927AC718A00144157 /* debug_info_manager.cpp in Sources */ = {isa = PBXBuildFile; fileRef = A926B58527AC718800144157 /* debug_info_manager.cpp */; }; - A926BA9A27AC718A00144157 /* debug_info_manager.cpp in Sources */ = {isa = PBXBuildFile; fileRef = A926B58527AC718800144157 /* debug_info_manager.cpp */; }; - A926BA9B27AC718A00144157 /* inline_exhaustive_pass.h in Headers */ = {isa = PBXBuildFile; fileRef = A926B58627AC718800144157 /* inline_exhaustive_pass.h */; }; - A926BA9C27AC718A00144157 /* inline_exhaustive_pass.h in Headers */ = {isa = PBXBuildFile; fileRef = A926B58627AC718800144157 /* inline_exhaustive_pass.h */; }; - A926BA9D27AC718A00144157 /* inline_exhaustive_pass.h in Headers */ = {isa = PBXBuildFile; fileRef = A926B58627AC718800144157 /* inline_exhaustive_pass.h */; }; - A926BA9E27AC718A00144157 /* constants.h in Headers */ = {isa = PBXBuildFile; fileRef = A926B58727AC718800144157 /* constants.h */; }; - A926BA9F27AC718A00144157 /* constants.h in Headers */ = {isa = PBXBuildFile; fileRef = A926B58727AC718800144157 /* constants.h */; }; - A926BAA027AC718A00144157 /* constants.h in Headers */ = {isa = PBXBuildFile; fileRef = A926B58727AC718800144157 /* constants.h */; }; - A926BAA127AC718A00144157 /* eliminate_dead_members_pass.cpp in Sources */ = {isa = PBXBuildFile; fileRef = A926B58827AC718800144157 /* eliminate_dead_members_pass.cpp */; }; - A926BAA227AC718A00144157 /* eliminate_dead_members_pass.cpp in Sources */ = {isa = PBXBuildFile; fileRef = A926B58827AC718800144157 /* eliminate_dead_members_pass.cpp */; }; - A926BAA327AC718A00144157 /* eliminate_dead_members_pass.cpp in Sources */ = {isa = PBXBuildFile; fileRef = A926B58827AC718800144157 /* eliminate_dead_members_pass.cpp */; }; - A926BAA427AC718A00144157 /* strength_reduction_pass.cpp in Sources */ = {isa = PBXBuildFile; fileRef = A926B58927AC718800144157 /* strength_reduction_pass.cpp */; }; - A926BAA527AC718A00144157 /* strength_reduction_pass.cpp in Sources */ = {isa = PBXBuildFile; fileRef = A926B58927AC718800144157 /* strength_reduction_pass.cpp */; }; - A926BAA627AC718A00144157 /* strength_reduction_pass.cpp in Sources */ = {isa = PBXBuildFile; fileRef = A926B58927AC718800144157 /* strength_reduction_pass.cpp */; }; - A926BAA727AC718A00144157 /* desc_sroa.cpp in Sources */ = {isa = PBXBuildFile; fileRef = A926B58A27AC718800144157 /* desc_sroa.cpp */; }; - A926BAA827AC718A00144157 /* desc_sroa.cpp in Sources */ = {isa = PBXBuildFile; fileRef = A926B58A27AC718800144157 /* desc_sroa.cpp */; }; - A926BAA927AC718A00144157 /* desc_sroa.cpp in Sources */ = {isa = PBXBuildFile; fileRef = A926B58A27AC718800144157 /* desc_sroa.cpp */; }; - A926BAAA27AC718A00144157 /* block_merge_util.cpp in Sources */ = {isa = PBXBuildFile; fileRef = A926B58B27AC718800144157 /* block_merge_util.cpp */; }; - A926BAAB27AC718A00144157 /* block_merge_util.cpp in Sources */ = {isa = PBXBuildFile; fileRef = A926B58B27AC718800144157 /* block_merge_util.cpp */; }; - A926BAAC27AC718A00144157 /* block_merge_util.cpp in Sources */ = {isa = PBXBuildFile; fileRef = A926B58B27AC718800144157 /* block_merge_util.cpp */; }; - A926BAAD27AC718A00144157 /* upgrade_memory_model.h in Headers */ = {isa = PBXBuildFile; fileRef = A926B58C27AC718800144157 /* upgrade_memory_model.h */; }; - A926BAAE27AC718A00144157 /* upgrade_memory_model.h in Headers */ = {isa = PBXBuildFile; fileRef = A926B58C27AC718800144157 /* upgrade_memory_model.h */; }; - A926BAAF27AC718A00144157 /* upgrade_memory_model.h in Headers */ = {isa = PBXBuildFile; fileRef = A926B58C27AC718800144157 /* upgrade_memory_model.h */; }; - A926BAB027AC718A00144157 /* copy_prop_arrays.cpp in Sources */ = {isa = PBXBuildFile; fileRef = A926B58D27AC718800144157 /* copy_prop_arrays.cpp */; }; - A926BAB127AC718A00144157 /* copy_prop_arrays.cpp in Sources */ = {isa = PBXBuildFile; fileRef = A926B58D27AC718800144157 /* copy_prop_arrays.cpp */; }; - A926BAB227AC718A00144157 /* copy_prop_arrays.cpp in Sources */ = {isa = PBXBuildFile; fileRef = A926B58D27AC718800144157 /* copy_prop_arrays.cpp */; }; - A926BAB327AC718A00144157 /* pass_manager.cpp in Sources */ = {isa = PBXBuildFile; fileRef = A926B58E27AC718800144157 /* pass_manager.cpp */; }; - A926BAB427AC718A00144157 /* pass_manager.cpp in Sources */ = {isa = PBXBuildFile; fileRef = A926B58E27AC718800144157 /* pass_manager.cpp */; }; - A926BAB527AC718A00144157 /* pass_manager.cpp in Sources */ = {isa = PBXBuildFile; fileRef = A926B58E27AC718800144157 /* pass_manager.cpp */; }; - A926BAB627AC718A00144157 /* inline_exhaustive_pass.cpp in Sources */ = {isa = PBXBuildFile; fileRef = A926B58F27AC718800144157 /* inline_exhaustive_pass.cpp */; }; - A926BAB727AC718A00144157 /* inline_exhaustive_pass.cpp in Sources */ = {isa = PBXBuildFile; fileRef = A926B58F27AC718800144157 /* inline_exhaustive_pass.cpp */; }; - A926BAB827AC718A00144157 /* inline_exhaustive_pass.cpp in Sources */ = {isa = PBXBuildFile; fileRef = A926B58F27AC718800144157 /* inline_exhaustive_pass.cpp */; }; - A926BAB927AC718A00144157 /* loop_fission.h in Headers */ = {isa = PBXBuildFile; fileRef = A926B59027AC718800144157 /* loop_fission.h */; }; - A926BABA27AC718A00144157 /* loop_fission.h in Headers */ = {isa = PBXBuildFile; fileRef = A926B59027AC718800144157 /* loop_fission.h */; }; - A926BABB27AC718A00144157 /* loop_fission.h in Headers */ = {isa = PBXBuildFile; fileRef = A926B59027AC718800144157 /* loop_fission.h */; }; - A926BABC27AC718A00144157 /* workaround1209.h in Headers */ = {isa = PBXBuildFile; fileRef = A926B59127AC718800144157 /* workaround1209.h */; }; - A926BABD27AC718A00144157 /* workaround1209.h in Headers */ = {isa = PBXBuildFile; fileRef = A926B59127AC718800144157 /* workaround1209.h */; }; - A926BABE27AC718A00144157 /* workaround1209.h in Headers */ = {isa = PBXBuildFile; fileRef = A926B59127AC718800144157 /* workaround1209.h */; }; - A926BABF27AC718A00144157 /* loop_fusion_pass.cpp in Sources */ = {isa = PBXBuildFile; fileRef = A926B59227AC718800144157 /* loop_fusion_pass.cpp */; }; - A926BAC027AC718A00144157 /* loop_fusion_pass.cpp in Sources */ = {isa = PBXBuildFile; fileRef = A926B59227AC718800144157 /* loop_fusion_pass.cpp */; }; - A926BAC127AC718A00144157 /* loop_fusion_pass.cpp in Sources */ = {isa = PBXBuildFile; fileRef = A926B59227AC718800144157 /* loop_fusion_pass.cpp */; }; - A926BAC227AC718A00144157 /* log.h in Headers */ = {isa = PBXBuildFile; fileRef = A926B59327AC718800144157 /* log.h */; }; - A926BAC327AC718A00144157 /* log.h in Headers */ = {isa = PBXBuildFile; fileRef = A926B59327AC718800144157 /* log.h */; }; - A926BAC427AC718A00144157 /* log.h in Headers */ = {isa = PBXBuildFile; fileRef = A926B59327AC718800144157 /* log.h */; }; - A926BAC527AC718A00144157 /* copy_prop_arrays.h in Headers */ = {isa = PBXBuildFile; fileRef = A926B59427AC718800144157 /* copy_prop_arrays.h */; }; - A926BAC627AC718A00144157 /* copy_prop_arrays.h in Headers */ = {isa = PBXBuildFile; fileRef = A926B59427AC718800144157 /* copy_prop_arrays.h */; }; - A926BAC727AC718A00144157 /* copy_prop_arrays.h in Headers */ = {isa = PBXBuildFile; fileRef = A926B59427AC718800144157 /* copy_prop_arrays.h */; }; - A926BAC827AC718A00144157 /* eliminate_dead_constant_pass.h in Headers */ = {isa = PBXBuildFile; fileRef = A926B59527AC718800144157 /* eliminate_dead_constant_pass.h */; }; - A926BAC927AC718A00144157 /* eliminate_dead_constant_pass.h in Headers */ = {isa = PBXBuildFile; fileRef = A926B59527AC718800144157 /* eliminate_dead_constant_pass.h */; }; - A926BACA27AC718A00144157 /* eliminate_dead_constant_pass.h in Headers */ = {isa = PBXBuildFile; fileRef = A926B59527AC718800144157 /* eliminate_dead_constant_pass.h */; }; - A926BACB27AC718A00144157 /* dead_insert_elim_pass.cpp in Sources */ = {isa = PBXBuildFile; fileRef = A926B59627AC718800144157 /* dead_insert_elim_pass.cpp */; }; - A926BACC27AC718A00144157 /* dead_insert_elim_pass.cpp in Sources */ = {isa = PBXBuildFile; fileRef = A926B59627AC718800144157 /* dead_insert_elim_pass.cpp */; }; - A926BACD27AC718A00144157 /* dead_insert_elim_pass.cpp in Sources */ = {isa = PBXBuildFile; fileRef = A926B59627AC718800144157 /* dead_insert_elim_pass.cpp */; }; - A926BACE27AC718A00144157 /* ssa_rewrite_pass.h in Headers */ = {isa = PBXBuildFile; fileRef = A926B59727AC718800144157 /* ssa_rewrite_pass.h */; }; - A926BACF27AC718A00144157 /* ssa_rewrite_pass.h in Headers */ = {isa = PBXBuildFile; fileRef = A926B59727AC718800144157 /* ssa_rewrite_pass.h */; }; - A926BAD027AC718A00144157 /* ssa_rewrite_pass.h in Headers */ = {isa = PBXBuildFile; fileRef = A926B59727AC718800144157 /* ssa_rewrite_pass.h */; }; - A926BAD127AC718A00144157 /* scalar_analysis.cpp in Sources */ = {isa = PBXBuildFile; fileRef = A926B59827AC718800144157 /* scalar_analysis.cpp */; }; - A926BAD227AC718A00144157 /* scalar_analysis.cpp in Sources */ = {isa = PBXBuildFile; fileRef = A926B59827AC718800144157 /* scalar_analysis.cpp */; }; - A926BAD327AC718A00144157 /* scalar_analysis.cpp in Sources */ = {isa = PBXBuildFile; fileRef = A926B59827AC718800144157 /* scalar_analysis.cpp */; }; - A926BAD427AC718A00144157 /* dead_variable_elimination.h in Headers */ = {isa = PBXBuildFile; fileRef = A926B59927AC718800144157 /* dead_variable_elimination.h */; }; - A926BAD527AC718A00144157 /* dead_variable_elimination.h in Headers */ = {isa = PBXBuildFile; fileRef = A926B59927AC718800144157 /* dead_variable_elimination.h */; }; - A926BAD627AC718A00144157 /* dead_variable_elimination.h in Headers */ = {isa = PBXBuildFile; fileRef = A926B59927AC718800144157 /* dead_variable_elimination.h */; }; - A926BAD727AC718A00144157 /* block_merge_pass.cpp in Sources */ = {isa = PBXBuildFile; fileRef = A926B59A27AC718800144157 /* block_merge_pass.cpp */; }; - A926BAD827AC718A00144157 /* block_merge_pass.cpp in Sources */ = {isa = PBXBuildFile; fileRef = A926B59A27AC718800144157 /* block_merge_pass.cpp */; }; - A926BAD927AC718A00144157 /* block_merge_pass.cpp in Sources */ = {isa = PBXBuildFile; fileRef = A926B59A27AC718800144157 /* block_merge_pass.cpp */; }; - A926BADA27AC718A00144157 /* dominator_analysis.h in Headers */ = {isa = PBXBuildFile; fileRef = A926B59B27AC718800144157 /* dominator_analysis.h */; }; - A926BADB27AC718A00144157 /* dominator_analysis.h in Headers */ = {isa = PBXBuildFile; fileRef = A926B59B27AC718800144157 /* dominator_analysis.h */; }; - A926BADC27AC718A00144157 /* dominator_analysis.h in Headers */ = {isa = PBXBuildFile; fileRef = A926B59B27AC718800144157 /* dominator_analysis.h */; }; - A926BADD27AC718A00144157 /* convert_to_sampled_image_pass.cpp in Sources */ = {isa = PBXBuildFile; fileRef = A926B59C27AC718800144157 /* convert_to_sampled_image_pass.cpp */; }; - A926BADE27AC718A00144157 /* convert_to_sampled_image_pass.cpp in Sources */ = {isa = PBXBuildFile; fileRef = A926B59C27AC718800144157 /* convert_to_sampled_image_pass.cpp */; }; - A926BADF27AC718A00144157 /* convert_to_sampled_image_pass.cpp in Sources */ = {isa = PBXBuildFile; fileRef = A926B59C27AC718800144157 /* convert_to_sampled_image_pass.cpp */; }; - A926BAE027AC718A00144157 /* pass.h in Headers */ = {isa = PBXBuildFile; fileRef = A926B59D27AC718800144157 /* pass.h */; }; - A926BAE127AC718A00144157 /* pass.h in Headers */ = {isa = PBXBuildFile; fileRef = A926B59D27AC718800144157 /* pass.h */; }; - A926BAE227AC718A00144157 /* pass.h in Headers */ = {isa = PBXBuildFile; fileRef = A926B59D27AC718800144157 /* pass.h */; }; - A926BAE327AC718A00144157 /* folding_rules.h in Headers */ = {isa = PBXBuildFile; fileRef = A926B59E27AC718800144157 /* folding_rules.h */; }; - A926BAE427AC718A00144157 /* folding_rules.h in Headers */ = {isa = PBXBuildFile; fileRef = A926B59E27AC718800144157 /* folding_rules.h */; }; - A926BAE527AC718A00144157 /* folding_rules.h in Headers */ = {isa = PBXBuildFile; fileRef = A926B59E27AC718800144157 /* folding_rules.h */; }; - A926BAE627AC718A00144157 /* eliminate_dead_functions_pass.h in Headers */ = {isa = PBXBuildFile; fileRef = A926B59F27AC718800144157 /* eliminate_dead_functions_pass.h */; }; - A926BAE727AC718A00144157 /* eliminate_dead_functions_pass.h in Headers */ = {isa = PBXBuildFile; fileRef = A926B59F27AC718800144157 /* eliminate_dead_functions_pass.h */; }; - A926BAE827AC718A00144157 /* eliminate_dead_functions_pass.h in Headers */ = {isa = PBXBuildFile; fileRef = A926B59F27AC718800144157 /* eliminate_dead_functions_pass.h */; }; - A926BAE927AC718A00144157 /* eliminate_dead_functions_util.h in Headers */ = {isa = PBXBuildFile; fileRef = A926B5A027AC718800144157 /* eliminate_dead_functions_util.h */; }; - A926BAEA27AC718A00144157 /* eliminate_dead_functions_util.h in Headers */ = {isa = PBXBuildFile; fileRef = A926B5A027AC718800144157 /* eliminate_dead_functions_util.h */; }; - A926BAEB27AC718A00144157 /* eliminate_dead_functions_util.h in Headers */ = {isa = PBXBuildFile; fileRef = A926B5A027AC718800144157 /* eliminate_dead_functions_util.h */; }; - A926BAEC27AC718A00144157 /* fold.h in Headers */ = {isa = PBXBuildFile; fileRef = A926B5A127AC718800144157 /* fold.h */; }; - A926BAED27AC718A00144157 /* fold.h in Headers */ = {isa = PBXBuildFile; fileRef = A926B5A127AC718800144157 /* fold.h */; }; - A926BAEE27AC718A00144157 /* fold.h in Headers */ = {isa = PBXBuildFile; fileRef = A926B5A127AC718800144157 /* fold.h */; }; - A926BAEF27AC718A00144157 /* local_single_store_elim_pass.cpp in Sources */ = {isa = PBXBuildFile; fileRef = A926B5A227AC718800144157 /* local_single_store_elim_pass.cpp */; }; - A926BAF027AC718A00144157 /* local_single_store_elim_pass.cpp in Sources */ = {isa = PBXBuildFile; fileRef = A926B5A227AC718800144157 /* local_single_store_elim_pass.cpp */; }; - A926BAF127AC718A00144157 /* local_single_store_elim_pass.cpp in Sources */ = {isa = PBXBuildFile; fileRef = A926B5A227AC718800144157 /* local_single_store_elim_pass.cpp */; }; - A926BAF227AC718A00144157 /* dead_branch_elim_pass.h in Headers */ = {isa = PBXBuildFile; fileRef = A926B5A327AC718800144157 /* dead_branch_elim_pass.h */; }; - A926BAF327AC718A00144157 /* dead_branch_elim_pass.h in Headers */ = {isa = PBXBuildFile; fileRef = A926B5A327AC718800144157 /* dead_branch_elim_pass.h */; }; - A926BAF427AC718A00144157 /* dead_branch_elim_pass.h in Headers */ = {isa = PBXBuildFile; fileRef = A926B5A327AC718800144157 /* dead_branch_elim_pass.h */; }; - A926BAF527AC718A00144157 /* private_to_local_pass.cpp in Sources */ = {isa = PBXBuildFile; fileRef = A926B5A427AC718800144157 /* private_to_local_pass.cpp */; }; - A926BAF627AC718A00144157 /* private_to_local_pass.cpp in Sources */ = {isa = PBXBuildFile; fileRef = A926B5A427AC718800144157 /* private_to_local_pass.cpp */; }; - A926BAF727AC718A00144157 /* private_to_local_pass.cpp in Sources */ = {isa = PBXBuildFile; fileRef = A926B5A427AC718800144157 /* private_to_local_pass.cpp */; }; - A926BAF827AC718A00144157 /* scalar_analysis_nodes.h in Headers */ = {isa = PBXBuildFile; fileRef = A926B5A527AC718800144157 /* scalar_analysis_nodes.h */; }; - A926BAF927AC718A00144157 /* scalar_analysis_nodes.h in Headers */ = {isa = PBXBuildFile; fileRef = A926B5A527AC718800144157 /* scalar_analysis_nodes.h */; }; - A926BAFA27AC718A00144157 /* scalar_analysis_nodes.h in Headers */ = {isa = PBXBuildFile; fileRef = A926B5A527AC718800144157 /* scalar_analysis_nodes.h */; }; - A926BAFB27AC718A00144157 /* propagator.cpp in Sources */ = {isa = PBXBuildFile; fileRef = A926B5A627AC718800144157 /* propagator.cpp */; }; - A926BAFC27AC718A00144157 /* propagator.cpp in Sources */ = {isa = PBXBuildFile; fileRef = A926B5A627AC718800144157 /* propagator.cpp */; }; - A926BAFD27AC718A00144157 /* propagator.cpp in Sources */ = {isa = PBXBuildFile; fileRef = A926B5A627AC718800144157 /* propagator.cpp */; }; - A926BAFE27AC718A00144157 /* fix_storage_class.h in Headers */ = {isa = PBXBuildFile; fileRef = A926B5A727AC718800144157 /* fix_storage_class.h */; }; - A926BAFF27AC718A00144157 /* fix_storage_class.h in Headers */ = {isa = PBXBuildFile; fileRef = A926B5A727AC718800144157 /* fix_storage_class.h */; }; - A926BB0027AC718A00144157 /* fix_storage_class.h in Headers */ = {isa = PBXBuildFile; fileRef = A926B5A727AC718800144157 /* fix_storage_class.h */; }; - A926BB0127AC718A00144157 /* loop_dependence_helpers.cpp in Sources */ = {isa = PBXBuildFile; fileRef = A926B5A827AC718800144157 /* loop_dependence_helpers.cpp */; }; - A926BB0227AC718A00144157 /* loop_dependence_helpers.cpp in Sources */ = {isa = PBXBuildFile; fileRef = A926B5A827AC718800144157 /* loop_dependence_helpers.cpp */; }; - A926BB0327AC718A00144157 /* loop_dependence_helpers.cpp in Sources */ = {isa = PBXBuildFile; fileRef = A926B5A827AC718800144157 /* loop_dependence_helpers.cpp */; }; - A926BB0427AC718A00144157 /* set_spec_constant_default_value_pass.cpp in Sources */ = {isa = PBXBuildFile; fileRef = A926B5A927AC718800144157 /* set_spec_constant_default_value_pass.cpp */; }; - A926BB0527AC718A00144157 /* set_spec_constant_default_value_pass.cpp in Sources */ = {isa = PBXBuildFile; fileRef = A926B5A927AC718800144157 /* set_spec_constant_default_value_pass.cpp */; }; - A926BB0627AC718A00144157 /* set_spec_constant_default_value_pass.cpp in Sources */ = {isa = PBXBuildFile; fileRef = A926B5A927AC718800144157 /* set_spec_constant_default_value_pass.cpp */; }; - A926BB0727AC718A00144157 /* passes.h in Headers */ = {isa = PBXBuildFile; fileRef = A926B5AA27AC718800144157 /* passes.h */; }; - A926BB0827AC718A00144157 /* passes.h in Headers */ = {isa = PBXBuildFile; fileRef = A926B5AA27AC718800144157 /* passes.h */; }; - A926BB0927AC718A00144157 /* passes.h in Headers */ = {isa = PBXBuildFile; fileRef = A926B5AA27AC718800144157 /* passes.h */; }; - A926BB0A27AC718A00144157 /* fold.cpp in Sources */ = {isa = PBXBuildFile; fileRef = A926B5AB27AC718800144157 /* fold.cpp */; }; - A926BB0B27AC718A00144157 /* fold.cpp in Sources */ = {isa = PBXBuildFile; fileRef = A926B5AB27AC718800144157 /* fold.cpp */; }; - A926BB0C27AC718A00144157 /* fold.cpp in Sources */ = {isa = PBXBuildFile; fileRef = A926B5AB27AC718800144157 /* fold.cpp */; }; - A926BB0D27AC718A00144157 /* amd_ext_to_khr.cpp in Sources */ = {isa = PBXBuildFile; fileRef = A926B5AC27AC718800144157 /* amd_ext_to_khr.cpp */; }; - A926BB0E27AC718A00144157 /* amd_ext_to_khr.cpp in Sources */ = {isa = PBXBuildFile; fileRef = A926B5AC27AC718800144157 /* amd_ext_to_khr.cpp */; }; - A926BB0F27AC718A00144157 /* amd_ext_to_khr.cpp in Sources */ = {isa = PBXBuildFile; fileRef = A926B5AC27AC718800144157 /* amd_ext_to_khr.cpp */; }; - A926BB1027AC718A00144157 /* scalar_replacement_pass.cpp in Sources */ = {isa = PBXBuildFile; fileRef = A926B5AD27AC718800144157 /* scalar_replacement_pass.cpp */; }; - A926BB1127AC718A00144157 /* scalar_replacement_pass.cpp in Sources */ = {isa = PBXBuildFile; fileRef = A926B5AD27AC718800144157 /* scalar_replacement_pass.cpp */; }; - A926BB1227AC718A00144157 /* scalar_replacement_pass.cpp in Sources */ = {isa = PBXBuildFile; fileRef = A926B5AD27AC718800144157 /* scalar_replacement_pass.cpp */; }; - A926BB1327AC718A00144157 /* simplification_pass.h in Headers */ = {isa = PBXBuildFile; fileRef = A926B5AE27AC718800144157 /* simplification_pass.h */; }; - A926BB1427AC718A00144157 /* simplification_pass.h in Headers */ = {isa = PBXBuildFile; fileRef = A926B5AE27AC718800144157 /* simplification_pass.h */; }; - A926BB1527AC718A00144157 /* simplification_pass.h in Headers */ = {isa = PBXBuildFile; fileRef = A926B5AE27AC718800144157 /* simplification_pass.h */; }; - A926BB1627AC718A00144157 /* remove_duplicates_pass.h in Headers */ = {isa = PBXBuildFile; fileRef = A926B5AF27AC718800144157 /* remove_duplicates_pass.h */; }; - A926BB1727AC718A00144157 /* remove_duplicates_pass.h in Headers */ = {isa = PBXBuildFile; fileRef = A926B5AF27AC718800144157 /* remove_duplicates_pass.h */; }; - A926BB1827AC718A00144157 /* remove_duplicates_pass.h in Headers */ = {isa = PBXBuildFile; fileRef = A926B5AF27AC718800144157 /* remove_duplicates_pass.h */; }; - A926BB1927AC718A00144157 /* desc_sroa_util.h in Headers */ = {isa = PBXBuildFile; fileRef = A926B5B027AC718800144157 /* desc_sroa_util.h */; }; - A926BB1A27AC718A00144157 /* desc_sroa_util.h in Headers */ = {isa = PBXBuildFile; fileRef = A926B5B027AC718800144157 /* desc_sroa_util.h */; }; - A926BB1B27AC718A00144157 /* desc_sroa_util.h in Headers */ = {isa = PBXBuildFile; fileRef = A926B5B027AC718800144157 /* desc_sroa_util.h */; }; - A926BB1C27AC718A00144157 /* redundancy_elimination.cpp in Sources */ = {isa = PBXBuildFile; fileRef = A926B5B127AC718800144157 /* redundancy_elimination.cpp */; }; - A926BB1D27AC718A00144157 /* redundancy_elimination.cpp in Sources */ = {isa = PBXBuildFile; fileRef = A926B5B127AC718800144157 /* redundancy_elimination.cpp */; }; - A926BB1E27AC718A00144157 /* redundancy_elimination.cpp in Sources */ = {isa = PBXBuildFile; fileRef = A926B5B127AC718800144157 /* redundancy_elimination.cpp */; }; - A926BB1F27AC718A00144157 /* reflect.h in Headers */ = {isa = PBXBuildFile; fileRef = A926B5B227AC718800144157 /* reflect.h */; }; - A926BB2027AC718A00144157 /* reflect.h in Headers */ = {isa = PBXBuildFile; fileRef = A926B5B227AC718800144157 /* reflect.h */; }; - A926BB2127AC718A00144157 /* reflect.h in Headers */ = {isa = PBXBuildFile; fileRef = A926B5B227AC718800144157 /* reflect.h */; }; - A926BB2227AC718A00144157 /* workaround1209.cpp in Sources */ = {isa = PBXBuildFile; fileRef = A926B5B327AC718800144157 /* workaround1209.cpp */; }; - A926BB2327AC718A00144157 /* workaround1209.cpp in Sources */ = {isa = PBXBuildFile; fileRef = A926B5B327AC718800144157 /* workaround1209.cpp */; }; - A926BB2427AC718A00144157 /* workaround1209.cpp in Sources */ = {isa = PBXBuildFile; fileRef = A926B5B327AC718800144157 /* workaround1209.cpp */; }; - A926BB2527AC718A00144157 /* null_pass.h in Headers */ = {isa = PBXBuildFile; fileRef = A926B5B427AC718800144157 /* null_pass.h */; }; - A926BB2627AC718A00144157 /* null_pass.h in Headers */ = {isa = PBXBuildFile; fileRef = A926B5B427AC718800144157 /* null_pass.h */; }; - A926BB2727AC718A00144157 /* null_pass.h in Headers */ = {isa = PBXBuildFile; fileRef = A926B5B427AC718800144157 /* null_pass.h */; }; - A926BB2827AC718A00144157 /* relax_float_ops_pass.cpp in Sources */ = {isa = PBXBuildFile; fileRef = A926B5B527AC718800144157 /* relax_float_ops_pass.cpp */; }; - A926BB2927AC718A00144157 /* relax_float_ops_pass.cpp in Sources */ = {isa = PBXBuildFile; fileRef = A926B5B527AC718800144157 /* relax_float_ops_pass.cpp */; }; - A926BB2A27AC718A00144157 /* relax_float_ops_pass.cpp in Sources */ = {isa = PBXBuildFile; fileRef = A926B5B527AC718800144157 /* relax_float_ops_pass.cpp */; }; - A926BB2B27AC718A00144157 /* const_folding_rules.h in Headers */ = {isa = PBXBuildFile; fileRef = A926B5B627AC718800144157 /* const_folding_rules.h */; }; - A926BB2C27AC718A00144157 /* const_folding_rules.h in Headers */ = {isa = PBXBuildFile; fileRef = A926B5B627AC718800144157 /* const_folding_rules.h */; }; - A926BB2D27AC718A00144157 /* const_folding_rules.h in Headers */ = {isa = PBXBuildFile; fileRef = A926B5B627AC718800144157 /* const_folding_rules.h */; }; - A926BB2E27AC718A00144157 /* scalar_replacement_pass.h in Headers */ = {isa = PBXBuildFile; fileRef = A926B5B727AC718800144157 /* scalar_replacement_pass.h */; }; - A926BB2F27AC718A00144157 /* scalar_replacement_pass.h in Headers */ = {isa = PBXBuildFile; fileRef = A926B5B727AC718800144157 /* scalar_replacement_pass.h */; }; - A926BB3027AC718A00144157 /* scalar_replacement_pass.h in Headers */ = {isa = PBXBuildFile; fileRef = A926B5B727AC718800144157 /* scalar_replacement_pass.h */; }; - A926BB3127AC718A00144157 /* instruction.cpp in Sources */ = {isa = PBXBuildFile; fileRef = A926B5B827AC718800144157 /* instruction.cpp */; }; - A926BB3227AC718A00144157 /* instruction.cpp in Sources */ = {isa = PBXBuildFile; fileRef = A926B5B827AC718800144157 /* instruction.cpp */; }; - A926BB3327AC718A00144157 /* instruction.cpp in Sources */ = {isa = PBXBuildFile; fileRef = A926B5B827AC718800144157 /* instruction.cpp */; }; - A926BB3427AC718A00144157 /* pch_source_opt.h in Headers */ = {isa = PBXBuildFile; fileRef = A926B5B927AC718800144157 /* pch_source_opt.h */; }; - A926BB3527AC718A00144157 /* pch_source_opt.h in Headers */ = {isa = PBXBuildFile; fileRef = A926B5B927AC718800144157 /* pch_source_opt.h */; }; - A926BB3627AC718A00144157 /* pch_source_opt.h in Headers */ = {isa = PBXBuildFile; fileRef = A926B5B927AC718800144157 /* pch_source_opt.h */; }; - A926BB3727AC718A00144157 /* reduce_load_size.cpp in Sources */ = {isa = PBXBuildFile; fileRef = A926B5BA27AC718800144157 /* reduce_load_size.cpp */; }; - A926BB3827AC718A00144157 /* reduce_load_size.cpp in Sources */ = {isa = PBXBuildFile; fileRef = A926B5BA27AC718800144157 /* reduce_load_size.cpp */; }; - A926BB3927AC718A00144157 /* reduce_load_size.cpp in Sources */ = {isa = PBXBuildFile; fileRef = A926B5BA27AC718800144157 /* reduce_load_size.cpp */; }; - A926BB3A27AC718A00144157 /* redundancy_elimination.h in Headers */ = {isa = PBXBuildFile; fileRef = A926B5BB27AC718800144157 /* redundancy_elimination.h */; }; - A926BB3B27AC718A00144157 /* redundancy_elimination.h in Headers */ = {isa = PBXBuildFile; fileRef = A926B5BB27AC718800144157 /* redundancy_elimination.h */; }; - A926BB3C27AC718A00144157 /* redundancy_elimination.h in Headers */ = {isa = PBXBuildFile; fileRef = A926B5BB27AC718800144157 /* redundancy_elimination.h */; }; - A926BB3D27AC718A00144157 /* fix_storage_class.cpp in Sources */ = {isa = PBXBuildFile; fileRef = A926B5BC27AC718800144157 /* fix_storage_class.cpp */; }; - A926BB3E27AC718A00144157 /* fix_storage_class.cpp in Sources */ = {isa = PBXBuildFile; fileRef = A926B5BC27AC718800144157 /* fix_storage_class.cpp */; }; - A926BB3F27AC718A00144157 /* fix_storage_class.cpp in Sources */ = {isa = PBXBuildFile; fileRef = A926B5BC27AC718800144157 /* fix_storage_class.cpp */; }; - A926BB4027AC718A00144157 /* value_number_table.cpp in Sources */ = {isa = PBXBuildFile; fileRef = A926B5BD27AC718800144157 /* value_number_table.cpp */; }; - A926BB4127AC718A00144157 /* value_number_table.cpp in Sources */ = {isa = PBXBuildFile; fileRef = A926B5BD27AC718800144157 /* value_number_table.cpp */; }; - A926BB4227AC718A00144157 /* value_number_table.cpp in Sources */ = {isa = PBXBuildFile; fileRef = A926B5BD27AC718800144157 /* value_number_table.cpp */; }; - A926BB4327AC718A00144157 /* remove_unused_interface_variables_pass.cpp in Sources */ = {isa = PBXBuildFile; fileRef = A926B5BE27AC718800144157 /* remove_unused_interface_variables_pass.cpp */; }; - A926BB4427AC718A00144157 /* remove_unused_interface_variables_pass.cpp in Sources */ = {isa = PBXBuildFile; fileRef = A926B5BE27AC718800144157 /* remove_unused_interface_variables_pass.cpp */; }; - A926BB4527AC718A00144157 /* remove_unused_interface_variables_pass.cpp in Sources */ = {isa = PBXBuildFile; fileRef = A926B5BE27AC718800144157 /* remove_unused_interface_variables_pass.cpp */; }; - A926BB4627AC718A00144157 /* inline_opaque_pass.cpp in Sources */ = {isa = PBXBuildFile; fileRef = A926B5BF27AC718800144157 /* inline_opaque_pass.cpp */; }; - A926BB4727AC718A00144157 /* inline_opaque_pass.cpp in Sources */ = {isa = PBXBuildFile; fileRef = A926B5BF27AC718800144157 /* inline_opaque_pass.cpp */; }; - A926BB4827AC718A00144157 /* inline_opaque_pass.cpp in Sources */ = {isa = PBXBuildFile; fileRef = A926B5BF27AC718800144157 /* inline_opaque_pass.cpp */; }; - A926BB4927AC718A00144157 /* replace_invalid_opc.cpp in Sources */ = {isa = PBXBuildFile; fileRef = A926B5C027AC718800144157 /* replace_invalid_opc.cpp */; }; - A926BB4A27AC718A00144157 /* replace_invalid_opc.cpp in Sources */ = {isa = PBXBuildFile; fileRef = A926B5C027AC718800144157 /* replace_invalid_opc.cpp */; }; - A926BB4B27AC718A00144157 /* replace_invalid_opc.cpp in Sources */ = {isa = PBXBuildFile; fileRef = A926B5C027AC718800144157 /* replace_invalid_opc.cpp */; }; - A926BB4C27AC718A00144157 /* loop_utils.h in Headers */ = {isa = PBXBuildFile; fileRef = A926B5C127AC718800144157 /* loop_utils.h */; }; - A926BB4D27AC718A00144157 /* loop_utils.h in Headers */ = {isa = PBXBuildFile; fileRef = A926B5C127AC718800144157 /* loop_utils.h */; }; - A926BB4E27AC718A00144157 /* loop_utils.h in Headers */ = {isa = PBXBuildFile; fileRef = A926B5C127AC718800144157 /* loop_utils.h */; }; - A926BB4F27AC718A00144157 /* module.h in Headers */ = {isa = PBXBuildFile; fileRef = A926B5C227AC718800144157 /* module.h */; }; - A926BB5027AC718A00144157 /* module.h in Headers */ = {isa = PBXBuildFile; fileRef = A926B5C227AC718800144157 /* module.h */; }; - A926BB5127AC718A00144157 /* module.h in Headers */ = {isa = PBXBuildFile; fileRef = A926B5C227AC718800144157 /* module.h */; }; - A926BB5227AC718A00144157 /* dominator_analysis.cpp in Sources */ = {isa = PBXBuildFile; fileRef = A926B5C327AC718800144157 /* dominator_analysis.cpp */; }; - A926BB5327AC718A00144157 /* dominator_analysis.cpp in Sources */ = {isa = PBXBuildFile; fileRef = A926B5C327AC718800144157 /* dominator_analysis.cpp */; }; - A926BB5427AC718A00144157 /* dominator_analysis.cpp in Sources */ = {isa = PBXBuildFile; fileRef = A926B5C327AC718800144157 /* dominator_analysis.cpp */; }; - A926BB5527AC718A00144157 /* ir_builder.h in Headers */ = {isa = PBXBuildFile; fileRef = A926B5C427AC718800144157 /* ir_builder.h */; }; - A926BB5627AC718A00144157 /* ir_builder.h in Headers */ = {isa = PBXBuildFile; fileRef = A926B5C427AC718800144157 /* ir_builder.h */; }; - A926BB5727AC718A00144157 /* ir_builder.h in Headers */ = {isa = PBXBuildFile; fileRef = A926B5C427AC718800144157 /* ir_builder.h */; }; - A926BB5827AC718A00144157 /* replace_desc_array_access_using_var_index.cpp in Sources */ = {isa = PBXBuildFile; fileRef = A926B5C527AC718800144157 /* replace_desc_array_access_using_var_index.cpp */; }; - A926BB5927AC718A00144157 /* replace_desc_array_access_using_var_index.cpp in Sources */ = {isa = PBXBuildFile; fileRef = A926B5C527AC718800144157 /* replace_desc_array_access_using_var_index.cpp */; }; - A926BB5A27AC718A00144157 /* replace_desc_array_access_using_var_index.cpp in Sources */ = {isa = PBXBuildFile; fileRef = A926B5C527AC718800144157 /* replace_desc_array_access_using_var_index.cpp */; }; - A926BB5B27AC718A00144157 /* loop_unswitch_pass.h in Headers */ = {isa = PBXBuildFile; fileRef = A926B5C627AC718800144157 /* loop_unswitch_pass.h */; }; - A926BB5C27AC718A00144157 /* loop_unswitch_pass.h in Headers */ = {isa = PBXBuildFile; fileRef = A926B5C627AC718800144157 /* loop_unswitch_pass.h */; }; - A926BB5D27AC718A00144157 /* loop_unswitch_pass.h in Headers */ = {isa = PBXBuildFile; fileRef = A926B5C627AC718800144157 /* loop_unswitch_pass.h */; }; - A926BB5E27AC718A00144157 /* cfg.h in Headers */ = {isa = PBXBuildFile; fileRef = A926B5C727AC718800144157 /* cfg.h */; }; - A926BB5F27AC718A00144157 /* cfg.h in Headers */ = {isa = PBXBuildFile; fileRef = A926B5C727AC718800144157 /* cfg.h */; }; - A926BB6027AC718A00144157 /* cfg.h in Headers */ = {isa = PBXBuildFile; fileRef = A926B5C727AC718800144157 /* cfg.h */; }; - A926BB6127AC718A00144157 /* code_sink.h in Headers */ = {isa = PBXBuildFile; fileRef = A926B5C827AC718800144157 /* code_sink.h */; }; - A926BB6227AC718A00144157 /* code_sink.h in Headers */ = {isa = PBXBuildFile; fileRef = A926B5C827AC718800144157 /* code_sink.h */; }; - A926BB6327AC718A00144157 /* code_sink.h in Headers */ = {isa = PBXBuildFile; fileRef = A926B5C827AC718800144157 /* code_sink.h */; }; - A926BB6427AC718A00144157 /* dataflow.cpp in Sources */ = {isa = PBXBuildFile; fileRef = A926B5C927AC718800144157 /* dataflow.cpp */; }; - A926BB6527AC718A00144157 /* dataflow.cpp in Sources */ = {isa = PBXBuildFile; fileRef = A926B5C927AC718800144157 /* dataflow.cpp */; }; - A926BB6627AC718A00144157 /* dataflow.cpp in Sources */ = {isa = PBXBuildFile; fileRef = A926B5C927AC718800144157 /* dataflow.cpp */; }; - A926BB6727AC718A00144157 /* loop_descriptor.h in Headers */ = {isa = PBXBuildFile; fileRef = A926B5CA27AC718800144157 /* loop_descriptor.h */; }; - A926BB6827AC718A00144157 /* loop_descriptor.h in Headers */ = {isa = PBXBuildFile; fileRef = A926B5CA27AC718800144157 /* loop_descriptor.h */; }; - A926BB6927AC718A00144157 /* loop_descriptor.h in Headers */ = {isa = PBXBuildFile; fileRef = A926B5CA27AC718800144157 /* loop_descriptor.h */; }; - A926BB6A27AC718A00144157 /* instruction.h in Headers */ = {isa = PBXBuildFile; fileRef = A926B5CB27AC718800144157 /* instruction.h */; }; - A926BB6B27AC718A00144157 /* instruction.h in Headers */ = {isa = PBXBuildFile; fileRef = A926B5CB27AC718800144157 /* instruction.h */; }; - A926BB6C27AC718A00144157 /* instruction.h in Headers */ = {isa = PBXBuildFile; fileRef = A926B5CB27AC718800144157 /* instruction.h */; }; - A926BB6D27AC718A00144157 /* aggressive_dead_code_elim_pass.h in Headers */ = {isa = PBXBuildFile; fileRef = A926B5CC27AC718800144157 /* aggressive_dead_code_elim_pass.h */; }; - A926BB6E27AC718A00144157 /* aggressive_dead_code_elim_pass.h in Headers */ = {isa = PBXBuildFile; fileRef = A926B5CC27AC718800144157 /* aggressive_dead_code_elim_pass.h */; }; - A926BB6F27AC718A00144157 /* aggressive_dead_code_elim_pass.h in Headers */ = {isa = PBXBuildFile; fileRef = A926B5CC27AC718800144157 /* aggressive_dead_code_elim_pass.h */; }; - A926BB7027AC718A00144157 /* struct_cfg_analysis.cpp in Sources */ = {isa = PBXBuildFile; fileRef = A926B5CD27AC718800144157 /* struct_cfg_analysis.cpp */; }; - A926BB7127AC718A00144157 /* struct_cfg_analysis.cpp in Sources */ = {isa = PBXBuildFile; fileRef = A926B5CD27AC718800144157 /* struct_cfg_analysis.cpp */; }; - A926BB7227AC718A00144157 /* struct_cfg_analysis.cpp in Sources */ = {isa = PBXBuildFile; fileRef = A926B5CD27AC718800144157 /* struct_cfg_analysis.cpp */; }; - A926BB7327AC718A00144157 /* vector_dce.h in Headers */ = {isa = PBXBuildFile; fileRef = A926B5CE27AC718800144157 /* vector_dce.h */; }; - A926BB7427AC718A00144157 /* vector_dce.h in Headers */ = {isa = PBXBuildFile; fileRef = A926B5CE27AC718800144157 /* vector_dce.h */; }; - A926BB7527AC718A00144157 /* vector_dce.h in Headers */ = {isa = PBXBuildFile; fileRef = A926B5CE27AC718800144157 /* vector_dce.h */; }; - A926BB7627AC718A00144157 /* combine_access_chains.h in Headers */ = {isa = PBXBuildFile; fileRef = A926B5CF27AC718800144157 /* combine_access_chains.h */; }; - A926BB7727AC718A00144157 /* combine_access_chains.h in Headers */ = {isa = PBXBuildFile; fileRef = A926B5CF27AC718800144157 /* combine_access_chains.h */; }; - A926BB7827AC718A00144157 /* combine_access_chains.h in Headers */ = {isa = PBXBuildFile; fileRef = A926B5CF27AC718800144157 /* combine_access_chains.h */; }; - A926BB7927AC718A00144157 /* pass_manager.h in Headers */ = {isa = PBXBuildFile; fileRef = A926B5D027AC718800144157 /* pass_manager.h */; }; - A926BB7A27AC718A00144157 /* pass_manager.h in Headers */ = {isa = PBXBuildFile; fileRef = A926B5D027AC718800144157 /* pass_manager.h */; }; - A926BB7B27AC718A00144157 /* pass_manager.h in Headers */ = {isa = PBXBuildFile; fileRef = A926B5D027AC718800144157 /* pass_manager.h */; }; - A926BB7C27AC718A00144157 /* spread_volatile_semantics.h in Headers */ = {isa = PBXBuildFile; fileRef = A926B5D127AC718800144157 /* spread_volatile_semantics.h */; }; - A926BB7D27AC718A00144157 /* spread_volatile_semantics.h in Headers */ = {isa = PBXBuildFile; fileRef = A926B5D127AC718800144157 /* spread_volatile_semantics.h */; }; - A926BB7E27AC718A00144157 /* spread_volatile_semantics.h in Headers */ = {isa = PBXBuildFile; fileRef = A926B5D127AC718800144157 /* spread_volatile_semantics.h */; }; - A926BB7F27AC718A00144157 /* local_access_chain_convert_pass.cpp in Sources */ = {isa = PBXBuildFile; fileRef = A926B5D227AC718800144157 /* local_access_chain_convert_pass.cpp */; }; - A926BB8027AC718A00144157 /* local_access_chain_convert_pass.cpp in Sources */ = {isa = PBXBuildFile; fileRef = A926B5D227AC718800144157 /* local_access_chain_convert_pass.cpp */; }; - A926BB8127AC718A00144157 /* local_access_chain_convert_pass.cpp in Sources */ = {isa = PBXBuildFile; fileRef = A926B5D227AC718800144157 /* local_access_chain_convert_pass.cpp */; }; - A926BB8227AC718A00144157 /* interp_fixup_pass.cpp in Sources */ = {isa = PBXBuildFile; fileRef = A926B5D327AC718800144157 /* interp_fixup_pass.cpp */; }; - A926BB8327AC718A00144157 /* interp_fixup_pass.cpp in Sources */ = {isa = PBXBuildFile; fileRef = A926B5D327AC718800144157 /* interp_fixup_pass.cpp */; }; - A926BB8427AC718A00144157 /* interp_fixup_pass.cpp in Sources */ = {isa = PBXBuildFile; fileRef = A926B5D327AC718800144157 /* interp_fixup_pass.cpp */; }; - A926BB8527AC718A00144157 /* basic_block.cpp in Sources */ = {isa = PBXBuildFile; fileRef = A926B5D427AC718800144157 /* basic_block.cpp */; }; - A926BB8627AC718A00144157 /* basic_block.cpp in Sources */ = {isa = PBXBuildFile; fileRef = A926B5D427AC718800144157 /* basic_block.cpp */; }; - A926BB8727AC718A00144157 /* basic_block.cpp in Sources */ = {isa = PBXBuildFile; fileRef = A926B5D427AC718800144157 /* basic_block.cpp */; }; - A926BB8827AC718A00144157 /* iterator.h in Headers */ = {isa = PBXBuildFile; fileRef = A926B5D527AC718800144157 /* iterator.h */; }; - A926BB8927AC718A00144157 /* iterator.h in Headers */ = {isa = PBXBuildFile; fileRef = A926B5D527AC718800144157 /* iterator.h */; }; - A926BB8A27AC718A00144157 /* iterator.h in Headers */ = {isa = PBXBuildFile; fileRef = A926B5D527AC718800144157 /* iterator.h */; }; - A926BB8B27AC718A00144157 /* licm_pass.h in Headers */ = {isa = PBXBuildFile; fileRef = A926B5D627AC718800144157 /* licm_pass.h */; }; - A926BB8C27AC718A00144157 /* licm_pass.h in Headers */ = {isa = PBXBuildFile; fileRef = A926B5D627AC718800144157 /* licm_pass.h */; }; - A926BB8D27AC718A00144157 /* licm_pass.h in Headers */ = {isa = PBXBuildFile; fileRef = A926B5D627AC718800144157 /* licm_pass.h */; }; - A926BB8E27AC718A00144157 /* build_module.h in Headers */ = {isa = PBXBuildFile; fileRef = A926B5D727AC718800144157 /* build_module.h */; }; - A926BB8F27AC718A00144157 /* build_module.h in Headers */ = {isa = PBXBuildFile; fileRef = A926B5D727AC718800144157 /* build_module.h */; }; - A926BB9027AC718A00144157 /* build_module.h in Headers */ = {isa = PBXBuildFile; fileRef = A926B5D727AC718800144157 /* build_module.h */; }; - A926BB9127AC718A00144157 /* ccp_pass.h in Headers */ = {isa = PBXBuildFile; fileRef = A926B5D827AC718800144157 /* ccp_pass.h */; }; - A926BB9227AC718A00144157 /* ccp_pass.h in Headers */ = {isa = PBXBuildFile; fileRef = A926B5D827AC718800144157 /* ccp_pass.h */; }; - A926BB9327AC718A00144157 /* ccp_pass.h in Headers */ = {isa = PBXBuildFile; fileRef = A926B5D827AC718800144157 /* ccp_pass.h */; }; - A926BB9427AC718A00144157 /* graphics_robust_access_pass.cpp in Sources */ = {isa = PBXBuildFile; fileRef = A926B5D927AC718800144157 /* graphics_robust_access_pass.cpp */; }; - A926BB9527AC718A00144157 /* graphics_robust_access_pass.cpp in Sources */ = {isa = PBXBuildFile; fileRef = A926B5D927AC718800144157 /* graphics_robust_access_pass.cpp */; }; - A926BB9627AC718A00144157 /* graphics_robust_access_pass.cpp in Sources */ = {isa = PBXBuildFile; fileRef = A926B5D927AC718800144157 /* graphics_robust_access_pass.cpp */; }; - A926BB9727AC718A00144157 /* function.h in Headers */ = {isa = PBXBuildFile; fileRef = A926B5DA27AC718800144157 /* function.h */; }; - A926BB9827AC718A00144157 /* function.h in Headers */ = {isa = PBXBuildFile; fileRef = A926B5DA27AC718800144157 /* function.h */; }; - A926BB9927AC718A00144157 /* function.h in Headers */ = {isa = PBXBuildFile; fileRef = A926B5DA27AC718800144157 /* function.h */; }; - A926BB9A27AC718A00144157 /* loop_fusion.cpp in Sources */ = {isa = PBXBuildFile; fileRef = A926B5DB27AC718800144157 /* loop_fusion.cpp */; }; - A926BB9B27AC718A00144157 /* loop_fusion.cpp in Sources */ = {isa = PBXBuildFile; fileRef = A926B5DB27AC718800144157 /* loop_fusion.cpp */; }; - A926BB9C27AC718A00144157 /* loop_fusion.cpp in Sources */ = {isa = PBXBuildFile; fileRef = A926B5DB27AC718800144157 /* loop_fusion.cpp */; }; - A926BB9D27AC718A00144157 /* upgrade_memory_model.cpp in Sources */ = {isa = PBXBuildFile; fileRef = A926B5DC27AC718800144157 /* upgrade_memory_model.cpp */; }; - A926BB9E27AC718A00144157 /* upgrade_memory_model.cpp in Sources */ = {isa = PBXBuildFile; fileRef = A926B5DC27AC718800144157 /* upgrade_memory_model.cpp */; }; - A926BB9F27AC718A00144157 /* upgrade_memory_model.cpp in Sources */ = {isa = PBXBuildFile; fileRef = A926B5DC27AC718800144157 /* upgrade_memory_model.cpp */; }; - A926BBA027AC718A00144157 /* feature_manager.h in Headers */ = {isa = PBXBuildFile; fileRef = A926B5DD27AC718800144157 /* feature_manager.h */; }; - A926BBA127AC718A00144157 /* feature_manager.h in Headers */ = {isa = PBXBuildFile; fileRef = A926B5DD27AC718800144157 /* feature_manager.h */; }; - A926BBA227AC718A00144157 /* feature_manager.h in Headers */ = {isa = PBXBuildFile; fileRef = A926B5DD27AC718800144157 /* feature_manager.h */; }; - A926BBA327AC718A00144157 /* dataflow.h in Headers */ = {isa = PBXBuildFile; fileRef = A926B5DE27AC718800144157 /* dataflow.h */; }; - A926BBA427AC718A00144157 /* dataflow.h in Headers */ = {isa = PBXBuildFile; fileRef = A926B5DE27AC718800144157 /* dataflow.h */; }; - A926BBA527AC718A00144157 /* dataflow.h in Headers */ = {isa = PBXBuildFile; fileRef = A926B5DE27AC718800144157 /* dataflow.h */; }; - A926BBA627AC718A00144157 /* inst_bindless_check_pass.h in Headers */ = {isa = PBXBuildFile; fileRef = A926B5DF27AC718800144157 /* inst_bindless_check_pass.h */; }; - A926BBA727AC718A00144157 /* inst_bindless_check_pass.h in Headers */ = {isa = PBXBuildFile; fileRef = A926B5DF27AC718800144157 /* inst_bindless_check_pass.h */; }; - A926BBA827AC718A00144157 /* inst_bindless_check_pass.h in Headers */ = {isa = PBXBuildFile; fileRef = A926B5DF27AC718800144157 /* inst_bindless_check_pass.h */; }; - A926BBA927AC718A00144157 /* scalar_analysis_simplification.cpp in Sources */ = {isa = PBXBuildFile; fileRef = A926B5E027AC718800144157 /* scalar_analysis_simplification.cpp */; }; - A926BBAA27AC718A00144157 /* scalar_analysis_simplification.cpp in Sources */ = {isa = PBXBuildFile; fileRef = A926B5E027AC718800144157 /* scalar_analysis_simplification.cpp */; }; - A926BBAB27AC718A00144157 /* scalar_analysis_simplification.cpp in Sources */ = {isa = PBXBuildFile; fileRef = A926B5E027AC718800144157 /* scalar_analysis_simplification.cpp */; }; - A926BBAC27AC718A00144157 /* set_spec_constant_default_value_pass.h in Headers */ = {isa = PBXBuildFile; fileRef = A926B5E127AC718800144157 /* set_spec_constant_default_value_pass.h */; }; - A926BBAD27AC718A00144157 /* set_spec_constant_default_value_pass.h in Headers */ = {isa = PBXBuildFile; fileRef = A926B5E127AC718800144157 /* set_spec_constant_default_value_pass.h */; }; - A926BBAE27AC718A00144157 /* set_spec_constant_default_value_pass.h in Headers */ = {isa = PBXBuildFile; fileRef = A926B5E127AC718800144157 /* set_spec_constant_default_value_pass.h */; }; - A926BBAF27AC718A00144157 /* dominator_tree.h in Headers */ = {isa = PBXBuildFile; fileRef = A926B5E227AC718800144157 /* dominator_tree.h */; }; - A926BBB027AC718A00144157 /* dominator_tree.h in Headers */ = {isa = PBXBuildFile; fileRef = A926B5E227AC718800144157 /* dominator_tree.h */; }; - A926BBB127AC718A00144157 /* dominator_tree.h in Headers */ = {isa = PBXBuildFile; fileRef = A926B5E227AC718800144157 /* dominator_tree.h */; }; - A926BBB227AC718A00144157 /* remove_unused_interface_variables_pass.h in Headers */ = {isa = PBXBuildFile; fileRef = A926B5E327AC718800144157 /* remove_unused_interface_variables_pass.h */; }; - A926BBB327AC718A00144157 /* remove_unused_interface_variables_pass.h in Headers */ = {isa = PBXBuildFile; fileRef = A926B5E327AC718800144157 /* remove_unused_interface_variables_pass.h */; }; - A926BBB427AC718A00144157 /* remove_unused_interface_variables_pass.h in Headers */ = {isa = PBXBuildFile; fileRef = A926B5E327AC718800144157 /* remove_unused_interface_variables_pass.h */; }; - A926BBB527AC718A00144157 /* type_manager.h in Headers */ = {isa = PBXBuildFile; fileRef = A926B5E427AC718800144157 /* type_manager.h */; }; - A926BBB627AC718A00144157 /* type_manager.h in Headers */ = {isa = PBXBuildFile; fileRef = A926B5E427AC718800144157 /* type_manager.h */; }; - A926BBB727AC718A00144157 /* type_manager.h in Headers */ = {isa = PBXBuildFile; fileRef = A926B5E427AC718800144157 /* type_manager.h */; }; - A926BBB827AC718A00144157 /* compact_ids_pass.cpp in Sources */ = {isa = PBXBuildFile; fileRef = A926B5E527AC718800144157 /* compact_ids_pass.cpp */; }; - A926BBB927AC718A00144157 /* compact_ids_pass.cpp in Sources */ = {isa = PBXBuildFile; fileRef = A926B5E527AC718800144157 /* compact_ids_pass.cpp */; }; - A926BBBA27AC718A00144157 /* compact_ids_pass.cpp in Sources */ = {isa = PBXBuildFile; fileRef = A926B5E527AC718800144157 /* compact_ids_pass.cpp */; }; - A926BBBB27AC718A00144157 /* loop_peeling.cpp in Sources */ = {isa = PBXBuildFile; fileRef = A926B5E627AC718800144157 /* loop_peeling.cpp */; }; - A926BBBC27AC718A00144157 /* loop_peeling.cpp in Sources */ = {isa = PBXBuildFile; fileRef = A926B5E627AC718800144157 /* loop_peeling.cpp */; }; - A926BBBD27AC718A00144157 /* loop_peeling.cpp in Sources */ = {isa = PBXBuildFile; fileRef = A926B5E627AC718800144157 /* loop_peeling.cpp */; }; - A926BBBE27AC718A00144157 /* table.h in Headers */ = {isa = PBXBuildFile; fileRef = A926B5E727AC718800144157 /* table.h */; }; - A926BBBF27AC718A00144157 /* table.h in Headers */ = {isa = PBXBuildFile; fileRef = A926B5E727AC718800144157 /* table.h */; }; - A926BBC027AC718A00144157 /* table.h in Headers */ = {isa = PBXBuildFile; fileRef = A926B5E727AC718800144157 /* table.h */; }; - A926C05627AC718C00144157 /* ext_inst.h in Headers */ = {isa = PBXBuildFile; fileRef = A926B77427AC718900144157 /* ext_inst.h */; }; - A926C05727AC718C00144157 /* ext_inst.h in Headers */ = {isa = PBXBuildFile; fileRef = A926B77427AC718900144157 /* ext_inst.h */; }; - A926C05827AC718C00144157 /* ext_inst.h in Headers */ = {isa = PBXBuildFile; fileRef = A926B77427AC718900144157 /* ext_inst.h */; }; - A926C05927AC718C00144157 /* diagnostic.cpp in Sources */ = {isa = PBXBuildFile; fileRef = A926B77527AC718900144157 /* diagnostic.cpp */; }; - A926C05A27AC718C00144157 /* diagnostic.cpp in Sources */ = {isa = PBXBuildFile; fileRef = A926B77527AC718900144157 /* diagnostic.cpp */; }; - A926C05B27AC718C00144157 /* diagnostic.cpp in Sources */ = {isa = PBXBuildFile; fileRef = A926B77527AC718900144157 /* diagnostic.cpp */; }; - A926C05C27AC718C00144157 /* latest_version_spirv_header.h in Headers */ = {isa = PBXBuildFile; fileRef = A926B77627AC718900144157 /* latest_version_spirv_header.h */; }; - A926C05D27AC718C00144157 /* latest_version_spirv_header.h in Headers */ = {isa = PBXBuildFile; fileRef = A926B77627AC718900144157 /* latest_version_spirv_header.h */; }; - A926C05E27AC718C00144157 /* latest_version_spirv_header.h in Headers */ = {isa = PBXBuildFile; fileRef = A926B77627AC718900144157 /* latest_version_spirv_header.h */; }; - A926C05F27AC718C00144157 /* libspirv.cpp in Sources */ = {isa = PBXBuildFile; fileRef = A926B77727AC718900144157 /* libspirv.cpp */; }; - A926C06027AC718C00144157 /* libspirv.cpp in Sources */ = {isa = PBXBuildFile; fileRef = A926B77727AC718900144157 /* libspirv.cpp */; }; - A926C06127AC718C00144157 /* libspirv.cpp in Sources */ = {isa = PBXBuildFile; fileRef = A926B77727AC718900144157 /* libspirv.cpp */; }; - A926C06227AC718C00144157 /* instruction.h in Headers */ = {isa = PBXBuildFile; fileRef = A926B77827AC718900144157 /* instruction.h */; }; - A926C06327AC718C00144157 /* instruction.h in Headers */ = {isa = PBXBuildFile; fileRef = A926B77827AC718900144157 /* instruction.h */; }; - A926C06427AC718C00144157 /* instruction.h in Headers */ = {isa = PBXBuildFile; fileRef = A926B77827AC718900144157 /* instruction.h */; }; - A926C06527AC718C00144157 /* spirv_optimizer_options.h in Headers */ = {isa = PBXBuildFile; fileRef = A926B77927AC718900144157 /* spirv_optimizer_options.h */; }; - A926C06627AC718C00144157 /* spirv_optimizer_options.h in Headers */ = {isa = PBXBuildFile; fileRef = A926B77927AC718900144157 /* spirv_optimizer_options.h */; }; - A926C06727AC718C00144157 /* spirv_optimizer_options.h in Headers */ = {isa = PBXBuildFile; fileRef = A926B77927AC718900144157 /* spirv_optimizer_options.h */; }; - A926C06827AC718C00144157 /* opcode.h in Headers */ = {isa = PBXBuildFile; fileRef = A926B77A27AC718900144157 /* opcode.h */; }; - A926C06927AC718C00144157 /* opcode.h in Headers */ = {isa = PBXBuildFile; fileRef = A926B77A27AC718900144157 /* opcode.h */; }; - A926C06A27AC718C00144157 /* opcode.h in Headers */ = {isa = PBXBuildFile; fileRef = A926B77A27AC718900144157 /* opcode.h */; }; - A926C06B27AC718C00144157 /* operand.cpp in Sources */ = {isa = PBXBuildFile; fileRef = A926B77B27AC718900144157 /* operand.cpp */; }; - A926C06C27AC718C00144157 /* operand.cpp in Sources */ = {isa = PBXBuildFile; fileRef = A926B77B27AC718900144157 /* operand.cpp */; }; - A926C06D27AC718C00144157 /* operand.cpp in Sources */ = {isa = PBXBuildFile; fileRef = A926B77B27AC718900144157 /* operand.cpp */; }; - A926C06E27AC718C00144157 /* latest_version_glsl_std_450_header.h in Headers */ = {isa = PBXBuildFile; fileRef = A926B77C27AC718900144157 /* latest_version_glsl_std_450_header.h */; }; - A926C06F27AC718C00144157 /* latest_version_glsl_std_450_header.h in Headers */ = {isa = PBXBuildFile; fileRef = A926B77C27AC718900144157 /* latest_version_glsl_std_450_header.h */; }; - A926C07027AC718C00144157 /* latest_version_glsl_std_450_header.h in Headers */ = {isa = PBXBuildFile; fileRef = A926B77C27AC718900144157 /* latest_version_glsl_std_450_header.h */; }; - A926C07127AC718C00144157 /* extensions.h in Headers */ = {isa = PBXBuildFile; fileRef = A926B77D27AC718900144157 /* extensions.h */; }; - A926C07227AC718C00144157 /* extensions.h in Headers */ = {isa = PBXBuildFile; fileRef = A926B77D27AC718900144157 /* extensions.h */; }; - A926C07327AC718C00144157 /* extensions.h in Headers */ = {isa = PBXBuildFile; fileRef = A926B77D27AC718900144157 /* extensions.h */; }; - A926C07427AC718C00144157 /* disassemble.cpp in Sources */ = {isa = PBXBuildFile; fileRef = A926B77E27AC718900144157 /* disassemble.cpp */; }; - A926C07527AC718C00144157 /* disassemble.cpp in Sources */ = {isa = PBXBuildFile; fileRef = A926B77E27AC718900144157 /* disassemble.cpp */; }; - A926C07627AC718C00144157 /* disassemble.cpp in Sources */ = {isa = PBXBuildFile; fileRef = A926B77E27AC718900144157 /* disassemble.cpp */; }; - A926C07727AC718C00144157 /* binary.h in Headers */ = {isa = PBXBuildFile; fileRef = A926B77F27AC718900144157 /* binary.h */; }; - A926C07827AC718C00144157 /* binary.h in Headers */ = {isa = PBXBuildFile; fileRef = A926B77F27AC718900144157 /* binary.h */; }; - A926C07927AC718C00144157 /* binary.h in Headers */ = {isa = PBXBuildFile; fileRef = A926B77F27AC718900144157 /* binary.h */; }; - A926C07A27AC718C00144157 /* text_handler.cpp in Sources */ = {isa = PBXBuildFile; fileRef = A926B78027AC718900144157 /* text_handler.cpp */; }; - A926C07B27AC718C00144157 /* text_handler.cpp in Sources */ = {isa = PBXBuildFile; fileRef = A926B78027AC718900144157 /* text_handler.cpp */; }; - A926C07C27AC718C00144157 /* text_handler.cpp in Sources */ = {isa = PBXBuildFile; fileRef = A926B78027AC718900144157 /* text_handler.cpp */; }; - A926C07D27AC718C00144157 /* validate_annotation.cpp in Sources */ = {isa = PBXBuildFile; fileRef = A926B78227AC718900144157 /* validate_annotation.cpp */; }; - A926C07E27AC718C00144157 /* validate_annotation.cpp in Sources */ = {isa = PBXBuildFile; fileRef = A926B78227AC718900144157 /* validate_annotation.cpp */; }; - A926C07F27AC718C00144157 /* validate_annotation.cpp in Sources */ = {isa = PBXBuildFile; fileRef = A926B78227AC718900144157 /* validate_annotation.cpp */; }; - A926C08027AC718C00144157 /* validate_misc.cpp in Sources */ = {isa = PBXBuildFile; fileRef = A926B78327AC718900144157 /* validate_misc.cpp */; }; - A926C08127AC718C00144157 /* validate_misc.cpp in Sources */ = {isa = PBXBuildFile; fileRef = A926B78327AC718900144157 /* validate_misc.cpp */; }; - A926C08227AC718C00144157 /* validate_misc.cpp in Sources */ = {isa = PBXBuildFile; fileRef = A926B78327AC718900144157 /* validate_misc.cpp */; }; - A926C08327AC718C00144157 /* validate_cfg.cpp in Sources */ = {isa = PBXBuildFile; fileRef = A926B78427AC718900144157 /* validate_cfg.cpp */; }; - A926C08427AC718C00144157 /* validate_cfg.cpp in Sources */ = {isa = PBXBuildFile; fileRef = A926B78427AC718900144157 /* validate_cfg.cpp */; }; - A926C08527AC718C00144157 /* validate_cfg.cpp in Sources */ = {isa = PBXBuildFile; fileRef = A926B78427AC718900144157 /* validate_cfg.cpp */; }; - A926C08627AC718C00144157 /* validate_capability.cpp in Sources */ = {isa = PBXBuildFile; fileRef = A926B78527AC718900144157 /* validate_capability.cpp */; }; - A926C08727AC718C00144157 /* validate_capability.cpp in Sources */ = {isa = PBXBuildFile; fileRef = A926B78527AC718900144157 /* validate_capability.cpp */; }; - A926C08827AC718C00144157 /* validate_capability.cpp in Sources */ = {isa = PBXBuildFile; fileRef = A926B78527AC718900144157 /* validate_capability.cpp */; }; - A926C08927AC718C00144157 /* construct.h in Headers */ = {isa = PBXBuildFile; fileRef = A926B78627AC718900144157 /* construct.h */; }; - A926C08A27AC718C00144157 /* construct.h in Headers */ = {isa = PBXBuildFile; fileRef = A926B78627AC718900144157 /* construct.h */; }; - A926C08B27AC718C00144157 /* construct.h in Headers */ = {isa = PBXBuildFile; fileRef = A926B78627AC718900144157 /* construct.h */; }; - A926C08C27AC718C00144157 /* validate_barriers.cpp in Sources */ = {isa = PBXBuildFile; fileRef = A926B78727AC718900144157 /* validate_barriers.cpp */; }; - A926C08D27AC718C00144157 /* validate_barriers.cpp in Sources */ = {isa = PBXBuildFile; fileRef = A926B78727AC718900144157 /* validate_barriers.cpp */; }; - A926C08E27AC718C00144157 /* validate_barriers.cpp in Sources */ = {isa = PBXBuildFile; fileRef = A926B78727AC718900144157 /* validate_barriers.cpp */; }; - A926C08F27AC718C00144157 /* validate_non_uniform.cpp in Sources */ = {isa = PBXBuildFile; fileRef = A926B78827AC718900144157 /* validate_non_uniform.cpp */; }; - A926C09027AC718C00144157 /* validate_non_uniform.cpp in Sources */ = {isa = PBXBuildFile; fileRef = A926B78827AC718900144157 /* validate_non_uniform.cpp */; }; - A926C09127AC718C00144157 /* validate_non_uniform.cpp in Sources */ = {isa = PBXBuildFile; fileRef = A926B78827AC718900144157 /* validate_non_uniform.cpp */; }; - A926C09227AC718C00144157 /* validate_scopes.cpp in Sources */ = {isa = PBXBuildFile; fileRef = A926B78927AC718900144157 /* validate_scopes.cpp */; }; - A926C09327AC718C00144157 /* validate_scopes.cpp in Sources */ = {isa = PBXBuildFile; fileRef = A926B78927AC718900144157 /* validate_scopes.cpp */; }; - A926C09427AC718C00144157 /* validate_scopes.cpp in Sources */ = {isa = PBXBuildFile; fileRef = A926B78927AC718900144157 /* validate_scopes.cpp */; }; - A926C09527AC718C00144157 /* validate_atomics.cpp in Sources */ = {isa = PBXBuildFile; fileRef = A926B78A27AC718900144157 /* validate_atomics.cpp */; }; - A926C09627AC718C00144157 /* validate_atomics.cpp in Sources */ = {isa = PBXBuildFile; fileRef = A926B78A27AC718900144157 /* validate_atomics.cpp */; }; - A926C09727AC718C00144157 /* validate_atomics.cpp in Sources */ = {isa = PBXBuildFile; fileRef = A926B78A27AC718900144157 /* validate_atomics.cpp */; }; - A926C09827AC718C00144157 /* basic_block.h in Headers */ = {isa = PBXBuildFile; fileRef = A926B78B27AC718900144157 /* basic_block.h */; }; - A926C09927AC718C00144157 /* basic_block.h in Headers */ = {isa = PBXBuildFile; fileRef = A926B78B27AC718900144157 /* basic_block.h */; }; - A926C09A27AC718C00144157 /* basic_block.h in Headers */ = {isa = PBXBuildFile; fileRef = A926B78B27AC718900144157 /* basic_block.h */; }; - A926C09B27AC718C00144157 /* validate_instruction.cpp in Sources */ = {isa = PBXBuildFile; fileRef = A926B78C27AC718900144157 /* validate_instruction.cpp */; }; - A926C09C27AC718C00144157 /* validate_instruction.cpp in Sources */ = {isa = PBXBuildFile; fileRef = A926B78C27AC718900144157 /* validate_instruction.cpp */; }; - A926C09D27AC718C00144157 /* validate_instruction.cpp in Sources */ = {isa = PBXBuildFile; fileRef = A926B78C27AC718900144157 /* validate_instruction.cpp */; }; - A926C09E27AC718C00144157 /* validate_decorations.cpp in Sources */ = {isa = PBXBuildFile; fileRef = A926B78D27AC718900144157 /* validate_decorations.cpp */; }; - A926C09F27AC718C00144157 /* validate_decorations.cpp in Sources */ = {isa = PBXBuildFile; fileRef = A926B78D27AC718900144157 /* validate_decorations.cpp */; }; - A926C0A027AC718C00144157 /* validate_decorations.cpp in Sources */ = {isa = PBXBuildFile; fileRef = A926B78D27AC718900144157 /* validate_decorations.cpp */; }; - A926C0A127AC718C00144157 /* validate_debug.cpp in Sources */ = {isa = PBXBuildFile; fileRef = A926B78E27AC718900144157 /* validate_debug.cpp */; }; - A926C0A227AC718C00144157 /* validate_debug.cpp in Sources */ = {isa = PBXBuildFile; fileRef = A926B78E27AC718900144157 /* validate_debug.cpp */; }; - A926C0A327AC718C00144157 /* validate_debug.cpp in Sources */ = {isa = PBXBuildFile; fileRef = A926B78E27AC718900144157 /* validate_debug.cpp */; }; - A926C0A427AC718C00144157 /* validate_builtins.cpp in Sources */ = {isa = PBXBuildFile; fileRef = A926B78F27AC718900144157 /* validate_builtins.cpp */; }; - A926C0A527AC718C00144157 /* validate_builtins.cpp in Sources */ = {isa = PBXBuildFile; fileRef = A926B78F27AC718900144157 /* validate_builtins.cpp */; }; - A926C0A627AC718C00144157 /* validate_builtins.cpp in Sources */ = {isa = PBXBuildFile; fileRef = A926B78F27AC718900144157 /* validate_builtins.cpp */; }; - A926C0A727AC718C00144157 /* validate_interfaces.cpp in Sources */ = {isa = PBXBuildFile; fileRef = A926B79027AC718900144157 /* validate_interfaces.cpp */; }; - A926C0A827AC718C00144157 /* validate_interfaces.cpp in Sources */ = {isa = PBXBuildFile; fileRef = A926B79027AC718900144157 /* validate_interfaces.cpp */; }; - A926C0A927AC718C00144157 /* validate_interfaces.cpp in Sources */ = {isa = PBXBuildFile; fileRef = A926B79027AC718900144157 /* validate_interfaces.cpp */; }; - A926C0AA27AC718C00144157 /* validate.cpp in Sources */ = {isa = PBXBuildFile; fileRef = A926B79127AC718900144157 /* validate.cpp */; }; - A926C0AB27AC718C00144157 /* validate.cpp in Sources */ = {isa = PBXBuildFile; fileRef = A926B79127AC718900144157 /* validate.cpp */; }; - A926C0AC27AC718C00144157 /* validate.cpp in Sources */ = {isa = PBXBuildFile; fileRef = A926B79127AC718900144157 /* validate.cpp */; }; - A926C0AD27AC718C00144157 /* validation_state.h in Headers */ = {isa = PBXBuildFile; fileRef = A926B79227AC718900144157 /* validation_state.h */; }; - A926C0AE27AC718C00144157 /* validation_state.h in Headers */ = {isa = PBXBuildFile; fileRef = A926B79227AC718900144157 /* validation_state.h */; }; - A926C0AF27AC718C00144157 /* validation_state.h in Headers */ = {isa = PBXBuildFile; fileRef = A926B79227AC718900144157 /* validation_state.h */; }; - A926C0B027AC718C00144157 /* validate_constants.cpp in Sources */ = {isa = PBXBuildFile; fileRef = A926B79327AC718900144157 /* validate_constants.cpp */; }; - A926C0B127AC718C00144157 /* validate_constants.cpp in Sources */ = {isa = PBXBuildFile; fileRef = A926B79327AC718900144157 /* validate_constants.cpp */; }; - A926C0B227AC718C00144157 /* validate_constants.cpp in Sources */ = {isa = PBXBuildFile; fileRef = A926B79327AC718900144157 /* validate_constants.cpp */; }; - A926C0B327AC718C00144157 /* validate_bitwise.cpp in Sources */ = {isa = PBXBuildFile; fileRef = A926B79427AC718900144157 /* validate_bitwise.cpp */; }; - A926C0B427AC718C00144157 /* validate_bitwise.cpp in Sources */ = {isa = PBXBuildFile; fileRef = A926B79427AC718900144157 /* validate_bitwise.cpp */; }; - A926C0B527AC718C00144157 /* validate_bitwise.cpp in Sources */ = {isa = PBXBuildFile; fileRef = A926B79427AC718900144157 /* validate_bitwise.cpp */; }; - A926C0B627AC718C00144157 /* validate_extensions.cpp in Sources */ = {isa = PBXBuildFile; fileRef = A926B79527AC718900144157 /* validate_extensions.cpp */; }; - A926C0B727AC718C00144157 /* validate_extensions.cpp in Sources */ = {isa = PBXBuildFile; fileRef = A926B79527AC718900144157 /* validate_extensions.cpp */; }; - A926C0B827AC718C00144157 /* validate_extensions.cpp in Sources */ = {isa = PBXBuildFile; fileRef = A926B79527AC718900144157 /* validate_extensions.cpp */; }; - A926C0B927AC718C00144157 /* construct.cpp in Sources */ = {isa = PBXBuildFile; fileRef = A926B79627AC718900144157 /* construct.cpp */; }; - A926C0BA27AC718C00144157 /* construct.cpp in Sources */ = {isa = PBXBuildFile; fileRef = A926B79627AC718900144157 /* construct.cpp */; }; - A926C0BB27AC718C00144157 /* construct.cpp in Sources */ = {isa = PBXBuildFile; fileRef = A926B79627AC718900144157 /* construct.cpp */; }; - A926C0BC27AC718C00144157 /* function.cpp in Sources */ = {isa = PBXBuildFile; fileRef = A926B79727AC718900144157 /* function.cpp */; }; - A926C0BD27AC718C00144157 /* function.cpp in Sources */ = {isa = PBXBuildFile; fileRef = A926B79727AC718900144157 /* function.cpp */; }; - A926C0BE27AC718C00144157 /* function.cpp in Sources */ = {isa = PBXBuildFile; fileRef = A926B79727AC718900144157 /* function.cpp */; }; - A926C0BF27AC718C00144157 /* validate.h in Headers */ = {isa = PBXBuildFile; fileRef = A926B79827AC718900144157 /* validate.h */; }; - A926C0C027AC718C00144157 /* validate.h in Headers */ = {isa = PBXBuildFile; fileRef = A926B79827AC718900144157 /* validate.h */; }; - A926C0C127AC718C00144157 /* validate.h in Headers */ = {isa = PBXBuildFile; fileRef = A926B79827AC718900144157 /* validate.h */; }; - A926C0C227AC718C00144157 /* validate_adjacency.cpp in Sources */ = {isa = PBXBuildFile; fileRef = A926B79927AC718900144157 /* validate_adjacency.cpp */; }; - A926C0C327AC718C00144157 /* validate_adjacency.cpp in Sources */ = {isa = PBXBuildFile; fileRef = A926B79927AC718900144157 /* validate_adjacency.cpp */; }; - A926C0C427AC718C00144157 /* validate_adjacency.cpp in Sources */ = {isa = PBXBuildFile; fileRef = A926B79927AC718900144157 /* validate_adjacency.cpp */; }; - A926C0C527AC718C00144157 /* validate_conversion.cpp in Sources */ = {isa = PBXBuildFile; fileRef = A926B79A27AC718900144157 /* validate_conversion.cpp */; }; - A926C0C627AC718C00144157 /* validate_conversion.cpp in Sources */ = {isa = PBXBuildFile; fileRef = A926B79A27AC718900144157 /* validate_conversion.cpp */; }; - A926C0C727AC718C00144157 /* validate_conversion.cpp in Sources */ = {isa = PBXBuildFile; fileRef = A926B79A27AC718900144157 /* validate_conversion.cpp */; }; - A926C0C827AC718C00144157 /* validate_small_type_uses.cpp in Sources */ = {isa = PBXBuildFile; fileRef = A926B79B27AC718900144157 /* validate_small_type_uses.cpp */; }; - A926C0C927AC718C00144157 /* validate_small_type_uses.cpp in Sources */ = {isa = PBXBuildFile; fileRef = A926B79B27AC718900144157 /* validate_small_type_uses.cpp */; }; - A926C0CA27AC718C00144157 /* validate_small_type_uses.cpp in Sources */ = {isa = PBXBuildFile; fileRef = A926B79B27AC718900144157 /* validate_small_type_uses.cpp */; }; - A926C0CB27AC718C00144157 /* validate_scopes.h in Headers */ = {isa = PBXBuildFile; fileRef = A926B79C27AC718900144157 /* validate_scopes.h */; }; - A926C0CC27AC718C00144157 /* validate_scopes.h in Headers */ = {isa = PBXBuildFile; fileRef = A926B79C27AC718900144157 /* validate_scopes.h */; }; - A926C0CD27AC718C00144157 /* validate_scopes.h in Headers */ = {isa = PBXBuildFile; fileRef = A926B79C27AC718900144157 /* validate_scopes.h */; }; - A926C0CE27AC718C00144157 /* validate_id.cpp in Sources */ = {isa = PBXBuildFile; fileRef = A926B79D27AC718900144157 /* validate_id.cpp */; }; - A926C0CF27AC718C00144157 /* validate_id.cpp in Sources */ = {isa = PBXBuildFile; fileRef = A926B79D27AC718900144157 /* validate_id.cpp */; }; - A926C0D027AC718C00144157 /* validate_id.cpp in Sources */ = {isa = PBXBuildFile; fileRef = A926B79D27AC718900144157 /* validate_id.cpp */; }; - A926C0D127AC718C00144157 /* validate_memory_semantics.h in Headers */ = {isa = PBXBuildFile; fileRef = A926B79E27AC718900144157 /* validate_memory_semantics.h */; }; - A926C0D227AC718C00144157 /* validate_memory_semantics.h in Headers */ = {isa = PBXBuildFile; fileRef = A926B79E27AC718900144157 /* validate_memory_semantics.h */; }; - A926C0D327AC718C00144157 /* validate_memory_semantics.h in Headers */ = {isa = PBXBuildFile; fileRef = A926B79E27AC718900144157 /* validate_memory_semantics.h */; }; - A926C0D427AC718C00144157 /* validate_arithmetics.cpp in Sources */ = {isa = PBXBuildFile; fileRef = A926B79F27AC718900144157 /* validate_arithmetics.cpp */; }; - A926C0D527AC718C00144157 /* validate_arithmetics.cpp in Sources */ = {isa = PBXBuildFile; fileRef = A926B79F27AC718900144157 /* validate_arithmetics.cpp */; }; - A926C0D627AC718C00144157 /* validate_arithmetics.cpp in Sources */ = {isa = PBXBuildFile; fileRef = A926B79F27AC718900144157 /* validate_arithmetics.cpp */; }; - A926C0D727AC718C00144157 /* validate_mode_setting.cpp in Sources */ = {isa = PBXBuildFile; fileRef = A926B7A027AC718900144157 /* validate_mode_setting.cpp */; }; - A926C0D827AC718C00144157 /* validate_mode_setting.cpp in Sources */ = {isa = PBXBuildFile; fileRef = A926B7A027AC718900144157 /* validate_mode_setting.cpp */; }; - A926C0D927AC718C00144157 /* validate_mode_setting.cpp in Sources */ = {isa = PBXBuildFile; fileRef = A926B7A027AC718900144157 /* validate_mode_setting.cpp */; }; - A926C0DA27AC718C00144157 /* validate_memory_semantics.cpp in Sources */ = {isa = PBXBuildFile; fileRef = A926B7A127AC718900144157 /* validate_memory_semantics.cpp */; }; - A926C0DB27AC718C00144157 /* validate_memory_semantics.cpp in Sources */ = {isa = PBXBuildFile; fileRef = A926B7A127AC718900144157 /* validate_memory_semantics.cpp */; }; - A926C0DC27AC718C00144157 /* validate_memory_semantics.cpp in Sources */ = {isa = PBXBuildFile; fileRef = A926B7A127AC718900144157 /* validate_memory_semantics.cpp */; }; - A926C0DD27AC718C00144157 /* validate_logicals.cpp in Sources */ = {isa = PBXBuildFile; fileRef = A926B7A227AC718900144157 /* validate_logicals.cpp */; }; - A926C0DE27AC718C00144157 /* validate_logicals.cpp in Sources */ = {isa = PBXBuildFile; fileRef = A926B7A227AC718900144157 /* validate_logicals.cpp */; }; - A926C0DF27AC718C00144157 /* validate_logicals.cpp in Sources */ = {isa = PBXBuildFile; fileRef = A926B7A227AC718900144157 /* validate_logicals.cpp */; }; - A926C0E027AC718C00144157 /* validate_derivatives.cpp in Sources */ = {isa = PBXBuildFile; fileRef = A926B7A327AC718900144157 /* validate_derivatives.cpp */; }; - A926C0E127AC718C00144157 /* validate_derivatives.cpp in Sources */ = {isa = PBXBuildFile; fileRef = A926B7A327AC718900144157 /* validate_derivatives.cpp */; }; - A926C0E227AC718C00144157 /* validate_derivatives.cpp in Sources */ = {isa = PBXBuildFile; fileRef = A926B7A327AC718900144157 /* validate_derivatives.cpp */; }; - A926C0E327AC718C00144157 /* validate_memory.cpp in Sources */ = {isa = PBXBuildFile; fileRef = A926B7A427AC718900144157 /* validate_memory.cpp */; }; - A926C0E427AC718C00144157 /* validate_memory.cpp in Sources */ = {isa = PBXBuildFile; fileRef = A926B7A427AC718900144157 /* validate_memory.cpp */; }; - A926C0E527AC718C00144157 /* validate_memory.cpp in Sources */ = {isa = PBXBuildFile; fileRef = A926B7A427AC718900144157 /* validate_memory.cpp */; }; - A926C0E627AC718C00144157 /* validate_image.cpp in Sources */ = {isa = PBXBuildFile; fileRef = A926B7A527AC718900144157 /* validate_image.cpp */; }; - A926C0E727AC718C00144157 /* validate_image.cpp in Sources */ = {isa = PBXBuildFile; fileRef = A926B7A527AC718900144157 /* validate_image.cpp */; }; - A926C0E827AC718C00144157 /* validate_image.cpp in Sources */ = {isa = PBXBuildFile; fileRef = A926B7A527AC718900144157 /* validate_image.cpp */; }; - A926C0E927AC718C00144157 /* validate_literals.cpp in Sources */ = {isa = PBXBuildFile; fileRef = A926B7A627AC718900144157 /* validate_literals.cpp */; }; - A926C0EA27AC718C00144157 /* validate_literals.cpp in Sources */ = {isa = PBXBuildFile; fileRef = A926B7A627AC718900144157 /* validate_literals.cpp */; }; - A926C0EB27AC718C00144157 /* validate_literals.cpp in Sources */ = {isa = PBXBuildFile; fileRef = A926B7A627AC718900144157 /* validate_literals.cpp */; }; - A926C0EC27AC718C00144157 /* instruction.cpp in Sources */ = {isa = PBXBuildFile; fileRef = A926B7A727AC718900144157 /* instruction.cpp */; }; - A926C0ED27AC718C00144157 /* instruction.cpp in Sources */ = {isa = PBXBuildFile; fileRef = A926B7A727AC718900144157 /* instruction.cpp */; }; - A926C0EE27AC718C00144157 /* instruction.cpp in Sources */ = {isa = PBXBuildFile; fileRef = A926B7A727AC718900144157 /* instruction.cpp */; }; - A926C0EF27AC718C00144157 /* validate_type.cpp in Sources */ = {isa = PBXBuildFile; fileRef = A926B7A827AC718900144157 /* validate_type.cpp */; }; - A926C0F027AC718C00144157 /* validate_type.cpp in Sources */ = {isa = PBXBuildFile; fileRef = A926B7A827AC718900144157 /* validate_type.cpp */; }; - A926C0F127AC718C00144157 /* validate_type.cpp in Sources */ = {isa = PBXBuildFile; fileRef = A926B7A827AC718900144157 /* validate_type.cpp */; }; - A926C0F227AC718C00144157 /* instruction.h in Headers */ = {isa = PBXBuildFile; fileRef = A926B7A927AC718900144157 /* instruction.h */; }; - A926C0F327AC718C00144157 /* instruction.h in Headers */ = {isa = PBXBuildFile; fileRef = A926B7A927AC718900144157 /* instruction.h */; }; - A926C0F427AC718C00144157 /* instruction.h in Headers */ = {isa = PBXBuildFile; fileRef = A926B7A927AC718900144157 /* instruction.h */; }; - A926C0F527AC718C00144157 /* validate_execution_limitations.cpp in Sources */ = {isa = PBXBuildFile; fileRef = A926B7AA27AC718900144157 /* validate_execution_limitations.cpp */; }; - A926C0F627AC718C00144157 /* validate_execution_limitations.cpp in Sources */ = {isa = PBXBuildFile; fileRef = A926B7AA27AC718900144157 /* validate_execution_limitations.cpp */; }; - A926C0F727AC718C00144157 /* validate_execution_limitations.cpp in Sources */ = {isa = PBXBuildFile; fileRef = A926B7AA27AC718900144157 /* validate_execution_limitations.cpp */; }; - A926C0F827AC718C00144157 /* validate_layout.cpp in Sources */ = {isa = PBXBuildFile; fileRef = A926B7AB27AC718900144157 /* validate_layout.cpp */; }; - A926C0F927AC718C00144157 /* validate_layout.cpp in Sources */ = {isa = PBXBuildFile; fileRef = A926B7AB27AC718900144157 /* validate_layout.cpp */; }; - A926C0FA27AC718C00144157 /* validate_layout.cpp in Sources */ = {isa = PBXBuildFile; fileRef = A926B7AB27AC718900144157 /* validate_layout.cpp */; }; - A926C0FB27AC718C00144157 /* basic_block.cpp in Sources */ = {isa = PBXBuildFile; fileRef = A926B7AC27AC718900144157 /* basic_block.cpp */; }; - A926C0FC27AC718C00144157 /* basic_block.cpp in Sources */ = {isa = PBXBuildFile; fileRef = A926B7AC27AC718900144157 /* basic_block.cpp */; }; - A926C0FD27AC718C00144157 /* basic_block.cpp in Sources */ = {isa = PBXBuildFile; fileRef = A926B7AC27AC718900144157 /* basic_block.cpp */; }; - A926C0FE27AC718C00144157 /* validate_function.cpp in Sources */ = {isa = PBXBuildFile; fileRef = A926B7AD27AC718900144157 /* validate_function.cpp */; }; - A926C0FF27AC718C00144157 /* validate_function.cpp in Sources */ = {isa = PBXBuildFile; fileRef = A926B7AD27AC718900144157 /* validate_function.cpp */; }; - A926C10027AC718C00144157 /* validate_function.cpp in Sources */ = {isa = PBXBuildFile; fileRef = A926B7AD27AC718900144157 /* validate_function.cpp */; }; - A926C10127AC718C00144157 /* function.h in Headers */ = {isa = PBXBuildFile; fileRef = A926B7AE27AC718900144157 /* function.h */; }; - A926C10227AC718C00144157 /* function.h in Headers */ = {isa = PBXBuildFile; fileRef = A926B7AE27AC718900144157 /* function.h */; }; - A926C10327AC718C00144157 /* function.h in Headers */ = {isa = PBXBuildFile; fileRef = A926B7AE27AC718900144157 /* function.h */; }; - A926C10427AC718C00144157 /* validate_composites.cpp in Sources */ = {isa = PBXBuildFile; fileRef = A926B7AF27AC718900144157 /* validate_composites.cpp */; }; - A926C10527AC718C00144157 /* validate_composites.cpp in Sources */ = {isa = PBXBuildFile; fileRef = A926B7AF27AC718900144157 /* validate_composites.cpp */; }; - A926C10627AC718C00144157 /* validate_composites.cpp in Sources */ = {isa = PBXBuildFile; fileRef = A926B7AF27AC718900144157 /* validate_composites.cpp */; }; - A926C10727AC718C00144157 /* validation_state.cpp in Sources */ = {isa = PBXBuildFile; fileRef = A926B7B027AC718900144157 /* validation_state.cpp */; }; - A926C10827AC718C00144157 /* validation_state.cpp in Sources */ = {isa = PBXBuildFile; fileRef = A926B7B027AC718900144157 /* validation_state.cpp */; }; - A926C10927AC718C00144157 /* validation_state.cpp in Sources */ = {isa = PBXBuildFile; fileRef = A926B7B027AC718900144157 /* validation_state.cpp */; }; - A926C10A27AC718C00144157 /* validate_primitives.cpp in Sources */ = {isa = PBXBuildFile; fileRef = A926B7B127AC718900144157 /* validate_primitives.cpp */; }; - A926C10B27AC718C00144157 /* validate_primitives.cpp in Sources */ = {isa = PBXBuildFile; fileRef = A926B7B127AC718900144157 /* validate_primitives.cpp */; }; - A926C10C27AC718C00144157 /* validate_primitives.cpp in Sources */ = {isa = PBXBuildFile; fileRef = A926B7B127AC718900144157 /* validate_primitives.cpp */; }; - A926C10D27AC718C00144157 /* decoration.h in Headers */ = {isa = PBXBuildFile; fileRef = A926B7B227AC718900144157 /* decoration.h */; }; - A926C10E27AC718C00144157 /* decoration.h in Headers */ = {isa = PBXBuildFile; fileRef = A926B7B227AC718900144157 /* decoration.h */; }; - A926C10F27AC718C00144157 /* decoration.h in Headers */ = {isa = PBXBuildFile; fileRef = A926B7B227AC718900144157 /* decoration.h */; }; A9717C0526EE8C570041AE82 /* spirv_cross_containers.hpp in Headers */ = {isa = PBXBuildFile; fileRef = A9717C0326EE8C570041AE82 /* spirv_cross_containers.hpp */; }; A9717C0626EE8C570041AE82 /* spirv_cross_containers.hpp in Headers */ = {isa = PBXBuildFile; fileRef = A9717C0326EE8C570041AE82 /* spirv_cross_containers.hpp */; }; A9717C0726EE8C570041AE82 /* spirv_cross_containers.hpp in Headers */ = {isa = PBXBuildFile; fileRef = A9717C0326EE8C570041AE82 /* spirv_cross_containers.hpp */; }; @@ -1632,6 +411,1293 @@ A997FB2726865A560006F71B /* Link.cpp in Sources */ = {isa = PBXBuildFile; fileRef = A997F9CD26865A550006F71B /* Link.cpp */; }; A997FB2826865A560006F71B /* Link.cpp in Sources */ = {isa = PBXBuildFile; fileRef = A997F9CD26865A550006F71B /* Link.cpp */; }; A997FB2926865A560006F71B /* Link.cpp in Sources */ = {isa = PBXBuildFile; fileRef = A997F9CD26865A550006F71B /* Link.cpp */; }; + A9F7B35929425A1800B30DA7 /* spirv_target_env.cpp in Sources */ = {isa = PBXBuildFile; fileRef = A9F7B00D29425A1700B30DA7 /* spirv_target_env.cpp */; }; + A9F7B35A29425A1800B30DA7 /* spirv_target_env.cpp in Sources */ = {isa = PBXBuildFile; fileRef = A9F7B00D29425A1700B30DA7 /* spirv_target_env.cpp */; }; + A9F7B35B29425A1800B30DA7 /* spirv_target_env.cpp in Sources */ = {isa = PBXBuildFile; fileRef = A9F7B00D29425A1700B30DA7 /* spirv_target_env.cpp */; }; + A9F7B35C29425A1800B30DA7 /* spirv_fuzzer_options.h in Headers */ = {isa = PBXBuildFile; fileRef = A9F7B00E29425A1700B30DA7 /* spirv_fuzzer_options.h */; }; + A9F7B35D29425A1800B30DA7 /* spirv_fuzzer_options.h in Headers */ = {isa = PBXBuildFile; fileRef = A9F7B00E29425A1700B30DA7 /* spirv_fuzzer_options.h */; }; + A9F7B35E29425A1800B30DA7 /* spirv_fuzzer_options.h in Headers */ = {isa = PBXBuildFile; fileRef = A9F7B00E29425A1700B30DA7 /* spirv_fuzzer_options.h */; }; + A9F7B35F29425A1800B30DA7 /* assembly_grammar.h in Headers */ = {isa = PBXBuildFile; fileRef = A9F7B00F29425A1700B30DA7 /* assembly_grammar.h */; }; + A9F7B36029425A1800B30DA7 /* assembly_grammar.h in Headers */ = {isa = PBXBuildFile; fileRef = A9F7B00F29425A1700B30DA7 /* assembly_grammar.h */; }; + A9F7B36129425A1800B30DA7 /* assembly_grammar.h in Headers */ = {isa = PBXBuildFile; fileRef = A9F7B00F29425A1700B30DA7 /* assembly_grammar.h */; }; + A9F7B36229425A1800B30DA7 /* lint_divergent_derivatives.cpp in Sources */ = {isa = PBXBuildFile; fileRef = A9F7B01229425A1700B30DA7 /* lint_divergent_derivatives.cpp */; }; + A9F7B36329425A1800B30DA7 /* lint_divergent_derivatives.cpp in Sources */ = {isa = PBXBuildFile; fileRef = A9F7B01229425A1700B30DA7 /* lint_divergent_derivatives.cpp */; }; + A9F7B36429425A1800B30DA7 /* lint_divergent_derivatives.cpp in Sources */ = {isa = PBXBuildFile; fileRef = A9F7B01229425A1700B30DA7 /* lint_divergent_derivatives.cpp */; }; + A9F7B36529425A1800B30DA7 /* linter.cpp in Sources */ = {isa = PBXBuildFile; fileRef = A9F7B01329425A1700B30DA7 /* linter.cpp */; }; + A9F7B36629425A1800B30DA7 /* linter.cpp in Sources */ = {isa = PBXBuildFile; fileRef = A9F7B01329425A1700B30DA7 /* linter.cpp */; }; + A9F7B36729425A1800B30DA7 /* linter.cpp in Sources */ = {isa = PBXBuildFile; fileRef = A9F7B01329425A1700B30DA7 /* linter.cpp */; }; + A9F7B36829425A1800B30DA7 /* divergence_analysis.cpp in Sources */ = {isa = PBXBuildFile; fileRef = A9F7B01429425A1700B30DA7 /* divergence_analysis.cpp */; }; + A9F7B36929425A1800B30DA7 /* divergence_analysis.cpp in Sources */ = {isa = PBXBuildFile; fileRef = A9F7B01429425A1700B30DA7 /* divergence_analysis.cpp */; }; + A9F7B36A29425A1800B30DA7 /* divergence_analysis.cpp in Sources */ = {isa = PBXBuildFile; fileRef = A9F7B01429425A1700B30DA7 /* divergence_analysis.cpp */; }; + A9F7B36B29425A1800B30DA7 /* lints.h in Headers */ = {isa = PBXBuildFile; fileRef = A9F7B01529425A1700B30DA7 /* lints.h */; }; + A9F7B36C29425A1800B30DA7 /* lints.h in Headers */ = {isa = PBXBuildFile; fileRef = A9F7B01529425A1700B30DA7 /* lints.h */; }; + A9F7B36D29425A1800B30DA7 /* lints.h in Headers */ = {isa = PBXBuildFile; fileRef = A9F7B01529425A1700B30DA7 /* lints.h */; }; + A9F7B36E29425A1800B30DA7 /* divergence_analysis.h in Headers */ = {isa = PBXBuildFile; fileRef = A9F7B01629425A1700B30DA7 /* divergence_analysis.h */; }; + A9F7B36F29425A1800B30DA7 /* divergence_analysis.h in Headers */ = {isa = PBXBuildFile; fileRef = A9F7B01629425A1700B30DA7 /* divergence_analysis.h */; }; + A9F7B37029425A1800B30DA7 /* divergence_analysis.h in Headers */ = {isa = PBXBuildFile; fileRef = A9F7B01629425A1700B30DA7 /* divergence_analysis.h */; }; + A9F7B37129425A1800B30DA7 /* enum_set.h in Headers */ = {isa = PBXBuildFile; fileRef = A9F7B01729425A1700B30DA7 /* enum_set.h */; }; + A9F7B37229425A1800B30DA7 /* enum_set.h in Headers */ = {isa = PBXBuildFile; fileRef = A9F7B01729425A1700B30DA7 /* enum_set.h */; }; + A9F7B37329425A1800B30DA7 /* enum_set.h in Headers */ = {isa = PBXBuildFile; fileRef = A9F7B01729425A1700B30DA7 /* enum_set.h */; }; + A9F7B37429425A1800B30DA7 /* text.cpp in Sources */ = {isa = PBXBuildFile; fileRef = A9F7B01929425A1700B30DA7 /* text.cpp */; }; + A9F7B37529425A1800B30DA7 /* text.cpp in Sources */ = {isa = PBXBuildFile; fileRef = A9F7B01929425A1700B30DA7 /* text.cpp */; }; + A9F7B37629425A1800B30DA7 /* text.cpp in Sources */ = {isa = PBXBuildFile; fileRef = A9F7B01929425A1700B30DA7 /* text.cpp */; }; + A9F7B37729425A1800B30DA7 /* assembly_grammar.cpp in Sources */ = {isa = PBXBuildFile; fileRef = A9F7B01A29425A1700B30DA7 /* assembly_grammar.cpp */; }; + A9F7B37829425A1800B30DA7 /* assembly_grammar.cpp in Sources */ = {isa = PBXBuildFile; fileRef = A9F7B01A29425A1700B30DA7 /* assembly_grammar.cpp */; }; + A9F7B37929425A1800B30DA7 /* assembly_grammar.cpp in Sources */ = {isa = PBXBuildFile; fileRef = A9F7B01A29425A1700B30DA7 /* assembly_grammar.cpp */; }; + A9F7B37A29425A1800B30DA7 /* text.h in Headers */ = {isa = PBXBuildFile; fileRef = A9F7B01B29425A1700B30DA7 /* text.h */; }; + A9F7B37B29425A1800B30DA7 /* text.h in Headers */ = {isa = PBXBuildFile; fileRef = A9F7B01B29425A1700B30DA7 /* text.h */; }; + A9F7B37C29425A1800B30DA7 /* text.h in Headers */ = {isa = PBXBuildFile; fileRef = A9F7B01B29425A1700B30DA7 /* text.h */; }; + A9F7B37D29425A1800B30DA7 /* extensions.cpp in Sources */ = {isa = PBXBuildFile; fileRef = A9F7B01C29425A1700B30DA7 /* extensions.cpp */; }; + A9F7B37E29425A1800B30DA7 /* extensions.cpp in Sources */ = {isa = PBXBuildFile; fileRef = A9F7B01C29425A1700B30DA7 /* extensions.cpp */; }; + A9F7B37F29425A1800B30DA7 /* extensions.cpp in Sources */ = {isa = PBXBuildFile; fileRef = A9F7B01C29425A1700B30DA7 /* extensions.cpp */; }; + A9F7B38029425A1800B30DA7 /* pch_source.cpp in Sources */ = {isa = PBXBuildFile; fileRef = A9F7B01D29425A1700B30DA7 /* pch_source.cpp */; }; + A9F7B38129425A1800B30DA7 /* pch_source.cpp in Sources */ = {isa = PBXBuildFile; fileRef = A9F7B01D29425A1700B30DA7 /* pch_source.cpp */; }; + A9F7B38229425A1800B30DA7 /* pch_source.cpp in Sources */ = {isa = PBXBuildFile; fileRef = A9F7B01D29425A1700B30DA7 /* pch_source.cpp */; }; + A9F7B38329425A1800B30DA7 /* parse_number.h in Headers */ = {isa = PBXBuildFile; fileRef = A9F7B01F29425A1700B30DA7 /* parse_number.h */; }; + A9F7B38429425A1800B30DA7 /* parse_number.h in Headers */ = {isa = PBXBuildFile; fileRef = A9F7B01F29425A1700B30DA7 /* parse_number.h */; }; + A9F7B38529425A1800B30DA7 /* parse_number.h in Headers */ = {isa = PBXBuildFile; fileRef = A9F7B01F29425A1700B30DA7 /* parse_number.h */; }; + A9F7B38629425A1800B30DA7 /* ilist_node.h in Headers */ = {isa = PBXBuildFile; fileRef = A9F7B02029425A1700B30DA7 /* ilist_node.h */; }; + A9F7B38729425A1800B30DA7 /* ilist_node.h in Headers */ = {isa = PBXBuildFile; fileRef = A9F7B02029425A1700B30DA7 /* ilist_node.h */; }; + A9F7B38829425A1800B30DA7 /* ilist_node.h in Headers */ = {isa = PBXBuildFile; fileRef = A9F7B02029425A1700B30DA7 /* ilist_node.h */; }; + A9F7B38929425A1800B30DA7 /* make_unique.h in Headers */ = {isa = PBXBuildFile; fileRef = A9F7B02129425A1700B30DA7 /* make_unique.h */; }; + A9F7B38A29425A1800B30DA7 /* make_unique.h in Headers */ = {isa = PBXBuildFile; fileRef = A9F7B02129425A1700B30DA7 /* make_unique.h */; }; + A9F7B38B29425A1800B30DA7 /* make_unique.h in Headers */ = {isa = PBXBuildFile; fileRef = A9F7B02129425A1700B30DA7 /* make_unique.h */; }; + A9F7B38C29425A1800B30DA7 /* string_utils.h in Headers */ = {isa = PBXBuildFile; fileRef = A9F7B02229425A1700B30DA7 /* string_utils.h */; }; + A9F7B38D29425A1800B30DA7 /* string_utils.h in Headers */ = {isa = PBXBuildFile; fileRef = A9F7B02229425A1700B30DA7 /* string_utils.h */; }; + A9F7B38E29425A1800B30DA7 /* string_utils.h in Headers */ = {isa = PBXBuildFile; fileRef = A9F7B02229425A1700B30DA7 /* string_utils.h */; }; + A9F7B38F29425A1800B30DA7 /* small_vector.h in Headers */ = {isa = PBXBuildFile; fileRef = A9F7B02329425A1700B30DA7 /* small_vector.h */; }; + A9F7B39029425A1800B30DA7 /* small_vector.h in Headers */ = {isa = PBXBuildFile; fileRef = A9F7B02329425A1700B30DA7 /* small_vector.h */; }; + A9F7B39129425A1800B30DA7 /* small_vector.h in Headers */ = {isa = PBXBuildFile; fileRef = A9F7B02329425A1700B30DA7 /* small_vector.h */; }; + A9F7B39229425A1800B30DA7 /* hash_combine.h in Headers */ = {isa = PBXBuildFile; fileRef = A9F7B02429425A1700B30DA7 /* hash_combine.h */; }; + A9F7B39329425A1800B30DA7 /* hash_combine.h in Headers */ = {isa = PBXBuildFile; fileRef = A9F7B02429425A1700B30DA7 /* hash_combine.h */; }; + A9F7B39429425A1800B30DA7 /* hash_combine.h in Headers */ = {isa = PBXBuildFile; fileRef = A9F7B02429425A1700B30DA7 /* hash_combine.h */; }; + A9F7B39529425A1800B30DA7 /* timer.cpp in Sources */ = {isa = PBXBuildFile; fileRef = A9F7B02529425A1700B30DA7 /* timer.cpp */; }; + A9F7B39629425A1800B30DA7 /* timer.cpp in Sources */ = {isa = PBXBuildFile; fileRef = A9F7B02529425A1700B30DA7 /* timer.cpp */; }; + A9F7B39729425A1800B30DA7 /* timer.cpp in Sources */ = {isa = PBXBuildFile; fileRef = A9F7B02529425A1700B30DA7 /* timer.cpp */; }; + A9F7B39829425A1800B30DA7 /* timer.h in Headers */ = {isa = PBXBuildFile; fileRef = A9F7B02629425A1700B30DA7 /* timer.h */; }; + A9F7B39929425A1800B30DA7 /* timer.h in Headers */ = {isa = PBXBuildFile; fileRef = A9F7B02629425A1700B30DA7 /* timer.h */; }; + A9F7B39A29425A1800B30DA7 /* timer.h in Headers */ = {isa = PBXBuildFile; fileRef = A9F7B02629425A1700B30DA7 /* timer.h */; }; + A9F7B39B29425A1800B30DA7 /* string_utils.cpp in Sources */ = {isa = PBXBuildFile; fileRef = A9F7B02729425A1700B30DA7 /* string_utils.cpp */; }; + A9F7B39C29425A1800B30DA7 /* string_utils.cpp in Sources */ = {isa = PBXBuildFile; fileRef = A9F7B02729425A1700B30DA7 /* string_utils.cpp */; }; + A9F7B39D29425A1800B30DA7 /* string_utils.cpp in Sources */ = {isa = PBXBuildFile; fileRef = A9F7B02729425A1700B30DA7 /* string_utils.cpp */; }; + A9F7B39E29425A1800B30DA7 /* bit_vector.h in Headers */ = {isa = PBXBuildFile; fileRef = A9F7B02829425A1700B30DA7 /* bit_vector.h */; }; + A9F7B39F29425A1800B30DA7 /* bit_vector.h in Headers */ = {isa = PBXBuildFile; fileRef = A9F7B02829425A1700B30DA7 /* bit_vector.h */; }; + A9F7B3A029425A1800B30DA7 /* bit_vector.h in Headers */ = {isa = PBXBuildFile; fileRef = A9F7B02829425A1700B30DA7 /* bit_vector.h */; }; + A9F7B3A129425A1800B30DA7 /* bitutils.h in Headers */ = {isa = PBXBuildFile; fileRef = A9F7B02929425A1700B30DA7 /* bitutils.h */; }; + A9F7B3A229425A1800B30DA7 /* bitutils.h in Headers */ = {isa = PBXBuildFile; fileRef = A9F7B02929425A1700B30DA7 /* bitutils.h */; }; + A9F7B3A329425A1800B30DA7 /* bitutils.h in Headers */ = {isa = PBXBuildFile; fileRef = A9F7B02929425A1700B30DA7 /* bitutils.h */; }; + A9F7B3A429425A1800B30DA7 /* hex_float.h in Headers */ = {isa = PBXBuildFile; fileRef = A9F7B02A29425A1700B30DA7 /* hex_float.h */; }; + A9F7B3A529425A1800B30DA7 /* hex_float.h in Headers */ = {isa = PBXBuildFile; fileRef = A9F7B02A29425A1700B30DA7 /* hex_float.h */; }; + A9F7B3A629425A1800B30DA7 /* hex_float.h in Headers */ = {isa = PBXBuildFile; fileRef = A9F7B02A29425A1700B30DA7 /* hex_float.h */; }; + A9F7B3A729425A1800B30DA7 /* parse_number.cpp in Sources */ = {isa = PBXBuildFile; fileRef = A9F7B02B29425A1700B30DA7 /* parse_number.cpp */; }; + A9F7B3A829425A1800B30DA7 /* parse_number.cpp in Sources */ = {isa = PBXBuildFile; fileRef = A9F7B02B29425A1700B30DA7 /* parse_number.cpp */; }; + A9F7B3A929425A1800B30DA7 /* parse_number.cpp in Sources */ = {isa = PBXBuildFile; fileRef = A9F7B02B29425A1700B30DA7 /* parse_number.cpp */; }; + A9F7B3AA29425A1800B30DA7 /* bit_vector.cpp in Sources */ = {isa = PBXBuildFile; fileRef = A9F7B02C29425A1700B30DA7 /* bit_vector.cpp */; }; + A9F7B3AB29425A1800B30DA7 /* bit_vector.cpp in Sources */ = {isa = PBXBuildFile; fileRef = A9F7B02C29425A1700B30DA7 /* bit_vector.cpp */; }; + A9F7B3AC29425A1800B30DA7 /* bit_vector.cpp in Sources */ = {isa = PBXBuildFile; fileRef = A9F7B02C29425A1700B30DA7 /* bit_vector.cpp */; }; + A9F7B3AD29425A1800B30DA7 /* ilist.h in Headers */ = {isa = PBXBuildFile; fileRef = A9F7B02D29425A1700B30DA7 /* ilist.h */; }; + A9F7B3AE29425A1800B30DA7 /* ilist.h in Headers */ = {isa = PBXBuildFile; fileRef = A9F7B02D29425A1700B30DA7 /* ilist.h */; }; + A9F7B3AF29425A1800B30DA7 /* ilist.h in Headers */ = {isa = PBXBuildFile; fileRef = A9F7B02D29425A1700B30DA7 /* ilist.h */; }; + A9F7B3B029425A1800B30DA7 /* spirv_target_env.h in Headers */ = {isa = PBXBuildFile; fileRef = A9F7B02E29425A1700B30DA7 /* spirv_target_env.h */; }; + A9F7B3B129425A1800B30DA7 /* spirv_target_env.h in Headers */ = {isa = PBXBuildFile; fileRef = A9F7B02E29425A1700B30DA7 /* spirv_target_env.h */; }; + A9F7B3B229425A1800B30DA7 /* spirv_target_env.h in Headers */ = {isa = PBXBuildFile; fileRef = A9F7B02E29425A1700B30DA7 /* spirv_target_env.h */; }; + A9F7B3B329425A1800B30DA7 /* table.cpp in Sources */ = {isa = PBXBuildFile; fileRef = A9F7B02F29425A1700B30DA7 /* table.cpp */; }; + A9F7B3B429425A1800B30DA7 /* table.cpp in Sources */ = {isa = PBXBuildFile; fileRef = A9F7B02F29425A1700B30DA7 /* table.cpp */; }; + A9F7B3B529425A1800B30DA7 /* table.cpp in Sources */ = {isa = PBXBuildFile; fileRef = A9F7B02F29425A1700B30DA7 /* table.cpp */; }; + A9F7B3B629425A1800B30DA7 /* operand_to_undef_reduction_opportunity_finder.h in Headers */ = {isa = PBXBuildFile; fileRef = A9F7B03129425A1700B30DA7 /* operand_to_undef_reduction_opportunity_finder.h */; }; + A9F7B3B729425A1800B30DA7 /* operand_to_undef_reduction_opportunity_finder.h in Headers */ = {isa = PBXBuildFile; fileRef = A9F7B03129425A1700B30DA7 /* operand_to_undef_reduction_opportunity_finder.h */; }; + A9F7B3B829425A1800B30DA7 /* operand_to_undef_reduction_opportunity_finder.h in Headers */ = {isa = PBXBuildFile; fileRef = A9F7B03129425A1700B30DA7 /* operand_to_undef_reduction_opportunity_finder.h */; }; + A9F7B3B929425A1800B30DA7 /* remove_selection_reduction_opportunity.cpp in Sources */ = {isa = PBXBuildFile; fileRef = A9F7B03229425A1700B30DA7 /* remove_selection_reduction_opportunity.cpp */; }; + A9F7B3BA29425A1800B30DA7 /* remove_selection_reduction_opportunity.cpp in Sources */ = {isa = PBXBuildFile; fileRef = A9F7B03229425A1700B30DA7 /* remove_selection_reduction_opportunity.cpp */; }; + A9F7B3BB29425A1800B30DA7 /* remove_selection_reduction_opportunity.cpp in Sources */ = {isa = PBXBuildFile; fileRef = A9F7B03229425A1700B30DA7 /* remove_selection_reduction_opportunity.cpp */; }; + A9F7B3BC29425A1800B30DA7 /* remove_block_reduction_opportunity.h in Headers */ = {isa = PBXBuildFile; fileRef = A9F7B03329425A1700B30DA7 /* remove_block_reduction_opportunity.h */; }; + A9F7B3BD29425A1800B30DA7 /* remove_block_reduction_opportunity.h in Headers */ = {isa = PBXBuildFile; fileRef = A9F7B03329425A1700B30DA7 /* remove_block_reduction_opportunity.h */; }; + A9F7B3BE29425A1800B30DA7 /* remove_block_reduction_opportunity.h in Headers */ = {isa = PBXBuildFile; fileRef = A9F7B03329425A1700B30DA7 /* remove_block_reduction_opportunity.h */; }; + A9F7B3BF29425A1800B30DA7 /* operand_to_dominating_id_reduction_opportunity_finder.h in Headers */ = {isa = PBXBuildFile; fileRef = A9F7B03429425A1700B30DA7 /* operand_to_dominating_id_reduction_opportunity_finder.h */; }; + A9F7B3C029425A1800B30DA7 /* operand_to_dominating_id_reduction_opportunity_finder.h in Headers */ = {isa = PBXBuildFile; fileRef = A9F7B03429425A1700B30DA7 /* operand_to_dominating_id_reduction_opportunity_finder.h */; }; + A9F7B3C129425A1800B30DA7 /* operand_to_dominating_id_reduction_opportunity_finder.h in Headers */ = {isa = PBXBuildFile; fileRef = A9F7B03429425A1700B30DA7 /* operand_to_dominating_id_reduction_opportunity_finder.h */; }; + A9F7B3C229425A1800B30DA7 /* reduction_pass.cpp in Sources */ = {isa = PBXBuildFile; fileRef = A9F7B03529425A1700B30DA7 /* reduction_pass.cpp */; }; + A9F7B3C329425A1800B30DA7 /* reduction_pass.cpp in Sources */ = {isa = PBXBuildFile; fileRef = A9F7B03529425A1700B30DA7 /* reduction_pass.cpp */; }; + A9F7B3C429425A1800B30DA7 /* reduction_pass.cpp in Sources */ = {isa = PBXBuildFile; fileRef = A9F7B03529425A1700B30DA7 /* reduction_pass.cpp */; }; + A9F7B3C529425A1800B30DA7 /* structured_construct_to_block_reduction_opportunity.h in Headers */ = {isa = PBXBuildFile; fileRef = A9F7B03629425A1700B30DA7 /* structured_construct_to_block_reduction_opportunity.h */; }; + A9F7B3C629425A1800B30DA7 /* structured_construct_to_block_reduction_opportunity.h in Headers */ = {isa = PBXBuildFile; fileRef = A9F7B03629425A1700B30DA7 /* structured_construct_to_block_reduction_opportunity.h */; }; + A9F7B3C729425A1800B30DA7 /* structured_construct_to_block_reduction_opportunity.h in Headers */ = {isa = PBXBuildFile; fileRef = A9F7B03629425A1700B30DA7 /* structured_construct_to_block_reduction_opportunity.h */; }; + A9F7B3C829425A1800B30DA7 /* operand_to_const_reduction_opportunity_finder.cpp in Sources */ = {isa = PBXBuildFile; fileRef = A9F7B03729425A1700B30DA7 /* operand_to_const_reduction_opportunity_finder.cpp */; }; + A9F7B3C929425A1800B30DA7 /* operand_to_const_reduction_opportunity_finder.cpp in Sources */ = {isa = PBXBuildFile; fileRef = A9F7B03729425A1700B30DA7 /* operand_to_const_reduction_opportunity_finder.cpp */; }; + A9F7B3CA29425A1800B30DA7 /* operand_to_const_reduction_opportunity_finder.cpp in Sources */ = {isa = PBXBuildFile; fileRef = A9F7B03729425A1700B30DA7 /* operand_to_const_reduction_opportunity_finder.cpp */; }; + A9F7B3CB29425A1800B30DA7 /* operand_to_const_reduction_opportunity_finder.h in Headers */ = {isa = PBXBuildFile; fileRef = A9F7B03829425A1700B30DA7 /* operand_to_const_reduction_opportunity_finder.h */; }; + A9F7B3CC29425A1800B30DA7 /* operand_to_const_reduction_opportunity_finder.h in Headers */ = {isa = PBXBuildFile; fileRef = A9F7B03829425A1700B30DA7 /* operand_to_const_reduction_opportunity_finder.h */; }; + A9F7B3CD29425A1800B30DA7 /* operand_to_const_reduction_opportunity_finder.h in Headers */ = {isa = PBXBuildFile; fileRef = A9F7B03829425A1700B30DA7 /* operand_to_const_reduction_opportunity_finder.h */; }; + A9F7B3CE29425A1800B30DA7 /* reduction_util.cpp in Sources */ = {isa = PBXBuildFile; fileRef = A9F7B03A29425A1700B30DA7 /* reduction_util.cpp */; }; + A9F7B3CF29425A1800B30DA7 /* reduction_util.cpp in Sources */ = {isa = PBXBuildFile; fileRef = A9F7B03A29425A1700B30DA7 /* reduction_util.cpp */; }; + A9F7B3D029425A1800B30DA7 /* reduction_util.cpp in Sources */ = {isa = PBXBuildFile; fileRef = A9F7B03A29425A1700B30DA7 /* reduction_util.cpp */; }; + A9F7B3D129425A1800B30DA7 /* structured_construct_to_block_reduction_opportunity_finder.h in Headers */ = {isa = PBXBuildFile; fileRef = A9F7B03B29425A1700B30DA7 /* structured_construct_to_block_reduction_opportunity_finder.h */; }; + A9F7B3D229425A1800B30DA7 /* structured_construct_to_block_reduction_opportunity_finder.h in Headers */ = {isa = PBXBuildFile; fileRef = A9F7B03B29425A1700B30DA7 /* structured_construct_to_block_reduction_opportunity_finder.h */; }; + A9F7B3D329425A1800B30DA7 /* structured_construct_to_block_reduction_opportunity_finder.h in Headers */ = {isa = PBXBuildFile; fileRef = A9F7B03B29425A1700B30DA7 /* structured_construct_to_block_reduction_opportunity_finder.h */; }; + A9F7B3D429425A1800B30DA7 /* structured_loop_to_selection_reduction_opportunity_finder.cpp in Sources */ = {isa = PBXBuildFile; fileRef = A9F7B03C29425A1700B30DA7 /* structured_loop_to_selection_reduction_opportunity_finder.cpp */; }; + A9F7B3D529425A1800B30DA7 /* structured_loop_to_selection_reduction_opportunity_finder.cpp in Sources */ = {isa = PBXBuildFile; fileRef = A9F7B03C29425A1700B30DA7 /* structured_loop_to_selection_reduction_opportunity_finder.cpp */; }; + A9F7B3D629425A1800B30DA7 /* structured_loop_to_selection_reduction_opportunity_finder.cpp in Sources */ = {isa = PBXBuildFile; fileRef = A9F7B03C29425A1700B30DA7 /* structured_loop_to_selection_reduction_opportunity_finder.cpp */; }; + A9F7B3D729425A1800B30DA7 /* simple_conditional_branch_to_branch_reduction_opportunity.h in Headers */ = {isa = PBXBuildFile; fileRef = A9F7B03D29425A1700B30DA7 /* simple_conditional_branch_to_branch_reduction_opportunity.h */; }; + A9F7B3D829425A1800B30DA7 /* simple_conditional_branch_to_branch_reduction_opportunity.h in Headers */ = {isa = PBXBuildFile; fileRef = A9F7B03D29425A1700B30DA7 /* simple_conditional_branch_to_branch_reduction_opportunity.h */; }; + A9F7B3D929425A1800B30DA7 /* simple_conditional_branch_to_branch_reduction_opportunity.h in Headers */ = {isa = PBXBuildFile; fileRef = A9F7B03D29425A1700B30DA7 /* simple_conditional_branch_to_branch_reduction_opportunity.h */; }; + A9F7B3DA29425A1800B30DA7 /* remove_function_reduction_opportunity_finder.cpp in Sources */ = {isa = PBXBuildFile; fileRef = A9F7B03E29425A1700B30DA7 /* remove_function_reduction_opportunity_finder.cpp */; }; + A9F7B3DB29425A1800B30DA7 /* remove_function_reduction_opportunity_finder.cpp in Sources */ = {isa = PBXBuildFile; fileRef = A9F7B03E29425A1700B30DA7 /* remove_function_reduction_opportunity_finder.cpp */; }; + A9F7B3DC29425A1800B30DA7 /* remove_function_reduction_opportunity_finder.cpp in Sources */ = {isa = PBXBuildFile; fileRef = A9F7B03E29425A1700B30DA7 /* remove_function_reduction_opportunity_finder.cpp */; }; + A9F7B3DD29425A1800B30DA7 /* remove_instruction_reduction_opportunity.h in Headers */ = {isa = PBXBuildFile; fileRef = A9F7B03F29425A1700B30DA7 /* remove_instruction_reduction_opportunity.h */; }; + A9F7B3DE29425A1800B30DA7 /* remove_instruction_reduction_opportunity.h in Headers */ = {isa = PBXBuildFile; fileRef = A9F7B03F29425A1700B30DA7 /* remove_instruction_reduction_opportunity.h */; }; + A9F7B3DF29425A1800B30DA7 /* remove_instruction_reduction_opportunity.h in Headers */ = {isa = PBXBuildFile; fileRef = A9F7B03F29425A1700B30DA7 /* remove_instruction_reduction_opportunity.h */; }; + A9F7B3E029425A1800B30DA7 /* conditional_branch_to_simple_conditional_branch_reduction_opportunity.h in Headers */ = {isa = PBXBuildFile; fileRef = A9F7B04029425A1700B30DA7 /* conditional_branch_to_simple_conditional_branch_reduction_opportunity.h */; }; + A9F7B3E129425A1800B30DA7 /* conditional_branch_to_simple_conditional_branch_reduction_opportunity.h in Headers */ = {isa = PBXBuildFile; fileRef = A9F7B04029425A1700B30DA7 /* conditional_branch_to_simple_conditional_branch_reduction_opportunity.h */; }; + A9F7B3E229425A1800B30DA7 /* conditional_branch_to_simple_conditional_branch_reduction_opportunity.h in Headers */ = {isa = PBXBuildFile; fileRef = A9F7B04029425A1700B30DA7 /* conditional_branch_to_simple_conditional_branch_reduction_opportunity.h */; }; + A9F7B3E329425A1800B30DA7 /* simple_conditional_branch_to_branch_reduction_opportunity.cpp in Sources */ = {isa = PBXBuildFile; fileRef = A9F7B04129425A1700B30DA7 /* simple_conditional_branch_to_branch_reduction_opportunity.cpp */; }; + A9F7B3E429425A1800B30DA7 /* simple_conditional_branch_to_branch_reduction_opportunity.cpp in Sources */ = {isa = PBXBuildFile; fileRef = A9F7B04129425A1700B30DA7 /* simple_conditional_branch_to_branch_reduction_opportunity.cpp */; }; + A9F7B3E529425A1800B30DA7 /* simple_conditional_branch_to_branch_reduction_opportunity.cpp in Sources */ = {isa = PBXBuildFile; fileRef = A9F7B04129425A1700B30DA7 /* simple_conditional_branch_to_branch_reduction_opportunity.cpp */; }; + A9F7B3E629425A1800B30DA7 /* remove_function_reduction_opportunity.cpp in Sources */ = {isa = PBXBuildFile; fileRef = A9F7B04229425A1700B30DA7 /* remove_function_reduction_opportunity.cpp */; }; + A9F7B3E729425A1800B30DA7 /* remove_function_reduction_opportunity.cpp in Sources */ = {isa = PBXBuildFile; fileRef = A9F7B04229425A1700B30DA7 /* remove_function_reduction_opportunity.cpp */; }; + A9F7B3E829425A1800B30DA7 /* remove_function_reduction_opportunity.cpp in Sources */ = {isa = PBXBuildFile; fileRef = A9F7B04229425A1700B30DA7 /* remove_function_reduction_opportunity.cpp */; }; + A9F7B3E929425A1800B30DA7 /* simple_conditional_branch_to_branch_opportunity_finder.cpp in Sources */ = {isa = PBXBuildFile; fileRef = A9F7B04329425A1700B30DA7 /* simple_conditional_branch_to_branch_opportunity_finder.cpp */; }; + A9F7B3EA29425A1800B30DA7 /* simple_conditional_branch_to_branch_opportunity_finder.cpp in Sources */ = {isa = PBXBuildFile; fileRef = A9F7B04329425A1700B30DA7 /* simple_conditional_branch_to_branch_opportunity_finder.cpp */; }; + A9F7B3EB29425A1800B30DA7 /* simple_conditional_branch_to_branch_opportunity_finder.cpp in Sources */ = {isa = PBXBuildFile; fileRef = A9F7B04329425A1700B30DA7 /* simple_conditional_branch_to_branch_opportunity_finder.cpp */; }; + A9F7B3EC29425A1800B30DA7 /* remove_selection_reduction_opportunity_finder.cpp in Sources */ = {isa = PBXBuildFile; fileRef = A9F7B04429425A1700B30DA7 /* remove_selection_reduction_opportunity_finder.cpp */; }; + A9F7B3ED29425A1800B30DA7 /* remove_selection_reduction_opportunity_finder.cpp in Sources */ = {isa = PBXBuildFile; fileRef = A9F7B04429425A1700B30DA7 /* remove_selection_reduction_opportunity_finder.cpp */; }; + A9F7B3EE29425A1800B30DA7 /* remove_selection_reduction_opportunity_finder.cpp in Sources */ = {isa = PBXBuildFile; fileRef = A9F7B04429425A1700B30DA7 /* remove_selection_reduction_opportunity_finder.cpp */; }; + A9F7B3EF29425A1800B30DA7 /* conditional_branch_to_simple_conditional_branch_reduction_opportunity.cpp in Sources */ = {isa = PBXBuildFile; fileRef = A9F7B04529425A1700B30DA7 /* conditional_branch_to_simple_conditional_branch_reduction_opportunity.cpp */; }; + A9F7B3F029425A1800B30DA7 /* conditional_branch_to_simple_conditional_branch_reduction_opportunity.cpp in Sources */ = {isa = PBXBuildFile; fileRef = A9F7B04529425A1700B30DA7 /* conditional_branch_to_simple_conditional_branch_reduction_opportunity.cpp */; }; + A9F7B3F129425A1800B30DA7 /* conditional_branch_to_simple_conditional_branch_reduction_opportunity.cpp in Sources */ = {isa = PBXBuildFile; fileRef = A9F7B04529425A1700B30DA7 /* conditional_branch_to_simple_conditional_branch_reduction_opportunity.cpp */; }; + A9F7B3F229425A1800B30DA7 /* remove_struct_member_reduction_opportunity.h in Headers */ = {isa = PBXBuildFile; fileRef = A9F7B04629425A1700B30DA7 /* remove_struct_member_reduction_opportunity.h */; }; + A9F7B3F329425A1800B30DA7 /* remove_struct_member_reduction_opportunity.h in Headers */ = {isa = PBXBuildFile; fileRef = A9F7B04629425A1700B30DA7 /* remove_struct_member_reduction_opportunity.h */; }; + A9F7B3F429425A1800B30DA7 /* remove_struct_member_reduction_opportunity.h in Headers */ = {isa = PBXBuildFile; fileRef = A9F7B04629425A1700B30DA7 /* remove_struct_member_reduction_opportunity.h */; }; + A9F7B3F529425A1800B30DA7 /* simple_conditional_branch_to_branch_opportunity_finder.h in Headers */ = {isa = PBXBuildFile; fileRef = A9F7B04729425A1700B30DA7 /* simple_conditional_branch_to_branch_opportunity_finder.h */; }; + A9F7B3F629425A1800B30DA7 /* simple_conditional_branch_to_branch_opportunity_finder.h in Headers */ = {isa = PBXBuildFile; fileRef = A9F7B04729425A1700B30DA7 /* simple_conditional_branch_to_branch_opportunity_finder.h */; }; + A9F7B3F729425A1800B30DA7 /* simple_conditional_branch_to_branch_opportunity_finder.h in Headers */ = {isa = PBXBuildFile; fileRef = A9F7B04729425A1700B30DA7 /* simple_conditional_branch_to_branch_opportunity_finder.h */; }; + A9F7B3F829425A1800B30DA7 /* merge_blocks_reduction_opportunity.cpp in Sources */ = {isa = PBXBuildFile; fileRef = A9F7B04829425A1700B30DA7 /* merge_blocks_reduction_opportunity.cpp */; }; + A9F7B3F929425A1800B30DA7 /* merge_blocks_reduction_opportunity.cpp in Sources */ = {isa = PBXBuildFile; fileRef = A9F7B04829425A1700B30DA7 /* merge_blocks_reduction_opportunity.cpp */; }; + A9F7B3FA29425A1800B30DA7 /* merge_blocks_reduction_opportunity.cpp in Sources */ = {isa = PBXBuildFile; fileRef = A9F7B04829425A1700B30DA7 /* merge_blocks_reduction_opportunity.cpp */; }; + A9F7B3FB29425A1800B30DA7 /* change_operand_reduction_opportunity.cpp in Sources */ = {isa = PBXBuildFile; fileRef = A9F7B04929425A1700B30DA7 /* change_operand_reduction_opportunity.cpp */; }; + A9F7B3FC29425A1800B30DA7 /* change_operand_reduction_opportunity.cpp in Sources */ = {isa = PBXBuildFile; fileRef = A9F7B04929425A1700B30DA7 /* change_operand_reduction_opportunity.cpp */; }; + A9F7B3FD29425A1800B30DA7 /* change_operand_reduction_opportunity.cpp in Sources */ = {isa = PBXBuildFile; fileRef = A9F7B04929425A1700B30DA7 /* change_operand_reduction_opportunity.cpp */; }; + A9F7B3FE29425A1800B30DA7 /* structured_loop_to_selection_reduction_opportunity.h in Headers */ = {isa = PBXBuildFile; fileRef = A9F7B04A29425A1700B30DA7 /* structured_loop_to_selection_reduction_opportunity.h */; }; + A9F7B3FF29425A1800B30DA7 /* structured_loop_to_selection_reduction_opportunity.h in Headers */ = {isa = PBXBuildFile; fileRef = A9F7B04A29425A1700B30DA7 /* structured_loop_to_selection_reduction_opportunity.h */; }; + A9F7B40029425A1800B30DA7 /* structured_loop_to_selection_reduction_opportunity.h in Headers */ = {isa = PBXBuildFile; fileRef = A9F7B04A29425A1700B30DA7 /* structured_loop_to_selection_reduction_opportunity.h */; }; + A9F7B40129425A1800B30DA7 /* remove_function_reduction_opportunity.h in Headers */ = {isa = PBXBuildFile; fileRef = A9F7B04B29425A1700B30DA7 /* remove_function_reduction_opportunity.h */; }; + A9F7B40229425A1800B30DA7 /* remove_function_reduction_opportunity.h in Headers */ = {isa = PBXBuildFile; fileRef = A9F7B04B29425A1700B30DA7 /* remove_function_reduction_opportunity.h */; }; + A9F7B40329425A1800B30DA7 /* remove_function_reduction_opportunity.h in Headers */ = {isa = PBXBuildFile; fileRef = A9F7B04B29425A1700B30DA7 /* remove_function_reduction_opportunity.h */; }; + A9F7B40429425A1800B30DA7 /* remove_unused_instruction_reduction_opportunity_finder.h in Headers */ = {isa = PBXBuildFile; fileRef = A9F7B04C29425A1700B30DA7 /* remove_unused_instruction_reduction_opportunity_finder.h */; }; + A9F7B40529425A1800B30DA7 /* remove_unused_instruction_reduction_opportunity_finder.h in Headers */ = {isa = PBXBuildFile; fileRef = A9F7B04C29425A1700B30DA7 /* remove_unused_instruction_reduction_opportunity_finder.h */; }; + A9F7B40629425A1800B30DA7 /* remove_unused_instruction_reduction_opportunity_finder.h in Headers */ = {isa = PBXBuildFile; fileRef = A9F7B04C29425A1700B30DA7 /* remove_unused_instruction_reduction_opportunity_finder.h */; }; + A9F7B40729425A1800B30DA7 /* change_operand_to_undef_reduction_opportunity.h in Headers */ = {isa = PBXBuildFile; fileRef = A9F7B04D29425A1700B30DA7 /* change_operand_to_undef_reduction_opportunity.h */; }; + A9F7B40829425A1800B30DA7 /* change_operand_to_undef_reduction_opportunity.h in Headers */ = {isa = PBXBuildFile; fileRef = A9F7B04D29425A1700B30DA7 /* change_operand_to_undef_reduction_opportunity.h */; }; + A9F7B40929425A1800B30DA7 /* change_operand_to_undef_reduction_opportunity.h in Headers */ = {isa = PBXBuildFile; fileRef = A9F7B04D29425A1700B30DA7 /* change_operand_to_undef_reduction_opportunity.h */; }; + A9F7B40A29425A1800B30DA7 /* structured_loop_to_selection_reduction_opportunity_finder.h in Headers */ = {isa = PBXBuildFile; fileRef = A9F7B04E29425A1700B30DA7 /* structured_loop_to_selection_reduction_opportunity_finder.h */; }; + A9F7B40B29425A1800B30DA7 /* structured_loop_to_selection_reduction_opportunity_finder.h in Headers */ = {isa = PBXBuildFile; fileRef = A9F7B04E29425A1700B30DA7 /* structured_loop_to_selection_reduction_opportunity_finder.h */; }; + A9F7B40C29425A1800B30DA7 /* structured_loop_to_selection_reduction_opportunity_finder.h in Headers */ = {isa = PBXBuildFile; fileRef = A9F7B04E29425A1700B30DA7 /* structured_loop_to_selection_reduction_opportunity_finder.h */; }; + A9F7B40D29425A1800B30DA7 /* remove_selection_reduction_opportunity.h in Headers */ = {isa = PBXBuildFile; fileRef = A9F7B04F29425A1700B30DA7 /* remove_selection_reduction_opportunity.h */; }; + A9F7B40E29425A1800B30DA7 /* remove_selection_reduction_opportunity.h in Headers */ = {isa = PBXBuildFile; fileRef = A9F7B04F29425A1700B30DA7 /* remove_selection_reduction_opportunity.h */; }; + A9F7B40F29425A1800B30DA7 /* remove_selection_reduction_opportunity.h in Headers */ = {isa = PBXBuildFile; fileRef = A9F7B04F29425A1700B30DA7 /* remove_selection_reduction_opportunity.h */; }; + A9F7B41029425A1800B30DA7 /* remove_instruction_reduction_opportunity.cpp in Sources */ = {isa = PBXBuildFile; fileRef = A9F7B05029425A1700B30DA7 /* remove_instruction_reduction_opportunity.cpp */; }; + A9F7B41129425A1800B30DA7 /* remove_instruction_reduction_opportunity.cpp in Sources */ = {isa = PBXBuildFile; fileRef = A9F7B05029425A1700B30DA7 /* remove_instruction_reduction_opportunity.cpp */; }; + A9F7B41229425A1800B30DA7 /* remove_instruction_reduction_opportunity.cpp in Sources */ = {isa = PBXBuildFile; fileRef = A9F7B05029425A1700B30DA7 /* remove_instruction_reduction_opportunity.cpp */; }; + A9F7B41329425A1800B30DA7 /* remove_selection_reduction_opportunity_finder.h in Headers */ = {isa = PBXBuildFile; fileRef = A9F7B05129425A1700B30DA7 /* remove_selection_reduction_opportunity_finder.h */; }; + A9F7B41429425A1800B30DA7 /* remove_selection_reduction_opportunity_finder.h in Headers */ = {isa = PBXBuildFile; fileRef = A9F7B05129425A1700B30DA7 /* remove_selection_reduction_opportunity_finder.h */; }; + A9F7B41529425A1800B30DA7 /* remove_selection_reduction_opportunity_finder.h in Headers */ = {isa = PBXBuildFile; fileRef = A9F7B05129425A1700B30DA7 /* remove_selection_reduction_opportunity_finder.h */; }; + A9F7B41629425A1800B30DA7 /* merge_blocks_reduction_opportunity_finder.h in Headers */ = {isa = PBXBuildFile; fileRef = A9F7B05229425A1700B30DA7 /* merge_blocks_reduction_opportunity_finder.h */; }; + A9F7B41729425A1800B30DA7 /* merge_blocks_reduction_opportunity_finder.h in Headers */ = {isa = PBXBuildFile; fileRef = A9F7B05229425A1700B30DA7 /* merge_blocks_reduction_opportunity_finder.h */; }; + A9F7B41829425A1800B30DA7 /* merge_blocks_reduction_opportunity_finder.h in Headers */ = {isa = PBXBuildFile; fileRef = A9F7B05229425A1700B30DA7 /* merge_blocks_reduction_opportunity_finder.h */; }; + A9F7B41929425A1800B30DA7 /* pch_source_reduce.cpp in Sources */ = {isa = PBXBuildFile; fileRef = A9F7B05329425A1700B30DA7 /* pch_source_reduce.cpp */; }; + A9F7B41A29425A1800B30DA7 /* pch_source_reduce.cpp in Sources */ = {isa = PBXBuildFile; fileRef = A9F7B05329425A1700B30DA7 /* pch_source_reduce.cpp */; }; + A9F7B41B29425A1800B30DA7 /* pch_source_reduce.cpp in Sources */ = {isa = PBXBuildFile; fileRef = A9F7B05329425A1700B30DA7 /* pch_source_reduce.cpp */; }; + A9F7B41C29425A1800B30DA7 /* remove_struct_member_reduction_opportunity.cpp in Sources */ = {isa = PBXBuildFile; fileRef = A9F7B05429425A1700B30DA7 /* remove_struct_member_reduction_opportunity.cpp */; }; + A9F7B41D29425A1800B30DA7 /* remove_struct_member_reduction_opportunity.cpp in Sources */ = {isa = PBXBuildFile; fileRef = A9F7B05429425A1700B30DA7 /* remove_struct_member_reduction_opportunity.cpp */; }; + A9F7B41E29425A1800B30DA7 /* remove_struct_member_reduction_opportunity.cpp in Sources */ = {isa = PBXBuildFile; fileRef = A9F7B05429425A1700B30DA7 /* remove_struct_member_reduction_opportunity.cpp */; }; + A9F7B41F29425A1800B30DA7 /* remove_unused_struct_member_reduction_opportunity_finder.h in Headers */ = {isa = PBXBuildFile; fileRef = A9F7B05529425A1700B30DA7 /* remove_unused_struct_member_reduction_opportunity_finder.h */; }; + A9F7B42029425A1800B30DA7 /* remove_unused_struct_member_reduction_opportunity_finder.h in Headers */ = {isa = PBXBuildFile; fileRef = A9F7B05529425A1700B30DA7 /* remove_unused_struct_member_reduction_opportunity_finder.h */; }; + A9F7B42129425A1800B30DA7 /* remove_unused_struct_member_reduction_opportunity_finder.h in Headers */ = {isa = PBXBuildFile; fileRef = A9F7B05529425A1700B30DA7 /* remove_unused_struct_member_reduction_opportunity_finder.h */; }; + A9F7B42229425A1800B30DA7 /* remove_unused_instruction_reduction_opportunity_finder.cpp in Sources */ = {isa = PBXBuildFile; fileRef = A9F7B05629425A1700B30DA7 /* remove_unused_instruction_reduction_opportunity_finder.cpp */; }; + A9F7B42329425A1800B30DA7 /* remove_unused_instruction_reduction_opportunity_finder.cpp in Sources */ = {isa = PBXBuildFile; fileRef = A9F7B05629425A1700B30DA7 /* remove_unused_instruction_reduction_opportunity_finder.cpp */; }; + A9F7B42429425A1800B30DA7 /* remove_unused_instruction_reduction_opportunity_finder.cpp in Sources */ = {isa = PBXBuildFile; fileRef = A9F7B05629425A1700B30DA7 /* remove_unused_instruction_reduction_opportunity_finder.cpp */; }; + A9F7B42529425A1800B30DA7 /* reducer.cpp in Sources */ = {isa = PBXBuildFile; fileRef = A9F7B05729425A1700B30DA7 /* reducer.cpp */; }; + A9F7B42629425A1800B30DA7 /* reducer.cpp in Sources */ = {isa = PBXBuildFile; fileRef = A9F7B05729425A1700B30DA7 /* reducer.cpp */; }; + A9F7B42729425A1800B30DA7 /* reducer.cpp in Sources */ = {isa = PBXBuildFile; fileRef = A9F7B05729425A1700B30DA7 /* reducer.cpp */; }; + A9F7B42829425A1800B30DA7 /* operand_to_undef_reduction_opportunity_finder.cpp in Sources */ = {isa = PBXBuildFile; fileRef = A9F7B05829425A1700B30DA7 /* operand_to_undef_reduction_opportunity_finder.cpp */; }; + A9F7B42929425A1800B30DA7 /* operand_to_undef_reduction_opportunity_finder.cpp in Sources */ = {isa = PBXBuildFile; fileRef = A9F7B05829425A1700B30DA7 /* operand_to_undef_reduction_opportunity_finder.cpp */; }; + A9F7B42A29425A1800B30DA7 /* operand_to_undef_reduction_opportunity_finder.cpp in Sources */ = {isa = PBXBuildFile; fileRef = A9F7B05829425A1700B30DA7 /* operand_to_undef_reduction_opportunity_finder.cpp */; }; + A9F7B42B29425A1800B30DA7 /* remove_function_reduction_opportunity_finder.h in Headers */ = {isa = PBXBuildFile; fileRef = A9F7B05929425A1700B30DA7 /* remove_function_reduction_opportunity_finder.h */; }; + A9F7B42C29425A1800B30DA7 /* remove_function_reduction_opportunity_finder.h in Headers */ = {isa = PBXBuildFile; fileRef = A9F7B05929425A1700B30DA7 /* remove_function_reduction_opportunity_finder.h */; }; + A9F7B42D29425A1800B30DA7 /* remove_function_reduction_opportunity_finder.h in Headers */ = {isa = PBXBuildFile; fileRef = A9F7B05929425A1700B30DA7 /* remove_function_reduction_opportunity_finder.h */; }; + A9F7B42E29425A1800B30DA7 /* pch_source_reduce.h in Headers */ = {isa = PBXBuildFile; fileRef = A9F7B05A29425A1700B30DA7 /* pch_source_reduce.h */; }; + A9F7B42F29425A1800B30DA7 /* pch_source_reduce.h in Headers */ = {isa = PBXBuildFile; fileRef = A9F7B05A29425A1700B30DA7 /* pch_source_reduce.h */; }; + A9F7B43029425A1800B30DA7 /* pch_source_reduce.h in Headers */ = {isa = PBXBuildFile; fileRef = A9F7B05A29425A1700B30DA7 /* pch_source_reduce.h */; }; + A9F7B43129425A1800B30DA7 /* merge_blocks_reduction_opportunity_finder.cpp in Sources */ = {isa = PBXBuildFile; fileRef = A9F7B05B29425A1700B30DA7 /* merge_blocks_reduction_opportunity_finder.cpp */; }; + A9F7B43229425A1800B30DA7 /* merge_blocks_reduction_opportunity_finder.cpp in Sources */ = {isa = PBXBuildFile; fileRef = A9F7B05B29425A1700B30DA7 /* merge_blocks_reduction_opportunity_finder.cpp */; }; + A9F7B43329425A1800B30DA7 /* merge_blocks_reduction_opportunity_finder.cpp in Sources */ = {isa = PBXBuildFile; fileRef = A9F7B05B29425A1700B30DA7 /* merge_blocks_reduction_opportunity_finder.cpp */; }; + A9F7B43429425A1800B30DA7 /* reduction_opportunity.cpp in Sources */ = {isa = PBXBuildFile; fileRef = A9F7B05C29425A1700B30DA7 /* reduction_opportunity.cpp */; }; + A9F7B43529425A1800B30DA7 /* reduction_opportunity.cpp in Sources */ = {isa = PBXBuildFile; fileRef = A9F7B05C29425A1700B30DA7 /* reduction_opportunity.cpp */; }; + A9F7B43629425A1800B30DA7 /* reduction_opportunity.cpp in Sources */ = {isa = PBXBuildFile; fileRef = A9F7B05C29425A1700B30DA7 /* reduction_opportunity.cpp */; }; + A9F7B43729425A1800B30DA7 /* reducer.h in Headers */ = {isa = PBXBuildFile; fileRef = A9F7B05D29425A1700B30DA7 /* reducer.h */; }; + A9F7B43829425A1800B30DA7 /* reducer.h in Headers */ = {isa = PBXBuildFile; fileRef = A9F7B05D29425A1700B30DA7 /* reducer.h */; }; + A9F7B43929425A1800B30DA7 /* reducer.h in Headers */ = {isa = PBXBuildFile; fileRef = A9F7B05D29425A1700B30DA7 /* reducer.h */; }; + A9F7B43A29425A1800B30DA7 /* change_operand_to_undef_reduction_opportunity.cpp in Sources */ = {isa = PBXBuildFile; fileRef = A9F7B05E29425A1700B30DA7 /* change_operand_to_undef_reduction_opportunity.cpp */; }; + A9F7B43B29425A1800B30DA7 /* change_operand_to_undef_reduction_opportunity.cpp in Sources */ = {isa = PBXBuildFile; fileRef = A9F7B05E29425A1700B30DA7 /* change_operand_to_undef_reduction_opportunity.cpp */; }; + A9F7B43C29425A1800B30DA7 /* change_operand_to_undef_reduction_opportunity.cpp in Sources */ = {isa = PBXBuildFile; fileRef = A9F7B05E29425A1700B30DA7 /* change_operand_to_undef_reduction_opportunity.cpp */; }; + A9F7B43D29425A1800B30DA7 /* reduction_opportunity.h in Headers */ = {isa = PBXBuildFile; fileRef = A9F7B05F29425A1700B30DA7 /* reduction_opportunity.h */; }; + A9F7B43E29425A1800B30DA7 /* reduction_opportunity.h in Headers */ = {isa = PBXBuildFile; fileRef = A9F7B05F29425A1700B30DA7 /* reduction_opportunity.h */; }; + A9F7B43F29425A1800B30DA7 /* reduction_opportunity.h in Headers */ = {isa = PBXBuildFile; fileRef = A9F7B05F29425A1700B30DA7 /* reduction_opportunity.h */; }; + A9F7B44029425A1800B30DA7 /* conditional_branch_to_simple_conditional_branch_opportunity_finder.h in Headers */ = {isa = PBXBuildFile; fileRef = A9F7B06029425A1700B30DA7 /* conditional_branch_to_simple_conditional_branch_opportunity_finder.h */; }; + A9F7B44129425A1800B30DA7 /* conditional_branch_to_simple_conditional_branch_opportunity_finder.h in Headers */ = {isa = PBXBuildFile; fileRef = A9F7B06029425A1700B30DA7 /* conditional_branch_to_simple_conditional_branch_opportunity_finder.h */; }; + A9F7B44229425A1800B30DA7 /* conditional_branch_to_simple_conditional_branch_opportunity_finder.h in Headers */ = {isa = PBXBuildFile; fileRef = A9F7B06029425A1700B30DA7 /* conditional_branch_to_simple_conditional_branch_opportunity_finder.h */; }; + A9F7B44329425A1800B30DA7 /* operand_to_dominating_id_reduction_opportunity_finder.cpp in Sources */ = {isa = PBXBuildFile; fileRef = A9F7B06129425A1700B30DA7 /* operand_to_dominating_id_reduction_opportunity_finder.cpp */; }; + A9F7B44429425A1800B30DA7 /* operand_to_dominating_id_reduction_opportunity_finder.cpp in Sources */ = {isa = PBXBuildFile; fileRef = A9F7B06129425A1700B30DA7 /* operand_to_dominating_id_reduction_opportunity_finder.cpp */; }; + A9F7B44529425A1800B30DA7 /* operand_to_dominating_id_reduction_opportunity_finder.cpp in Sources */ = {isa = PBXBuildFile; fileRef = A9F7B06129425A1700B30DA7 /* operand_to_dominating_id_reduction_opportunity_finder.cpp */; }; + A9F7B44629425A1800B30DA7 /* reduction_opportunity_finder.h in Headers */ = {isa = PBXBuildFile; fileRef = A9F7B06229425A1700B30DA7 /* reduction_opportunity_finder.h */; }; + A9F7B44729425A1800B30DA7 /* reduction_opportunity_finder.h in Headers */ = {isa = PBXBuildFile; fileRef = A9F7B06229425A1700B30DA7 /* reduction_opportunity_finder.h */; }; + A9F7B44829425A1800B30DA7 /* reduction_opportunity_finder.h in Headers */ = {isa = PBXBuildFile; fileRef = A9F7B06229425A1700B30DA7 /* reduction_opportunity_finder.h */; }; + A9F7B44929425A1800B30DA7 /* change_operand_reduction_opportunity.h in Headers */ = {isa = PBXBuildFile; fileRef = A9F7B06329425A1700B30DA7 /* change_operand_reduction_opportunity.h */; }; + A9F7B44A29425A1800B30DA7 /* change_operand_reduction_opportunity.h in Headers */ = {isa = PBXBuildFile; fileRef = A9F7B06329425A1700B30DA7 /* change_operand_reduction_opportunity.h */; }; + A9F7B44B29425A1800B30DA7 /* change_operand_reduction_opportunity.h in Headers */ = {isa = PBXBuildFile; fileRef = A9F7B06329425A1700B30DA7 /* change_operand_reduction_opportunity.h */; }; + A9F7B44C29425A1800B30DA7 /* remove_block_reduction_opportunity_finder.h in Headers */ = {isa = PBXBuildFile; fileRef = A9F7B06429425A1700B30DA7 /* remove_block_reduction_opportunity_finder.h */; }; + A9F7B44D29425A1800B30DA7 /* remove_block_reduction_opportunity_finder.h in Headers */ = {isa = PBXBuildFile; fileRef = A9F7B06429425A1700B30DA7 /* remove_block_reduction_opportunity_finder.h */; }; + A9F7B44E29425A1800B30DA7 /* remove_block_reduction_opportunity_finder.h in Headers */ = {isa = PBXBuildFile; fileRef = A9F7B06429425A1700B30DA7 /* remove_block_reduction_opportunity_finder.h */; }; + A9F7B44F29425A1800B30DA7 /* remove_block_reduction_opportunity_finder.cpp in Sources */ = {isa = PBXBuildFile; fileRef = A9F7B06529425A1700B30DA7 /* remove_block_reduction_opportunity_finder.cpp */; }; + A9F7B45029425A1800B30DA7 /* remove_block_reduction_opportunity_finder.cpp in Sources */ = {isa = PBXBuildFile; fileRef = A9F7B06529425A1700B30DA7 /* remove_block_reduction_opportunity_finder.cpp */; }; + A9F7B45129425A1800B30DA7 /* remove_block_reduction_opportunity_finder.cpp in Sources */ = {isa = PBXBuildFile; fileRef = A9F7B06529425A1700B30DA7 /* remove_block_reduction_opportunity_finder.cpp */; }; + A9F7B45229425A1800B30DA7 /* reduction_util.h in Headers */ = {isa = PBXBuildFile; fileRef = A9F7B06629425A1700B30DA7 /* reduction_util.h */; }; + A9F7B45329425A1800B30DA7 /* reduction_util.h in Headers */ = {isa = PBXBuildFile; fileRef = A9F7B06629425A1700B30DA7 /* reduction_util.h */; }; + A9F7B45429425A1800B30DA7 /* reduction_util.h in Headers */ = {isa = PBXBuildFile; fileRef = A9F7B06629425A1700B30DA7 /* reduction_util.h */; }; + A9F7B45529425A1800B30DA7 /* merge_blocks_reduction_opportunity.h in Headers */ = {isa = PBXBuildFile; fileRef = A9F7B06729425A1700B30DA7 /* merge_blocks_reduction_opportunity.h */; }; + A9F7B45629425A1800B30DA7 /* merge_blocks_reduction_opportunity.h in Headers */ = {isa = PBXBuildFile; fileRef = A9F7B06729425A1700B30DA7 /* merge_blocks_reduction_opportunity.h */; }; + A9F7B45729425A1800B30DA7 /* merge_blocks_reduction_opportunity.h in Headers */ = {isa = PBXBuildFile; fileRef = A9F7B06729425A1700B30DA7 /* merge_blocks_reduction_opportunity.h */; }; + A9F7B45829425A1800B30DA7 /* conditional_branch_to_simple_conditional_branch_opportunity_finder.cpp in Sources */ = {isa = PBXBuildFile; fileRef = A9F7B06829425A1700B30DA7 /* conditional_branch_to_simple_conditional_branch_opportunity_finder.cpp */; }; + A9F7B45929425A1800B30DA7 /* conditional_branch_to_simple_conditional_branch_opportunity_finder.cpp in Sources */ = {isa = PBXBuildFile; fileRef = A9F7B06829425A1700B30DA7 /* conditional_branch_to_simple_conditional_branch_opportunity_finder.cpp */; }; + A9F7B45A29425A1800B30DA7 /* conditional_branch_to_simple_conditional_branch_opportunity_finder.cpp in Sources */ = {isa = PBXBuildFile; fileRef = A9F7B06829425A1700B30DA7 /* conditional_branch_to_simple_conditional_branch_opportunity_finder.cpp */; }; + A9F7B45B29425A1800B30DA7 /* structured_loop_to_selection_reduction_opportunity.cpp in Sources */ = {isa = PBXBuildFile; fileRef = A9F7B06929425A1700B30DA7 /* structured_loop_to_selection_reduction_opportunity.cpp */; }; + A9F7B45C29425A1800B30DA7 /* structured_loop_to_selection_reduction_opportunity.cpp in Sources */ = {isa = PBXBuildFile; fileRef = A9F7B06929425A1700B30DA7 /* structured_loop_to_selection_reduction_opportunity.cpp */; }; + A9F7B45D29425A1800B30DA7 /* structured_loop_to_selection_reduction_opportunity.cpp in Sources */ = {isa = PBXBuildFile; fileRef = A9F7B06929425A1700B30DA7 /* structured_loop_to_selection_reduction_opportunity.cpp */; }; + A9F7B45E29425A1800B30DA7 /* structured_construct_to_block_reduction_opportunity.cpp in Sources */ = {isa = PBXBuildFile; fileRef = A9F7B06A29425A1700B30DA7 /* structured_construct_to_block_reduction_opportunity.cpp */; }; + A9F7B45F29425A1800B30DA7 /* structured_construct_to_block_reduction_opportunity.cpp in Sources */ = {isa = PBXBuildFile; fileRef = A9F7B06A29425A1700B30DA7 /* structured_construct_to_block_reduction_opportunity.cpp */; }; + A9F7B46029425A1800B30DA7 /* structured_construct_to_block_reduction_opportunity.cpp in Sources */ = {isa = PBXBuildFile; fileRef = A9F7B06A29425A1700B30DA7 /* structured_construct_to_block_reduction_opportunity.cpp */; }; + A9F7B46129425A1800B30DA7 /* remove_block_reduction_opportunity.cpp in Sources */ = {isa = PBXBuildFile; fileRef = A9F7B06B29425A1700B30DA7 /* remove_block_reduction_opportunity.cpp */; }; + A9F7B46229425A1800B30DA7 /* remove_block_reduction_opportunity.cpp in Sources */ = {isa = PBXBuildFile; fileRef = A9F7B06B29425A1700B30DA7 /* remove_block_reduction_opportunity.cpp */; }; + A9F7B46329425A1800B30DA7 /* remove_block_reduction_opportunity.cpp in Sources */ = {isa = PBXBuildFile; fileRef = A9F7B06B29425A1700B30DA7 /* remove_block_reduction_opportunity.cpp */; }; + A9F7B46429425A1800B30DA7 /* remove_unused_struct_member_reduction_opportunity_finder.cpp in Sources */ = {isa = PBXBuildFile; fileRef = A9F7B06C29425A1700B30DA7 /* remove_unused_struct_member_reduction_opportunity_finder.cpp */; }; + A9F7B46529425A1800B30DA7 /* remove_unused_struct_member_reduction_opportunity_finder.cpp in Sources */ = {isa = PBXBuildFile; fileRef = A9F7B06C29425A1700B30DA7 /* remove_unused_struct_member_reduction_opportunity_finder.cpp */; }; + A9F7B46629425A1800B30DA7 /* remove_unused_struct_member_reduction_opportunity_finder.cpp in Sources */ = {isa = PBXBuildFile; fileRef = A9F7B06C29425A1700B30DA7 /* remove_unused_struct_member_reduction_opportunity_finder.cpp */; }; + A9F7B46729425A1800B30DA7 /* reduction_opportunity_finder.cpp in Sources */ = {isa = PBXBuildFile; fileRef = A9F7B06D29425A1700B30DA7 /* reduction_opportunity_finder.cpp */; }; + A9F7B46829425A1800B30DA7 /* reduction_opportunity_finder.cpp in Sources */ = {isa = PBXBuildFile; fileRef = A9F7B06D29425A1700B30DA7 /* reduction_opportunity_finder.cpp */; }; + A9F7B46929425A1800B30DA7 /* reduction_opportunity_finder.cpp in Sources */ = {isa = PBXBuildFile; fileRef = A9F7B06D29425A1700B30DA7 /* reduction_opportunity_finder.cpp */; }; + A9F7B46A29425A1800B30DA7 /* structured_construct_to_block_reduction_opportunity_finder.cpp in Sources */ = {isa = PBXBuildFile; fileRef = A9F7B06E29425A1700B30DA7 /* structured_construct_to_block_reduction_opportunity_finder.cpp */; }; + A9F7B46B29425A1800B30DA7 /* structured_construct_to_block_reduction_opportunity_finder.cpp in Sources */ = {isa = PBXBuildFile; fileRef = A9F7B06E29425A1700B30DA7 /* structured_construct_to_block_reduction_opportunity_finder.cpp */; }; + A9F7B46C29425A1800B30DA7 /* structured_construct_to_block_reduction_opportunity_finder.cpp in Sources */ = {isa = PBXBuildFile; fileRef = A9F7B06E29425A1700B30DA7 /* structured_construct_to_block_reduction_opportunity_finder.cpp */; }; + A9F7B46D29425A1800B30DA7 /* reduction_pass.h in Headers */ = {isa = PBXBuildFile; fileRef = A9F7B06F29425A1700B30DA7 /* reduction_pass.h */; }; + A9F7B46E29425A1800B30DA7 /* reduction_pass.h in Headers */ = {isa = PBXBuildFile; fileRef = A9F7B06F29425A1700B30DA7 /* reduction_pass.h */; }; + A9F7B46F29425A1800B30DA7 /* reduction_pass.h in Headers */ = {isa = PBXBuildFile; fileRef = A9F7B06F29425A1700B30DA7 /* reduction_pass.h */; }; + A9F7B47029425A1800B30DA7 /* latest_version_opencl_std_header.h in Headers */ = {isa = PBXBuildFile; fileRef = A9F7B07029425A1700B30DA7 /* latest_version_opencl_std_header.h */; }; + A9F7B47129425A1800B30DA7 /* latest_version_opencl_std_header.h in Headers */ = {isa = PBXBuildFile; fileRef = A9F7B07029425A1700B30DA7 /* latest_version_opencl_std_header.h */; }; + A9F7B47229425A1800B30DA7 /* latest_version_opencl_std_header.h in Headers */ = {isa = PBXBuildFile; fileRef = A9F7B07029425A1700B30DA7 /* latest_version_opencl_std_header.h */; }; + A9F7B47329425A1800B30DA7 /* spirv_optimizer_options.cpp in Sources */ = {isa = PBXBuildFile; fileRef = A9F7B07129425A1700B30DA7 /* spirv_optimizer_options.cpp */; }; + A9F7B47429425A1800B30DA7 /* spirv_optimizer_options.cpp in Sources */ = {isa = PBXBuildFile; fileRef = A9F7B07129425A1700B30DA7 /* spirv_optimizer_options.cpp */; }; + A9F7B47529425A1800B30DA7 /* spirv_optimizer_options.cpp in Sources */ = {isa = PBXBuildFile; fileRef = A9F7B07129425A1700B30DA7 /* spirv_optimizer_options.cpp */; }; + A9F7B47629425A1800B30DA7 /* cfa.h in Headers */ = {isa = PBXBuildFile; fileRef = A9F7B07229425A1700B30DA7 /* cfa.h */; }; + A9F7B47729425A1800B30DA7 /* cfa.h in Headers */ = {isa = PBXBuildFile; fileRef = A9F7B07229425A1700B30DA7 /* cfa.h */; }; + A9F7B47829425A1800B30DA7 /* cfa.h in Headers */ = {isa = PBXBuildFile; fileRef = A9F7B07229425A1700B30DA7 /* cfa.h */; }; + A9F7B47929425A1800B30DA7 /* pch_source.h in Headers */ = {isa = PBXBuildFile; fileRef = A9F7B07329425A1700B30DA7 /* pch_source.h */; }; + A9F7B47A29425A1800B30DA7 /* pch_source.h in Headers */ = {isa = PBXBuildFile; fileRef = A9F7B07329425A1700B30DA7 /* pch_source.h */; }; + A9F7B47B29425A1800B30DA7 /* pch_source.h in Headers */ = {isa = PBXBuildFile; fileRef = A9F7B07329425A1700B30DA7 /* pch_source.h */; }; + A9F7B47C29425A1800B30DA7 /* enum_string_mapping.h in Headers */ = {isa = PBXBuildFile; fileRef = A9F7B07429425A1700B30DA7 /* enum_string_mapping.h */; }; + A9F7B47D29425A1800B30DA7 /* enum_string_mapping.h in Headers */ = {isa = PBXBuildFile; fileRef = A9F7B07429425A1700B30DA7 /* enum_string_mapping.h */; }; + A9F7B47E29425A1800B30DA7 /* enum_string_mapping.h in Headers */ = {isa = PBXBuildFile; fileRef = A9F7B07429425A1700B30DA7 /* enum_string_mapping.h */; }; + A9F7B47F29425A1800B30DA7 /* spirv_fuzzer_options.cpp in Sources */ = {isa = PBXBuildFile; fileRef = A9F7B07529425A1700B30DA7 /* spirv_fuzzer_options.cpp */; }; + A9F7B48029425A1800B30DA7 /* spirv_fuzzer_options.cpp in Sources */ = {isa = PBXBuildFile; fileRef = A9F7B07529425A1700B30DA7 /* spirv_fuzzer_options.cpp */; }; + A9F7B48129425A1800B30DA7 /* spirv_fuzzer_options.cpp in Sources */ = {isa = PBXBuildFile; fileRef = A9F7B07529425A1700B30DA7 /* spirv_fuzzer_options.cpp */; }; + A9F7B48229425A1800B30DA7 /* spirv_reducer_options.h in Headers */ = {isa = PBXBuildFile; fileRef = A9F7B07629425A1700B30DA7 /* spirv_reducer_options.h */; }; + A9F7B48329425A1800B30DA7 /* spirv_reducer_options.h in Headers */ = {isa = PBXBuildFile; fileRef = A9F7B07629425A1700B30DA7 /* spirv_reducer_options.h */; }; + A9F7B48429425A1800B30DA7 /* spirv_reducer_options.h in Headers */ = {isa = PBXBuildFile; fileRef = A9F7B07629425A1700B30DA7 /* spirv_reducer_options.h */; }; + A9F7B48529425A1800B30DA7 /* spirv_validator_options.cpp in Sources */ = {isa = PBXBuildFile; fileRef = A9F7B07729425A1700B30DA7 /* spirv_validator_options.cpp */; }; + A9F7B48629425A1800B30DA7 /* spirv_validator_options.cpp in Sources */ = {isa = PBXBuildFile; fileRef = A9F7B07729425A1700B30DA7 /* spirv_validator_options.cpp */; }; + A9F7B48729425A1800B30DA7 /* spirv_validator_options.cpp in Sources */ = {isa = PBXBuildFile; fileRef = A9F7B07729425A1700B30DA7 /* spirv_validator_options.cpp */; }; + A9F7B48B29425A1800B30DA7 /* print.cpp in Sources */ = {isa = PBXBuildFile; fileRef = A9F7B07E29425A1700B30DA7 /* print.cpp */; }; + A9F7B48C29425A1800B30DA7 /* print.cpp in Sources */ = {isa = PBXBuildFile; fileRef = A9F7B07E29425A1700B30DA7 /* print.cpp */; }; + A9F7B48D29425A1800B30DA7 /* print.cpp in Sources */ = {isa = PBXBuildFile; fileRef = A9F7B07E29425A1700B30DA7 /* print.cpp */; }; + A9F7B48E29425A1800B30DA7 /* spirv_definition.h in Headers */ = {isa = PBXBuildFile; fileRef = A9F7B07F29425A1700B30DA7 /* spirv_definition.h */; }; + A9F7B48F29425A1800B30DA7 /* spirv_definition.h in Headers */ = {isa = PBXBuildFile; fileRef = A9F7B07F29425A1700B30DA7 /* spirv_definition.h */; }; + A9F7B49029425A1800B30DA7 /* spirv_definition.h in Headers */ = {isa = PBXBuildFile; fileRef = A9F7B07F29425A1700B30DA7 /* spirv_definition.h */; }; + A9F7B49129425A1800B30DA7 /* operand.h in Headers */ = {isa = PBXBuildFile; fileRef = A9F7B08029425A1700B30DA7 /* operand.h */; }; + A9F7B49229425A1800B30DA7 /* operand.h in Headers */ = {isa = PBXBuildFile; fileRef = A9F7B08029425A1700B30DA7 /* operand.h */; }; + A9F7B49329425A1800B30DA7 /* operand.h in Headers */ = {isa = PBXBuildFile; fileRef = A9F7B08029425A1700B30DA7 /* operand.h */; }; + A9F7B49429425A1800B30DA7 /* spirv_endian.cpp in Sources */ = {isa = PBXBuildFile; fileRef = A9F7B08129425A1700B30DA7 /* spirv_endian.cpp */; }; + A9F7B49529425A1800B30DA7 /* spirv_endian.cpp in Sources */ = {isa = PBXBuildFile; fileRef = A9F7B08129425A1700B30DA7 /* spirv_endian.cpp */; }; + A9F7B49629425A1800B30DA7 /* spirv_endian.cpp in Sources */ = {isa = PBXBuildFile; fileRef = A9F7B08129425A1700B30DA7 /* spirv_endian.cpp */; }; + A9F7B49729425A1800B30DA7 /* macro.h in Headers */ = {isa = PBXBuildFile; fileRef = A9F7B08229425A1700B30DA7 /* macro.h */; }; + A9F7B49829425A1800B30DA7 /* macro.h in Headers */ = {isa = PBXBuildFile; fileRef = A9F7B08229425A1700B30DA7 /* macro.h */; }; + A9F7B49929425A1800B30DA7 /* macro.h in Headers */ = {isa = PBXBuildFile; fileRef = A9F7B08229425A1700B30DA7 /* macro.h */; }; + A9F7B49A29425A1800B30DA7 /* spirv_constant.h in Headers */ = {isa = PBXBuildFile; fileRef = A9F7B08329425A1700B30DA7 /* spirv_constant.h */; }; + A9F7B49B29425A1800B30DA7 /* spirv_constant.h in Headers */ = {isa = PBXBuildFile; fileRef = A9F7B08329425A1700B30DA7 /* spirv_constant.h */; }; + A9F7B49C29425A1900B30DA7 /* spirv_constant.h in Headers */ = {isa = PBXBuildFile; fileRef = A9F7B08329425A1700B30DA7 /* spirv_constant.h */; }; + A9F7B49D29425A1900B30DA7 /* binary.cpp in Sources */ = {isa = PBXBuildFile; fileRef = A9F7B08429425A1700B30DA7 /* binary.cpp */; }; + A9F7B49E29425A1900B30DA7 /* binary.cpp in Sources */ = {isa = PBXBuildFile; fileRef = A9F7B08429425A1700B30DA7 /* binary.cpp */; }; + A9F7B49F29425A1900B30DA7 /* binary.cpp in Sources */ = {isa = PBXBuildFile; fileRef = A9F7B08429425A1700B30DA7 /* binary.cpp */; }; + A9F7B4A029425A1900B30DA7 /* diff.h in Headers */ = {isa = PBXBuildFile; fileRef = A9F7B08729425A1700B30DA7 /* diff.h */; }; + A9F7B4A129425A1900B30DA7 /* diff.h in Headers */ = {isa = PBXBuildFile; fileRef = A9F7B08729425A1700B30DA7 /* diff.h */; }; + A9F7B4A229425A1900B30DA7 /* diff.h in Headers */ = {isa = PBXBuildFile; fileRef = A9F7B08729425A1700B30DA7 /* diff.h */; }; + A9F7B4A329425A1900B30DA7 /* lcs.h in Headers */ = {isa = PBXBuildFile; fileRef = A9F7B08829425A1700B30DA7 /* lcs.h */; }; + A9F7B4A429425A1900B30DA7 /* lcs.h in Headers */ = {isa = PBXBuildFile; fileRef = A9F7B08829425A1700B30DA7 /* lcs.h */; }; + A9F7B4A529425A1900B30DA7 /* lcs.h in Headers */ = {isa = PBXBuildFile; fileRef = A9F7B08829425A1700B30DA7 /* lcs.h */; }; + A9F7B4A629425A1900B30DA7 /* diff.cpp in Sources */ = {isa = PBXBuildFile; fileRef = A9F7B08929425A1700B30DA7 /* diff.cpp */; }; + A9F7B4A729425A1900B30DA7 /* diff.cpp in Sources */ = {isa = PBXBuildFile; fileRef = A9F7B08929425A1700B30DA7 /* diff.cpp */; }; + A9F7B4A829425A1900B30DA7 /* diff.cpp in Sources */ = {isa = PBXBuildFile; fileRef = A9F7B08929425A1700B30DA7 /* diff.cpp */; }; + A9F7B4A929425A1900B30DA7 /* spirv_validator_options.h in Headers */ = {isa = PBXBuildFile; fileRef = A9F7B08A29425A1700B30DA7 /* spirv_validator_options.h */; }; + A9F7B4AA29425A1900B30DA7 /* spirv_validator_options.h in Headers */ = {isa = PBXBuildFile; fileRef = A9F7B08A29425A1700B30DA7 /* spirv_validator_options.h */; }; + A9F7B4AB29425A1900B30DA7 /* spirv_validator_options.h in Headers */ = {isa = PBXBuildFile; fileRef = A9F7B08A29425A1700B30DA7 /* spirv_validator_options.h */; }; + A9F7B4AC29425A1900B30DA7 /* enum_string_mapping.cpp in Sources */ = {isa = PBXBuildFile; fileRef = A9F7B08B29425A1700B30DA7 /* enum_string_mapping.cpp */; }; + A9F7B4AD29425A1900B30DA7 /* enum_string_mapping.cpp in Sources */ = {isa = PBXBuildFile; fileRef = A9F7B08B29425A1700B30DA7 /* enum_string_mapping.cpp */; }; + A9F7B4AE29425A1900B30DA7 /* enum_string_mapping.cpp in Sources */ = {isa = PBXBuildFile; fileRef = A9F7B08B29425A1700B30DA7 /* enum_string_mapping.cpp */; }; + A9F7B4AF29425A1900B30DA7 /* text_handler.h in Headers */ = {isa = PBXBuildFile; fileRef = A9F7B08C29425A1700B30DA7 /* text_handler.h */; }; + A9F7B4B029425A1900B30DA7 /* text_handler.h in Headers */ = {isa = PBXBuildFile; fileRef = A9F7B08C29425A1700B30DA7 /* text_handler.h */; }; + A9F7B4B129425A1900B30DA7 /* text_handler.h in Headers */ = {isa = PBXBuildFile; fileRef = A9F7B08C29425A1700B30DA7 /* text_handler.h */; }; + A9F7B4B229425A1900B30DA7 /* parsed_operand.h in Headers */ = {isa = PBXBuildFile; fileRef = A9F7B08D29425A1700B30DA7 /* parsed_operand.h */; }; + A9F7B4B329425A1900B30DA7 /* parsed_operand.h in Headers */ = {isa = PBXBuildFile; fileRef = A9F7B08D29425A1700B30DA7 /* parsed_operand.h */; }; + A9F7B4B429425A1900B30DA7 /* parsed_operand.h in Headers */ = {isa = PBXBuildFile; fileRef = A9F7B08D29425A1700B30DA7 /* parsed_operand.h */; }; + A9F7B4B529425A1900B30DA7 /* name_mapper.h in Headers */ = {isa = PBXBuildFile; fileRef = A9F7B08E29425A1700B30DA7 /* name_mapper.h */; }; + A9F7B4B629425A1900B30DA7 /* name_mapper.h in Headers */ = {isa = PBXBuildFile; fileRef = A9F7B08E29425A1700B30DA7 /* name_mapper.h */; }; + A9F7B4B729425A1900B30DA7 /* name_mapper.h in Headers */ = {isa = PBXBuildFile; fileRef = A9F7B08E29425A1700B30DA7 /* name_mapper.h */; }; + A9F7B4B829425A1900B30DA7 /* spirv_reducer_options.cpp in Sources */ = {isa = PBXBuildFile; fileRef = A9F7B08F29425A1700B30DA7 /* spirv_reducer_options.cpp */; }; + A9F7B4B929425A1900B30DA7 /* spirv_reducer_options.cpp in Sources */ = {isa = PBXBuildFile; fileRef = A9F7B08F29425A1700B30DA7 /* spirv_reducer_options.cpp */; }; + A9F7B4BA29425A1900B30DA7 /* spirv_reducer_options.cpp in Sources */ = {isa = PBXBuildFile; fileRef = A9F7B08F29425A1700B30DA7 /* spirv_reducer_options.cpp */; }; + A9F7B4BB29425A1900B30DA7 /* parsed_operand.cpp in Sources */ = {isa = PBXBuildFile; fileRef = A9F7B09029425A1700B30DA7 /* parsed_operand.cpp */; }; + A9F7B4BC29425A1900B30DA7 /* parsed_operand.cpp in Sources */ = {isa = PBXBuildFile; fileRef = A9F7B09029425A1700B30DA7 /* parsed_operand.cpp */; }; + A9F7B4BD29425A1900B30DA7 /* parsed_operand.cpp in Sources */ = {isa = PBXBuildFile; fileRef = A9F7B09029425A1700B30DA7 /* parsed_operand.cpp */; }; + A9F7B4BE29425A1900B30DA7 /* diagnostic.h in Headers */ = {isa = PBXBuildFile; fileRef = A9F7B09129425A1700B30DA7 /* diagnostic.h */; }; + A9F7B4BF29425A1900B30DA7 /* diagnostic.h in Headers */ = {isa = PBXBuildFile; fileRef = A9F7B09129425A1700B30DA7 /* diagnostic.h */; }; + A9F7B4C029425A1900B30DA7 /* diagnostic.h in Headers */ = {isa = PBXBuildFile; fileRef = A9F7B09129425A1700B30DA7 /* diagnostic.h */; }; + A9F7B4C129425A1900B30DA7 /* spirv_endian.h in Headers */ = {isa = PBXBuildFile; fileRef = A9F7B09229425A1700B30DA7 /* spirv_endian.h */; }; + A9F7B4C229425A1900B30DA7 /* spirv_endian.h in Headers */ = {isa = PBXBuildFile; fileRef = A9F7B09229425A1700B30DA7 /* spirv_endian.h */; }; + A9F7B4C329425A1900B30DA7 /* spirv_endian.h in Headers */ = {isa = PBXBuildFile; fileRef = A9F7B09229425A1700B30DA7 /* spirv_endian.h */; }; + A9F7B4C429425A1900B30DA7 /* name_mapper.cpp in Sources */ = {isa = PBXBuildFile; fileRef = A9F7B09329425A1700B30DA7 /* name_mapper.cpp */; }; + A9F7B4C529425A1900B30DA7 /* name_mapper.cpp in Sources */ = {isa = PBXBuildFile; fileRef = A9F7B09329425A1700B30DA7 /* name_mapper.cpp */; }; + A9F7B4C629425A1900B30DA7 /* name_mapper.cpp in Sources */ = {isa = PBXBuildFile; fileRef = A9F7B09329425A1700B30DA7 /* name_mapper.cpp */; }; + A9F7B4C729425A1900B30DA7 /* linker.cpp in Sources */ = {isa = PBXBuildFile; fileRef = A9F7B09629425A1700B30DA7 /* linker.cpp */; }; + A9F7B4C829425A1900B30DA7 /* linker.cpp in Sources */ = {isa = PBXBuildFile; fileRef = A9F7B09629425A1700B30DA7 /* linker.cpp */; }; + A9F7B4C929425A1900B30DA7 /* linker.cpp in Sources */ = {isa = PBXBuildFile; fileRef = A9F7B09629425A1700B30DA7 /* linker.cpp */; }; + A9F7B4CA29425A1900B30DA7 /* common_debug_info.h in Headers */ = {isa = PBXBuildFile; fileRef = A9F7B09729425A1700B30DA7 /* common_debug_info.h */; }; + A9F7B4CB29425A1900B30DA7 /* common_debug_info.h in Headers */ = {isa = PBXBuildFile; fileRef = A9F7B09729425A1700B30DA7 /* common_debug_info.h */; }; + A9F7B4CC29425A1900B30DA7 /* common_debug_info.h in Headers */ = {isa = PBXBuildFile; fileRef = A9F7B09729425A1700B30DA7 /* common_debug_info.h */; }; + A9F7B4CD29425A1900B30DA7 /* software_version.cpp in Sources */ = {isa = PBXBuildFile; fileRef = A9F7B09829425A1700B30DA7 /* software_version.cpp */; }; + A9F7B4CE29425A1900B30DA7 /* software_version.cpp in Sources */ = {isa = PBXBuildFile; fileRef = A9F7B09829425A1700B30DA7 /* software_version.cpp */; }; + A9F7B4CF29425A1900B30DA7 /* software_version.cpp in Sources */ = {isa = PBXBuildFile; fileRef = A9F7B09829425A1700B30DA7 /* software_version.cpp */; }; + A9F7B4D029425A1900B30DA7 /* opcode.cpp in Sources */ = {isa = PBXBuildFile; fileRef = A9F7B09929425A1700B30DA7 /* opcode.cpp */; }; + A9F7B4D129425A1900B30DA7 /* opcode.cpp in Sources */ = {isa = PBXBuildFile; fileRef = A9F7B09929425A1700B30DA7 /* opcode.cpp */; }; + A9F7B4D229425A1900B30DA7 /* opcode.cpp in Sources */ = {isa = PBXBuildFile; fileRef = A9F7B09929425A1700B30DA7 /* opcode.cpp */; }; + A9F7B4D329425A1900B30DA7 /* print.h in Headers */ = {isa = PBXBuildFile; fileRef = A9F7B09A29425A1700B30DA7 /* print.h */; }; + A9F7B4D429425A1900B30DA7 /* print.h in Headers */ = {isa = PBXBuildFile; fileRef = A9F7B09A29425A1700B30DA7 /* print.h */; }; + A9F7B4D529425A1900B30DA7 /* print.h in Headers */ = {isa = PBXBuildFile; fileRef = A9F7B09A29425A1700B30DA7 /* print.h */; }; + A9F7B4D629425A1900B30DA7 /* ext_inst.cpp in Sources */ = {isa = PBXBuildFile; fileRef = A9F7B09B29425A1700B30DA7 /* ext_inst.cpp */; }; + A9F7B4D729425A1900B30DA7 /* ext_inst.cpp in Sources */ = {isa = PBXBuildFile; fileRef = A9F7B09B29425A1700B30DA7 /* ext_inst.cpp */; }; + A9F7B4D829425A1900B30DA7 /* ext_inst.cpp in Sources */ = {isa = PBXBuildFile; fileRef = A9F7B09B29425A1700B30DA7 /* ext_inst.cpp */; }; + A9F7B4D929425A1900B30DA7 /* disassemble.h in Headers */ = {isa = PBXBuildFile; fileRef = A9F7B09C29425A1700B30DA7 /* disassemble.h */; }; + A9F7B4DA29425A1900B30DA7 /* disassemble.h in Headers */ = {isa = PBXBuildFile; fileRef = A9F7B09C29425A1700B30DA7 /* disassemble.h */; }; + A9F7B4DB29425A1900B30DA7 /* disassemble.h in Headers */ = {isa = PBXBuildFile; fileRef = A9F7B09C29425A1700B30DA7 /* disassemble.h */; }; + A9F7B4DC29425A1900B30DA7 /* optimizer.cpp in Sources */ = {isa = PBXBuildFile; fileRef = A9F7B09E29425A1700B30DA7 /* optimizer.cpp */; }; + A9F7B4DD29425A1900B30DA7 /* optimizer.cpp in Sources */ = {isa = PBXBuildFile; fileRef = A9F7B09E29425A1700B30DA7 /* optimizer.cpp */; }; + A9F7B4DE29425A1900B30DA7 /* optimizer.cpp in Sources */ = {isa = PBXBuildFile; fileRef = A9F7B09E29425A1700B30DA7 /* optimizer.cpp */; }; + A9F7B4DF29425A1900B30DA7 /* if_conversion.h in Headers */ = {isa = PBXBuildFile; fileRef = A9F7B09F29425A1700B30DA7 /* if_conversion.h */; }; + A9F7B4E029425A1900B30DA7 /* if_conversion.h in Headers */ = {isa = PBXBuildFile; fileRef = A9F7B09F29425A1700B30DA7 /* if_conversion.h */; }; + A9F7B4E129425A1900B30DA7 /* if_conversion.h in Headers */ = {isa = PBXBuildFile; fileRef = A9F7B09F29425A1700B30DA7 /* if_conversion.h */; }; + A9F7B4E229425A1900B30DA7 /* register_pressure.cpp in Sources */ = {isa = PBXBuildFile; fileRef = A9F7B0A029425A1700B30DA7 /* register_pressure.cpp */; }; + A9F7B4E329425A1900B30DA7 /* register_pressure.cpp in Sources */ = {isa = PBXBuildFile; fileRef = A9F7B0A029425A1700B30DA7 /* register_pressure.cpp */; }; + A9F7B4E429425A1900B30DA7 /* register_pressure.cpp in Sources */ = {isa = PBXBuildFile; fileRef = A9F7B0A029425A1700B30DA7 /* register_pressure.cpp */; }; + A9F7B4E529425A1900B30DA7 /* loop_utils.cpp in Sources */ = {isa = PBXBuildFile; fileRef = A9F7B0A129425A1700B30DA7 /* loop_utils.cpp */; }; + A9F7B4E629425A1900B30DA7 /* loop_utils.cpp in Sources */ = {isa = PBXBuildFile; fileRef = A9F7B0A129425A1700B30DA7 /* loop_utils.cpp */; }; + A9F7B4E729425A1900B30DA7 /* loop_utils.cpp in Sources */ = {isa = PBXBuildFile; fileRef = A9F7B0A129425A1700B30DA7 /* loop_utils.cpp */; }; + A9F7B4E829425A1900B30DA7 /* strip_nonsemantic_info_pass.h in Headers */ = {isa = PBXBuildFile; fileRef = A9F7B0A229425A1700B30DA7 /* strip_nonsemantic_info_pass.h */; }; + A9F7B4E929425A1900B30DA7 /* strip_nonsemantic_info_pass.h in Headers */ = {isa = PBXBuildFile; fileRef = A9F7B0A229425A1700B30DA7 /* strip_nonsemantic_info_pass.h */; }; + A9F7B4EA29425A1900B30DA7 /* strip_nonsemantic_info_pass.h in Headers */ = {isa = PBXBuildFile; fileRef = A9F7B0A229425A1700B30DA7 /* strip_nonsemantic_info_pass.h */; }; + A9F7B4EB29425A1900B30DA7 /* spread_volatile_semantics.cpp in Sources */ = {isa = PBXBuildFile; fileRef = A9F7B0A329425A1700B30DA7 /* spread_volatile_semantics.cpp */; }; + A9F7B4EC29425A1900B30DA7 /* spread_volatile_semantics.cpp in Sources */ = {isa = PBXBuildFile; fileRef = A9F7B0A329425A1700B30DA7 /* spread_volatile_semantics.cpp */; }; + A9F7B4ED29425A1900B30DA7 /* spread_volatile_semantics.cpp in Sources */ = {isa = PBXBuildFile; fileRef = A9F7B0A329425A1700B30DA7 /* spread_volatile_semantics.cpp */; }; + A9F7B4EE29425A1900B30DA7 /* merge_return_pass.h in Headers */ = {isa = PBXBuildFile; fileRef = A9F7B0A429425A1700B30DA7 /* merge_return_pass.h */; }; + A9F7B4EF29425A1900B30DA7 /* merge_return_pass.h in Headers */ = {isa = PBXBuildFile; fileRef = A9F7B0A429425A1700B30DA7 /* merge_return_pass.h */; }; + A9F7B4F029425A1900B30DA7 /* merge_return_pass.h in Headers */ = {isa = PBXBuildFile; fileRef = A9F7B0A429425A1700B30DA7 /* merge_return_pass.h */; }; + A9F7B4F129425A1900B30DA7 /* inline_opaque_pass.h in Headers */ = {isa = PBXBuildFile; fileRef = A9F7B0A529425A1700B30DA7 /* inline_opaque_pass.h */; }; + A9F7B4F229425A1900B30DA7 /* inline_opaque_pass.h in Headers */ = {isa = PBXBuildFile; fileRef = A9F7B0A529425A1700B30DA7 /* inline_opaque_pass.h */; }; + A9F7B4F329425A1900B30DA7 /* inline_opaque_pass.h in Headers */ = {isa = PBXBuildFile; fileRef = A9F7B0A529425A1700B30DA7 /* inline_opaque_pass.h */; }; + A9F7B4F429425A1900B30DA7 /* loop_fusion.h in Headers */ = {isa = PBXBuildFile; fileRef = A9F7B0A629425A1700B30DA7 /* loop_fusion.h */; }; + A9F7B4F529425A1900B30DA7 /* loop_fusion.h in Headers */ = {isa = PBXBuildFile; fileRef = A9F7B0A629425A1700B30DA7 /* loop_fusion.h */; }; + A9F7B4F629425A1900B30DA7 /* loop_fusion.h in Headers */ = {isa = PBXBuildFile; fileRef = A9F7B0A629425A1700B30DA7 /* loop_fusion.h */; }; + A9F7B4F729425A1900B30DA7 /* combine_access_chains.cpp in Sources */ = {isa = PBXBuildFile; fileRef = A9F7B0A729425A1700B30DA7 /* combine_access_chains.cpp */; }; + A9F7B4F829425A1900B30DA7 /* combine_access_chains.cpp in Sources */ = {isa = PBXBuildFile; fileRef = A9F7B0A729425A1700B30DA7 /* combine_access_chains.cpp */; }; + A9F7B4F929425A1900B30DA7 /* combine_access_chains.cpp in Sources */ = {isa = PBXBuildFile; fileRef = A9F7B0A729425A1700B30DA7 /* combine_access_chains.cpp */; }; + A9F7B4FA29425A1900B30DA7 /* build_module.cpp in Sources */ = {isa = PBXBuildFile; fileRef = A9F7B0A829425A1700B30DA7 /* build_module.cpp */; }; + A9F7B4FB29425A1900B30DA7 /* build_module.cpp in Sources */ = {isa = PBXBuildFile; fileRef = A9F7B0A829425A1700B30DA7 /* build_module.cpp */; }; + A9F7B4FC29425A1900B30DA7 /* build_module.cpp in Sources */ = {isa = PBXBuildFile; fileRef = A9F7B0A829425A1700B30DA7 /* build_module.cpp */; }; + A9F7B4FD29425A1900B30DA7 /* eliminate_dead_output_stores_pass.cpp in Sources */ = {isa = PBXBuildFile; fileRef = A9F7B0A929425A1700B30DA7 /* eliminate_dead_output_stores_pass.cpp */; }; + A9F7B4FE29425A1900B30DA7 /* eliminate_dead_output_stores_pass.cpp in Sources */ = {isa = PBXBuildFile; fileRef = A9F7B0A929425A1700B30DA7 /* eliminate_dead_output_stores_pass.cpp */; }; + A9F7B4FF29425A1900B30DA7 /* eliminate_dead_output_stores_pass.cpp in Sources */ = {isa = PBXBuildFile; fileRef = A9F7B0A929425A1700B30DA7 /* eliminate_dead_output_stores_pass.cpp */; }; + A9F7B50029425A1900B30DA7 /* composite.h in Headers */ = {isa = PBXBuildFile; fileRef = A9F7B0AA29425A1700B30DA7 /* composite.h */; }; + A9F7B50129425A1900B30DA7 /* composite.h in Headers */ = {isa = PBXBuildFile; fileRef = A9F7B0AA29425A1700B30DA7 /* composite.h */; }; + A9F7B50229425A1900B30DA7 /* composite.h in Headers */ = {isa = PBXBuildFile; fileRef = A9F7B0AA29425A1700B30DA7 /* composite.h */; }; + A9F7B50329425A1900B30DA7 /* liveness.cpp in Sources */ = {isa = PBXBuildFile; fileRef = A9F7B0AB29425A1700B30DA7 /* liveness.cpp */; }; + A9F7B50429425A1900B30DA7 /* liveness.cpp in Sources */ = {isa = PBXBuildFile; fileRef = A9F7B0AB29425A1700B30DA7 /* liveness.cpp */; }; + A9F7B50529425A1900B30DA7 /* liveness.cpp in Sources */ = {isa = PBXBuildFile; fileRef = A9F7B0AB29425A1700B30DA7 /* liveness.cpp */; }; + A9F7B50629425A1900B30DA7 /* compact_ids_pass.h in Headers */ = {isa = PBXBuildFile; fileRef = A9F7B0AC29425A1700B30DA7 /* compact_ids_pass.h */; }; + A9F7B50729425A1900B30DA7 /* compact_ids_pass.h in Headers */ = {isa = PBXBuildFile; fileRef = A9F7B0AC29425A1700B30DA7 /* compact_ids_pass.h */; }; + A9F7B50829425A1900B30DA7 /* compact_ids_pass.h in Headers */ = {isa = PBXBuildFile; fileRef = A9F7B0AC29425A1700B30DA7 /* compact_ids_pass.h */; }; + A9F7B50929425A1900B30DA7 /* register_pressure.h in Headers */ = {isa = PBXBuildFile; fileRef = A9F7B0AD29425A1700B30DA7 /* register_pressure.h */; }; + A9F7B50A29425A1900B30DA7 /* register_pressure.h in Headers */ = {isa = PBXBuildFile; fileRef = A9F7B0AD29425A1700B30DA7 /* register_pressure.h */; }; + A9F7B50B29425A1900B30DA7 /* register_pressure.h in Headers */ = {isa = PBXBuildFile; fileRef = A9F7B0AD29425A1700B30DA7 /* register_pressure.h */; }; + A9F7B50C29425A1900B30DA7 /* tree_iterator.h in Headers */ = {isa = PBXBuildFile; fileRef = A9F7B0AE29425A1700B30DA7 /* tree_iterator.h */; }; + A9F7B50D29425A1900B30DA7 /* tree_iterator.h in Headers */ = {isa = PBXBuildFile; fileRef = A9F7B0AE29425A1700B30DA7 /* tree_iterator.h */; }; + A9F7B50E29425A1900B30DA7 /* tree_iterator.h in Headers */ = {isa = PBXBuildFile; fileRef = A9F7B0AE29425A1700B30DA7 /* tree_iterator.h */; }; + A9F7B50F29425A1900B30DA7 /* interface_var_sroa.h in Headers */ = {isa = PBXBuildFile; fileRef = A9F7B0AF29425A1700B30DA7 /* interface_var_sroa.h */; }; + A9F7B51029425A1900B30DA7 /* interface_var_sroa.h in Headers */ = {isa = PBXBuildFile; fileRef = A9F7B0AF29425A1700B30DA7 /* interface_var_sroa.h */; }; + A9F7B51129425A1900B30DA7 /* interface_var_sroa.h in Headers */ = {isa = PBXBuildFile; fileRef = A9F7B0AF29425A1700B30DA7 /* interface_var_sroa.h */; }; + A9F7B51229425A1900B30DA7 /* graphics_robust_access_pass.h in Headers */ = {isa = PBXBuildFile; fileRef = A9F7B0B029425A1700B30DA7 /* graphics_robust_access_pass.h */; }; + A9F7B51329425A1900B30DA7 /* graphics_robust_access_pass.h in Headers */ = {isa = PBXBuildFile; fileRef = A9F7B0B029425A1700B30DA7 /* graphics_robust_access_pass.h */; }; + A9F7B51429425A1900B30DA7 /* graphics_robust_access_pass.h in Headers */ = {isa = PBXBuildFile; fileRef = A9F7B0B029425A1700B30DA7 /* graphics_robust_access_pass.h */; }; + A9F7B51529425A1900B30DA7 /* local_single_store_elim_pass.h in Headers */ = {isa = PBXBuildFile; fileRef = A9F7B0B129425A1700B30DA7 /* local_single_store_elim_pass.h */; }; + A9F7B51629425A1900B30DA7 /* local_single_store_elim_pass.h in Headers */ = {isa = PBXBuildFile; fileRef = A9F7B0B129425A1700B30DA7 /* local_single_store_elim_pass.h */; }; + A9F7B51729425A1900B30DA7 /* local_single_store_elim_pass.h in Headers */ = {isa = PBXBuildFile; fileRef = A9F7B0B129425A1700B30DA7 /* local_single_store_elim_pass.h */; }; + A9F7B51829425A1900B30DA7 /* reduce_load_size.h in Headers */ = {isa = PBXBuildFile; fileRef = A9F7B0B229425A1700B30DA7 /* reduce_load_size.h */; }; + A9F7B51929425A1900B30DA7 /* reduce_load_size.h in Headers */ = {isa = PBXBuildFile; fileRef = A9F7B0B229425A1700B30DA7 /* reduce_load_size.h */; }; + A9F7B51A29425A1900B30DA7 /* reduce_load_size.h in Headers */ = {isa = PBXBuildFile; fileRef = A9F7B0B229425A1700B30DA7 /* reduce_load_size.h */; }; + A9F7B51B29425A1900B30DA7 /* code_sink.cpp in Sources */ = {isa = PBXBuildFile; fileRef = A9F7B0B329425A1700B30DA7 /* code_sink.cpp */; }; + A9F7B51C29425A1900B30DA7 /* code_sink.cpp in Sources */ = {isa = PBXBuildFile; fileRef = A9F7B0B329425A1700B30DA7 /* code_sink.cpp */; }; + A9F7B51D29425A1900B30DA7 /* code_sink.cpp in Sources */ = {isa = PBXBuildFile; fileRef = A9F7B0B329425A1700B30DA7 /* code_sink.cpp */; }; + A9F7B51E29425A1900B30DA7 /* types.cpp in Sources */ = {isa = PBXBuildFile; fileRef = A9F7B0B429425A1700B30DA7 /* types.cpp */; }; + A9F7B51F29425A1900B30DA7 /* types.cpp in Sources */ = {isa = PBXBuildFile; fileRef = A9F7B0B429425A1700B30DA7 /* types.cpp */; }; + A9F7B52029425A1900B30DA7 /* types.cpp in Sources */ = {isa = PBXBuildFile; fileRef = A9F7B0B429425A1700B30DA7 /* types.cpp */; }; + A9F7B52129425A1900B30DA7 /* scalar_analysis.h in Headers */ = {isa = PBXBuildFile; fileRef = A9F7B0B529425A1700B30DA7 /* scalar_analysis.h */; }; + A9F7B52229425A1900B30DA7 /* scalar_analysis.h in Headers */ = {isa = PBXBuildFile; fileRef = A9F7B0B529425A1700B30DA7 /* scalar_analysis.h */; }; + A9F7B52329425A1900B30DA7 /* scalar_analysis.h in Headers */ = {isa = PBXBuildFile; fileRef = A9F7B0B529425A1700B30DA7 /* scalar_analysis.h */; }; + A9F7B52429425A1900B30DA7 /* strip_debug_info_pass.h in Headers */ = {isa = PBXBuildFile; fileRef = A9F7B0B629425A1700B30DA7 /* strip_debug_info_pass.h */; }; + A9F7B52529425A1900B30DA7 /* strip_debug_info_pass.h in Headers */ = {isa = PBXBuildFile; fileRef = A9F7B0B629425A1700B30DA7 /* strip_debug_info_pass.h */; }; + A9F7B52629425A1900B30DA7 /* strip_debug_info_pass.h in Headers */ = {isa = PBXBuildFile; fileRef = A9F7B0B629425A1700B30DA7 /* strip_debug_info_pass.h */; }; + A9F7B52729425A1900B30DA7 /* replace_desc_array_access_using_var_index.h in Headers */ = {isa = PBXBuildFile; fileRef = A9F7B0B729425A1700B30DA7 /* replace_desc_array_access_using_var_index.h */; }; + A9F7B52829425A1900B30DA7 /* replace_desc_array_access_using_var_index.h in Headers */ = {isa = PBXBuildFile; fileRef = A9F7B0B729425A1700B30DA7 /* replace_desc_array_access_using_var_index.h */; }; + A9F7B52929425A1900B30DA7 /* replace_desc_array_access_using_var_index.h in Headers */ = {isa = PBXBuildFile; fileRef = A9F7B0B729425A1700B30DA7 /* replace_desc_array_access_using_var_index.h */; }; + A9F7B52A29425A1900B30DA7 /* cfg.cpp in Sources */ = {isa = PBXBuildFile; fileRef = A9F7B0B829425A1700B30DA7 /* cfg.cpp */; }; + A9F7B52B29425A1900B30DA7 /* cfg.cpp in Sources */ = {isa = PBXBuildFile; fileRef = A9F7B0B829425A1700B30DA7 /* cfg.cpp */; }; + A9F7B52C29425A1900B30DA7 /* cfg.cpp in Sources */ = {isa = PBXBuildFile; fileRef = A9F7B0B829425A1700B30DA7 /* cfg.cpp */; }; + A9F7B52D29425A1900B30DA7 /* decoration_manager.cpp in Sources */ = {isa = PBXBuildFile; fileRef = A9F7B0B929425A1700B30DA7 /* decoration_manager.cpp */; }; + A9F7B52E29425A1900B30DA7 /* decoration_manager.cpp in Sources */ = {isa = PBXBuildFile; fileRef = A9F7B0B929425A1700B30DA7 /* decoration_manager.cpp */; }; + A9F7B52F29425A1900B30DA7 /* decoration_manager.cpp in Sources */ = {isa = PBXBuildFile; fileRef = A9F7B0B929425A1700B30DA7 /* decoration_manager.cpp */; }; + A9F7B53029425A1900B30DA7 /* local_single_block_elim_pass.cpp in Sources */ = {isa = PBXBuildFile; fileRef = A9F7B0BA29425A1700B30DA7 /* local_single_block_elim_pass.cpp */; }; + A9F7B53129425A1900B30DA7 /* local_single_block_elim_pass.cpp in Sources */ = {isa = PBXBuildFile; fileRef = A9F7B0BA29425A1700B30DA7 /* local_single_block_elim_pass.cpp */; }; + A9F7B53229425A1900B30DA7 /* local_single_block_elim_pass.cpp in Sources */ = {isa = PBXBuildFile; fileRef = A9F7B0BA29425A1700B30DA7 /* local_single_block_elim_pass.cpp */; }; + A9F7B53329425A1900B30DA7 /* freeze_spec_constant_value_pass.cpp in Sources */ = {isa = PBXBuildFile; fileRef = A9F7B0BB29425A1700B30DA7 /* freeze_spec_constant_value_pass.cpp */; }; + A9F7B53429425A1900B30DA7 /* freeze_spec_constant_value_pass.cpp in Sources */ = {isa = PBXBuildFile; fileRef = A9F7B0BB29425A1700B30DA7 /* freeze_spec_constant_value_pass.cpp */; }; + A9F7B53529425A1900B30DA7 /* freeze_spec_constant_value_pass.cpp in Sources */ = {isa = PBXBuildFile; fileRef = A9F7B0BB29425A1700B30DA7 /* freeze_spec_constant_value_pass.cpp */; }; + A9F7B53629425A1900B30DA7 /* replace_invalid_opc.h in Headers */ = {isa = PBXBuildFile; fileRef = A9F7B0BC29425A1700B30DA7 /* replace_invalid_opc.h */; }; + A9F7B53729425A1900B30DA7 /* replace_invalid_opc.h in Headers */ = {isa = PBXBuildFile; fileRef = A9F7B0BC29425A1700B30DA7 /* replace_invalid_opc.h */; }; + A9F7B53829425A1900B30DA7 /* replace_invalid_opc.h in Headers */ = {isa = PBXBuildFile; fileRef = A9F7B0BC29425A1700B30DA7 /* replace_invalid_opc.h */; }; + A9F7B53929425A1900B30DA7 /* eliminate_dead_output_stores_pass.h in Headers */ = {isa = PBXBuildFile; fileRef = A9F7B0BD29425A1700B30DA7 /* eliminate_dead_output_stores_pass.h */; }; + A9F7B53A29425A1900B30DA7 /* eliminate_dead_output_stores_pass.h in Headers */ = {isa = PBXBuildFile; fileRef = A9F7B0BD29425A1700B30DA7 /* eliminate_dead_output_stores_pass.h */; }; + A9F7B53B29425A1900B30DA7 /* eliminate_dead_output_stores_pass.h in Headers */ = {isa = PBXBuildFile; fileRef = A9F7B0BD29425A1700B30DA7 /* eliminate_dead_output_stores_pass.h */; }; + A9F7B53C29425A1900B30DA7 /* local_access_chain_convert_pass.h in Headers */ = {isa = PBXBuildFile; fileRef = A9F7B0BE29425A1700B30DA7 /* local_access_chain_convert_pass.h */; }; + A9F7B53D29425A1900B30DA7 /* local_access_chain_convert_pass.h in Headers */ = {isa = PBXBuildFile; fileRef = A9F7B0BE29425A1700B30DA7 /* local_access_chain_convert_pass.h */; }; + A9F7B53E29425A1900B30DA7 /* local_access_chain_convert_pass.h in Headers */ = {isa = PBXBuildFile; fileRef = A9F7B0BE29425A1700B30DA7 /* local_access_chain_convert_pass.h */; }; + A9F7B53F29425A1900B30DA7 /* inst_bindless_check_pass.cpp in Sources */ = {isa = PBXBuildFile; fileRef = A9F7B0BF29425A1700B30DA7 /* inst_bindless_check_pass.cpp */; }; + A9F7B54029425A1900B30DA7 /* inst_bindless_check_pass.cpp in Sources */ = {isa = PBXBuildFile; fileRef = A9F7B0BF29425A1700B30DA7 /* inst_bindless_check_pass.cpp */; }; + A9F7B54129425A1900B30DA7 /* inst_bindless_check_pass.cpp in Sources */ = {isa = PBXBuildFile; fileRef = A9F7B0BF29425A1700B30DA7 /* inst_bindless_check_pass.cpp */; }; + A9F7B54229425A1900B30DA7 /* local_redundancy_elimination.cpp in Sources */ = {isa = PBXBuildFile; fileRef = A9F7B0C029425A1700B30DA7 /* local_redundancy_elimination.cpp */; }; + A9F7B54329425A1900B30DA7 /* local_redundancy_elimination.cpp in Sources */ = {isa = PBXBuildFile; fileRef = A9F7B0C029425A1700B30DA7 /* local_redundancy_elimination.cpp */; }; + A9F7B54429425A1900B30DA7 /* local_redundancy_elimination.cpp in Sources */ = {isa = PBXBuildFile; fileRef = A9F7B0C029425A1700B30DA7 /* local_redundancy_elimination.cpp */; }; + A9F7B54529425A1900B30DA7 /* instrument_pass.cpp in Sources */ = {isa = PBXBuildFile; fileRef = A9F7B0C229425A1700B30DA7 /* instrument_pass.cpp */; }; + A9F7B54629425A1900B30DA7 /* instrument_pass.cpp in Sources */ = {isa = PBXBuildFile; fileRef = A9F7B0C229425A1700B30DA7 /* instrument_pass.cpp */; }; + A9F7B54729425A1900B30DA7 /* instrument_pass.cpp in Sources */ = {isa = PBXBuildFile; fileRef = A9F7B0C229425A1700B30DA7 /* instrument_pass.cpp */; }; + A9F7B54829425A1900B30DA7 /* propagator.h in Headers */ = {isa = PBXBuildFile; fileRef = A9F7B0C329425A1700B30DA7 /* propagator.h */; }; + A9F7B54929425A1900B30DA7 /* propagator.h in Headers */ = {isa = PBXBuildFile; fileRef = A9F7B0C329425A1700B30DA7 /* propagator.h */; }; + A9F7B54A29425A1900B30DA7 /* propagator.h in Headers */ = {isa = PBXBuildFile; fileRef = A9F7B0C329425A1700B30DA7 /* propagator.h */; }; + A9F7B54B29425A1900B30DA7 /* instruction_list.h in Headers */ = {isa = PBXBuildFile; fileRef = A9F7B0C429425A1700B30DA7 /* instruction_list.h */; }; + A9F7B54C29425A1900B30DA7 /* instruction_list.h in Headers */ = {isa = PBXBuildFile; fileRef = A9F7B0C429425A1700B30DA7 /* instruction_list.h */; }; + A9F7B54D29425A1900B30DA7 /* instruction_list.h in Headers */ = {isa = PBXBuildFile; fileRef = A9F7B0C429425A1700B30DA7 /* instruction_list.h */; }; + A9F7B54E29425A1900B30DA7 /* feature_manager.cpp in Sources */ = {isa = PBXBuildFile; fileRef = A9F7B0C529425A1700B30DA7 /* feature_manager.cpp */; }; + A9F7B54F29425A1900B30DA7 /* feature_manager.cpp in Sources */ = {isa = PBXBuildFile; fileRef = A9F7B0C529425A1700B30DA7 /* feature_manager.cpp */; }; + A9F7B55029425A1900B30DA7 /* feature_manager.cpp in Sources */ = {isa = PBXBuildFile; fileRef = A9F7B0C529425A1700B30DA7 /* feature_manager.cpp */; }; + A9F7B55129425A1900B30DA7 /* pass.cpp in Sources */ = {isa = PBXBuildFile; fileRef = A9F7B0C629425A1700B30DA7 /* pass.cpp */; }; + A9F7B55229425A1900B30DA7 /* pass.cpp in Sources */ = {isa = PBXBuildFile; fileRef = A9F7B0C629425A1700B30DA7 /* pass.cpp */; }; + A9F7B55329425A1900B30DA7 /* pass.cpp in Sources */ = {isa = PBXBuildFile; fileRef = A9F7B0C629425A1700B30DA7 /* pass.cpp */; }; + A9F7B55429425A1900B30DA7 /* loop_fission.cpp in Sources */ = {isa = PBXBuildFile; fileRef = A9F7B0C729425A1700B30DA7 /* loop_fission.cpp */; }; + A9F7B55529425A1900B30DA7 /* loop_fission.cpp in Sources */ = {isa = PBXBuildFile; fileRef = A9F7B0C729425A1700B30DA7 /* loop_fission.cpp */; }; + A9F7B55629425A1900B30DA7 /* loop_fission.cpp in Sources */ = {isa = PBXBuildFile; fileRef = A9F7B0C729425A1700B30DA7 /* loop_fission.cpp */; }; + A9F7B55729425A1900B30DA7 /* dominator_tree.cpp in Sources */ = {isa = PBXBuildFile; fileRef = A9F7B0C829425A1700B30DA7 /* dominator_tree.cpp */; }; + A9F7B55829425A1900B30DA7 /* dominator_tree.cpp in Sources */ = {isa = PBXBuildFile; fileRef = A9F7B0C829425A1700B30DA7 /* dominator_tree.cpp */; }; + A9F7B55929425A1900B30DA7 /* dominator_tree.cpp in Sources */ = {isa = PBXBuildFile; fileRef = A9F7B0C829425A1700B30DA7 /* dominator_tree.cpp */; }; + A9F7B55A29425A1900B30DA7 /* amd_ext_to_khr.h in Headers */ = {isa = PBXBuildFile; fileRef = A9F7B0C929425A1700B30DA7 /* amd_ext_to_khr.h */; }; + A9F7B55B29425A1900B30DA7 /* amd_ext_to_khr.h in Headers */ = {isa = PBXBuildFile; fileRef = A9F7B0C929425A1700B30DA7 /* amd_ext_to_khr.h */; }; + A9F7B55C29425A1900B30DA7 /* amd_ext_to_khr.h in Headers */ = {isa = PBXBuildFile; fileRef = A9F7B0C929425A1700B30DA7 /* amd_ext_to_khr.h */; }; + A9F7B55D29425A1900B30DA7 /* merge_return_pass.cpp in Sources */ = {isa = PBXBuildFile; fileRef = A9F7B0CA29425A1700B30DA7 /* merge_return_pass.cpp */; }; + A9F7B55E29425A1900B30DA7 /* merge_return_pass.cpp in Sources */ = {isa = PBXBuildFile; fileRef = A9F7B0CA29425A1700B30DA7 /* merge_return_pass.cpp */; }; + A9F7B55F29425A1900B30DA7 /* merge_return_pass.cpp in Sources */ = {isa = PBXBuildFile; fileRef = A9F7B0CA29425A1700B30DA7 /* merge_return_pass.cpp */; }; + A9F7B56029425A1900B30DA7 /* ir_context.h in Headers */ = {isa = PBXBuildFile; fileRef = A9F7B0CB29425A1700B30DA7 /* ir_context.h */; }; + A9F7B56129425A1900B30DA7 /* ir_context.h in Headers */ = {isa = PBXBuildFile; fileRef = A9F7B0CB29425A1700B30DA7 /* ir_context.h */; }; + A9F7B56229425A1900B30DA7 /* ir_context.h in Headers */ = {isa = PBXBuildFile; fileRef = A9F7B0CB29425A1700B30DA7 /* ir_context.h */; }; + A9F7B56329425A1900B30DA7 /* eliminate_dead_constant_pass.cpp in Sources */ = {isa = PBXBuildFile; fileRef = A9F7B0CC29425A1700B30DA7 /* eliminate_dead_constant_pass.cpp */; }; + A9F7B56429425A1900B30DA7 /* eliminate_dead_constant_pass.cpp in Sources */ = {isa = PBXBuildFile; fileRef = A9F7B0CC29425A1700B30DA7 /* eliminate_dead_constant_pass.cpp */; }; + A9F7B56529425A1900B30DA7 /* eliminate_dead_constant_pass.cpp in Sources */ = {isa = PBXBuildFile; fileRef = A9F7B0CC29425A1700B30DA7 /* eliminate_dead_constant_pass.cpp */; }; + A9F7B56629425A1900B30DA7 /* control_dependence.h in Headers */ = {isa = PBXBuildFile; fileRef = A9F7B0CD29425A1700B30DA7 /* control_dependence.h */; }; + A9F7B56729425A1900B30DA7 /* control_dependence.h in Headers */ = {isa = PBXBuildFile; fileRef = A9F7B0CD29425A1700B30DA7 /* control_dependence.h */; }; + A9F7B56829425A1900B30DA7 /* control_dependence.h in Headers */ = {isa = PBXBuildFile; fileRef = A9F7B0CD29425A1700B30DA7 /* control_dependence.h */; }; + A9F7B56929425A1900B30DA7 /* cfg_cleanup_pass.cpp in Sources */ = {isa = PBXBuildFile; fileRef = A9F7B0CE29425A1700B30DA7 /* cfg_cleanup_pass.cpp */; }; + A9F7B56A29425A1900B30DA7 /* cfg_cleanup_pass.cpp in Sources */ = {isa = PBXBuildFile; fileRef = A9F7B0CE29425A1700B30DA7 /* cfg_cleanup_pass.cpp */; }; + A9F7B56B29425A1900B30DA7 /* cfg_cleanup_pass.cpp in Sources */ = {isa = PBXBuildFile; fileRef = A9F7B0CE29425A1700B30DA7 /* cfg_cleanup_pass.cpp */; }; + A9F7B56C29425A1900B30DA7 /* wrap_opkill.cpp in Sources */ = {isa = PBXBuildFile; fileRef = A9F7B0CF29425A1700B30DA7 /* wrap_opkill.cpp */; }; + A9F7B56D29425A1900B30DA7 /* wrap_opkill.cpp in Sources */ = {isa = PBXBuildFile; fileRef = A9F7B0CF29425A1700B30DA7 /* wrap_opkill.cpp */; }; + A9F7B56E29425A1900B30DA7 /* wrap_opkill.cpp in Sources */ = {isa = PBXBuildFile; fileRef = A9F7B0CF29425A1700B30DA7 /* wrap_opkill.cpp */; }; + A9F7B56F29425A1900B30DA7 /* eliminate_dead_io_components_pass.cpp in Sources */ = {isa = PBXBuildFile; fileRef = A9F7B0D029425A1700B30DA7 /* eliminate_dead_io_components_pass.cpp */; }; + A9F7B57029425A1900B30DA7 /* eliminate_dead_io_components_pass.cpp in Sources */ = {isa = PBXBuildFile; fileRef = A9F7B0D029425A1700B30DA7 /* eliminate_dead_io_components_pass.cpp */; }; + A9F7B57129425A1900B30DA7 /* eliminate_dead_io_components_pass.cpp in Sources */ = {isa = PBXBuildFile; fileRef = A9F7B0D029425A1700B30DA7 /* eliminate_dead_io_components_pass.cpp */; }; + A9F7B57229425A1900B30DA7 /* const_folding_rules.cpp in Sources */ = {isa = PBXBuildFile; fileRef = A9F7B0D129425A1700B30DA7 /* const_folding_rules.cpp */; }; + A9F7B57329425A1900B30DA7 /* const_folding_rules.cpp in Sources */ = {isa = PBXBuildFile; fileRef = A9F7B0D129425A1700B30DA7 /* const_folding_rules.cpp */; }; + A9F7B57429425A1900B30DA7 /* const_folding_rules.cpp in Sources */ = {isa = PBXBuildFile; fileRef = A9F7B0D129425A1700B30DA7 /* const_folding_rules.cpp */; }; + A9F7B57529425A1900B30DA7 /* liveness.h in Headers */ = {isa = PBXBuildFile; fileRef = A9F7B0D229425A1700B30DA7 /* liveness.h */; }; + A9F7B57629425A1900B30DA7 /* liveness.h in Headers */ = {isa = PBXBuildFile; fileRef = A9F7B0D229425A1700B30DA7 /* liveness.h */; }; + A9F7B57729425A1900B30DA7 /* liveness.h in Headers */ = {isa = PBXBuildFile; fileRef = A9F7B0D229425A1700B30DA7 /* liveness.h */; }; + A9F7B57829425A1900B30DA7 /* loop_unroller.h in Headers */ = {isa = PBXBuildFile; fileRef = A9F7B0D329425A1700B30DA7 /* loop_unroller.h */; }; + A9F7B57929425A1900B30DA7 /* loop_unroller.h in Headers */ = {isa = PBXBuildFile; fileRef = A9F7B0D329425A1700B30DA7 /* loop_unroller.h */; }; + A9F7B57A29425A1900B30DA7 /* loop_unroller.h in Headers */ = {isa = PBXBuildFile; fileRef = A9F7B0D329425A1700B30DA7 /* loop_unroller.h */; }; + A9F7B57B29425A1900B30DA7 /* strip_debug_info_pass.cpp in Sources */ = {isa = PBXBuildFile; fileRef = A9F7B0D429425A1700B30DA7 /* strip_debug_info_pass.cpp */; }; + A9F7B57C29425A1900B30DA7 /* strip_debug_info_pass.cpp in Sources */ = {isa = PBXBuildFile; fileRef = A9F7B0D429425A1700B30DA7 /* strip_debug_info_pass.cpp */; }; + A9F7B57D29425A1900B30DA7 /* strip_debug_info_pass.cpp in Sources */ = {isa = PBXBuildFile; fileRef = A9F7B0D429425A1700B30DA7 /* strip_debug_info_pass.cpp */; }; + A9F7B57E29425A1900B30DA7 /* ssa_rewrite_pass.cpp in Sources */ = {isa = PBXBuildFile; fileRef = A9F7B0D529425A1700B30DA7 /* ssa_rewrite_pass.cpp */; }; + A9F7B57F29425A1900B30DA7 /* ssa_rewrite_pass.cpp in Sources */ = {isa = PBXBuildFile; fileRef = A9F7B0D529425A1700B30DA7 /* ssa_rewrite_pass.cpp */; }; + A9F7B58029425A1900B30DA7 /* ssa_rewrite_pass.cpp in Sources */ = {isa = PBXBuildFile; fileRef = A9F7B0D529425A1700B30DA7 /* ssa_rewrite_pass.cpp */; }; + A9F7B58129425A1900B30DA7 /* loop_dependence.cpp in Sources */ = {isa = PBXBuildFile; fileRef = A9F7B0D629425A1700B30DA7 /* loop_dependence.cpp */; }; + A9F7B58229425A1900B30DA7 /* loop_dependence.cpp in Sources */ = {isa = PBXBuildFile; fileRef = A9F7B0D629425A1700B30DA7 /* loop_dependence.cpp */; }; + A9F7B58329425A1900B30DA7 /* loop_dependence.cpp in Sources */ = {isa = PBXBuildFile; fileRef = A9F7B0D629425A1700B30DA7 /* loop_dependence.cpp */; }; + A9F7B58429425A1900B30DA7 /* unify_const_pass.h in Headers */ = {isa = PBXBuildFile; fileRef = A9F7B0D729425A1700B30DA7 /* unify_const_pass.h */; }; + A9F7B58529425A1900B30DA7 /* unify_const_pass.h in Headers */ = {isa = PBXBuildFile; fileRef = A9F7B0D729425A1700B30DA7 /* unify_const_pass.h */; }; + A9F7B58629425A1900B30DA7 /* unify_const_pass.h in Headers */ = {isa = PBXBuildFile; fileRef = A9F7B0D729425A1700B30DA7 /* unify_const_pass.h */; }; + A9F7B58729425A1900B30DA7 /* ir_loader.h in Headers */ = {isa = PBXBuildFile; fileRef = A9F7B0D829425A1700B30DA7 /* ir_loader.h */; }; + A9F7B58829425A1900B30DA7 /* ir_loader.h in Headers */ = {isa = PBXBuildFile; fileRef = A9F7B0D829425A1700B30DA7 /* ir_loader.h */; }; + A9F7B58929425A1900B30DA7 /* ir_loader.h in Headers */ = {isa = PBXBuildFile; fileRef = A9F7B0D829425A1700B30DA7 /* ir_loader.h */; }; + A9F7B58A29425A1900B30DA7 /* inst_debug_printf_pass.cpp in Sources */ = {isa = PBXBuildFile; fileRef = A9F7B0D929425A1700B30DA7 /* inst_debug_printf_pass.cpp */; }; + A9F7B58B29425A1900B30DA7 /* inst_debug_printf_pass.cpp in Sources */ = {isa = PBXBuildFile; fileRef = A9F7B0D929425A1700B30DA7 /* inst_debug_printf_pass.cpp */; }; + A9F7B58C29425A1900B30DA7 /* inst_debug_printf_pass.cpp in Sources */ = {isa = PBXBuildFile; fileRef = A9F7B0D929425A1700B30DA7 /* inst_debug_printf_pass.cpp */; }; + A9F7B58D29425A1900B30DA7 /* types.h in Headers */ = {isa = PBXBuildFile; fileRef = A9F7B0DA29425A1700B30DA7 /* types.h */; }; + A9F7B58E29425A1900B30DA7 /* types.h in Headers */ = {isa = PBXBuildFile; fileRef = A9F7B0DA29425A1700B30DA7 /* types.h */; }; + A9F7B58F29425A1900B30DA7 /* types.h in Headers */ = {isa = PBXBuildFile; fileRef = A9F7B0DA29425A1700B30DA7 /* types.h */; }; + A9F7B59029425A1900B30DA7 /* fold_spec_constant_op_and_composite_pass.h in Headers */ = {isa = PBXBuildFile; fileRef = A9F7B0DB29425A1700B30DA7 /* fold_spec_constant_op_and_composite_pass.h */; }; + A9F7B59129425A1900B30DA7 /* fold_spec_constant_op_and_composite_pass.h in Headers */ = {isa = PBXBuildFile; fileRef = A9F7B0DB29425A1700B30DA7 /* fold_spec_constant_op_and_composite_pass.h */; }; + A9F7B59229425A1900B30DA7 /* fold_spec_constant_op_and_composite_pass.h in Headers */ = {isa = PBXBuildFile; fileRef = A9F7B0DB29425A1700B30DA7 /* fold_spec_constant_op_and_composite_pass.h */; }; + A9F7B59329425A1900B30DA7 /* mem_pass.cpp in Sources */ = {isa = PBXBuildFile; fileRef = A9F7B0DC29425A1700B30DA7 /* mem_pass.cpp */; }; + A9F7B59429425A1900B30DA7 /* mem_pass.cpp in Sources */ = {isa = PBXBuildFile; fileRef = A9F7B0DC29425A1700B30DA7 /* mem_pass.cpp */; }; + A9F7B59529425A1900B30DA7 /* mem_pass.cpp in Sources */ = {isa = PBXBuildFile; fileRef = A9F7B0DC29425A1700B30DA7 /* mem_pass.cpp */; }; + A9F7B59629425A1900B30DA7 /* basic_block.h in Headers */ = {isa = PBXBuildFile; fileRef = A9F7B0DD29425A1700B30DA7 /* basic_block.h */; }; + A9F7B59729425A1900B30DA7 /* basic_block.h in Headers */ = {isa = PBXBuildFile; fileRef = A9F7B0DD29425A1700B30DA7 /* basic_block.h */; }; + A9F7B59829425A1900B30DA7 /* basic_block.h in Headers */ = {isa = PBXBuildFile; fileRef = A9F7B0DD29425A1700B30DA7 /* basic_block.h */; }; + A9F7B59929425A1900B30DA7 /* remove_duplicates_pass.cpp in Sources */ = {isa = PBXBuildFile; fileRef = A9F7B0DE29425A1700B30DA7 /* remove_duplicates_pass.cpp */; }; + A9F7B59A29425A1900B30DA7 /* remove_duplicates_pass.cpp in Sources */ = {isa = PBXBuildFile; fileRef = A9F7B0DE29425A1700B30DA7 /* remove_duplicates_pass.cpp */; }; + A9F7B59B29425A1900B30DA7 /* remove_duplicates_pass.cpp in Sources */ = {isa = PBXBuildFile; fileRef = A9F7B0DE29425A1700B30DA7 /* remove_duplicates_pass.cpp */; }; + A9F7B59C29425A1900B30DA7 /* dead_variable_elimination.cpp in Sources */ = {isa = PBXBuildFile; fileRef = A9F7B0DF29425A1700B30DA7 /* dead_variable_elimination.cpp */; }; + A9F7B59D29425A1900B30DA7 /* dead_variable_elimination.cpp in Sources */ = {isa = PBXBuildFile; fileRef = A9F7B0DF29425A1700B30DA7 /* dead_variable_elimination.cpp */; }; + A9F7B59E29425A1900B30DA7 /* dead_variable_elimination.cpp in Sources */ = {isa = PBXBuildFile; fileRef = A9F7B0DF29425A1700B30DA7 /* dead_variable_elimination.cpp */; }; + A9F7B59F29425A1900B30DA7 /* block_merge_pass.h in Headers */ = {isa = PBXBuildFile; fileRef = A9F7B0E029425A1700B30DA7 /* block_merge_pass.h */; }; + A9F7B5A029425A1900B30DA7 /* block_merge_pass.h in Headers */ = {isa = PBXBuildFile; fileRef = A9F7B0E029425A1700B30DA7 /* block_merge_pass.h */; }; + A9F7B5A129425A1900B30DA7 /* block_merge_pass.h in Headers */ = {isa = PBXBuildFile; fileRef = A9F7B0E029425A1700B30DA7 /* block_merge_pass.h */; }; + A9F7B5A229425A1900B30DA7 /* module.cpp in Sources */ = {isa = PBXBuildFile; fileRef = A9F7B0E129425A1700B30DA7 /* module.cpp */; }; + A9F7B5A329425A1900B30DA7 /* module.cpp in Sources */ = {isa = PBXBuildFile; fileRef = A9F7B0E129425A1700B30DA7 /* module.cpp */; }; + A9F7B5A429425A1900B30DA7 /* module.cpp in Sources */ = {isa = PBXBuildFile; fileRef = A9F7B0E129425A1700B30DA7 /* module.cpp */; }; + A9F7B5A529425A1900B30DA7 /* debug_info_manager.h in Headers */ = {isa = PBXBuildFile; fileRef = A9F7B0E229425A1700B30DA7 /* debug_info_manager.h */; }; + A9F7B5A629425A1900B30DA7 /* debug_info_manager.h in Headers */ = {isa = PBXBuildFile; fileRef = A9F7B0E229425A1700B30DA7 /* debug_info_manager.h */; }; + A9F7B5A729425A1900B30DA7 /* debug_info_manager.h in Headers */ = {isa = PBXBuildFile; fileRef = A9F7B0E229425A1700B30DA7 /* debug_info_manager.h */; }; + A9F7B5A829425A1900B30DA7 /* fold_spec_constant_op_and_composite_pass.cpp in Sources */ = {isa = PBXBuildFile; fileRef = A9F7B0E329425A1700B30DA7 /* fold_spec_constant_op_and_composite_pass.cpp */; }; + A9F7B5A929425A1900B30DA7 /* fold_spec_constant_op_and_composite_pass.cpp in Sources */ = {isa = PBXBuildFile; fileRef = A9F7B0E329425A1700B30DA7 /* fold_spec_constant_op_and_composite_pass.cpp */; }; + A9F7B5AA29425A1900B30DA7 /* fold_spec_constant_op_and_composite_pass.cpp in Sources */ = {isa = PBXBuildFile; fileRef = A9F7B0E329425A1700B30DA7 /* fold_spec_constant_op_and_composite_pass.cpp */; }; + A9F7B5AB29425A1900B30DA7 /* loop_unswitch_pass.cpp in Sources */ = {isa = PBXBuildFile; fileRef = A9F7B0E429425A1700B30DA7 /* loop_unswitch_pass.cpp */; }; + A9F7B5AC29425A1900B30DA7 /* loop_unswitch_pass.cpp in Sources */ = {isa = PBXBuildFile; fileRef = A9F7B0E429425A1700B30DA7 /* loop_unswitch_pass.cpp */; }; + A9F7B5AD29425A1900B30DA7 /* loop_unswitch_pass.cpp in Sources */ = {isa = PBXBuildFile; fileRef = A9F7B0E429425A1700B30DA7 /* loop_unswitch_pass.cpp */; }; + A9F7B5AE29425A1900B30DA7 /* unify_const_pass.cpp in Sources */ = {isa = PBXBuildFile; fileRef = A9F7B0E529425A1700B30DA7 /* unify_const_pass.cpp */; }; + A9F7B5AF29425A1900B30DA7 /* unify_const_pass.cpp in Sources */ = {isa = PBXBuildFile; fileRef = A9F7B0E529425A1700B30DA7 /* unify_const_pass.cpp */; }; + A9F7B5B029425A1900B30DA7 /* unify_const_pass.cpp in Sources */ = {isa = PBXBuildFile; fileRef = A9F7B0E529425A1700B30DA7 /* unify_const_pass.cpp */; }; + A9F7B5B129425A1900B30DA7 /* type_manager.cpp in Sources */ = {isa = PBXBuildFile; fileRef = A9F7B0E629425A1700B30DA7 /* type_manager.cpp */; }; + A9F7B5B229425A1900B30DA7 /* type_manager.cpp in Sources */ = {isa = PBXBuildFile; fileRef = A9F7B0E629425A1700B30DA7 /* type_manager.cpp */; }; + A9F7B5B329425A1900B30DA7 /* type_manager.cpp in Sources */ = {isa = PBXBuildFile; fileRef = A9F7B0E629425A1700B30DA7 /* type_manager.cpp */; }; + A9F7B5B429425A1900B30DA7 /* private_to_local_pass.h in Headers */ = {isa = PBXBuildFile; fileRef = A9F7B0E729425A1700B30DA7 /* private_to_local_pass.h */; }; + A9F7B5B529425A1900B30DA7 /* private_to_local_pass.h in Headers */ = {isa = PBXBuildFile; fileRef = A9F7B0E729425A1700B30DA7 /* private_to_local_pass.h */; }; + A9F7B5B629425A1900B30DA7 /* private_to_local_pass.h in Headers */ = {isa = PBXBuildFile; fileRef = A9F7B0E729425A1700B30DA7 /* private_to_local_pass.h */; }; + A9F7B5B729425A1900B30DA7 /* convert_to_half_pass.h in Headers */ = {isa = PBXBuildFile; fileRef = A9F7B0E829425A1700B30DA7 /* convert_to_half_pass.h */; }; + A9F7B5B829425A1900B30DA7 /* convert_to_half_pass.h in Headers */ = {isa = PBXBuildFile; fileRef = A9F7B0E829425A1700B30DA7 /* convert_to_half_pass.h */; }; + A9F7B5B929425A1900B30DA7 /* convert_to_half_pass.h in Headers */ = {isa = PBXBuildFile; fileRef = A9F7B0E829425A1700B30DA7 /* convert_to_half_pass.h */; }; + A9F7B5BA29425A1900B30DA7 /* remove_dontinline_pass.h in Headers */ = {isa = PBXBuildFile; fileRef = A9F7B0E929425A1700B30DA7 /* remove_dontinline_pass.h */; }; + A9F7B5BB29425A1900B30DA7 /* remove_dontinline_pass.h in Headers */ = {isa = PBXBuildFile; fileRef = A9F7B0E929425A1700B30DA7 /* remove_dontinline_pass.h */; }; + A9F7B5BC29425A1900B30DA7 /* remove_dontinline_pass.h in Headers */ = {isa = PBXBuildFile; fileRef = A9F7B0E929425A1700B30DA7 /* remove_dontinline_pass.h */; }; + A9F7B5BD29425A1900B30DA7 /* relax_float_ops_pass.h in Headers */ = {isa = PBXBuildFile; fileRef = A9F7B0EA29425A1700B30DA7 /* relax_float_ops_pass.h */; }; + A9F7B5BE29425A1900B30DA7 /* relax_float_ops_pass.h in Headers */ = {isa = PBXBuildFile; fileRef = A9F7B0EA29425A1700B30DA7 /* relax_float_ops_pass.h */; }; + A9F7B5BF29425A1900B30DA7 /* relax_float_ops_pass.h in Headers */ = {isa = PBXBuildFile; fileRef = A9F7B0EA29425A1700B30DA7 /* relax_float_ops_pass.h */; }; + A9F7B5C029425A1900B30DA7 /* inline_pass.cpp in Sources */ = {isa = PBXBuildFile; fileRef = A9F7B0EB29425A1700B30DA7 /* inline_pass.cpp */; }; + A9F7B5C129425A1900B30DA7 /* inline_pass.cpp in Sources */ = {isa = PBXBuildFile; fileRef = A9F7B0EB29425A1700B30DA7 /* inline_pass.cpp */; }; + A9F7B5C229425A1900B30DA7 /* inline_pass.cpp in Sources */ = {isa = PBXBuildFile; fileRef = A9F7B0EB29425A1700B30DA7 /* inline_pass.cpp */; }; + A9F7B5C329425A1900B30DA7 /* def_use_manager.h in Headers */ = {isa = PBXBuildFile; fileRef = A9F7B0EC29425A1700B30DA7 /* def_use_manager.h */; }; + A9F7B5C429425A1900B30DA7 /* def_use_manager.h in Headers */ = {isa = PBXBuildFile; fileRef = A9F7B0EC29425A1700B30DA7 /* def_use_manager.h */; }; + A9F7B5C529425A1900B30DA7 /* def_use_manager.h in Headers */ = {isa = PBXBuildFile; fileRef = A9F7B0EC29425A1700B30DA7 /* def_use_manager.h */; }; + A9F7B5C629425A1900B30DA7 /* ir_loader.cpp in Sources */ = {isa = PBXBuildFile; fileRef = A9F7B0ED29425A1700B30DA7 /* ir_loader.cpp */; }; + A9F7B5C729425A1900B30DA7 /* ir_loader.cpp in Sources */ = {isa = PBXBuildFile; fileRef = A9F7B0ED29425A1700B30DA7 /* ir_loader.cpp */; }; + A9F7B5C829425A1900B30DA7 /* ir_loader.cpp in Sources */ = {isa = PBXBuildFile; fileRef = A9F7B0ED29425A1700B30DA7 /* ir_loader.cpp */; }; + A9F7B5C929425A1900B30DA7 /* convert_to_sampled_image_pass.h in Headers */ = {isa = PBXBuildFile; fileRef = A9F7B0EE29425A1700B30DA7 /* convert_to_sampled_image_pass.h */; }; + A9F7B5CA29425A1900B30DA7 /* convert_to_sampled_image_pass.h in Headers */ = {isa = PBXBuildFile; fileRef = A9F7B0EE29425A1700B30DA7 /* convert_to_sampled_image_pass.h */; }; + A9F7B5CB29425A1900B30DA7 /* convert_to_sampled_image_pass.h in Headers */ = {isa = PBXBuildFile; fileRef = A9F7B0EE29425A1700B30DA7 /* convert_to_sampled_image_pass.h */; }; + A9F7B5CC29425A1900B30DA7 /* cfg_cleanup_pass.h in Headers */ = {isa = PBXBuildFile; fileRef = A9F7B0EF29425A1700B30DA7 /* cfg_cleanup_pass.h */; }; + A9F7B5CD29425A1900B30DA7 /* cfg_cleanup_pass.h in Headers */ = {isa = PBXBuildFile; fileRef = A9F7B0EF29425A1700B30DA7 /* cfg_cleanup_pass.h */; }; + A9F7B5CE29425A1900B30DA7 /* cfg_cleanup_pass.h in Headers */ = {isa = PBXBuildFile; fileRef = A9F7B0EF29425A1700B30DA7 /* cfg_cleanup_pass.h */; }; + A9F7B5CF29425A1900B30DA7 /* licm_pass.cpp in Sources */ = {isa = PBXBuildFile; fileRef = A9F7B0F029425A1700B30DA7 /* licm_pass.cpp */; }; + A9F7B5D029425A1900B30DA7 /* licm_pass.cpp in Sources */ = {isa = PBXBuildFile; fileRef = A9F7B0F029425A1700B30DA7 /* licm_pass.cpp */; }; + A9F7B5D129425A1900B30DA7 /* licm_pass.cpp in Sources */ = {isa = PBXBuildFile; fileRef = A9F7B0F029425A1700B30DA7 /* licm_pass.cpp */; }; + A9F7B5D229425A1900B30DA7 /* eliminate_dead_functions_pass.cpp in Sources */ = {isa = PBXBuildFile; fileRef = A9F7B0F129425A1700B30DA7 /* eliminate_dead_functions_pass.cpp */; }; + A9F7B5D329425A1900B30DA7 /* eliminate_dead_functions_pass.cpp in Sources */ = {isa = PBXBuildFile; fileRef = A9F7B0F129425A1700B30DA7 /* eliminate_dead_functions_pass.cpp */; }; + A9F7B5D429425A1900B30DA7 /* eliminate_dead_functions_pass.cpp in Sources */ = {isa = PBXBuildFile; fileRef = A9F7B0F129425A1700B30DA7 /* eliminate_dead_functions_pass.cpp */; }; + A9F7B5D529425A1900B30DA7 /* local_redundancy_elimination.h in Headers */ = {isa = PBXBuildFile; fileRef = A9F7B0F229425A1700B30DA7 /* local_redundancy_elimination.h */; }; + A9F7B5D629425A1900B30DA7 /* local_redundancy_elimination.h in Headers */ = {isa = PBXBuildFile; fileRef = A9F7B0F229425A1700B30DA7 /* local_redundancy_elimination.h */; }; + A9F7B5D729425A1900B30DA7 /* local_redundancy_elimination.h in Headers */ = {isa = PBXBuildFile; fileRef = A9F7B0F229425A1700B30DA7 /* local_redundancy_elimination.h */; }; + A9F7B5D829425A1900B30DA7 /* loop_peeling.h in Headers */ = {isa = PBXBuildFile; fileRef = A9F7B0F329425A1700B30DA7 /* loop_peeling.h */; }; + A9F7B5D929425A1900B30DA7 /* loop_peeling.h in Headers */ = {isa = PBXBuildFile; fileRef = A9F7B0F329425A1700B30DA7 /* loop_peeling.h */; }; + A9F7B5DA29425A1900B30DA7 /* loop_peeling.h in Headers */ = {isa = PBXBuildFile; fileRef = A9F7B0F329425A1700B30DA7 /* loop_peeling.h */; }; + A9F7B5DB29425A1900B30DA7 /* vector_dce.cpp in Sources */ = {isa = PBXBuildFile; fileRef = A9F7B0F429425A1700B30DA7 /* vector_dce.cpp */; }; + A9F7B5DC29425A1900B30DA7 /* vector_dce.cpp in Sources */ = {isa = PBXBuildFile; fileRef = A9F7B0F429425A1700B30DA7 /* vector_dce.cpp */; }; + A9F7B5DD29425A1900B30DA7 /* vector_dce.cpp in Sources */ = {isa = PBXBuildFile; fileRef = A9F7B0F429425A1700B30DA7 /* vector_dce.cpp */; }; + A9F7B5DE29425A1900B30DA7 /* block_merge_util.h in Headers */ = {isa = PBXBuildFile; fileRef = A9F7B0F529425A1700B30DA7 /* block_merge_util.h */; }; + A9F7B5DF29425A1900B30DA7 /* block_merge_util.h in Headers */ = {isa = PBXBuildFile; fileRef = A9F7B0F529425A1700B30DA7 /* block_merge_util.h */; }; + A9F7B5E029425A1900B30DA7 /* block_merge_util.h in Headers */ = {isa = PBXBuildFile; fileRef = A9F7B0F529425A1700B30DA7 /* block_merge_util.h */; }; + A9F7B5E129425A1900B30DA7 /* loop_unroller.cpp in Sources */ = {isa = PBXBuildFile; fileRef = A9F7B0F629425A1700B30DA7 /* loop_unroller.cpp */; }; + A9F7B5E229425A1900B30DA7 /* loop_unroller.cpp in Sources */ = {isa = PBXBuildFile; fileRef = A9F7B0F629425A1700B30DA7 /* loop_unroller.cpp */; }; + A9F7B5E329425A1900B30DA7 /* loop_unroller.cpp in Sources */ = {isa = PBXBuildFile; fileRef = A9F7B0F629425A1700B30DA7 /* loop_unroller.cpp */; }; + A9F7B5E429425A1900B30DA7 /* desc_sroa.h in Headers */ = {isa = PBXBuildFile; fileRef = A9F7B0F729425A1700B30DA7 /* desc_sroa.h */; }; + A9F7B5E529425A1900B30DA7 /* desc_sroa.h in Headers */ = {isa = PBXBuildFile; fileRef = A9F7B0F729425A1700B30DA7 /* desc_sroa.h */; }; + A9F7B5E629425A1900B30DA7 /* desc_sroa.h in Headers */ = {isa = PBXBuildFile; fileRef = A9F7B0F729425A1700B30DA7 /* desc_sroa.h */; }; + A9F7B5E729425A1900B30DA7 /* constants.cpp in Sources */ = {isa = PBXBuildFile; fileRef = A9F7B0F829425A1700B30DA7 /* constants.cpp */; }; + A9F7B5E829425A1900B30DA7 /* constants.cpp in Sources */ = {isa = PBXBuildFile; fileRef = A9F7B0F829425A1700B30DA7 /* constants.cpp */; }; + A9F7B5E929425A1900B30DA7 /* constants.cpp in Sources */ = {isa = PBXBuildFile; fileRef = A9F7B0F829425A1700B30DA7 /* constants.cpp */; }; + A9F7B5EA29425A1900B30DA7 /* loop_fusion_pass.h in Headers */ = {isa = PBXBuildFile; fileRef = A9F7B0F929425A1700B30DA7 /* loop_fusion_pass.h */; }; + A9F7B5EB29425A1900B30DA7 /* loop_fusion_pass.h in Headers */ = {isa = PBXBuildFile; fileRef = A9F7B0F929425A1700B30DA7 /* loop_fusion_pass.h */; }; + A9F7B5EC29425A1900B30DA7 /* loop_fusion_pass.h in Headers */ = {isa = PBXBuildFile; fileRef = A9F7B0F929425A1700B30DA7 /* loop_fusion_pass.h */; }; + A9F7B5ED29425A1900B30DA7 /* struct_cfg_analysis.h in Headers */ = {isa = PBXBuildFile; fileRef = A9F7B0FA29425A1700B30DA7 /* struct_cfg_analysis.h */; }; + A9F7B5EE29425A1900B30DA7 /* struct_cfg_analysis.h in Headers */ = {isa = PBXBuildFile; fileRef = A9F7B0FA29425A1700B30DA7 /* struct_cfg_analysis.h */; }; + A9F7B5EF29425A1900B30DA7 /* struct_cfg_analysis.h in Headers */ = {isa = PBXBuildFile; fileRef = A9F7B0FA29425A1700B30DA7 /* struct_cfg_analysis.h */; }; + A9F7B5F029425A1900B30DA7 /* desc_sroa_util.cpp in Sources */ = {isa = PBXBuildFile; fileRef = A9F7B0FB29425A1700B30DA7 /* desc_sroa_util.cpp */; }; + A9F7B5F129425A1900B30DA7 /* desc_sroa_util.cpp in Sources */ = {isa = PBXBuildFile; fileRef = A9F7B0FB29425A1700B30DA7 /* desc_sroa_util.cpp */; }; + A9F7B5F229425A1900B30DA7 /* desc_sroa_util.cpp in Sources */ = {isa = PBXBuildFile; fileRef = A9F7B0FB29425A1700B30DA7 /* desc_sroa_util.cpp */; }; + A9F7B5F329425A1900B30DA7 /* inst_buff_addr_check_pass.cpp in Sources */ = {isa = PBXBuildFile; fileRef = A9F7B0FC29425A1700B30DA7 /* inst_buff_addr_check_pass.cpp */; }; + A9F7B5F429425A1900B30DA7 /* inst_buff_addr_check_pass.cpp in Sources */ = {isa = PBXBuildFile; fileRef = A9F7B0FC29425A1700B30DA7 /* inst_buff_addr_check_pass.cpp */; }; + A9F7B5F529425A1900B30DA7 /* inst_buff_addr_check_pass.cpp in Sources */ = {isa = PBXBuildFile; fileRef = A9F7B0FC29425A1700B30DA7 /* inst_buff_addr_check_pass.cpp */; }; + A9F7B5F629425A1900B30DA7 /* def_use_manager.cpp in Sources */ = {isa = PBXBuildFile; fileRef = A9F7B0FD29425A1700B30DA7 /* def_use_manager.cpp */; }; + A9F7B5F729425A1900B30DA7 /* def_use_manager.cpp in Sources */ = {isa = PBXBuildFile; fileRef = A9F7B0FD29425A1700B30DA7 /* def_use_manager.cpp */; }; + A9F7B5F829425A1900B30DA7 /* def_use_manager.cpp in Sources */ = {isa = PBXBuildFile; fileRef = A9F7B0FD29425A1700B30DA7 /* def_use_manager.cpp */; }; + A9F7B5F929425A1900B30DA7 /* wrap_opkill.h in Headers */ = {isa = PBXBuildFile; fileRef = A9F7B0FE29425A1700B30DA7 /* wrap_opkill.h */; }; + A9F7B5FA29425A1900B30DA7 /* wrap_opkill.h in Headers */ = {isa = PBXBuildFile; fileRef = A9F7B0FE29425A1700B30DA7 /* wrap_opkill.h */; }; + A9F7B5FB29425A1900B30DA7 /* wrap_opkill.h in Headers */ = {isa = PBXBuildFile; fileRef = A9F7B0FE29425A1700B30DA7 /* wrap_opkill.h */; }; + A9F7B5FC29425A1900B30DA7 /* empty_pass.h in Headers */ = {isa = PBXBuildFile; fileRef = A9F7B0FF29425A1800B30DA7 /* empty_pass.h */; }; + A9F7B5FD29425A1900B30DA7 /* empty_pass.h in Headers */ = {isa = PBXBuildFile; fileRef = A9F7B0FF29425A1800B30DA7 /* empty_pass.h */; }; + A9F7B5FE29425A1900B30DA7 /* empty_pass.h in Headers */ = {isa = PBXBuildFile; fileRef = A9F7B0FF29425A1800B30DA7 /* empty_pass.h */; }; + A9F7B5FF29425A1900B30DA7 /* decoration_manager.h in Headers */ = {isa = PBXBuildFile; fileRef = A9F7B10029425A1800B30DA7 /* decoration_manager.h */; }; + A9F7B60029425A1900B30DA7 /* decoration_manager.h in Headers */ = {isa = PBXBuildFile; fileRef = A9F7B10029425A1800B30DA7 /* decoration_manager.h */; }; + A9F7B60129425A1900B30DA7 /* decoration_manager.h in Headers */ = {isa = PBXBuildFile; fileRef = A9F7B10029425A1800B30DA7 /* decoration_manager.h */; }; + A9F7B60229425A1900B30DA7 /* ccp_pass.cpp in Sources */ = {isa = PBXBuildFile; fileRef = A9F7B10129425A1800B30DA7 /* ccp_pass.cpp */; }; + A9F7B60329425A1900B30DA7 /* ccp_pass.cpp in Sources */ = {isa = PBXBuildFile; fileRef = A9F7B10129425A1800B30DA7 /* ccp_pass.cpp */; }; + A9F7B60429425A1900B30DA7 /* ccp_pass.cpp in Sources */ = {isa = PBXBuildFile; fileRef = A9F7B10129425A1800B30DA7 /* ccp_pass.cpp */; }; + A9F7B60529425A1900B30DA7 /* local_single_block_elim_pass.h in Headers */ = {isa = PBXBuildFile; fileRef = A9F7B10229425A1800B30DA7 /* local_single_block_elim_pass.h */; }; + A9F7B60629425A1900B30DA7 /* local_single_block_elim_pass.h in Headers */ = {isa = PBXBuildFile; fileRef = A9F7B10229425A1800B30DA7 /* local_single_block_elim_pass.h */; }; + A9F7B60729425A1900B30DA7 /* local_single_block_elim_pass.h in Headers */ = {isa = PBXBuildFile; fileRef = A9F7B10229425A1800B30DA7 /* local_single_block_elim_pass.h */; }; + A9F7B60829425A1900B30DA7 /* interp_fixup_pass.h in Headers */ = {isa = PBXBuildFile; fileRef = A9F7B10329425A1800B30DA7 /* interp_fixup_pass.h */; }; + A9F7B60929425A1900B30DA7 /* interp_fixup_pass.h in Headers */ = {isa = PBXBuildFile; fileRef = A9F7B10329425A1800B30DA7 /* interp_fixup_pass.h */; }; + A9F7B60A29425A1900B30DA7 /* interp_fixup_pass.h in Headers */ = {isa = PBXBuildFile; fileRef = A9F7B10329425A1800B30DA7 /* interp_fixup_pass.h */; }; + A9F7B60B29425A1900B30DA7 /* eliminate_dead_io_components_pass.h in Headers */ = {isa = PBXBuildFile; fileRef = A9F7B10429425A1800B30DA7 /* eliminate_dead_io_components_pass.h */; }; + A9F7B60C29425A1900B30DA7 /* eliminate_dead_io_components_pass.h in Headers */ = {isa = PBXBuildFile; fileRef = A9F7B10429425A1800B30DA7 /* eliminate_dead_io_components_pass.h */; }; + A9F7B60D29425A1900B30DA7 /* eliminate_dead_io_components_pass.h in Headers */ = {isa = PBXBuildFile; fileRef = A9F7B10429425A1800B30DA7 /* eliminate_dead_io_components_pass.h */; }; + A9F7B60E29425A1900B30DA7 /* pch_source_opt.cpp in Sources */ = {isa = PBXBuildFile; fileRef = A9F7B10529425A1800B30DA7 /* pch_source_opt.cpp */; }; + A9F7B60F29425A1900B30DA7 /* pch_source_opt.cpp in Sources */ = {isa = PBXBuildFile; fileRef = A9F7B10529425A1800B30DA7 /* pch_source_opt.cpp */; }; + A9F7B61029425A1900B30DA7 /* pch_source_opt.cpp in Sources */ = {isa = PBXBuildFile; fileRef = A9F7B10529425A1800B30DA7 /* pch_source_opt.cpp */; }; + A9F7B61129425A1900B30DA7 /* inst_buff_addr_check_pass.h in Headers */ = {isa = PBXBuildFile; fileRef = A9F7B10629425A1800B30DA7 /* inst_buff_addr_check_pass.h */; }; + A9F7B61229425A1900B30DA7 /* inst_buff_addr_check_pass.h in Headers */ = {isa = PBXBuildFile; fileRef = A9F7B10629425A1800B30DA7 /* inst_buff_addr_check_pass.h */; }; + A9F7B61329425A1900B30DA7 /* inst_buff_addr_check_pass.h in Headers */ = {isa = PBXBuildFile; fileRef = A9F7B10629425A1800B30DA7 /* inst_buff_addr_check_pass.h */; }; + A9F7B61429425A1900B30DA7 /* strength_reduction_pass.h in Headers */ = {isa = PBXBuildFile; fileRef = A9F7B10729425A1800B30DA7 /* strength_reduction_pass.h */; }; + A9F7B61529425A1900B30DA7 /* strength_reduction_pass.h in Headers */ = {isa = PBXBuildFile; fileRef = A9F7B10729425A1800B30DA7 /* strength_reduction_pass.h */; }; + A9F7B61629425A1900B30DA7 /* strength_reduction_pass.h in Headers */ = {isa = PBXBuildFile; fileRef = A9F7B10729425A1800B30DA7 /* strength_reduction_pass.h */; }; + A9F7B61729425A1900B30DA7 /* aggressive_dead_code_elim_pass.cpp in Sources */ = {isa = PBXBuildFile; fileRef = A9F7B10829425A1800B30DA7 /* aggressive_dead_code_elim_pass.cpp */; }; + A9F7B61829425A1900B30DA7 /* aggressive_dead_code_elim_pass.cpp in Sources */ = {isa = PBXBuildFile; fileRef = A9F7B10829425A1800B30DA7 /* aggressive_dead_code_elim_pass.cpp */; }; + A9F7B61929425A1900B30DA7 /* aggressive_dead_code_elim_pass.cpp in Sources */ = {isa = PBXBuildFile; fileRef = A9F7B10829425A1800B30DA7 /* aggressive_dead_code_elim_pass.cpp */; }; + A9F7B61A29425A1900B30DA7 /* eliminate_dead_functions_util.cpp in Sources */ = {isa = PBXBuildFile; fileRef = A9F7B10929425A1800B30DA7 /* eliminate_dead_functions_util.cpp */; }; + A9F7B61B29425A1900B30DA7 /* eliminate_dead_functions_util.cpp in Sources */ = {isa = PBXBuildFile; fileRef = A9F7B10929425A1800B30DA7 /* eliminate_dead_functions_util.cpp */; }; + A9F7B61C29425A1900B30DA7 /* eliminate_dead_functions_util.cpp in Sources */ = {isa = PBXBuildFile; fileRef = A9F7B10929425A1800B30DA7 /* eliminate_dead_functions_util.cpp */; }; + A9F7B61D29425A1900B30DA7 /* inst_debug_printf_pass.h in Headers */ = {isa = PBXBuildFile; fileRef = A9F7B10A29425A1800B30DA7 /* inst_debug_printf_pass.h */; }; + A9F7B61E29425A1900B30DA7 /* inst_debug_printf_pass.h in Headers */ = {isa = PBXBuildFile; fileRef = A9F7B10A29425A1800B30DA7 /* inst_debug_printf_pass.h */; }; + A9F7B61F29425A1900B30DA7 /* inst_debug_printf_pass.h in Headers */ = {isa = PBXBuildFile; fileRef = A9F7B10A29425A1800B30DA7 /* inst_debug_printf_pass.h */; }; + A9F7B62029425A1900B30DA7 /* simplification_pass.cpp in Sources */ = {isa = PBXBuildFile; fileRef = A9F7B10B29425A1800B30DA7 /* simplification_pass.cpp */; }; + A9F7B62129425A1900B30DA7 /* simplification_pass.cpp in Sources */ = {isa = PBXBuildFile; fileRef = A9F7B10B29425A1800B30DA7 /* simplification_pass.cpp */; }; + A9F7B62229425A1900B30DA7 /* simplification_pass.cpp in Sources */ = {isa = PBXBuildFile; fileRef = A9F7B10B29425A1800B30DA7 /* simplification_pass.cpp */; }; + A9F7B62329425A1900B30DA7 /* dead_branch_elim_pass.cpp in Sources */ = {isa = PBXBuildFile; fileRef = A9F7B10C29425A1800B30DA7 /* dead_branch_elim_pass.cpp */; }; + A9F7B62429425A1900B30DA7 /* dead_branch_elim_pass.cpp in Sources */ = {isa = PBXBuildFile; fileRef = A9F7B10C29425A1800B30DA7 /* dead_branch_elim_pass.cpp */; }; + A9F7B62529425A1900B30DA7 /* dead_branch_elim_pass.cpp in Sources */ = {isa = PBXBuildFile; fileRef = A9F7B10C29425A1800B30DA7 /* dead_branch_elim_pass.cpp */; }; + A9F7B62629425A1900B30DA7 /* flatten_decoration_pass.cpp in Sources */ = {isa = PBXBuildFile; fileRef = A9F7B10D29425A1800B30DA7 /* flatten_decoration_pass.cpp */; }; + A9F7B62729425A1900B30DA7 /* flatten_decoration_pass.cpp in Sources */ = {isa = PBXBuildFile; fileRef = A9F7B10D29425A1800B30DA7 /* flatten_decoration_pass.cpp */; }; + A9F7B62829425A1900B30DA7 /* flatten_decoration_pass.cpp in Sources */ = {isa = PBXBuildFile; fileRef = A9F7B10D29425A1800B30DA7 /* flatten_decoration_pass.cpp */; }; + A9F7B62929425A1900B30DA7 /* dead_insert_elim_pass.h in Headers */ = {isa = PBXBuildFile; fileRef = A9F7B10E29425A1800B30DA7 /* dead_insert_elim_pass.h */; }; + A9F7B62A29425A1900B30DA7 /* dead_insert_elim_pass.h in Headers */ = {isa = PBXBuildFile; fileRef = A9F7B10E29425A1800B30DA7 /* dead_insert_elim_pass.h */; }; + A9F7B62B29425A1900B30DA7 /* dead_insert_elim_pass.h in Headers */ = {isa = PBXBuildFile; fileRef = A9F7B10E29425A1800B30DA7 /* dead_insert_elim_pass.h */; }; + A9F7B62C29425A1900B30DA7 /* folding_rules.cpp in Sources */ = {isa = PBXBuildFile; fileRef = A9F7B10F29425A1800B30DA7 /* folding_rules.cpp */; }; + A9F7B62D29425A1900B30DA7 /* folding_rules.cpp in Sources */ = {isa = PBXBuildFile; fileRef = A9F7B10F29425A1800B30DA7 /* folding_rules.cpp */; }; + A9F7B62E29425A1900B30DA7 /* folding_rules.cpp in Sources */ = {isa = PBXBuildFile; fileRef = A9F7B10F29425A1800B30DA7 /* folding_rules.cpp */; }; + A9F7B62F29425A1900B30DA7 /* freeze_spec_constant_value_pass.h in Headers */ = {isa = PBXBuildFile; fileRef = A9F7B11029425A1800B30DA7 /* freeze_spec_constant_value_pass.h */; }; + A9F7B63029425A1900B30DA7 /* freeze_spec_constant_value_pass.h in Headers */ = {isa = PBXBuildFile; fileRef = A9F7B11029425A1800B30DA7 /* freeze_spec_constant_value_pass.h */; }; + A9F7B63129425A1900B30DA7 /* freeze_spec_constant_value_pass.h in Headers */ = {isa = PBXBuildFile; fileRef = A9F7B11029425A1800B30DA7 /* freeze_spec_constant_value_pass.h */; }; + A9F7B63229425A1900B30DA7 /* ir_context.cpp in Sources */ = {isa = PBXBuildFile; fileRef = A9F7B11129425A1800B30DA7 /* ir_context.cpp */; }; + A9F7B63329425A1900B30DA7 /* ir_context.cpp in Sources */ = {isa = PBXBuildFile; fileRef = A9F7B11129425A1800B30DA7 /* ir_context.cpp */; }; + A9F7B63429425A1900B30DA7 /* ir_context.cpp in Sources */ = {isa = PBXBuildFile; fileRef = A9F7B11129425A1800B30DA7 /* ir_context.cpp */; }; + A9F7B63529425A1900B30DA7 /* instrument_pass.h in Headers */ = {isa = PBXBuildFile; fileRef = A9F7B11229425A1800B30DA7 /* instrument_pass.h */; }; + A9F7B63629425A1900B30DA7 /* instrument_pass.h in Headers */ = {isa = PBXBuildFile; fileRef = A9F7B11229425A1800B30DA7 /* instrument_pass.h */; }; + A9F7B63729425A1900B30DA7 /* instrument_pass.h in Headers */ = {isa = PBXBuildFile; fileRef = A9F7B11229425A1800B30DA7 /* instrument_pass.h */; }; + A9F7B63829425A1900B30DA7 /* mem_pass.h in Headers */ = {isa = PBXBuildFile; fileRef = A9F7B11329425A1800B30DA7 /* mem_pass.h */; }; + A9F7B63929425A1900B30DA7 /* mem_pass.h in Headers */ = {isa = PBXBuildFile; fileRef = A9F7B11329425A1800B30DA7 /* mem_pass.h */; }; + A9F7B63A29425A1900B30DA7 /* mem_pass.h in Headers */ = {isa = PBXBuildFile; fileRef = A9F7B11329425A1800B30DA7 /* mem_pass.h */; }; + A9F7B63B29425A1900B30DA7 /* loop_descriptor.cpp in Sources */ = {isa = PBXBuildFile; fileRef = A9F7B11429425A1800B30DA7 /* loop_descriptor.cpp */; }; + A9F7B63C29425A1900B30DA7 /* loop_descriptor.cpp in Sources */ = {isa = PBXBuildFile; fileRef = A9F7B11429425A1800B30DA7 /* loop_descriptor.cpp */; }; + A9F7B63D29425A1900B30DA7 /* loop_descriptor.cpp in Sources */ = {isa = PBXBuildFile; fileRef = A9F7B11429425A1800B30DA7 /* loop_descriptor.cpp */; }; + A9F7B63E29425A1900B30DA7 /* eliminate_dead_members_pass.h in Headers */ = {isa = PBXBuildFile; fileRef = A9F7B11529425A1800B30DA7 /* eliminate_dead_members_pass.h */; }; + A9F7B63F29425A1900B30DA7 /* eliminate_dead_members_pass.h in Headers */ = {isa = PBXBuildFile; fileRef = A9F7B11529425A1800B30DA7 /* eliminate_dead_members_pass.h */; }; + A9F7B64029425A1900B30DA7 /* eliminate_dead_members_pass.h in Headers */ = {isa = PBXBuildFile; fileRef = A9F7B11529425A1800B30DA7 /* eliminate_dead_members_pass.h */; }; + A9F7B64129425A1900B30DA7 /* function.cpp in Sources */ = {isa = PBXBuildFile; fileRef = A9F7B11629425A1800B30DA7 /* function.cpp */; }; + A9F7B64229425A1900B30DA7 /* function.cpp in Sources */ = {isa = PBXBuildFile; fileRef = A9F7B11629425A1800B30DA7 /* function.cpp */; }; + A9F7B64329425A1900B30DA7 /* function.cpp in Sources */ = {isa = PBXBuildFile; fileRef = A9F7B11629425A1800B30DA7 /* function.cpp */; }; + A9F7B64429425A1900B30DA7 /* instruction_list.cpp in Sources */ = {isa = PBXBuildFile; fileRef = A9F7B11729425A1800B30DA7 /* instruction_list.cpp */; }; + A9F7B64529425A1900B30DA7 /* instruction_list.cpp in Sources */ = {isa = PBXBuildFile; fileRef = A9F7B11729425A1800B30DA7 /* instruction_list.cpp */; }; + A9F7B64629425A1900B30DA7 /* instruction_list.cpp in Sources */ = {isa = PBXBuildFile; fileRef = A9F7B11729425A1800B30DA7 /* instruction_list.cpp */; }; + A9F7B64729425A1900B30DA7 /* control_dependence.cpp in Sources */ = {isa = PBXBuildFile; fileRef = A9F7B11829425A1800B30DA7 /* control_dependence.cpp */; }; + A9F7B64829425A1900B30DA7 /* control_dependence.cpp in Sources */ = {isa = PBXBuildFile; fileRef = A9F7B11829425A1800B30DA7 /* control_dependence.cpp */; }; + A9F7B64929425A1900B30DA7 /* control_dependence.cpp in Sources */ = {isa = PBXBuildFile; fileRef = A9F7B11829425A1800B30DA7 /* control_dependence.cpp */; }; + A9F7B64A29425A1900B30DA7 /* composite.cpp in Sources */ = {isa = PBXBuildFile; fileRef = A9F7B11929425A1800B30DA7 /* composite.cpp */; }; + A9F7B64B29425A1900B30DA7 /* composite.cpp in Sources */ = {isa = PBXBuildFile; fileRef = A9F7B11929425A1800B30DA7 /* composite.cpp */; }; + A9F7B64C29425A1900B30DA7 /* composite.cpp in Sources */ = {isa = PBXBuildFile; fileRef = A9F7B11929425A1800B30DA7 /* composite.cpp */; }; + A9F7B64D29425A1900B30DA7 /* convert_to_half_pass.cpp in Sources */ = {isa = PBXBuildFile; fileRef = A9F7B11A29425A1800B30DA7 /* convert_to_half_pass.cpp */; }; + A9F7B64E29425A1900B30DA7 /* convert_to_half_pass.cpp in Sources */ = {isa = PBXBuildFile; fileRef = A9F7B11A29425A1800B30DA7 /* convert_to_half_pass.cpp */; }; + A9F7B64F29425A1900B30DA7 /* convert_to_half_pass.cpp in Sources */ = {isa = PBXBuildFile; fileRef = A9F7B11A29425A1800B30DA7 /* convert_to_half_pass.cpp */; }; + A9F7B65029425A1900B30DA7 /* inline_pass.h in Headers */ = {isa = PBXBuildFile; fileRef = A9F7B11B29425A1800B30DA7 /* inline_pass.h */; }; + A9F7B65129425A1900B30DA7 /* inline_pass.h in Headers */ = {isa = PBXBuildFile; fileRef = A9F7B11B29425A1800B30DA7 /* inline_pass.h */; }; + A9F7B65229425A1900B30DA7 /* inline_pass.h in Headers */ = {isa = PBXBuildFile; fileRef = A9F7B11B29425A1800B30DA7 /* inline_pass.h */; }; + A9F7B65329425A1900B30DA7 /* loop_dependence.h in Headers */ = {isa = PBXBuildFile; fileRef = A9F7B11C29425A1800B30DA7 /* loop_dependence.h */; }; + A9F7B65429425A1900B30DA7 /* loop_dependence.h in Headers */ = {isa = PBXBuildFile; fileRef = A9F7B11C29425A1800B30DA7 /* loop_dependence.h */; }; + A9F7B65529425A1900B30DA7 /* loop_dependence.h in Headers */ = {isa = PBXBuildFile; fileRef = A9F7B11C29425A1800B30DA7 /* loop_dependence.h */; }; + A9F7B65629425A1900B30DA7 /* value_number_table.h in Headers */ = {isa = PBXBuildFile; fileRef = A9F7B11D29425A1800B30DA7 /* value_number_table.h */; }; + A9F7B65729425A1900B30DA7 /* value_number_table.h in Headers */ = {isa = PBXBuildFile; fileRef = A9F7B11D29425A1800B30DA7 /* value_number_table.h */; }; + A9F7B65829425A1900B30DA7 /* value_number_table.h in Headers */ = {isa = PBXBuildFile; fileRef = A9F7B11D29425A1800B30DA7 /* value_number_table.h */; }; + A9F7B65929425A1900B30DA7 /* strip_nonsemantic_info_pass.cpp in Sources */ = {isa = PBXBuildFile; fileRef = A9F7B11E29425A1800B30DA7 /* strip_nonsemantic_info_pass.cpp */; }; + A9F7B65A29425A1900B30DA7 /* strip_nonsemantic_info_pass.cpp in Sources */ = {isa = PBXBuildFile; fileRef = A9F7B11E29425A1800B30DA7 /* strip_nonsemantic_info_pass.cpp */; }; + A9F7B65B29425A1900B30DA7 /* strip_nonsemantic_info_pass.cpp in Sources */ = {isa = PBXBuildFile; fileRef = A9F7B11E29425A1800B30DA7 /* strip_nonsemantic_info_pass.cpp */; }; + A9F7B65C29425A1900B30DA7 /* flatten_decoration_pass.h in Headers */ = {isa = PBXBuildFile; fileRef = A9F7B11F29425A1800B30DA7 /* flatten_decoration_pass.h */; }; + A9F7B65D29425A1900B30DA7 /* flatten_decoration_pass.h in Headers */ = {isa = PBXBuildFile; fileRef = A9F7B11F29425A1800B30DA7 /* flatten_decoration_pass.h */; }; + A9F7B65E29425A1900B30DA7 /* flatten_decoration_pass.h in Headers */ = {isa = PBXBuildFile; fileRef = A9F7B11F29425A1800B30DA7 /* flatten_decoration_pass.h */; }; + A9F7B65F29425A1900B30DA7 /* if_conversion.cpp in Sources */ = {isa = PBXBuildFile; fileRef = A9F7B12029425A1800B30DA7 /* if_conversion.cpp */; }; + A9F7B66029425A1900B30DA7 /* if_conversion.cpp in Sources */ = {isa = PBXBuildFile; fileRef = A9F7B12029425A1800B30DA7 /* if_conversion.cpp */; }; + A9F7B66129425A1900B30DA7 /* if_conversion.cpp in Sources */ = {isa = PBXBuildFile; fileRef = A9F7B12029425A1800B30DA7 /* if_conversion.cpp */; }; + A9F7B66229425A1900B30DA7 /* fix_func_call_arguments.cpp in Sources */ = {isa = PBXBuildFile; fileRef = A9F7B12129425A1800B30DA7 /* fix_func_call_arguments.cpp */; }; + A9F7B66329425A1900B30DA7 /* fix_func_call_arguments.cpp in Sources */ = {isa = PBXBuildFile; fileRef = A9F7B12129425A1800B30DA7 /* fix_func_call_arguments.cpp */; }; + A9F7B66429425A1900B30DA7 /* fix_func_call_arguments.cpp in Sources */ = {isa = PBXBuildFile; fileRef = A9F7B12129425A1800B30DA7 /* fix_func_call_arguments.cpp */; }; + A9F7B66529425A1900B30DA7 /* debug_info_manager.cpp in Sources */ = {isa = PBXBuildFile; fileRef = A9F7B12229425A1800B30DA7 /* debug_info_manager.cpp */; }; + A9F7B66629425A1900B30DA7 /* debug_info_manager.cpp in Sources */ = {isa = PBXBuildFile; fileRef = A9F7B12229425A1800B30DA7 /* debug_info_manager.cpp */; }; + A9F7B66729425A1900B30DA7 /* debug_info_manager.cpp in Sources */ = {isa = PBXBuildFile; fileRef = A9F7B12229425A1800B30DA7 /* debug_info_manager.cpp */; }; + A9F7B66829425A1900B30DA7 /* inline_exhaustive_pass.h in Headers */ = {isa = PBXBuildFile; fileRef = A9F7B12329425A1800B30DA7 /* inline_exhaustive_pass.h */; }; + A9F7B66929425A1900B30DA7 /* inline_exhaustive_pass.h in Headers */ = {isa = PBXBuildFile; fileRef = A9F7B12329425A1800B30DA7 /* inline_exhaustive_pass.h */; }; + A9F7B66A29425A1900B30DA7 /* inline_exhaustive_pass.h in Headers */ = {isa = PBXBuildFile; fileRef = A9F7B12329425A1800B30DA7 /* inline_exhaustive_pass.h */; }; + A9F7B66B29425A1900B30DA7 /* constants.h in Headers */ = {isa = PBXBuildFile; fileRef = A9F7B12429425A1800B30DA7 /* constants.h */; }; + A9F7B66C29425A1900B30DA7 /* constants.h in Headers */ = {isa = PBXBuildFile; fileRef = A9F7B12429425A1800B30DA7 /* constants.h */; }; + A9F7B66D29425A1900B30DA7 /* constants.h in Headers */ = {isa = PBXBuildFile; fileRef = A9F7B12429425A1800B30DA7 /* constants.h */; }; + A9F7B66E29425A1900B30DA7 /* eliminate_dead_members_pass.cpp in Sources */ = {isa = PBXBuildFile; fileRef = A9F7B12529425A1800B30DA7 /* eliminate_dead_members_pass.cpp */; }; + A9F7B66F29425A1900B30DA7 /* eliminate_dead_members_pass.cpp in Sources */ = {isa = PBXBuildFile; fileRef = A9F7B12529425A1800B30DA7 /* eliminate_dead_members_pass.cpp */; }; + A9F7B67029425A1900B30DA7 /* eliminate_dead_members_pass.cpp in Sources */ = {isa = PBXBuildFile; fileRef = A9F7B12529425A1800B30DA7 /* eliminate_dead_members_pass.cpp */; }; + A9F7B67129425A1900B30DA7 /* strength_reduction_pass.cpp in Sources */ = {isa = PBXBuildFile; fileRef = A9F7B12629425A1800B30DA7 /* strength_reduction_pass.cpp */; }; + A9F7B67229425A1900B30DA7 /* strength_reduction_pass.cpp in Sources */ = {isa = PBXBuildFile; fileRef = A9F7B12629425A1800B30DA7 /* strength_reduction_pass.cpp */; }; + A9F7B67329425A1900B30DA7 /* strength_reduction_pass.cpp in Sources */ = {isa = PBXBuildFile; fileRef = A9F7B12629425A1800B30DA7 /* strength_reduction_pass.cpp */; }; + A9F7B67429425A1900B30DA7 /* desc_sroa.cpp in Sources */ = {isa = PBXBuildFile; fileRef = A9F7B12729425A1800B30DA7 /* desc_sroa.cpp */; }; + A9F7B67529425A1900B30DA7 /* desc_sroa.cpp in Sources */ = {isa = PBXBuildFile; fileRef = A9F7B12729425A1800B30DA7 /* desc_sroa.cpp */; }; + A9F7B67629425A1900B30DA7 /* desc_sroa.cpp in Sources */ = {isa = PBXBuildFile; fileRef = A9F7B12729425A1800B30DA7 /* desc_sroa.cpp */; }; + A9F7B67729425A1900B30DA7 /* block_merge_util.cpp in Sources */ = {isa = PBXBuildFile; fileRef = A9F7B12829425A1800B30DA7 /* block_merge_util.cpp */; }; + A9F7B67829425A1900B30DA7 /* block_merge_util.cpp in Sources */ = {isa = PBXBuildFile; fileRef = A9F7B12829425A1800B30DA7 /* block_merge_util.cpp */; }; + A9F7B67929425A1900B30DA7 /* block_merge_util.cpp in Sources */ = {isa = PBXBuildFile; fileRef = A9F7B12829425A1800B30DA7 /* block_merge_util.cpp */; }; + A9F7B67A29425A1900B30DA7 /* upgrade_memory_model.h in Headers */ = {isa = PBXBuildFile; fileRef = A9F7B12929425A1800B30DA7 /* upgrade_memory_model.h */; }; + A9F7B67B29425A1900B30DA7 /* upgrade_memory_model.h in Headers */ = {isa = PBXBuildFile; fileRef = A9F7B12929425A1800B30DA7 /* upgrade_memory_model.h */; }; + A9F7B67C29425A1900B30DA7 /* upgrade_memory_model.h in Headers */ = {isa = PBXBuildFile; fileRef = A9F7B12929425A1800B30DA7 /* upgrade_memory_model.h */; }; + A9F7B67D29425A1900B30DA7 /* copy_prop_arrays.cpp in Sources */ = {isa = PBXBuildFile; fileRef = A9F7B12A29425A1800B30DA7 /* copy_prop_arrays.cpp */; }; + A9F7B67E29425A1900B30DA7 /* copy_prop_arrays.cpp in Sources */ = {isa = PBXBuildFile; fileRef = A9F7B12A29425A1800B30DA7 /* copy_prop_arrays.cpp */; }; + A9F7B67F29425A1900B30DA7 /* copy_prop_arrays.cpp in Sources */ = {isa = PBXBuildFile; fileRef = A9F7B12A29425A1800B30DA7 /* copy_prop_arrays.cpp */; }; + A9F7B68029425A1900B30DA7 /* analyze_live_input_pass.h in Headers */ = {isa = PBXBuildFile; fileRef = A9F7B12B29425A1800B30DA7 /* analyze_live_input_pass.h */; }; + A9F7B68129425A1900B30DA7 /* analyze_live_input_pass.h in Headers */ = {isa = PBXBuildFile; fileRef = A9F7B12B29425A1800B30DA7 /* analyze_live_input_pass.h */; }; + A9F7B68229425A1900B30DA7 /* analyze_live_input_pass.h in Headers */ = {isa = PBXBuildFile; fileRef = A9F7B12B29425A1800B30DA7 /* analyze_live_input_pass.h */; }; + A9F7B68329425A1900B30DA7 /* pass_manager.cpp in Sources */ = {isa = PBXBuildFile; fileRef = A9F7B12C29425A1800B30DA7 /* pass_manager.cpp */; }; + A9F7B68429425A1900B30DA7 /* pass_manager.cpp in Sources */ = {isa = PBXBuildFile; fileRef = A9F7B12C29425A1800B30DA7 /* pass_manager.cpp */; }; + A9F7B68529425A1900B30DA7 /* pass_manager.cpp in Sources */ = {isa = PBXBuildFile; fileRef = A9F7B12C29425A1800B30DA7 /* pass_manager.cpp */; }; + A9F7B68629425A1900B30DA7 /* inline_exhaustive_pass.cpp in Sources */ = {isa = PBXBuildFile; fileRef = A9F7B12D29425A1800B30DA7 /* inline_exhaustive_pass.cpp */; }; + A9F7B68729425A1900B30DA7 /* inline_exhaustive_pass.cpp in Sources */ = {isa = PBXBuildFile; fileRef = A9F7B12D29425A1800B30DA7 /* inline_exhaustive_pass.cpp */; }; + A9F7B68829425A1900B30DA7 /* inline_exhaustive_pass.cpp in Sources */ = {isa = PBXBuildFile; fileRef = A9F7B12D29425A1800B30DA7 /* inline_exhaustive_pass.cpp */; }; + A9F7B68929425A1900B30DA7 /* loop_fission.h in Headers */ = {isa = PBXBuildFile; fileRef = A9F7B12E29425A1800B30DA7 /* loop_fission.h */; }; + A9F7B68A29425A1900B30DA7 /* loop_fission.h in Headers */ = {isa = PBXBuildFile; fileRef = A9F7B12E29425A1800B30DA7 /* loop_fission.h */; }; + A9F7B68B29425A1900B30DA7 /* loop_fission.h in Headers */ = {isa = PBXBuildFile; fileRef = A9F7B12E29425A1800B30DA7 /* loop_fission.h */; }; + A9F7B68C29425A1900B30DA7 /* workaround1209.h in Headers */ = {isa = PBXBuildFile; fileRef = A9F7B12F29425A1800B30DA7 /* workaround1209.h */; }; + A9F7B68D29425A1900B30DA7 /* workaround1209.h in Headers */ = {isa = PBXBuildFile; fileRef = A9F7B12F29425A1800B30DA7 /* workaround1209.h */; }; + A9F7B68E29425A1900B30DA7 /* workaround1209.h in Headers */ = {isa = PBXBuildFile; fileRef = A9F7B12F29425A1800B30DA7 /* workaround1209.h */; }; + A9F7B68F29425A1900B30DA7 /* loop_fusion_pass.cpp in Sources */ = {isa = PBXBuildFile; fileRef = A9F7B13029425A1800B30DA7 /* loop_fusion_pass.cpp */; }; + A9F7B69029425A1900B30DA7 /* loop_fusion_pass.cpp in Sources */ = {isa = PBXBuildFile; fileRef = A9F7B13029425A1800B30DA7 /* loop_fusion_pass.cpp */; }; + A9F7B69129425A1900B30DA7 /* loop_fusion_pass.cpp in Sources */ = {isa = PBXBuildFile; fileRef = A9F7B13029425A1800B30DA7 /* loop_fusion_pass.cpp */; }; + A9F7B69229425A1900B30DA7 /* log.h in Headers */ = {isa = PBXBuildFile; fileRef = A9F7B13129425A1800B30DA7 /* log.h */; }; + A9F7B69329425A1900B30DA7 /* log.h in Headers */ = {isa = PBXBuildFile; fileRef = A9F7B13129425A1800B30DA7 /* log.h */; }; + A9F7B69429425A1900B30DA7 /* log.h in Headers */ = {isa = PBXBuildFile; fileRef = A9F7B13129425A1800B30DA7 /* log.h */; }; + A9F7B69529425A1900B30DA7 /* copy_prop_arrays.h in Headers */ = {isa = PBXBuildFile; fileRef = A9F7B13229425A1800B30DA7 /* copy_prop_arrays.h */; }; + A9F7B69629425A1900B30DA7 /* copy_prop_arrays.h in Headers */ = {isa = PBXBuildFile; fileRef = A9F7B13229425A1800B30DA7 /* copy_prop_arrays.h */; }; + A9F7B69729425A1900B30DA7 /* copy_prop_arrays.h in Headers */ = {isa = PBXBuildFile; fileRef = A9F7B13229425A1800B30DA7 /* copy_prop_arrays.h */; }; + A9F7B69829425A1900B30DA7 /* eliminate_dead_constant_pass.h in Headers */ = {isa = PBXBuildFile; fileRef = A9F7B13329425A1800B30DA7 /* eliminate_dead_constant_pass.h */; }; + A9F7B69929425A1900B30DA7 /* eliminate_dead_constant_pass.h in Headers */ = {isa = PBXBuildFile; fileRef = A9F7B13329425A1800B30DA7 /* eliminate_dead_constant_pass.h */; }; + A9F7B69A29425A1900B30DA7 /* eliminate_dead_constant_pass.h in Headers */ = {isa = PBXBuildFile; fileRef = A9F7B13329425A1800B30DA7 /* eliminate_dead_constant_pass.h */; }; + A9F7B69B29425A1900B30DA7 /* dead_insert_elim_pass.cpp in Sources */ = {isa = PBXBuildFile; fileRef = A9F7B13429425A1800B30DA7 /* dead_insert_elim_pass.cpp */; }; + A9F7B69C29425A1900B30DA7 /* dead_insert_elim_pass.cpp in Sources */ = {isa = PBXBuildFile; fileRef = A9F7B13429425A1800B30DA7 /* dead_insert_elim_pass.cpp */; }; + A9F7B69D29425A1900B30DA7 /* dead_insert_elim_pass.cpp in Sources */ = {isa = PBXBuildFile; fileRef = A9F7B13429425A1800B30DA7 /* dead_insert_elim_pass.cpp */; }; + A9F7B69E29425A1900B30DA7 /* ssa_rewrite_pass.h in Headers */ = {isa = PBXBuildFile; fileRef = A9F7B13529425A1800B30DA7 /* ssa_rewrite_pass.h */; }; + A9F7B69F29425A1900B30DA7 /* ssa_rewrite_pass.h in Headers */ = {isa = PBXBuildFile; fileRef = A9F7B13529425A1800B30DA7 /* ssa_rewrite_pass.h */; }; + A9F7B6A029425A1900B30DA7 /* ssa_rewrite_pass.h in Headers */ = {isa = PBXBuildFile; fileRef = A9F7B13529425A1800B30DA7 /* ssa_rewrite_pass.h */; }; + A9F7B6A129425A1900B30DA7 /* scalar_analysis.cpp in Sources */ = {isa = PBXBuildFile; fileRef = A9F7B13629425A1800B30DA7 /* scalar_analysis.cpp */; }; + A9F7B6A229425A1900B30DA7 /* scalar_analysis.cpp in Sources */ = {isa = PBXBuildFile; fileRef = A9F7B13629425A1800B30DA7 /* scalar_analysis.cpp */; }; + A9F7B6A329425A1900B30DA7 /* scalar_analysis.cpp in Sources */ = {isa = PBXBuildFile; fileRef = A9F7B13629425A1800B30DA7 /* scalar_analysis.cpp */; }; + A9F7B6A429425A1900B30DA7 /* dead_variable_elimination.h in Headers */ = {isa = PBXBuildFile; fileRef = A9F7B13729425A1800B30DA7 /* dead_variable_elimination.h */; }; + A9F7B6A529425A1900B30DA7 /* dead_variable_elimination.h in Headers */ = {isa = PBXBuildFile; fileRef = A9F7B13729425A1800B30DA7 /* dead_variable_elimination.h */; }; + A9F7B6A629425A1900B30DA7 /* dead_variable_elimination.h in Headers */ = {isa = PBXBuildFile; fileRef = A9F7B13729425A1800B30DA7 /* dead_variable_elimination.h */; }; + A9F7B6A729425A1900B30DA7 /* block_merge_pass.cpp in Sources */ = {isa = PBXBuildFile; fileRef = A9F7B13829425A1800B30DA7 /* block_merge_pass.cpp */; }; + A9F7B6A829425A1900B30DA7 /* block_merge_pass.cpp in Sources */ = {isa = PBXBuildFile; fileRef = A9F7B13829425A1800B30DA7 /* block_merge_pass.cpp */; }; + A9F7B6A929425A1900B30DA7 /* block_merge_pass.cpp in Sources */ = {isa = PBXBuildFile; fileRef = A9F7B13829425A1800B30DA7 /* block_merge_pass.cpp */; }; + A9F7B6AA29425A1900B30DA7 /* dominator_analysis.h in Headers */ = {isa = PBXBuildFile; fileRef = A9F7B13929425A1800B30DA7 /* dominator_analysis.h */; }; + A9F7B6AB29425A1900B30DA7 /* dominator_analysis.h in Headers */ = {isa = PBXBuildFile; fileRef = A9F7B13929425A1800B30DA7 /* dominator_analysis.h */; }; + A9F7B6AC29425A1900B30DA7 /* dominator_analysis.h in Headers */ = {isa = PBXBuildFile; fileRef = A9F7B13929425A1800B30DA7 /* dominator_analysis.h */; }; + A9F7B6AD29425A1900B30DA7 /* convert_to_sampled_image_pass.cpp in Sources */ = {isa = PBXBuildFile; fileRef = A9F7B13A29425A1800B30DA7 /* convert_to_sampled_image_pass.cpp */; }; + A9F7B6AE29425A1900B30DA7 /* convert_to_sampled_image_pass.cpp in Sources */ = {isa = PBXBuildFile; fileRef = A9F7B13A29425A1800B30DA7 /* convert_to_sampled_image_pass.cpp */; }; + A9F7B6AF29425A1900B30DA7 /* convert_to_sampled_image_pass.cpp in Sources */ = {isa = PBXBuildFile; fileRef = A9F7B13A29425A1800B30DA7 /* convert_to_sampled_image_pass.cpp */; }; + A9F7B6B029425A1900B30DA7 /* pass.h in Headers */ = {isa = PBXBuildFile; fileRef = A9F7B13B29425A1800B30DA7 /* pass.h */; }; + A9F7B6B129425A1900B30DA7 /* pass.h in Headers */ = {isa = PBXBuildFile; fileRef = A9F7B13B29425A1800B30DA7 /* pass.h */; }; + A9F7B6B229425A1900B30DA7 /* pass.h in Headers */ = {isa = PBXBuildFile; fileRef = A9F7B13B29425A1800B30DA7 /* pass.h */; }; + A9F7B6B329425A1900B30DA7 /* folding_rules.h in Headers */ = {isa = PBXBuildFile; fileRef = A9F7B13C29425A1800B30DA7 /* folding_rules.h */; }; + A9F7B6B429425A1900B30DA7 /* folding_rules.h in Headers */ = {isa = PBXBuildFile; fileRef = A9F7B13C29425A1800B30DA7 /* folding_rules.h */; }; + A9F7B6B529425A1900B30DA7 /* folding_rules.h in Headers */ = {isa = PBXBuildFile; fileRef = A9F7B13C29425A1800B30DA7 /* folding_rules.h */; }; + A9F7B6B629425A1900B30DA7 /* eliminate_dead_functions_pass.h in Headers */ = {isa = PBXBuildFile; fileRef = A9F7B13D29425A1800B30DA7 /* eliminate_dead_functions_pass.h */; }; + A9F7B6B729425A1900B30DA7 /* eliminate_dead_functions_pass.h in Headers */ = {isa = PBXBuildFile; fileRef = A9F7B13D29425A1800B30DA7 /* eliminate_dead_functions_pass.h */; }; + A9F7B6B829425A1900B30DA7 /* eliminate_dead_functions_pass.h in Headers */ = {isa = PBXBuildFile; fileRef = A9F7B13D29425A1800B30DA7 /* eliminate_dead_functions_pass.h */; }; + A9F7B6B929425A1900B30DA7 /* eliminate_dead_functions_util.h in Headers */ = {isa = PBXBuildFile; fileRef = A9F7B13E29425A1800B30DA7 /* eliminate_dead_functions_util.h */; }; + A9F7B6BA29425A1900B30DA7 /* eliminate_dead_functions_util.h in Headers */ = {isa = PBXBuildFile; fileRef = A9F7B13E29425A1800B30DA7 /* eliminate_dead_functions_util.h */; }; + A9F7B6BB29425A1900B30DA7 /* eliminate_dead_functions_util.h in Headers */ = {isa = PBXBuildFile; fileRef = A9F7B13E29425A1800B30DA7 /* eliminate_dead_functions_util.h */; }; + A9F7B6BC29425A1900B30DA7 /* fold.h in Headers */ = {isa = PBXBuildFile; fileRef = A9F7B13F29425A1800B30DA7 /* fold.h */; }; + A9F7B6BD29425A1900B30DA7 /* fold.h in Headers */ = {isa = PBXBuildFile; fileRef = A9F7B13F29425A1800B30DA7 /* fold.h */; }; + A9F7B6BE29425A1900B30DA7 /* fold.h in Headers */ = {isa = PBXBuildFile; fileRef = A9F7B13F29425A1800B30DA7 /* fold.h */; }; + A9F7B6BF29425A1900B30DA7 /* local_single_store_elim_pass.cpp in Sources */ = {isa = PBXBuildFile; fileRef = A9F7B14029425A1800B30DA7 /* local_single_store_elim_pass.cpp */; }; + A9F7B6C029425A1900B30DA7 /* local_single_store_elim_pass.cpp in Sources */ = {isa = PBXBuildFile; fileRef = A9F7B14029425A1800B30DA7 /* local_single_store_elim_pass.cpp */; }; + A9F7B6C129425A1900B30DA7 /* local_single_store_elim_pass.cpp in Sources */ = {isa = PBXBuildFile; fileRef = A9F7B14029425A1800B30DA7 /* local_single_store_elim_pass.cpp */; }; + A9F7B6C229425A1900B30DA7 /* dead_branch_elim_pass.h in Headers */ = {isa = PBXBuildFile; fileRef = A9F7B14129425A1800B30DA7 /* dead_branch_elim_pass.h */; }; + A9F7B6C329425A1900B30DA7 /* dead_branch_elim_pass.h in Headers */ = {isa = PBXBuildFile; fileRef = A9F7B14129425A1800B30DA7 /* dead_branch_elim_pass.h */; }; + A9F7B6C429425A1900B30DA7 /* dead_branch_elim_pass.h in Headers */ = {isa = PBXBuildFile; fileRef = A9F7B14129425A1800B30DA7 /* dead_branch_elim_pass.h */; }; + A9F7B6C529425A1900B30DA7 /* private_to_local_pass.cpp in Sources */ = {isa = PBXBuildFile; fileRef = A9F7B14229425A1800B30DA7 /* private_to_local_pass.cpp */; }; + A9F7B6C629425A1900B30DA7 /* private_to_local_pass.cpp in Sources */ = {isa = PBXBuildFile; fileRef = A9F7B14229425A1800B30DA7 /* private_to_local_pass.cpp */; }; + A9F7B6C729425A1900B30DA7 /* private_to_local_pass.cpp in Sources */ = {isa = PBXBuildFile; fileRef = A9F7B14229425A1800B30DA7 /* private_to_local_pass.cpp */; }; + A9F7B6C829425A1900B30DA7 /* scalar_analysis_nodes.h in Headers */ = {isa = PBXBuildFile; fileRef = A9F7B14329425A1800B30DA7 /* scalar_analysis_nodes.h */; }; + A9F7B6C929425A1900B30DA7 /* scalar_analysis_nodes.h in Headers */ = {isa = PBXBuildFile; fileRef = A9F7B14329425A1800B30DA7 /* scalar_analysis_nodes.h */; }; + A9F7B6CA29425A1900B30DA7 /* scalar_analysis_nodes.h in Headers */ = {isa = PBXBuildFile; fileRef = A9F7B14329425A1800B30DA7 /* scalar_analysis_nodes.h */; }; + A9F7B6CB29425A1900B30DA7 /* propagator.cpp in Sources */ = {isa = PBXBuildFile; fileRef = A9F7B14429425A1800B30DA7 /* propagator.cpp */; }; + A9F7B6CC29425A1900B30DA7 /* propagator.cpp in Sources */ = {isa = PBXBuildFile; fileRef = A9F7B14429425A1800B30DA7 /* propagator.cpp */; }; + A9F7B6CD29425A1900B30DA7 /* propagator.cpp in Sources */ = {isa = PBXBuildFile; fileRef = A9F7B14429425A1800B30DA7 /* propagator.cpp */; }; + A9F7B6CE29425A1900B30DA7 /* fix_storage_class.h in Headers */ = {isa = PBXBuildFile; fileRef = A9F7B14529425A1800B30DA7 /* fix_storage_class.h */; }; + A9F7B6CF29425A1900B30DA7 /* fix_storage_class.h in Headers */ = {isa = PBXBuildFile; fileRef = A9F7B14529425A1800B30DA7 /* fix_storage_class.h */; }; + A9F7B6D029425A1900B30DA7 /* fix_storage_class.h in Headers */ = {isa = PBXBuildFile; fileRef = A9F7B14529425A1800B30DA7 /* fix_storage_class.h */; }; + A9F7B6D129425A1900B30DA7 /* loop_dependence_helpers.cpp in Sources */ = {isa = PBXBuildFile; fileRef = A9F7B14629425A1800B30DA7 /* loop_dependence_helpers.cpp */; }; + A9F7B6D229425A1900B30DA7 /* loop_dependence_helpers.cpp in Sources */ = {isa = PBXBuildFile; fileRef = A9F7B14629425A1800B30DA7 /* loop_dependence_helpers.cpp */; }; + A9F7B6D329425A1900B30DA7 /* loop_dependence_helpers.cpp in Sources */ = {isa = PBXBuildFile; fileRef = A9F7B14629425A1800B30DA7 /* loop_dependence_helpers.cpp */; }; + A9F7B6D429425A1900B30DA7 /* set_spec_constant_default_value_pass.cpp in Sources */ = {isa = PBXBuildFile; fileRef = A9F7B14729425A1800B30DA7 /* set_spec_constant_default_value_pass.cpp */; }; + A9F7B6D529425A1900B30DA7 /* set_spec_constant_default_value_pass.cpp in Sources */ = {isa = PBXBuildFile; fileRef = A9F7B14729425A1800B30DA7 /* set_spec_constant_default_value_pass.cpp */; }; + A9F7B6D629425A1900B30DA7 /* set_spec_constant_default_value_pass.cpp in Sources */ = {isa = PBXBuildFile; fileRef = A9F7B14729425A1800B30DA7 /* set_spec_constant_default_value_pass.cpp */; }; + A9F7B6D729425A1900B30DA7 /* passes.h in Headers */ = {isa = PBXBuildFile; fileRef = A9F7B14829425A1800B30DA7 /* passes.h */; }; + A9F7B6D829425A1900B30DA7 /* passes.h in Headers */ = {isa = PBXBuildFile; fileRef = A9F7B14829425A1800B30DA7 /* passes.h */; }; + A9F7B6D929425A1900B30DA7 /* passes.h in Headers */ = {isa = PBXBuildFile; fileRef = A9F7B14829425A1800B30DA7 /* passes.h */; }; + A9F7B6DA29425A1900B30DA7 /* fold.cpp in Sources */ = {isa = PBXBuildFile; fileRef = A9F7B14929425A1800B30DA7 /* fold.cpp */; }; + A9F7B6DB29425A1900B30DA7 /* fold.cpp in Sources */ = {isa = PBXBuildFile; fileRef = A9F7B14929425A1800B30DA7 /* fold.cpp */; }; + A9F7B6DC29425A1900B30DA7 /* fold.cpp in Sources */ = {isa = PBXBuildFile; fileRef = A9F7B14929425A1800B30DA7 /* fold.cpp */; }; + A9F7B6DD29425A1900B30DA7 /* amd_ext_to_khr.cpp in Sources */ = {isa = PBXBuildFile; fileRef = A9F7B14A29425A1800B30DA7 /* amd_ext_to_khr.cpp */; }; + A9F7B6DE29425A1900B30DA7 /* amd_ext_to_khr.cpp in Sources */ = {isa = PBXBuildFile; fileRef = A9F7B14A29425A1800B30DA7 /* amd_ext_to_khr.cpp */; }; + A9F7B6DF29425A1900B30DA7 /* amd_ext_to_khr.cpp in Sources */ = {isa = PBXBuildFile; fileRef = A9F7B14A29425A1800B30DA7 /* amd_ext_to_khr.cpp */; }; + A9F7B6E029425A1900B30DA7 /* scalar_replacement_pass.cpp in Sources */ = {isa = PBXBuildFile; fileRef = A9F7B14B29425A1800B30DA7 /* scalar_replacement_pass.cpp */; }; + A9F7B6E129425A1900B30DA7 /* scalar_replacement_pass.cpp in Sources */ = {isa = PBXBuildFile; fileRef = A9F7B14B29425A1800B30DA7 /* scalar_replacement_pass.cpp */; }; + A9F7B6E229425A1900B30DA7 /* scalar_replacement_pass.cpp in Sources */ = {isa = PBXBuildFile; fileRef = A9F7B14B29425A1800B30DA7 /* scalar_replacement_pass.cpp */; }; + A9F7B6E329425A1900B30DA7 /* simplification_pass.h in Headers */ = {isa = PBXBuildFile; fileRef = A9F7B14C29425A1800B30DA7 /* simplification_pass.h */; }; + A9F7B6E429425A1900B30DA7 /* simplification_pass.h in Headers */ = {isa = PBXBuildFile; fileRef = A9F7B14C29425A1800B30DA7 /* simplification_pass.h */; }; + A9F7B6E529425A1900B30DA7 /* simplification_pass.h in Headers */ = {isa = PBXBuildFile; fileRef = A9F7B14C29425A1800B30DA7 /* simplification_pass.h */; }; + A9F7B6E629425A1900B30DA7 /* interface_var_sroa.cpp in Sources */ = {isa = PBXBuildFile; fileRef = A9F7B14D29425A1800B30DA7 /* interface_var_sroa.cpp */; }; + A9F7B6E729425A1900B30DA7 /* interface_var_sroa.cpp in Sources */ = {isa = PBXBuildFile; fileRef = A9F7B14D29425A1800B30DA7 /* interface_var_sroa.cpp */; }; + A9F7B6E829425A1900B30DA7 /* interface_var_sroa.cpp in Sources */ = {isa = PBXBuildFile; fileRef = A9F7B14D29425A1800B30DA7 /* interface_var_sroa.cpp */; }; + A9F7B6E929425A1900B30DA7 /* remove_duplicates_pass.h in Headers */ = {isa = PBXBuildFile; fileRef = A9F7B14E29425A1800B30DA7 /* remove_duplicates_pass.h */; }; + A9F7B6EA29425A1900B30DA7 /* remove_duplicates_pass.h in Headers */ = {isa = PBXBuildFile; fileRef = A9F7B14E29425A1800B30DA7 /* remove_duplicates_pass.h */; }; + A9F7B6EB29425A1900B30DA7 /* remove_duplicates_pass.h in Headers */ = {isa = PBXBuildFile; fileRef = A9F7B14E29425A1800B30DA7 /* remove_duplicates_pass.h */; }; + A9F7B6EC29425A1900B30DA7 /* desc_sroa_util.h in Headers */ = {isa = PBXBuildFile; fileRef = A9F7B14F29425A1800B30DA7 /* desc_sroa_util.h */; }; + A9F7B6ED29425A1900B30DA7 /* desc_sroa_util.h in Headers */ = {isa = PBXBuildFile; fileRef = A9F7B14F29425A1800B30DA7 /* desc_sroa_util.h */; }; + A9F7B6EE29425A1900B30DA7 /* desc_sroa_util.h in Headers */ = {isa = PBXBuildFile; fileRef = A9F7B14F29425A1800B30DA7 /* desc_sroa_util.h */; }; + A9F7B6EF29425A1900B30DA7 /* redundancy_elimination.cpp in Sources */ = {isa = PBXBuildFile; fileRef = A9F7B15029425A1800B30DA7 /* redundancy_elimination.cpp */; }; + A9F7B6F029425A1900B30DA7 /* redundancy_elimination.cpp in Sources */ = {isa = PBXBuildFile; fileRef = A9F7B15029425A1800B30DA7 /* redundancy_elimination.cpp */; }; + A9F7B6F129425A1900B30DA7 /* redundancy_elimination.cpp in Sources */ = {isa = PBXBuildFile; fileRef = A9F7B15029425A1800B30DA7 /* redundancy_elimination.cpp */; }; + A9F7B6F229425A1900B30DA7 /* reflect.h in Headers */ = {isa = PBXBuildFile; fileRef = A9F7B15129425A1800B30DA7 /* reflect.h */; }; + A9F7B6F329425A1900B30DA7 /* reflect.h in Headers */ = {isa = PBXBuildFile; fileRef = A9F7B15129425A1800B30DA7 /* reflect.h */; }; + A9F7B6F429425A1900B30DA7 /* reflect.h in Headers */ = {isa = PBXBuildFile; fileRef = A9F7B15129425A1800B30DA7 /* reflect.h */; }; + A9F7B6F529425A1900B30DA7 /* workaround1209.cpp in Sources */ = {isa = PBXBuildFile; fileRef = A9F7B15229425A1800B30DA7 /* workaround1209.cpp */; }; + A9F7B6F629425A1900B30DA7 /* workaround1209.cpp in Sources */ = {isa = PBXBuildFile; fileRef = A9F7B15229425A1800B30DA7 /* workaround1209.cpp */; }; + A9F7B6F729425A1900B30DA7 /* workaround1209.cpp in Sources */ = {isa = PBXBuildFile; fileRef = A9F7B15229425A1800B30DA7 /* workaround1209.cpp */; }; + A9F7B6F829425A1900B30DA7 /* null_pass.h in Headers */ = {isa = PBXBuildFile; fileRef = A9F7B15329425A1800B30DA7 /* null_pass.h */; }; + A9F7B6F929425A1900B30DA7 /* null_pass.h in Headers */ = {isa = PBXBuildFile; fileRef = A9F7B15329425A1800B30DA7 /* null_pass.h */; }; + A9F7B6FA29425A1900B30DA7 /* null_pass.h in Headers */ = {isa = PBXBuildFile; fileRef = A9F7B15329425A1800B30DA7 /* null_pass.h */; }; + A9F7B6FB29425A1900B30DA7 /* relax_float_ops_pass.cpp in Sources */ = {isa = PBXBuildFile; fileRef = A9F7B15429425A1800B30DA7 /* relax_float_ops_pass.cpp */; }; + A9F7B6FC29425A1900B30DA7 /* relax_float_ops_pass.cpp in Sources */ = {isa = PBXBuildFile; fileRef = A9F7B15429425A1800B30DA7 /* relax_float_ops_pass.cpp */; }; + A9F7B6FD29425A1900B30DA7 /* relax_float_ops_pass.cpp in Sources */ = {isa = PBXBuildFile; fileRef = A9F7B15429425A1800B30DA7 /* relax_float_ops_pass.cpp */; }; + A9F7B6FE29425A1900B30DA7 /* const_folding_rules.h in Headers */ = {isa = PBXBuildFile; fileRef = A9F7B15529425A1800B30DA7 /* const_folding_rules.h */; }; + A9F7B6FF29425A1900B30DA7 /* const_folding_rules.h in Headers */ = {isa = PBXBuildFile; fileRef = A9F7B15529425A1800B30DA7 /* const_folding_rules.h */; }; + A9F7B70029425A1900B30DA7 /* const_folding_rules.h in Headers */ = {isa = PBXBuildFile; fileRef = A9F7B15529425A1800B30DA7 /* const_folding_rules.h */; }; + A9F7B70129425A1900B30DA7 /* scalar_replacement_pass.h in Headers */ = {isa = PBXBuildFile; fileRef = A9F7B15629425A1800B30DA7 /* scalar_replacement_pass.h */; }; + A9F7B70229425A1900B30DA7 /* scalar_replacement_pass.h in Headers */ = {isa = PBXBuildFile; fileRef = A9F7B15629425A1800B30DA7 /* scalar_replacement_pass.h */; }; + A9F7B70329425A1900B30DA7 /* scalar_replacement_pass.h in Headers */ = {isa = PBXBuildFile; fileRef = A9F7B15629425A1800B30DA7 /* scalar_replacement_pass.h */; }; + A9F7B70429425A1900B30DA7 /* instruction.cpp in Sources */ = {isa = PBXBuildFile; fileRef = A9F7B15729425A1800B30DA7 /* instruction.cpp */; }; + A9F7B70529425A1900B30DA7 /* instruction.cpp in Sources */ = {isa = PBXBuildFile; fileRef = A9F7B15729425A1800B30DA7 /* instruction.cpp */; }; + A9F7B70629425A1900B30DA7 /* instruction.cpp in Sources */ = {isa = PBXBuildFile; fileRef = A9F7B15729425A1800B30DA7 /* instruction.cpp */; }; + A9F7B70729425A1900B30DA7 /* pch_source_opt.h in Headers */ = {isa = PBXBuildFile; fileRef = A9F7B15829425A1800B30DA7 /* pch_source_opt.h */; }; + A9F7B70829425A1900B30DA7 /* pch_source_opt.h in Headers */ = {isa = PBXBuildFile; fileRef = A9F7B15829425A1800B30DA7 /* pch_source_opt.h */; }; + A9F7B70929425A1900B30DA7 /* pch_source_opt.h in Headers */ = {isa = PBXBuildFile; fileRef = A9F7B15829425A1800B30DA7 /* pch_source_opt.h */; }; + A9F7B70A29425A1900B30DA7 /* reduce_load_size.cpp in Sources */ = {isa = PBXBuildFile; fileRef = A9F7B15929425A1800B30DA7 /* reduce_load_size.cpp */; }; + A9F7B70B29425A1900B30DA7 /* reduce_load_size.cpp in Sources */ = {isa = PBXBuildFile; fileRef = A9F7B15929425A1800B30DA7 /* reduce_load_size.cpp */; }; + A9F7B70C29425A1900B30DA7 /* reduce_load_size.cpp in Sources */ = {isa = PBXBuildFile; fileRef = A9F7B15929425A1800B30DA7 /* reduce_load_size.cpp */; }; + A9F7B70D29425A1900B30DA7 /* redundancy_elimination.h in Headers */ = {isa = PBXBuildFile; fileRef = A9F7B15A29425A1800B30DA7 /* redundancy_elimination.h */; }; + A9F7B70E29425A1900B30DA7 /* redundancy_elimination.h in Headers */ = {isa = PBXBuildFile; fileRef = A9F7B15A29425A1800B30DA7 /* redundancy_elimination.h */; }; + A9F7B70F29425A1900B30DA7 /* redundancy_elimination.h in Headers */ = {isa = PBXBuildFile; fileRef = A9F7B15A29425A1800B30DA7 /* redundancy_elimination.h */; }; + A9F7B71029425A1900B30DA7 /* fix_storage_class.cpp in Sources */ = {isa = PBXBuildFile; fileRef = A9F7B15B29425A1800B30DA7 /* fix_storage_class.cpp */; }; + A9F7B71129425A1900B30DA7 /* fix_storage_class.cpp in Sources */ = {isa = PBXBuildFile; fileRef = A9F7B15B29425A1800B30DA7 /* fix_storage_class.cpp */; }; + A9F7B71229425A1900B30DA7 /* fix_storage_class.cpp in Sources */ = {isa = PBXBuildFile; fileRef = A9F7B15B29425A1800B30DA7 /* fix_storage_class.cpp */; }; + A9F7B71329425A1900B30DA7 /* value_number_table.cpp in Sources */ = {isa = PBXBuildFile; fileRef = A9F7B15C29425A1800B30DA7 /* value_number_table.cpp */; }; + A9F7B71429425A1900B30DA7 /* value_number_table.cpp in Sources */ = {isa = PBXBuildFile; fileRef = A9F7B15C29425A1800B30DA7 /* value_number_table.cpp */; }; + A9F7B71529425A1900B30DA7 /* value_number_table.cpp in Sources */ = {isa = PBXBuildFile; fileRef = A9F7B15C29425A1800B30DA7 /* value_number_table.cpp */; }; + A9F7B71629425A1900B30DA7 /* remove_unused_interface_variables_pass.cpp in Sources */ = {isa = PBXBuildFile; fileRef = A9F7B15D29425A1800B30DA7 /* remove_unused_interface_variables_pass.cpp */; }; + A9F7B71729425A1900B30DA7 /* remove_unused_interface_variables_pass.cpp in Sources */ = {isa = PBXBuildFile; fileRef = A9F7B15D29425A1800B30DA7 /* remove_unused_interface_variables_pass.cpp */; }; + A9F7B71829425A1900B30DA7 /* remove_unused_interface_variables_pass.cpp in Sources */ = {isa = PBXBuildFile; fileRef = A9F7B15D29425A1800B30DA7 /* remove_unused_interface_variables_pass.cpp */; }; + A9F7B71929425A1900B30DA7 /* inline_opaque_pass.cpp in Sources */ = {isa = PBXBuildFile; fileRef = A9F7B15E29425A1800B30DA7 /* inline_opaque_pass.cpp */; }; + A9F7B71A29425A1900B30DA7 /* inline_opaque_pass.cpp in Sources */ = {isa = PBXBuildFile; fileRef = A9F7B15E29425A1800B30DA7 /* inline_opaque_pass.cpp */; }; + A9F7B71B29425A1900B30DA7 /* inline_opaque_pass.cpp in Sources */ = {isa = PBXBuildFile; fileRef = A9F7B15E29425A1800B30DA7 /* inline_opaque_pass.cpp */; }; + A9F7B71C29425A1900B30DA7 /* replace_invalid_opc.cpp in Sources */ = {isa = PBXBuildFile; fileRef = A9F7B15F29425A1800B30DA7 /* replace_invalid_opc.cpp */; }; + A9F7B71D29425A1900B30DA7 /* replace_invalid_opc.cpp in Sources */ = {isa = PBXBuildFile; fileRef = A9F7B15F29425A1800B30DA7 /* replace_invalid_opc.cpp */; }; + A9F7B71E29425A1900B30DA7 /* replace_invalid_opc.cpp in Sources */ = {isa = PBXBuildFile; fileRef = A9F7B15F29425A1800B30DA7 /* replace_invalid_opc.cpp */; }; + A9F7B71F29425A1900B30DA7 /* loop_utils.h in Headers */ = {isa = PBXBuildFile; fileRef = A9F7B16029425A1800B30DA7 /* loop_utils.h */; }; + A9F7B72029425A1900B30DA7 /* loop_utils.h in Headers */ = {isa = PBXBuildFile; fileRef = A9F7B16029425A1800B30DA7 /* loop_utils.h */; }; + A9F7B72129425A1900B30DA7 /* loop_utils.h in Headers */ = {isa = PBXBuildFile; fileRef = A9F7B16029425A1800B30DA7 /* loop_utils.h */; }; + A9F7B72229425A1900B30DA7 /* module.h in Headers */ = {isa = PBXBuildFile; fileRef = A9F7B16129425A1800B30DA7 /* module.h */; }; + A9F7B72329425A1900B30DA7 /* module.h in Headers */ = {isa = PBXBuildFile; fileRef = A9F7B16129425A1800B30DA7 /* module.h */; }; + A9F7B72429425A1900B30DA7 /* module.h in Headers */ = {isa = PBXBuildFile; fileRef = A9F7B16129425A1800B30DA7 /* module.h */; }; + A9F7B72529425A1900B30DA7 /* dominator_analysis.cpp in Sources */ = {isa = PBXBuildFile; fileRef = A9F7B16229425A1800B30DA7 /* dominator_analysis.cpp */; }; + A9F7B72629425A1900B30DA7 /* dominator_analysis.cpp in Sources */ = {isa = PBXBuildFile; fileRef = A9F7B16229425A1800B30DA7 /* dominator_analysis.cpp */; }; + A9F7B72729425A1900B30DA7 /* dominator_analysis.cpp in Sources */ = {isa = PBXBuildFile; fileRef = A9F7B16229425A1800B30DA7 /* dominator_analysis.cpp */; }; + A9F7B72829425A1900B30DA7 /* ir_builder.h in Headers */ = {isa = PBXBuildFile; fileRef = A9F7B16329425A1800B30DA7 /* ir_builder.h */; }; + A9F7B72929425A1900B30DA7 /* ir_builder.h in Headers */ = {isa = PBXBuildFile; fileRef = A9F7B16329425A1800B30DA7 /* ir_builder.h */; }; + A9F7B72A29425A1900B30DA7 /* ir_builder.h in Headers */ = {isa = PBXBuildFile; fileRef = A9F7B16329425A1800B30DA7 /* ir_builder.h */; }; + A9F7B72B29425A1900B30DA7 /* replace_desc_array_access_using_var_index.cpp in Sources */ = {isa = PBXBuildFile; fileRef = A9F7B16429425A1800B30DA7 /* replace_desc_array_access_using_var_index.cpp */; }; + A9F7B72C29425A1900B30DA7 /* replace_desc_array_access_using_var_index.cpp in Sources */ = {isa = PBXBuildFile; fileRef = A9F7B16429425A1800B30DA7 /* replace_desc_array_access_using_var_index.cpp */; }; + A9F7B72D29425A1900B30DA7 /* replace_desc_array_access_using_var_index.cpp in Sources */ = {isa = PBXBuildFile; fileRef = A9F7B16429425A1800B30DA7 /* replace_desc_array_access_using_var_index.cpp */; }; + A9F7B72E29425A1900B30DA7 /* loop_unswitch_pass.h in Headers */ = {isa = PBXBuildFile; fileRef = A9F7B16529425A1800B30DA7 /* loop_unswitch_pass.h */; }; + A9F7B72F29425A1900B30DA7 /* loop_unswitch_pass.h in Headers */ = {isa = PBXBuildFile; fileRef = A9F7B16529425A1800B30DA7 /* loop_unswitch_pass.h */; }; + A9F7B73029425A1900B30DA7 /* loop_unswitch_pass.h in Headers */ = {isa = PBXBuildFile; fileRef = A9F7B16529425A1800B30DA7 /* loop_unswitch_pass.h */; }; + A9F7B73129425A1900B30DA7 /* cfg.h in Headers */ = {isa = PBXBuildFile; fileRef = A9F7B16629425A1800B30DA7 /* cfg.h */; }; + A9F7B73229425A1900B30DA7 /* cfg.h in Headers */ = {isa = PBXBuildFile; fileRef = A9F7B16629425A1800B30DA7 /* cfg.h */; }; + A9F7B73329425A1900B30DA7 /* cfg.h in Headers */ = {isa = PBXBuildFile; fileRef = A9F7B16629425A1800B30DA7 /* cfg.h */; }; + A9F7B73429425A1900B30DA7 /* code_sink.h in Headers */ = {isa = PBXBuildFile; fileRef = A9F7B16729425A1800B30DA7 /* code_sink.h */; }; + A9F7B73529425A1900B30DA7 /* code_sink.h in Headers */ = {isa = PBXBuildFile; fileRef = A9F7B16729425A1800B30DA7 /* code_sink.h */; }; + A9F7B73629425A1900B30DA7 /* code_sink.h in Headers */ = {isa = PBXBuildFile; fileRef = A9F7B16729425A1800B30DA7 /* code_sink.h */; }; + A9F7B73729425A1900B30DA7 /* dataflow.cpp in Sources */ = {isa = PBXBuildFile; fileRef = A9F7B16829425A1800B30DA7 /* dataflow.cpp */; }; + A9F7B73829425A1900B30DA7 /* dataflow.cpp in Sources */ = {isa = PBXBuildFile; fileRef = A9F7B16829425A1800B30DA7 /* dataflow.cpp */; }; + A9F7B73929425A1900B30DA7 /* dataflow.cpp in Sources */ = {isa = PBXBuildFile; fileRef = A9F7B16829425A1800B30DA7 /* dataflow.cpp */; }; + A9F7B73A29425A1900B30DA7 /* loop_descriptor.h in Headers */ = {isa = PBXBuildFile; fileRef = A9F7B16929425A1800B30DA7 /* loop_descriptor.h */; }; + A9F7B73B29425A1900B30DA7 /* loop_descriptor.h in Headers */ = {isa = PBXBuildFile; fileRef = A9F7B16929425A1800B30DA7 /* loop_descriptor.h */; }; + A9F7B73C29425A1900B30DA7 /* loop_descriptor.h in Headers */ = {isa = PBXBuildFile; fileRef = A9F7B16929425A1800B30DA7 /* loop_descriptor.h */; }; + A9F7B73D29425A1900B30DA7 /* instruction.h in Headers */ = {isa = PBXBuildFile; fileRef = A9F7B16A29425A1800B30DA7 /* instruction.h */; }; + A9F7B73E29425A1900B30DA7 /* instruction.h in Headers */ = {isa = PBXBuildFile; fileRef = A9F7B16A29425A1800B30DA7 /* instruction.h */; }; + A9F7B73F29425A1900B30DA7 /* instruction.h in Headers */ = {isa = PBXBuildFile; fileRef = A9F7B16A29425A1800B30DA7 /* instruction.h */; }; + A9F7B74029425A1900B30DA7 /* aggressive_dead_code_elim_pass.h in Headers */ = {isa = PBXBuildFile; fileRef = A9F7B16B29425A1800B30DA7 /* aggressive_dead_code_elim_pass.h */; }; + A9F7B74129425A1900B30DA7 /* aggressive_dead_code_elim_pass.h in Headers */ = {isa = PBXBuildFile; fileRef = A9F7B16B29425A1800B30DA7 /* aggressive_dead_code_elim_pass.h */; }; + A9F7B74229425A1900B30DA7 /* aggressive_dead_code_elim_pass.h in Headers */ = {isa = PBXBuildFile; fileRef = A9F7B16B29425A1800B30DA7 /* aggressive_dead_code_elim_pass.h */; }; + A9F7B74329425A1900B30DA7 /* struct_cfg_analysis.cpp in Sources */ = {isa = PBXBuildFile; fileRef = A9F7B16C29425A1800B30DA7 /* struct_cfg_analysis.cpp */; }; + A9F7B74429425A1900B30DA7 /* struct_cfg_analysis.cpp in Sources */ = {isa = PBXBuildFile; fileRef = A9F7B16C29425A1800B30DA7 /* struct_cfg_analysis.cpp */; }; + A9F7B74529425A1900B30DA7 /* struct_cfg_analysis.cpp in Sources */ = {isa = PBXBuildFile; fileRef = A9F7B16C29425A1800B30DA7 /* struct_cfg_analysis.cpp */; }; + A9F7B74629425A1900B30DA7 /* remove_dontinline_pass.cpp in Sources */ = {isa = PBXBuildFile; fileRef = A9F7B16D29425A1800B30DA7 /* remove_dontinline_pass.cpp */; }; + A9F7B74729425A1900B30DA7 /* remove_dontinline_pass.cpp in Sources */ = {isa = PBXBuildFile; fileRef = A9F7B16D29425A1800B30DA7 /* remove_dontinline_pass.cpp */; }; + A9F7B74829425A1900B30DA7 /* remove_dontinline_pass.cpp in Sources */ = {isa = PBXBuildFile; fileRef = A9F7B16D29425A1800B30DA7 /* remove_dontinline_pass.cpp */; }; + A9F7B74929425A1900B30DA7 /* vector_dce.h in Headers */ = {isa = PBXBuildFile; fileRef = A9F7B16E29425A1800B30DA7 /* vector_dce.h */; }; + A9F7B74A29425A1900B30DA7 /* vector_dce.h in Headers */ = {isa = PBXBuildFile; fileRef = A9F7B16E29425A1800B30DA7 /* vector_dce.h */; }; + A9F7B74B29425A1900B30DA7 /* vector_dce.h in Headers */ = {isa = PBXBuildFile; fileRef = A9F7B16E29425A1800B30DA7 /* vector_dce.h */; }; + A9F7B74C29425A1900B30DA7 /* combine_access_chains.h in Headers */ = {isa = PBXBuildFile; fileRef = A9F7B16F29425A1800B30DA7 /* combine_access_chains.h */; }; + A9F7B74D29425A1900B30DA7 /* combine_access_chains.h in Headers */ = {isa = PBXBuildFile; fileRef = A9F7B16F29425A1800B30DA7 /* combine_access_chains.h */; }; + A9F7B74E29425A1900B30DA7 /* combine_access_chains.h in Headers */ = {isa = PBXBuildFile; fileRef = A9F7B16F29425A1800B30DA7 /* combine_access_chains.h */; }; + A9F7B74F29425A1900B30DA7 /* pass_manager.h in Headers */ = {isa = PBXBuildFile; fileRef = A9F7B17029425A1800B30DA7 /* pass_manager.h */; }; + A9F7B75029425A1900B30DA7 /* pass_manager.h in Headers */ = {isa = PBXBuildFile; fileRef = A9F7B17029425A1800B30DA7 /* pass_manager.h */; }; + A9F7B75129425A1900B30DA7 /* pass_manager.h in Headers */ = {isa = PBXBuildFile; fileRef = A9F7B17029425A1800B30DA7 /* pass_manager.h */; }; + A9F7B75229425A1900B30DA7 /* spread_volatile_semantics.h in Headers */ = {isa = PBXBuildFile; fileRef = A9F7B17129425A1800B30DA7 /* spread_volatile_semantics.h */; }; + A9F7B75329425A1900B30DA7 /* spread_volatile_semantics.h in Headers */ = {isa = PBXBuildFile; fileRef = A9F7B17129425A1800B30DA7 /* spread_volatile_semantics.h */; }; + A9F7B75429425A1900B30DA7 /* spread_volatile_semantics.h in Headers */ = {isa = PBXBuildFile; fileRef = A9F7B17129425A1800B30DA7 /* spread_volatile_semantics.h */; }; + A9F7B75529425A1900B30DA7 /* local_access_chain_convert_pass.cpp in Sources */ = {isa = PBXBuildFile; fileRef = A9F7B17229425A1800B30DA7 /* local_access_chain_convert_pass.cpp */; }; + A9F7B75629425A1900B30DA7 /* local_access_chain_convert_pass.cpp in Sources */ = {isa = PBXBuildFile; fileRef = A9F7B17229425A1800B30DA7 /* local_access_chain_convert_pass.cpp */; }; + A9F7B75729425A1900B30DA7 /* local_access_chain_convert_pass.cpp in Sources */ = {isa = PBXBuildFile; fileRef = A9F7B17229425A1800B30DA7 /* local_access_chain_convert_pass.cpp */; }; + A9F7B75829425A1900B30DA7 /* interp_fixup_pass.cpp in Sources */ = {isa = PBXBuildFile; fileRef = A9F7B17329425A1800B30DA7 /* interp_fixup_pass.cpp */; }; + A9F7B75929425A1900B30DA7 /* interp_fixup_pass.cpp in Sources */ = {isa = PBXBuildFile; fileRef = A9F7B17329425A1800B30DA7 /* interp_fixup_pass.cpp */; }; + A9F7B75A29425A1900B30DA7 /* interp_fixup_pass.cpp in Sources */ = {isa = PBXBuildFile; fileRef = A9F7B17329425A1800B30DA7 /* interp_fixup_pass.cpp */; }; + A9F7B75B29425A1900B30DA7 /* basic_block.cpp in Sources */ = {isa = PBXBuildFile; fileRef = A9F7B17429425A1800B30DA7 /* basic_block.cpp */; }; + A9F7B75C29425A1900B30DA7 /* basic_block.cpp in Sources */ = {isa = PBXBuildFile; fileRef = A9F7B17429425A1800B30DA7 /* basic_block.cpp */; }; + A9F7B75D29425A1900B30DA7 /* basic_block.cpp in Sources */ = {isa = PBXBuildFile; fileRef = A9F7B17429425A1800B30DA7 /* basic_block.cpp */; }; + A9F7B75E29425A1900B30DA7 /* iterator.h in Headers */ = {isa = PBXBuildFile; fileRef = A9F7B17529425A1800B30DA7 /* iterator.h */; }; + A9F7B75F29425A1900B30DA7 /* iterator.h in Headers */ = {isa = PBXBuildFile; fileRef = A9F7B17529425A1800B30DA7 /* iterator.h */; }; + A9F7B76029425A1900B30DA7 /* iterator.h in Headers */ = {isa = PBXBuildFile; fileRef = A9F7B17529425A1800B30DA7 /* iterator.h */; }; + A9F7B76129425A1900B30DA7 /* licm_pass.h in Headers */ = {isa = PBXBuildFile; fileRef = A9F7B17629425A1800B30DA7 /* licm_pass.h */; }; + A9F7B76229425A1900B30DA7 /* licm_pass.h in Headers */ = {isa = PBXBuildFile; fileRef = A9F7B17629425A1800B30DA7 /* licm_pass.h */; }; + A9F7B76329425A1900B30DA7 /* licm_pass.h in Headers */ = {isa = PBXBuildFile; fileRef = A9F7B17629425A1800B30DA7 /* licm_pass.h */; }; + A9F7B76429425A1900B30DA7 /* build_module.h in Headers */ = {isa = PBXBuildFile; fileRef = A9F7B17729425A1800B30DA7 /* build_module.h */; }; + A9F7B76529425A1900B30DA7 /* build_module.h in Headers */ = {isa = PBXBuildFile; fileRef = A9F7B17729425A1800B30DA7 /* build_module.h */; }; + A9F7B76629425A1900B30DA7 /* build_module.h in Headers */ = {isa = PBXBuildFile; fileRef = A9F7B17729425A1800B30DA7 /* build_module.h */; }; + A9F7B76729425A1900B30DA7 /* ccp_pass.h in Headers */ = {isa = PBXBuildFile; fileRef = A9F7B17829425A1800B30DA7 /* ccp_pass.h */; }; + A9F7B76829425A1900B30DA7 /* ccp_pass.h in Headers */ = {isa = PBXBuildFile; fileRef = A9F7B17829425A1800B30DA7 /* ccp_pass.h */; }; + A9F7B76929425A1900B30DA7 /* ccp_pass.h in Headers */ = {isa = PBXBuildFile; fileRef = A9F7B17829425A1800B30DA7 /* ccp_pass.h */; }; + A9F7B76A29425A1900B30DA7 /* graphics_robust_access_pass.cpp in Sources */ = {isa = PBXBuildFile; fileRef = A9F7B17929425A1800B30DA7 /* graphics_robust_access_pass.cpp */; }; + A9F7B76B29425A1900B30DA7 /* graphics_robust_access_pass.cpp in Sources */ = {isa = PBXBuildFile; fileRef = A9F7B17929425A1800B30DA7 /* graphics_robust_access_pass.cpp */; }; + A9F7B76C29425A1900B30DA7 /* graphics_robust_access_pass.cpp in Sources */ = {isa = PBXBuildFile; fileRef = A9F7B17929425A1800B30DA7 /* graphics_robust_access_pass.cpp */; }; + A9F7B76D29425A1900B30DA7 /* function.h in Headers */ = {isa = PBXBuildFile; fileRef = A9F7B17A29425A1800B30DA7 /* function.h */; }; + A9F7B76E29425A1900B30DA7 /* function.h in Headers */ = {isa = PBXBuildFile; fileRef = A9F7B17A29425A1800B30DA7 /* function.h */; }; + A9F7B76F29425A1900B30DA7 /* function.h in Headers */ = {isa = PBXBuildFile; fileRef = A9F7B17A29425A1800B30DA7 /* function.h */; }; + A9F7B77029425A1900B30DA7 /* fix_func_call_arguments.h in Headers */ = {isa = PBXBuildFile; fileRef = A9F7B17B29425A1800B30DA7 /* fix_func_call_arguments.h */; }; + A9F7B77129425A1900B30DA7 /* fix_func_call_arguments.h in Headers */ = {isa = PBXBuildFile; fileRef = A9F7B17B29425A1800B30DA7 /* fix_func_call_arguments.h */; }; + A9F7B77229425A1900B30DA7 /* fix_func_call_arguments.h in Headers */ = {isa = PBXBuildFile; fileRef = A9F7B17B29425A1800B30DA7 /* fix_func_call_arguments.h */; }; + A9F7B77329425A1900B30DA7 /* loop_fusion.cpp in Sources */ = {isa = PBXBuildFile; fileRef = A9F7B17C29425A1800B30DA7 /* loop_fusion.cpp */; }; + A9F7B77429425A1900B30DA7 /* loop_fusion.cpp in Sources */ = {isa = PBXBuildFile; fileRef = A9F7B17C29425A1800B30DA7 /* loop_fusion.cpp */; }; + A9F7B77529425A1900B30DA7 /* loop_fusion.cpp in Sources */ = {isa = PBXBuildFile; fileRef = A9F7B17C29425A1800B30DA7 /* loop_fusion.cpp */; }; + A9F7B77629425A1900B30DA7 /* analyze_live_input_pass.cpp in Sources */ = {isa = PBXBuildFile; fileRef = A9F7B17D29425A1800B30DA7 /* analyze_live_input_pass.cpp */; }; + A9F7B77729425A1900B30DA7 /* analyze_live_input_pass.cpp in Sources */ = {isa = PBXBuildFile; fileRef = A9F7B17D29425A1800B30DA7 /* analyze_live_input_pass.cpp */; }; + A9F7B77829425A1900B30DA7 /* analyze_live_input_pass.cpp in Sources */ = {isa = PBXBuildFile; fileRef = A9F7B17D29425A1800B30DA7 /* analyze_live_input_pass.cpp */; }; + A9F7B77929425A1900B30DA7 /* upgrade_memory_model.cpp in Sources */ = {isa = PBXBuildFile; fileRef = A9F7B17E29425A1800B30DA7 /* upgrade_memory_model.cpp */; }; + A9F7B77A29425A1900B30DA7 /* upgrade_memory_model.cpp in Sources */ = {isa = PBXBuildFile; fileRef = A9F7B17E29425A1800B30DA7 /* upgrade_memory_model.cpp */; }; + A9F7B77B29425A1900B30DA7 /* upgrade_memory_model.cpp in Sources */ = {isa = PBXBuildFile; fileRef = A9F7B17E29425A1800B30DA7 /* upgrade_memory_model.cpp */; }; + A9F7B77C29425A1900B30DA7 /* feature_manager.h in Headers */ = {isa = PBXBuildFile; fileRef = A9F7B17F29425A1800B30DA7 /* feature_manager.h */; }; + A9F7B77D29425A1900B30DA7 /* feature_manager.h in Headers */ = {isa = PBXBuildFile; fileRef = A9F7B17F29425A1800B30DA7 /* feature_manager.h */; }; + A9F7B77E29425A1900B30DA7 /* feature_manager.h in Headers */ = {isa = PBXBuildFile; fileRef = A9F7B17F29425A1800B30DA7 /* feature_manager.h */; }; + A9F7B77F29425A1900B30DA7 /* dataflow.h in Headers */ = {isa = PBXBuildFile; fileRef = A9F7B18029425A1800B30DA7 /* dataflow.h */; }; + A9F7B78029425A1900B30DA7 /* dataflow.h in Headers */ = {isa = PBXBuildFile; fileRef = A9F7B18029425A1800B30DA7 /* dataflow.h */; }; + A9F7B78129425A1900B30DA7 /* dataflow.h in Headers */ = {isa = PBXBuildFile; fileRef = A9F7B18029425A1800B30DA7 /* dataflow.h */; }; + A9F7B78229425A1900B30DA7 /* inst_bindless_check_pass.h in Headers */ = {isa = PBXBuildFile; fileRef = A9F7B18129425A1800B30DA7 /* inst_bindless_check_pass.h */; }; + A9F7B78329425A1900B30DA7 /* inst_bindless_check_pass.h in Headers */ = {isa = PBXBuildFile; fileRef = A9F7B18129425A1800B30DA7 /* inst_bindless_check_pass.h */; }; + A9F7B78429425A1900B30DA7 /* inst_bindless_check_pass.h in Headers */ = {isa = PBXBuildFile; fileRef = A9F7B18129425A1800B30DA7 /* inst_bindless_check_pass.h */; }; + A9F7B78529425A1900B30DA7 /* scalar_analysis_simplification.cpp in Sources */ = {isa = PBXBuildFile; fileRef = A9F7B18229425A1800B30DA7 /* scalar_analysis_simplification.cpp */; }; + A9F7B78629425A1900B30DA7 /* scalar_analysis_simplification.cpp in Sources */ = {isa = PBXBuildFile; fileRef = A9F7B18229425A1800B30DA7 /* scalar_analysis_simplification.cpp */; }; + A9F7B78729425A1900B30DA7 /* scalar_analysis_simplification.cpp in Sources */ = {isa = PBXBuildFile; fileRef = A9F7B18229425A1800B30DA7 /* scalar_analysis_simplification.cpp */; }; + A9F7B78829425A1900B30DA7 /* set_spec_constant_default_value_pass.h in Headers */ = {isa = PBXBuildFile; fileRef = A9F7B18329425A1800B30DA7 /* set_spec_constant_default_value_pass.h */; }; + A9F7B78929425A1900B30DA7 /* set_spec_constant_default_value_pass.h in Headers */ = {isa = PBXBuildFile; fileRef = A9F7B18329425A1800B30DA7 /* set_spec_constant_default_value_pass.h */; }; + A9F7B78A29425A1900B30DA7 /* set_spec_constant_default_value_pass.h in Headers */ = {isa = PBXBuildFile; fileRef = A9F7B18329425A1800B30DA7 /* set_spec_constant_default_value_pass.h */; }; + A9F7B78B29425A1900B30DA7 /* dominator_tree.h in Headers */ = {isa = PBXBuildFile; fileRef = A9F7B18429425A1800B30DA7 /* dominator_tree.h */; }; + A9F7B78C29425A1900B30DA7 /* dominator_tree.h in Headers */ = {isa = PBXBuildFile; fileRef = A9F7B18429425A1800B30DA7 /* dominator_tree.h */; }; + A9F7B78D29425A1900B30DA7 /* dominator_tree.h in Headers */ = {isa = PBXBuildFile; fileRef = A9F7B18429425A1800B30DA7 /* dominator_tree.h */; }; + A9F7B78E29425A1900B30DA7 /* remove_unused_interface_variables_pass.h in Headers */ = {isa = PBXBuildFile; fileRef = A9F7B18529425A1800B30DA7 /* remove_unused_interface_variables_pass.h */; }; + A9F7B78F29425A1900B30DA7 /* remove_unused_interface_variables_pass.h in Headers */ = {isa = PBXBuildFile; fileRef = A9F7B18529425A1800B30DA7 /* remove_unused_interface_variables_pass.h */; }; + A9F7B79029425A1900B30DA7 /* remove_unused_interface_variables_pass.h in Headers */ = {isa = PBXBuildFile; fileRef = A9F7B18529425A1800B30DA7 /* remove_unused_interface_variables_pass.h */; }; + A9F7B79129425A1900B30DA7 /* type_manager.h in Headers */ = {isa = PBXBuildFile; fileRef = A9F7B18629425A1800B30DA7 /* type_manager.h */; }; + A9F7B79229425A1900B30DA7 /* type_manager.h in Headers */ = {isa = PBXBuildFile; fileRef = A9F7B18629425A1800B30DA7 /* type_manager.h */; }; + A9F7B79329425A1900B30DA7 /* type_manager.h in Headers */ = {isa = PBXBuildFile; fileRef = A9F7B18629425A1800B30DA7 /* type_manager.h */; }; + A9F7B79429425A1900B30DA7 /* compact_ids_pass.cpp in Sources */ = {isa = PBXBuildFile; fileRef = A9F7B18729425A1800B30DA7 /* compact_ids_pass.cpp */; }; + A9F7B79529425A1900B30DA7 /* compact_ids_pass.cpp in Sources */ = {isa = PBXBuildFile; fileRef = A9F7B18729425A1800B30DA7 /* compact_ids_pass.cpp */; }; + A9F7B79629425A1900B30DA7 /* compact_ids_pass.cpp in Sources */ = {isa = PBXBuildFile; fileRef = A9F7B18729425A1800B30DA7 /* compact_ids_pass.cpp */; }; + A9F7B79729425A1900B30DA7 /* loop_peeling.cpp in Sources */ = {isa = PBXBuildFile; fileRef = A9F7B18829425A1800B30DA7 /* loop_peeling.cpp */; }; + A9F7B79829425A1900B30DA7 /* loop_peeling.cpp in Sources */ = {isa = PBXBuildFile; fileRef = A9F7B18829425A1800B30DA7 /* loop_peeling.cpp */; }; + A9F7B79929425A1900B30DA7 /* loop_peeling.cpp in Sources */ = {isa = PBXBuildFile; fileRef = A9F7B18829425A1800B30DA7 /* loop_peeling.cpp */; }; + A9F7B79A29425A1900B30DA7 /* table.h in Headers */ = {isa = PBXBuildFile; fileRef = A9F7B18929425A1800B30DA7 /* table.h */; }; + A9F7B79B29425A1900B30DA7 /* table.h in Headers */ = {isa = PBXBuildFile; fileRef = A9F7B18929425A1800B30DA7 /* table.h */; }; + A9F7B79C29425A1900B30DA7 /* table.h in Headers */ = {isa = PBXBuildFile; fileRef = A9F7B18929425A1800B30DA7 /* table.h */; }; + A9F7BC3229425A1B00B30DA7 /* ext_inst.h in Headers */ = {isa = PBXBuildFile; fileRef = A9F7B31629425A1800B30DA7 /* ext_inst.h */; }; + A9F7BC3329425A1B00B30DA7 /* ext_inst.h in Headers */ = {isa = PBXBuildFile; fileRef = A9F7B31629425A1800B30DA7 /* ext_inst.h */; }; + A9F7BC3429425A1B00B30DA7 /* ext_inst.h in Headers */ = {isa = PBXBuildFile; fileRef = A9F7B31629425A1800B30DA7 /* ext_inst.h */; }; + A9F7BC3529425A1B00B30DA7 /* diagnostic.cpp in Sources */ = {isa = PBXBuildFile; fileRef = A9F7B31729425A1800B30DA7 /* diagnostic.cpp */; }; + A9F7BC3629425A1B00B30DA7 /* diagnostic.cpp in Sources */ = {isa = PBXBuildFile; fileRef = A9F7B31729425A1800B30DA7 /* diagnostic.cpp */; }; + A9F7BC3729425A1B00B30DA7 /* diagnostic.cpp in Sources */ = {isa = PBXBuildFile; fileRef = A9F7B31729425A1800B30DA7 /* diagnostic.cpp */; }; + A9F7BC3829425A1B00B30DA7 /* latest_version_spirv_header.h in Headers */ = {isa = PBXBuildFile; fileRef = A9F7B31829425A1800B30DA7 /* latest_version_spirv_header.h */; }; + A9F7BC3929425A1B00B30DA7 /* latest_version_spirv_header.h in Headers */ = {isa = PBXBuildFile; fileRef = A9F7B31829425A1800B30DA7 /* latest_version_spirv_header.h */; }; + A9F7BC3A29425A1B00B30DA7 /* latest_version_spirv_header.h in Headers */ = {isa = PBXBuildFile; fileRef = A9F7B31829425A1800B30DA7 /* latest_version_spirv_header.h */; }; + A9F7BC3B29425A1B00B30DA7 /* libspirv.cpp in Sources */ = {isa = PBXBuildFile; fileRef = A9F7B31929425A1800B30DA7 /* libspirv.cpp */; }; + A9F7BC3C29425A1B00B30DA7 /* libspirv.cpp in Sources */ = {isa = PBXBuildFile; fileRef = A9F7B31929425A1800B30DA7 /* libspirv.cpp */; }; + A9F7BC3D29425A1B00B30DA7 /* libspirv.cpp in Sources */ = {isa = PBXBuildFile; fileRef = A9F7B31929425A1800B30DA7 /* libspirv.cpp */; }; + A9F7BC3E29425A1B00B30DA7 /* instruction.h in Headers */ = {isa = PBXBuildFile; fileRef = A9F7B31A29425A1800B30DA7 /* instruction.h */; }; + A9F7BC3F29425A1B00B30DA7 /* instruction.h in Headers */ = {isa = PBXBuildFile; fileRef = A9F7B31A29425A1800B30DA7 /* instruction.h */; }; + A9F7BC4029425A1B00B30DA7 /* instruction.h in Headers */ = {isa = PBXBuildFile; fileRef = A9F7B31A29425A1800B30DA7 /* instruction.h */; }; + A9F7BC4129425A1B00B30DA7 /* spirv_optimizer_options.h in Headers */ = {isa = PBXBuildFile; fileRef = A9F7B31B29425A1800B30DA7 /* spirv_optimizer_options.h */; }; + A9F7BC4229425A1B00B30DA7 /* spirv_optimizer_options.h in Headers */ = {isa = PBXBuildFile; fileRef = A9F7B31B29425A1800B30DA7 /* spirv_optimizer_options.h */; }; + A9F7BC4329425A1B00B30DA7 /* spirv_optimizer_options.h in Headers */ = {isa = PBXBuildFile; fileRef = A9F7B31B29425A1800B30DA7 /* spirv_optimizer_options.h */; }; + A9F7BC4429425A1B00B30DA7 /* opcode.h in Headers */ = {isa = PBXBuildFile; fileRef = A9F7B31C29425A1800B30DA7 /* opcode.h */; }; + A9F7BC4529425A1B00B30DA7 /* opcode.h in Headers */ = {isa = PBXBuildFile; fileRef = A9F7B31C29425A1800B30DA7 /* opcode.h */; }; + A9F7BC4629425A1B00B30DA7 /* opcode.h in Headers */ = {isa = PBXBuildFile; fileRef = A9F7B31C29425A1800B30DA7 /* opcode.h */; }; + A9F7BC4729425A1B00B30DA7 /* operand.cpp in Sources */ = {isa = PBXBuildFile; fileRef = A9F7B31D29425A1800B30DA7 /* operand.cpp */; }; + A9F7BC4829425A1B00B30DA7 /* operand.cpp in Sources */ = {isa = PBXBuildFile; fileRef = A9F7B31D29425A1800B30DA7 /* operand.cpp */; }; + A9F7BC4929425A1B00B30DA7 /* operand.cpp in Sources */ = {isa = PBXBuildFile; fileRef = A9F7B31D29425A1800B30DA7 /* operand.cpp */; }; + A9F7BC4A29425A1B00B30DA7 /* latest_version_glsl_std_450_header.h in Headers */ = {isa = PBXBuildFile; fileRef = A9F7B31E29425A1800B30DA7 /* latest_version_glsl_std_450_header.h */; }; + A9F7BC4B29425A1B00B30DA7 /* latest_version_glsl_std_450_header.h in Headers */ = {isa = PBXBuildFile; fileRef = A9F7B31E29425A1800B30DA7 /* latest_version_glsl_std_450_header.h */; }; + A9F7BC4C29425A1B00B30DA7 /* latest_version_glsl_std_450_header.h in Headers */ = {isa = PBXBuildFile; fileRef = A9F7B31E29425A1800B30DA7 /* latest_version_glsl_std_450_header.h */; }; + A9F7BC4D29425A1B00B30DA7 /* extensions.h in Headers */ = {isa = PBXBuildFile; fileRef = A9F7B31F29425A1800B30DA7 /* extensions.h */; }; + A9F7BC4E29425A1B00B30DA7 /* extensions.h in Headers */ = {isa = PBXBuildFile; fileRef = A9F7B31F29425A1800B30DA7 /* extensions.h */; }; + A9F7BC4F29425A1B00B30DA7 /* extensions.h in Headers */ = {isa = PBXBuildFile; fileRef = A9F7B31F29425A1800B30DA7 /* extensions.h */; }; + A9F7BC5029425A1B00B30DA7 /* disassemble.cpp in Sources */ = {isa = PBXBuildFile; fileRef = A9F7B32029425A1800B30DA7 /* disassemble.cpp */; }; + A9F7BC5129425A1B00B30DA7 /* disassemble.cpp in Sources */ = {isa = PBXBuildFile; fileRef = A9F7B32029425A1800B30DA7 /* disassemble.cpp */; }; + A9F7BC5229425A1B00B30DA7 /* disassemble.cpp in Sources */ = {isa = PBXBuildFile; fileRef = A9F7B32029425A1800B30DA7 /* disassemble.cpp */; }; + A9F7BC5329425A1B00B30DA7 /* binary.h in Headers */ = {isa = PBXBuildFile; fileRef = A9F7B32129425A1800B30DA7 /* binary.h */; }; + A9F7BC5429425A1B00B30DA7 /* binary.h in Headers */ = {isa = PBXBuildFile; fileRef = A9F7B32129425A1800B30DA7 /* binary.h */; }; + A9F7BC5529425A1B00B30DA7 /* binary.h in Headers */ = {isa = PBXBuildFile; fileRef = A9F7B32129425A1800B30DA7 /* binary.h */; }; + A9F7BC5629425A1B00B30DA7 /* text_handler.cpp in Sources */ = {isa = PBXBuildFile; fileRef = A9F7B32229425A1800B30DA7 /* text_handler.cpp */; }; + A9F7BC5729425A1B00B30DA7 /* text_handler.cpp in Sources */ = {isa = PBXBuildFile; fileRef = A9F7B32229425A1800B30DA7 /* text_handler.cpp */; }; + A9F7BC5829425A1B00B30DA7 /* text_handler.cpp in Sources */ = {isa = PBXBuildFile; fileRef = A9F7B32229425A1800B30DA7 /* text_handler.cpp */; }; + A9F7BC5929425A1B00B30DA7 /* validate_annotation.cpp in Sources */ = {isa = PBXBuildFile; fileRef = A9F7B32429425A1800B30DA7 /* validate_annotation.cpp */; }; + A9F7BC5A29425A1B00B30DA7 /* validate_annotation.cpp in Sources */ = {isa = PBXBuildFile; fileRef = A9F7B32429425A1800B30DA7 /* validate_annotation.cpp */; }; + A9F7BC5B29425A1B00B30DA7 /* validate_annotation.cpp in Sources */ = {isa = PBXBuildFile; fileRef = A9F7B32429425A1800B30DA7 /* validate_annotation.cpp */; }; + A9F7BC5C29425A1B00B30DA7 /* validate_misc.cpp in Sources */ = {isa = PBXBuildFile; fileRef = A9F7B32529425A1800B30DA7 /* validate_misc.cpp */; }; + A9F7BC5D29425A1B00B30DA7 /* validate_misc.cpp in Sources */ = {isa = PBXBuildFile; fileRef = A9F7B32529425A1800B30DA7 /* validate_misc.cpp */; }; + A9F7BC5E29425A1B00B30DA7 /* validate_misc.cpp in Sources */ = {isa = PBXBuildFile; fileRef = A9F7B32529425A1800B30DA7 /* validate_misc.cpp */; }; + A9F7BC5F29425A1B00B30DA7 /* validate_cfg.cpp in Sources */ = {isa = PBXBuildFile; fileRef = A9F7B32629425A1800B30DA7 /* validate_cfg.cpp */; }; + A9F7BC6029425A1B00B30DA7 /* validate_cfg.cpp in Sources */ = {isa = PBXBuildFile; fileRef = A9F7B32629425A1800B30DA7 /* validate_cfg.cpp */; }; + A9F7BC6129425A1B00B30DA7 /* validate_cfg.cpp in Sources */ = {isa = PBXBuildFile; fileRef = A9F7B32629425A1800B30DA7 /* validate_cfg.cpp */; }; + A9F7BC6229425A1B00B30DA7 /* validate_capability.cpp in Sources */ = {isa = PBXBuildFile; fileRef = A9F7B32729425A1800B30DA7 /* validate_capability.cpp */; }; + A9F7BC6329425A1B00B30DA7 /* validate_capability.cpp in Sources */ = {isa = PBXBuildFile; fileRef = A9F7B32729425A1800B30DA7 /* validate_capability.cpp */; }; + A9F7BC6429425A1B00B30DA7 /* validate_capability.cpp in Sources */ = {isa = PBXBuildFile; fileRef = A9F7B32729425A1800B30DA7 /* validate_capability.cpp */; }; + A9F7BC6529425A1B00B30DA7 /* construct.h in Headers */ = {isa = PBXBuildFile; fileRef = A9F7B32829425A1800B30DA7 /* construct.h */; }; + A9F7BC6629425A1B00B30DA7 /* construct.h in Headers */ = {isa = PBXBuildFile; fileRef = A9F7B32829425A1800B30DA7 /* construct.h */; }; + A9F7BC6729425A1B00B30DA7 /* construct.h in Headers */ = {isa = PBXBuildFile; fileRef = A9F7B32829425A1800B30DA7 /* construct.h */; }; + A9F7BC6829425A1B00B30DA7 /* validate_barriers.cpp in Sources */ = {isa = PBXBuildFile; fileRef = A9F7B32929425A1800B30DA7 /* validate_barriers.cpp */; }; + A9F7BC6929425A1B00B30DA7 /* validate_barriers.cpp in Sources */ = {isa = PBXBuildFile; fileRef = A9F7B32929425A1800B30DA7 /* validate_barriers.cpp */; }; + A9F7BC6A29425A1B00B30DA7 /* validate_barriers.cpp in Sources */ = {isa = PBXBuildFile; fileRef = A9F7B32929425A1800B30DA7 /* validate_barriers.cpp */; }; + A9F7BC6B29425A1B00B30DA7 /* validate_non_uniform.cpp in Sources */ = {isa = PBXBuildFile; fileRef = A9F7B32A29425A1800B30DA7 /* validate_non_uniform.cpp */; }; + A9F7BC6C29425A1B00B30DA7 /* validate_non_uniform.cpp in Sources */ = {isa = PBXBuildFile; fileRef = A9F7B32A29425A1800B30DA7 /* validate_non_uniform.cpp */; }; + A9F7BC6D29425A1B00B30DA7 /* validate_non_uniform.cpp in Sources */ = {isa = PBXBuildFile; fileRef = A9F7B32A29425A1800B30DA7 /* validate_non_uniform.cpp */; }; + A9F7BC6E29425A1B00B30DA7 /* validate_ray_query.cpp in Sources */ = {isa = PBXBuildFile; fileRef = A9F7B32B29425A1800B30DA7 /* validate_ray_query.cpp */; }; + A9F7BC6F29425A1B00B30DA7 /* validate_ray_query.cpp in Sources */ = {isa = PBXBuildFile; fileRef = A9F7B32B29425A1800B30DA7 /* validate_ray_query.cpp */; }; + A9F7BC7029425A1B00B30DA7 /* validate_ray_query.cpp in Sources */ = {isa = PBXBuildFile; fileRef = A9F7B32B29425A1800B30DA7 /* validate_ray_query.cpp */; }; + A9F7BC7129425A1B00B30DA7 /* validate_ray_tracing.cpp in Sources */ = {isa = PBXBuildFile; fileRef = A9F7B32C29425A1800B30DA7 /* validate_ray_tracing.cpp */; }; + A9F7BC7229425A1B00B30DA7 /* validate_ray_tracing.cpp in Sources */ = {isa = PBXBuildFile; fileRef = A9F7B32C29425A1800B30DA7 /* validate_ray_tracing.cpp */; }; + A9F7BC7329425A1B00B30DA7 /* validate_ray_tracing.cpp in Sources */ = {isa = PBXBuildFile; fileRef = A9F7B32C29425A1800B30DA7 /* validate_ray_tracing.cpp */; }; + A9F7BC7429425A1B00B30DA7 /* validate_scopes.cpp in Sources */ = {isa = PBXBuildFile; fileRef = A9F7B32D29425A1800B30DA7 /* validate_scopes.cpp */; }; + A9F7BC7529425A1B00B30DA7 /* validate_scopes.cpp in Sources */ = {isa = PBXBuildFile; fileRef = A9F7B32D29425A1800B30DA7 /* validate_scopes.cpp */; }; + A9F7BC7629425A1B00B30DA7 /* validate_scopes.cpp in Sources */ = {isa = PBXBuildFile; fileRef = A9F7B32D29425A1800B30DA7 /* validate_scopes.cpp */; }; + A9F7BC7729425A1B00B30DA7 /* validate_atomics.cpp in Sources */ = {isa = PBXBuildFile; fileRef = A9F7B32E29425A1800B30DA7 /* validate_atomics.cpp */; }; + A9F7BC7829425A1B00B30DA7 /* validate_atomics.cpp in Sources */ = {isa = PBXBuildFile; fileRef = A9F7B32E29425A1800B30DA7 /* validate_atomics.cpp */; }; + A9F7BC7929425A1B00B30DA7 /* validate_atomics.cpp in Sources */ = {isa = PBXBuildFile; fileRef = A9F7B32E29425A1800B30DA7 /* validate_atomics.cpp */; }; + A9F7BC7A29425A1B00B30DA7 /* basic_block.h in Headers */ = {isa = PBXBuildFile; fileRef = A9F7B32F29425A1800B30DA7 /* basic_block.h */; }; + A9F7BC7B29425A1B00B30DA7 /* basic_block.h in Headers */ = {isa = PBXBuildFile; fileRef = A9F7B32F29425A1800B30DA7 /* basic_block.h */; }; + A9F7BC7C29425A1B00B30DA7 /* basic_block.h in Headers */ = {isa = PBXBuildFile; fileRef = A9F7B32F29425A1800B30DA7 /* basic_block.h */; }; + A9F7BC7D29425A1B00B30DA7 /* validate_instruction.cpp in Sources */ = {isa = PBXBuildFile; fileRef = A9F7B33029425A1800B30DA7 /* validate_instruction.cpp */; }; + A9F7BC7E29425A1B00B30DA7 /* validate_instruction.cpp in Sources */ = {isa = PBXBuildFile; fileRef = A9F7B33029425A1800B30DA7 /* validate_instruction.cpp */; }; + A9F7BC7F29425A1B00B30DA7 /* validate_instruction.cpp in Sources */ = {isa = PBXBuildFile; fileRef = A9F7B33029425A1800B30DA7 /* validate_instruction.cpp */; }; + A9F7BC8029425A1B00B30DA7 /* validate_ray_tracing_reorder.cpp in Sources */ = {isa = PBXBuildFile; fileRef = A9F7B33129425A1800B30DA7 /* validate_ray_tracing_reorder.cpp */; }; + A9F7BC8129425A1B00B30DA7 /* validate_ray_tracing_reorder.cpp in Sources */ = {isa = PBXBuildFile; fileRef = A9F7B33129425A1800B30DA7 /* validate_ray_tracing_reorder.cpp */; }; + A9F7BC8229425A1B00B30DA7 /* validate_ray_tracing_reorder.cpp in Sources */ = {isa = PBXBuildFile; fileRef = A9F7B33129425A1800B30DA7 /* validate_ray_tracing_reorder.cpp */; }; + A9F7BC8329425A1B00B30DA7 /* validate_decorations.cpp in Sources */ = {isa = PBXBuildFile; fileRef = A9F7B33229425A1800B30DA7 /* validate_decorations.cpp */; }; + A9F7BC8429425A1B00B30DA7 /* validate_decorations.cpp in Sources */ = {isa = PBXBuildFile; fileRef = A9F7B33229425A1800B30DA7 /* validate_decorations.cpp */; }; + A9F7BC8529425A1B00B30DA7 /* validate_decorations.cpp in Sources */ = {isa = PBXBuildFile; fileRef = A9F7B33229425A1800B30DA7 /* validate_decorations.cpp */; }; + A9F7BC8629425A1B00B30DA7 /* validate_debug.cpp in Sources */ = {isa = PBXBuildFile; fileRef = A9F7B33329425A1800B30DA7 /* validate_debug.cpp */; }; + A9F7BC8729425A1B00B30DA7 /* validate_debug.cpp in Sources */ = {isa = PBXBuildFile; fileRef = A9F7B33329425A1800B30DA7 /* validate_debug.cpp */; }; + A9F7BC8829425A1B00B30DA7 /* validate_debug.cpp in Sources */ = {isa = PBXBuildFile; fileRef = A9F7B33329425A1800B30DA7 /* validate_debug.cpp */; }; + A9F7BC8929425A1B00B30DA7 /* validate_builtins.cpp in Sources */ = {isa = PBXBuildFile; fileRef = A9F7B33429425A1800B30DA7 /* validate_builtins.cpp */; }; + A9F7BC8A29425A1B00B30DA7 /* validate_builtins.cpp in Sources */ = {isa = PBXBuildFile; fileRef = A9F7B33429425A1800B30DA7 /* validate_builtins.cpp */; }; + A9F7BC8B29425A1B00B30DA7 /* validate_builtins.cpp in Sources */ = {isa = PBXBuildFile; fileRef = A9F7B33429425A1800B30DA7 /* validate_builtins.cpp */; }; + A9F7BC8C29425A1B00B30DA7 /* validate_interfaces.cpp in Sources */ = {isa = PBXBuildFile; fileRef = A9F7B33529425A1800B30DA7 /* validate_interfaces.cpp */; }; + A9F7BC8D29425A1B00B30DA7 /* validate_interfaces.cpp in Sources */ = {isa = PBXBuildFile; fileRef = A9F7B33529425A1800B30DA7 /* validate_interfaces.cpp */; }; + A9F7BC8E29425A1B00B30DA7 /* validate_interfaces.cpp in Sources */ = {isa = PBXBuildFile; fileRef = A9F7B33529425A1800B30DA7 /* validate_interfaces.cpp */; }; + A9F7BC8F29425A1B00B30DA7 /* validate.cpp in Sources */ = {isa = PBXBuildFile; fileRef = A9F7B33629425A1800B30DA7 /* validate.cpp */; }; + A9F7BC9029425A1B00B30DA7 /* validate.cpp in Sources */ = {isa = PBXBuildFile; fileRef = A9F7B33629425A1800B30DA7 /* validate.cpp */; }; + A9F7BC9129425A1B00B30DA7 /* validate.cpp in Sources */ = {isa = PBXBuildFile; fileRef = A9F7B33629425A1800B30DA7 /* validate.cpp */; }; + A9F7BC9229425A1B00B30DA7 /* validation_state.h in Headers */ = {isa = PBXBuildFile; fileRef = A9F7B33729425A1800B30DA7 /* validation_state.h */; }; + A9F7BC9329425A1B00B30DA7 /* validation_state.h in Headers */ = {isa = PBXBuildFile; fileRef = A9F7B33729425A1800B30DA7 /* validation_state.h */; }; + A9F7BC9429425A1B00B30DA7 /* validation_state.h in Headers */ = {isa = PBXBuildFile; fileRef = A9F7B33729425A1800B30DA7 /* validation_state.h */; }; + A9F7BC9529425A1B00B30DA7 /* validate_constants.cpp in Sources */ = {isa = PBXBuildFile; fileRef = A9F7B33829425A1800B30DA7 /* validate_constants.cpp */; }; + A9F7BC9629425A1B00B30DA7 /* validate_constants.cpp in Sources */ = {isa = PBXBuildFile; fileRef = A9F7B33829425A1800B30DA7 /* validate_constants.cpp */; }; + A9F7BC9729425A1B00B30DA7 /* validate_constants.cpp in Sources */ = {isa = PBXBuildFile; fileRef = A9F7B33829425A1800B30DA7 /* validate_constants.cpp */; }; + A9F7BC9829425A1B00B30DA7 /* validate_bitwise.cpp in Sources */ = {isa = PBXBuildFile; fileRef = A9F7B33929425A1800B30DA7 /* validate_bitwise.cpp */; }; + A9F7BC9929425A1B00B30DA7 /* validate_bitwise.cpp in Sources */ = {isa = PBXBuildFile; fileRef = A9F7B33929425A1800B30DA7 /* validate_bitwise.cpp */; }; + A9F7BC9A29425A1B00B30DA7 /* validate_bitwise.cpp in Sources */ = {isa = PBXBuildFile; fileRef = A9F7B33929425A1800B30DA7 /* validate_bitwise.cpp */; }; + A9F7BC9B29425A1B00B30DA7 /* validate_extensions.cpp in Sources */ = {isa = PBXBuildFile; fileRef = A9F7B33A29425A1800B30DA7 /* validate_extensions.cpp */; }; + A9F7BC9C29425A1B00B30DA7 /* validate_extensions.cpp in Sources */ = {isa = PBXBuildFile; fileRef = A9F7B33A29425A1800B30DA7 /* validate_extensions.cpp */; }; + A9F7BC9D29425A1B00B30DA7 /* validate_extensions.cpp in Sources */ = {isa = PBXBuildFile; fileRef = A9F7B33A29425A1800B30DA7 /* validate_extensions.cpp */; }; + A9F7BC9E29425A1B00B30DA7 /* construct.cpp in Sources */ = {isa = PBXBuildFile; fileRef = A9F7B33B29425A1800B30DA7 /* construct.cpp */; }; + A9F7BC9F29425A1B00B30DA7 /* construct.cpp in Sources */ = {isa = PBXBuildFile; fileRef = A9F7B33B29425A1800B30DA7 /* construct.cpp */; }; + A9F7BCA029425A1B00B30DA7 /* construct.cpp in Sources */ = {isa = PBXBuildFile; fileRef = A9F7B33B29425A1800B30DA7 /* construct.cpp */; }; + A9F7BCA129425A1B00B30DA7 /* function.cpp in Sources */ = {isa = PBXBuildFile; fileRef = A9F7B33C29425A1800B30DA7 /* function.cpp */; }; + A9F7BCA229425A1B00B30DA7 /* function.cpp in Sources */ = {isa = PBXBuildFile; fileRef = A9F7B33C29425A1800B30DA7 /* function.cpp */; }; + A9F7BCA329425A1B00B30DA7 /* function.cpp in Sources */ = {isa = PBXBuildFile; fileRef = A9F7B33C29425A1800B30DA7 /* function.cpp */; }; + A9F7BCA429425A1B00B30DA7 /* validate.h in Headers */ = {isa = PBXBuildFile; fileRef = A9F7B33D29425A1800B30DA7 /* validate.h */; }; + A9F7BCA529425A1B00B30DA7 /* validate.h in Headers */ = {isa = PBXBuildFile; fileRef = A9F7B33D29425A1800B30DA7 /* validate.h */; }; + A9F7BCA629425A1B00B30DA7 /* validate.h in Headers */ = {isa = PBXBuildFile; fileRef = A9F7B33D29425A1800B30DA7 /* validate.h */; }; + A9F7BCA729425A1B00B30DA7 /* validate_adjacency.cpp in Sources */ = {isa = PBXBuildFile; fileRef = A9F7B33E29425A1800B30DA7 /* validate_adjacency.cpp */; }; + A9F7BCA829425A1B00B30DA7 /* validate_adjacency.cpp in Sources */ = {isa = PBXBuildFile; fileRef = A9F7B33E29425A1800B30DA7 /* validate_adjacency.cpp */; }; + A9F7BCA929425A1B00B30DA7 /* validate_adjacency.cpp in Sources */ = {isa = PBXBuildFile; fileRef = A9F7B33E29425A1800B30DA7 /* validate_adjacency.cpp */; }; + A9F7BCAA29425A1B00B30DA7 /* validate_conversion.cpp in Sources */ = {isa = PBXBuildFile; fileRef = A9F7B33F29425A1800B30DA7 /* validate_conversion.cpp */; }; + A9F7BCAB29425A1B00B30DA7 /* validate_conversion.cpp in Sources */ = {isa = PBXBuildFile; fileRef = A9F7B33F29425A1800B30DA7 /* validate_conversion.cpp */; }; + A9F7BCAC29425A1B00B30DA7 /* validate_conversion.cpp in Sources */ = {isa = PBXBuildFile; fileRef = A9F7B33F29425A1800B30DA7 /* validate_conversion.cpp */; }; + A9F7BCAD29425A1B00B30DA7 /* validate_small_type_uses.cpp in Sources */ = {isa = PBXBuildFile; fileRef = A9F7B34029425A1800B30DA7 /* validate_small_type_uses.cpp */; }; + A9F7BCAE29425A1B00B30DA7 /* validate_small_type_uses.cpp in Sources */ = {isa = PBXBuildFile; fileRef = A9F7B34029425A1800B30DA7 /* validate_small_type_uses.cpp */; }; + A9F7BCAF29425A1B00B30DA7 /* validate_small_type_uses.cpp in Sources */ = {isa = PBXBuildFile; fileRef = A9F7B34029425A1800B30DA7 /* validate_small_type_uses.cpp */; }; + A9F7BCB029425A1B00B30DA7 /* validate_scopes.h in Headers */ = {isa = PBXBuildFile; fileRef = A9F7B34129425A1800B30DA7 /* validate_scopes.h */; }; + A9F7BCB129425A1B00B30DA7 /* validate_scopes.h in Headers */ = {isa = PBXBuildFile; fileRef = A9F7B34129425A1800B30DA7 /* validate_scopes.h */; }; + A9F7BCB229425A1B00B30DA7 /* validate_scopes.h in Headers */ = {isa = PBXBuildFile; fileRef = A9F7B34129425A1800B30DA7 /* validate_scopes.h */; }; + A9F7BCB329425A1B00B30DA7 /* validate_id.cpp in Sources */ = {isa = PBXBuildFile; fileRef = A9F7B34229425A1800B30DA7 /* validate_id.cpp */; }; + A9F7BCB429425A1B00B30DA7 /* validate_id.cpp in Sources */ = {isa = PBXBuildFile; fileRef = A9F7B34229425A1800B30DA7 /* validate_id.cpp */; }; + A9F7BCB529425A1B00B30DA7 /* validate_id.cpp in Sources */ = {isa = PBXBuildFile; fileRef = A9F7B34229425A1800B30DA7 /* validate_id.cpp */; }; + A9F7BCB629425A1B00B30DA7 /* validate_memory_semantics.h in Headers */ = {isa = PBXBuildFile; fileRef = A9F7B34329425A1800B30DA7 /* validate_memory_semantics.h */; }; + A9F7BCB729425A1B00B30DA7 /* validate_memory_semantics.h in Headers */ = {isa = PBXBuildFile; fileRef = A9F7B34329425A1800B30DA7 /* validate_memory_semantics.h */; }; + A9F7BCB829425A1B00B30DA7 /* validate_memory_semantics.h in Headers */ = {isa = PBXBuildFile; fileRef = A9F7B34329425A1800B30DA7 /* validate_memory_semantics.h */; }; + A9F7BCB929425A1B00B30DA7 /* validate_arithmetics.cpp in Sources */ = {isa = PBXBuildFile; fileRef = A9F7B34429425A1800B30DA7 /* validate_arithmetics.cpp */; }; + A9F7BCBA29425A1B00B30DA7 /* validate_arithmetics.cpp in Sources */ = {isa = PBXBuildFile; fileRef = A9F7B34429425A1800B30DA7 /* validate_arithmetics.cpp */; }; + A9F7BCBB29425A1B00B30DA7 /* validate_arithmetics.cpp in Sources */ = {isa = PBXBuildFile; fileRef = A9F7B34429425A1800B30DA7 /* validate_arithmetics.cpp */; }; + A9F7BCBC29425A1B00B30DA7 /* validate_mode_setting.cpp in Sources */ = {isa = PBXBuildFile; fileRef = A9F7B34529425A1800B30DA7 /* validate_mode_setting.cpp */; }; + A9F7BCBD29425A1B00B30DA7 /* validate_mode_setting.cpp in Sources */ = {isa = PBXBuildFile; fileRef = A9F7B34529425A1800B30DA7 /* validate_mode_setting.cpp */; }; + A9F7BCBE29425A1B00B30DA7 /* validate_mode_setting.cpp in Sources */ = {isa = PBXBuildFile; fileRef = A9F7B34529425A1800B30DA7 /* validate_mode_setting.cpp */; }; + A9F7BCBF29425A1B00B30DA7 /* validate_memory_semantics.cpp in Sources */ = {isa = PBXBuildFile; fileRef = A9F7B34629425A1800B30DA7 /* validate_memory_semantics.cpp */; }; + A9F7BCC029425A1B00B30DA7 /* validate_memory_semantics.cpp in Sources */ = {isa = PBXBuildFile; fileRef = A9F7B34629425A1800B30DA7 /* validate_memory_semantics.cpp */; }; + A9F7BCC129425A1B00B30DA7 /* validate_memory_semantics.cpp in Sources */ = {isa = PBXBuildFile; fileRef = A9F7B34629425A1800B30DA7 /* validate_memory_semantics.cpp */; }; + A9F7BCC229425A1B00B30DA7 /* validate_logicals.cpp in Sources */ = {isa = PBXBuildFile; fileRef = A9F7B34729425A1800B30DA7 /* validate_logicals.cpp */; }; + A9F7BCC329425A1B00B30DA7 /* validate_logicals.cpp in Sources */ = {isa = PBXBuildFile; fileRef = A9F7B34729425A1800B30DA7 /* validate_logicals.cpp */; }; + A9F7BCC429425A1B00B30DA7 /* validate_logicals.cpp in Sources */ = {isa = PBXBuildFile; fileRef = A9F7B34729425A1800B30DA7 /* validate_logicals.cpp */; }; + A9F7BCC529425A1B00B30DA7 /* validate_derivatives.cpp in Sources */ = {isa = PBXBuildFile; fileRef = A9F7B34829425A1800B30DA7 /* validate_derivatives.cpp */; }; + A9F7BCC629425A1B00B30DA7 /* validate_derivatives.cpp in Sources */ = {isa = PBXBuildFile; fileRef = A9F7B34829425A1800B30DA7 /* validate_derivatives.cpp */; }; + A9F7BCC729425A1B00B30DA7 /* validate_derivatives.cpp in Sources */ = {isa = PBXBuildFile; fileRef = A9F7B34829425A1800B30DA7 /* validate_derivatives.cpp */; }; + A9F7BCC829425A1B00B30DA7 /* validate_memory.cpp in Sources */ = {isa = PBXBuildFile; fileRef = A9F7B34929425A1800B30DA7 /* validate_memory.cpp */; }; + A9F7BCC929425A1B00B30DA7 /* validate_memory.cpp in Sources */ = {isa = PBXBuildFile; fileRef = A9F7B34929425A1800B30DA7 /* validate_memory.cpp */; }; + A9F7BCCA29425A1B00B30DA7 /* validate_memory.cpp in Sources */ = {isa = PBXBuildFile; fileRef = A9F7B34929425A1800B30DA7 /* validate_memory.cpp */; }; + A9F7BCCB29425A1B00B30DA7 /* validate_image.cpp in Sources */ = {isa = PBXBuildFile; fileRef = A9F7B34A29425A1800B30DA7 /* validate_image.cpp */; }; + A9F7BCCC29425A1B00B30DA7 /* validate_image.cpp in Sources */ = {isa = PBXBuildFile; fileRef = A9F7B34A29425A1800B30DA7 /* validate_image.cpp */; }; + A9F7BCCD29425A1B00B30DA7 /* validate_image.cpp in Sources */ = {isa = PBXBuildFile; fileRef = A9F7B34A29425A1800B30DA7 /* validate_image.cpp */; }; + A9F7BCCE29425A1B00B30DA7 /* validate_literals.cpp in Sources */ = {isa = PBXBuildFile; fileRef = A9F7B34B29425A1800B30DA7 /* validate_literals.cpp */; }; + A9F7BCCF29425A1B00B30DA7 /* validate_literals.cpp in Sources */ = {isa = PBXBuildFile; fileRef = A9F7B34B29425A1800B30DA7 /* validate_literals.cpp */; }; + A9F7BCD029425A1B00B30DA7 /* validate_literals.cpp in Sources */ = {isa = PBXBuildFile; fileRef = A9F7B34B29425A1800B30DA7 /* validate_literals.cpp */; }; + A9F7BCD129425A1B00B30DA7 /* instruction.cpp in Sources */ = {isa = PBXBuildFile; fileRef = A9F7B34C29425A1800B30DA7 /* instruction.cpp */; }; + A9F7BCD229425A1B00B30DA7 /* instruction.cpp in Sources */ = {isa = PBXBuildFile; fileRef = A9F7B34C29425A1800B30DA7 /* instruction.cpp */; }; + A9F7BCD329425A1B00B30DA7 /* instruction.cpp in Sources */ = {isa = PBXBuildFile; fileRef = A9F7B34C29425A1800B30DA7 /* instruction.cpp */; }; + A9F7BCD429425A1B00B30DA7 /* validate_type.cpp in Sources */ = {isa = PBXBuildFile; fileRef = A9F7B34D29425A1800B30DA7 /* validate_type.cpp */; }; + A9F7BCD529425A1B00B30DA7 /* validate_type.cpp in Sources */ = {isa = PBXBuildFile; fileRef = A9F7B34D29425A1800B30DA7 /* validate_type.cpp */; }; + A9F7BCD629425A1B00B30DA7 /* validate_type.cpp in Sources */ = {isa = PBXBuildFile; fileRef = A9F7B34D29425A1800B30DA7 /* validate_type.cpp */; }; + A9F7BCD729425A1B00B30DA7 /* instruction.h in Headers */ = {isa = PBXBuildFile; fileRef = A9F7B34E29425A1800B30DA7 /* instruction.h */; }; + A9F7BCD829425A1B00B30DA7 /* instruction.h in Headers */ = {isa = PBXBuildFile; fileRef = A9F7B34E29425A1800B30DA7 /* instruction.h */; }; + A9F7BCD929425A1B00B30DA7 /* instruction.h in Headers */ = {isa = PBXBuildFile; fileRef = A9F7B34E29425A1800B30DA7 /* instruction.h */; }; + A9F7BCDA29425A1B00B30DA7 /* validate_mesh_shading.cpp in Sources */ = {isa = PBXBuildFile; fileRef = A9F7B34F29425A1800B30DA7 /* validate_mesh_shading.cpp */; }; + A9F7BCDB29425A1B00B30DA7 /* validate_mesh_shading.cpp in Sources */ = {isa = PBXBuildFile; fileRef = A9F7B34F29425A1800B30DA7 /* validate_mesh_shading.cpp */; }; + A9F7BCDC29425A1B00B30DA7 /* validate_mesh_shading.cpp in Sources */ = {isa = PBXBuildFile; fileRef = A9F7B34F29425A1800B30DA7 /* validate_mesh_shading.cpp */; }; + A9F7BCDD29425A1B00B30DA7 /* validate_execution_limitations.cpp in Sources */ = {isa = PBXBuildFile; fileRef = A9F7B35029425A1800B30DA7 /* validate_execution_limitations.cpp */; }; + A9F7BCDE29425A1B00B30DA7 /* validate_execution_limitations.cpp in Sources */ = {isa = PBXBuildFile; fileRef = A9F7B35029425A1800B30DA7 /* validate_execution_limitations.cpp */; }; + A9F7BCDF29425A1B00B30DA7 /* validate_execution_limitations.cpp in Sources */ = {isa = PBXBuildFile; fileRef = A9F7B35029425A1800B30DA7 /* validate_execution_limitations.cpp */; }; + A9F7BCE029425A1B00B30DA7 /* validate_layout.cpp in Sources */ = {isa = PBXBuildFile; fileRef = A9F7B35129425A1800B30DA7 /* validate_layout.cpp */; }; + A9F7BCE129425A1B00B30DA7 /* validate_layout.cpp in Sources */ = {isa = PBXBuildFile; fileRef = A9F7B35129425A1800B30DA7 /* validate_layout.cpp */; }; + A9F7BCE229425A1B00B30DA7 /* validate_layout.cpp in Sources */ = {isa = PBXBuildFile; fileRef = A9F7B35129425A1800B30DA7 /* validate_layout.cpp */; }; + A9F7BCE329425A1B00B30DA7 /* basic_block.cpp in Sources */ = {isa = PBXBuildFile; fileRef = A9F7B35229425A1800B30DA7 /* basic_block.cpp */; }; + A9F7BCE429425A1B00B30DA7 /* basic_block.cpp in Sources */ = {isa = PBXBuildFile; fileRef = A9F7B35229425A1800B30DA7 /* basic_block.cpp */; }; + A9F7BCE529425A1B00B30DA7 /* basic_block.cpp in Sources */ = {isa = PBXBuildFile; fileRef = A9F7B35229425A1800B30DA7 /* basic_block.cpp */; }; + A9F7BCE629425A1B00B30DA7 /* validate_function.cpp in Sources */ = {isa = PBXBuildFile; fileRef = A9F7B35329425A1800B30DA7 /* validate_function.cpp */; }; + A9F7BCE729425A1B00B30DA7 /* validate_function.cpp in Sources */ = {isa = PBXBuildFile; fileRef = A9F7B35329425A1800B30DA7 /* validate_function.cpp */; }; + A9F7BCE829425A1B00B30DA7 /* validate_function.cpp in Sources */ = {isa = PBXBuildFile; fileRef = A9F7B35329425A1800B30DA7 /* validate_function.cpp */; }; + A9F7BCE929425A1B00B30DA7 /* function.h in Headers */ = {isa = PBXBuildFile; fileRef = A9F7B35429425A1800B30DA7 /* function.h */; }; + A9F7BCEA29425A1B00B30DA7 /* function.h in Headers */ = {isa = PBXBuildFile; fileRef = A9F7B35429425A1800B30DA7 /* function.h */; }; + A9F7BCEB29425A1B00B30DA7 /* function.h in Headers */ = {isa = PBXBuildFile; fileRef = A9F7B35429425A1800B30DA7 /* function.h */; }; + A9F7BCEC29425A1B00B30DA7 /* validate_composites.cpp in Sources */ = {isa = PBXBuildFile; fileRef = A9F7B35529425A1800B30DA7 /* validate_composites.cpp */; }; + A9F7BCED29425A1B00B30DA7 /* validate_composites.cpp in Sources */ = {isa = PBXBuildFile; fileRef = A9F7B35529425A1800B30DA7 /* validate_composites.cpp */; }; + A9F7BCEE29425A1B00B30DA7 /* validate_composites.cpp in Sources */ = {isa = PBXBuildFile; fileRef = A9F7B35529425A1800B30DA7 /* validate_composites.cpp */; }; + A9F7BCEF29425A1B00B30DA7 /* validation_state.cpp in Sources */ = {isa = PBXBuildFile; fileRef = A9F7B35629425A1800B30DA7 /* validation_state.cpp */; }; + A9F7BCF029425A1B00B30DA7 /* validation_state.cpp in Sources */ = {isa = PBXBuildFile; fileRef = A9F7B35629425A1800B30DA7 /* validation_state.cpp */; }; + A9F7BCF129425A1B00B30DA7 /* validation_state.cpp in Sources */ = {isa = PBXBuildFile; fileRef = A9F7B35629425A1800B30DA7 /* validation_state.cpp */; }; + A9F7BCF229425A1B00B30DA7 /* validate_primitives.cpp in Sources */ = {isa = PBXBuildFile; fileRef = A9F7B35729425A1800B30DA7 /* validate_primitives.cpp */; }; + A9F7BCF329425A1B00B30DA7 /* validate_primitives.cpp in Sources */ = {isa = PBXBuildFile; fileRef = A9F7B35729425A1800B30DA7 /* validate_primitives.cpp */; }; + A9F7BCF429425A1B00B30DA7 /* validate_primitives.cpp in Sources */ = {isa = PBXBuildFile; fileRef = A9F7B35729425A1800B30DA7 /* validate_primitives.cpp */; }; + A9F7BCF529425A1B00B30DA7 /* decoration.h in Headers */ = {isa = PBXBuildFile; fileRef = A9F7B35829425A1800B30DA7 /* decoration.h */; }; + A9F7BCF629425A1B00B30DA7 /* decoration.h in Headers */ = {isa = PBXBuildFile; fileRef = A9F7B35829425A1800B30DA7 /* decoration.h */; }; + A9F7BCF729425A1B00B30DA7 /* decoration.h in Headers */ = {isa = PBXBuildFile; fileRef = A9F7B35829425A1800B30DA7 /* decoration.h */; }; /* End PBXBuildFile section */ /* Begin PBXContainerItemProxy section */ @@ -1731,418 +1797,6 @@ A90FD9E421CC4EB900B92BB2 /* libSPIRVCross.a */ = {isa = PBXFileReference; explicitFileType = archive.ar; includeInIndex = 0; path = libSPIRVCross.a; sourceTree = BUILT_PRODUCTS_DIR; }; A9194DF424E8940600FB127B /* copy_ext_lib_to_staging.sh */ = {isa = PBXFileReference; lastKnownFileType = text.script.sh; path = copy_ext_lib_to_staging.sh; sourceTree = ""; }; A9194DF524E8979100FB127B /* create_ext_lib_xcframeworks.sh */ = {isa = PBXFileReference; lastKnownFileType = text.script.sh; path = create_ext_lib_xcframeworks.sh; sourceTree = ""; }; - A926B47F27AC718800144157 /* spirv_target_env.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = spirv_target_env.cpp; sourceTree = ""; }; - A926B48027AC718800144157 /* spirv_fuzzer_options.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = spirv_fuzzer_options.h; sourceTree = ""; }; - A926B48127AC718800144157 /* assembly_grammar.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = assembly_grammar.h; sourceTree = ""; }; - A926B48327AC718800144157 /* CMakeLists.txt */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text; path = CMakeLists.txt; sourceTree = ""; }; - A926B48427AC718800144157 /* lint_divergent_derivatives.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = lint_divergent_derivatives.cpp; sourceTree = ""; }; - A926B48527AC718800144157 /* linter.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = linter.cpp; sourceTree = ""; }; - A926B48627AC718800144157 /* divergence_analysis.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = divergence_analysis.cpp; sourceTree = ""; }; - A926B48727AC718800144157 /* lints.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = lints.h; sourceTree = ""; }; - A926B48827AC718800144157 /* divergence_analysis.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = divergence_analysis.h; sourceTree = ""; }; - A926B48927AC718800144157 /* enum_set.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = enum_set.h; sourceTree = ""; }; - A926B48A27AC718800144157 /* CMakeLists.txt */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text; path = CMakeLists.txt; sourceTree = ""; }; - A926B48B27AC718800144157 /* text.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = text.cpp; sourceTree = ""; }; - A926B48C27AC718800144157 /* assembly_grammar.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = assembly_grammar.cpp; sourceTree = ""; }; - A926B48D27AC718800144157 /* text.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = text.h; sourceTree = ""; }; - A926B48E27AC718800144157 /* extensions.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = extensions.cpp; sourceTree = ""; }; - A926B48F27AC718800144157 /* pch_source.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = pch_source.cpp; sourceTree = ""; }; - A926B49127AC718800144157 /* parse_number.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = parse_number.h; sourceTree = ""; }; - A926B49227AC718800144157 /* ilist_node.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = ilist_node.h; sourceTree = ""; }; - A926B49327AC718800144157 /* make_unique.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = make_unique.h; sourceTree = ""; }; - A926B49427AC718800144157 /* string_utils.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = string_utils.h; sourceTree = ""; }; - A926B49527AC718800144157 /* small_vector.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = small_vector.h; sourceTree = ""; }; - A926B49627AC718800144157 /* timer.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = timer.cpp; sourceTree = ""; }; - A926B49727AC718800144157 /* timer.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = timer.h; sourceTree = ""; }; - A926B49827AC718800144157 /* string_utils.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = string_utils.cpp; sourceTree = ""; }; - A926B49927AC718800144157 /* bit_vector.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = bit_vector.h; sourceTree = ""; }; - A926B49A27AC718800144157 /* bitutils.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = bitutils.h; sourceTree = ""; }; - A926B49B27AC718800144157 /* hex_float.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = hex_float.h; sourceTree = ""; }; - A926B49C27AC718800144157 /* parse_number.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = parse_number.cpp; sourceTree = ""; }; - A926B49D27AC718800144157 /* bit_vector.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = bit_vector.cpp; sourceTree = ""; }; - A926B49E27AC718800144157 /* ilist.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = ilist.h; sourceTree = ""; }; - A926B49F27AC718800144157 /* spirv_target_env.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = spirv_target_env.h; sourceTree = ""; }; - A926B4A027AC718800144157 /* table.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = table.cpp; sourceTree = ""; }; - A926B4A227AC718800144157 /* operand_to_undef_reduction_opportunity_finder.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = operand_to_undef_reduction_opportunity_finder.h; sourceTree = ""; }; - A926B4A327AC718800144157 /* remove_selection_reduction_opportunity.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = remove_selection_reduction_opportunity.cpp; sourceTree = ""; }; - A926B4A427AC718800144157 /* remove_block_reduction_opportunity.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = remove_block_reduction_opportunity.h; sourceTree = ""; }; - A926B4A527AC718800144157 /* 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 = ""; }; - A926B4A627AC718800144157 /* reduction_pass.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = reduction_pass.cpp; sourceTree = ""; }; - A926B4A727AC718800144157 /* structured_construct_to_block_reduction_opportunity.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = structured_construct_to_block_reduction_opportunity.h; sourceTree = ""; }; - A926B4A827AC718800144157 /* operand_to_const_reduction_opportunity_finder.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = operand_to_const_reduction_opportunity_finder.cpp; sourceTree = ""; }; - A926B4A927AC718800144157 /* operand_to_const_reduction_opportunity_finder.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = operand_to_const_reduction_opportunity_finder.h; sourceTree = ""; }; - A926B4AA27AC718800144157 /* CMakeLists.txt */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text; path = CMakeLists.txt; sourceTree = ""; }; - A926B4AB27AC718800144157 /* reduction_util.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = reduction_util.cpp; sourceTree = ""; }; - A926B4AC27AC718800144157 /* structured_construct_to_block_reduction_opportunity_finder.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = structured_construct_to_block_reduction_opportunity_finder.h; sourceTree = ""; }; - A926B4AD27AC718800144157 /* 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 = ""; }; - A926B4AE27AC718800144157 /* 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 = ""; }; - A926B4AF27AC718800144157 /* remove_function_reduction_opportunity_finder.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = remove_function_reduction_opportunity_finder.cpp; sourceTree = ""; }; - A926B4B027AC718800144157 /* remove_instruction_reduction_opportunity.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = remove_instruction_reduction_opportunity.h; sourceTree = ""; }; - A926B4B127AC718800144157 /* 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 = ""; }; - A926B4B227AC718800144157 /* 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 = ""; }; - A926B4B327AC718800144157 /* remove_function_reduction_opportunity.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = remove_function_reduction_opportunity.cpp; sourceTree = ""; }; - A926B4B427AC718800144157 /* 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 = ""; }; - A926B4B527AC718800144157 /* remove_selection_reduction_opportunity_finder.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = remove_selection_reduction_opportunity_finder.cpp; sourceTree = ""; }; - A926B4B627AC718800144157 /* 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 = ""; }; - A926B4B727AC718800144157 /* remove_struct_member_reduction_opportunity.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = remove_struct_member_reduction_opportunity.h; sourceTree = ""; }; - A926B4B827AC718800144157 /* 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 = ""; }; - A926B4B927AC718800144157 /* merge_blocks_reduction_opportunity.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = merge_blocks_reduction_opportunity.cpp; sourceTree = ""; }; - A926B4BA27AC718800144157 /* change_operand_reduction_opportunity.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = change_operand_reduction_opportunity.cpp; sourceTree = ""; }; - A926B4BB27AC718800144157 /* structured_loop_to_selection_reduction_opportunity.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = structured_loop_to_selection_reduction_opportunity.h; sourceTree = ""; }; - A926B4BC27AC718800144157 /* remove_function_reduction_opportunity.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = remove_function_reduction_opportunity.h; sourceTree = ""; }; - A926B4BD27AC718800144157 /* remove_unused_instruction_reduction_opportunity_finder.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = remove_unused_instruction_reduction_opportunity_finder.h; sourceTree = ""; }; - A926B4BE27AC718800144157 /* change_operand_to_undef_reduction_opportunity.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = change_operand_to_undef_reduction_opportunity.h; sourceTree = ""; }; - A926B4BF27AC718800144157 /* 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 = ""; }; - A926B4C027AC718800144157 /* remove_selection_reduction_opportunity.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = remove_selection_reduction_opportunity.h; sourceTree = ""; }; - A926B4C127AC718800144157 /* remove_instruction_reduction_opportunity.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = remove_instruction_reduction_opportunity.cpp; sourceTree = ""; }; - A926B4C227AC718800144157 /* remove_selection_reduction_opportunity_finder.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = remove_selection_reduction_opportunity_finder.h; sourceTree = ""; }; - A926B4C327AC718800144157 /* merge_blocks_reduction_opportunity_finder.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = merge_blocks_reduction_opportunity_finder.h; sourceTree = ""; }; - A926B4C427AC718800144157 /* pch_source_reduce.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = pch_source_reduce.cpp; sourceTree = ""; }; - A926B4C527AC718800144157 /* remove_struct_member_reduction_opportunity.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = remove_struct_member_reduction_opportunity.cpp; sourceTree = ""; }; - A926B4C627AC718800144157 /* remove_unused_struct_member_reduction_opportunity_finder.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = remove_unused_struct_member_reduction_opportunity_finder.h; sourceTree = ""; }; - A926B4C727AC718800144157 /* remove_unused_instruction_reduction_opportunity_finder.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = remove_unused_instruction_reduction_opportunity_finder.cpp; sourceTree = ""; }; - A926B4C827AC718800144157 /* reducer.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = reducer.cpp; sourceTree = ""; }; - A926B4C927AC718800144157 /* operand_to_undef_reduction_opportunity_finder.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = operand_to_undef_reduction_opportunity_finder.cpp; sourceTree = ""; }; - A926B4CA27AC718800144157 /* remove_function_reduction_opportunity_finder.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = remove_function_reduction_opportunity_finder.h; sourceTree = ""; }; - A926B4CB27AC718800144157 /* pch_source_reduce.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = pch_source_reduce.h; sourceTree = ""; }; - A926B4CC27AC718800144157 /* merge_blocks_reduction_opportunity_finder.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = merge_blocks_reduction_opportunity_finder.cpp; sourceTree = ""; }; - A926B4CD27AC718800144157 /* reduction_opportunity.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = reduction_opportunity.cpp; sourceTree = ""; }; - A926B4CE27AC718800144157 /* reducer.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = reducer.h; sourceTree = ""; }; - A926B4CF27AC718800144157 /* change_operand_to_undef_reduction_opportunity.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = change_operand_to_undef_reduction_opportunity.cpp; sourceTree = ""; }; - A926B4D027AC718800144157 /* reduction_opportunity.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = reduction_opportunity.h; sourceTree = ""; }; - A926B4D127AC718800144157 /* 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 = ""; }; - A926B4D227AC718800144157 /* 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 = ""; }; - A926B4D327AC718800144157 /* reduction_opportunity_finder.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = reduction_opportunity_finder.h; sourceTree = ""; }; - A926B4D427AC718800144157 /* change_operand_reduction_opportunity.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = change_operand_reduction_opportunity.h; sourceTree = ""; }; - A926B4D527AC718800144157 /* remove_block_reduction_opportunity_finder.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = remove_block_reduction_opportunity_finder.h; sourceTree = ""; }; - A926B4D627AC718800144157 /* remove_block_reduction_opportunity_finder.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = remove_block_reduction_opportunity_finder.cpp; sourceTree = ""; }; - A926B4D727AC718800144157 /* reduction_util.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = reduction_util.h; sourceTree = ""; }; - A926B4D827AC718800144157 /* merge_blocks_reduction_opportunity.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = merge_blocks_reduction_opportunity.h; sourceTree = ""; }; - A926B4D927AC718800144157 /* 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 = ""; }; - A926B4DA27AC718800144157 /* structured_loop_to_selection_reduction_opportunity.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = structured_loop_to_selection_reduction_opportunity.cpp; sourceTree = ""; }; - A926B4DB27AC718800144157 /* structured_construct_to_block_reduction_opportunity.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = structured_construct_to_block_reduction_opportunity.cpp; sourceTree = ""; }; - A926B4DC27AC718800144157 /* remove_block_reduction_opportunity.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = remove_block_reduction_opportunity.cpp; sourceTree = ""; }; - A926B4DD27AC718800144157 /* remove_unused_struct_member_reduction_opportunity_finder.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = remove_unused_struct_member_reduction_opportunity_finder.cpp; sourceTree = ""; }; - A926B4DE27AC718800144157 /* reduction_opportunity_finder.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = reduction_opportunity_finder.cpp; sourceTree = ""; }; - A926B4DF27AC718800144157 /* structured_construct_to_block_reduction_opportunity_finder.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = structured_construct_to_block_reduction_opportunity_finder.cpp; sourceTree = ""; }; - A926B4E027AC718800144157 /* reduction_pass.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = reduction_pass.h; sourceTree = ""; }; - A926B4E127AC718800144157 /* latest_version_opencl_std_header.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = latest_version_opencl_std_header.h; sourceTree = ""; }; - A926B4E227AC718800144157 /* spirv_optimizer_options.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = spirv_optimizer_options.cpp; sourceTree = ""; }; - A926B4E327AC718800144157 /* cfa.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = cfa.h; sourceTree = ""; }; - A926B4E427AC718800144157 /* pch_source.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = pch_source.h; sourceTree = ""; }; - A926B4E527AC718800144157 /* enum_string_mapping.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = enum_string_mapping.h; sourceTree = ""; }; - A926B4E627AC718800144157 /* spirv_fuzzer_options.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = spirv_fuzzer_options.cpp; sourceTree = ""; }; - A926B4E727AC718800144157 /* spirv_reducer_options.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = spirv_reducer_options.h; sourceTree = ""; }; - A926B4E827AC718800144157 /* spirv_validator_options.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = spirv_validator_options.cpp; sourceTree = ""; }; - A926B4EF27AC718800144157 /* print.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = print.cpp; sourceTree = ""; }; - A926B4F027AC718800144157 /* spirv_definition.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = spirv_definition.h; sourceTree = ""; }; - A926B4F127AC718800144157 /* operand.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = operand.h; sourceTree = ""; }; - A926B4F227AC718800144157 /* spirv_endian.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = spirv_endian.cpp; sourceTree = ""; }; - A926B4F327AC718800144157 /* macro.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = macro.h; sourceTree = ""; }; - A926B4F427AC718800144157 /* spirv_constant.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = spirv_constant.h; sourceTree = ""; }; - A926B4F527AC718800144157 /* binary.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = binary.cpp; sourceTree = ""; }; - A926B4F627AC718800144157 /* spirv_validator_options.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = spirv_validator_options.h; sourceTree = ""; }; - A926B4F727AC718800144157 /* enum_string_mapping.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = enum_string_mapping.cpp; sourceTree = ""; }; - A926B4F827AC718800144157 /* text_handler.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = text_handler.h; sourceTree = ""; }; - A926B4F927AC718800144157 /* parsed_operand.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = parsed_operand.h; sourceTree = ""; }; - A926B4FA27AC718800144157 /* name_mapper.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = name_mapper.h; sourceTree = ""; }; - A926B4FB27AC718800144157 /* spirv_reducer_options.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = spirv_reducer_options.cpp; sourceTree = ""; }; - A926B4FC27AC718800144157 /* parsed_operand.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = parsed_operand.cpp; sourceTree = ""; }; - A926B4FD27AC718800144157 /* diagnostic.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = diagnostic.h; sourceTree = ""; }; - A926B4FE27AC718800144157 /* spirv_endian.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = spirv_endian.h; sourceTree = ""; }; - A926B4FF27AC718800144157 /* name_mapper.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = name_mapper.cpp; sourceTree = ""; }; - A926B50127AC718800144157 /* CMakeLists.txt */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text; path = CMakeLists.txt; sourceTree = ""; }; - A926B50227AC718800144157 /* linker.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = linker.cpp; sourceTree = ""; }; - A926B50327AC718800144157 /* common_debug_info.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = common_debug_info.h; sourceTree = ""; }; - A926B50427AC718800144157 /* software_version.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = software_version.cpp; sourceTree = ""; }; - A926B50527AC718800144157 /* opcode.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = opcode.cpp; sourceTree = ""; }; - A926B50627AC718800144157 /* print.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = print.h; sourceTree = ""; }; - A926B50727AC718800144157 /* ext_inst.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = ext_inst.cpp; sourceTree = ""; }; - A926B50827AC718800144157 /* disassemble.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = disassemble.h; sourceTree = ""; }; - A926B50A27AC718800144157 /* optimizer.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = optimizer.cpp; sourceTree = ""; }; - A926B50B27AC718800144157 /* if_conversion.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = if_conversion.h; sourceTree = ""; }; - A926B50C27AC718800144157 /* register_pressure.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = register_pressure.cpp; sourceTree = ""; }; - A926B50D27AC718800144157 /* loop_utils.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = loop_utils.cpp; sourceTree = ""; }; - A926B50E27AC718800144157 /* strip_nonsemantic_info_pass.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = strip_nonsemantic_info_pass.h; sourceTree = ""; }; - A926B50F27AC718800144157 /* spread_volatile_semantics.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = spread_volatile_semantics.cpp; sourceTree = ""; }; - A926B51027AC718800144157 /* merge_return_pass.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = merge_return_pass.h; sourceTree = ""; }; - A926B51127AC718800144157 /* inline_opaque_pass.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = inline_opaque_pass.h; sourceTree = ""; }; - A926B51227AC718800144157 /* loop_fusion.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = loop_fusion.h; sourceTree = ""; }; - A926B51327AC718800144157 /* combine_access_chains.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = combine_access_chains.cpp; sourceTree = ""; }; - A926B51427AC718800144157 /* build_module.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = build_module.cpp; sourceTree = ""; }; - A926B51527AC718800144157 /* composite.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = composite.h; sourceTree = ""; }; - A926B51627AC718800144157 /* compact_ids_pass.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = compact_ids_pass.h; sourceTree = ""; }; - A926B51727AC718800144157 /* register_pressure.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = register_pressure.h; sourceTree = ""; }; - A926B51827AC718800144157 /* tree_iterator.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = tree_iterator.h; sourceTree = ""; }; - A926B51927AC718800144157 /* graphics_robust_access_pass.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = graphics_robust_access_pass.h; sourceTree = ""; }; - A926B51A27AC718800144157 /* local_single_store_elim_pass.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = local_single_store_elim_pass.h; sourceTree = ""; }; - A926B51B27AC718800144157 /* reduce_load_size.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = reduce_load_size.h; sourceTree = ""; }; - A926B51C27AC718800144157 /* code_sink.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = code_sink.cpp; sourceTree = ""; }; - A926B51D27AC718800144157 /* types.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = types.cpp; sourceTree = ""; }; - A926B51E27AC718800144157 /* scalar_analysis.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = scalar_analysis.h; sourceTree = ""; }; - A926B51F27AC718800144157 /* strip_debug_info_pass.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = strip_debug_info_pass.h; sourceTree = ""; }; - A926B52027AC718800144157 /* replace_desc_array_access_using_var_index.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = replace_desc_array_access_using_var_index.h; sourceTree = ""; }; - A926B52127AC718800144157 /* cfg.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = cfg.cpp; sourceTree = ""; }; - A926B52227AC718800144157 /* decoration_manager.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = decoration_manager.cpp; sourceTree = ""; }; - A926B52327AC718800144157 /* local_single_block_elim_pass.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = local_single_block_elim_pass.cpp; sourceTree = ""; }; - A926B52427AC718800144157 /* freeze_spec_constant_value_pass.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = freeze_spec_constant_value_pass.cpp; sourceTree = ""; }; - A926B52527AC718800144157 /* replace_invalid_opc.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = replace_invalid_opc.h; sourceTree = ""; }; - A926B52627AC718800144157 /* local_access_chain_convert_pass.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = local_access_chain_convert_pass.h; sourceTree = ""; }; - A926B52727AC718800144157 /* inst_bindless_check_pass.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = inst_bindless_check_pass.cpp; sourceTree = ""; }; - A926B52827AC718800144157 /* local_redundancy_elimination.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = local_redundancy_elimination.cpp; sourceTree = ""; }; - A926B52927AC718800144157 /* CMakeLists.txt */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text; path = CMakeLists.txt; sourceTree = ""; }; - A926B52A27AC718800144157 /* instrument_pass.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = instrument_pass.cpp; sourceTree = ""; }; - A926B52B27AC718800144157 /* propagator.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = propagator.h; sourceTree = ""; }; - A926B52C27AC718800144157 /* instruction_list.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = instruction_list.h; sourceTree = ""; }; - A926B52D27AC718800144157 /* feature_manager.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = feature_manager.cpp; sourceTree = ""; }; - A926B52E27AC718800144157 /* pass.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = pass.cpp; sourceTree = ""; }; - A926B52F27AC718800144157 /* loop_fission.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = loop_fission.cpp; sourceTree = ""; }; - A926B53027AC718800144157 /* dominator_tree.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = dominator_tree.cpp; sourceTree = ""; }; - A926B53127AC718800144157 /* amd_ext_to_khr.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = amd_ext_to_khr.h; sourceTree = ""; }; - A926B53227AC718800144157 /* merge_return_pass.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = merge_return_pass.cpp; sourceTree = ""; }; - A926B53327AC718800144157 /* ir_context.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = ir_context.h; sourceTree = ""; }; - A926B53427AC718800144157 /* eliminate_dead_constant_pass.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = eliminate_dead_constant_pass.cpp; sourceTree = ""; }; - A926B53527AC718800144157 /* control_dependence.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = control_dependence.h; sourceTree = ""; }; - A926B53627AC718800144157 /* cfg_cleanup_pass.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = cfg_cleanup_pass.cpp; sourceTree = ""; }; - A926B53727AC718800144157 /* wrap_opkill.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = wrap_opkill.cpp; sourceTree = ""; }; - A926B53827AC718800144157 /* const_folding_rules.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = const_folding_rules.cpp; sourceTree = ""; }; - A926B53927AC718800144157 /* loop_unroller.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = loop_unroller.h; sourceTree = ""; }; - A926B53A27AC718800144157 /* strip_debug_info_pass.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = strip_debug_info_pass.cpp; sourceTree = ""; }; - A926B53B27AC718800144157 /* ssa_rewrite_pass.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = ssa_rewrite_pass.cpp; sourceTree = ""; }; - A926B53C27AC718800144157 /* loop_dependence.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = loop_dependence.cpp; sourceTree = ""; }; - A926B53D27AC718800144157 /* unify_const_pass.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = unify_const_pass.h; sourceTree = ""; }; - A926B53E27AC718800144157 /* ir_loader.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = ir_loader.h; sourceTree = ""; }; - A926B53F27AC718800144157 /* inst_debug_printf_pass.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = inst_debug_printf_pass.cpp; sourceTree = ""; }; - A926B54027AC718800144157 /* types.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = types.h; sourceTree = ""; }; - A926B54127AC718800144157 /* 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 = ""; }; - A926B54227AC718800144157 /* mem_pass.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = mem_pass.cpp; sourceTree = ""; }; - A926B54327AC718800144157 /* basic_block.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = basic_block.h; sourceTree = ""; }; - A926B54427AC718800144157 /* remove_duplicates_pass.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = remove_duplicates_pass.cpp; sourceTree = ""; }; - A926B54527AC718800144157 /* dead_variable_elimination.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = dead_variable_elimination.cpp; sourceTree = ""; }; - A926B54627AC718800144157 /* block_merge_pass.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = block_merge_pass.h; sourceTree = ""; }; - A926B54727AC718800144157 /* module.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = module.cpp; sourceTree = ""; }; - A926B54827AC718800144157 /* debug_info_manager.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = debug_info_manager.h; sourceTree = ""; }; - A926B54927AC718800144157 /* 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 = ""; }; - A926B54A27AC718800144157 /* loop_unswitch_pass.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = loop_unswitch_pass.cpp; sourceTree = ""; }; - A926B54B27AC718800144157 /* unify_const_pass.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = unify_const_pass.cpp; sourceTree = ""; }; - A926B54C27AC718800144157 /* type_manager.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = type_manager.cpp; sourceTree = ""; }; - A926B54D27AC718800144157 /* private_to_local_pass.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = private_to_local_pass.h; sourceTree = ""; }; - A926B54E27AC718800144157 /* convert_to_half_pass.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = convert_to_half_pass.h; sourceTree = ""; }; - A926B54F27AC718800144157 /* relax_float_ops_pass.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = relax_float_ops_pass.h; sourceTree = ""; }; - A926B55027AC718800144157 /* inline_pass.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = inline_pass.cpp; sourceTree = ""; }; - A926B55127AC718800144157 /* def_use_manager.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = def_use_manager.h; sourceTree = ""; }; - A926B55227AC718800144157 /* ir_loader.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = ir_loader.cpp; sourceTree = ""; }; - A926B55327AC718800144157 /* convert_to_sampled_image_pass.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = convert_to_sampled_image_pass.h; sourceTree = ""; }; - A926B55427AC718800144157 /* cfg_cleanup_pass.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = cfg_cleanup_pass.h; sourceTree = ""; }; - A926B55527AC718800144157 /* licm_pass.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = licm_pass.cpp; sourceTree = ""; }; - A926B55627AC718800144157 /* eliminate_dead_functions_pass.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = eliminate_dead_functions_pass.cpp; sourceTree = ""; }; - A926B55727AC718800144157 /* local_redundancy_elimination.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = local_redundancy_elimination.h; sourceTree = ""; }; - A926B55827AC718800144157 /* loop_peeling.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = loop_peeling.h; sourceTree = ""; }; - A926B55927AC718800144157 /* vector_dce.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = vector_dce.cpp; sourceTree = ""; }; - A926B55A27AC718800144157 /* block_merge_util.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = block_merge_util.h; sourceTree = ""; }; - A926B55B27AC718800144157 /* loop_unroller.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = loop_unroller.cpp; sourceTree = ""; }; - A926B55C27AC718800144157 /* desc_sroa.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = desc_sroa.h; sourceTree = ""; }; - A926B55D27AC718800144157 /* constants.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = constants.cpp; sourceTree = ""; }; - A926B55E27AC718800144157 /* loop_fusion_pass.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = loop_fusion_pass.h; sourceTree = ""; }; - A926B55F27AC718800144157 /* struct_cfg_analysis.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = struct_cfg_analysis.h; sourceTree = ""; }; - A926B56027AC718800144157 /* desc_sroa_util.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = desc_sroa_util.cpp; sourceTree = ""; }; - A926B56127AC718800144157 /* inst_buff_addr_check_pass.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = inst_buff_addr_check_pass.cpp; sourceTree = ""; }; - A926B56227AC718800144157 /* def_use_manager.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = def_use_manager.cpp; sourceTree = ""; }; - A926B56327AC718800144157 /* wrap_opkill.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = wrap_opkill.h; sourceTree = ""; }; - A926B56427AC718800144157 /* empty_pass.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = empty_pass.h; sourceTree = ""; }; - A926B56527AC718800144157 /* decoration_manager.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = decoration_manager.h; sourceTree = ""; }; - A926B56627AC718800144157 /* ccp_pass.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = ccp_pass.cpp; sourceTree = ""; }; - A926B56727AC718800144157 /* local_single_block_elim_pass.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = local_single_block_elim_pass.h; sourceTree = ""; }; - A926B56827AC718800144157 /* interp_fixup_pass.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = interp_fixup_pass.h; sourceTree = ""; }; - A926B56927AC718800144157 /* pch_source_opt.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = pch_source_opt.cpp; sourceTree = ""; }; - A926B56A27AC718800144157 /* inst_buff_addr_check_pass.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = inst_buff_addr_check_pass.h; sourceTree = ""; }; - A926B56B27AC718800144157 /* strength_reduction_pass.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = strength_reduction_pass.h; sourceTree = ""; }; - A926B56C27AC718800144157 /* aggressive_dead_code_elim_pass.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = aggressive_dead_code_elim_pass.cpp; sourceTree = ""; }; - A926B56D27AC718800144157 /* eliminate_dead_functions_util.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = eliminate_dead_functions_util.cpp; sourceTree = ""; }; - A926B56E27AC718800144157 /* inst_debug_printf_pass.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = inst_debug_printf_pass.h; sourceTree = ""; }; - A926B56F27AC718800144157 /* simplification_pass.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = simplification_pass.cpp; sourceTree = ""; }; - A926B57027AC718800144157 /* dead_branch_elim_pass.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = dead_branch_elim_pass.cpp; sourceTree = ""; }; - A926B57127AC718800144157 /* flatten_decoration_pass.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = flatten_decoration_pass.cpp; sourceTree = ""; }; - A926B57227AC718800144157 /* dead_insert_elim_pass.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = dead_insert_elim_pass.h; sourceTree = ""; }; - A926B57327AC718800144157 /* folding_rules.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = folding_rules.cpp; sourceTree = ""; }; - A926B57427AC718800144157 /* freeze_spec_constant_value_pass.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = freeze_spec_constant_value_pass.h; sourceTree = ""; }; - A926B57527AC718800144157 /* ir_context.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = ir_context.cpp; sourceTree = ""; }; - A926B57627AC718800144157 /* instrument_pass.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = instrument_pass.h; sourceTree = ""; }; - A926B57727AC718800144157 /* mem_pass.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = mem_pass.h; sourceTree = ""; }; - A926B57827AC718800144157 /* loop_descriptor.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = loop_descriptor.cpp; sourceTree = ""; }; - A926B57927AC718800144157 /* eliminate_dead_members_pass.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = eliminate_dead_members_pass.h; sourceTree = ""; }; - A926B57A27AC718800144157 /* function.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = function.cpp; sourceTree = ""; }; - A926B57B27AC718800144157 /* instruction_list.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = instruction_list.cpp; sourceTree = ""; }; - A926B57C27AC718800144157 /* control_dependence.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = control_dependence.cpp; sourceTree = ""; }; - A926B57D27AC718800144157 /* composite.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = composite.cpp; sourceTree = ""; }; - A926B57E27AC718800144157 /* convert_to_half_pass.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = convert_to_half_pass.cpp; sourceTree = ""; }; - A926B57F27AC718800144157 /* inline_pass.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = inline_pass.h; sourceTree = ""; }; - A926B58027AC718800144157 /* loop_dependence.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = loop_dependence.h; sourceTree = ""; }; - A926B58127AC718800144157 /* value_number_table.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = value_number_table.h; sourceTree = ""; }; - A926B58227AC718800144157 /* strip_nonsemantic_info_pass.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = strip_nonsemantic_info_pass.cpp; sourceTree = ""; }; - A926B58327AC718800144157 /* flatten_decoration_pass.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = flatten_decoration_pass.h; sourceTree = ""; }; - A926B58427AC718800144157 /* if_conversion.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = if_conversion.cpp; sourceTree = ""; }; - A926B58527AC718800144157 /* debug_info_manager.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = debug_info_manager.cpp; sourceTree = ""; }; - A926B58627AC718800144157 /* inline_exhaustive_pass.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = inline_exhaustive_pass.h; sourceTree = ""; }; - A926B58727AC718800144157 /* constants.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = constants.h; sourceTree = ""; }; - A926B58827AC718800144157 /* eliminate_dead_members_pass.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = eliminate_dead_members_pass.cpp; sourceTree = ""; }; - A926B58927AC718800144157 /* strength_reduction_pass.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = strength_reduction_pass.cpp; sourceTree = ""; }; - A926B58A27AC718800144157 /* desc_sroa.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = desc_sroa.cpp; sourceTree = ""; }; - A926B58B27AC718800144157 /* block_merge_util.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = block_merge_util.cpp; sourceTree = ""; }; - A926B58C27AC718800144157 /* upgrade_memory_model.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = upgrade_memory_model.h; sourceTree = ""; }; - A926B58D27AC718800144157 /* copy_prop_arrays.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = copy_prop_arrays.cpp; sourceTree = ""; }; - A926B58E27AC718800144157 /* pass_manager.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = pass_manager.cpp; sourceTree = ""; }; - A926B58F27AC718800144157 /* inline_exhaustive_pass.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = inline_exhaustive_pass.cpp; sourceTree = ""; }; - A926B59027AC718800144157 /* loop_fission.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = loop_fission.h; sourceTree = ""; }; - A926B59127AC718800144157 /* workaround1209.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = workaround1209.h; sourceTree = ""; }; - A926B59227AC718800144157 /* loop_fusion_pass.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = loop_fusion_pass.cpp; sourceTree = ""; }; - A926B59327AC718800144157 /* log.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = log.h; sourceTree = ""; }; - A926B59427AC718800144157 /* copy_prop_arrays.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = copy_prop_arrays.h; sourceTree = ""; }; - A926B59527AC718800144157 /* eliminate_dead_constant_pass.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = eliminate_dead_constant_pass.h; sourceTree = ""; }; - A926B59627AC718800144157 /* dead_insert_elim_pass.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = dead_insert_elim_pass.cpp; sourceTree = ""; }; - A926B59727AC718800144157 /* ssa_rewrite_pass.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = ssa_rewrite_pass.h; sourceTree = ""; }; - A926B59827AC718800144157 /* scalar_analysis.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = scalar_analysis.cpp; sourceTree = ""; }; - A926B59927AC718800144157 /* dead_variable_elimination.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = dead_variable_elimination.h; sourceTree = ""; }; - A926B59A27AC718800144157 /* block_merge_pass.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = block_merge_pass.cpp; sourceTree = ""; }; - A926B59B27AC718800144157 /* dominator_analysis.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = dominator_analysis.h; sourceTree = ""; }; - A926B59C27AC718800144157 /* convert_to_sampled_image_pass.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = convert_to_sampled_image_pass.cpp; sourceTree = ""; }; - A926B59D27AC718800144157 /* pass.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = pass.h; sourceTree = ""; }; - A926B59E27AC718800144157 /* folding_rules.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = folding_rules.h; sourceTree = ""; }; - A926B59F27AC718800144157 /* eliminate_dead_functions_pass.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = eliminate_dead_functions_pass.h; sourceTree = ""; }; - A926B5A027AC718800144157 /* eliminate_dead_functions_util.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = eliminate_dead_functions_util.h; sourceTree = ""; }; - A926B5A127AC718800144157 /* fold.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = fold.h; sourceTree = ""; }; - A926B5A227AC718800144157 /* local_single_store_elim_pass.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = local_single_store_elim_pass.cpp; sourceTree = ""; }; - A926B5A327AC718800144157 /* dead_branch_elim_pass.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = dead_branch_elim_pass.h; sourceTree = ""; }; - A926B5A427AC718800144157 /* private_to_local_pass.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = private_to_local_pass.cpp; sourceTree = ""; }; - A926B5A527AC718800144157 /* scalar_analysis_nodes.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = scalar_analysis_nodes.h; sourceTree = ""; }; - A926B5A627AC718800144157 /* propagator.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = propagator.cpp; sourceTree = ""; }; - A926B5A727AC718800144157 /* fix_storage_class.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = fix_storage_class.h; sourceTree = ""; }; - A926B5A827AC718800144157 /* loop_dependence_helpers.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = loop_dependence_helpers.cpp; sourceTree = ""; }; - A926B5A927AC718800144157 /* set_spec_constant_default_value_pass.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = set_spec_constant_default_value_pass.cpp; sourceTree = ""; }; - A926B5AA27AC718800144157 /* passes.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = passes.h; sourceTree = ""; }; - A926B5AB27AC718800144157 /* fold.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = fold.cpp; sourceTree = ""; }; - A926B5AC27AC718800144157 /* amd_ext_to_khr.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = amd_ext_to_khr.cpp; sourceTree = ""; }; - A926B5AD27AC718800144157 /* scalar_replacement_pass.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = scalar_replacement_pass.cpp; sourceTree = ""; }; - A926B5AE27AC718800144157 /* simplification_pass.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = simplification_pass.h; sourceTree = ""; }; - A926B5AF27AC718800144157 /* remove_duplicates_pass.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = remove_duplicates_pass.h; sourceTree = ""; }; - A926B5B027AC718800144157 /* desc_sroa_util.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = desc_sroa_util.h; sourceTree = ""; }; - A926B5B127AC718800144157 /* redundancy_elimination.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = redundancy_elimination.cpp; sourceTree = ""; }; - A926B5B227AC718800144157 /* reflect.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = reflect.h; sourceTree = ""; }; - A926B5B327AC718800144157 /* workaround1209.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = workaround1209.cpp; sourceTree = ""; }; - A926B5B427AC718800144157 /* null_pass.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = null_pass.h; sourceTree = ""; }; - A926B5B527AC718800144157 /* relax_float_ops_pass.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = relax_float_ops_pass.cpp; sourceTree = ""; }; - A926B5B627AC718800144157 /* const_folding_rules.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = const_folding_rules.h; sourceTree = ""; }; - A926B5B727AC718800144157 /* scalar_replacement_pass.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = scalar_replacement_pass.h; sourceTree = ""; }; - A926B5B827AC718800144157 /* instruction.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = instruction.cpp; sourceTree = ""; }; - A926B5B927AC718800144157 /* pch_source_opt.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = pch_source_opt.h; sourceTree = ""; }; - A926B5BA27AC718800144157 /* reduce_load_size.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = reduce_load_size.cpp; sourceTree = ""; }; - A926B5BB27AC718800144157 /* redundancy_elimination.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = redundancy_elimination.h; sourceTree = ""; }; - A926B5BC27AC718800144157 /* fix_storage_class.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = fix_storage_class.cpp; sourceTree = ""; }; - A926B5BD27AC718800144157 /* value_number_table.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = value_number_table.cpp; sourceTree = ""; }; - A926B5BE27AC718800144157 /* remove_unused_interface_variables_pass.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = remove_unused_interface_variables_pass.cpp; sourceTree = ""; }; - A926B5BF27AC718800144157 /* inline_opaque_pass.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = inline_opaque_pass.cpp; sourceTree = ""; }; - A926B5C027AC718800144157 /* replace_invalid_opc.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = replace_invalid_opc.cpp; sourceTree = ""; }; - A926B5C127AC718800144157 /* loop_utils.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = loop_utils.h; sourceTree = ""; }; - A926B5C227AC718800144157 /* module.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = module.h; sourceTree = ""; }; - A926B5C327AC718800144157 /* dominator_analysis.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = dominator_analysis.cpp; sourceTree = ""; }; - A926B5C427AC718800144157 /* ir_builder.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = ir_builder.h; sourceTree = ""; }; - A926B5C527AC718800144157 /* replace_desc_array_access_using_var_index.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = replace_desc_array_access_using_var_index.cpp; sourceTree = ""; }; - A926B5C627AC718800144157 /* loop_unswitch_pass.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = loop_unswitch_pass.h; sourceTree = ""; }; - A926B5C727AC718800144157 /* cfg.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = cfg.h; sourceTree = ""; }; - A926B5C827AC718800144157 /* code_sink.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = code_sink.h; sourceTree = ""; }; - A926B5C927AC718800144157 /* dataflow.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = dataflow.cpp; sourceTree = ""; }; - A926B5CA27AC718800144157 /* loop_descriptor.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = loop_descriptor.h; sourceTree = ""; }; - A926B5CB27AC718800144157 /* instruction.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = instruction.h; sourceTree = ""; }; - A926B5CC27AC718800144157 /* aggressive_dead_code_elim_pass.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = aggressive_dead_code_elim_pass.h; sourceTree = ""; }; - A926B5CD27AC718800144157 /* struct_cfg_analysis.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = struct_cfg_analysis.cpp; sourceTree = ""; }; - A926B5CE27AC718800144157 /* vector_dce.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = vector_dce.h; sourceTree = ""; }; - A926B5CF27AC718800144157 /* combine_access_chains.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = combine_access_chains.h; sourceTree = ""; }; - A926B5D027AC718800144157 /* pass_manager.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = pass_manager.h; sourceTree = ""; }; - A926B5D127AC718800144157 /* spread_volatile_semantics.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = spread_volatile_semantics.h; sourceTree = ""; }; - A926B5D227AC718800144157 /* local_access_chain_convert_pass.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = local_access_chain_convert_pass.cpp; sourceTree = ""; }; - A926B5D327AC718800144157 /* interp_fixup_pass.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = interp_fixup_pass.cpp; sourceTree = ""; }; - A926B5D427AC718800144157 /* basic_block.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = basic_block.cpp; sourceTree = ""; }; - A926B5D527AC718800144157 /* iterator.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = iterator.h; sourceTree = ""; }; - A926B5D627AC718800144157 /* licm_pass.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = licm_pass.h; sourceTree = ""; }; - A926B5D727AC718800144157 /* build_module.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = build_module.h; sourceTree = ""; }; - A926B5D827AC718800144157 /* ccp_pass.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = ccp_pass.h; sourceTree = ""; }; - A926B5D927AC718800144157 /* graphics_robust_access_pass.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = graphics_robust_access_pass.cpp; sourceTree = ""; }; - A926B5DA27AC718800144157 /* function.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = function.h; sourceTree = ""; }; - A926B5DB27AC718800144157 /* loop_fusion.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = loop_fusion.cpp; sourceTree = ""; }; - A926B5DC27AC718800144157 /* upgrade_memory_model.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = upgrade_memory_model.cpp; sourceTree = ""; }; - A926B5DD27AC718800144157 /* feature_manager.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = feature_manager.h; sourceTree = ""; }; - A926B5DE27AC718800144157 /* dataflow.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = dataflow.h; sourceTree = ""; }; - A926B5DF27AC718800144157 /* inst_bindless_check_pass.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = inst_bindless_check_pass.h; sourceTree = ""; }; - A926B5E027AC718800144157 /* scalar_analysis_simplification.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = scalar_analysis_simplification.cpp; sourceTree = ""; }; - A926B5E127AC718800144157 /* set_spec_constant_default_value_pass.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = set_spec_constant_default_value_pass.h; sourceTree = ""; }; - A926B5E227AC718800144157 /* dominator_tree.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = dominator_tree.h; sourceTree = ""; }; - A926B5E327AC718800144157 /* remove_unused_interface_variables_pass.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = remove_unused_interface_variables_pass.h; sourceTree = ""; }; - A926B5E427AC718800144157 /* type_manager.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = type_manager.h; sourceTree = ""; }; - A926B5E527AC718800144157 /* compact_ids_pass.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = compact_ids_pass.cpp; sourceTree = ""; }; - A926B5E627AC718800144157 /* loop_peeling.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = loop_peeling.cpp; sourceTree = ""; }; - A926B5E727AC718800144157 /* table.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = table.h; sourceTree = ""; }; - A926B77427AC718900144157 /* ext_inst.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = ext_inst.h; sourceTree = ""; }; - A926B77527AC718900144157 /* diagnostic.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = diagnostic.cpp; sourceTree = ""; }; - A926B77627AC718900144157 /* latest_version_spirv_header.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = latest_version_spirv_header.h; sourceTree = ""; }; - A926B77727AC718900144157 /* libspirv.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = libspirv.cpp; sourceTree = ""; }; - A926B77827AC718900144157 /* instruction.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = instruction.h; sourceTree = ""; }; - A926B77927AC718900144157 /* spirv_optimizer_options.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = spirv_optimizer_options.h; sourceTree = ""; }; - A926B77A27AC718900144157 /* opcode.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = opcode.h; sourceTree = ""; }; - A926B77B27AC718900144157 /* operand.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = operand.cpp; sourceTree = ""; }; - A926B77C27AC718900144157 /* latest_version_glsl_std_450_header.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = latest_version_glsl_std_450_header.h; sourceTree = ""; }; - A926B77D27AC718900144157 /* extensions.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = extensions.h; sourceTree = ""; }; - A926B77E27AC718900144157 /* disassemble.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = disassemble.cpp; sourceTree = ""; }; - A926B77F27AC718900144157 /* binary.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = binary.h; sourceTree = ""; }; - A926B78027AC718900144157 /* text_handler.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = text_handler.cpp; sourceTree = ""; }; - A926B78227AC718900144157 /* validate_annotation.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = validate_annotation.cpp; sourceTree = ""; }; - A926B78327AC718900144157 /* validate_misc.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = validate_misc.cpp; sourceTree = ""; }; - A926B78427AC718900144157 /* validate_cfg.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = validate_cfg.cpp; sourceTree = ""; }; - A926B78527AC718900144157 /* validate_capability.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = validate_capability.cpp; sourceTree = ""; }; - A926B78627AC718900144157 /* construct.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = construct.h; sourceTree = ""; }; - A926B78727AC718900144157 /* validate_barriers.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = validate_barriers.cpp; sourceTree = ""; }; - A926B78827AC718900144157 /* validate_non_uniform.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = validate_non_uniform.cpp; sourceTree = ""; }; - A926B78927AC718900144157 /* validate_scopes.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = validate_scopes.cpp; sourceTree = ""; }; - A926B78A27AC718900144157 /* validate_atomics.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = validate_atomics.cpp; sourceTree = ""; }; - A926B78B27AC718900144157 /* basic_block.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = basic_block.h; sourceTree = ""; }; - A926B78C27AC718900144157 /* validate_instruction.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = validate_instruction.cpp; sourceTree = ""; }; - A926B78D27AC718900144157 /* validate_decorations.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = validate_decorations.cpp; sourceTree = ""; }; - A926B78E27AC718900144157 /* validate_debug.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = validate_debug.cpp; sourceTree = ""; }; - A926B78F27AC718900144157 /* validate_builtins.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = validate_builtins.cpp; sourceTree = ""; }; - A926B79027AC718900144157 /* validate_interfaces.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = validate_interfaces.cpp; sourceTree = ""; }; - A926B79127AC718900144157 /* validate.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = validate.cpp; sourceTree = ""; }; - A926B79227AC718900144157 /* validation_state.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = validation_state.h; sourceTree = ""; }; - A926B79327AC718900144157 /* validate_constants.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = validate_constants.cpp; sourceTree = ""; }; - A926B79427AC718900144157 /* validate_bitwise.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = validate_bitwise.cpp; sourceTree = ""; }; - A926B79527AC718900144157 /* validate_extensions.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = validate_extensions.cpp; sourceTree = ""; }; - A926B79627AC718900144157 /* construct.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = construct.cpp; sourceTree = ""; }; - A926B79727AC718900144157 /* function.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = function.cpp; sourceTree = ""; }; - A926B79827AC718900144157 /* validate.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = validate.h; sourceTree = ""; }; - A926B79927AC718900144157 /* validate_adjacency.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = validate_adjacency.cpp; sourceTree = ""; }; - A926B79A27AC718900144157 /* validate_conversion.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = validate_conversion.cpp; sourceTree = ""; }; - A926B79B27AC718900144157 /* validate_small_type_uses.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = validate_small_type_uses.cpp; sourceTree = ""; }; - A926B79C27AC718900144157 /* validate_scopes.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = validate_scopes.h; sourceTree = ""; }; - A926B79D27AC718900144157 /* validate_id.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = validate_id.cpp; sourceTree = ""; }; - A926B79E27AC718900144157 /* validate_memory_semantics.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = validate_memory_semantics.h; sourceTree = ""; }; - A926B79F27AC718900144157 /* validate_arithmetics.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = validate_arithmetics.cpp; sourceTree = ""; }; - A926B7A027AC718900144157 /* validate_mode_setting.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = validate_mode_setting.cpp; sourceTree = ""; }; - A926B7A127AC718900144157 /* validate_memory_semantics.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = validate_memory_semantics.cpp; sourceTree = ""; }; - A926B7A227AC718900144157 /* validate_logicals.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = validate_logicals.cpp; sourceTree = ""; }; - A926B7A327AC718900144157 /* validate_derivatives.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = validate_derivatives.cpp; sourceTree = ""; }; - A926B7A427AC718900144157 /* validate_memory.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = validate_memory.cpp; sourceTree = ""; }; - A926B7A527AC718900144157 /* validate_image.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = validate_image.cpp; sourceTree = ""; }; - A926B7A627AC718900144157 /* validate_literals.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = validate_literals.cpp; sourceTree = ""; }; - A926B7A727AC718900144157 /* instruction.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = instruction.cpp; sourceTree = ""; }; - A926B7A827AC718900144157 /* validate_type.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = validate_type.cpp; sourceTree = ""; }; - A926B7A927AC718900144157 /* instruction.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = instruction.h; sourceTree = ""; }; - A926B7AA27AC718900144157 /* validate_execution_limitations.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = validate_execution_limitations.cpp; sourceTree = ""; }; - A926B7AB27AC718900144157 /* validate_layout.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = validate_layout.cpp; sourceTree = ""; }; - A926B7AC27AC718900144157 /* basic_block.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = basic_block.cpp; sourceTree = ""; }; - A926B7AD27AC718900144157 /* validate_function.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = validate_function.cpp; sourceTree = ""; }; - A926B7AE27AC718900144157 /* function.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = function.h; sourceTree = ""; }; - A926B7AF27AC718900144157 /* validate_composites.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = validate_composites.cpp; sourceTree = ""; }; - A926B7B027AC718900144157 /* validation_state.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = validation_state.cpp; sourceTree = ""; }; - A926B7B127AC718900144157 /* validate_primitives.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = validate_primitives.cpp; sourceTree = ""; }; - A926B7B227AC718900144157 /* decoration.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = decoration.h; sourceTree = ""; }; A9415EF624366B0E00566F16 /* packagePregenSpirvToolsHeaders */ = {isa = PBXFileReference; lastKnownFileType = text; path = packagePregenSpirvToolsHeaders; sourceTree = ""; }; A9717C0326EE8C570041AE82 /* spirv_cross_containers.hpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.h; path = spirv_cross_containers.hpp; sourceTree = ""; }; A9717C0426EE8C570041AE82 /* spirv_cross_error_handling.hpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.h; path = spirv_cross_error_handling.hpp; sourceTree = ""; }; @@ -2271,6 +1925,441 @@ A997F9CD26865A550006F71B /* Link.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = Link.cpp; sourceTree = ""; }; A9C2104521D14FD7006BA2D3 /* fetchDependencies */ = {isa = PBXFileReference; lastKnownFileType = text; path = fetchDependencies; sourceTree = ""; }; A9C2104721D15843006BA2D3 /* ExternalRevisions */ = {isa = PBXFileReference; lastKnownFileType = folder; path = ExternalRevisions; sourceTree = ""; }; + A9F7B00D29425A1700B30DA7 /* spirv_target_env.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = spirv_target_env.cpp; sourceTree = ""; }; + A9F7B00E29425A1700B30DA7 /* spirv_fuzzer_options.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = spirv_fuzzer_options.h; sourceTree = ""; }; + A9F7B00F29425A1700B30DA7 /* assembly_grammar.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = assembly_grammar.h; sourceTree = ""; }; + A9F7B01129425A1700B30DA7 /* CMakeLists.txt */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text; path = CMakeLists.txt; sourceTree = ""; }; + A9F7B01229425A1700B30DA7 /* lint_divergent_derivatives.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = lint_divergent_derivatives.cpp; sourceTree = ""; }; + A9F7B01329425A1700B30DA7 /* linter.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = linter.cpp; sourceTree = ""; }; + A9F7B01429425A1700B30DA7 /* divergence_analysis.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = divergence_analysis.cpp; sourceTree = ""; }; + A9F7B01529425A1700B30DA7 /* lints.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = lints.h; sourceTree = ""; }; + A9F7B01629425A1700B30DA7 /* divergence_analysis.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = divergence_analysis.h; sourceTree = ""; }; + A9F7B01729425A1700B30DA7 /* enum_set.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = enum_set.h; sourceTree = ""; }; + A9F7B01829425A1700B30DA7 /* CMakeLists.txt */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text; path = CMakeLists.txt; sourceTree = ""; }; + A9F7B01929425A1700B30DA7 /* text.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = text.cpp; sourceTree = ""; }; + A9F7B01A29425A1700B30DA7 /* assembly_grammar.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = assembly_grammar.cpp; sourceTree = ""; }; + A9F7B01B29425A1700B30DA7 /* text.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = text.h; sourceTree = ""; }; + A9F7B01C29425A1700B30DA7 /* extensions.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = extensions.cpp; sourceTree = ""; }; + A9F7B01D29425A1700B30DA7 /* pch_source.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = pch_source.cpp; sourceTree = ""; }; + A9F7B01F29425A1700B30DA7 /* parse_number.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = parse_number.h; sourceTree = ""; }; + A9F7B02029425A1700B30DA7 /* ilist_node.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = ilist_node.h; sourceTree = ""; }; + A9F7B02129425A1700B30DA7 /* make_unique.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = make_unique.h; sourceTree = ""; }; + A9F7B02229425A1700B30DA7 /* string_utils.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = string_utils.h; sourceTree = ""; }; + A9F7B02329425A1700B30DA7 /* small_vector.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = small_vector.h; sourceTree = ""; }; + A9F7B02429425A1700B30DA7 /* hash_combine.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = hash_combine.h; sourceTree = ""; }; + A9F7B02529425A1700B30DA7 /* timer.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = timer.cpp; sourceTree = ""; }; + A9F7B02629425A1700B30DA7 /* timer.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = timer.h; sourceTree = ""; }; + A9F7B02729425A1700B30DA7 /* string_utils.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = string_utils.cpp; sourceTree = ""; }; + A9F7B02829425A1700B30DA7 /* bit_vector.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = bit_vector.h; sourceTree = ""; }; + A9F7B02929425A1700B30DA7 /* bitutils.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = bitutils.h; sourceTree = ""; }; + A9F7B02A29425A1700B30DA7 /* hex_float.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = hex_float.h; sourceTree = ""; }; + A9F7B02B29425A1700B30DA7 /* parse_number.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = parse_number.cpp; sourceTree = ""; }; + A9F7B02C29425A1700B30DA7 /* bit_vector.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = bit_vector.cpp; sourceTree = ""; }; + A9F7B02D29425A1700B30DA7 /* ilist.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = ilist.h; sourceTree = ""; }; + A9F7B02E29425A1700B30DA7 /* spirv_target_env.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = spirv_target_env.h; sourceTree = ""; }; + A9F7B02F29425A1700B30DA7 /* table.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = table.cpp; sourceTree = ""; }; + A9F7B03129425A1700B30DA7 /* operand_to_undef_reduction_opportunity_finder.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = operand_to_undef_reduction_opportunity_finder.h; sourceTree = ""; }; + A9F7B03229425A1700B30DA7 /* remove_selection_reduction_opportunity.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = remove_selection_reduction_opportunity.cpp; sourceTree = ""; }; + A9F7B03329425A1700B30DA7 /* remove_block_reduction_opportunity.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = remove_block_reduction_opportunity.h; sourceTree = ""; }; + A9F7B03429425A1700B30DA7 /* 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 = ""; }; + A9F7B03529425A1700B30DA7 /* reduction_pass.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = reduction_pass.cpp; sourceTree = ""; }; + A9F7B03629425A1700B30DA7 /* structured_construct_to_block_reduction_opportunity.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = structured_construct_to_block_reduction_opportunity.h; sourceTree = ""; }; + A9F7B03729425A1700B30DA7 /* operand_to_const_reduction_opportunity_finder.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = operand_to_const_reduction_opportunity_finder.cpp; sourceTree = ""; }; + A9F7B03829425A1700B30DA7 /* operand_to_const_reduction_opportunity_finder.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = operand_to_const_reduction_opportunity_finder.h; sourceTree = ""; }; + A9F7B03929425A1700B30DA7 /* CMakeLists.txt */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text; path = CMakeLists.txt; sourceTree = ""; }; + A9F7B03A29425A1700B30DA7 /* reduction_util.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = reduction_util.cpp; sourceTree = ""; }; + A9F7B03B29425A1700B30DA7 /* structured_construct_to_block_reduction_opportunity_finder.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = structured_construct_to_block_reduction_opportunity_finder.h; sourceTree = ""; }; + A9F7B03C29425A1700B30DA7 /* 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 = ""; }; + A9F7B03D29425A1700B30DA7 /* 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 = ""; }; + A9F7B03E29425A1700B30DA7 /* remove_function_reduction_opportunity_finder.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = remove_function_reduction_opportunity_finder.cpp; sourceTree = ""; }; + A9F7B03F29425A1700B30DA7 /* remove_instruction_reduction_opportunity.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = remove_instruction_reduction_opportunity.h; sourceTree = ""; }; + A9F7B04029425A1700B30DA7 /* 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 = ""; }; + A9F7B04129425A1700B30DA7 /* 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 = ""; }; + A9F7B04229425A1700B30DA7 /* remove_function_reduction_opportunity.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = remove_function_reduction_opportunity.cpp; sourceTree = ""; }; + A9F7B04329425A1700B30DA7 /* 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 = ""; }; + A9F7B04429425A1700B30DA7 /* remove_selection_reduction_opportunity_finder.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = remove_selection_reduction_opportunity_finder.cpp; sourceTree = ""; }; + A9F7B04529425A1700B30DA7 /* 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 = ""; }; + A9F7B04629425A1700B30DA7 /* remove_struct_member_reduction_opportunity.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = remove_struct_member_reduction_opportunity.h; sourceTree = ""; }; + A9F7B04729425A1700B30DA7 /* 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 = ""; }; + A9F7B04829425A1700B30DA7 /* merge_blocks_reduction_opportunity.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = merge_blocks_reduction_opportunity.cpp; sourceTree = ""; }; + A9F7B04929425A1700B30DA7 /* change_operand_reduction_opportunity.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = change_operand_reduction_opportunity.cpp; sourceTree = ""; }; + A9F7B04A29425A1700B30DA7 /* structured_loop_to_selection_reduction_opportunity.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = structured_loop_to_selection_reduction_opportunity.h; sourceTree = ""; }; + A9F7B04B29425A1700B30DA7 /* remove_function_reduction_opportunity.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = remove_function_reduction_opportunity.h; sourceTree = ""; }; + A9F7B04C29425A1700B30DA7 /* remove_unused_instruction_reduction_opportunity_finder.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = remove_unused_instruction_reduction_opportunity_finder.h; sourceTree = ""; }; + A9F7B04D29425A1700B30DA7 /* change_operand_to_undef_reduction_opportunity.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = change_operand_to_undef_reduction_opportunity.h; sourceTree = ""; }; + A9F7B04E29425A1700B30DA7 /* 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 = ""; }; + A9F7B04F29425A1700B30DA7 /* remove_selection_reduction_opportunity.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = remove_selection_reduction_opportunity.h; sourceTree = ""; }; + A9F7B05029425A1700B30DA7 /* remove_instruction_reduction_opportunity.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = remove_instruction_reduction_opportunity.cpp; sourceTree = ""; }; + A9F7B05129425A1700B30DA7 /* remove_selection_reduction_opportunity_finder.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = remove_selection_reduction_opportunity_finder.h; sourceTree = ""; }; + A9F7B05229425A1700B30DA7 /* merge_blocks_reduction_opportunity_finder.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = merge_blocks_reduction_opportunity_finder.h; sourceTree = ""; }; + A9F7B05329425A1700B30DA7 /* pch_source_reduce.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = pch_source_reduce.cpp; sourceTree = ""; }; + A9F7B05429425A1700B30DA7 /* remove_struct_member_reduction_opportunity.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = remove_struct_member_reduction_opportunity.cpp; sourceTree = ""; }; + A9F7B05529425A1700B30DA7 /* remove_unused_struct_member_reduction_opportunity_finder.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = remove_unused_struct_member_reduction_opportunity_finder.h; sourceTree = ""; }; + A9F7B05629425A1700B30DA7 /* remove_unused_instruction_reduction_opportunity_finder.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = remove_unused_instruction_reduction_opportunity_finder.cpp; sourceTree = ""; }; + A9F7B05729425A1700B30DA7 /* reducer.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = reducer.cpp; sourceTree = ""; }; + A9F7B05829425A1700B30DA7 /* operand_to_undef_reduction_opportunity_finder.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = operand_to_undef_reduction_opportunity_finder.cpp; sourceTree = ""; }; + A9F7B05929425A1700B30DA7 /* remove_function_reduction_opportunity_finder.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = remove_function_reduction_opportunity_finder.h; sourceTree = ""; }; + A9F7B05A29425A1700B30DA7 /* pch_source_reduce.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = pch_source_reduce.h; sourceTree = ""; }; + A9F7B05B29425A1700B30DA7 /* merge_blocks_reduction_opportunity_finder.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = merge_blocks_reduction_opportunity_finder.cpp; sourceTree = ""; }; + A9F7B05C29425A1700B30DA7 /* reduction_opportunity.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = reduction_opportunity.cpp; sourceTree = ""; }; + A9F7B05D29425A1700B30DA7 /* reducer.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = reducer.h; sourceTree = ""; }; + A9F7B05E29425A1700B30DA7 /* change_operand_to_undef_reduction_opportunity.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = change_operand_to_undef_reduction_opportunity.cpp; sourceTree = ""; }; + A9F7B05F29425A1700B30DA7 /* reduction_opportunity.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = reduction_opportunity.h; sourceTree = ""; }; + A9F7B06029425A1700B30DA7 /* 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 = ""; }; + A9F7B06129425A1700B30DA7 /* 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 = ""; }; + A9F7B06229425A1700B30DA7 /* reduction_opportunity_finder.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = reduction_opportunity_finder.h; sourceTree = ""; }; + A9F7B06329425A1700B30DA7 /* change_operand_reduction_opportunity.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = change_operand_reduction_opportunity.h; sourceTree = ""; }; + A9F7B06429425A1700B30DA7 /* remove_block_reduction_opportunity_finder.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = remove_block_reduction_opportunity_finder.h; sourceTree = ""; }; + A9F7B06529425A1700B30DA7 /* remove_block_reduction_opportunity_finder.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = remove_block_reduction_opportunity_finder.cpp; sourceTree = ""; }; + A9F7B06629425A1700B30DA7 /* reduction_util.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = reduction_util.h; sourceTree = ""; }; + A9F7B06729425A1700B30DA7 /* merge_blocks_reduction_opportunity.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = merge_blocks_reduction_opportunity.h; sourceTree = ""; }; + A9F7B06829425A1700B30DA7 /* 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 = ""; }; + A9F7B06929425A1700B30DA7 /* structured_loop_to_selection_reduction_opportunity.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = structured_loop_to_selection_reduction_opportunity.cpp; sourceTree = ""; }; + A9F7B06A29425A1700B30DA7 /* structured_construct_to_block_reduction_opportunity.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = structured_construct_to_block_reduction_opportunity.cpp; sourceTree = ""; }; + A9F7B06B29425A1700B30DA7 /* remove_block_reduction_opportunity.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = remove_block_reduction_opportunity.cpp; sourceTree = ""; }; + A9F7B06C29425A1700B30DA7 /* remove_unused_struct_member_reduction_opportunity_finder.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = remove_unused_struct_member_reduction_opportunity_finder.cpp; sourceTree = ""; }; + A9F7B06D29425A1700B30DA7 /* reduction_opportunity_finder.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = reduction_opportunity_finder.cpp; sourceTree = ""; }; + A9F7B06E29425A1700B30DA7 /* structured_construct_to_block_reduction_opportunity_finder.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = structured_construct_to_block_reduction_opportunity_finder.cpp; sourceTree = ""; }; + A9F7B06F29425A1700B30DA7 /* reduction_pass.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = reduction_pass.h; sourceTree = ""; }; + A9F7B07029425A1700B30DA7 /* latest_version_opencl_std_header.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = latest_version_opencl_std_header.h; sourceTree = ""; }; + A9F7B07129425A1700B30DA7 /* spirv_optimizer_options.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = spirv_optimizer_options.cpp; sourceTree = ""; }; + A9F7B07229425A1700B30DA7 /* cfa.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = cfa.h; sourceTree = ""; }; + A9F7B07329425A1700B30DA7 /* pch_source.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = pch_source.h; sourceTree = ""; }; + A9F7B07429425A1700B30DA7 /* enum_string_mapping.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = enum_string_mapping.h; sourceTree = ""; }; + A9F7B07529425A1700B30DA7 /* spirv_fuzzer_options.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = spirv_fuzzer_options.cpp; sourceTree = ""; }; + A9F7B07629425A1700B30DA7 /* spirv_reducer_options.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = spirv_reducer_options.h; sourceTree = ""; }; + A9F7B07729425A1700B30DA7 /* spirv_validator_options.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = spirv_validator_options.cpp; sourceTree = ""; }; + A9F7B07E29425A1700B30DA7 /* print.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = print.cpp; sourceTree = ""; }; + A9F7B07F29425A1700B30DA7 /* spirv_definition.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = spirv_definition.h; sourceTree = ""; }; + A9F7B08029425A1700B30DA7 /* operand.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = operand.h; sourceTree = ""; }; + A9F7B08129425A1700B30DA7 /* spirv_endian.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = spirv_endian.cpp; sourceTree = ""; }; + A9F7B08229425A1700B30DA7 /* macro.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = macro.h; sourceTree = ""; }; + A9F7B08329425A1700B30DA7 /* spirv_constant.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = spirv_constant.h; sourceTree = ""; }; + A9F7B08429425A1700B30DA7 /* binary.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = binary.cpp; sourceTree = ""; }; + A9F7B08629425A1700B30DA7 /* CMakeLists.txt */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text; path = CMakeLists.txt; sourceTree = ""; }; + A9F7B08729425A1700B30DA7 /* diff.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = diff.h; sourceTree = ""; }; + A9F7B08829425A1700B30DA7 /* lcs.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = lcs.h; sourceTree = ""; }; + A9F7B08929425A1700B30DA7 /* diff.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = diff.cpp; sourceTree = ""; }; + A9F7B08A29425A1700B30DA7 /* spirv_validator_options.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = spirv_validator_options.h; sourceTree = ""; }; + A9F7B08B29425A1700B30DA7 /* enum_string_mapping.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = enum_string_mapping.cpp; sourceTree = ""; }; + A9F7B08C29425A1700B30DA7 /* text_handler.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = text_handler.h; sourceTree = ""; }; + A9F7B08D29425A1700B30DA7 /* parsed_operand.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = parsed_operand.h; sourceTree = ""; }; + A9F7B08E29425A1700B30DA7 /* name_mapper.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = name_mapper.h; sourceTree = ""; }; + A9F7B08F29425A1700B30DA7 /* spirv_reducer_options.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = spirv_reducer_options.cpp; sourceTree = ""; }; + A9F7B09029425A1700B30DA7 /* parsed_operand.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = parsed_operand.cpp; sourceTree = ""; }; + A9F7B09129425A1700B30DA7 /* diagnostic.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = diagnostic.h; sourceTree = ""; }; + A9F7B09229425A1700B30DA7 /* spirv_endian.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = spirv_endian.h; sourceTree = ""; }; + A9F7B09329425A1700B30DA7 /* name_mapper.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = name_mapper.cpp; sourceTree = ""; }; + A9F7B09529425A1700B30DA7 /* CMakeLists.txt */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text; path = CMakeLists.txt; sourceTree = ""; }; + A9F7B09629425A1700B30DA7 /* linker.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = linker.cpp; sourceTree = ""; }; + A9F7B09729425A1700B30DA7 /* common_debug_info.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = common_debug_info.h; sourceTree = ""; }; + A9F7B09829425A1700B30DA7 /* software_version.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = software_version.cpp; sourceTree = ""; }; + A9F7B09929425A1700B30DA7 /* opcode.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = opcode.cpp; sourceTree = ""; }; + A9F7B09A29425A1700B30DA7 /* print.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = print.h; sourceTree = ""; }; + A9F7B09B29425A1700B30DA7 /* ext_inst.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = ext_inst.cpp; sourceTree = ""; }; + A9F7B09C29425A1700B30DA7 /* disassemble.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = disassemble.h; sourceTree = ""; }; + A9F7B09E29425A1700B30DA7 /* optimizer.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = optimizer.cpp; sourceTree = ""; }; + A9F7B09F29425A1700B30DA7 /* if_conversion.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = if_conversion.h; sourceTree = ""; }; + A9F7B0A029425A1700B30DA7 /* register_pressure.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = register_pressure.cpp; sourceTree = ""; }; + A9F7B0A129425A1700B30DA7 /* loop_utils.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = loop_utils.cpp; sourceTree = ""; }; + A9F7B0A229425A1700B30DA7 /* strip_nonsemantic_info_pass.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = strip_nonsemantic_info_pass.h; sourceTree = ""; }; + A9F7B0A329425A1700B30DA7 /* spread_volatile_semantics.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = spread_volatile_semantics.cpp; sourceTree = ""; }; + A9F7B0A429425A1700B30DA7 /* merge_return_pass.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = merge_return_pass.h; sourceTree = ""; }; + A9F7B0A529425A1700B30DA7 /* inline_opaque_pass.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = inline_opaque_pass.h; sourceTree = ""; }; + A9F7B0A629425A1700B30DA7 /* loop_fusion.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = loop_fusion.h; sourceTree = ""; }; + A9F7B0A729425A1700B30DA7 /* combine_access_chains.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = combine_access_chains.cpp; sourceTree = ""; }; + A9F7B0A829425A1700B30DA7 /* build_module.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = build_module.cpp; sourceTree = ""; }; + A9F7B0A929425A1700B30DA7 /* eliminate_dead_output_stores_pass.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = eliminate_dead_output_stores_pass.cpp; sourceTree = ""; }; + A9F7B0AA29425A1700B30DA7 /* composite.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = composite.h; sourceTree = ""; }; + A9F7B0AB29425A1700B30DA7 /* liveness.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = liveness.cpp; sourceTree = ""; }; + A9F7B0AC29425A1700B30DA7 /* compact_ids_pass.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = compact_ids_pass.h; sourceTree = ""; }; + A9F7B0AD29425A1700B30DA7 /* register_pressure.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = register_pressure.h; sourceTree = ""; }; + A9F7B0AE29425A1700B30DA7 /* tree_iterator.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = tree_iterator.h; sourceTree = ""; }; + A9F7B0AF29425A1700B30DA7 /* interface_var_sroa.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = interface_var_sroa.h; sourceTree = ""; }; + A9F7B0B029425A1700B30DA7 /* graphics_robust_access_pass.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = graphics_robust_access_pass.h; sourceTree = ""; }; + A9F7B0B129425A1700B30DA7 /* local_single_store_elim_pass.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = local_single_store_elim_pass.h; sourceTree = ""; }; + A9F7B0B229425A1700B30DA7 /* reduce_load_size.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = reduce_load_size.h; sourceTree = ""; }; + A9F7B0B329425A1700B30DA7 /* code_sink.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = code_sink.cpp; sourceTree = ""; }; + A9F7B0B429425A1700B30DA7 /* types.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = types.cpp; sourceTree = ""; }; + A9F7B0B529425A1700B30DA7 /* scalar_analysis.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = scalar_analysis.h; sourceTree = ""; }; + A9F7B0B629425A1700B30DA7 /* strip_debug_info_pass.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = strip_debug_info_pass.h; sourceTree = ""; }; + A9F7B0B729425A1700B30DA7 /* replace_desc_array_access_using_var_index.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = replace_desc_array_access_using_var_index.h; sourceTree = ""; }; + A9F7B0B829425A1700B30DA7 /* cfg.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = cfg.cpp; sourceTree = ""; }; + A9F7B0B929425A1700B30DA7 /* decoration_manager.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = decoration_manager.cpp; sourceTree = ""; }; + A9F7B0BA29425A1700B30DA7 /* local_single_block_elim_pass.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = local_single_block_elim_pass.cpp; sourceTree = ""; }; + A9F7B0BB29425A1700B30DA7 /* freeze_spec_constant_value_pass.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = freeze_spec_constant_value_pass.cpp; sourceTree = ""; }; + A9F7B0BC29425A1700B30DA7 /* replace_invalid_opc.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = replace_invalid_opc.h; sourceTree = ""; }; + A9F7B0BD29425A1700B30DA7 /* eliminate_dead_output_stores_pass.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = eliminate_dead_output_stores_pass.h; sourceTree = ""; }; + A9F7B0BE29425A1700B30DA7 /* local_access_chain_convert_pass.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = local_access_chain_convert_pass.h; sourceTree = ""; }; + A9F7B0BF29425A1700B30DA7 /* inst_bindless_check_pass.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = inst_bindless_check_pass.cpp; sourceTree = ""; }; + A9F7B0C029425A1700B30DA7 /* local_redundancy_elimination.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = local_redundancy_elimination.cpp; sourceTree = ""; }; + A9F7B0C129425A1700B30DA7 /* CMakeLists.txt */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text; path = CMakeLists.txt; sourceTree = ""; }; + A9F7B0C229425A1700B30DA7 /* instrument_pass.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = instrument_pass.cpp; sourceTree = ""; }; + A9F7B0C329425A1700B30DA7 /* propagator.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = propagator.h; sourceTree = ""; }; + A9F7B0C429425A1700B30DA7 /* instruction_list.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = instruction_list.h; sourceTree = ""; }; + A9F7B0C529425A1700B30DA7 /* feature_manager.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = feature_manager.cpp; sourceTree = ""; }; + A9F7B0C629425A1700B30DA7 /* pass.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = pass.cpp; sourceTree = ""; }; + A9F7B0C729425A1700B30DA7 /* loop_fission.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = loop_fission.cpp; sourceTree = ""; }; + A9F7B0C829425A1700B30DA7 /* dominator_tree.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = dominator_tree.cpp; sourceTree = ""; }; + A9F7B0C929425A1700B30DA7 /* amd_ext_to_khr.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = amd_ext_to_khr.h; sourceTree = ""; }; + A9F7B0CA29425A1700B30DA7 /* merge_return_pass.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = merge_return_pass.cpp; sourceTree = ""; }; + A9F7B0CB29425A1700B30DA7 /* ir_context.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = ir_context.h; sourceTree = ""; }; + A9F7B0CC29425A1700B30DA7 /* eliminate_dead_constant_pass.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = eliminate_dead_constant_pass.cpp; sourceTree = ""; }; + A9F7B0CD29425A1700B30DA7 /* control_dependence.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = control_dependence.h; sourceTree = ""; }; + A9F7B0CE29425A1700B30DA7 /* cfg_cleanup_pass.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = cfg_cleanup_pass.cpp; sourceTree = ""; }; + A9F7B0CF29425A1700B30DA7 /* wrap_opkill.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = wrap_opkill.cpp; sourceTree = ""; }; + A9F7B0D029425A1700B30DA7 /* eliminate_dead_io_components_pass.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = eliminate_dead_io_components_pass.cpp; sourceTree = ""; }; + A9F7B0D129425A1700B30DA7 /* const_folding_rules.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = const_folding_rules.cpp; sourceTree = ""; }; + A9F7B0D229425A1700B30DA7 /* liveness.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = liveness.h; sourceTree = ""; }; + A9F7B0D329425A1700B30DA7 /* loop_unroller.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = loop_unroller.h; sourceTree = ""; }; + A9F7B0D429425A1700B30DA7 /* strip_debug_info_pass.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = strip_debug_info_pass.cpp; sourceTree = ""; }; + A9F7B0D529425A1700B30DA7 /* ssa_rewrite_pass.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = ssa_rewrite_pass.cpp; sourceTree = ""; }; + A9F7B0D629425A1700B30DA7 /* loop_dependence.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = loop_dependence.cpp; sourceTree = ""; }; + A9F7B0D729425A1700B30DA7 /* unify_const_pass.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = unify_const_pass.h; sourceTree = ""; }; + A9F7B0D829425A1700B30DA7 /* ir_loader.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = ir_loader.h; sourceTree = ""; }; + A9F7B0D929425A1700B30DA7 /* inst_debug_printf_pass.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = inst_debug_printf_pass.cpp; sourceTree = ""; }; + A9F7B0DA29425A1700B30DA7 /* types.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = types.h; sourceTree = ""; }; + A9F7B0DB29425A1700B30DA7 /* 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 = ""; }; + A9F7B0DC29425A1700B30DA7 /* mem_pass.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = mem_pass.cpp; sourceTree = ""; }; + A9F7B0DD29425A1700B30DA7 /* basic_block.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = basic_block.h; sourceTree = ""; }; + A9F7B0DE29425A1700B30DA7 /* remove_duplicates_pass.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = remove_duplicates_pass.cpp; sourceTree = ""; }; + A9F7B0DF29425A1700B30DA7 /* dead_variable_elimination.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = dead_variable_elimination.cpp; sourceTree = ""; }; + A9F7B0E029425A1700B30DA7 /* block_merge_pass.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = block_merge_pass.h; sourceTree = ""; }; + A9F7B0E129425A1700B30DA7 /* module.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = module.cpp; sourceTree = ""; }; + A9F7B0E229425A1700B30DA7 /* debug_info_manager.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = debug_info_manager.h; sourceTree = ""; }; + A9F7B0E329425A1700B30DA7 /* 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 = ""; }; + A9F7B0E429425A1700B30DA7 /* loop_unswitch_pass.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = loop_unswitch_pass.cpp; sourceTree = ""; }; + A9F7B0E529425A1700B30DA7 /* unify_const_pass.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = unify_const_pass.cpp; sourceTree = ""; }; + A9F7B0E629425A1700B30DA7 /* type_manager.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = type_manager.cpp; sourceTree = ""; }; + A9F7B0E729425A1700B30DA7 /* private_to_local_pass.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = private_to_local_pass.h; sourceTree = ""; }; + A9F7B0E829425A1700B30DA7 /* convert_to_half_pass.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = convert_to_half_pass.h; sourceTree = ""; }; + A9F7B0E929425A1700B30DA7 /* remove_dontinline_pass.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = remove_dontinline_pass.h; sourceTree = ""; }; + A9F7B0EA29425A1700B30DA7 /* relax_float_ops_pass.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = relax_float_ops_pass.h; sourceTree = ""; }; + A9F7B0EB29425A1700B30DA7 /* inline_pass.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = inline_pass.cpp; sourceTree = ""; }; + A9F7B0EC29425A1700B30DA7 /* def_use_manager.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = def_use_manager.h; sourceTree = ""; }; + A9F7B0ED29425A1700B30DA7 /* ir_loader.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = ir_loader.cpp; sourceTree = ""; }; + A9F7B0EE29425A1700B30DA7 /* convert_to_sampled_image_pass.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = convert_to_sampled_image_pass.h; sourceTree = ""; }; + A9F7B0EF29425A1700B30DA7 /* cfg_cleanup_pass.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = cfg_cleanup_pass.h; sourceTree = ""; }; + A9F7B0F029425A1700B30DA7 /* licm_pass.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = licm_pass.cpp; sourceTree = ""; }; + A9F7B0F129425A1700B30DA7 /* eliminate_dead_functions_pass.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = eliminate_dead_functions_pass.cpp; sourceTree = ""; }; + A9F7B0F229425A1700B30DA7 /* local_redundancy_elimination.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = local_redundancy_elimination.h; sourceTree = ""; }; + A9F7B0F329425A1700B30DA7 /* loop_peeling.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = loop_peeling.h; sourceTree = ""; }; + A9F7B0F429425A1700B30DA7 /* vector_dce.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = vector_dce.cpp; sourceTree = ""; }; + A9F7B0F529425A1700B30DA7 /* block_merge_util.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = block_merge_util.h; sourceTree = ""; }; + A9F7B0F629425A1700B30DA7 /* loop_unroller.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = loop_unroller.cpp; sourceTree = ""; }; + A9F7B0F729425A1700B30DA7 /* desc_sroa.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = desc_sroa.h; sourceTree = ""; }; + A9F7B0F829425A1700B30DA7 /* constants.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = constants.cpp; sourceTree = ""; }; + A9F7B0F929425A1700B30DA7 /* loop_fusion_pass.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = loop_fusion_pass.h; sourceTree = ""; }; + A9F7B0FA29425A1700B30DA7 /* struct_cfg_analysis.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = struct_cfg_analysis.h; sourceTree = ""; }; + A9F7B0FB29425A1700B30DA7 /* desc_sroa_util.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = desc_sroa_util.cpp; sourceTree = ""; }; + A9F7B0FC29425A1700B30DA7 /* inst_buff_addr_check_pass.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = inst_buff_addr_check_pass.cpp; sourceTree = ""; }; + A9F7B0FD29425A1700B30DA7 /* def_use_manager.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = def_use_manager.cpp; sourceTree = ""; }; + A9F7B0FE29425A1700B30DA7 /* wrap_opkill.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = wrap_opkill.h; sourceTree = ""; }; + A9F7B0FF29425A1800B30DA7 /* empty_pass.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = empty_pass.h; sourceTree = ""; }; + A9F7B10029425A1800B30DA7 /* decoration_manager.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = decoration_manager.h; sourceTree = ""; }; + A9F7B10129425A1800B30DA7 /* ccp_pass.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = ccp_pass.cpp; sourceTree = ""; }; + A9F7B10229425A1800B30DA7 /* local_single_block_elim_pass.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = local_single_block_elim_pass.h; sourceTree = ""; }; + A9F7B10329425A1800B30DA7 /* interp_fixup_pass.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = interp_fixup_pass.h; sourceTree = ""; }; + A9F7B10429425A1800B30DA7 /* eliminate_dead_io_components_pass.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = eliminate_dead_io_components_pass.h; sourceTree = ""; }; + A9F7B10529425A1800B30DA7 /* pch_source_opt.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = pch_source_opt.cpp; sourceTree = ""; }; + A9F7B10629425A1800B30DA7 /* inst_buff_addr_check_pass.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = inst_buff_addr_check_pass.h; sourceTree = ""; }; + A9F7B10729425A1800B30DA7 /* strength_reduction_pass.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = strength_reduction_pass.h; sourceTree = ""; }; + A9F7B10829425A1800B30DA7 /* aggressive_dead_code_elim_pass.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = aggressive_dead_code_elim_pass.cpp; sourceTree = ""; }; + A9F7B10929425A1800B30DA7 /* eliminate_dead_functions_util.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = eliminate_dead_functions_util.cpp; sourceTree = ""; }; + A9F7B10A29425A1800B30DA7 /* inst_debug_printf_pass.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = inst_debug_printf_pass.h; sourceTree = ""; }; + A9F7B10B29425A1800B30DA7 /* simplification_pass.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = simplification_pass.cpp; sourceTree = ""; }; + A9F7B10C29425A1800B30DA7 /* dead_branch_elim_pass.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = dead_branch_elim_pass.cpp; sourceTree = ""; }; + A9F7B10D29425A1800B30DA7 /* flatten_decoration_pass.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = flatten_decoration_pass.cpp; sourceTree = ""; }; + A9F7B10E29425A1800B30DA7 /* dead_insert_elim_pass.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = dead_insert_elim_pass.h; sourceTree = ""; }; + A9F7B10F29425A1800B30DA7 /* folding_rules.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = folding_rules.cpp; sourceTree = ""; }; + A9F7B11029425A1800B30DA7 /* freeze_spec_constant_value_pass.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = freeze_spec_constant_value_pass.h; sourceTree = ""; }; + A9F7B11129425A1800B30DA7 /* ir_context.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = ir_context.cpp; sourceTree = ""; }; + A9F7B11229425A1800B30DA7 /* instrument_pass.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = instrument_pass.h; sourceTree = ""; }; + A9F7B11329425A1800B30DA7 /* mem_pass.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = mem_pass.h; sourceTree = ""; }; + A9F7B11429425A1800B30DA7 /* loop_descriptor.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = loop_descriptor.cpp; sourceTree = ""; }; + A9F7B11529425A1800B30DA7 /* eliminate_dead_members_pass.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = eliminate_dead_members_pass.h; sourceTree = ""; }; + A9F7B11629425A1800B30DA7 /* function.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = function.cpp; sourceTree = ""; }; + A9F7B11729425A1800B30DA7 /* instruction_list.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = instruction_list.cpp; sourceTree = ""; }; + A9F7B11829425A1800B30DA7 /* control_dependence.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = control_dependence.cpp; sourceTree = ""; }; + A9F7B11929425A1800B30DA7 /* composite.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = composite.cpp; sourceTree = ""; }; + A9F7B11A29425A1800B30DA7 /* convert_to_half_pass.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = convert_to_half_pass.cpp; sourceTree = ""; }; + A9F7B11B29425A1800B30DA7 /* inline_pass.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = inline_pass.h; sourceTree = ""; }; + A9F7B11C29425A1800B30DA7 /* loop_dependence.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = loop_dependence.h; sourceTree = ""; }; + A9F7B11D29425A1800B30DA7 /* value_number_table.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = value_number_table.h; sourceTree = ""; }; + A9F7B11E29425A1800B30DA7 /* strip_nonsemantic_info_pass.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = strip_nonsemantic_info_pass.cpp; sourceTree = ""; }; + A9F7B11F29425A1800B30DA7 /* flatten_decoration_pass.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = flatten_decoration_pass.h; sourceTree = ""; }; + A9F7B12029425A1800B30DA7 /* if_conversion.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = if_conversion.cpp; sourceTree = ""; }; + A9F7B12129425A1800B30DA7 /* fix_func_call_arguments.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = fix_func_call_arguments.cpp; sourceTree = ""; }; + A9F7B12229425A1800B30DA7 /* debug_info_manager.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = debug_info_manager.cpp; sourceTree = ""; }; + A9F7B12329425A1800B30DA7 /* inline_exhaustive_pass.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = inline_exhaustive_pass.h; sourceTree = ""; }; + A9F7B12429425A1800B30DA7 /* constants.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = constants.h; sourceTree = ""; }; + A9F7B12529425A1800B30DA7 /* eliminate_dead_members_pass.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = eliminate_dead_members_pass.cpp; sourceTree = ""; }; + A9F7B12629425A1800B30DA7 /* strength_reduction_pass.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = strength_reduction_pass.cpp; sourceTree = ""; }; + A9F7B12729425A1800B30DA7 /* desc_sroa.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = desc_sroa.cpp; sourceTree = ""; }; + A9F7B12829425A1800B30DA7 /* block_merge_util.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = block_merge_util.cpp; sourceTree = ""; }; + A9F7B12929425A1800B30DA7 /* upgrade_memory_model.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = upgrade_memory_model.h; sourceTree = ""; }; + A9F7B12A29425A1800B30DA7 /* copy_prop_arrays.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = copy_prop_arrays.cpp; sourceTree = ""; }; + A9F7B12B29425A1800B30DA7 /* analyze_live_input_pass.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = analyze_live_input_pass.h; sourceTree = ""; }; + A9F7B12C29425A1800B30DA7 /* pass_manager.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = pass_manager.cpp; sourceTree = ""; }; + A9F7B12D29425A1800B30DA7 /* inline_exhaustive_pass.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = inline_exhaustive_pass.cpp; sourceTree = ""; }; + A9F7B12E29425A1800B30DA7 /* loop_fission.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = loop_fission.h; sourceTree = ""; }; + A9F7B12F29425A1800B30DA7 /* workaround1209.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = workaround1209.h; sourceTree = ""; }; + A9F7B13029425A1800B30DA7 /* loop_fusion_pass.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = loop_fusion_pass.cpp; sourceTree = ""; }; + A9F7B13129425A1800B30DA7 /* log.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = log.h; sourceTree = ""; }; + A9F7B13229425A1800B30DA7 /* copy_prop_arrays.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = copy_prop_arrays.h; sourceTree = ""; }; + A9F7B13329425A1800B30DA7 /* eliminate_dead_constant_pass.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = eliminate_dead_constant_pass.h; sourceTree = ""; }; + A9F7B13429425A1800B30DA7 /* dead_insert_elim_pass.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = dead_insert_elim_pass.cpp; sourceTree = ""; }; + A9F7B13529425A1800B30DA7 /* ssa_rewrite_pass.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = ssa_rewrite_pass.h; sourceTree = ""; }; + A9F7B13629425A1800B30DA7 /* scalar_analysis.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = scalar_analysis.cpp; sourceTree = ""; }; + A9F7B13729425A1800B30DA7 /* dead_variable_elimination.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = dead_variable_elimination.h; sourceTree = ""; }; + A9F7B13829425A1800B30DA7 /* block_merge_pass.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = block_merge_pass.cpp; sourceTree = ""; }; + A9F7B13929425A1800B30DA7 /* dominator_analysis.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = dominator_analysis.h; sourceTree = ""; }; + A9F7B13A29425A1800B30DA7 /* convert_to_sampled_image_pass.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = convert_to_sampled_image_pass.cpp; sourceTree = ""; }; + A9F7B13B29425A1800B30DA7 /* pass.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = pass.h; sourceTree = ""; }; + A9F7B13C29425A1800B30DA7 /* folding_rules.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = folding_rules.h; sourceTree = ""; }; + A9F7B13D29425A1800B30DA7 /* eliminate_dead_functions_pass.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = eliminate_dead_functions_pass.h; sourceTree = ""; }; + A9F7B13E29425A1800B30DA7 /* eliminate_dead_functions_util.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = eliminate_dead_functions_util.h; sourceTree = ""; }; + A9F7B13F29425A1800B30DA7 /* fold.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = fold.h; sourceTree = ""; }; + A9F7B14029425A1800B30DA7 /* local_single_store_elim_pass.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = local_single_store_elim_pass.cpp; sourceTree = ""; }; + A9F7B14129425A1800B30DA7 /* dead_branch_elim_pass.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = dead_branch_elim_pass.h; sourceTree = ""; }; + A9F7B14229425A1800B30DA7 /* private_to_local_pass.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = private_to_local_pass.cpp; sourceTree = ""; }; + A9F7B14329425A1800B30DA7 /* scalar_analysis_nodes.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = scalar_analysis_nodes.h; sourceTree = ""; }; + A9F7B14429425A1800B30DA7 /* propagator.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = propagator.cpp; sourceTree = ""; }; + A9F7B14529425A1800B30DA7 /* fix_storage_class.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = fix_storage_class.h; sourceTree = ""; }; + A9F7B14629425A1800B30DA7 /* loop_dependence_helpers.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = loop_dependence_helpers.cpp; sourceTree = ""; }; + A9F7B14729425A1800B30DA7 /* set_spec_constant_default_value_pass.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = set_spec_constant_default_value_pass.cpp; sourceTree = ""; }; + A9F7B14829425A1800B30DA7 /* passes.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = passes.h; sourceTree = ""; }; + A9F7B14929425A1800B30DA7 /* fold.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = fold.cpp; sourceTree = ""; }; + A9F7B14A29425A1800B30DA7 /* amd_ext_to_khr.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = amd_ext_to_khr.cpp; sourceTree = ""; }; + A9F7B14B29425A1800B30DA7 /* scalar_replacement_pass.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = scalar_replacement_pass.cpp; sourceTree = ""; }; + A9F7B14C29425A1800B30DA7 /* simplification_pass.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = simplification_pass.h; sourceTree = ""; }; + A9F7B14D29425A1800B30DA7 /* interface_var_sroa.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = interface_var_sroa.cpp; sourceTree = ""; }; + A9F7B14E29425A1800B30DA7 /* remove_duplicates_pass.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = remove_duplicates_pass.h; sourceTree = ""; }; + A9F7B14F29425A1800B30DA7 /* desc_sroa_util.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = desc_sroa_util.h; sourceTree = ""; }; + A9F7B15029425A1800B30DA7 /* redundancy_elimination.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = redundancy_elimination.cpp; sourceTree = ""; }; + A9F7B15129425A1800B30DA7 /* reflect.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = reflect.h; sourceTree = ""; }; + A9F7B15229425A1800B30DA7 /* workaround1209.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = workaround1209.cpp; sourceTree = ""; }; + A9F7B15329425A1800B30DA7 /* null_pass.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = null_pass.h; sourceTree = ""; }; + A9F7B15429425A1800B30DA7 /* relax_float_ops_pass.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = relax_float_ops_pass.cpp; sourceTree = ""; }; + A9F7B15529425A1800B30DA7 /* const_folding_rules.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = const_folding_rules.h; sourceTree = ""; }; + A9F7B15629425A1800B30DA7 /* scalar_replacement_pass.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = scalar_replacement_pass.h; sourceTree = ""; }; + A9F7B15729425A1800B30DA7 /* instruction.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = instruction.cpp; sourceTree = ""; }; + A9F7B15829425A1800B30DA7 /* pch_source_opt.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = pch_source_opt.h; sourceTree = ""; }; + A9F7B15929425A1800B30DA7 /* reduce_load_size.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = reduce_load_size.cpp; sourceTree = ""; }; + A9F7B15A29425A1800B30DA7 /* redundancy_elimination.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = redundancy_elimination.h; sourceTree = ""; }; + A9F7B15B29425A1800B30DA7 /* fix_storage_class.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = fix_storage_class.cpp; sourceTree = ""; }; + A9F7B15C29425A1800B30DA7 /* value_number_table.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = value_number_table.cpp; sourceTree = ""; }; + A9F7B15D29425A1800B30DA7 /* remove_unused_interface_variables_pass.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = remove_unused_interface_variables_pass.cpp; sourceTree = ""; }; + A9F7B15E29425A1800B30DA7 /* inline_opaque_pass.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = inline_opaque_pass.cpp; sourceTree = ""; }; + A9F7B15F29425A1800B30DA7 /* replace_invalid_opc.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = replace_invalid_opc.cpp; sourceTree = ""; }; + A9F7B16029425A1800B30DA7 /* loop_utils.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = loop_utils.h; sourceTree = ""; }; + A9F7B16129425A1800B30DA7 /* module.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = module.h; sourceTree = ""; }; + A9F7B16229425A1800B30DA7 /* dominator_analysis.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = dominator_analysis.cpp; sourceTree = ""; }; + A9F7B16329425A1800B30DA7 /* ir_builder.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = ir_builder.h; sourceTree = ""; }; + A9F7B16429425A1800B30DA7 /* replace_desc_array_access_using_var_index.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = replace_desc_array_access_using_var_index.cpp; sourceTree = ""; }; + A9F7B16529425A1800B30DA7 /* loop_unswitch_pass.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = loop_unswitch_pass.h; sourceTree = ""; }; + A9F7B16629425A1800B30DA7 /* cfg.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = cfg.h; sourceTree = ""; }; + A9F7B16729425A1800B30DA7 /* code_sink.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = code_sink.h; sourceTree = ""; }; + A9F7B16829425A1800B30DA7 /* dataflow.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = dataflow.cpp; sourceTree = ""; }; + A9F7B16929425A1800B30DA7 /* loop_descriptor.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = loop_descriptor.h; sourceTree = ""; }; + A9F7B16A29425A1800B30DA7 /* instruction.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = instruction.h; sourceTree = ""; }; + A9F7B16B29425A1800B30DA7 /* aggressive_dead_code_elim_pass.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = aggressive_dead_code_elim_pass.h; sourceTree = ""; }; + A9F7B16C29425A1800B30DA7 /* struct_cfg_analysis.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = struct_cfg_analysis.cpp; sourceTree = ""; }; + A9F7B16D29425A1800B30DA7 /* remove_dontinline_pass.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = remove_dontinline_pass.cpp; sourceTree = ""; }; + A9F7B16E29425A1800B30DA7 /* vector_dce.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = vector_dce.h; sourceTree = ""; }; + A9F7B16F29425A1800B30DA7 /* combine_access_chains.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = combine_access_chains.h; sourceTree = ""; }; + A9F7B17029425A1800B30DA7 /* pass_manager.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = pass_manager.h; sourceTree = ""; }; + A9F7B17129425A1800B30DA7 /* spread_volatile_semantics.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = spread_volatile_semantics.h; sourceTree = ""; }; + A9F7B17229425A1800B30DA7 /* local_access_chain_convert_pass.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = local_access_chain_convert_pass.cpp; sourceTree = ""; }; + A9F7B17329425A1800B30DA7 /* interp_fixup_pass.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = interp_fixup_pass.cpp; sourceTree = ""; }; + A9F7B17429425A1800B30DA7 /* basic_block.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = basic_block.cpp; sourceTree = ""; }; + A9F7B17529425A1800B30DA7 /* iterator.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = iterator.h; sourceTree = ""; }; + A9F7B17629425A1800B30DA7 /* licm_pass.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = licm_pass.h; sourceTree = ""; }; + A9F7B17729425A1800B30DA7 /* build_module.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = build_module.h; sourceTree = ""; }; + A9F7B17829425A1800B30DA7 /* ccp_pass.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = ccp_pass.h; sourceTree = ""; }; + A9F7B17929425A1800B30DA7 /* graphics_robust_access_pass.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = graphics_robust_access_pass.cpp; sourceTree = ""; }; + A9F7B17A29425A1800B30DA7 /* function.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = function.h; sourceTree = ""; }; + A9F7B17B29425A1800B30DA7 /* fix_func_call_arguments.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = fix_func_call_arguments.h; sourceTree = ""; }; + A9F7B17C29425A1800B30DA7 /* loop_fusion.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = loop_fusion.cpp; sourceTree = ""; }; + A9F7B17D29425A1800B30DA7 /* analyze_live_input_pass.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = analyze_live_input_pass.cpp; sourceTree = ""; }; + A9F7B17E29425A1800B30DA7 /* upgrade_memory_model.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = upgrade_memory_model.cpp; sourceTree = ""; }; + A9F7B17F29425A1800B30DA7 /* feature_manager.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = feature_manager.h; sourceTree = ""; }; + A9F7B18029425A1800B30DA7 /* dataflow.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = dataflow.h; sourceTree = ""; }; + A9F7B18129425A1800B30DA7 /* inst_bindless_check_pass.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = inst_bindless_check_pass.h; sourceTree = ""; }; + A9F7B18229425A1800B30DA7 /* scalar_analysis_simplification.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = scalar_analysis_simplification.cpp; sourceTree = ""; }; + A9F7B18329425A1800B30DA7 /* set_spec_constant_default_value_pass.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = set_spec_constant_default_value_pass.h; sourceTree = ""; }; + A9F7B18429425A1800B30DA7 /* dominator_tree.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = dominator_tree.h; sourceTree = ""; }; + A9F7B18529425A1800B30DA7 /* remove_unused_interface_variables_pass.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = remove_unused_interface_variables_pass.h; sourceTree = ""; }; + A9F7B18629425A1800B30DA7 /* type_manager.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = type_manager.h; sourceTree = ""; }; + A9F7B18729425A1800B30DA7 /* compact_ids_pass.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = compact_ids_pass.cpp; sourceTree = ""; }; + A9F7B18829425A1800B30DA7 /* loop_peeling.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = loop_peeling.cpp; sourceTree = ""; }; + A9F7B18929425A1800B30DA7 /* table.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = table.h; sourceTree = ""; }; + A9F7B31629425A1800B30DA7 /* ext_inst.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = ext_inst.h; sourceTree = ""; }; + A9F7B31729425A1800B30DA7 /* diagnostic.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = diagnostic.cpp; sourceTree = ""; }; + A9F7B31829425A1800B30DA7 /* latest_version_spirv_header.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = latest_version_spirv_header.h; sourceTree = ""; }; + A9F7B31929425A1800B30DA7 /* libspirv.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = libspirv.cpp; sourceTree = ""; }; + A9F7B31A29425A1800B30DA7 /* instruction.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = instruction.h; sourceTree = ""; }; + A9F7B31B29425A1800B30DA7 /* spirv_optimizer_options.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = spirv_optimizer_options.h; sourceTree = ""; }; + A9F7B31C29425A1800B30DA7 /* opcode.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = opcode.h; sourceTree = ""; }; + A9F7B31D29425A1800B30DA7 /* operand.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = operand.cpp; sourceTree = ""; }; + A9F7B31E29425A1800B30DA7 /* latest_version_glsl_std_450_header.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = latest_version_glsl_std_450_header.h; sourceTree = ""; }; + A9F7B31F29425A1800B30DA7 /* extensions.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = extensions.h; sourceTree = ""; }; + A9F7B32029425A1800B30DA7 /* disassemble.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = disassemble.cpp; sourceTree = ""; }; + A9F7B32129425A1800B30DA7 /* binary.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = binary.h; sourceTree = ""; }; + A9F7B32229425A1800B30DA7 /* text_handler.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = text_handler.cpp; sourceTree = ""; }; + A9F7B32429425A1800B30DA7 /* validate_annotation.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = validate_annotation.cpp; sourceTree = ""; }; + A9F7B32529425A1800B30DA7 /* validate_misc.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = validate_misc.cpp; sourceTree = ""; }; + A9F7B32629425A1800B30DA7 /* validate_cfg.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = validate_cfg.cpp; sourceTree = ""; }; + A9F7B32729425A1800B30DA7 /* validate_capability.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = validate_capability.cpp; sourceTree = ""; }; + A9F7B32829425A1800B30DA7 /* construct.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = construct.h; sourceTree = ""; }; + A9F7B32929425A1800B30DA7 /* validate_barriers.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = validate_barriers.cpp; sourceTree = ""; }; + A9F7B32A29425A1800B30DA7 /* validate_non_uniform.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = validate_non_uniform.cpp; sourceTree = ""; }; + A9F7B32B29425A1800B30DA7 /* validate_ray_query.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = validate_ray_query.cpp; sourceTree = ""; }; + A9F7B32C29425A1800B30DA7 /* validate_ray_tracing.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = validate_ray_tracing.cpp; sourceTree = ""; }; + A9F7B32D29425A1800B30DA7 /* validate_scopes.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = validate_scopes.cpp; sourceTree = ""; }; + A9F7B32E29425A1800B30DA7 /* validate_atomics.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = validate_atomics.cpp; sourceTree = ""; }; + A9F7B32F29425A1800B30DA7 /* basic_block.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = basic_block.h; sourceTree = ""; }; + A9F7B33029425A1800B30DA7 /* validate_instruction.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = validate_instruction.cpp; sourceTree = ""; }; + A9F7B33129425A1800B30DA7 /* validate_ray_tracing_reorder.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = validate_ray_tracing_reorder.cpp; sourceTree = ""; }; + A9F7B33229425A1800B30DA7 /* validate_decorations.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = validate_decorations.cpp; sourceTree = ""; }; + A9F7B33329425A1800B30DA7 /* validate_debug.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = validate_debug.cpp; sourceTree = ""; }; + A9F7B33429425A1800B30DA7 /* validate_builtins.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = validate_builtins.cpp; sourceTree = ""; }; + A9F7B33529425A1800B30DA7 /* validate_interfaces.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = validate_interfaces.cpp; sourceTree = ""; }; + A9F7B33629425A1800B30DA7 /* validate.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = validate.cpp; sourceTree = ""; }; + A9F7B33729425A1800B30DA7 /* validation_state.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = validation_state.h; sourceTree = ""; }; + A9F7B33829425A1800B30DA7 /* validate_constants.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = validate_constants.cpp; sourceTree = ""; }; + A9F7B33929425A1800B30DA7 /* validate_bitwise.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = validate_bitwise.cpp; sourceTree = ""; }; + A9F7B33A29425A1800B30DA7 /* validate_extensions.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = validate_extensions.cpp; sourceTree = ""; }; + A9F7B33B29425A1800B30DA7 /* construct.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = construct.cpp; sourceTree = ""; }; + A9F7B33C29425A1800B30DA7 /* function.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = function.cpp; sourceTree = ""; }; + A9F7B33D29425A1800B30DA7 /* validate.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = validate.h; sourceTree = ""; }; + A9F7B33E29425A1800B30DA7 /* validate_adjacency.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = validate_adjacency.cpp; sourceTree = ""; }; + A9F7B33F29425A1800B30DA7 /* validate_conversion.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = validate_conversion.cpp; sourceTree = ""; }; + A9F7B34029425A1800B30DA7 /* validate_small_type_uses.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = validate_small_type_uses.cpp; sourceTree = ""; }; + A9F7B34129425A1800B30DA7 /* validate_scopes.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = validate_scopes.h; sourceTree = ""; }; + A9F7B34229425A1800B30DA7 /* validate_id.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = validate_id.cpp; sourceTree = ""; }; + A9F7B34329425A1800B30DA7 /* validate_memory_semantics.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = validate_memory_semantics.h; sourceTree = ""; }; + A9F7B34429425A1800B30DA7 /* validate_arithmetics.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = validate_arithmetics.cpp; sourceTree = ""; }; + A9F7B34529425A1800B30DA7 /* validate_mode_setting.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = validate_mode_setting.cpp; sourceTree = ""; }; + A9F7B34629425A1800B30DA7 /* validate_memory_semantics.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = validate_memory_semantics.cpp; sourceTree = ""; }; + A9F7B34729425A1800B30DA7 /* validate_logicals.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = validate_logicals.cpp; sourceTree = ""; }; + A9F7B34829425A1800B30DA7 /* validate_derivatives.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = validate_derivatives.cpp; sourceTree = ""; }; + A9F7B34929425A1800B30DA7 /* validate_memory.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = validate_memory.cpp; sourceTree = ""; }; + A9F7B34A29425A1800B30DA7 /* validate_image.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = validate_image.cpp; sourceTree = ""; }; + A9F7B34B29425A1800B30DA7 /* validate_literals.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = validate_literals.cpp; sourceTree = ""; }; + A9F7B34C29425A1800B30DA7 /* instruction.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = instruction.cpp; sourceTree = ""; }; + A9F7B34D29425A1800B30DA7 /* validate_type.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = validate_type.cpp; sourceTree = ""; }; + A9F7B34E29425A1800B30DA7 /* instruction.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = instruction.h; sourceTree = ""; }; + A9F7B34F29425A1800B30DA7 /* validate_mesh_shading.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = validate_mesh_shading.cpp; sourceTree = ""; }; + A9F7B35029425A1800B30DA7 /* validate_execution_limitations.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = validate_execution_limitations.cpp; sourceTree = ""; }; + A9F7B35129425A1800B30DA7 /* validate_layout.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = validate_layout.cpp; sourceTree = ""; }; + A9F7B35229425A1800B30DA7 /* basic_block.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = basic_block.cpp; sourceTree = ""; }; + A9F7B35329425A1800B30DA7 /* validate_function.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = validate_function.cpp; sourceTree = ""; }; + A9F7B35429425A1800B30DA7 /* function.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = function.h; sourceTree = ""; }; + A9F7B35529425A1800B30DA7 /* validate_composites.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = validate_composites.cpp; sourceTree = ""; }; + A9F7B35629425A1800B30DA7 /* validation_state.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = validation_state.cpp; sourceTree = ""; }; + A9F7B35729425A1800B30DA7 /* validate_primitives.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = validate_primitives.cpp; sourceTree = ""; }; + A9F7B35829425A1800B30DA7 /* decoration.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = decoration.h; sourceTree = ""; }; A9FC5F7F249DA96D003CB086 /* package_ext_libs_finish.sh */ = {isa = PBXFileReference; lastKnownFileType = text.script.sh; path = package_ext_libs_finish.sh; sourceTree = ""; }; /* End PBXFileReference section */ @@ -2285,473 +2374,6 @@ path = External; sourceTree = ""; }; - A926B47E27AC718800144157 /* source */ = { - isa = PBXGroup; - children = ( - A926B47F27AC718800144157 /* spirv_target_env.cpp */, - A926B48027AC718800144157 /* spirv_fuzzer_options.h */, - A926B48127AC718800144157 /* assembly_grammar.h */, - A926B48227AC718800144157 /* lint */, - A926B48927AC718800144157 /* enum_set.h */, - A926B48A27AC718800144157 /* CMakeLists.txt */, - A926B48B27AC718800144157 /* text.cpp */, - A926B48C27AC718800144157 /* assembly_grammar.cpp */, - A926B48D27AC718800144157 /* text.h */, - A926B48E27AC718800144157 /* extensions.cpp */, - A926B48F27AC718800144157 /* pch_source.cpp */, - A926B49027AC718800144157 /* util */, - A926B49F27AC718800144157 /* spirv_target_env.h */, - A926B4A027AC718800144157 /* table.cpp */, - A926B4A127AC718800144157 /* reduce */, - A926B4E127AC718800144157 /* latest_version_opencl_std_header.h */, - A926B4E227AC718800144157 /* spirv_optimizer_options.cpp */, - A926B4E327AC718800144157 /* cfa.h */, - A926B4E427AC718800144157 /* pch_source.h */, - A926B4E527AC718800144157 /* enum_string_mapping.h */, - A926B4E627AC718800144157 /* spirv_fuzzer_options.cpp */, - A926B4E727AC718800144157 /* spirv_reducer_options.h */, - A926B4E827AC718800144157 /* spirv_validator_options.cpp */, - A926B4EF27AC718800144157 /* print.cpp */, - A926B4F027AC718800144157 /* spirv_definition.h */, - A926B4F127AC718800144157 /* operand.h */, - A926B4F227AC718800144157 /* spirv_endian.cpp */, - A926B4F327AC718800144157 /* macro.h */, - A926B4F427AC718800144157 /* spirv_constant.h */, - A926B4F527AC718800144157 /* binary.cpp */, - A926B4F627AC718800144157 /* spirv_validator_options.h */, - A926B4F727AC718800144157 /* enum_string_mapping.cpp */, - A926B4F827AC718800144157 /* text_handler.h */, - A926B4F927AC718800144157 /* parsed_operand.h */, - A926B4FA27AC718800144157 /* name_mapper.h */, - A926B4FB27AC718800144157 /* spirv_reducer_options.cpp */, - A926B4FC27AC718800144157 /* parsed_operand.cpp */, - A926B4FD27AC718800144157 /* diagnostic.h */, - A926B4FE27AC718800144157 /* spirv_endian.h */, - A926B4FF27AC718800144157 /* name_mapper.cpp */, - A926B50027AC718800144157 /* link */, - A926B50327AC718800144157 /* common_debug_info.h */, - A926B50427AC718800144157 /* software_version.cpp */, - A926B50527AC718800144157 /* opcode.cpp */, - A926B50627AC718800144157 /* print.h */, - A926B50727AC718800144157 /* ext_inst.cpp */, - A926B50827AC718800144157 /* disassemble.h */, - A926B50927AC718800144157 /* opt */, - A926B5E727AC718800144157 /* table.h */, - A926B77427AC718900144157 /* ext_inst.h */, - A926B77527AC718900144157 /* diagnostic.cpp */, - A926B77627AC718900144157 /* latest_version_spirv_header.h */, - A926B77727AC718900144157 /* libspirv.cpp */, - A926B77827AC718900144157 /* instruction.h */, - A926B77927AC718900144157 /* spirv_optimizer_options.h */, - A926B77A27AC718900144157 /* opcode.h */, - A926B77B27AC718900144157 /* operand.cpp */, - A926B77C27AC718900144157 /* latest_version_glsl_std_450_header.h */, - A926B77D27AC718900144157 /* extensions.h */, - A926B77E27AC718900144157 /* disassemble.cpp */, - A926B77F27AC718900144157 /* binary.h */, - A926B78027AC718900144157 /* text_handler.cpp */, - A926B78127AC718900144157 /* val */, - ); - path = source; - sourceTree = ""; - }; - A926B48227AC718800144157 /* lint */ = { - isa = PBXGroup; - children = ( - A926B48327AC718800144157 /* CMakeLists.txt */, - A926B48427AC718800144157 /* lint_divergent_derivatives.cpp */, - A926B48527AC718800144157 /* linter.cpp */, - A926B48627AC718800144157 /* divergence_analysis.cpp */, - A926B48727AC718800144157 /* lints.h */, - A926B48827AC718800144157 /* divergence_analysis.h */, - ); - path = lint; - sourceTree = ""; - }; - A926B49027AC718800144157 /* util */ = { - isa = PBXGroup; - children = ( - A926B49127AC718800144157 /* parse_number.h */, - A926B49227AC718800144157 /* ilist_node.h */, - A926B49327AC718800144157 /* make_unique.h */, - A926B49427AC718800144157 /* string_utils.h */, - A926B49527AC718800144157 /* small_vector.h */, - A926B49627AC718800144157 /* timer.cpp */, - A926B49727AC718800144157 /* timer.h */, - A926B49827AC718800144157 /* string_utils.cpp */, - A926B49927AC718800144157 /* bit_vector.h */, - A926B49A27AC718800144157 /* bitutils.h */, - A926B49B27AC718800144157 /* hex_float.h */, - A926B49C27AC718800144157 /* parse_number.cpp */, - A926B49D27AC718800144157 /* bit_vector.cpp */, - A926B49E27AC718800144157 /* ilist.h */, - ); - path = util; - sourceTree = ""; - }; - A926B4A127AC718800144157 /* reduce */ = { - isa = PBXGroup; - children = ( - A926B4A227AC718800144157 /* operand_to_undef_reduction_opportunity_finder.h */, - A926B4A327AC718800144157 /* remove_selection_reduction_opportunity.cpp */, - A926B4A427AC718800144157 /* remove_block_reduction_opportunity.h */, - A926B4A527AC718800144157 /* operand_to_dominating_id_reduction_opportunity_finder.h */, - A926B4A627AC718800144157 /* reduction_pass.cpp */, - A926B4A727AC718800144157 /* structured_construct_to_block_reduction_opportunity.h */, - A926B4A827AC718800144157 /* operand_to_const_reduction_opportunity_finder.cpp */, - A926B4A927AC718800144157 /* operand_to_const_reduction_opportunity_finder.h */, - A926B4AA27AC718800144157 /* CMakeLists.txt */, - A926B4AB27AC718800144157 /* reduction_util.cpp */, - A926B4AC27AC718800144157 /* structured_construct_to_block_reduction_opportunity_finder.h */, - A926B4AD27AC718800144157 /* structured_loop_to_selection_reduction_opportunity_finder.cpp */, - A926B4AE27AC718800144157 /* simple_conditional_branch_to_branch_reduction_opportunity.h */, - A926B4AF27AC718800144157 /* remove_function_reduction_opportunity_finder.cpp */, - A926B4B027AC718800144157 /* remove_instruction_reduction_opportunity.h */, - A926B4B127AC718800144157 /* conditional_branch_to_simple_conditional_branch_reduction_opportunity.h */, - A926B4B227AC718800144157 /* simple_conditional_branch_to_branch_reduction_opportunity.cpp */, - A926B4B327AC718800144157 /* remove_function_reduction_opportunity.cpp */, - A926B4B427AC718800144157 /* simple_conditional_branch_to_branch_opportunity_finder.cpp */, - A926B4B527AC718800144157 /* remove_selection_reduction_opportunity_finder.cpp */, - A926B4B627AC718800144157 /* conditional_branch_to_simple_conditional_branch_reduction_opportunity.cpp */, - A926B4B727AC718800144157 /* remove_struct_member_reduction_opportunity.h */, - A926B4B827AC718800144157 /* simple_conditional_branch_to_branch_opportunity_finder.h */, - A926B4B927AC718800144157 /* merge_blocks_reduction_opportunity.cpp */, - A926B4BA27AC718800144157 /* change_operand_reduction_opportunity.cpp */, - A926B4BB27AC718800144157 /* structured_loop_to_selection_reduction_opportunity.h */, - A926B4BC27AC718800144157 /* remove_function_reduction_opportunity.h */, - A926B4BD27AC718800144157 /* remove_unused_instruction_reduction_opportunity_finder.h */, - A926B4BE27AC718800144157 /* change_operand_to_undef_reduction_opportunity.h */, - A926B4BF27AC718800144157 /* structured_loop_to_selection_reduction_opportunity_finder.h */, - A926B4C027AC718800144157 /* remove_selection_reduction_opportunity.h */, - A926B4C127AC718800144157 /* remove_instruction_reduction_opportunity.cpp */, - A926B4C227AC718800144157 /* remove_selection_reduction_opportunity_finder.h */, - A926B4C327AC718800144157 /* merge_blocks_reduction_opportunity_finder.h */, - A926B4C427AC718800144157 /* pch_source_reduce.cpp */, - A926B4C527AC718800144157 /* remove_struct_member_reduction_opportunity.cpp */, - A926B4C627AC718800144157 /* remove_unused_struct_member_reduction_opportunity_finder.h */, - A926B4C727AC718800144157 /* remove_unused_instruction_reduction_opportunity_finder.cpp */, - A926B4C827AC718800144157 /* reducer.cpp */, - A926B4C927AC718800144157 /* operand_to_undef_reduction_opportunity_finder.cpp */, - A926B4CA27AC718800144157 /* remove_function_reduction_opportunity_finder.h */, - A926B4CB27AC718800144157 /* pch_source_reduce.h */, - A926B4CC27AC718800144157 /* merge_blocks_reduction_opportunity_finder.cpp */, - A926B4CD27AC718800144157 /* reduction_opportunity.cpp */, - A926B4CE27AC718800144157 /* reducer.h */, - A926B4CF27AC718800144157 /* change_operand_to_undef_reduction_opportunity.cpp */, - A926B4D027AC718800144157 /* reduction_opportunity.h */, - A926B4D127AC718800144157 /* conditional_branch_to_simple_conditional_branch_opportunity_finder.h */, - A926B4D227AC718800144157 /* operand_to_dominating_id_reduction_opportunity_finder.cpp */, - A926B4D327AC718800144157 /* reduction_opportunity_finder.h */, - A926B4D427AC718800144157 /* change_operand_reduction_opportunity.h */, - A926B4D527AC718800144157 /* remove_block_reduction_opportunity_finder.h */, - A926B4D627AC718800144157 /* remove_block_reduction_opportunity_finder.cpp */, - A926B4D727AC718800144157 /* reduction_util.h */, - A926B4D827AC718800144157 /* merge_blocks_reduction_opportunity.h */, - A926B4D927AC718800144157 /* conditional_branch_to_simple_conditional_branch_opportunity_finder.cpp */, - A926B4DA27AC718800144157 /* structured_loop_to_selection_reduction_opportunity.cpp */, - A926B4DB27AC718800144157 /* structured_construct_to_block_reduction_opportunity.cpp */, - A926B4DC27AC718800144157 /* remove_block_reduction_opportunity.cpp */, - A926B4DD27AC718800144157 /* remove_unused_struct_member_reduction_opportunity_finder.cpp */, - A926B4DE27AC718800144157 /* reduction_opportunity_finder.cpp */, - A926B4DF27AC718800144157 /* structured_construct_to_block_reduction_opportunity_finder.cpp */, - A926B4E027AC718800144157 /* reduction_pass.h */, - ); - path = reduce; - sourceTree = ""; - }; - A926B50027AC718800144157 /* link */ = { - isa = PBXGroup; - children = ( - A926B50127AC718800144157 /* CMakeLists.txt */, - A926B50227AC718800144157 /* linker.cpp */, - ); - path = link; - sourceTree = ""; - }; - A926B50927AC718800144157 /* opt */ = { - isa = PBXGroup; - children = ( - A926B50A27AC718800144157 /* optimizer.cpp */, - A926B50B27AC718800144157 /* if_conversion.h */, - A926B50C27AC718800144157 /* register_pressure.cpp */, - A926B50D27AC718800144157 /* loop_utils.cpp */, - A926B50E27AC718800144157 /* strip_nonsemantic_info_pass.h */, - A926B50F27AC718800144157 /* spread_volatile_semantics.cpp */, - A926B51027AC718800144157 /* merge_return_pass.h */, - A926B51127AC718800144157 /* inline_opaque_pass.h */, - A926B51227AC718800144157 /* loop_fusion.h */, - A926B51327AC718800144157 /* combine_access_chains.cpp */, - A926B51427AC718800144157 /* build_module.cpp */, - A926B51527AC718800144157 /* composite.h */, - A926B51627AC718800144157 /* compact_ids_pass.h */, - A926B51727AC718800144157 /* register_pressure.h */, - A926B51827AC718800144157 /* tree_iterator.h */, - A926B51927AC718800144157 /* graphics_robust_access_pass.h */, - A926B51A27AC718800144157 /* local_single_store_elim_pass.h */, - A926B51B27AC718800144157 /* reduce_load_size.h */, - A926B51C27AC718800144157 /* code_sink.cpp */, - A926B51D27AC718800144157 /* types.cpp */, - A926B51E27AC718800144157 /* scalar_analysis.h */, - A926B51F27AC718800144157 /* strip_debug_info_pass.h */, - A926B52027AC718800144157 /* replace_desc_array_access_using_var_index.h */, - A926B52127AC718800144157 /* cfg.cpp */, - A926B52227AC718800144157 /* decoration_manager.cpp */, - A926B52327AC718800144157 /* local_single_block_elim_pass.cpp */, - A926B52427AC718800144157 /* freeze_spec_constant_value_pass.cpp */, - A926B52527AC718800144157 /* replace_invalid_opc.h */, - A926B52627AC718800144157 /* local_access_chain_convert_pass.h */, - A926B52727AC718800144157 /* inst_bindless_check_pass.cpp */, - A926B52827AC718800144157 /* local_redundancy_elimination.cpp */, - A926B52927AC718800144157 /* CMakeLists.txt */, - A926B52A27AC718800144157 /* instrument_pass.cpp */, - A926B52B27AC718800144157 /* propagator.h */, - A926B52C27AC718800144157 /* instruction_list.h */, - A926B52D27AC718800144157 /* feature_manager.cpp */, - A926B52E27AC718800144157 /* pass.cpp */, - A926B52F27AC718800144157 /* loop_fission.cpp */, - A926B53027AC718800144157 /* dominator_tree.cpp */, - A926B53127AC718800144157 /* amd_ext_to_khr.h */, - A926B53227AC718800144157 /* merge_return_pass.cpp */, - A926B53327AC718800144157 /* ir_context.h */, - A926B53427AC718800144157 /* eliminate_dead_constant_pass.cpp */, - A926B53527AC718800144157 /* control_dependence.h */, - A926B53627AC718800144157 /* cfg_cleanup_pass.cpp */, - A926B53727AC718800144157 /* wrap_opkill.cpp */, - A926B53827AC718800144157 /* const_folding_rules.cpp */, - A926B53927AC718800144157 /* loop_unroller.h */, - A926B53A27AC718800144157 /* strip_debug_info_pass.cpp */, - A926B53B27AC718800144157 /* ssa_rewrite_pass.cpp */, - A926B53C27AC718800144157 /* loop_dependence.cpp */, - A926B53D27AC718800144157 /* unify_const_pass.h */, - A926B53E27AC718800144157 /* ir_loader.h */, - A926B53F27AC718800144157 /* inst_debug_printf_pass.cpp */, - A926B54027AC718800144157 /* types.h */, - A926B54127AC718800144157 /* fold_spec_constant_op_and_composite_pass.h */, - A926B54227AC718800144157 /* mem_pass.cpp */, - A926B54327AC718800144157 /* basic_block.h */, - A926B54427AC718800144157 /* remove_duplicates_pass.cpp */, - A926B54527AC718800144157 /* dead_variable_elimination.cpp */, - A926B54627AC718800144157 /* block_merge_pass.h */, - A926B54727AC718800144157 /* module.cpp */, - A926B54827AC718800144157 /* debug_info_manager.h */, - A926B54927AC718800144157 /* fold_spec_constant_op_and_composite_pass.cpp */, - A926B54A27AC718800144157 /* loop_unswitch_pass.cpp */, - A926B54B27AC718800144157 /* unify_const_pass.cpp */, - A926B54C27AC718800144157 /* type_manager.cpp */, - A926B54D27AC718800144157 /* private_to_local_pass.h */, - A926B54E27AC718800144157 /* convert_to_half_pass.h */, - A926B54F27AC718800144157 /* relax_float_ops_pass.h */, - A926B55027AC718800144157 /* inline_pass.cpp */, - A926B55127AC718800144157 /* def_use_manager.h */, - A926B55227AC718800144157 /* ir_loader.cpp */, - A926B55327AC718800144157 /* convert_to_sampled_image_pass.h */, - A926B55427AC718800144157 /* cfg_cleanup_pass.h */, - A926B55527AC718800144157 /* licm_pass.cpp */, - A926B55627AC718800144157 /* eliminate_dead_functions_pass.cpp */, - A926B55727AC718800144157 /* local_redundancy_elimination.h */, - A926B55827AC718800144157 /* loop_peeling.h */, - A926B55927AC718800144157 /* vector_dce.cpp */, - A926B55A27AC718800144157 /* block_merge_util.h */, - A926B55B27AC718800144157 /* loop_unroller.cpp */, - A926B55C27AC718800144157 /* desc_sroa.h */, - A926B55D27AC718800144157 /* constants.cpp */, - A926B55E27AC718800144157 /* loop_fusion_pass.h */, - A926B55F27AC718800144157 /* struct_cfg_analysis.h */, - A926B56027AC718800144157 /* desc_sroa_util.cpp */, - A926B56127AC718800144157 /* inst_buff_addr_check_pass.cpp */, - A926B56227AC718800144157 /* def_use_manager.cpp */, - A926B56327AC718800144157 /* wrap_opkill.h */, - A926B56427AC718800144157 /* empty_pass.h */, - A926B56527AC718800144157 /* decoration_manager.h */, - A926B56627AC718800144157 /* ccp_pass.cpp */, - A926B56727AC718800144157 /* local_single_block_elim_pass.h */, - A926B56827AC718800144157 /* interp_fixup_pass.h */, - A926B56927AC718800144157 /* pch_source_opt.cpp */, - A926B56A27AC718800144157 /* inst_buff_addr_check_pass.h */, - A926B56B27AC718800144157 /* strength_reduction_pass.h */, - A926B56C27AC718800144157 /* aggressive_dead_code_elim_pass.cpp */, - A926B56D27AC718800144157 /* eliminate_dead_functions_util.cpp */, - A926B56E27AC718800144157 /* inst_debug_printf_pass.h */, - A926B56F27AC718800144157 /* simplification_pass.cpp */, - A926B57027AC718800144157 /* dead_branch_elim_pass.cpp */, - A926B57127AC718800144157 /* flatten_decoration_pass.cpp */, - A926B57227AC718800144157 /* dead_insert_elim_pass.h */, - A926B57327AC718800144157 /* folding_rules.cpp */, - A926B57427AC718800144157 /* freeze_spec_constant_value_pass.h */, - A926B57527AC718800144157 /* ir_context.cpp */, - A926B57627AC718800144157 /* instrument_pass.h */, - A926B57727AC718800144157 /* mem_pass.h */, - A926B57827AC718800144157 /* loop_descriptor.cpp */, - A926B57927AC718800144157 /* eliminate_dead_members_pass.h */, - A926B57A27AC718800144157 /* function.cpp */, - A926B57B27AC718800144157 /* instruction_list.cpp */, - A926B57C27AC718800144157 /* control_dependence.cpp */, - A926B57D27AC718800144157 /* composite.cpp */, - A926B57E27AC718800144157 /* convert_to_half_pass.cpp */, - A926B57F27AC718800144157 /* inline_pass.h */, - A926B58027AC718800144157 /* loop_dependence.h */, - A926B58127AC718800144157 /* value_number_table.h */, - A926B58227AC718800144157 /* strip_nonsemantic_info_pass.cpp */, - A926B58327AC718800144157 /* flatten_decoration_pass.h */, - A926B58427AC718800144157 /* if_conversion.cpp */, - A926B58527AC718800144157 /* debug_info_manager.cpp */, - A926B58627AC718800144157 /* inline_exhaustive_pass.h */, - A926B58727AC718800144157 /* constants.h */, - A926B58827AC718800144157 /* eliminate_dead_members_pass.cpp */, - A926B58927AC718800144157 /* strength_reduction_pass.cpp */, - A926B58A27AC718800144157 /* desc_sroa.cpp */, - A926B58B27AC718800144157 /* block_merge_util.cpp */, - A926B58C27AC718800144157 /* upgrade_memory_model.h */, - A926B58D27AC718800144157 /* copy_prop_arrays.cpp */, - A926B58E27AC718800144157 /* pass_manager.cpp */, - A926B58F27AC718800144157 /* inline_exhaustive_pass.cpp */, - A926B59027AC718800144157 /* loop_fission.h */, - A926B59127AC718800144157 /* workaround1209.h */, - A926B59227AC718800144157 /* loop_fusion_pass.cpp */, - A926B59327AC718800144157 /* log.h */, - A926B59427AC718800144157 /* copy_prop_arrays.h */, - A926B59527AC718800144157 /* eliminate_dead_constant_pass.h */, - A926B59627AC718800144157 /* dead_insert_elim_pass.cpp */, - A926B59727AC718800144157 /* ssa_rewrite_pass.h */, - A926B59827AC718800144157 /* scalar_analysis.cpp */, - A926B59927AC718800144157 /* dead_variable_elimination.h */, - A926B59A27AC718800144157 /* block_merge_pass.cpp */, - A926B59B27AC718800144157 /* dominator_analysis.h */, - A926B59C27AC718800144157 /* convert_to_sampled_image_pass.cpp */, - A926B59D27AC718800144157 /* pass.h */, - A926B59E27AC718800144157 /* folding_rules.h */, - A926B59F27AC718800144157 /* eliminate_dead_functions_pass.h */, - A926B5A027AC718800144157 /* eliminate_dead_functions_util.h */, - A926B5A127AC718800144157 /* fold.h */, - A926B5A227AC718800144157 /* local_single_store_elim_pass.cpp */, - A926B5A327AC718800144157 /* dead_branch_elim_pass.h */, - A926B5A427AC718800144157 /* private_to_local_pass.cpp */, - A926B5A527AC718800144157 /* scalar_analysis_nodes.h */, - A926B5A627AC718800144157 /* propagator.cpp */, - A926B5A727AC718800144157 /* fix_storage_class.h */, - A926B5A827AC718800144157 /* loop_dependence_helpers.cpp */, - A926B5A927AC718800144157 /* set_spec_constant_default_value_pass.cpp */, - A926B5AA27AC718800144157 /* passes.h */, - A926B5AB27AC718800144157 /* fold.cpp */, - A926B5AC27AC718800144157 /* amd_ext_to_khr.cpp */, - A926B5AD27AC718800144157 /* scalar_replacement_pass.cpp */, - A926B5AE27AC718800144157 /* simplification_pass.h */, - A926B5AF27AC718800144157 /* remove_duplicates_pass.h */, - A926B5B027AC718800144157 /* desc_sroa_util.h */, - A926B5B127AC718800144157 /* redundancy_elimination.cpp */, - A926B5B227AC718800144157 /* reflect.h */, - A926B5B327AC718800144157 /* workaround1209.cpp */, - A926B5B427AC718800144157 /* null_pass.h */, - A926B5B527AC718800144157 /* relax_float_ops_pass.cpp */, - A926B5B627AC718800144157 /* const_folding_rules.h */, - A926B5B727AC718800144157 /* scalar_replacement_pass.h */, - A926B5B827AC718800144157 /* instruction.cpp */, - A926B5B927AC718800144157 /* pch_source_opt.h */, - A926B5BA27AC718800144157 /* reduce_load_size.cpp */, - A926B5BB27AC718800144157 /* redundancy_elimination.h */, - A926B5BC27AC718800144157 /* fix_storage_class.cpp */, - A926B5BD27AC718800144157 /* value_number_table.cpp */, - A926B5BE27AC718800144157 /* remove_unused_interface_variables_pass.cpp */, - A926B5BF27AC718800144157 /* inline_opaque_pass.cpp */, - A926B5C027AC718800144157 /* replace_invalid_opc.cpp */, - A926B5C127AC718800144157 /* loop_utils.h */, - A926B5C227AC718800144157 /* module.h */, - A926B5C327AC718800144157 /* dominator_analysis.cpp */, - A926B5C427AC718800144157 /* ir_builder.h */, - A926B5C527AC718800144157 /* replace_desc_array_access_using_var_index.cpp */, - A926B5C627AC718800144157 /* loop_unswitch_pass.h */, - A926B5C727AC718800144157 /* cfg.h */, - A926B5C827AC718800144157 /* code_sink.h */, - A926B5C927AC718800144157 /* dataflow.cpp */, - A926B5CA27AC718800144157 /* loop_descriptor.h */, - A926B5CB27AC718800144157 /* instruction.h */, - A926B5CC27AC718800144157 /* aggressive_dead_code_elim_pass.h */, - A926B5CD27AC718800144157 /* struct_cfg_analysis.cpp */, - A926B5CE27AC718800144157 /* vector_dce.h */, - A926B5CF27AC718800144157 /* combine_access_chains.h */, - A926B5D027AC718800144157 /* pass_manager.h */, - A926B5D127AC718800144157 /* spread_volatile_semantics.h */, - A926B5D227AC718800144157 /* local_access_chain_convert_pass.cpp */, - A926B5D327AC718800144157 /* interp_fixup_pass.cpp */, - A926B5D427AC718800144157 /* basic_block.cpp */, - A926B5D527AC718800144157 /* iterator.h */, - A926B5D627AC718800144157 /* licm_pass.h */, - A926B5D727AC718800144157 /* build_module.h */, - A926B5D827AC718800144157 /* ccp_pass.h */, - A926B5D927AC718800144157 /* graphics_robust_access_pass.cpp */, - A926B5DA27AC718800144157 /* function.h */, - A926B5DB27AC718800144157 /* loop_fusion.cpp */, - A926B5DC27AC718800144157 /* upgrade_memory_model.cpp */, - A926B5DD27AC718800144157 /* feature_manager.h */, - A926B5DE27AC718800144157 /* dataflow.h */, - A926B5DF27AC718800144157 /* inst_bindless_check_pass.h */, - A926B5E027AC718800144157 /* scalar_analysis_simplification.cpp */, - A926B5E127AC718800144157 /* set_spec_constant_default_value_pass.h */, - A926B5E227AC718800144157 /* dominator_tree.h */, - A926B5E327AC718800144157 /* remove_unused_interface_variables_pass.h */, - A926B5E427AC718800144157 /* type_manager.h */, - A926B5E527AC718800144157 /* compact_ids_pass.cpp */, - A926B5E627AC718800144157 /* loop_peeling.cpp */, - ); - path = opt; - sourceTree = ""; - }; - A926B78127AC718900144157 /* val */ = { - isa = PBXGroup; - children = ( - A926B78227AC718900144157 /* validate_annotation.cpp */, - A926B78327AC718900144157 /* validate_misc.cpp */, - A926B78427AC718900144157 /* validate_cfg.cpp */, - A926B78527AC718900144157 /* validate_capability.cpp */, - A926B78627AC718900144157 /* construct.h */, - A926B78727AC718900144157 /* validate_barriers.cpp */, - A926B78827AC718900144157 /* validate_non_uniform.cpp */, - A926B78927AC718900144157 /* validate_scopes.cpp */, - A926B78A27AC718900144157 /* validate_atomics.cpp */, - A926B78B27AC718900144157 /* basic_block.h */, - A926B78C27AC718900144157 /* validate_instruction.cpp */, - A926B78D27AC718900144157 /* validate_decorations.cpp */, - A926B78E27AC718900144157 /* validate_debug.cpp */, - A926B78F27AC718900144157 /* validate_builtins.cpp */, - A926B79027AC718900144157 /* validate_interfaces.cpp */, - A926B79127AC718900144157 /* validate.cpp */, - A926B79227AC718900144157 /* validation_state.h */, - A926B79327AC718900144157 /* validate_constants.cpp */, - A926B79427AC718900144157 /* validate_bitwise.cpp */, - A926B79527AC718900144157 /* validate_extensions.cpp */, - A926B79627AC718900144157 /* construct.cpp */, - A926B79727AC718900144157 /* function.cpp */, - A926B79827AC718900144157 /* validate.h */, - A926B79927AC718900144157 /* validate_adjacency.cpp */, - A926B79A27AC718900144157 /* validate_conversion.cpp */, - A926B79B27AC718900144157 /* validate_small_type_uses.cpp */, - A926B79C27AC718900144157 /* validate_scopes.h */, - A926B79D27AC718900144157 /* validate_id.cpp */, - A926B79E27AC718900144157 /* validate_memory_semantics.h */, - A926B79F27AC718900144157 /* validate_arithmetics.cpp */, - A926B7A027AC718900144157 /* validate_mode_setting.cpp */, - A926B7A127AC718900144157 /* validate_memory_semantics.cpp */, - A926B7A227AC718900144157 /* validate_logicals.cpp */, - A926B7A327AC718900144157 /* validate_derivatives.cpp */, - A926B7A427AC718900144157 /* validate_memory.cpp */, - A926B7A527AC718900144157 /* validate_image.cpp */, - A926B7A627AC718900144157 /* validate_literals.cpp */, - A926B7A727AC718900144157 /* instruction.cpp */, - A926B7A827AC718900144157 /* validate_type.cpp */, - A926B7A927AC718900144157 /* instruction.h */, - A926B7AA27AC718900144157 /* validate_execution_limitations.cpp */, - A926B7AB27AC718900144157 /* validate_layout.cpp */, - A926B7AC27AC718900144157 /* basic_block.cpp */, - A926B7AD27AC718900144157 /* validate_function.cpp */, - A926B7AE27AC718900144157 /* function.h */, - A926B7AF27AC718900144157 /* validate_composites.cpp */, - A926B7B027AC718900144157 /* validation_state.cpp */, - A926B7B127AC718900144157 /* validate_primitives.cpp */, - A926B7B227AC718900144157 /* decoration.h */, - ); - path = val; - sourceTree = ""; - }; A9679AAB21D2699800856BF7 /* Scripts */ = { isa = PBXGroup; children = ( @@ -2768,7 +2390,7 @@ A972A82421CECC410013AB25 /* SPIRV-Tools */ = { isa = PBXGroup; children = ( - A926B47E27AC718800144157 /* source */, + A9F7B00C29425A1700B30DA7 /* source */, ); name = "SPIRV-Tools"; path = "glslang/External/spirv-tools"; @@ -3032,6 +2654,504 @@ ); sourceTree = ""; }; + A9F7B00C29425A1700B30DA7 /* source */ = { + isa = PBXGroup; + children = ( + A9F7B00D29425A1700B30DA7 /* spirv_target_env.cpp */, + A9F7B00E29425A1700B30DA7 /* spirv_fuzzer_options.h */, + A9F7B00F29425A1700B30DA7 /* assembly_grammar.h */, + A9F7B01029425A1700B30DA7 /* lint */, + A9F7B01729425A1700B30DA7 /* enum_set.h */, + A9F7B01829425A1700B30DA7 /* CMakeLists.txt */, + A9F7B01929425A1700B30DA7 /* text.cpp */, + A9F7B01A29425A1700B30DA7 /* assembly_grammar.cpp */, + A9F7B01B29425A1700B30DA7 /* text.h */, + A9F7B01C29425A1700B30DA7 /* extensions.cpp */, + A9F7B01D29425A1700B30DA7 /* pch_source.cpp */, + A9F7B01E29425A1700B30DA7 /* util */, + A9F7B02E29425A1700B30DA7 /* spirv_target_env.h */, + A9F7B02F29425A1700B30DA7 /* table.cpp */, + A9F7B03029425A1700B30DA7 /* reduce */, + A9F7B07029425A1700B30DA7 /* latest_version_opencl_std_header.h */, + A9F7B07129425A1700B30DA7 /* spirv_optimizer_options.cpp */, + A9F7B07229425A1700B30DA7 /* cfa.h */, + A9F7B07329425A1700B30DA7 /* pch_source.h */, + A9F7B07429425A1700B30DA7 /* enum_string_mapping.h */, + A9F7B07529425A1700B30DA7 /* spirv_fuzzer_options.cpp */, + A9F7B07629425A1700B30DA7 /* spirv_reducer_options.h */, + A9F7B07729425A1700B30DA7 /* spirv_validator_options.cpp */, + A9F7B07E29425A1700B30DA7 /* print.cpp */, + A9F7B07F29425A1700B30DA7 /* spirv_definition.h */, + A9F7B08029425A1700B30DA7 /* operand.h */, + A9F7B08129425A1700B30DA7 /* spirv_endian.cpp */, + A9F7B08229425A1700B30DA7 /* macro.h */, + A9F7B08329425A1700B30DA7 /* spirv_constant.h */, + A9F7B08429425A1700B30DA7 /* binary.cpp */, + A9F7B08529425A1700B30DA7 /* diff */, + A9F7B08A29425A1700B30DA7 /* spirv_validator_options.h */, + A9F7B08B29425A1700B30DA7 /* enum_string_mapping.cpp */, + A9F7B08C29425A1700B30DA7 /* text_handler.h */, + A9F7B08D29425A1700B30DA7 /* parsed_operand.h */, + A9F7B08E29425A1700B30DA7 /* name_mapper.h */, + A9F7B08F29425A1700B30DA7 /* spirv_reducer_options.cpp */, + A9F7B09029425A1700B30DA7 /* parsed_operand.cpp */, + A9F7B09129425A1700B30DA7 /* diagnostic.h */, + A9F7B09229425A1700B30DA7 /* spirv_endian.h */, + A9F7B09329425A1700B30DA7 /* name_mapper.cpp */, + A9F7B09429425A1700B30DA7 /* link */, + A9F7B09729425A1700B30DA7 /* common_debug_info.h */, + A9F7B09829425A1700B30DA7 /* software_version.cpp */, + A9F7B09929425A1700B30DA7 /* opcode.cpp */, + A9F7B09A29425A1700B30DA7 /* print.h */, + A9F7B09B29425A1700B30DA7 /* ext_inst.cpp */, + A9F7B09C29425A1700B30DA7 /* disassemble.h */, + A9F7B09D29425A1700B30DA7 /* opt */, + A9F7B18929425A1800B30DA7 /* table.h */, + A9F7B31629425A1800B30DA7 /* ext_inst.h */, + A9F7B31729425A1800B30DA7 /* diagnostic.cpp */, + A9F7B31829425A1800B30DA7 /* latest_version_spirv_header.h */, + A9F7B31929425A1800B30DA7 /* libspirv.cpp */, + A9F7B31A29425A1800B30DA7 /* instruction.h */, + A9F7B31B29425A1800B30DA7 /* spirv_optimizer_options.h */, + A9F7B31C29425A1800B30DA7 /* opcode.h */, + A9F7B31D29425A1800B30DA7 /* operand.cpp */, + A9F7B31E29425A1800B30DA7 /* latest_version_glsl_std_450_header.h */, + A9F7B31F29425A1800B30DA7 /* extensions.h */, + A9F7B32029425A1800B30DA7 /* disassemble.cpp */, + A9F7B32129425A1800B30DA7 /* binary.h */, + A9F7B32229425A1800B30DA7 /* text_handler.cpp */, + A9F7B32329425A1800B30DA7 /* val */, + ); + path = source; + sourceTree = ""; + }; + A9F7B01029425A1700B30DA7 /* lint */ = { + isa = PBXGroup; + children = ( + A9F7B01129425A1700B30DA7 /* CMakeLists.txt */, + A9F7B01229425A1700B30DA7 /* lint_divergent_derivatives.cpp */, + A9F7B01329425A1700B30DA7 /* linter.cpp */, + A9F7B01429425A1700B30DA7 /* divergence_analysis.cpp */, + A9F7B01529425A1700B30DA7 /* lints.h */, + A9F7B01629425A1700B30DA7 /* divergence_analysis.h */, + ); + path = lint; + sourceTree = ""; + }; + A9F7B01E29425A1700B30DA7 /* util */ = { + isa = PBXGroup; + children = ( + A9F7B01F29425A1700B30DA7 /* parse_number.h */, + A9F7B02029425A1700B30DA7 /* ilist_node.h */, + A9F7B02129425A1700B30DA7 /* make_unique.h */, + A9F7B02229425A1700B30DA7 /* string_utils.h */, + A9F7B02329425A1700B30DA7 /* small_vector.h */, + A9F7B02429425A1700B30DA7 /* hash_combine.h */, + A9F7B02529425A1700B30DA7 /* timer.cpp */, + A9F7B02629425A1700B30DA7 /* timer.h */, + A9F7B02729425A1700B30DA7 /* string_utils.cpp */, + A9F7B02829425A1700B30DA7 /* bit_vector.h */, + A9F7B02929425A1700B30DA7 /* bitutils.h */, + A9F7B02A29425A1700B30DA7 /* hex_float.h */, + A9F7B02B29425A1700B30DA7 /* parse_number.cpp */, + A9F7B02C29425A1700B30DA7 /* bit_vector.cpp */, + A9F7B02D29425A1700B30DA7 /* ilist.h */, + ); + path = util; + sourceTree = ""; + }; + A9F7B03029425A1700B30DA7 /* reduce */ = { + isa = PBXGroup; + children = ( + A9F7B03129425A1700B30DA7 /* operand_to_undef_reduction_opportunity_finder.h */, + A9F7B03229425A1700B30DA7 /* remove_selection_reduction_opportunity.cpp */, + A9F7B03329425A1700B30DA7 /* remove_block_reduction_opportunity.h */, + A9F7B03429425A1700B30DA7 /* operand_to_dominating_id_reduction_opportunity_finder.h */, + A9F7B03529425A1700B30DA7 /* reduction_pass.cpp */, + A9F7B03629425A1700B30DA7 /* structured_construct_to_block_reduction_opportunity.h */, + A9F7B03729425A1700B30DA7 /* operand_to_const_reduction_opportunity_finder.cpp */, + A9F7B03829425A1700B30DA7 /* operand_to_const_reduction_opportunity_finder.h */, + A9F7B03929425A1700B30DA7 /* CMakeLists.txt */, + A9F7B03A29425A1700B30DA7 /* reduction_util.cpp */, + A9F7B03B29425A1700B30DA7 /* structured_construct_to_block_reduction_opportunity_finder.h */, + A9F7B03C29425A1700B30DA7 /* structured_loop_to_selection_reduction_opportunity_finder.cpp */, + A9F7B03D29425A1700B30DA7 /* simple_conditional_branch_to_branch_reduction_opportunity.h */, + A9F7B03E29425A1700B30DA7 /* remove_function_reduction_opportunity_finder.cpp */, + A9F7B03F29425A1700B30DA7 /* remove_instruction_reduction_opportunity.h */, + A9F7B04029425A1700B30DA7 /* conditional_branch_to_simple_conditional_branch_reduction_opportunity.h */, + A9F7B04129425A1700B30DA7 /* simple_conditional_branch_to_branch_reduction_opportunity.cpp */, + A9F7B04229425A1700B30DA7 /* remove_function_reduction_opportunity.cpp */, + A9F7B04329425A1700B30DA7 /* simple_conditional_branch_to_branch_opportunity_finder.cpp */, + A9F7B04429425A1700B30DA7 /* remove_selection_reduction_opportunity_finder.cpp */, + A9F7B04529425A1700B30DA7 /* conditional_branch_to_simple_conditional_branch_reduction_opportunity.cpp */, + A9F7B04629425A1700B30DA7 /* remove_struct_member_reduction_opportunity.h */, + A9F7B04729425A1700B30DA7 /* simple_conditional_branch_to_branch_opportunity_finder.h */, + A9F7B04829425A1700B30DA7 /* merge_blocks_reduction_opportunity.cpp */, + A9F7B04929425A1700B30DA7 /* change_operand_reduction_opportunity.cpp */, + A9F7B04A29425A1700B30DA7 /* structured_loop_to_selection_reduction_opportunity.h */, + A9F7B04B29425A1700B30DA7 /* remove_function_reduction_opportunity.h */, + A9F7B04C29425A1700B30DA7 /* remove_unused_instruction_reduction_opportunity_finder.h */, + A9F7B04D29425A1700B30DA7 /* change_operand_to_undef_reduction_opportunity.h */, + A9F7B04E29425A1700B30DA7 /* structured_loop_to_selection_reduction_opportunity_finder.h */, + A9F7B04F29425A1700B30DA7 /* remove_selection_reduction_opportunity.h */, + A9F7B05029425A1700B30DA7 /* remove_instruction_reduction_opportunity.cpp */, + A9F7B05129425A1700B30DA7 /* remove_selection_reduction_opportunity_finder.h */, + A9F7B05229425A1700B30DA7 /* merge_blocks_reduction_opportunity_finder.h */, + A9F7B05329425A1700B30DA7 /* pch_source_reduce.cpp */, + A9F7B05429425A1700B30DA7 /* remove_struct_member_reduction_opportunity.cpp */, + A9F7B05529425A1700B30DA7 /* remove_unused_struct_member_reduction_opportunity_finder.h */, + A9F7B05629425A1700B30DA7 /* remove_unused_instruction_reduction_opportunity_finder.cpp */, + A9F7B05729425A1700B30DA7 /* reducer.cpp */, + A9F7B05829425A1700B30DA7 /* operand_to_undef_reduction_opportunity_finder.cpp */, + A9F7B05929425A1700B30DA7 /* remove_function_reduction_opportunity_finder.h */, + A9F7B05A29425A1700B30DA7 /* pch_source_reduce.h */, + A9F7B05B29425A1700B30DA7 /* merge_blocks_reduction_opportunity_finder.cpp */, + A9F7B05C29425A1700B30DA7 /* reduction_opportunity.cpp */, + A9F7B05D29425A1700B30DA7 /* reducer.h */, + A9F7B05E29425A1700B30DA7 /* change_operand_to_undef_reduction_opportunity.cpp */, + A9F7B05F29425A1700B30DA7 /* reduction_opportunity.h */, + A9F7B06029425A1700B30DA7 /* conditional_branch_to_simple_conditional_branch_opportunity_finder.h */, + A9F7B06129425A1700B30DA7 /* operand_to_dominating_id_reduction_opportunity_finder.cpp */, + A9F7B06229425A1700B30DA7 /* reduction_opportunity_finder.h */, + A9F7B06329425A1700B30DA7 /* change_operand_reduction_opportunity.h */, + A9F7B06429425A1700B30DA7 /* remove_block_reduction_opportunity_finder.h */, + A9F7B06529425A1700B30DA7 /* remove_block_reduction_opportunity_finder.cpp */, + A9F7B06629425A1700B30DA7 /* reduction_util.h */, + A9F7B06729425A1700B30DA7 /* merge_blocks_reduction_opportunity.h */, + A9F7B06829425A1700B30DA7 /* conditional_branch_to_simple_conditional_branch_opportunity_finder.cpp */, + A9F7B06929425A1700B30DA7 /* structured_loop_to_selection_reduction_opportunity.cpp */, + A9F7B06A29425A1700B30DA7 /* structured_construct_to_block_reduction_opportunity.cpp */, + A9F7B06B29425A1700B30DA7 /* remove_block_reduction_opportunity.cpp */, + A9F7B06C29425A1700B30DA7 /* remove_unused_struct_member_reduction_opportunity_finder.cpp */, + A9F7B06D29425A1700B30DA7 /* reduction_opportunity_finder.cpp */, + A9F7B06E29425A1700B30DA7 /* structured_construct_to_block_reduction_opportunity_finder.cpp */, + A9F7B06F29425A1700B30DA7 /* reduction_pass.h */, + ); + path = reduce; + sourceTree = ""; + }; + A9F7B08529425A1700B30DA7 /* diff */ = { + isa = PBXGroup; + children = ( + A9F7B08629425A1700B30DA7 /* CMakeLists.txt */, + A9F7B08729425A1700B30DA7 /* diff.h */, + A9F7B08829425A1700B30DA7 /* lcs.h */, + A9F7B08929425A1700B30DA7 /* diff.cpp */, + ); + path = diff; + sourceTree = ""; + }; + A9F7B09429425A1700B30DA7 /* link */ = { + isa = PBXGroup; + children = ( + A9F7B09529425A1700B30DA7 /* CMakeLists.txt */, + A9F7B09629425A1700B30DA7 /* linker.cpp */, + ); + path = link; + sourceTree = ""; + }; + A9F7B09D29425A1700B30DA7 /* opt */ = { + isa = PBXGroup; + children = ( + A9F7B09E29425A1700B30DA7 /* optimizer.cpp */, + A9F7B09F29425A1700B30DA7 /* if_conversion.h */, + A9F7B0A029425A1700B30DA7 /* register_pressure.cpp */, + A9F7B0A129425A1700B30DA7 /* loop_utils.cpp */, + A9F7B0A229425A1700B30DA7 /* strip_nonsemantic_info_pass.h */, + A9F7B0A329425A1700B30DA7 /* spread_volatile_semantics.cpp */, + A9F7B0A429425A1700B30DA7 /* merge_return_pass.h */, + A9F7B0A529425A1700B30DA7 /* inline_opaque_pass.h */, + A9F7B0A629425A1700B30DA7 /* loop_fusion.h */, + A9F7B0A729425A1700B30DA7 /* combine_access_chains.cpp */, + A9F7B0A829425A1700B30DA7 /* build_module.cpp */, + A9F7B0A929425A1700B30DA7 /* eliminate_dead_output_stores_pass.cpp */, + A9F7B0AA29425A1700B30DA7 /* composite.h */, + A9F7B0AB29425A1700B30DA7 /* liveness.cpp */, + A9F7B0AC29425A1700B30DA7 /* compact_ids_pass.h */, + A9F7B0AD29425A1700B30DA7 /* register_pressure.h */, + A9F7B0AE29425A1700B30DA7 /* tree_iterator.h */, + A9F7B0AF29425A1700B30DA7 /* interface_var_sroa.h */, + A9F7B0B029425A1700B30DA7 /* graphics_robust_access_pass.h */, + A9F7B0B129425A1700B30DA7 /* local_single_store_elim_pass.h */, + A9F7B0B229425A1700B30DA7 /* reduce_load_size.h */, + A9F7B0B329425A1700B30DA7 /* code_sink.cpp */, + A9F7B0B429425A1700B30DA7 /* types.cpp */, + A9F7B0B529425A1700B30DA7 /* scalar_analysis.h */, + A9F7B0B629425A1700B30DA7 /* strip_debug_info_pass.h */, + A9F7B0B729425A1700B30DA7 /* replace_desc_array_access_using_var_index.h */, + A9F7B0B829425A1700B30DA7 /* cfg.cpp */, + A9F7B0B929425A1700B30DA7 /* decoration_manager.cpp */, + A9F7B0BA29425A1700B30DA7 /* local_single_block_elim_pass.cpp */, + A9F7B0BB29425A1700B30DA7 /* freeze_spec_constant_value_pass.cpp */, + A9F7B0BC29425A1700B30DA7 /* replace_invalid_opc.h */, + A9F7B0BD29425A1700B30DA7 /* eliminate_dead_output_stores_pass.h */, + A9F7B0BE29425A1700B30DA7 /* local_access_chain_convert_pass.h */, + A9F7B0BF29425A1700B30DA7 /* inst_bindless_check_pass.cpp */, + A9F7B0C029425A1700B30DA7 /* local_redundancy_elimination.cpp */, + A9F7B0C129425A1700B30DA7 /* CMakeLists.txt */, + A9F7B0C229425A1700B30DA7 /* instrument_pass.cpp */, + A9F7B0C329425A1700B30DA7 /* propagator.h */, + A9F7B0C429425A1700B30DA7 /* instruction_list.h */, + A9F7B0C529425A1700B30DA7 /* feature_manager.cpp */, + A9F7B0C629425A1700B30DA7 /* pass.cpp */, + A9F7B0C729425A1700B30DA7 /* loop_fission.cpp */, + A9F7B0C829425A1700B30DA7 /* dominator_tree.cpp */, + A9F7B0C929425A1700B30DA7 /* amd_ext_to_khr.h */, + A9F7B0CA29425A1700B30DA7 /* merge_return_pass.cpp */, + A9F7B0CB29425A1700B30DA7 /* ir_context.h */, + A9F7B0CC29425A1700B30DA7 /* eliminate_dead_constant_pass.cpp */, + A9F7B0CD29425A1700B30DA7 /* control_dependence.h */, + A9F7B0CE29425A1700B30DA7 /* cfg_cleanup_pass.cpp */, + A9F7B0CF29425A1700B30DA7 /* wrap_opkill.cpp */, + A9F7B0D029425A1700B30DA7 /* eliminate_dead_io_components_pass.cpp */, + A9F7B0D129425A1700B30DA7 /* const_folding_rules.cpp */, + A9F7B0D229425A1700B30DA7 /* liveness.h */, + A9F7B0D329425A1700B30DA7 /* loop_unroller.h */, + A9F7B0D429425A1700B30DA7 /* strip_debug_info_pass.cpp */, + A9F7B0D529425A1700B30DA7 /* ssa_rewrite_pass.cpp */, + A9F7B0D629425A1700B30DA7 /* loop_dependence.cpp */, + A9F7B0D729425A1700B30DA7 /* unify_const_pass.h */, + A9F7B0D829425A1700B30DA7 /* ir_loader.h */, + A9F7B0D929425A1700B30DA7 /* inst_debug_printf_pass.cpp */, + A9F7B0DA29425A1700B30DA7 /* types.h */, + A9F7B0DB29425A1700B30DA7 /* fold_spec_constant_op_and_composite_pass.h */, + A9F7B0DC29425A1700B30DA7 /* mem_pass.cpp */, + A9F7B0DD29425A1700B30DA7 /* basic_block.h */, + A9F7B0DE29425A1700B30DA7 /* remove_duplicates_pass.cpp */, + A9F7B0DF29425A1700B30DA7 /* dead_variable_elimination.cpp */, + A9F7B0E029425A1700B30DA7 /* block_merge_pass.h */, + A9F7B0E129425A1700B30DA7 /* module.cpp */, + A9F7B0E229425A1700B30DA7 /* debug_info_manager.h */, + A9F7B0E329425A1700B30DA7 /* fold_spec_constant_op_and_composite_pass.cpp */, + A9F7B0E429425A1700B30DA7 /* loop_unswitch_pass.cpp */, + A9F7B0E529425A1700B30DA7 /* unify_const_pass.cpp */, + A9F7B0E629425A1700B30DA7 /* type_manager.cpp */, + A9F7B0E729425A1700B30DA7 /* private_to_local_pass.h */, + A9F7B0E829425A1700B30DA7 /* convert_to_half_pass.h */, + A9F7B0E929425A1700B30DA7 /* remove_dontinline_pass.h */, + A9F7B0EA29425A1700B30DA7 /* relax_float_ops_pass.h */, + A9F7B0EB29425A1700B30DA7 /* inline_pass.cpp */, + A9F7B0EC29425A1700B30DA7 /* def_use_manager.h */, + A9F7B0ED29425A1700B30DA7 /* ir_loader.cpp */, + A9F7B0EE29425A1700B30DA7 /* convert_to_sampled_image_pass.h */, + A9F7B0EF29425A1700B30DA7 /* cfg_cleanup_pass.h */, + A9F7B0F029425A1700B30DA7 /* licm_pass.cpp */, + A9F7B0F129425A1700B30DA7 /* eliminate_dead_functions_pass.cpp */, + A9F7B0F229425A1700B30DA7 /* local_redundancy_elimination.h */, + A9F7B0F329425A1700B30DA7 /* loop_peeling.h */, + A9F7B0F429425A1700B30DA7 /* vector_dce.cpp */, + A9F7B0F529425A1700B30DA7 /* block_merge_util.h */, + A9F7B0F629425A1700B30DA7 /* loop_unroller.cpp */, + A9F7B0F729425A1700B30DA7 /* desc_sroa.h */, + A9F7B0F829425A1700B30DA7 /* constants.cpp */, + A9F7B0F929425A1700B30DA7 /* loop_fusion_pass.h */, + A9F7B0FA29425A1700B30DA7 /* struct_cfg_analysis.h */, + A9F7B0FB29425A1700B30DA7 /* desc_sroa_util.cpp */, + A9F7B0FC29425A1700B30DA7 /* inst_buff_addr_check_pass.cpp */, + A9F7B0FD29425A1700B30DA7 /* def_use_manager.cpp */, + A9F7B0FE29425A1700B30DA7 /* wrap_opkill.h */, + A9F7B0FF29425A1800B30DA7 /* empty_pass.h */, + A9F7B10029425A1800B30DA7 /* decoration_manager.h */, + A9F7B10129425A1800B30DA7 /* ccp_pass.cpp */, + A9F7B10229425A1800B30DA7 /* local_single_block_elim_pass.h */, + A9F7B10329425A1800B30DA7 /* interp_fixup_pass.h */, + A9F7B10429425A1800B30DA7 /* eliminate_dead_io_components_pass.h */, + A9F7B10529425A1800B30DA7 /* pch_source_opt.cpp */, + A9F7B10629425A1800B30DA7 /* inst_buff_addr_check_pass.h */, + A9F7B10729425A1800B30DA7 /* strength_reduction_pass.h */, + A9F7B10829425A1800B30DA7 /* aggressive_dead_code_elim_pass.cpp */, + A9F7B10929425A1800B30DA7 /* eliminate_dead_functions_util.cpp */, + A9F7B10A29425A1800B30DA7 /* inst_debug_printf_pass.h */, + A9F7B10B29425A1800B30DA7 /* simplification_pass.cpp */, + A9F7B10C29425A1800B30DA7 /* dead_branch_elim_pass.cpp */, + A9F7B10D29425A1800B30DA7 /* flatten_decoration_pass.cpp */, + A9F7B10E29425A1800B30DA7 /* dead_insert_elim_pass.h */, + A9F7B10F29425A1800B30DA7 /* folding_rules.cpp */, + A9F7B11029425A1800B30DA7 /* freeze_spec_constant_value_pass.h */, + A9F7B11129425A1800B30DA7 /* ir_context.cpp */, + A9F7B11229425A1800B30DA7 /* instrument_pass.h */, + A9F7B11329425A1800B30DA7 /* mem_pass.h */, + A9F7B11429425A1800B30DA7 /* loop_descriptor.cpp */, + A9F7B11529425A1800B30DA7 /* eliminate_dead_members_pass.h */, + A9F7B11629425A1800B30DA7 /* function.cpp */, + A9F7B11729425A1800B30DA7 /* instruction_list.cpp */, + A9F7B11829425A1800B30DA7 /* control_dependence.cpp */, + A9F7B11929425A1800B30DA7 /* composite.cpp */, + A9F7B11A29425A1800B30DA7 /* convert_to_half_pass.cpp */, + A9F7B11B29425A1800B30DA7 /* inline_pass.h */, + A9F7B11C29425A1800B30DA7 /* loop_dependence.h */, + A9F7B11D29425A1800B30DA7 /* value_number_table.h */, + A9F7B11E29425A1800B30DA7 /* strip_nonsemantic_info_pass.cpp */, + A9F7B11F29425A1800B30DA7 /* flatten_decoration_pass.h */, + A9F7B12029425A1800B30DA7 /* if_conversion.cpp */, + A9F7B12129425A1800B30DA7 /* fix_func_call_arguments.cpp */, + A9F7B12229425A1800B30DA7 /* debug_info_manager.cpp */, + A9F7B12329425A1800B30DA7 /* inline_exhaustive_pass.h */, + A9F7B12429425A1800B30DA7 /* constants.h */, + A9F7B12529425A1800B30DA7 /* eliminate_dead_members_pass.cpp */, + A9F7B12629425A1800B30DA7 /* strength_reduction_pass.cpp */, + A9F7B12729425A1800B30DA7 /* desc_sroa.cpp */, + A9F7B12829425A1800B30DA7 /* block_merge_util.cpp */, + A9F7B12929425A1800B30DA7 /* upgrade_memory_model.h */, + A9F7B12A29425A1800B30DA7 /* copy_prop_arrays.cpp */, + A9F7B12B29425A1800B30DA7 /* analyze_live_input_pass.h */, + A9F7B12C29425A1800B30DA7 /* pass_manager.cpp */, + A9F7B12D29425A1800B30DA7 /* inline_exhaustive_pass.cpp */, + A9F7B12E29425A1800B30DA7 /* loop_fission.h */, + A9F7B12F29425A1800B30DA7 /* workaround1209.h */, + A9F7B13029425A1800B30DA7 /* loop_fusion_pass.cpp */, + A9F7B13129425A1800B30DA7 /* log.h */, + A9F7B13229425A1800B30DA7 /* copy_prop_arrays.h */, + A9F7B13329425A1800B30DA7 /* eliminate_dead_constant_pass.h */, + A9F7B13429425A1800B30DA7 /* dead_insert_elim_pass.cpp */, + A9F7B13529425A1800B30DA7 /* ssa_rewrite_pass.h */, + A9F7B13629425A1800B30DA7 /* scalar_analysis.cpp */, + A9F7B13729425A1800B30DA7 /* dead_variable_elimination.h */, + A9F7B13829425A1800B30DA7 /* block_merge_pass.cpp */, + A9F7B13929425A1800B30DA7 /* dominator_analysis.h */, + A9F7B13A29425A1800B30DA7 /* convert_to_sampled_image_pass.cpp */, + A9F7B13B29425A1800B30DA7 /* pass.h */, + A9F7B13C29425A1800B30DA7 /* folding_rules.h */, + A9F7B13D29425A1800B30DA7 /* eliminate_dead_functions_pass.h */, + A9F7B13E29425A1800B30DA7 /* eliminate_dead_functions_util.h */, + A9F7B13F29425A1800B30DA7 /* fold.h */, + A9F7B14029425A1800B30DA7 /* local_single_store_elim_pass.cpp */, + A9F7B14129425A1800B30DA7 /* dead_branch_elim_pass.h */, + A9F7B14229425A1800B30DA7 /* private_to_local_pass.cpp */, + A9F7B14329425A1800B30DA7 /* scalar_analysis_nodes.h */, + A9F7B14429425A1800B30DA7 /* propagator.cpp */, + A9F7B14529425A1800B30DA7 /* fix_storage_class.h */, + A9F7B14629425A1800B30DA7 /* loop_dependence_helpers.cpp */, + A9F7B14729425A1800B30DA7 /* set_spec_constant_default_value_pass.cpp */, + A9F7B14829425A1800B30DA7 /* passes.h */, + A9F7B14929425A1800B30DA7 /* fold.cpp */, + A9F7B14A29425A1800B30DA7 /* amd_ext_to_khr.cpp */, + A9F7B14B29425A1800B30DA7 /* scalar_replacement_pass.cpp */, + A9F7B14C29425A1800B30DA7 /* simplification_pass.h */, + A9F7B14D29425A1800B30DA7 /* interface_var_sroa.cpp */, + A9F7B14E29425A1800B30DA7 /* remove_duplicates_pass.h */, + A9F7B14F29425A1800B30DA7 /* desc_sroa_util.h */, + A9F7B15029425A1800B30DA7 /* redundancy_elimination.cpp */, + A9F7B15129425A1800B30DA7 /* reflect.h */, + A9F7B15229425A1800B30DA7 /* workaround1209.cpp */, + A9F7B15329425A1800B30DA7 /* null_pass.h */, + A9F7B15429425A1800B30DA7 /* relax_float_ops_pass.cpp */, + A9F7B15529425A1800B30DA7 /* const_folding_rules.h */, + A9F7B15629425A1800B30DA7 /* scalar_replacement_pass.h */, + A9F7B15729425A1800B30DA7 /* instruction.cpp */, + A9F7B15829425A1800B30DA7 /* pch_source_opt.h */, + A9F7B15929425A1800B30DA7 /* reduce_load_size.cpp */, + A9F7B15A29425A1800B30DA7 /* redundancy_elimination.h */, + A9F7B15B29425A1800B30DA7 /* fix_storage_class.cpp */, + A9F7B15C29425A1800B30DA7 /* value_number_table.cpp */, + A9F7B15D29425A1800B30DA7 /* remove_unused_interface_variables_pass.cpp */, + A9F7B15E29425A1800B30DA7 /* inline_opaque_pass.cpp */, + A9F7B15F29425A1800B30DA7 /* replace_invalid_opc.cpp */, + A9F7B16029425A1800B30DA7 /* loop_utils.h */, + A9F7B16129425A1800B30DA7 /* module.h */, + A9F7B16229425A1800B30DA7 /* dominator_analysis.cpp */, + A9F7B16329425A1800B30DA7 /* ir_builder.h */, + A9F7B16429425A1800B30DA7 /* replace_desc_array_access_using_var_index.cpp */, + A9F7B16529425A1800B30DA7 /* loop_unswitch_pass.h */, + A9F7B16629425A1800B30DA7 /* cfg.h */, + A9F7B16729425A1800B30DA7 /* code_sink.h */, + A9F7B16829425A1800B30DA7 /* dataflow.cpp */, + A9F7B16929425A1800B30DA7 /* loop_descriptor.h */, + A9F7B16A29425A1800B30DA7 /* instruction.h */, + A9F7B16B29425A1800B30DA7 /* aggressive_dead_code_elim_pass.h */, + A9F7B16C29425A1800B30DA7 /* struct_cfg_analysis.cpp */, + A9F7B16D29425A1800B30DA7 /* remove_dontinline_pass.cpp */, + A9F7B16E29425A1800B30DA7 /* vector_dce.h */, + A9F7B16F29425A1800B30DA7 /* combine_access_chains.h */, + A9F7B17029425A1800B30DA7 /* pass_manager.h */, + A9F7B17129425A1800B30DA7 /* spread_volatile_semantics.h */, + A9F7B17229425A1800B30DA7 /* local_access_chain_convert_pass.cpp */, + A9F7B17329425A1800B30DA7 /* interp_fixup_pass.cpp */, + A9F7B17429425A1800B30DA7 /* basic_block.cpp */, + A9F7B17529425A1800B30DA7 /* iterator.h */, + A9F7B17629425A1800B30DA7 /* licm_pass.h */, + A9F7B17729425A1800B30DA7 /* build_module.h */, + A9F7B17829425A1800B30DA7 /* ccp_pass.h */, + A9F7B17929425A1800B30DA7 /* graphics_robust_access_pass.cpp */, + A9F7B17A29425A1800B30DA7 /* function.h */, + A9F7B17B29425A1800B30DA7 /* fix_func_call_arguments.h */, + A9F7B17C29425A1800B30DA7 /* loop_fusion.cpp */, + A9F7B17D29425A1800B30DA7 /* analyze_live_input_pass.cpp */, + A9F7B17E29425A1800B30DA7 /* upgrade_memory_model.cpp */, + A9F7B17F29425A1800B30DA7 /* feature_manager.h */, + A9F7B18029425A1800B30DA7 /* dataflow.h */, + A9F7B18129425A1800B30DA7 /* inst_bindless_check_pass.h */, + A9F7B18229425A1800B30DA7 /* scalar_analysis_simplification.cpp */, + A9F7B18329425A1800B30DA7 /* set_spec_constant_default_value_pass.h */, + A9F7B18429425A1800B30DA7 /* dominator_tree.h */, + A9F7B18529425A1800B30DA7 /* remove_unused_interface_variables_pass.h */, + A9F7B18629425A1800B30DA7 /* type_manager.h */, + A9F7B18729425A1800B30DA7 /* compact_ids_pass.cpp */, + A9F7B18829425A1800B30DA7 /* loop_peeling.cpp */, + ); + path = opt; + sourceTree = ""; + }; + A9F7B32329425A1800B30DA7 /* val */ = { + isa = PBXGroup; + children = ( + A9F7B32429425A1800B30DA7 /* validate_annotation.cpp */, + A9F7B32529425A1800B30DA7 /* validate_misc.cpp */, + A9F7B32629425A1800B30DA7 /* validate_cfg.cpp */, + A9F7B32729425A1800B30DA7 /* validate_capability.cpp */, + A9F7B32829425A1800B30DA7 /* construct.h */, + A9F7B32929425A1800B30DA7 /* validate_barriers.cpp */, + A9F7B32A29425A1800B30DA7 /* validate_non_uniform.cpp */, + A9F7B32B29425A1800B30DA7 /* validate_ray_query.cpp */, + A9F7B32C29425A1800B30DA7 /* validate_ray_tracing.cpp */, + A9F7B32D29425A1800B30DA7 /* validate_scopes.cpp */, + A9F7B32E29425A1800B30DA7 /* validate_atomics.cpp */, + A9F7B32F29425A1800B30DA7 /* basic_block.h */, + A9F7B33029425A1800B30DA7 /* validate_instruction.cpp */, + A9F7B33129425A1800B30DA7 /* validate_ray_tracing_reorder.cpp */, + A9F7B33229425A1800B30DA7 /* validate_decorations.cpp */, + A9F7B33329425A1800B30DA7 /* validate_debug.cpp */, + A9F7B33429425A1800B30DA7 /* validate_builtins.cpp */, + A9F7B33529425A1800B30DA7 /* validate_interfaces.cpp */, + A9F7B33629425A1800B30DA7 /* validate.cpp */, + A9F7B33729425A1800B30DA7 /* validation_state.h */, + A9F7B33829425A1800B30DA7 /* validate_constants.cpp */, + A9F7B33929425A1800B30DA7 /* validate_bitwise.cpp */, + A9F7B33A29425A1800B30DA7 /* validate_extensions.cpp */, + A9F7B33B29425A1800B30DA7 /* construct.cpp */, + A9F7B33C29425A1800B30DA7 /* function.cpp */, + A9F7B33D29425A1800B30DA7 /* validate.h */, + A9F7B33E29425A1800B30DA7 /* validate_adjacency.cpp */, + A9F7B33F29425A1800B30DA7 /* validate_conversion.cpp */, + A9F7B34029425A1800B30DA7 /* validate_small_type_uses.cpp */, + A9F7B34129425A1800B30DA7 /* validate_scopes.h */, + A9F7B34229425A1800B30DA7 /* validate_id.cpp */, + A9F7B34329425A1800B30DA7 /* validate_memory_semantics.h */, + A9F7B34429425A1800B30DA7 /* validate_arithmetics.cpp */, + A9F7B34529425A1800B30DA7 /* validate_mode_setting.cpp */, + A9F7B34629425A1800B30DA7 /* validate_memory_semantics.cpp */, + A9F7B34729425A1800B30DA7 /* validate_logicals.cpp */, + A9F7B34829425A1800B30DA7 /* validate_derivatives.cpp */, + A9F7B34929425A1800B30DA7 /* validate_memory.cpp */, + A9F7B34A29425A1800B30DA7 /* validate_image.cpp */, + A9F7B34B29425A1800B30DA7 /* validate_literals.cpp */, + A9F7B34C29425A1800B30DA7 /* instruction.cpp */, + A9F7B34D29425A1800B30DA7 /* validate_type.cpp */, + A9F7B34E29425A1800B30DA7 /* instruction.h */, + A9F7B34F29425A1800B30DA7 /* validate_mesh_shading.cpp */, + A9F7B35029425A1800B30DA7 /* validate_execution_limitations.cpp */, + A9F7B35129425A1800B30DA7 /* validate_layout.cpp */, + A9F7B35229425A1800B30DA7 /* basic_block.cpp */, + A9F7B35329425A1800B30DA7 /* validate_function.cpp */, + A9F7B35429425A1800B30DA7 /* function.h */, + A9F7B35529425A1800B30DA7 /* validate_composites.cpp */, + A9F7B35629425A1800B30DA7 /* validation_state.cpp */, + A9F7B35729425A1800B30DA7 /* validate_primitives.cpp */, + A9F7B35829425A1800B30DA7 /* decoration.h */, + ); + path = val; + sourceTree = ""; + }; /* End PBXGroup section */ /* Begin PBXHeadersBuildPhase section */ @@ -3099,203 +3219,213 @@ isa = PBXHeadersBuildPhase; buildActionMask = 2147483647; files = ( - A926BB6827AC718A00144157 /* loop_descriptor.h in Headers */, - A926B89E27AC718900144157 /* reduction_opportunity_finder.h in Headers */, - A926BB8927AC718A00144157 /* iterator.h in Headers */, - A926BA0627AC718A00144157 /* cfg_cleanup_pass.h in Headers */, - A926BA5427AC718A00144157 /* inst_debug_printf_pass.h in Headers */, - A926BA6027AC718A00144157 /* dead_insert_elim_pass.h in Headers */, - A926BB9827AC718A00144157 /* function.h in Headers */, - A926BB5C27AC718A00144157 /* loop_unswitch_pass.h in Headers */, - A926B9CD27AC718A00144157 /* fold_spec_constant_op_and_composite_pass.h in Headers */, - A926B95827AC718900144157 /* graphics_robust_access_pass.h in Headers */, - A926BBA127AC718A00144157 /* feature_manager.h in Headers */, - A926BB0827AC718A00144157 /* passes.h in Headers */, - A926B80E27AC718900144157 /* operand_to_undef_reduction_opportunity_finder.h in Headers */, - A926B7DE27AC718900144157 /* parse_number.h in Headers */, - A926B82F27AC718900144157 /* simple_conditional_branch_to_branch_reduction_opportunity.h in Headers */, - A926B9A927AC718900144157 /* control_dependence.h in Headers */, - A926B7F627AC718900144157 /* bit_vector.h in Headers */, - A926B96A27AC718900144157 /* strip_debug_info_pass.h in Headers */, - A926B9F127AC718A00144157 /* private_to_local_pass.h in Headers */, - A926B96727AC718900144157 /* scalar_analysis.h in Headers */, - A926B82327AC718900144157 /* operand_to_const_reduction_opportunity_finder.h in Headers */, - A926B86E27AC718900144157 /* merge_blocks_reduction_opportunity_finder.h in Headers */, - A926BABA27AC718A00144157 /* loop_fission.h in Headers */, - A926BAC927AC718A00144157 /* eliminate_dead_constant_pass.h in Headers */, - A926B8FE27AC718900144157 /* text_handler.h in Headers */, - A926B80527AC718900144157 /* ilist.h in Headers */, - A926B9F427AC718A00144157 /* convert_to_half_pass.h in Headers */, - A926BB1727AC718A00144157 /* remove_duplicates_pass.h in Headers */, - A926BB1427AC718A00144157 /* simplification_pass.h in Headers */, - A926B7E427AC718900144157 /* make_unique.h in Headers */, - A926BB3527AC718A00144157 /* pch_source_opt.h in Headers */, - A926BA6C27AC718A00144157 /* instrument_pass.h in Headers */, - A926B8C527AC718900144157 /* reduction_pass.h in Headers */, - A926B97C27AC718900144157 /* replace_invalid_opc.h in Headers */, - A926C0F327AC718C00144157 /* instruction.h in Headers */, - A926B84A27AC718900144157 /* remove_struct_member_reduction_opportunity.h in Headers */, - A926BA8727AC718A00144157 /* inline_pass.h in Headers */, - A926B7FC27AC718900144157 /* hex_float.h in Headers */, - A926B94027AC718900144157 /* inline_opaque_pass.h in Headers */, - A926BB9227AC718A00144157 /* ccp_pass.h in Headers */, - A926BB4D27AC718A00144157 /* loop_utils.h in Headers */, - A926B88327AC718900144157 /* remove_function_reduction_opportunity_finder.h in Headers */, - A926B7CC27AC718900144157 /* enum_set.h in Headers */, - A926BA9F27AC718A00144157 /* constants.h in Headers */, - A926B9E227AC718A00144157 /* debug_info_manager.h in Headers */, - A926B7C627AC718900144157 /* lints.h in Headers */, - A926BBBF27AC718A00144157 /* table.h in Headers */, - A926BADB27AC718A00144157 /* dominator_analysis.h in Headers */, - A926B89827AC718900144157 /* conditional_branch_to_simple_conditional_branch_opportunity_finder.h in Headers */, - A926B90D27AC718900144157 /* diagnostic.h in Headers */, - A926BACF27AC718A00144157 /* ssa_rewrite_pass.h in Headers */, - A926BA3927AC718A00144157 /* decoration_manager.h in Headers */, - A926BAEA27AC718A00144157 /* eliminate_dead_functions_util.h in Headers */, - A926BAC327AC718A00144157 /* log.h in Headers */, - A926BB5627AC718A00144157 /* ir_builder.h in Headers */, - A926BAFF27AC718A00144157 /* fix_storage_class.h in Headers */, - A926B96D27AC718900144157 /* replace_desc_array_access_using_var_index.h in Headers */, - A926BB2627AC718A00144157 /* null_pass.h in Headers */, - A926BA4227AC718A00144157 /* interp_fixup_pass.h in Headers */, - A926B8C827AC718900144157 /* latest_version_opencl_std_header.h in Headers */, - A926B90427AC718900144157 /* name_mapper.h in Headers */, - A926BB5027AC718A00144157 /* module.h in Headers */, - A926B8D427AC718900144157 /* enum_string_mapping.h in Headers */, - A926B7BA27AC718900144157 /* assembly_grammar.h in Headers */, - A926C05727AC718C00144157 /* ext_inst.h in Headers */, - A926B7EA27AC718900144157 /* small_vector.h in Headers */, - A926BB2C27AC718A00144157 /* const_folding_rules.h in Headers */, - A926BA9327AC718A00144157 /* flatten_decoration_pass.h in Headers */, - A926B9C427AC718900144157 /* ir_loader.h in Headers */, - A926BA0F27AC718A00144157 /* local_redundancy_elimination.h in Headers */, - A926B81427AC718900144157 /* remove_block_reduction_opportunity.h in Headers */, - A926C0CC27AC718C00144157 /* validate_scopes.h in Headers */, - A926B8A427AC718900144157 /* remove_block_reduction_opportunity_finder.h in Headers */, - A926B89527AC718900144157 /* reduction_opportunity.h in Headers */, - A926B85F27AC718900144157 /* change_operand_to_undef_reduction_opportunity.h in Headers */, - A926B85927AC718900144157 /* remove_function_reduction_opportunity.h in Headers */, - A926C06627AC718C00144157 /* spirv_optimizer_options.h in Headers */, - A926B97F27AC718900144157 /* local_access_chain_convert_pass.h in Headers */, - A926B8F827AC718900144157 /* spirv_validator_options.h in Headers */, - A926B80827AC718900144157 /* spirv_target_env.h in Headers */, - A926B9DC27AC718A00144157 /* block_merge_pass.h in Headers */, - A926C06F27AC718C00144157 /* latest_version_glsl_std_450_header.h in Headers */, - A926B7F027AC718900144157 /* timer.h in Headers */, - A926B86227AC718900144157 /* structured_loop_to_selection_reduction_opportunity_finder.h in Headers */, - A926B87727AC718900144157 /* remove_unused_struct_member_reduction_opportunity_finder.h in Headers */, - A926C08A27AC718C00144157 /* construct.h in Headers */, - A926BABD27AC718A00144157 /* workaround1209.h in Headers */, - A926BAF327AC718A00144157 /* dead_branch_elim_pass.h in Headers */, - A926BBAD27AC718A00144157 /* set_spec_constant_default_value_pass.h in Headers */, - A926B86B27AC718900144157 /* remove_selection_reduction_opportunity_finder.h in Headers */, - A926BBA727AC718A00144157 /* inst_bindless_check_pass.h in Headers */, - A926BB8F27AC718A00144157 /* build_module.h in Headers */, - A926B9FD27AC718A00144157 /* def_use_manager.h in Headers */, - A926BAE727AC718A00144157 /* eliminate_dead_functions_pass.h in Headers */, - A926B94327AC718900144157 /* loop_fusion.h in Headers */, - A926B98E27AC718900144157 /* instruction_list.h in Headers */, - A926B94C27AC718900144157 /* composite.h in Headers */, - A926B92227AC718900144157 /* print.h in Headers */, - A926B7F927AC718900144157 /* bitutils.h in Headers */, - A926BA2427AC718A00144157 /* loop_fusion_pass.h in Headers */, - A926B91927AC718900144157 /* common_debug_info.h in Headers */, - A926C0C027AC718C00144157 /* validate.h in Headers */, - A926BA2727AC718A00144157 /* struct_cfg_analysis.h in Headers */, - A926B8D127AC718900144157 /* pch_source.h in Headers */, - A926B83527AC718900144157 /* remove_instruction_reduction_opportunity.h in Headers */, - A926B7E127AC718900144157 /* ilist_node.h in Headers */, - A926B95527AC718900144157 /* tree_iterator.h in Headers */, - A926B94F27AC718900144157 /* compact_ids_pass.h in Headers */, - A926BAE427AC718A00144157 /* folding_rules.h in Headers */, - A926B8AA27AC718900144157 /* reduction_util.h in Headers */, - A926B88627AC718900144157 /* pch_source_reduce.h in Headers */, - A926BB7D27AC718A00144157 /* spread_volatile_semantics.h in Headers */, - A926BA0327AC718A00144157 /* convert_to_sampled_image_pass.h in Headers */, - A926BA1227AC718A00144157 /* loop_peeling.h in Headers */, - A926C07227AC718C00144157 /* extensions.h in Headers */, - A926BA8A27AC718A00144157 /* loop_dependence.h in Headers */, - A926B8A127AC718900144157 /* change_operand_reduction_opportunity.h in Headers */, - A926B9F727AC718A00144157 /* relax_float_ops_pass.h in Headers */, - A926BA7527AC718A00144157 /* eliminate_dead_members_pass.h in Headers */, - A926B7D527AC718900144157 /* text.h in Headers */, - A926BA3327AC718A00144157 /* wrap_opkill.h in Headers */, - A926B81727AC718900144157 /* operand_to_dominating_id_reduction_opportunity_finder.h in Headers */, - A926C05D27AC718C00144157 /* latest_version_spirv_header.h in Headers */, - A926B90127AC718900144157 /* parsed_operand.h in Headers */, - A926BB2027AC718A00144157 /* reflect.h in Headers */, - A926C0AE27AC718C00144157 /* validation_state.h in Headers */, - A926B8CE27AC718900144157 /* cfa.h in Headers */, - A926B81D27AC718900144157 /* structured_construct_to_block_reduction_opportunity.h in Headers */, - A926C06327AC718C00144157 /* instruction.h in Headers */, - A926BBB327AC718A00144157 /* remove_unused_interface_variables_pass.h in Headers */, - A926BB6B27AC718A00144157 /* instruction.h in Headers */, - A926C06927AC718C00144157 /* opcode.h in Headers */, - A926B84D27AC718900144157 /* simple_conditional_branch_to_branch_opportunity_finder.h in Headers */, - A926B9A327AC718900144157 /* ir_context.h in Headers */, - A926B8E627AC718900144157 /* spirv_definition.h in Headers */, - A926BAC627AC718A00144157 /* copy_prop_arrays.h in Headers */, - A926BB6227AC718A00144157 /* code_sink.h in Headers */, - A926B7E727AC718900144157 /* string_utils.h in Headers */, - A926BB7427AC718A00144157 /* vector_dce.h in Headers */, - A926BA6F27AC718A00144157 /* mem_pass.h in Headers */, - A926B7C927AC718900144157 /* divergence_analysis.h in Headers */, - A926BAE127AC718A00144157 /* pass.h in Headers */, - A926B88F27AC718900144157 /* reducer.h in Headers */, - A926B7B727AC718900144157 /* spirv_fuzzer_options.h in Headers */, - A926B8F227AC718900144157 /* spirv_constant.h in Headers */, - A926BB2F27AC718A00144157 /* scalar_replacement_pass.h in Headers */, - A926BAD527AC718A00144157 /* dead_variable_elimination.h in Headers */, - A926B9B527AC718900144157 /* loop_unroller.h in Headers */, - A926C10227AC718C00144157 /* function.h in Headers */, - A926B8AD27AC718900144157 /* merge_blocks_reduction_opportunity.h in Headers */, - A926BB5F27AC718A00144157 /* cfg.h in Headers */, - A926B93727AC718900144157 /* strip_nonsemantic_info_pass.h in Headers */, - A926C07827AC718C00144157 /* binary.h in Headers */, - A926B82927AC718900144157 /* structured_construct_to_block_reduction_opportunity_finder.h in Headers */, - A926BBA427AC718A00144157 /* dataflow.h in Headers */, - A926C09927AC718C00144157 /* basic_block.h in Headers */, - A926BAF927AC718A00144157 /* scalar_analysis_nodes.h in Headers */, - A926B9CA27AC718900144157 /* types.h in Headers */, - A926C10E27AC718C00144157 /* decoration.h in Headers */, - A926BA8D27AC718A00144157 /* value_number_table.h in Headers */, - A926B85627AC718900144157 /* structured_loop_to_selection_reduction_opportunity.h in Headers */, - A926B92E27AC718900144157 /* if_conversion.h in Headers */, - A926B86527AC718900144157 /* remove_selection_reduction_opportunity.h in Headers */, - A926B8DA27AC718900144157 /* spirv_reducer_options.h in Headers */, - A926B91027AC718900144157 /* spirv_endian.h in Headers */, - A926BB6E27AC718A00144157 /* aggressive_dead_code_elim_pass.h in Headers */, - A926BB3B27AC718A00144157 /* redundancy_elimination.h in Headers */, - A926C0D227AC718C00144157 /* validate_memory_semantics.h in Headers */, - A926BAED27AC718A00144157 /* fold.h in Headers */, - A926B85C27AC718900144157 /* remove_unused_instruction_reduction_opportunity_finder.h in Headers */, - A926BB7727AC718A00144157 /* combine_access_chains.h in Headers */, - A926BB1A27AC718A00144157 /* desc_sroa_util.h in Headers */, - A926BA1E27AC718A00144157 /* desc_sroa.h in Headers */, - A926B95227AC718900144157 /* register_pressure.h in Headers */, - A926BA3627AC718A00144157 /* empty_pass.h in Headers */, - A926B95B27AC718900144157 /* local_single_store_elim_pass.h in Headers */, - A926BA9C27AC718A00144157 /* inline_exhaustive_pass.h in Headers */, - A926BBB627AC718A00144157 /* type_manager.h in Headers */, - A926BA4B27AC718A00144157 /* strength_reduction_pass.h in Headers */, - A926B98B27AC718900144157 /* propagator.h in Headers */, - A926B83827AC718900144157 /* conditional_branch_to_simple_conditional_branch_reduction_opportunity.h in Headers */, - A926BA3F27AC718A00144157 /* local_single_block_elim_pass.h in Headers */, - A926BB7A27AC718A00144157 /* pass_manager.h in Headers */, - A926BA6627AC718A00144157 /* freeze_spec_constant_value_pass.h in Headers */, - A926B93D27AC718900144157 /* merge_return_pass.h in Headers */, - A926B92827AC718900144157 /* disassemble.h in Headers */, - A926BA4827AC718A00144157 /* inst_buff_addr_check_pass.h in Headers */, - A926B99D27AC718900144157 /* amd_ext_to_khr.h in Headers */, - A926B95E27AC718900144157 /* reduce_load_size.h in Headers */, - A926BA1827AC718A00144157 /* block_merge_util.h in Headers */, - A926BB8C27AC718A00144157 /* licm_pass.h in Headers */, - A926B9C127AC718900144157 /* unify_const_pass.h in Headers */, - A926BBB027AC718A00144157 /* dominator_tree.h in Headers */, - A926BAAE27AC718A00144157 /* upgrade_memory_model.h in Headers */, - A926B8E927AC718900144157 /* operand.h in Headers */, - A926B8EF27AC718900144157 /* macro.h in Headers */, - A926B9D327AC718A00144157 /* basic_block.h in Headers */, + A9F7B53729425A1900B30DA7 /* replace_invalid_opc.h in Headers */, + A9F7B5CA29425A1900B30DA7 /* convert_to_sampled_image_pass.h in Headers */, + A9F7B4B029425A1900B30DA7 /* text_handler.h in Headers */, + A9F7B58E29425A1900B30DA7 /* types.h in Headers */, + A9F7B62A29425A1900B30DA7 /* dead_insert_elim_pass.h in Headers */, + A9F7B38429425A1800B30DA7 /* parse_number.h in Headers */, + A9F7B38A29425A1800B30DA7 /* make_unique.h in Headers */, + A9F7B76E29425A1900B30DA7 /* function.h in Headers */, + A9F7B61E29425A1900B30DA7 /* inst_debug_printf_pass.h in Headers */, + A9F7B5A029425A1900B30DA7 /* block_merge_pass.h in Headers */, + A9F7B52229425A1900B30DA7 /* scalar_analysis.h in Headers */, + A9F7B50129425A1900B30DA7 /* composite.h in Headers */, + A9F7B37229425A1800B30DA7 /* enum_set.h in Headers */, + A9F7B36C29425A1800B30DA7 /* lints.h in Headers */, + A9F7B63029425A1900B30DA7 /* freeze_spec_constant_value_pass.h in Headers */, + A9F7B43E29425A1800B30DA7 /* reduction_opportunity.h in Headers */, + A9F7B56129425A1900B30DA7 /* ir_context.h in Headers */, + A9F7B72029425A1900B30DA7 /* loop_utils.h in Headers */, + A9F7B5BE29425A1900B30DA7 /* relax_float_ops_pass.h in Headers */, + A9F7B6B129425A1900B30DA7 /* pass.h in Headers */, + A9F7B4F229425A1900B30DA7 /* inline_opaque_pass.h in Headers */, + A9F7B61529425A1900B30DA7 /* strength_reduction_pass.h in Headers */, + A9F7B47A29425A1800B30DA7 /* pch_source.h in Headers */, + A9F7B51329425A1900B30DA7 /* graphics_robust_access_pass.h in Headers */, + A9F7B6C929425A1900B30DA7 /* scalar_analysis_nodes.h in Headers */, + A9F7B3CC29425A1800B30DA7 /* operand_to_const_reduction_opportunity_finder.h in Headers */, + A9F7B59729425A1900B30DA7 /* basic_block.h in Headers */, + A9F7B4E929425A1900B30DA7 /* strip_nonsemantic_info_pass.h in Headers */, + A9F7B6BD29425A1900B30DA7 /* fold.h in Headers */, + A9F7BCD829425A1B00B30DA7 /* instruction.h in Headers */, + A9F7B58529425A1900B30DA7 /* unify_const_pass.h in Headers */, + A9F7B74A29425A1900B30DA7 /* vector_dce.h in Headers */, + A9F7B3C629425A1800B30DA7 /* structured_construct_to_block_reduction_opportunity.h in Headers */, + A9F7B3B129425A1800B30DA7 /* spirv_target_env.h in Headers */, + A9F7B4F529425A1900B30DA7 /* loop_fusion.h in Headers */, + A9F7B4D429425A1900B30DA7 /* print.h in Headers */, + A9F7B3FF29425A1800B30DA7 /* structured_loop_to_selection_reduction_opportunity.h in Headers */, + A9F7B78C29425A1900B30DA7 /* dominator_tree.h in Headers */, + A9F7B6C329425A1900B30DA7 /* dead_branch_elim_pass.h in Headers */, + A9F7B76829425A1900B30DA7 /* ccp_pass.h in Headers */, + A9F7BCA529425A1B00B30DA7 /* validate.h in Headers */, + A9F7BC6629425A1B00B30DA7 /* construct.h in Headers */, + A9F7B6F929425A1900B30DA7 /* null_pass.h in Headers */, + A9F7B66C29425A1900B30DA7 /* constants.h in Headers */, + A9F7BC9329425A1B00B30DA7 /* validation_state.h in Headers */, + A9F7B73E29425A1900B30DA7 /* instruction.h in Headers */, + A9F7B72F29425A1900B30DA7 /* loop_unswitch_pass.h in Headers */, + A9F7B50D29425A1900B30DA7 /* tree_iterator.h in Headers */, + A9F7B3F329425A1800B30DA7 /* remove_struct_member_reduction_opportunity.h in Headers */, + A9F7BCB129425A1B00B30DA7 /* validate_scopes.h in Headers */, + A9F7B6D829425A1900B30DA7 /* passes.h in Headers */, + A9F7B60929425A1900B30DA7 /* interp_fixup_pass.h in Headers */, + A9F7BCB729425A1B00B30DA7 /* validate_memory_semantics.h in Headers */, + A9F7B39329425A1800B30DA7 /* hash_combine.h in Headers */, + A9F7B44129425A1800B30DA7 /* conditional_branch_to_simple_conditional_branch_opportunity_finder.h in Headers */, + A9F7B52529425A1900B30DA7 /* strip_debug_info_pass.h in Headers */, + A9F7B70829425A1900B30DA7 /* pch_source_opt.h in Headers */, + A9F7B41729425A1800B30DA7 /* merge_blocks_reduction_opportunity_finder.h in Headers */, + A9F7B46E29425A1800B30DA7 /* reduction_pass.h in Headers */, + A9F7B51629425A1900B30DA7 /* local_single_store_elim_pass.h in Headers */, + A9F7B47129425A1800B30DA7 /* latest_version_opencl_std_header.h in Headers */, + A9F7B3BD29425A1800B30DA7 /* remove_block_reduction_opportunity.h in Headers */, + A9F7B42C29425A1800B30DA7 /* remove_function_reduction_opportunity_finder.h in Headers */, + A9F7BC3F29425A1B00B30DA7 /* instruction.h in Headers */, + A9F7B6B729425A1900B30DA7 /* eliminate_dead_functions_pass.h in Headers */, + A9F7B39F29425A1800B30DA7 /* bit_vector.h in Headers */, + A9F7B36029425A1800B30DA7 /* assembly_grammar.h in Headers */, + A9F7B65429425A1900B30DA7 /* loop_dependence.h in Headers */, + A9F7B3D829425A1800B30DA7 /* simple_conditional_branch_to_branch_reduction_opportunity.h in Headers */, + A9F7B6B429425A1900B30DA7 /* folding_rules.h in Headers */, + A9F7B63F29425A1900B30DA7 /* eliminate_dead_members_pass.h in Headers */, + A9F7B45329425A1800B30DA7 /* reduction_util.h in Headers */, + A9F7B79B29425A1900B30DA7 /* table.h in Headers */, + A9F7BC7B29425A1B00B30DA7 /* basic_block.h in Headers */, + A9F7B44D29425A1800B30DA7 /* remove_block_reduction_opportunity_finder.h in Headers */, + A9F7B5BB29425A1900B30DA7 /* remove_dontinline_pass.h in Headers */, + A9F7B3C029425A1800B30DA7 /* operand_to_dominating_id_reduction_opportunity_finder.h in Headers */, + A9F7B49229425A1800B30DA7 /* operand.h in Headers */, + A9F7B4DA29425A1900B30DA7 /* disassemble.h in Headers */, + A9F7B40529425A1800B30DA7 /* remove_unused_instruction_reduction_opportunity_finder.h in Headers */, + A9F7B65729425A1900B30DA7 /* value_number_table.h in Headers */, + A9F7B39029425A1800B30DA7 /* small_vector.h in Headers */, + A9F7B69329425A1900B30DA7 /* log.h in Headers */, + A9F7B38729425A1800B30DA7 /* ilist_node.h in Headers */, + A9F7B77D29425A1900B30DA7 /* feature_manager.h in Headers */, + A9F7B68A29425A1900B30DA7 /* loop_fission.h in Headers */, + A9F7B51029425A1900B30DA7 /* interface_var_sroa.h in Headers */, + A9F7B76229425A1900B30DA7 /* licm_pass.h in Headers */, + A9F7B5B829425A1900B30DA7 /* convert_to_half_pass.h in Headers */, + A9F7B3D229425A1800B30DA7 /* structured_construct_to_block_reduction_opportunity_finder.h in Headers */, + A9F7B59129425A1900B30DA7 /* fold_spec_constant_op_and_composite_pass.h in Headers */, + A9F7B73229425A1900B30DA7 /* cfg.h in Headers */, + A9F7B40E29425A1800B30DA7 /* remove_selection_reduction_opportunity.h in Headers */, + A9F7BC4529425A1B00B30DA7 /* opcode.h in Headers */, + A9F7B65D29425A1900B30DA7 /* flatten_decoration_pass.h in Headers */, + A9F7B5B529425A1900B30DA7 /* private_to_local_pass.h in Headers */, + A9F7B5FA29425A1900B30DA7 /* wrap_opkill.h in Headers */, + A9F7B37B29425A1800B30DA7 /* text.h in Headers */, + A9F7B38D29425A1800B30DA7 /* string_utils.h in Headers */, + A9F7B5A629425A1900B30DA7 /* debug_info_manager.h in Headers */, + A9F7B6CF29425A1900B30DA7 /* fix_storage_class.h in Headers */, + A9F7B69629425A1900B30DA7 /* copy_prop_arrays.h in Headers */, + A9F7B40829425A1800B30DA7 /* change_operand_to_undef_reduction_opportunity.h in Headers */, + A9F7B4A429425A1900B30DA7 /* lcs.h in Headers */, + A9F7B3AE29425A1800B30DA7 /* ilist.h in Headers */, + A9F7B40B29425A1800B30DA7 /* structured_loop_to_selection_reduction_opportunity_finder.h in Headers */, + A9F7BCEA29425A1B00B30DA7 /* function.h in Headers */, + A9F7B69929425A1900B30DA7 /* eliminate_dead_constant_pass.h in Headers */, + A9F7B51929425A1900B30DA7 /* reduce_load_size.h in Headers */, + A9F7B78929425A1900B30DA7 /* set_spec_constant_default_value_pass.h in Headers */, + A9F7B4BF29425A1900B30DA7 /* diagnostic.h in Headers */, + A9F7B78029425A1900B30DA7 /* dataflow.h in Headers */, + A9F7B45629425A1800B30DA7 /* merge_blocks_reduction_opportunity.h in Headers */, + A9F7B72329425A1900B30DA7 /* module.h in Headers */, + A9F7BC4229425A1B00B30DA7 /* spirv_optimizer_options.h in Headers */, + A9F7BC3329425A1B00B30DA7 /* ext_inst.h in Headers */, + A9F7B48329425A1800B30DA7 /* spirv_reducer_options.h in Headers */, + A9F7BCF629425A1B00B30DA7 /* decoration.h in Headers */, + A9F7B61229425A1900B30DA7 /* inst_buff_addr_check_pass.h in Headers */, + A9F7B75F29425A1900B30DA7 /* iterator.h in Headers */, + A9F7BC4B29425A1B00B30DA7 /* latest_version_glsl_std_450_header.h in Headers */, + A9F7B42F29425A1800B30DA7 /* pch_source_reduce.h in Headers */, + A9F7B4B629425A1900B30DA7 /* name_mapper.h in Headers */, + A9F7B57629425A1900B30DA7 /* liveness.h in Headers */, + A9F7B5D629425A1900B30DA7 /* local_redundancy_elimination.h in Headers */, + A9F7B3F629425A1800B30DA7 /* simple_conditional_branch_to_branch_opportunity_finder.h in Headers */, + A9F7B54C29425A1900B30DA7 /* instruction_list.h in Headers */, + A9F7B4A129425A1900B30DA7 /* diff.h in Headers */, + A9F7B63629425A1900B30DA7 /* instrument_pass.h in Headers */, + A9F7BC5429425A1B00B30DA7 /* binary.h in Headers */, + A9F7B65129425A1900B30DA7 /* inline_pass.h in Headers */, + A9F7B5EB29425A1900B30DA7 /* loop_fusion_pass.h in Headers */, + A9F7B6A529425A1900B30DA7 /* dead_variable_elimination.h in Headers */, + A9F7B78F29425A1900B30DA7 /* remove_unused_interface_variables_pass.h in Headers */, + A9F7B42029425A1800B30DA7 /* remove_unused_struct_member_reduction_opportunity_finder.h in Headers */, + A9F7B6E429425A1900B30DA7 /* simplification_pass.h in Headers */, + A9F7B6EA29425A1900B30DA7 /* remove_duplicates_pass.h in Headers */, + A9F7B60C29425A1900B30DA7 /* eliminate_dead_io_components_pass.h in Headers */, + A9F7B47D29425A1800B30DA7 /* enum_string_mapping.h in Headers */, + A9F7B3A529425A1800B30DA7 /* hex_float.h in Headers */, + A9F7B4AA29425A1900B30DA7 /* spirv_validator_options.h in Headers */, + A9F7B6ED29425A1900B30DA7 /* desc_sroa_util.h in Headers */, + A9F7B41429425A1800B30DA7 /* remove_selection_reduction_opportunity_finder.h in Headers */, + A9F7B75029425A1900B30DA7 /* pass_manager.h in Headers */, + A9F7B6AB29425A1900B30DA7 /* dominator_analysis.h in Headers */, + A9F7B48F29425A1800B30DA7 /* spirv_definition.h in Headers */, + A9F7B5DF29425A1900B30DA7 /* block_merge_util.h in Headers */, + A9F7B40229425A1800B30DA7 /* remove_function_reduction_opportunity.h in Headers */, + A9F7B43829425A1800B30DA7 /* reducer.h in Headers */, + A9F7B5C429425A1900B30DA7 /* def_use_manager.h in Headers */, + A9F7B79229425A1900B30DA7 /* type_manager.h in Headers */, + A9F7B4CB29425A1900B30DA7 /* common_debug_info.h in Headers */, + A9F7B5CD29425A1900B30DA7 /* cfg_cleanup_pass.h in Headers */, + A9F7B5E529425A1900B30DA7 /* desc_sroa.h in Headers */, + A9F7B60629425A1900B30DA7 /* local_single_block_elim_pass.h in Headers */, + A9F7B4C229425A1900B30DA7 /* spirv_endian.h in Headers */, + A9F7B70E29425A1900B30DA7 /* redundancy_elimination.h in Headers */, + A9F7B74D29425A1900B30DA7 /* combine_access_chains.h in Headers */, + A9F7BC3929425A1B00B30DA7 /* latest_version_spirv_header.h in Headers */, + A9F7B53A29425A1900B30DA7 /* eliminate_dead_output_stores_pass.h in Headers */, + A9F7B75329425A1900B30DA7 /* spread_volatile_semantics.h in Headers */, + A9F7B72929425A1900B30DA7 /* ir_builder.h in Headers */, + A9F7B76529425A1900B30DA7 /* build_module.h in Headers */, + A9F7B66929425A1900B30DA7 /* inline_exhaustive_pass.h in Headers */, + A9F7B44729425A1800B30DA7 /* reduction_opportunity_finder.h in Headers */, + A9F7B36F29425A1800B30DA7 /* divergence_analysis.h in Headers */, + A9F7B67B29425A1900B30DA7 /* upgrade_memory_model.h in Headers */, + A9F7B3A229425A1800B30DA7 /* bitutils.h in Headers */, + A9F7B4B329425A1900B30DA7 /* parsed_operand.h in Headers */, + A9F7B49B29425A1800B30DA7 /* spirv_constant.h in Headers */, + A9F7B77129425A1900B30DA7 /* fix_func_call_arguments.h in Headers */, + A9F7B6BA29425A1900B30DA7 /* eliminate_dead_functions_util.h in Headers */, + A9F7B57929425A1900B30DA7 /* loop_unroller.h in Headers */, + A9F7B69F29425A1900B30DA7 /* ssa_rewrite_pass.h in Headers */, + A9F7B54929425A1900B30DA7 /* propagator.h in Headers */, + A9F7B73B29425A1900B30DA7 /* loop_descriptor.h in Headers */, + A9F7B4EF29425A1900B30DA7 /* merge_return_pass.h in Headers */, + A9F7B5FD29425A1900B30DA7 /* empty_pass.h in Headers */, + A9F7B70229425A1900B30DA7 /* scalar_replacement_pass.h in Headers */, + A9F7B73529425A1900B30DA7 /* code_sink.h in Headers */, + A9F7B44A29425A1800B30DA7 /* change_operand_reduction_opportunity.h in Headers */, + A9F7B68129425A1900B30DA7 /* analyze_live_input_pass.h in Headers */, + A9F7B47729425A1800B30DA7 /* cfa.h in Headers */, + A9F7B55B29425A1900B30DA7 /* amd_ext_to_khr.h in Headers */, + A9F7B60029425A1900B30DA7 /* decoration_manager.h in Headers */, + A9F7B5D929425A1900B30DA7 /* loop_peeling.h in Headers */, + A9F7B52829425A1900B30DA7 /* replace_desc_array_access_using_var_index.h in Headers */, + A9F7B6F329425A1900B30DA7 /* reflect.h in Headers */, + A9F7B50729425A1900B30DA7 /* compact_ids_pass.h in Headers */, + A9F7B49829425A1800B30DA7 /* macro.h in Headers */, + A9F7B39929425A1800B30DA7 /* timer.h in Headers */, + A9F7BC4E29425A1B00B30DA7 /* extensions.h in Headers */, + A9F7B63929425A1900B30DA7 /* mem_pass.h in Headers */, + A9F7B53D29425A1900B30DA7 /* local_access_chain_convert_pass.h in Headers */, + A9F7B3DE29425A1800B30DA7 /* remove_instruction_reduction_opportunity.h in Headers */, + A9F7B56729425A1900B30DA7 /* control_dependence.h in Headers */, + A9F7B58829425A1900B30DA7 /* ir_loader.h in Headers */, + A9F7B3E129425A1800B30DA7 /* conditional_branch_to_simple_conditional_branch_reduction_opportunity.h in Headers */, + A9F7B68D29425A1900B30DA7 /* workaround1209.h in Headers */, + A9F7B50A29425A1900B30DA7 /* register_pressure.h in Headers */, + A9F7B3B729425A1800B30DA7 /* operand_to_undef_reduction_opportunity_finder.h in Headers */, + A9F7B5EE29425A1900B30DA7 /* struct_cfg_analysis.h in Headers */, + A9F7B35D29425A1800B30DA7 /* spirv_fuzzer_options.h in Headers */, + A9F7B6FF29425A1900B30DA7 /* const_folding_rules.h in Headers */, + A9F7B78329425A1900B30DA7 /* inst_bindless_check_pass.h in Headers */, + A9F7B74129425A1900B30DA7 /* aggressive_dead_code_elim_pass.h in Headers */, + A9F7B4E029425A1900B30DA7 /* if_conversion.h in Headers */, ); runOnlyForDeploymentPostprocessing = 0; }; @@ -3322,203 +3452,213 @@ isa = PBXHeadersBuildPhase; buildActionMask = 2147483647; files = ( - A926BB6727AC718A00144157 /* loop_descriptor.h in Headers */, - A926B89D27AC718900144157 /* reduction_opportunity_finder.h in Headers */, - A926BB8827AC718A00144157 /* iterator.h in Headers */, - A926BA0527AC718A00144157 /* cfg_cleanup_pass.h in Headers */, - A926BA5327AC718A00144157 /* inst_debug_printf_pass.h in Headers */, - A926BA5F27AC718A00144157 /* dead_insert_elim_pass.h in Headers */, - A926BB9727AC718A00144157 /* function.h in Headers */, - A926BB5B27AC718A00144157 /* loop_unswitch_pass.h in Headers */, - A926B9CC27AC718A00144157 /* fold_spec_constant_op_and_composite_pass.h in Headers */, - A926B95727AC718900144157 /* graphics_robust_access_pass.h in Headers */, - A926BBA027AC718A00144157 /* feature_manager.h in Headers */, - A926BB0727AC718A00144157 /* passes.h in Headers */, - A926B80D27AC718900144157 /* operand_to_undef_reduction_opportunity_finder.h in Headers */, - A926B7DD27AC718900144157 /* parse_number.h in Headers */, - A926B82E27AC718900144157 /* simple_conditional_branch_to_branch_reduction_opportunity.h in Headers */, - A926B9A827AC718900144157 /* control_dependence.h in Headers */, - A926B7F527AC718900144157 /* bit_vector.h in Headers */, - A926B96927AC718900144157 /* strip_debug_info_pass.h in Headers */, - A926B9F027AC718A00144157 /* private_to_local_pass.h in Headers */, - A926B96627AC718900144157 /* scalar_analysis.h in Headers */, - A926B82227AC718900144157 /* operand_to_const_reduction_opportunity_finder.h in Headers */, - A926B86D27AC718900144157 /* merge_blocks_reduction_opportunity_finder.h in Headers */, - A926BAB927AC718A00144157 /* loop_fission.h in Headers */, - A926BAC827AC718A00144157 /* eliminate_dead_constant_pass.h in Headers */, - A926B8FD27AC718900144157 /* text_handler.h in Headers */, - A926B80427AC718900144157 /* ilist.h in Headers */, - A926B9F327AC718A00144157 /* convert_to_half_pass.h in Headers */, - A926BB1627AC718A00144157 /* remove_duplicates_pass.h in Headers */, - A926BB1327AC718A00144157 /* simplification_pass.h in Headers */, - A926B7E327AC718900144157 /* make_unique.h in Headers */, - A926BB3427AC718A00144157 /* pch_source_opt.h in Headers */, - A926BA6B27AC718A00144157 /* instrument_pass.h in Headers */, - A926B8C427AC718900144157 /* reduction_pass.h in Headers */, - A926B97B27AC718900144157 /* replace_invalid_opc.h in Headers */, - A926C0F227AC718C00144157 /* instruction.h in Headers */, - A926B84927AC718900144157 /* remove_struct_member_reduction_opportunity.h in Headers */, - A926BA8627AC718A00144157 /* inline_pass.h in Headers */, - A926B7FB27AC718900144157 /* hex_float.h in Headers */, - A926B93F27AC718900144157 /* inline_opaque_pass.h in Headers */, - A926BB9127AC718A00144157 /* ccp_pass.h in Headers */, - A926BB4C27AC718A00144157 /* loop_utils.h in Headers */, - A926B88227AC718900144157 /* remove_function_reduction_opportunity_finder.h in Headers */, - A926B7CB27AC718900144157 /* enum_set.h in Headers */, - A926BA9E27AC718A00144157 /* constants.h in Headers */, - A926B9E127AC718A00144157 /* debug_info_manager.h in Headers */, - A926B7C527AC718900144157 /* lints.h in Headers */, - A926BBBE27AC718A00144157 /* table.h in Headers */, - A926BADA27AC718A00144157 /* dominator_analysis.h in Headers */, - A926B89727AC718900144157 /* conditional_branch_to_simple_conditional_branch_opportunity_finder.h in Headers */, - A926B90C27AC718900144157 /* diagnostic.h in Headers */, - A926BACE27AC718A00144157 /* ssa_rewrite_pass.h in Headers */, - A926BA3827AC718A00144157 /* decoration_manager.h in Headers */, - A926BAE927AC718A00144157 /* eliminate_dead_functions_util.h in Headers */, - A926BAC227AC718A00144157 /* log.h in Headers */, - A926BB5527AC718A00144157 /* ir_builder.h in Headers */, - A926BAFE27AC718A00144157 /* fix_storage_class.h in Headers */, - A926B96C27AC718900144157 /* replace_desc_array_access_using_var_index.h in Headers */, - A926BB2527AC718A00144157 /* null_pass.h in Headers */, - A926BA4127AC718A00144157 /* interp_fixup_pass.h in Headers */, - A926B8C727AC718900144157 /* latest_version_opencl_std_header.h in Headers */, - A926B90327AC718900144157 /* name_mapper.h in Headers */, - A926BB4F27AC718A00144157 /* module.h in Headers */, - A926B8D327AC718900144157 /* enum_string_mapping.h in Headers */, - A926B7B927AC718900144157 /* assembly_grammar.h in Headers */, - A926C05627AC718C00144157 /* ext_inst.h in Headers */, - A926B7E927AC718900144157 /* small_vector.h in Headers */, - A926BB2B27AC718A00144157 /* const_folding_rules.h in Headers */, - A926BA9227AC718A00144157 /* flatten_decoration_pass.h in Headers */, - A926B9C327AC718900144157 /* ir_loader.h in Headers */, - A926BA0E27AC718A00144157 /* local_redundancy_elimination.h in Headers */, - A926B81327AC718900144157 /* remove_block_reduction_opportunity.h in Headers */, - A926C0CB27AC718C00144157 /* validate_scopes.h in Headers */, - A926B8A327AC718900144157 /* remove_block_reduction_opportunity_finder.h in Headers */, - A926B89427AC718900144157 /* reduction_opportunity.h in Headers */, - A926B85E27AC718900144157 /* change_operand_to_undef_reduction_opportunity.h in Headers */, - A926B85827AC718900144157 /* remove_function_reduction_opportunity.h in Headers */, - A926C06527AC718C00144157 /* spirv_optimizer_options.h in Headers */, - A926B97E27AC718900144157 /* local_access_chain_convert_pass.h in Headers */, - A926B8F727AC718900144157 /* spirv_validator_options.h in Headers */, - A926B80727AC718900144157 /* spirv_target_env.h in Headers */, - A926B9DB27AC718A00144157 /* block_merge_pass.h in Headers */, - A926C06E27AC718C00144157 /* latest_version_glsl_std_450_header.h in Headers */, - A926B7EF27AC718900144157 /* timer.h in Headers */, - A926B86127AC718900144157 /* structured_loop_to_selection_reduction_opportunity_finder.h in Headers */, - A926B87627AC718900144157 /* remove_unused_struct_member_reduction_opportunity_finder.h in Headers */, - A926C08927AC718C00144157 /* construct.h in Headers */, - A926BABC27AC718A00144157 /* workaround1209.h in Headers */, - A926BAF227AC718A00144157 /* dead_branch_elim_pass.h in Headers */, - A926BBAC27AC718A00144157 /* set_spec_constant_default_value_pass.h in Headers */, - A926B86A27AC718900144157 /* remove_selection_reduction_opportunity_finder.h in Headers */, - A926BBA627AC718A00144157 /* inst_bindless_check_pass.h in Headers */, - A926BB8E27AC718A00144157 /* build_module.h in Headers */, - A926B9FC27AC718A00144157 /* def_use_manager.h in Headers */, - A926BAE627AC718A00144157 /* eliminate_dead_functions_pass.h in Headers */, - A926B94227AC718900144157 /* loop_fusion.h in Headers */, - A926B98D27AC718900144157 /* instruction_list.h in Headers */, - A926B94B27AC718900144157 /* composite.h in Headers */, - A926B92127AC718900144157 /* print.h in Headers */, - A926B7F827AC718900144157 /* bitutils.h in Headers */, - A926BA2327AC718A00144157 /* loop_fusion_pass.h in Headers */, - A926B91827AC718900144157 /* common_debug_info.h in Headers */, - A926C0BF27AC718C00144157 /* validate.h in Headers */, - A926BA2627AC718A00144157 /* struct_cfg_analysis.h in Headers */, - A926B8D027AC718900144157 /* pch_source.h in Headers */, - A926B83427AC718900144157 /* remove_instruction_reduction_opportunity.h in Headers */, - A926B7E027AC718900144157 /* ilist_node.h in Headers */, - A926B95427AC718900144157 /* tree_iterator.h in Headers */, - A926B94E27AC718900144157 /* compact_ids_pass.h in Headers */, - A926BAE327AC718A00144157 /* folding_rules.h in Headers */, - A926B8A927AC718900144157 /* reduction_util.h in Headers */, - A926B88527AC718900144157 /* pch_source_reduce.h in Headers */, - A926BB7C27AC718A00144157 /* spread_volatile_semantics.h in Headers */, - A926BA0227AC718A00144157 /* convert_to_sampled_image_pass.h in Headers */, - A926BA1127AC718A00144157 /* loop_peeling.h in Headers */, - A926C07127AC718C00144157 /* extensions.h in Headers */, - A926BA8927AC718A00144157 /* loop_dependence.h in Headers */, - A926B8A027AC718900144157 /* change_operand_reduction_opportunity.h in Headers */, - A926B9F627AC718A00144157 /* relax_float_ops_pass.h in Headers */, - A926BA7427AC718A00144157 /* eliminate_dead_members_pass.h in Headers */, - A926B7D427AC718900144157 /* text.h in Headers */, - A926BA3227AC718A00144157 /* wrap_opkill.h in Headers */, - A926B81627AC718900144157 /* operand_to_dominating_id_reduction_opportunity_finder.h in Headers */, - A926C05C27AC718C00144157 /* latest_version_spirv_header.h in Headers */, - A926B90027AC718900144157 /* parsed_operand.h in Headers */, - A926BB1F27AC718A00144157 /* reflect.h in Headers */, - A926C0AD27AC718C00144157 /* validation_state.h in Headers */, - A926B8CD27AC718900144157 /* cfa.h in Headers */, - A926B81C27AC718900144157 /* structured_construct_to_block_reduction_opportunity.h in Headers */, - A926C06227AC718C00144157 /* instruction.h in Headers */, - A926BBB227AC718A00144157 /* remove_unused_interface_variables_pass.h in Headers */, - A926BB6A27AC718A00144157 /* instruction.h in Headers */, - A926C06827AC718C00144157 /* opcode.h in Headers */, - A926B84C27AC718900144157 /* simple_conditional_branch_to_branch_opportunity_finder.h in Headers */, - A926B9A227AC718900144157 /* ir_context.h in Headers */, - A926B8E527AC718900144157 /* spirv_definition.h in Headers */, - A926BAC527AC718A00144157 /* copy_prop_arrays.h in Headers */, - A926BB6127AC718A00144157 /* code_sink.h in Headers */, - A926B7E627AC718900144157 /* string_utils.h in Headers */, - A926BB7327AC718A00144157 /* vector_dce.h in Headers */, - A926BA6E27AC718A00144157 /* mem_pass.h in Headers */, - A926B7C827AC718900144157 /* divergence_analysis.h in Headers */, - A926BAE027AC718A00144157 /* pass.h in Headers */, - A926B88E27AC718900144157 /* reducer.h in Headers */, - A926B7B627AC718900144157 /* spirv_fuzzer_options.h in Headers */, - A926B8F127AC718900144157 /* spirv_constant.h in Headers */, - A926BB2E27AC718A00144157 /* scalar_replacement_pass.h in Headers */, - A926BAD427AC718A00144157 /* dead_variable_elimination.h in Headers */, - A926B9B427AC718900144157 /* loop_unroller.h in Headers */, - A926C10127AC718C00144157 /* function.h in Headers */, - A926B8AC27AC718900144157 /* merge_blocks_reduction_opportunity.h in Headers */, - A926BB5E27AC718A00144157 /* cfg.h in Headers */, - A926B93627AC718900144157 /* strip_nonsemantic_info_pass.h in Headers */, - A926C07727AC718C00144157 /* binary.h in Headers */, - A926B82827AC718900144157 /* structured_construct_to_block_reduction_opportunity_finder.h in Headers */, - A926BBA327AC718A00144157 /* dataflow.h in Headers */, - A926C09827AC718C00144157 /* basic_block.h in Headers */, - A926BAF827AC718A00144157 /* scalar_analysis_nodes.h in Headers */, - A926B9C927AC718900144157 /* types.h in Headers */, - A926C10D27AC718C00144157 /* decoration.h in Headers */, - A926BA8C27AC718A00144157 /* value_number_table.h in Headers */, - A926B85527AC718900144157 /* structured_loop_to_selection_reduction_opportunity.h in Headers */, - A926B92D27AC718900144157 /* if_conversion.h in Headers */, - A926B86427AC718900144157 /* remove_selection_reduction_opportunity.h in Headers */, - A926B8D927AC718900144157 /* spirv_reducer_options.h in Headers */, - A926B90F27AC718900144157 /* spirv_endian.h in Headers */, - A926BB6D27AC718A00144157 /* aggressive_dead_code_elim_pass.h in Headers */, - A926BB3A27AC718A00144157 /* redundancy_elimination.h in Headers */, - A926C0D127AC718C00144157 /* validate_memory_semantics.h in Headers */, - A926BAEC27AC718A00144157 /* fold.h in Headers */, - A926B85B27AC718900144157 /* remove_unused_instruction_reduction_opportunity_finder.h in Headers */, - A926BB7627AC718A00144157 /* combine_access_chains.h in Headers */, - A926BB1927AC718A00144157 /* desc_sroa_util.h in Headers */, - A926BA1D27AC718A00144157 /* desc_sroa.h in Headers */, - A926B95127AC718900144157 /* register_pressure.h in Headers */, - A926BA3527AC718A00144157 /* empty_pass.h in Headers */, - A926B95A27AC718900144157 /* local_single_store_elim_pass.h in Headers */, - A926BA9B27AC718A00144157 /* inline_exhaustive_pass.h in Headers */, - A926BBB527AC718A00144157 /* type_manager.h in Headers */, - A926BA4A27AC718A00144157 /* strength_reduction_pass.h in Headers */, - A926B98A27AC718900144157 /* propagator.h in Headers */, - A926B83727AC718900144157 /* conditional_branch_to_simple_conditional_branch_reduction_opportunity.h in Headers */, - A926BA3E27AC718A00144157 /* local_single_block_elim_pass.h in Headers */, - A926BB7927AC718A00144157 /* pass_manager.h in Headers */, - A926BA6527AC718A00144157 /* freeze_spec_constant_value_pass.h in Headers */, - A926B93C27AC718900144157 /* merge_return_pass.h in Headers */, - A926B92727AC718900144157 /* disassemble.h in Headers */, - A926BA4727AC718A00144157 /* inst_buff_addr_check_pass.h in Headers */, - A926B99C27AC718900144157 /* amd_ext_to_khr.h in Headers */, - A926B95D27AC718900144157 /* reduce_load_size.h in Headers */, - A926BA1727AC718A00144157 /* block_merge_util.h in Headers */, - A926BB8B27AC718A00144157 /* licm_pass.h in Headers */, - A926B9C027AC718900144157 /* unify_const_pass.h in Headers */, - A926BBAF27AC718A00144157 /* dominator_tree.h in Headers */, - A926BAAD27AC718A00144157 /* upgrade_memory_model.h in Headers */, - A926B8E827AC718900144157 /* operand.h in Headers */, - A926B8EE27AC718900144157 /* macro.h in Headers */, - A926B9D227AC718A00144157 /* basic_block.h in Headers */, + A9F7B53629425A1900B30DA7 /* replace_invalid_opc.h in Headers */, + A9F7B5C929425A1900B30DA7 /* convert_to_sampled_image_pass.h in Headers */, + A9F7B4AF29425A1900B30DA7 /* text_handler.h in Headers */, + A9F7B58D29425A1900B30DA7 /* types.h in Headers */, + A9F7B62929425A1900B30DA7 /* dead_insert_elim_pass.h in Headers */, + A9F7B38329425A1800B30DA7 /* parse_number.h in Headers */, + A9F7B38929425A1800B30DA7 /* make_unique.h in Headers */, + A9F7B76D29425A1900B30DA7 /* function.h in Headers */, + A9F7B61D29425A1900B30DA7 /* inst_debug_printf_pass.h in Headers */, + A9F7B59F29425A1900B30DA7 /* block_merge_pass.h in Headers */, + A9F7B52129425A1900B30DA7 /* scalar_analysis.h in Headers */, + A9F7B50029425A1900B30DA7 /* composite.h in Headers */, + A9F7B37129425A1800B30DA7 /* enum_set.h in Headers */, + A9F7B36B29425A1800B30DA7 /* lints.h in Headers */, + A9F7B62F29425A1900B30DA7 /* freeze_spec_constant_value_pass.h in Headers */, + A9F7B43D29425A1800B30DA7 /* reduction_opportunity.h in Headers */, + A9F7B56029425A1900B30DA7 /* ir_context.h in Headers */, + A9F7B71F29425A1900B30DA7 /* loop_utils.h in Headers */, + A9F7B5BD29425A1900B30DA7 /* relax_float_ops_pass.h in Headers */, + A9F7B6B029425A1900B30DA7 /* pass.h in Headers */, + A9F7B4F129425A1900B30DA7 /* inline_opaque_pass.h in Headers */, + A9F7B61429425A1900B30DA7 /* strength_reduction_pass.h in Headers */, + A9F7B47929425A1800B30DA7 /* pch_source.h in Headers */, + A9F7B51229425A1900B30DA7 /* graphics_robust_access_pass.h in Headers */, + A9F7B6C829425A1900B30DA7 /* scalar_analysis_nodes.h in Headers */, + A9F7B3CB29425A1800B30DA7 /* operand_to_const_reduction_opportunity_finder.h in Headers */, + A9F7B59629425A1900B30DA7 /* basic_block.h in Headers */, + A9F7B4E829425A1900B30DA7 /* strip_nonsemantic_info_pass.h in Headers */, + A9F7B6BC29425A1900B30DA7 /* fold.h in Headers */, + A9F7BCD729425A1B00B30DA7 /* instruction.h in Headers */, + A9F7B58429425A1900B30DA7 /* unify_const_pass.h in Headers */, + A9F7B74929425A1900B30DA7 /* vector_dce.h in Headers */, + A9F7B3C529425A1800B30DA7 /* structured_construct_to_block_reduction_opportunity.h in Headers */, + A9F7B3B029425A1800B30DA7 /* spirv_target_env.h in Headers */, + A9F7B4F429425A1900B30DA7 /* loop_fusion.h in Headers */, + A9F7B4D329425A1900B30DA7 /* print.h in Headers */, + A9F7B3FE29425A1800B30DA7 /* structured_loop_to_selection_reduction_opportunity.h in Headers */, + A9F7B78B29425A1900B30DA7 /* dominator_tree.h in Headers */, + A9F7B6C229425A1900B30DA7 /* dead_branch_elim_pass.h in Headers */, + A9F7B76729425A1900B30DA7 /* ccp_pass.h in Headers */, + A9F7BCA429425A1B00B30DA7 /* validate.h in Headers */, + A9F7BC6529425A1B00B30DA7 /* construct.h in Headers */, + A9F7B6F829425A1900B30DA7 /* null_pass.h in Headers */, + A9F7B66B29425A1900B30DA7 /* constants.h in Headers */, + A9F7BC9229425A1B00B30DA7 /* validation_state.h in Headers */, + A9F7B73D29425A1900B30DA7 /* instruction.h in Headers */, + A9F7B72E29425A1900B30DA7 /* loop_unswitch_pass.h in Headers */, + A9F7B50C29425A1900B30DA7 /* tree_iterator.h in Headers */, + A9F7B3F229425A1800B30DA7 /* remove_struct_member_reduction_opportunity.h in Headers */, + A9F7BCB029425A1B00B30DA7 /* validate_scopes.h in Headers */, + A9F7B6D729425A1900B30DA7 /* passes.h in Headers */, + A9F7B60829425A1900B30DA7 /* interp_fixup_pass.h in Headers */, + A9F7BCB629425A1B00B30DA7 /* validate_memory_semantics.h in Headers */, + A9F7B39229425A1800B30DA7 /* hash_combine.h in Headers */, + A9F7B44029425A1800B30DA7 /* conditional_branch_to_simple_conditional_branch_opportunity_finder.h in Headers */, + A9F7B52429425A1900B30DA7 /* strip_debug_info_pass.h in Headers */, + A9F7B70729425A1900B30DA7 /* pch_source_opt.h in Headers */, + A9F7B41629425A1800B30DA7 /* merge_blocks_reduction_opportunity_finder.h in Headers */, + A9F7B46D29425A1800B30DA7 /* reduction_pass.h in Headers */, + A9F7B51529425A1900B30DA7 /* local_single_store_elim_pass.h in Headers */, + A9F7B47029425A1800B30DA7 /* latest_version_opencl_std_header.h in Headers */, + A9F7B3BC29425A1800B30DA7 /* remove_block_reduction_opportunity.h in Headers */, + A9F7B42B29425A1800B30DA7 /* remove_function_reduction_opportunity_finder.h in Headers */, + A9F7BC3E29425A1B00B30DA7 /* instruction.h in Headers */, + A9F7B6B629425A1900B30DA7 /* eliminate_dead_functions_pass.h in Headers */, + A9F7B39E29425A1800B30DA7 /* bit_vector.h in Headers */, + A9F7B35F29425A1800B30DA7 /* assembly_grammar.h in Headers */, + A9F7B65329425A1900B30DA7 /* loop_dependence.h in Headers */, + A9F7B3D729425A1800B30DA7 /* simple_conditional_branch_to_branch_reduction_opportunity.h in Headers */, + A9F7B6B329425A1900B30DA7 /* folding_rules.h in Headers */, + A9F7B63E29425A1900B30DA7 /* eliminate_dead_members_pass.h in Headers */, + A9F7B45229425A1800B30DA7 /* reduction_util.h in Headers */, + A9F7B79A29425A1900B30DA7 /* table.h in Headers */, + A9F7BC7A29425A1B00B30DA7 /* basic_block.h in Headers */, + A9F7B44C29425A1800B30DA7 /* remove_block_reduction_opportunity_finder.h in Headers */, + A9F7B5BA29425A1900B30DA7 /* remove_dontinline_pass.h in Headers */, + A9F7B3BF29425A1800B30DA7 /* operand_to_dominating_id_reduction_opportunity_finder.h in Headers */, + A9F7B49129425A1800B30DA7 /* operand.h in Headers */, + A9F7B4D929425A1900B30DA7 /* disassemble.h in Headers */, + A9F7B40429425A1800B30DA7 /* remove_unused_instruction_reduction_opportunity_finder.h in Headers */, + A9F7B65629425A1900B30DA7 /* value_number_table.h in Headers */, + A9F7B38F29425A1800B30DA7 /* small_vector.h in Headers */, + A9F7B69229425A1900B30DA7 /* log.h in Headers */, + A9F7B38629425A1800B30DA7 /* ilist_node.h in Headers */, + A9F7B77C29425A1900B30DA7 /* feature_manager.h in Headers */, + A9F7B68929425A1900B30DA7 /* loop_fission.h in Headers */, + A9F7B50F29425A1900B30DA7 /* interface_var_sroa.h in Headers */, + A9F7B76129425A1900B30DA7 /* licm_pass.h in Headers */, + A9F7B5B729425A1900B30DA7 /* convert_to_half_pass.h in Headers */, + A9F7B3D129425A1800B30DA7 /* structured_construct_to_block_reduction_opportunity_finder.h in Headers */, + A9F7B59029425A1900B30DA7 /* fold_spec_constant_op_and_composite_pass.h in Headers */, + A9F7B73129425A1900B30DA7 /* cfg.h in Headers */, + A9F7B40D29425A1800B30DA7 /* remove_selection_reduction_opportunity.h in Headers */, + A9F7BC4429425A1B00B30DA7 /* opcode.h in Headers */, + A9F7B65C29425A1900B30DA7 /* flatten_decoration_pass.h in Headers */, + A9F7B5B429425A1900B30DA7 /* private_to_local_pass.h in Headers */, + A9F7B5F929425A1900B30DA7 /* wrap_opkill.h in Headers */, + A9F7B37A29425A1800B30DA7 /* text.h in Headers */, + A9F7B38C29425A1800B30DA7 /* string_utils.h in Headers */, + A9F7B5A529425A1900B30DA7 /* debug_info_manager.h in Headers */, + A9F7B6CE29425A1900B30DA7 /* fix_storage_class.h in Headers */, + A9F7B69529425A1900B30DA7 /* copy_prop_arrays.h in Headers */, + A9F7B40729425A1800B30DA7 /* change_operand_to_undef_reduction_opportunity.h in Headers */, + A9F7B4A329425A1900B30DA7 /* lcs.h in Headers */, + A9F7B3AD29425A1800B30DA7 /* ilist.h in Headers */, + A9F7B40A29425A1800B30DA7 /* structured_loop_to_selection_reduction_opportunity_finder.h in Headers */, + A9F7BCE929425A1B00B30DA7 /* function.h in Headers */, + A9F7B69829425A1900B30DA7 /* eliminate_dead_constant_pass.h in Headers */, + A9F7B51829425A1900B30DA7 /* reduce_load_size.h in Headers */, + A9F7B78829425A1900B30DA7 /* set_spec_constant_default_value_pass.h in Headers */, + A9F7B4BE29425A1900B30DA7 /* diagnostic.h in Headers */, + A9F7B77F29425A1900B30DA7 /* dataflow.h in Headers */, + A9F7B45529425A1800B30DA7 /* merge_blocks_reduction_opportunity.h in Headers */, + A9F7B72229425A1900B30DA7 /* module.h in Headers */, + A9F7BC4129425A1B00B30DA7 /* spirv_optimizer_options.h in Headers */, + A9F7BC3229425A1B00B30DA7 /* ext_inst.h in Headers */, + A9F7B48229425A1800B30DA7 /* spirv_reducer_options.h in Headers */, + A9F7BCF529425A1B00B30DA7 /* decoration.h in Headers */, + A9F7B61129425A1900B30DA7 /* inst_buff_addr_check_pass.h in Headers */, + A9F7B75E29425A1900B30DA7 /* iterator.h in Headers */, + A9F7BC4A29425A1B00B30DA7 /* latest_version_glsl_std_450_header.h in Headers */, + A9F7B42E29425A1800B30DA7 /* pch_source_reduce.h in Headers */, + A9F7B4B529425A1900B30DA7 /* name_mapper.h in Headers */, + A9F7B57529425A1900B30DA7 /* liveness.h in Headers */, + A9F7B5D529425A1900B30DA7 /* local_redundancy_elimination.h in Headers */, + A9F7B3F529425A1800B30DA7 /* simple_conditional_branch_to_branch_opportunity_finder.h in Headers */, + A9F7B54B29425A1900B30DA7 /* instruction_list.h in Headers */, + A9F7B4A029425A1900B30DA7 /* diff.h in Headers */, + A9F7B63529425A1900B30DA7 /* instrument_pass.h in Headers */, + A9F7BC5329425A1B00B30DA7 /* binary.h in Headers */, + A9F7B65029425A1900B30DA7 /* inline_pass.h in Headers */, + A9F7B5EA29425A1900B30DA7 /* loop_fusion_pass.h in Headers */, + A9F7B6A429425A1900B30DA7 /* dead_variable_elimination.h in Headers */, + A9F7B78E29425A1900B30DA7 /* remove_unused_interface_variables_pass.h in Headers */, + A9F7B41F29425A1800B30DA7 /* remove_unused_struct_member_reduction_opportunity_finder.h in Headers */, + A9F7B6E329425A1900B30DA7 /* simplification_pass.h in Headers */, + A9F7B6E929425A1900B30DA7 /* remove_duplicates_pass.h in Headers */, + A9F7B60B29425A1900B30DA7 /* eliminate_dead_io_components_pass.h in Headers */, + A9F7B47C29425A1800B30DA7 /* enum_string_mapping.h in Headers */, + A9F7B3A429425A1800B30DA7 /* hex_float.h in Headers */, + A9F7B4A929425A1900B30DA7 /* spirv_validator_options.h in Headers */, + A9F7B6EC29425A1900B30DA7 /* desc_sroa_util.h in Headers */, + A9F7B41329425A1800B30DA7 /* remove_selection_reduction_opportunity_finder.h in Headers */, + A9F7B74F29425A1900B30DA7 /* pass_manager.h in Headers */, + A9F7B6AA29425A1900B30DA7 /* dominator_analysis.h in Headers */, + A9F7B48E29425A1800B30DA7 /* spirv_definition.h in Headers */, + A9F7B5DE29425A1900B30DA7 /* block_merge_util.h in Headers */, + A9F7B40129425A1800B30DA7 /* remove_function_reduction_opportunity.h in Headers */, + A9F7B43729425A1800B30DA7 /* reducer.h in Headers */, + A9F7B5C329425A1900B30DA7 /* def_use_manager.h in Headers */, + A9F7B79129425A1900B30DA7 /* type_manager.h in Headers */, + A9F7B4CA29425A1900B30DA7 /* common_debug_info.h in Headers */, + A9F7B5CC29425A1900B30DA7 /* cfg_cleanup_pass.h in Headers */, + A9F7B5E429425A1900B30DA7 /* desc_sroa.h in Headers */, + A9F7B60529425A1900B30DA7 /* local_single_block_elim_pass.h in Headers */, + A9F7B4C129425A1900B30DA7 /* spirv_endian.h in Headers */, + A9F7B70D29425A1900B30DA7 /* redundancy_elimination.h in Headers */, + A9F7B74C29425A1900B30DA7 /* combine_access_chains.h in Headers */, + A9F7BC3829425A1B00B30DA7 /* latest_version_spirv_header.h in Headers */, + A9F7B53929425A1900B30DA7 /* eliminate_dead_output_stores_pass.h in Headers */, + A9F7B75229425A1900B30DA7 /* spread_volatile_semantics.h in Headers */, + A9F7B72829425A1900B30DA7 /* ir_builder.h in Headers */, + A9F7B76429425A1900B30DA7 /* build_module.h in Headers */, + A9F7B66829425A1900B30DA7 /* inline_exhaustive_pass.h in Headers */, + A9F7B44629425A1800B30DA7 /* reduction_opportunity_finder.h in Headers */, + A9F7B36E29425A1800B30DA7 /* divergence_analysis.h in Headers */, + A9F7B67A29425A1900B30DA7 /* upgrade_memory_model.h in Headers */, + A9F7B3A129425A1800B30DA7 /* bitutils.h in Headers */, + A9F7B4B229425A1900B30DA7 /* parsed_operand.h in Headers */, + A9F7B49A29425A1800B30DA7 /* spirv_constant.h in Headers */, + A9F7B77029425A1900B30DA7 /* fix_func_call_arguments.h in Headers */, + A9F7B6B929425A1900B30DA7 /* eliminate_dead_functions_util.h in Headers */, + A9F7B57829425A1900B30DA7 /* loop_unroller.h in Headers */, + A9F7B69E29425A1900B30DA7 /* ssa_rewrite_pass.h in Headers */, + A9F7B54829425A1900B30DA7 /* propagator.h in Headers */, + A9F7B73A29425A1900B30DA7 /* loop_descriptor.h in Headers */, + A9F7B4EE29425A1900B30DA7 /* merge_return_pass.h in Headers */, + A9F7B5FC29425A1900B30DA7 /* empty_pass.h in Headers */, + A9F7B70129425A1900B30DA7 /* scalar_replacement_pass.h in Headers */, + A9F7B73429425A1900B30DA7 /* code_sink.h in Headers */, + A9F7B44929425A1800B30DA7 /* change_operand_reduction_opportunity.h in Headers */, + A9F7B68029425A1900B30DA7 /* analyze_live_input_pass.h in Headers */, + A9F7B47629425A1800B30DA7 /* cfa.h in Headers */, + A9F7B55A29425A1900B30DA7 /* amd_ext_to_khr.h in Headers */, + A9F7B5FF29425A1900B30DA7 /* decoration_manager.h in Headers */, + A9F7B5D829425A1900B30DA7 /* loop_peeling.h in Headers */, + A9F7B52729425A1900B30DA7 /* replace_desc_array_access_using_var_index.h in Headers */, + A9F7B6F229425A1900B30DA7 /* reflect.h in Headers */, + A9F7B50629425A1900B30DA7 /* compact_ids_pass.h in Headers */, + A9F7B49729425A1800B30DA7 /* macro.h in Headers */, + A9F7B39829425A1800B30DA7 /* timer.h in Headers */, + A9F7BC4D29425A1B00B30DA7 /* extensions.h in Headers */, + A9F7B63829425A1900B30DA7 /* mem_pass.h in Headers */, + A9F7B53C29425A1900B30DA7 /* local_access_chain_convert_pass.h in Headers */, + A9F7B3DD29425A1800B30DA7 /* remove_instruction_reduction_opportunity.h in Headers */, + A9F7B56629425A1900B30DA7 /* control_dependence.h in Headers */, + A9F7B58729425A1900B30DA7 /* ir_loader.h in Headers */, + A9F7B3E029425A1800B30DA7 /* conditional_branch_to_simple_conditional_branch_reduction_opportunity.h in Headers */, + A9F7B68C29425A1900B30DA7 /* workaround1209.h in Headers */, + A9F7B50929425A1900B30DA7 /* register_pressure.h in Headers */, + A9F7B3B629425A1800B30DA7 /* operand_to_undef_reduction_opportunity_finder.h in Headers */, + A9F7B5ED29425A1900B30DA7 /* struct_cfg_analysis.h in Headers */, + A9F7B35C29425A1800B30DA7 /* spirv_fuzzer_options.h in Headers */, + A9F7B6FE29425A1900B30DA7 /* const_folding_rules.h in Headers */, + A9F7B78229425A1900B30DA7 /* inst_bindless_check_pass.h in Headers */, + A9F7B74029425A1900B30DA7 /* aggressive_dead_code_elim_pass.h in Headers */, + A9F7B4DF29425A1900B30DA7 /* if_conversion.h in Headers */, ); runOnlyForDeploymentPostprocessing = 0; }; @@ -3526,203 +3666,213 @@ isa = PBXHeadersBuildPhase; buildActionMask = 2147483647; files = ( - A926BB6927AC718A00144157 /* loop_descriptor.h in Headers */, - A926B89F27AC718900144157 /* reduction_opportunity_finder.h in Headers */, - A926BB8A27AC718A00144157 /* iterator.h in Headers */, - A926BA0727AC718A00144157 /* cfg_cleanup_pass.h in Headers */, - A926BA5527AC718A00144157 /* inst_debug_printf_pass.h in Headers */, - A926BA6127AC718A00144157 /* dead_insert_elim_pass.h in Headers */, - A926BB9927AC718A00144157 /* function.h in Headers */, - A926BB5D27AC718A00144157 /* loop_unswitch_pass.h in Headers */, - A926B9CE27AC718A00144157 /* fold_spec_constant_op_and_composite_pass.h in Headers */, - A926B95927AC718900144157 /* graphics_robust_access_pass.h in Headers */, - A926BBA227AC718A00144157 /* feature_manager.h in Headers */, - A926BB0927AC718A00144157 /* passes.h in Headers */, - A926B80F27AC718900144157 /* operand_to_undef_reduction_opportunity_finder.h in Headers */, - A926B7DF27AC718900144157 /* parse_number.h in Headers */, - A926B83027AC718900144157 /* simple_conditional_branch_to_branch_reduction_opportunity.h in Headers */, - A926B9AA27AC718900144157 /* control_dependence.h in Headers */, - A926B7F727AC718900144157 /* bit_vector.h in Headers */, - A926B96B27AC718900144157 /* strip_debug_info_pass.h in Headers */, - A926B9F227AC718A00144157 /* private_to_local_pass.h in Headers */, - A926B96827AC718900144157 /* scalar_analysis.h in Headers */, - A926B82427AC718900144157 /* operand_to_const_reduction_opportunity_finder.h in Headers */, - A926B86F27AC718900144157 /* merge_blocks_reduction_opportunity_finder.h in Headers */, - A926BABB27AC718A00144157 /* loop_fission.h in Headers */, - A926BACA27AC718A00144157 /* eliminate_dead_constant_pass.h in Headers */, - A926B8FF27AC718900144157 /* text_handler.h in Headers */, - A926B80627AC718900144157 /* ilist.h in Headers */, - A926B9F527AC718A00144157 /* convert_to_half_pass.h in Headers */, - A926BB1827AC718A00144157 /* remove_duplicates_pass.h in Headers */, - A926BB1527AC718A00144157 /* simplification_pass.h in Headers */, - A926B7E527AC718900144157 /* make_unique.h in Headers */, - A926BB3627AC718A00144157 /* pch_source_opt.h in Headers */, - A926BA6D27AC718A00144157 /* instrument_pass.h in Headers */, - A926B8C627AC718900144157 /* reduction_pass.h in Headers */, - A926B97D27AC718900144157 /* replace_invalid_opc.h in Headers */, - A926C0F427AC718C00144157 /* instruction.h in Headers */, - A926B84B27AC718900144157 /* remove_struct_member_reduction_opportunity.h in Headers */, - A926BA8827AC718A00144157 /* inline_pass.h in Headers */, - A926B7FD27AC718900144157 /* hex_float.h in Headers */, - A926B94127AC718900144157 /* inline_opaque_pass.h in Headers */, - A926BB9327AC718A00144157 /* ccp_pass.h in Headers */, - A926BB4E27AC718A00144157 /* loop_utils.h in Headers */, - A926B88427AC718900144157 /* remove_function_reduction_opportunity_finder.h in Headers */, - A926B7CD27AC718900144157 /* enum_set.h in Headers */, - A926BAA027AC718A00144157 /* constants.h in Headers */, - A926B9E327AC718A00144157 /* debug_info_manager.h in Headers */, - A926B7C727AC718900144157 /* lints.h in Headers */, - A926BBC027AC718A00144157 /* table.h in Headers */, - A926BADC27AC718A00144157 /* dominator_analysis.h in Headers */, - A926B89927AC718900144157 /* conditional_branch_to_simple_conditional_branch_opportunity_finder.h in Headers */, - A926B90E27AC718900144157 /* diagnostic.h in Headers */, - A926BAD027AC718A00144157 /* ssa_rewrite_pass.h in Headers */, - A926BA3A27AC718A00144157 /* decoration_manager.h in Headers */, - A926BAEB27AC718A00144157 /* eliminate_dead_functions_util.h in Headers */, - A926BAC427AC718A00144157 /* log.h in Headers */, - A926BB5727AC718A00144157 /* ir_builder.h in Headers */, - A926BB0027AC718A00144157 /* fix_storage_class.h in Headers */, - A926B96E27AC718900144157 /* replace_desc_array_access_using_var_index.h in Headers */, - A926BB2727AC718A00144157 /* null_pass.h in Headers */, - A926BA4327AC718A00144157 /* interp_fixup_pass.h in Headers */, - A926B8C927AC718900144157 /* latest_version_opencl_std_header.h in Headers */, - A926B90527AC718900144157 /* name_mapper.h in Headers */, - A926BB5127AC718A00144157 /* module.h in Headers */, - A926B8D527AC718900144157 /* enum_string_mapping.h in Headers */, - A926B7BB27AC718900144157 /* assembly_grammar.h in Headers */, - A926C05827AC718C00144157 /* ext_inst.h in Headers */, - A926B7EB27AC718900144157 /* small_vector.h in Headers */, - A926BB2D27AC718A00144157 /* const_folding_rules.h in Headers */, - A926BA9427AC718A00144157 /* flatten_decoration_pass.h in Headers */, - A926B9C527AC718900144157 /* ir_loader.h in Headers */, - A926BA1027AC718A00144157 /* local_redundancy_elimination.h in Headers */, - A926B81527AC718900144157 /* remove_block_reduction_opportunity.h in Headers */, - A926C0CD27AC718C00144157 /* validate_scopes.h in Headers */, - A926B8A527AC718900144157 /* remove_block_reduction_opportunity_finder.h in Headers */, - A926B89627AC718900144157 /* reduction_opportunity.h in Headers */, - A926B86027AC718900144157 /* change_operand_to_undef_reduction_opportunity.h in Headers */, - A926B85A27AC718900144157 /* remove_function_reduction_opportunity.h in Headers */, - A926C06727AC718C00144157 /* spirv_optimizer_options.h in Headers */, - A926B98027AC718900144157 /* local_access_chain_convert_pass.h in Headers */, - A926B8F927AC718900144157 /* spirv_validator_options.h in Headers */, - A926B80927AC718900144157 /* spirv_target_env.h in Headers */, - A926B9DD27AC718A00144157 /* block_merge_pass.h in Headers */, - A926C07027AC718C00144157 /* latest_version_glsl_std_450_header.h in Headers */, - A926B7F127AC718900144157 /* timer.h in Headers */, - A926B86327AC718900144157 /* structured_loop_to_selection_reduction_opportunity_finder.h in Headers */, - A926B87827AC718900144157 /* remove_unused_struct_member_reduction_opportunity_finder.h in Headers */, - A926C08B27AC718C00144157 /* construct.h in Headers */, - A926BABE27AC718A00144157 /* workaround1209.h in Headers */, - A926BAF427AC718A00144157 /* dead_branch_elim_pass.h in Headers */, - A926BBAE27AC718A00144157 /* set_spec_constant_default_value_pass.h in Headers */, - A926B86C27AC718900144157 /* remove_selection_reduction_opportunity_finder.h in Headers */, - A926BBA827AC718A00144157 /* inst_bindless_check_pass.h in Headers */, - A926BB9027AC718A00144157 /* build_module.h in Headers */, - A926B9FE27AC718A00144157 /* def_use_manager.h in Headers */, - A926BAE827AC718A00144157 /* eliminate_dead_functions_pass.h in Headers */, - A926B94427AC718900144157 /* loop_fusion.h in Headers */, - A926B98F27AC718900144157 /* instruction_list.h in Headers */, - A926B94D27AC718900144157 /* composite.h in Headers */, - A926B92327AC718900144157 /* print.h in Headers */, - A926B7FA27AC718900144157 /* bitutils.h in Headers */, - A926BA2527AC718A00144157 /* loop_fusion_pass.h in Headers */, - A926B91A27AC718900144157 /* common_debug_info.h in Headers */, - A926C0C127AC718C00144157 /* validate.h in Headers */, - A926BA2827AC718A00144157 /* struct_cfg_analysis.h in Headers */, - A926B8D227AC718900144157 /* pch_source.h in Headers */, - A926B83627AC718900144157 /* remove_instruction_reduction_opportunity.h in Headers */, - A926B7E227AC718900144157 /* ilist_node.h in Headers */, - A926B95627AC718900144157 /* tree_iterator.h in Headers */, - A926B95027AC718900144157 /* compact_ids_pass.h in Headers */, - A926BAE527AC718A00144157 /* folding_rules.h in Headers */, - A926B8AB27AC718900144157 /* reduction_util.h in Headers */, - A926B88727AC718900144157 /* pch_source_reduce.h in Headers */, - A926BB7E27AC718A00144157 /* spread_volatile_semantics.h in Headers */, - A926BA0427AC718A00144157 /* convert_to_sampled_image_pass.h in Headers */, - A926BA1327AC718A00144157 /* loop_peeling.h in Headers */, - A926C07327AC718C00144157 /* extensions.h in Headers */, - A926BA8B27AC718A00144157 /* loop_dependence.h in Headers */, - A926B8A227AC718900144157 /* change_operand_reduction_opportunity.h in Headers */, - A926B9F827AC718A00144157 /* relax_float_ops_pass.h in Headers */, - A926BA7627AC718A00144157 /* eliminate_dead_members_pass.h in Headers */, - A926B7D627AC718900144157 /* text.h in Headers */, - A926BA3427AC718A00144157 /* wrap_opkill.h in Headers */, - A926B81827AC718900144157 /* operand_to_dominating_id_reduction_opportunity_finder.h in Headers */, - A926C05E27AC718C00144157 /* latest_version_spirv_header.h in Headers */, - A926B90227AC718900144157 /* parsed_operand.h in Headers */, - A926BB2127AC718A00144157 /* reflect.h in Headers */, - A926C0AF27AC718C00144157 /* validation_state.h in Headers */, - A926B8CF27AC718900144157 /* cfa.h in Headers */, - A926B81E27AC718900144157 /* structured_construct_to_block_reduction_opportunity.h in Headers */, - A926C06427AC718C00144157 /* instruction.h in Headers */, - A926BBB427AC718A00144157 /* remove_unused_interface_variables_pass.h in Headers */, - A926BB6C27AC718A00144157 /* instruction.h in Headers */, - A926C06A27AC718C00144157 /* opcode.h in Headers */, - A926B84E27AC718900144157 /* simple_conditional_branch_to_branch_opportunity_finder.h in Headers */, - A926B9A427AC718900144157 /* ir_context.h in Headers */, - A926B8E727AC718900144157 /* spirv_definition.h in Headers */, - A926BAC727AC718A00144157 /* copy_prop_arrays.h in Headers */, - A926BB6327AC718A00144157 /* code_sink.h in Headers */, - A926B7E827AC718900144157 /* string_utils.h in Headers */, - A926BB7527AC718A00144157 /* vector_dce.h in Headers */, - A926BA7027AC718A00144157 /* mem_pass.h in Headers */, - A926B7CA27AC718900144157 /* divergence_analysis.h in Headers */, - A926BAE227AC718A00144157 /* pass.h in Headers */, - A926B89027AC718900144157 /* reducer.h in Headers */, - A926B7B827AC718900144157 /* spirv_fuzzer_options.h in Headers */, - A926B8F327AC718900144157 /* spirv_constant.h in Headers */, - A926BB3027AC718A00144157 /* scalar_replacement_pass.h in Headers */, - A926BAD627AC718A00144157 /* dead_variable_elimination.h in Headers */, - A926B9B627AC718900144157 /* loop_unroller.h in Headers */, - A926C10327AC718C00144157 /* function.h in Headers */, - A926B8AE27AC718900144157 /* merge_blocks_reduction_opportunity.h in Headers */, - A926BB6027AC718A00144157 /* cfg.h in Headers */, - A926B93827AC718900144157 /* strip_nonsemantic_info_pass.h in Headers */, - A926C07927AC718C00144157 /* binary.h in Headers */, - A926B82A27AC718900144157 /* structured_construct_to_block_reduction_opportunity_finder.h in Headers */, - A926BBA527AC718A00144157 /* dataflow.h in Headers */, - A926C09A27AC718C00144157 /* basic_block.h in Headers */, - A926BAFA27AC718A00144157 /* scalar_analysis_nodes.h in Headers */, - A926B9CB27AC718900144157 /* types.h in Headers */, - A926C10F27AC718C00144157 /* decoration.h in Headers */, - A926BA8E27AC718A00144157 /* value_number_table.h in Headers */, - A926B85727AC718900144157 /* structured_loop_to_selection_reduction_opportunity.h in Headers */, - A926B92F27AC718900144157 /* if_conversion.h in Headers */, - A926B86627AC718900144157 /* remove_selection_reduction_opportunity.h in Headers */, - A926B8DB27AC718900144157 /* spirv_reducer_options.h in Headers */, - A926B91127AC718900144157 /* spirv_endian.h in Headers */, - A926BB6F27AC718A00144157 /* aggressive_dead_code_elim_pass.h in Headers */, - A926BB3C27AC718A00144157 /* redundancy_elimination.h in Headers */, - A926C0D327AC718C00144157 /* validate_memory_semantics.h in Headers */, - A926BAEE27AC718A00144157 /* fold.h in Headers */, - A926B85D27AC718900144157 /* remove_unused_instruction_reduction_opportunity_finder.h in Headers */, - A926BB7827AC718A00144157 /* combine_access_chains.h in Headers */, - A926BB1B27AC718A00144157 /* desc_sroa_util.h in Headers */, - A926BA1F27AC718A00144157 /* desc_sroa.h in Headers */, - A926B95327AC718900144157 /* register_pressure.h in Headers */, - A926BA3727AC718A00144157 /* empty_pass.h in Headers */, - A926B95C27AC718900144157 /* local_single_store_elim_pass.h in Headers */, - A926BA9D27AC718A00144157 /* inline_exhaustive_pass.h in Headers */, - A926BBB727AC718A00144157 /* type_manager.h in Headers */, - A926BA4C27AC718A00144157 /* strength_reduction_pass.h in Headers */, - A926B98C27AC718900144157 /* propagator.h in Headers */, - A926B83927AC718900144157 /* conditional_branch_to_simple_conditional_branch_reduction_opportunity.h in Headers */, - A926BA4027AC718A00144157 /* local_single_block_elim_pass.h in Headers */, - A926BB7B27AC718A00144157 /* pass_manager.h in Headers */, - A926BA6727AC718A00144157 /* freeze_spec_constant_value_pass.h in Headers */, - A926B93E27AC718900144157 /* merge_return_pass.h in Headers */, - A926B92927AC718900144157 /* disassemble.h in Headers */, - A926BA4927AC718A00144157 /* inst_buff_addr_check_pass.h in Headers */, - A926B99E27AC718900144157 /* amd_ext_to_khr.h in Headers */, - A926B95F27AC718900144157 /* reduce_load_size.h in Headers */, - A926BA1927AC718A00144157 /* block_merge_util.h in Headers */, - A926BB8D27AC718A00144157 /* licm_pass.h in Headers */, - A926B9C227AC718900144157 /* unify_const_pass.h in Headers */, - A926BBB127AC718A00144157 /* dominator_tree.h in Headers */, - A926BAAF27AC718A00144157 /* upgrade_memory_model.h in Headers */, - A926B8EA27AC718900144157 /* operand.h in Headers */, - A926B8F027AC718900144157 /* macro.h in Headers */, - A926B9D427AC718A00144157 /* basic_block.h in Headers */, + A9F7B53829425A1900B30DA7 /* replace_invalid_opc.h in Headers */, + A9F7B5CB29425A1900B30DA7 /* convert_to_sampled_image_pass.h in Headers */, + A9F7B4B129425A1900B30DA7 /* text_handler.h in Headers */, + A9F7B58F29425A1900B30DA7 /* types.h in Headers */, + A9F7B62B29425A1900B30DA7 /* dead_insert_elim_pass.h in Headers */, + A9F7B38529425A1800B30DA7 /* parse_number.h in Headers */, + A9F7B38B29425A1800B30DA7 /* make_unique.h in Headers */, + A9F7B76F29425A1900B30DA7 /* function.h in Headers */, + A9F7B61F29425A1900B30DA7 /* inst_debug_printf_pass.h in Headers */, + A9F7B5A129425A1900B30DA7 /* block_merge_pass.h in Headers */, + A9F7B52329425A1900B30DA7 /* scalar_analysis.h in Headers */, + A9F7B50229425A1900B30DA7 /* composite.h in Headers */, + A9F7B37329425A1800B30DA7 /* enum_set.h in Headers */, + A9F7B36D29425A1800B30DA7 /* lints.h in Headers */, + A9F7B63129425A1900B30DA7 /* freeze_spec_constant_value_pass.h in Headers */, + A9F7B43F29425A1800B30DA7 /* reduction_opportunity.h in Headers */, + A9F7B56229425A1900B30DA7 /* ir_context.h in Headers */, + A9F7B72129425A1900B30DA7 /* loop_utils.h in Headers */, + A9F7B5BF29425A1900B30DA7 /* relax_float_ops_pass.h in Headers */, + A9F7B6B229425A1900B30DA7 /* pass.h in Headers */, + A9F7B4F329425A1900B30DA7 /* inline_opaque_pass.h in Headers */, + A9F7B61629425A1900B30DA7 /* strength_reduction_pass.h in Headers */, + A9F7B47B29425A1800B30DA7 /* pch_source.h in Headers */, + A9F7B51429425A1900B30DA7 /* graphics_robust_access_pass.h in Headers */, + A9F7B6CA29425A1900B30DA7 /* scalar_analysis_nodes.h in Headers */, + A9F7B3CD29425A1800B30DA7 /* operand_to_const_reduction_opportunity_finder.h in Headers */, + A9F7B59829425A1900B30DA7 /* basic_block.h in Headers */, + A9F7B4EA29425A1900B30DA7 /* strip_nonsemantic_info_pass.h in Headers */, + A9F7B6BE29425A1900B30DA7 /* fold.h in Headers */, + A9F7BCD929425A1B00B30DA7 /* instruction.h in Headers */, + A9F7B58629425A1900B30DA7 /* unify_const_pass.h in Headers */, + A9F7B74B29425A1900B30DA7 /* vector_dce.h in Headers */, + A9F7B3C729425A1800B30DA7 /* structured_construct_to_block_reduction_opportunity.h in Headers */, + A9F7B3B229425A1800B30DA7 /* spirv_target_env.h in Headers */, + A9F7B4F629425A1900B30DA7 /* loop_fusion.h in Headers */, + A9F7B4D529425A1900B30DA7 /* print.h in Headers */, + A9F7B40029425A1800B30DA7 /* structured_loop_to_selection_reduction_opportunity.h in Headers */, + A9F7B78D29425A1900B30DA7 /* dominator_tree.h in Headers */, + A9F7B6C429425A1900B30DA7 /* dead_branch_elim_pass.h in Headers */, + A9F7B76929425A1900B30DA7 /* ccp_pass.h in Headers */, + A9F7BCA629425A1B00B30DA7 /* validate.h in Headers */, + A9F7BC6729425A1B00B30DA7 /* construct.h in Headers */, + A9F7B6FA29425A1900B30DA7 /* null_pass.h in Headers */, + A9F7B66D29425A1900B30DA7 /* constants.h in Headers */, + A9F7BC9429425A1B00B30DA7 /* validation_state.h in Headers */, + A9F7B73F29425A1900B30DA7 /* instruction.h in Headers */, + A9F7B73029425A1900B30DA7 /* loop_unswitch_pass.h in Headers */, + A9F7B50E29425A1900B30DA7 /* tree_iterator.h in Headers */, + A9F7B3F429425A1800B30DA7 /* remove_struct_member_reduction_opportunity.h in Headers */, + A9F7BCB229425A1B00B30DA7 /* validate_scopes.h in Headers */, + A9F7B6D929425A1900B30DA7 /* passes.h in Headers */, + A9F7B60A29425A1900B30DA7 /* interp_fixup_pass.h in Headers */, + A9F7BCB829425A1B00B30DA7 /* validate_memory_semantics.h in Headers */, + A9F7B39429425A1800B30DA7 /* hash_combine.h in Headers */, + A9F7B44229425A1800B30DA7 /* conditional_branch_to_simple_conditional_branch_opportunity_finder.h in Headers */, + A9F7B52629425A1900B30DA7 /* strip_debug_info_pass.h in Headers */, + A9F7B70929425A1900B30DA7 /* pch_source_opt.h in Headers */, + A9F7B41829425A1800B30DA7 /* merge_blocks_reduction_opportunity_finder.h in Headers */, + A9F7B46F29425A1800B30DA7 /* reduction_pass.h in Headers */, + A9F7B51729425A1900B30DA7 /* local_single_store_elim_pass.h in Headers */, + A9F7B47229425A1800B30DA7 /* latest_version_opencl_std_header.h in Headers */, + A9F7B3BE29425A1800B30DA7 /* remove_block_reduction_opportunity.h in Headers */, + A9F7B42D29425A1800B30DA7 /* remove_function_reduction_opportunity_finder.h in Headers */, + A9F7BC4029425A1B00B30DA7 /* instruction.h in Headers */, + A9F7B6B829425A1900B30DA7 /* eliminate_dead_functions_pass.h in Headers */, + A9F7B3A029425A1800B30DA7 /* bit_vector.h in Headers */, + A9F7B36129425A1800B30DA7 /* assembly_grammar.h in Headers */, + A9F7B65529425A1900B30DA7 /* loop_dependence.h in Headers */, + A9F7B3D929425A1800B30DA7 /* simple_conditional_branch_to_branch_reduction_opportunity.h in Headers */, + A9F7B6B529425A1900B30DA7 /* folding_rules.h in Headers */, + A9F7B64029425A1900B30DA7 /* eliminate_dead_members_pass.h in Headers */, + A9F7B45429425A1800B30DA7 /* reduction_util.h in Headers */, + A9F7B79C29425A1900B30DA7 /* table.h in Headers */, + A9F7BC7C29425A1B00B30DA7 /* basic_block.h in Headers */, + A9F7B44E29425A1800B30DA7 /* remove_block_reduction_opportunity_finder.h in Headers */, + A9F7B5BC29425A1900B30DA7 /* remove_dontinline_pass.h in Headers */, + A9F7B3C129425A1800B30DA7 /* operand_to_dominating_id_reduction_opportunity_finder.h in Headers */, + A9F7B49329425A1800B30DA7 /* operand.h in Headers */, + A9F7B4DB29425A1900B30DA7 /* disassemble.h in Headers */, + A9F7B40629425A1800B30DA7 /* remove_unused_instruction_reduction_opportunity_finder.h in Headers */, + A9F7B65829425A1900B30DA7 /* value_number_table.h in Headers */, + A9F7B39129425A1800B30DA7 /* small_vector.h in Headers */, + A9F7B69429425A1900B30DA7 /* log.h in Headers */, + A9F7B38829425A1800B30DA7 /* ilist_node.h in Headers */, + A9F7B77E29425A1900B30DA7 /* feature_manager.h in Headers */, + A9F7B68B29425A1900B30DA7 /* loop_fission.h in Headers */, + A9F7B51129425A1900B30DA7 /* interface_var_sroa.h in Headers */, + A9F7B76329425A1900B30DA7 /* licm_pass.h in Headers */, + A9F7B5B929425A1900B30DA7 /* convert_to_half_pass.h in Headers */, + A9F7B3D329425A1800B30DA7 /* structured_construct_to_block_reduction_opportunity_finder.h in Headers */, + A9F7B59229425A1900B30DA7 /* fold_spec_constant_op_and_composite_pass.h in Headers */, + A9F7B73329425A1900B30DA7 /* cfg.h in Headers */, + A9F7B40F29425A1800B30DA7 /* remove_selection_reduction_opportunity.h in Headers */, + A9F7BC4629425A1B00B30DA7 /* opcode.h in Headers */, + A9F7B65E29425A1900B30DA7 /* flatten_decoration_pass.h in Headers */, + A9F7B5B629425A1900B30DA7 /* private_to_local_pass.h in Headers */, + A9F7B5FB29425A1900B30DA7 /* wrap_opkill.h in Headers */, + A9F7B37C29425A1800B30DA7 /* text.h in Headers */, + A9F7B38E29425A1800B30DA7 /* string_utils.h in Headers */, + A9F7B5A729425A1900B30DA7 /* debug_info_manager.h in Headers */, + A9F7B6D029425A1900B30DA7 /* fix_storage_class.h in Headers */, + A9F7B69729425A1900B30DA7 /* copy_prop_arrays.h in Headers */, + A9F7B40929425A1800B30DA7 /* change_operand_to_undef_reduction_opportunity.h in Headers */, + A9F7B4A529425A1900B30DA7 /* lcs.h in Headers */, + A9F7B3AF29425A1800B30DA7 /* ilist.h in Headers */, + A9F7B40C29425A1800B30DA7 /* structured_loop_to_selection_reduction_opportunity_finder.h in Headers */, + A9F7BCEB29425A1B00B30DA7 /* function.h in Headers */, + A9F7B69A29425A1900B30DA7 /* eliminate_dead_constant_pass.h in Headers */, + A9F7B51A29425A1900B30DA7 /* reduce_load_size.h in Headers */, + A9F7B78A29425A1900B30DA7 /* set_spec_constant_default_value_pass.h in Headers */, + A9F7B4C029425A1900B30DA7 /* diagnostic.h in Headers */, + A9F7B78129425A1900B30DA7 /* dataflow.h in Headers */, + A9F7B45729425A1800B30DA7 /* merge_blocks_reduction_opportunity.h in Headers */, + A9F7B72429425A1900B30DA7 /* module.h in Headers */, + A9F7BC4329425A1B00B30DA7 /* spirv_optimizer_options.h in Headers */, + A9F7BC3429425A1B00B30DA7 /* ext_inst.h in Headers */, + A9F7B48429425A1800B30DA7 /* spirv_reducer_options.h in Headers */, + A9F7BCF729425A1B00B30DA7 /* decoration.h in Headers */, + A9F7B61329425A1900B30DA7 /* inst_buff_addr_check_pass.h in Headers */, + A9F7B76029425A1900B30DA7 /* iterator.h in Headers */, + A9F7BC4C29425A1B00B30DA7 /* latest_version_glsl_std_450_header.h in Headers */, + A9F7B43029425A1800B30DA7 /* pch_source_reduce.h in Headers */, + A9F7B4B729425A1900B30DA7 /* name_mapper.h in Headers */, + A9F7B57729425A1900B30DA7 /* liveness.h in Headers */, + A9F7B5D729425A1900B30DA7 /* local_redundancy_elimination.h in Headers */, + A9F7B3F729425A1800B30DA7 /* simple_conditional_branch_to_branch_opportunity_finder.h in Headers */, + A9F7B54D29425A1900B30DA7 /* instruction_list.h in Headers */, + A9F7B4A229425A1900B30DA7 /* diff.h in Headers */, + A9F7B63729425A1900B30DA7 /* instrument_pass.h in Headers */, + A9F7BC5529425A1B00B30DA7 /* binary.h in Headers */, + A9F7B65229425A1900B30DA7 /* inline_pass.h in Headers */, + A9F7B5EC29425A1900B30DA7 /* loop_fusion_pass.h in Headers */, + A9F7B6A629425A1900B30DA7 /* dead_variable_elimination.h in Headers */, + A9F7B79029425A1900B30DA7 /* remove_unused_interface_variables_pass.h in Headers */, + A9F7B42129425A1800B30DA7 /* remove_unused_struct_member_reduction_opportunity_finder.h in Headers */, + A9F7B6E529425A1900B30DA7 /* simplification_pass.h in Headers */, + A9F7B6EB29425A1900B30DA7 /* remove_duplicates_pass.h in Headers */, + A9F7B60D29425A1900B30DA7 /* eliminate_dead_io_components_pass.h in Headers */, + A9F7B47E29425A1800B30DA7 /* enum_string_mapping.h in Headers */, + A9F7B3A629425A1800B30DA7 /* hex_float.h in Headers */, + A9F7B4AB29425A1900B30DA7 /* spirv_validator_options.h in Headers */, + A9F7B6EE29425A1900B30DA7 /* desc_sroa_util.h in Headers */, + A9F7B41529425A1800B30DA7 /* remove_selection_reduction_opportunity_finder.h in Headers */, + A9F7B75129425A1900B30DA7 /* pass_manager.h in Headers */, + A9F7B6AC29425A1900B30DA7 /* dominator_analysis.h in Headers */, + A9F7B49029425A1800B30DA7 /* spirv_definition.h in Headers */, + A9F7B5E029425A1900B30DA7 /* block_merge_util.h in Headers */, + A9F7B40329425A1800B30DA7 /* remove_function_reduction_opportunity.h in Headers */, + A9F7B43929425A1800B30DA7 /* reducer.h in Headers */, + A9F7B5C529425A1900B30DA7 /* def_use_manager.h in Headers */, + A9F7B79329425A1900B30DA7 /* type_manager.h in Headers */, + A9F7B4CC29425A1900B30DA7 /* common_debug_info.h in Headers */, + A9F7B5CE29425A1900B30DA7 /* cfg_cleanup_pass.h in Headers */, + A9F7B5E629425A1900B30DA7 /* desc_sroa.h in Headers */, + A9F7B60729425A1900B30DA7 /* local_single_block_elim_pass.h in Headers */, + A9F7B4C329425A1900B30DA7 /* spirv_endian.h in Headers */, + A9F7B70F29425A1900B30DA7 /* redundancy_elimination.h in Headers */, + A9F7B74E29425A1900B30DA7 /* combine_access_chains.h in Headers */, + A9F7BC3A29425A1B00B30DA7 /* latest_version_spirv_header.h in Headers */, + A9F7B53B29425A1900B30DA7 /* eliminate_dead_output_stores_pass.h in Headers */, + A9F7B75429425A1900B30DA7 /* spread_volatile_semantics.h in Headers */, + A9F7B72A29425A1900B30DA7 /* ir_builder.h in Headers */, + A9F7B76629425A1900B30DA7 /* build_module.h in Headers */, + A9F7B66A29425A1900B30DA7 /* inline_exhaustive_pass.h in Headers */, + A9F7B44829425A1800B30DA7 /* reduction_opportunity_finder.h in Headers */, + A9F7B37029425A1800B30DA7 /* divergence_analysis.h in Headers */, + A9F7B67C29425A1900B30DA7 /* upgrade_memory_model.h in Headers */, + A9F7B3A329425A1800B30DA7 /* bitutils.h in Headers */, + A9F7B4B429425A1900B30DA7 /* parsed_operand.h in Headers */, + A9F7B49C29425A1900B30DA7 /* spirv_constant.h in Headers */, + A9F7B77229425A1900B30DA7 /* fix_func_call_arguments.h in Headers */, + A9F7B6BB29425A1900B30DA7 /* eliminate_dead_functions_util.h in Headers */, + A9F7B57A29425A1900B30DA7 /* loop_unroller.h in Headers */, + A9F7B6A029425A1900B30DA7 /* ssa_rewrite_pass.h in Headers */, + A9F7B54A29425A1900B30DA7 /* propagator.h in Headers */, + A9F7B73C29425A1900B30DA7 /* loop_descriptor.h in Headers */, + A9F7B4F029425A1900B30DA7 /* merge_return_pass.h in Headers */, + A9F7B5FE29425A1900B30DA7 /* empty_pass.h in Headers */, + A9F7B70329425A1900B30DA7 /* scalar_replacement_pass.h in Headers */, + A9F7B73629425A1900B30DA7 /* code_sink.h in Headers */, + A9F7B44B29425A1800B30DA7 /* change_operand_reduction_opportunity.h in Headers */, + A9F7B68229425A1900B30DA7 /* analyze_live_input_pass.h in Headers */, + A9F7B47829425A1800B30DA7 /* cfa.h in Headers */, + A9F7B55C29425A1900B30DA7 /* amd_ext_to_khr.h in Headers */, + A9F7B60129425A1900B30DA7 /* decoration_manager.h in Headers */, + A9F7B5DA29425A1900B30DA7 /* loop_peeling.h in Headers */, + A9F7B52929425A1900B30DA7 /* replace_desc_array_access_using_var_index.h in Headers */, + A9F7B6F429425A1900B30DA7 /* reflect.h in Headers */, + A9F7B50829425A1900B30DA7 /* compact_ids_pass.h in Headers */, + A9F7B49929425A1800B30DA7 /* macro.h in Headers */, + A9F7B39A29425A1800B30DA7 /* timer.h in Headers */, + A9F7BC4F29425A1B00B30DA7 /* extensions.h in Headers */, + A9F7B63A29425A1900B30DA7 /* mem_pass.h in Headers */, + A9F7B53E29425A1900B30DA7 /* local_access_chain_convert_pass.h in Headers */, + A9F7B3DF29425A1800B30DA7 /* remove_instruction_reduction_opportunity.h in Headers */, + A9F7B56829425A1900B30DA7 /* control_dependence.h in Headers */, + A9F7B58929425A1900B30DA7 /* ir_loader.h in Headers */, + A9F7B3E229425A1800B30DA7 /* conditional_branch_to_simple_conditional_branch_reduction_opportunity.h in Headers */, + A9F7B68E29425A1900B30DA7 /* workaround1209.h in Headers */, + A9F7B50B29425A1900B30DA7 /* register_pressure.h in Headers */, + A9F7B3B829425A1800B30DA7 /* operand_to_undef_reduction_opportunity_finder.h in Headers */, + A9F7B5EF29425A1900B30DA7 /* struct_cfg_analysis.h in Headers */, + A9F7B35E29425A1800B30DA7 /* spirv_fuzzer_options.h in Headers */, + A9F7B70029425A1900B30DA7 /* const_folding_rules.h in Headers */, + A9F7B78429425A1900B30DA7 /* inst_bindless_check_pass.h in Headers */, + A9F7B74229425A1900B30DA7 /* aggressive_dead_code_elim_pass.h in Headers */, + A9F7B4E129425A1900B30DA7 /* if_conversion.h in Headers */, ); runOnlyForDeploymentPostprocessing = 0; }; @@ -4046,7 +4196,7 @@ A9F55D25198BE6A7004EC31B /* Project object */ = { isa = PBXProject; attributes = { - LastUpgradeCheck = 1400; + LastUpgradeCheck = 1410; ORGANIZATIONNAME = "The Brenwill Workshop Ltd."; TargetAttributes = { 2FEA0ADD2490320500EEF3AD = { @@ -4412,216 +4562,228 @@ isa = PBXSourcesBuildPhase; buildActionMask = 2147483647; files = ( - A926B80B27AC718900144157 /* table.cpp in Sources */, - A926B89227AC718900144157 /* change_operand_to_undef_reduction_opportunity.cpp in Sources */, - A926BA7E27AC718A00144157 /* control_dependence.cpp in Sources */, - A926B80227AC718900144157 /* bit_vector.cpp in Sources */, - A926BA7827AC718A00144157 /* function.cpp in Sources */, - A926BA3C27AC718A00144157 /* ccp_pass.cpp in Sources */, - A926BA9627AC718A00144157 /* if_conversion.cpp in Sources */, - A926B82C27AC718900144157 /* structured_loop_to_selection_reduction_opportunity_finder.cpp in Sources */, - A926BA5127AC718A00144157 /* eliminate_dead_functions_util.cpp in Sources */, - A926B87D27AC718900144157 /* reducer.cpp in Sources */, - A926B83E27AC718900144157 /* remove_function_reduction_opportunity.cpp in Sources */, - A926B82027AC718900144157 /* operand_to_const_reduction_opportunity_finder.cpp in Sources */, - A926C06027AC718C00144157 /* libspirv.cpp in Sources */, - A926C09627AC718C00144157 /* validate_atomics.cpp in Sources */, - A926C08427AC718C00144157 /* validate_cfg.cpp in Sources */, - A926B9B827AC718900144157 /* strip_debug_info_pass.cpp in Sources */, - A926B8F527AC718900144157 /* binary.cpp in Sources */, - A926BAC027AC718A00144157 /* loop_fusion_pass.cpp in Sources */, - A926BB5927AC718A00144157 /* replace_desc_array_access_using_var_index.cpp in Sources */, - A926B93A27AC718900144157 /* spread_volatile_semantics.cpp in Sources */, - A926C10527AC718C00144157 /* validate_composites.cpp in Sources */, - A926C0CF27AC718C00144157 /* validate_id.cpp in Sources */, - A926B98827AC718900144157 /* instrument_pass.cpp in Sources */, - A926B91627AC718900144157 /* linker.cpp in Sources */, - A926B8D727AC718900144157 /* spirv_fuzzer_options.cpp in Sources */, - A926BA1527AC718A00144157 /* vector_dce.cpp in Sources */, - A926BAA827AC718A00144157 /* desc_sroa.cpp in Sources */, - A926BB4127AC718A00144157 /* value_number_table.cpp in Sources */, - A926BB0E27AC718A00144157 /* amd_ext_to_khr.cpp in Sources */, - A926C0B127AC718C00144157 /* validate_constants.cpp in Sources */, - A926B7FF27AC718900144157 /* parse_number.cpp in Sources */, - A926BA9927AC718A00144157 /* debug_info_manager.cpp in Sources */, - A926C0BA27AC718C00144157 /* construct.cpp in Sources */, - A926B92527AC718900144157 /* ext_inst.cpp in Sources */, - A926B94627AC718900144157 /* combine_access_chains.cpp in Sources */, - A926BA2127AC718A00144157 /* constants.cpp in Sources */, - A926B7BD27AC718900144157 /* lint_divergent_derivatives.cpp in Sources */, - A926B87427AC718900144157 /* remove_struct_member_reduction_opportunity.cpp in Sources */, - A926B9B227AC718900144157 /* const_folding_rules.cpp in Sources */, - A926BAF627AC718A00144157 /* private_to_local_pass.cpp in Sources */, - A926BB9B27AC718A00144157 /* loop_fusion.cpp in Sources */, - A926C07E27AC718C00144157 /* validate_annotation.cpp in Sources */, - A926B91C27AC718900144157 /* software_version.cpp in Sources */, - A926BA6927AC718A00144157 /* ir_context.cpp in Sources */, - A926B99127AC718900144157 /* feature_manager.cpp in Sources */, - A926B83227AC718900144157 /* remove_function_reduction_opportunity_finder.cpp in Sources */, - A926B85027AC718900144157 /* merge_blocks_reduction_opportunity.cpp in Sources */, - A926B8B927AC718900144157 /* remove_block_reduction_opportunity.cpp in Sources */, - A926BADE27AC718A00144157 /* convert_to_sampled_image_pass.cpp in Sources */, - A926B7B427AC718900144157 /* spirv_target_env.cpp in Sources */, - A926BBAA27AC718A00144157 /* scalar_analysis_simplification.cpp in Sources */, - A926B99A27AC718900144157 /* dominator_tree.cpp in Sources */, - A926C0DE27AC718C00144157 /* validate_logicals.cpp in Sources */, - A926BAB427AC718A00144157 /* pass_manager.cpp in Sources */, - A926B8A727AC718900144157 /* remove_block_reduction_opportunity_finder.cpp in Sources */, - A926B98527AC718900144157 /* local_redundancy_elimination.cpp in Sources */, - A926B84427AC718900144157 /* remove_selection_reduction_opportunity_finder.cpp in Sources */, - A926BA4527AC718A00144157 /* pch_source_opt.cpp in Sources */, - A926B93427AC718900144157 /* loop_utils.cpp in Sources */, - A926BB1127AC718A00144157 /* scalar_replacement_pass.cpp in Sources */, - A926B9BE27AC718900144157 /* loop_dependence.cpp in Sources */, - A926BB1D27AC718A00144157 /* redundancy_elimination.cpp in Sources */, - A926BB0527AC718A00144157 /* set_spec_constant_default_value_pass.cpp in Sources */, - A926B85327AC718900144157 /* change_operand_reduction_opportunity.cpp in Sources */, - A926C09027AC718C00144157 /* validate_non_uniform.cpp in Sources */, - A926BA3027AC718A00144157 /* def_use_manager.cpp in Sources */, - A926BAAB27AC718A00144157 /* block_merge_util.cpp in Sources */, - A926B91F27AC718900144157 /* opcode.cpp in Sources */, - A926BA7B27AC718A00144157 /* instruction_list.cpp in Sources */, - A926BA5727AC718A00144157 /* simplification_pass.cpp in Sources */, - A926C09F27AC718C00144157 /* validate_decorations.cpp in Sources */, - A926C09327AC718C00144157 /* validate_scopes.cpp in Sources */, - A926BBB927AC718A00144157 /* compact_ids_pass.cpp in Sources */, - A926B91327AC718900144157 /* name_mapper.cpp in Sources */, - A926B9AF27AC718900144157 /* wrap_opkill.cpp in Sources */, - A926BBBC27AC718A00144157 /* loop_peeling.cpp in Sources */, - A926C10827AC718C00144157 /* validation_state.cpp in Sources */, - A926B97027AC718900144157 /* cfg.cpp in Sources */, - A926BA4E27AC718A00144157 /* aggressive_dead_code_elim_pass.cpp in Sources */, - A926B99427AC718900144157 /* pass.cpp in Sources */, - A926B7F327AC718900144157 /* string_utils.cpp in Sources */, - A926C08D27AC718C00144157 /* validate_barriers.cpp in Sources */, - A926B7DB27AC718900144157 /* pch_source.cpp in Sources */, - A926B9D627AC718A00144157 /* remove_duplicates_pass.cpp in Sources */, - A926C0E127AC718C00144157 /* validate_derivatives.cpp in Sources */, - A926C0D527AC718C00144157 /* validate_arithmetics.cpp in Sources */, - A926B9E527AC718A00144157 /* fold_spec_constant_op_and_composite_pass.cpp in Sources */, - A926C0E427AC718C00144157 /* validate_memory.cpp in Sources */, - A926B90727AC718900144157 /* spirv_reducer_options.cpp in Sources */, - A926C10B27AC718C00144157 /* validate_primitives.cpp in Sources */, - A926BB9527AC718A00144157 /* graphics_robust_access_pass.cpp in Sources */, - A926B8E327AC718900144157 /* print.cpp in Sources */, - A926B8B027AC718900144157 /* conditional_branch_to_simple_conditional_branch_opportunity_finder.cpp in Sources */, - A926C0AB27AC718C00144157 /* validate.cpp in Sources */, - A926B7C027AC718900144157 /* linter.cpp in Sources */, - A926BA8127AC718A00144157 /* composite.cpp in Sources */, - A926B83B27AC718900144157 /* simple_conditional_branch_to_branch_reduction_opportunity.cpp in Sources */, - A926BB7127AC718A00144157 /* struct_cfg_analysis.cpp in Sources */, - A926BA5D27AC718A00144157 /* flatten_decoration_pass.cpp in Sources */, - A926BB8627AC718A00144157 /* basic_block.cpp in Sources */, - A926C07527AC718C00144157 /* disassemble.cpp in Sources */, - A926B96427AC718900144157 /* types.cpp in Sources */, - A926B8FB27AC718900144157 /* enum_string_mapping.cpp in Sources */, - A926C0FC27AC718C00144157 /* basic_block.cpp in Sources */, - A926B97927AC718900144157 /* freeze_spec_constant_value_pass.cpp in Sources */, - A926B9BB27AC718900144157 /* ssa_rewrite_pass.cpp in Sources */, - A926B8CB27AC718900144157 /* spirv_optimizer_options.cpp in Sources */, - A926BB3E27AC718A00144157 /* fix_storage_class.cpp in Sources */, - A926B87127AC718900144157 /* pch_source_reduce.cpp in Sources */, - A926B84727AC718900144157 /* conditional_branch_to_simple_conditional_branch_reduction_opportunity.cpp in Sources */, - A926BB4427AC718A00144157 /* remove_unused_interface_variables_pass.cpp in Sources */, - A926B89B27AC718900144157 /* operand_to_dominating_id_reduction_opportunity_finder.cpp in Sources */, - A926C05A27AC718C00144157 /* diagnostic.cpp in Sources */, - A926B9A027AC718900144157 /* merge_return_pass.cpp in Sources */, - A926B94927AC718900144157 /* build_module.cpp in Sources */, - A926BB9E27AC718A00144157 /* upgrade_memory_model.cpp in Sources */, - A926C0BD27AC718C00144157 /* function.cpp in Sources */, - A926BA2D27AC718A00144157 /* inst_buff_addr_check_pass.cpp in Sources */, - A926B82627AC718900144157 /* reduction_util.cpp in Sources */, - A926C0DB27AC718C00144157 /* validate_memory_semantics.cpp in Sources */, - A926BB2927AC718A00144157 /* relax_float_ops_pass.cpp in Sources */, - A926C0F027AC718C00144157 /* validate_type.cpp in Sources */, - A926C0C327AC718C00144157 /* validate_adjacency.cpp in Sources */, - A926BA5A27AC718A00144157 /* dead_branch_elim_pass.cpp in Sources */, - A926B81127AC718900144157 /* remove_selection_reduction_opportunity.cpp in Sources */, - A926C08127AC718C00144157 /* validate_misc.cpp in Sources */, - A926C0E727AC718C00144157 /* validate_image.cpp in Sources */, - A926BA0027AC718A00144157 /* ir_loader.cpp in Sources */, - A926BA9027AC718A00144157 /* strip_nonsemantic_info_pass.cpp in Sources */, - A926BAB127AC718A00144157 /* copy_prop_arrays.cpp in Sources */, - A926B99727AC718900144157 /* loop_fission.cpp in Sources */, - A926BAD827AC718A00144157 /* block_merge_pass.cpp in Sources */, - A926B8C227AC718900144157 /* structured_construct_to_block_reduction_opportunity_finder.cpp in Sources */, - A926B8BF27AC718900144157 /* reduction_opportunity_finder.cpp in Sources */, - A926B9D927AC718A00144157 /* dead_variable_elimination.cpp in Sources */, - A926C0C627AC718C00144157 /* validate_conversion.cpp in Sources */, - A926B90A27AC718900144157 /* parsed_operand.cpp in Sources */, - A926B9AC27AC718900144157 /* cfg_cleanup_pass.cpp in Sources */, - A926B97627AC718900144157 /* local_single_block_elim_pass.cpp in Sources */, - A926C06C27AC718C00144157 /* operand.cpp in Sources */, - A926BB4727AC718A00144157 /* inline_opaque_pass.cpp in Sources */, - A926C0EA27AC718C00144157 /* validate_literals.cpp in Sources */, - A926BA0927AC718A00144157 /* licm_pass.cpp in Sources */, - A926BA8427AC718A00144157 /* convert_to_half_pass.cpp in Sources */, - A926C0D827AC718C00144157 /* validate_mode_setting.cpp in Sources */, - A926B7CF27AC718900144157 /* text.cpp in Sources */, - A926BB3227AC718A00144157 /* instruction.cpp in Sources */, - A926B9A627AC718900144157 /* eliminate_dead_constant_pass.cpp in Sources */, - A926B87A27AC718900144157 /* remove_unused_instruction_reduction_opportunity_finder.cpp in Sources */, - A926BAF027AC718A00144157 /* local_single_store_elim_pass.cpp in Sources */, - A926C0FF27AC718C00144157 /* validate_function.cpp in Sources */, - A926BACC27AC718A00144157 /* dead_insert_elim_pass.cpp in Sources */, - A926C0B427AC718C00144157 /* validate_bitwise.cpp in Sources */, - A926B81A27AC718900144157 /* reduction_pass.cpp in Sources */, - A926BB8327AC718A00144157 /* interp_fixup_pass.cpp in Sources */, - A926B96127AC718900144157 /* code_sink.cpp in Sources */, - A926C0A227AC718C00144157 /* validate_debug.cpp in Sources */, - A926BAA227AC718A00144157 /* eliminate_dead_members_pass.cpp in Sources */, - A926B92B27AC718900144157 /* optimizer.cpp in Sources */, - A926C07B27AC718C00144157 /* text_handler.cpp in Sources */, - A926BA7227AC718A00144157 /* loop_descriptor.cpp in Sources */, - A926C0F627AC718C00144157 /* validate_execution_limitations.cpp in Sources */, - A926BA2A27AC718A00144157 /* desc_sroa_util.cpp in Sources */, - A926B9EE27AC718A00144157 /* type_manager.cpp in Sources */, - A926BA0C27AC718A00144157 /* eliminate_dead_functions_pass.cpp in Sources */, - A926B8B327AC718900144157 /* structured_loop_to_selection_reduction_opportunity.cpp in Sources */, - A926C09C27AC718C00144157 /* validate_instruction.cpp in Sources */, - A926B9C727AC718900144157 /* inst_debug_printf_pass.cpp in Sources */, - A926C0F927AC718C00144157 /* validate_layout.cpp in Sources */, - A926C0B727AC718C00144157 /* validate_extensions.cpp in Sources */, - A926B8DD27AC718900144157 /* spirv_validator_options.cpp in Sources */, - A926C0A827AC718C00144157 /* validate_interfaces.cpp in Sources */, - A926B98227AC718900144157 /* inst_bindless_check_pass.cpp in Sources */, - A926B7C327AC718900144157 /* divergence_analysis.cpp in Sources */, - A926B9D027AC718A00144157 /* mem_pass.cpp in Sources */, - A926BAD227AC718A00144157 /* scalar_analysis.cpp in Sources */, - A926B88927AC718900144157 /* merge_blocks_reduction_opportunity_finder.cpp in Sources */, - A926B7D227AC718900144157 /* assembly_grammar.cpp in Sources */, - A926B7D827AC718900144157 /* extensions.cpp in Sources */, - A926B88C27AC718900144157 /* reduction_opportunity.cpp in Sources */, - A926BA1B27AC718A00144157 /* loop_unroller.cpp in Sources */, - A926B8BC27AC718900144157 /* remove_unused_struct_member_reduction_opportunity_finder.cpp in Sources */, - A926BB0227AC718A00144157 /* loop_dependence_helpers.cpp in Sources */, - A926B93127AC718900144157 /* register_pressure.cpp in Sources */, - A926B9FA27AC718A00144157 /* inline_pass.cpp in Sources */, - A926C0ED27AC718C00144157 /* instruction.cpp in Sources */, - A926C08727AC718C00144157 /* validate_capability.cpp in Sources */, - A926B9DF27AC718A00144157 /* module.cpp in Sources */, - A926B7ED27AC718900144157 /* timer.cpp in Sources */, - A926BAA527AC718A00144157 /* strength_reduction_pass.cpp in Sources */, - A926BB8027AC718A00144157 /* local_access_chain_convert_pass.cpp in Sources */, - A926C0C927AC718C00144157 /* validate_small_type_uses.cpp in Sources */, - A926BB6527AC718A00144157 /* dataflow.cpp in Sources */, - A926BB2327AC718A00144157 /* workaround1209.cpp in Sources */, - A926B8EC27AC718900144157 /* spirv_endian.cpp in Sources */, - A926B9E827AC718A00144157 /* loop_unswitch_pass.cpp in Sources */, - A926B9EB27AC718A00144157 /* unify_const_pass.cpp in Sources */, - A926BB3827AC718A00144157 /* reduce_load_size.cpp in Sources */, - A926BB5327AC718A00144157 /* dominator_analysis.cpp in Sources */, - A926BAB727AC718A00144157 /* inline_exhaustive_pass.cpp in Sources */, - A926B88027AC718900144157 /* operand_to_undef_reduction_opportunity_finder.cpp in Sources */, - A926C0A527AC718C00144157 /* validate_builtins.cpp in Sources */, - A926BB0B27AC718A00144157 /* fold.cpp in Sources */, - A926B97327AC718900144157 /* decoration_manager.cpp in Sources */, - A926B8B627AC718900144157 /* structured_construct_to_block_reduction_opportunity.cpp in Sources */, - A926BAFC27AC718A00144157 /* propagator.cpp in Sources */, - A926B84127AC718900144157 /* simple_conditional_branch_to_branch_opportunity_finder.cpp in Sources */, - A926B86827AC718900144157 /* remove_instruction_reduction_opportunity.cpp in Sources */, - A926BB4A27AC718A00144157 /* replace_invalid_opc.cpp in Sources */, - A926BA6327AC718A00144157 /* folding_rules.cpp in Sources */, + A9F7B4B929425A1900B30DA7 /* spirv_reducer_options.cpp in Sources */, + A9F7B4E329425A1900B30DA7 /* register_pressure.cpp in Sources */, + A9F7B79829425A1900B30DA7 /* loop_peeling.cpp in Sources */, + A9F7B6A829425A1900B30DA7 /* block_merge_pass.cpp in Sources */, + A9F7B4D129425A1900B30DA7 /* opcode.cpp in Sources */, + A9F7BC8A29425A1B00B30DA7 /* validate_builtins.cpp in Sources */, + A9F7BC6C29425A1B00B30DA7 /* validate_non_uniform.cpp in Sources */, + A9F7B3B429425A1800B30DA7 /* table.cpp in Sources */, + A9F7BCC329425A1B00B30DA7 /* validate_logicals.cpp in Sources */, + A9F7B43B29425A1800B30DA7 /* change_operand_to_undef_reduction_opportunity.cpp in Sources */, + A9F7B3AB29425A1800B30DA7 /* bit_vector.cpp in Sources */, + A9F7B63329425A1900B30DA7 /* ir_context.cpp in Sources */, + A9F7B3D529425A1800B30DA7 /* structured_loop_to_selection_reduction_opportunity_finder.cpp in Sources */, + A9F7B66029425A1900B30DA7 /* if_conversion.cpp in Sources */, + A9F7B74729425A1900B30DA7 /* remove_dontinline_pass.cpp in Sources */, + A9F7B6AE29425A1900B30DA7 /* convert_to_sampled_image_pass.cpp in Sources */, + A9F7B55E29425A1900B30DA7 /* merge_return_pass.cpp in Sources */, + A9F7B42629425A1800B30DA7 /* reducer.cpp in Sources */, + A9F7B3E729425A1800B30DA7 /* remove_function_reduction_opportunity.cpp in Sources */, + A9F7BC5129425A1B00B30DA7 /* disassemble.cpp in Sources */, + A9F7B64B29425A1900B30DA7 /* composite.cpp in Sources */, + A9F7BCAB29425A1B00B30DA7 /* validate_conversion.cpp in Sources */, + A9F7BCD229425A1B00B30DA7 /* instruction.cpp in Sources */, + A9F7BC6F29425A1B00B30DA7 /* validate_ray_query.cpp in Sources */, + A9F7BC4829425A1B00B30DA7 /* operand.cpp in Sources */, + A9F7B5AF29425A1900B30DA7 /* unify_const_pass.cpp in Sources */, + A9F7B3C929425A1800B30DA7 /* operand_to_const_reduction_opportunity_finder.cpp in Sources */, + A9F7B4AD29425A1900B30DA7 /* enum_string_mapping.cpp in Sources */, + A9F7BCBD29425A1B00B30DA7 /* validate_mode_setting.cpp in Sources */, + A9F7B49E29425A1900B30DA7 /* binary.cpp in Sources */, + A9F7B74429425A1900B30DA7 /* struct_cfg_analysis.cpp in Sources */, + A9F7BC6329425A1B00B30DA7 /* validate_capability.cpp in Sources */, + A9F7BC3629425A1B00B30DA7 /* diagnostic.cpp in Sources */, + A9F7BC3C29425A1B00B30DA7 /* libspirv.cpp in Sources */, + A9F7BCDB29425A1B00B30DA7 /* validate_mesh_shading.cpp in Sources */, + A9F7B4FB29425A1900B30DA7 /* build_module.cpp in Sources */, + A9F7B56A29425A1900B30DA7 /* cfg_cleanup_pass.cpp in Sources */, + A9F7B48029425A1800B30DA7 /* spirv_fuzzer_options.cpp in Sources */, + A9F7BCA829425A1B00B30DA7 /* validate_adjacency.cpp in Sources */, + A9F7BCB429425A1B00B30DA7 /* validate_id.cpp in Sources */, + A9F7B3A829425A1800B30DA7 /* parse_number.cpp in Sources */, + A9F7B6A229425A1900B30DA7 /* scalar_analysis.cpp in Sources */, + A9F7B36329425A1800B30DA7 /* lint_divergent_derivatives.cpp in Sources */, + A9F7B41D29425A1800B30DA7 /* remove_struct_member_reduction_opportunity.cpp in Sources */, + A9F7BC7529425A1B00B30DA7 /* validate_scopes.cpp in Sources */, + A9F7B57C29425A1900B30DA7 /* strip_debug_info_pass.cpp in Sources */, + A9F7B61B29425A1900B30DA7 /* eliminate_dead_functions_util.cpp in Sources */, + A9F7B3DB29425A1800B30DA7 /* remove_function_reduction_opportunity_finder.cpp in Sources */, + A9F7B57F29425A1900B30DA7 /* ssa_rewrite_pass.cpp in Sources */, + A9F7BCCC29425A1B00B30DA7 /* validate_image.cpp in Sources */, + A9F7B5A329425A1900B30DA7 /* module.cpp in Sources */, + A9F7B3F929425A1800B30DA7 /* merge_blocks_reduction_opportunity.cpp in Sources */, + A9F7B5E829425A1900B30DA7 /* constants.cpp in Sources */, + A9F7B46229425A1800B30DA7 /* remove_block_reduction_opportunity.cpp in Sources */, + A9F7B35A29425A1800B30DA7 /* spirv_target_env.cpp in Sources */, + A9F7B55529425A1900B30DA7 /* loop_fission.cpp in Sources */, + A9F7B45029425A1800B30DA7 /* remove_block_reduction_opportunity_finder.cpp in Sources */, + A9F7B3ED29425A1800B30DA7 /* remove_selection_reduction_opportunity_finder.cpp in Sources */, + A9F7B6DB29425A1900B30DA7 /* fold.cpp in Sources */, + A9F7B5F729425A1900B30DA7 /* def_use_manager.cpp in Sources */, + A9F7B4BC29425A1900B30DA7 /* parsed_operand.cpp in Sources */, + A9F7B66F29425A1900B30DA7 /* eliminate_dead_members_pass.cpp in Sources */, + A9F7B70529425A1900B30DA7 /* instruction.cpp in Sources */, + A9F7B4C529425A1900B30DA7 /* name_mapper.cpp in Sources */, + A9F7B77729425A1900B30DA7 /* analyze_live_input_pass.cpp in Sources */, + A9F7BC6029425A1B00B30DA7 /* validate_cfg.cpp in Sources */, + A9F7B3FC29425A1800B30DA7 /* change_operand_reduction_opportunity.cpp in Sources */, + A9F7BC7E29425A1B00B30DA7 /* validate_instruction.cpp in Sources */, + A9F7B54629425A1900B30DA7 /* instrument_pass.cpp in Sources */, + A9F7BC7229425A1B00B30DA7 /* validate_ray_tracing.cpp in Sources */, + A9F7B55229425A1900B30DA7 /* pass.cpp in Sources */, + A9F7B60329425A1900B30DA7 /* ccp_pass.cpp in Sources */, + A9F7B5F129425A1900B30DA7 /* desc_sroa_util.cpp in Sources */, + A9F7BC9929425A1B00B30DA7 /* validate_bitwise.cpp in Sources */, + A9F7B67829425A1900B30DA7 /* block_merge_util.cpp in Sources */, + A9F7BC8729425A1B00B30DA7 /* validate_debug.cpp in Sources */, + A9F7B63C29425A1900B30DA7 /* loop_descriptor.cpp in Sources */, + A9F7B4C829425A1900B30DA7 /* linker.cpp in Sources */, + A9F7B53429425A1900B30DA7 /* freeze_spec_constant_value_pass.cpp in Sources */, + A9F7B39C29425A1800B30DA7 /* string_utils.cpp in Sources */, + A9F7BCC029425A1B00B30DA7 /* validate_memory_semantics.cpp in Sources */, + A9F7B51F29425A1900B30DA7 /* types.cpp in Sources */, + A9F7B38129425A1800B30DA7 /* pch_source.cpp in Sources */, + A9F7B48C29425A1800B30DA7 /* print.cpp in Sources */, + A9F7BCA229425A1B00B30DA7 /* function.cpp in Sources */, + A9F7B68729425A1900B30DA7 /* inline_exhaustive_pass.cpp in Sources */, + A9F7B56429425A1900B30DA7 /* eliminate_dead_constant_pass.cpp in Sources */, + A9F7B71A29425A1900B30DA7 /* inline_opaque_pass.cpp in Sources */, + A9F7B45929425A1800B30DA7 /* conditional_branch_to_simple_conditional_branch_opportunity_finder.cpp in Sources */, + A9F7B36629425A1800B30DA7 /* linter.cpp in Sources */, + A9F7B4FE29425A1900B30DA7 /* eliminate_dead_output_stores_pass.cpp in Sources */, + A9F7B79529425A1900B30DA7 /* compact_ids_pass.cpp in Sources */, + A9F7B62D29425A1900B30DA7 /* folding_rules.cpp in Sources */, + A9F7B65A29425A1900B30DA7 /* strip_nonsemantic_info_pass.cpp in Sources */, + A9F7B6C629425A1900B30DA7 /* private_to_local_pass.cpp in Sources */, + A9F7B5A929425A1900B30DA7 /* fold_spec_constant_op_and_composite_pass.cpp in Sources */, + A9F7BC8129425A1B00B30DA7 /* validate_ray_tracing_reorder.cpp in Sources */, + A9F7BCC629425A1B00B30DA7 /* validate_derivatives.cpp in Sources */, + A9F7B3E429425A1800B30DA7 /* simple_conditional_branch_to_branch_reduction_opportunity.cpp in Sources */, + A9F7B64829425A1900B30DA7 /* control_dependence.cpp in Sources */, + A9F7B47429425A1800B30DA7 /* spirv_optimizer_options.cpp in Sources */, + A9F7B41A29425A1800B30DA7 /* pch_source_reduce.cpp in Sources */, + A9F7B59D29425A1900B30DA7 /* dead_variable_elimination.cpp in Sources */, + A9F7B3F029425A1800B30DA7 /* conditional_branch_to_simple_conditional_branch_reduction_opportunity.cpp in Sources */, + A9F7B67229425A1900B30DA7 /* strength_reduction_pass.cpp in Sources */, + A9F7B78629425A1900B30DA7 /* scalar_analysis_simplification.cpp in Sources */, + A9F7BC8D29425A1B00B30DA7 /* validate_interfaces.cpp in Sources */, + A9F7BC7829425A1B00B30DA7 /* validate_atomics.cpp in Sources */, + A9F7B4D729425A1900B30DA7 /* ext_inst.cpp in Sources */, + A9F7B44429425A1800B30DA7 /* operand_to_dominating_id_reduction_opportunity_finder.cpp in Sources */, + A9F7B52E29425A1900B30DA7 /* decoration_manager.cpp in Sources */, + A9F7B6F629425A1900B30DA7 /* workaround1209.cpp in Sources */, + A9F7B75929425A1900B30DA7 /* interp_fixup_pass.cpp in Sources */, + A9F7BCCF29425A1B00B30DA7 /* validate_literals.cpp in Sources */, + A9F7B4A729425A1900B30DA7 /* diff.cpp in Sources */, + A9F7B55829425A1900B30DA7 /* dominator_tree.cpp in Sources */, + A9F7B6E729425A1900B30DA7 /* interface_var_sroa.cpp in Sources */, + A9F7B77A29425A1900B30DA7 /* upgrade_memory_model.cpp in Sources */, + A9F7B4F829425A1900B30DA7 /* combine_access_chains.cpp in Sources */, + A9F7B64529425A1900B30DA7 /* instruction_list.cpp in Sources */, + A9F7B61829425A1900B30DA7 /* aggressive_dead_code_elim_pass.cpp in Sources */, + A9F7B3CF29425A1800B30DA7 /* reduction_util.cpp in Sources */, + A9F7B5D329425A1900B30DA7 /* eliminate_dead_functions_pass.cpp in Sources */, + A9F7BCAE29425A1B00B30DA7 /* validate_small_type_uses.cpp in Sources */, + A9F7BC5D29425A1B00B30DA7 /* validate_misc.cpp in Sources */, + A9F7B51C29425A1900B30DA7 /* code_sink.cpp in Sources */, + A9F7B68429425A1900B30DA7 /* pass_manager.cpp in Sources */, + A9F7B54F29425A1900B30DA7 /* feature_manager.cpp in Sources */, + A9F7B56D29425A1900B30DA7 /* wrap_opkill.cpp in Sources */, + A9F7B73829425A1900B30DA7 /* dataflow.cpp in Sources */, + A9F7BCD529425A1B00B30DA7 /* validate_type.cpp in Sources */, + A9F7B6D529425A1900B30DA7 /* set_spec_constant_default_value_pass.cpp in Sources */, + A9F7B3BA29425A1800B30DA7 /* remove_selection_reduction_opportunity.cpp in Sources */, + A9F7BC9629425A1B00B30DA7 /* validate_constants.cpp in Sources */, + A9F7BCE129425A1B00B30DA7 /* validate_layout.cpp in Sources */, + A9F7B57329425A1900B30DA7 /* const_folding_rules.cpp in Sources */, + A9F7B71D29425A1900B30DA7 /* replace_invalid_opc.cpp in Sources */, + A9F7B57029425A1900B30DA7 /* eliminate_dead_io_components_pass.cpp in Sources */, + A9F7B46B29425A1800B30DA7 /* structured_construct_to_block_reduction_opportunity_finder.cpp in Sources */, + A9F7B46829425A1800B30DA7 /* reduction_opportunity_finder.cpp in Sources */, + A9F7B50429425A1900B30DA7 /* liveness.cpp in Sources */, + A9F7B66629425A1900B30DA7 /* debug_info_manager.cpp in Sources */, + A9F7B6FC29425A1900B30DA7 /* relax_float_ops_pass.cpp in Sources */, + A9F7B71429425A1900B30DA7 /* value_number_table.cpp in Sources */, + A9F7B37529425A1800B30DA7 /* text.cpp in Sources */, + A9F7B6C029425A1900B30DA7 /* local_single_store_elim_pass.cpp in Sources */, + A9F7B42329425A1800B30DA7 /* remove_unused_instruction_reduction_opportunity_finder.cpp in Sources */, + A9F7B3C329425A1800B30DA7 /* reduction_pass.cpp in Sources */, + A9F7B64E29425A1900B30DA7 /* convert_to_half_pass.cpp in Sources */, + A9F7B70B29425A1900B30DA7 /* reduce_load_size.cpp in Sources */, + A9F7B75629425A1900B30DA7 /* local_access_chain_convert_pass.cpp in Sources */, + A9F7B54029425A1900B30DA7 /* inst_bindless_check_pass.cpp in Sources */, + A9F7B53129425A1900B30DA7 /* local_single_block_elim_pass.cpp in Sources */, + A9F7BCDE29425A1B00B30DA7 /* validate_execution_limitations.cpp in Sources */, + A9F7B64229425A1900B30DA7 /* function.cpp in Sources */, + A9F7B66329425A1900B30DA7 /* fix_func_call_arguments.cpp in Sources */, + A9F7B45C29425A1800B30DA7 /* structured_loop_to_selection_reduction_opportunity.cpp in Sources */, + A9F7B76B29425A1900B30DA7 /* graphics_robust_access_pass.cpp in Sources */, + A9F7BC9F29425A1B00B30DA7 /* construct.cpp in Sources */, + A9F7B5E229425A1900B30DA7 /* loop_unroller.cpp in Sources */, + A9F7B48629425A1800B30DA7 /* spirv_validator_options.cpp in Sources */, + A9F7B36929425A1800B30DA7 /* divergence_analysis.cpp in Sources */, + A9F7B4E629425A1900B30DA7 /* loop_utils.cpp in Sources */, + A9F7B4EC29425A1900B30DA7 /* spread_volatile_semantics.cpp in Sources */, + A9F7B67529425A1900B30DA7 /* desc_sroa.cpp in Sources */, + A9F7B69C29425A1900B30DA7 /* dead_insert_elim_pass.cpp in Sources */, + A9F7BC8429425A1B00B30DA7 /* validate_decorations.cpp in Sources */, + A9F7B69029425A1900B30DA7 /* loop_fusion_pass.cpp in Sources */, + A9F7B43229425A1800B30DA7 /* merge_blocks_reduction_opportunity_finder.cpp in Sources */, + A9F7B62729425A1900B30DA7 /* flatten_decoration_pass.cpp in Sources */, + A9F7B71129425A1900B30DA7 /* fix_storage_class.cpp in Sources */, + A9F7B4CE29425A1900B30DA7 /* software_version.cpp in Sources */, + A9F7B37829425A1800B30DA7 /* assembly_grammar.cpp in Sources */, + A9F7B6DE29425A1900B30DA7 /* amd_ext_to_khr.cpp in Sources */, + A9F7BC5729425A1B00B30DA7 /* text_handler.cpp in Sources */, + A9F7B4DD29425A1900B30DA7 /* optimizer.cpp in Sources */, + A9F7BCF029425A1B00B30DA7 /* validation_state.cpp in Sources */, + A9F7B59429425A1900B30DA7 /* mem_pass.cpp in Sources */, + A9F7B72C29425A1900B30DA7 /* replace_desc_array_access_using_var_index.cpp in Sources */, + A9F7B5C729425A1900B30DA7 /* ir_loader.cpp in Sources */, + A9F7B37E29425A1800B30DA7 /* extensions.cpp in Sources */, + A9F7B5B229425A1900B30DA7 /* type_manager.cpp in Sources */, + A9F7B6E129425A1900B30DA7 /* scalar_replacement_pass.cpp in Sources */, + A9F7B5AC29425A1900B30DA7 /* loop_unswitch_pass.cpp in Sources */, + A9F7B43529425A1800B30DA7 /* reduction_opportunity.cpp in Sources */, + A9F7BC9C29425A1B00B30DA7 /* validate_extensions.cpp in Sources */, + A9F7B46529425A1800B30DA7 /* remove_unused_struct_member_reduction_opportunity_finder.cpp in Sources */, + A9F7B39629425A1800B30DA7 /* timer.cpp in Sources */, + A9F7B60F29425A1900B30DA7 /* pch_source_opt.cpp in Sources */, + A9F7B5C129425A1900B30DA7 /* inline_pass.cpp in Sources */, + A9F7B5F429425A1900B30DA7 /* inst_buff_addr_check_pass.cpp in Sources */, + A9F7BC6929425A1B00B30DA7 /* validate_barriers.cpp in Sources */, + A9F7B6F029425A1900B30DA7 /* redundancy_elimination.cpp in Sources */, + A9F7B49529425A1800B30DA7 /* spirv_endian.cpp in Sources */, + A9F7B52B29425A1900B30DA7 /* cfg.cpp in Sources */, + A9F7B59A29425A1900B30DA7 /* remove_duplicates_pass.cpp in Sources */, + A9F7BC5A29425A1B00B30DA7 /* validate_annotation.cpp in Sources */, + A9F7B6D229425A1900B30DA7 /* loop_dependence_helpers.cpp in Sources */, + A9F7B75C29425A1900B30DA7 /* basic_block.cpp in Sources */, + A9F7B58229425A1900B30DA7 /* loop_dependence.cpp in Sources */, + A9F7B5D029425A1900B30DA7 /* licm_pass.cpp in Sources */, + A9F7B42929425A1800B30DA7 /* operand_to_undef_reduction_opportunity_finder.cpp in Sources */, + A9F7B62429425A1900B30DA7 /* dead_branch_elim_pass.cpp in Sources */, + A9F7B58B29425A1900B30DA7 /* inst_debug_printf_pass.cpp in Sources */, + A9F7B54329425A1900B30DA7 /* local_redundancy_elimination.cpp in Sources */, + A9F7BCC929425A1B00B30DA7 /* validate_memory.cpp in Sources */, + A9F7B72629425A1900B30DA7 /* dominator_analysis.cpp in Sources */, + A9F7BC9029425A1B00B30DA7 /* validate.cpp in Sources */, + A9F7B67E29425A1900B30DA7 /* copy_prop_arrays.cpp in Sources */, + A9F7B45F29425A1800B30DA7 /* structured_construct_to_block_reduction_opportunity.cpp in Sources */, + A9F7BCED29425A1B00B30DA7 /* validate_composites.cpp in Sources */, + A9F7B77429425A1900B30DA7 /* loop_fusion.cpp in Sources */, + A9F7BCE429425A1B00B30DA7 /* basic_block.cpp in Sources */, + A9F7B71729425A1900B30DA7 /* remove_unused_interface_variables_pass.cpp in Sources */, + A9F7BCE729425A1B00B30DA7 /* validate_function.cpp in Sources */, + A9F7B5DC29425A1900B30DA7 /* vector_dce.cpp in Sources */, + A9F7BCF329425A1B00B30DA7 /* validate_primitives.cpp in Sources */, + A9F7B62129425A1900B30DA7 /* simplification_pass.cpp in Sources */, + A9F7B6CC29425A1900B30DA7 /* propagator.cpp in Sources */, + A9F7B3EA29425A1800B30DA7 /* simple_conditional_branch_to_branch_opportunity_finder.cpp in Sources */, + A9F7B41129425A1800B30DA7 /* remove_instruction_reduction_opportunity.cpp in Sources */, + A9F7BCBA29425A1B00B30DA7 /* validate_arithmetics.cpp in Sources */, ); runOnlyForDeploymentPostprocessing = 0; }; @@ -4643,216 +4805,228 @@ isa = PBXSourcesBuildPhase; buildActionMask = 2147483647; files = ( - A926B80A27AC718900144157 /* table.cpp in Sources */, - A926B89127AC718900144157 /* change_operand_to_undef_reduction_opportunity.cpp in Sources */, - A926BA7D27AC718A00144157 /* control_dependence.cpp in Sources */, - A926B80127AC718900144157 /* bit_vector.cpp in Sources */, - A926BA7727AC718A00144157 /* function.cpp in Sources */, - A926BA3B27AC718A00144157 /* ccp_pass.cpp in Sources */, - A926BA9527AC718A00144157 /* if_conversion.cpp in Sources */, - A926B82B27AC718900144157 /* structured_loop_to_selection_reduction_opportunity_finder.cpp in Sources */, - A926BA5027AC718A00144157 /* eliminate_dead_functions_util.cpp in Sources */, - A926B87C27AC718900144157 /* reducer.cpp in Sources */, - A926B83D27AC718900144157 /* remove_function_reduction_opportunity.cpp in Sources */, - A926B81F27AC718900144157 /* operand_to_const_reduction_opportunity_finder.cpp in Sources */, - A926C05F27AC718C00144157 /* libspirv.cpp in Sources */, - A926C09527AC718C00144157 /* validate_atomics.cpp in Sources */, - A926C08327AC718C00144157 /* validate_cfg.cpp in Sources */, - A926B9B727AC718900144157 /* strip_debug_info_pass.cpp in Sources */, - A926B8F427AC718900144157 /* binary.cpp in Sources */, - A926BABF27AC718A00144157 /* loop_fusion_pass.cpp in Sources */, - A926BB5827AC718A00144157 /* replace_desc_array_access_using_var_index.cpp in Sources */, - A926B93927AC718900144157 /* spread_volatile_semantics.cpp in Sources */, - A926C10427AC718C00144157 /* validate_composites.cpp in Sources */, - A926C0CE27AC718C00144157 /* validate_id.cpp in Sources */, - A926B98727AC718900144157 /* instrument_pass.cpp in Sources */, - A926B91527AC718900144157 /* linker.cpp in Sources */, - A926B8D627AC718900144157 /* spirv_fuzzer_options.cpp in Sources */, - A926BA1427AC718A00144157 /* vector_dce.cpp in Sources */, - A926BAA727AC718A00144157 /* desc_sroa.cpp in Sources */, - A926BB4027AC718A00144157 /* value_number_table.cpp in Sources */, - A926BB0D27AC718A00144157 /* amd_ext_to_khr.cpp in Sources */, - A926C0B027AC718C00144157 /* validate_constants.cpp in Sources */, - A926B7FE27AC718900144157 /* parse_number.cpp in Sources */, - A926BA9827AC718A00144157 /* debug_info_manager.cpp in Sources */, - A926C0B927AC718C00144157 /* construct.cpp in Sources */, - A926B92427AC718900144157 /* ext_inst.cpp in Sources */, - A926B94527AC718900144157 /* combine_access_chains.cpp in Sources */, - A926BA2027AC718A00144157 /* constants.cpp in Sources */, - A926B7BC27AC718900144157 /* lint_divergent_derivatives.cpp in Sources */, - A926B87327AC718900144157 /* remove_struct_member_reduction_opportunity.cpp in Sources */, - A926B9B127AC718900144157 /* const_folding_rules.cpp in Sources */, - A926BAF527AC718A00144157 /* private_to_local_pass.cpp in Sources */, - A926BB9A27AC718A00144157 /* loop_fusion.cpp in Sources */, - A926C07D27AC718C00144157 /* validate_annotation.cpp in Sources */, - A926B91B27AC718900144157 /* software_version.cpp in Sources */, - A926BA6827AC718A00144157 /* ir_context.cpp in Sources */, - A926B99027AC718900144157 /* feature_manager.cpp in Sources */, - A926B83127AC718900144157 /* remove_function_reduction_opportunity_finder.cpp in Sources */, - A926B84F27AC718900144157 /* merge_blocks_reduction_opportunity.cpp in Sources */, - A926B8B827AC718900144157 /* remove_block_reduction_opportunity.cpp in Sources */, - A926BADD27AC718A00144157 /* convert_to_sampled_image_pass.cpp in Sources */, - A926B7B327AC718900144157 /* spirv_target_env.cpp in Sources */, - A926BBA927AC718A00144157 /* scalar_analysis_simplification.cpp in Sources */, - A926B99927AC718900144157 /* dominator_tree.cpp in Sources */, - A926C0DD27AC718C00144157 /* validate_logicals.cpp in Sources */, - A926BAB327AC718A00144157 /* pass_manager.cpp in Sources */, - A926B8A627AC718900144157 /* remove_block_reduction_opportunity_finder.cpp in Sources */, - A926B98427AC718900144157 /* local_redundancy_elimination.cpp in Sources */, - A926B84327AC718900144157 /* remove_selection_reduction_opportunity_finder.cpp in Sources */, - A926BA4427AC718A00144157 /* pch_source_opt.cpp in Sources */, - A926B93327AC718900144157 /* loop_utils.cpp in Sources */, - A926BB1027AC718A00144157 /* scalar_replacement_pass.cpp in Sources */, - A926B9BD27AC718900144157 /* loop_dependence.cpp in Sources */, - A926BB1C27AC718A00144157 /* redundancy_elimination.cpp in Sources */, - A926BB0427AC718A00144157 /* set_spec_constant_default_value_pass.cpp in Sources */, - A926B85227AC718900144157 /* change_operand_reduction_opportunity.cpp in Sources */, - A926C08F27AC718C00144157 /* validate_non_uniform.cpp in Sources */, - A926BA2F27AC718A00144157 /* def_use_manager.cpp in Sources */, - A926BAAA27AC718A00144157 /* block_merge_util.cpp in Sources */, - A926B91E27AC718900144157 /* opcode.cpp in Sources */, - A926BA7A27AC718A00144157 /* instruction_list.cpp in Sources */, - A926BA5627AC718A00144157 /* simplification_pass.cpp in Sources */, - A926C09E27AC718C00144157 /* validate_decorations.cpp in Sources */, - A926C09227AC718C00144157 /* validate_scopes.cpp in Sources */, - A926BBB827AC718A00144157 /* compact_ids_pass.cpp in Sources */, - A926B91227AC718900144157 /* name_mapper.cpp in Sources */, - A926B9AE27AC718900144157 /* wrap_opkill.cpp in Sources */, - A926BBBB27AC718A00144157 /* loop_peeling.cpp in Sources */, - A926C10727AC718C00144157 /* validation_state.cpp in Sources */, - A926B96F27AC718900144157 /* cfg.cpp in Sources */, - A926BA4D27AC718A00144157 /* aggressive_dead_code_elim_pass.cpp in Sources */, - A926B99327AC718900144157 /* pass.cpp in Sources */, - A926B7F227AC718900144157 /* string_utils.cpp in Sources */, - A926C08C27AC718C00144157 /* validate_barriers.cpp in Sources */, - A926B7DA27AC718900144157 /* pch_source.cpp in Sources */, - A926B9D527AC718A00144157 /* remove_duplicates_pass.cpp in Sources */, - A926C0E027AC718C00144157 /* validate_derivatives.cpp in Sources */, - A926C0D427AC718C00144157 /* validate_arithmetics.cpp in Sources */, - A926B9E427AC718A00144157 /* fold_spec_constant_op_and_composite_pass.cpp in Sources */, - A926C0E327AC718C00144157 /* validate_memory.cpp in Sources */, - A926B90627AC718900144157 /* spirv_reducer_options.cpp in Sources */, - A926C10A27AC718C00144157 /* validate_primitives.cpp in Sources */, - A926BB9427AC718A00144157 /* graphics_robust_access_pass.cpp in Sources */, - A926B8E227AC718900144157 /* print.cpp in Sources */, - A926B8AF27AC718900144157 /* conditional_branch_to_simple_conditional_branch_opportunity_finder.cpp in Sources */, - A926C0AA27AC718C00144157 /* validate.cpp in Sources */, - A926B7BF27AC718900144157 /* linter.cpp in Sources */, - A926BA8027AC718A00144157 /* composite.cpp in Sources */, - A926B83A27AC718900144157 /* simple_conditional_branch_to_branch_reduction_opportunity.cpp in Sources */, - A926BB7027AC718A00144157 /* struct_cfg_analysis.cpp in Sources */, - A926BA5C27AC718A00144157 /* flatten_decoration_pass.cpp in Sources */, - A926BB8527AC718A00144157 /* basic_block.cpp in Sources */, - A926C07427AC718C00144157 /* disassemble.cpp in Sources */, - A926B96327AC718900144157 /* types.cpp in Sources */, - A926B8FA27AC718900144157 /* enum_string_mapping.cpp in Sources */, - A926C0FB27AC718C00144157 /* basic_block.cpp in Sources */, - A926B97827AC718900144157 /* freeze_spec_constant_value_pass.cpp in Sources */, - A926B9BA27AC718900144157 /* ssa_rewrite_pass.cpp in Sources */, - A926B8CA27AC718900144157 /* spirv_optimizer_options.cpp in Sources */, - A926BB3D27AC718A00144157 /* fix_storage_class.cpp in Sources */, - A926B87027AC718900144157 /* pch_source_reduce.cpp in Sources */, - A926B84627AC718900144157 /* conditional_branch_to_simple_conditional_branch_reduction_opportunity.cpp in Sources */, - A926BB4327AC718A00144157 /* remove_unused_interface_variables_pass.cpp in Sources */, - A926B89A27AC718900144157 /* operand_to_dominating_id_reduction_opportunity_finder.cpp in Sources */, - A926C05927AC718C00144157 /* diagnostic.cpp in Sources */, - A926B99F27AC718900144157 /* merge_return_pass.cpp in Sources */, - A926B94827AC718900144157 /* build_module.cpp in Sources */, - A926BB9D27AC718A00144157 /* upgrade_memory_model.cpp in Sources */, - A926C0BC27AC718C00144157 /* function.cpp in Sources */, - A926BA2C27AC718A00144157 /* inst_buff_addr_check_pass.cpp in Sources */, - A926B82527AC718900144157 /* reduction_util.cpp in Sources */, - A926C0DA27AC718C00144157 /* validate_memory_semantics.cpp in Sources */, - A926BB2827AC718A00144157 /* relax_float_ops_pass.cpp in Sources */, - A926C0EF27AC718C00144157 /* validate_type.cpp in Sources */, - A926C0C227AC718C00144157 /* validate_adjacency.cpp in Sources */, - A926BA5927AC718A00144157 /* dead_branch_elim_pass.cpp in Sources */, - A926B81027AC718900144157 /* remove_selection_reduction_opportunity.cpp in Sources */, - A926C08027AC718C00144157 /* validate_misc.cpp in Sources */, - A926C0E627AC718C00144157 /* validate_image.cpp in Sources */, - A926B9FF27AC718A00144157 /* ir_loader.cpp in Sources */, - A926BA8F27AC718A00144157 /* strip_nonsemantic_info_pass.cpp in Sources */, - A926BAB027AC718A00144157 /* copy_prop_arrays.cpp in Sources */, - A926B99627AC718900144157 /* loop_fission.cpp in Sources */, - A926BAD727AC718A00144157 /* block_merge_pass.cpp in Sources */, - A926B8C127AC718900144157 /* structured_construct_to_block_reduction_opportunity_finder.cpp in Sources */, - A926B8BE27AC718900144157 /* reduction_opportunity_finder.cpp in Sources */, - A926B9D827AC718A00144157 /* dead_variable_elimination.cpp in Sources */, - A926C0C527AC718C00144157 /* validate_conversion.cpp in Sources */, - A926B90927AC718900144157 /* parsed_operand.cpp in Sources */, - A926B9AB27AC718900144157 /* cfg_cleanup_pass.cpp in Sources */, - A926B97527AC718900144157 /* local_single_block_elim_pass.cpp in Sources */, - A926C06B27AC718C00144157 /* operand.cpp in Sources */, - A926BB4627AC718A00144157 /* inline_opaque_pass.cpp in Sources */, - A926C0E927AC718C00144157 /* validate_literals.cpp in Sources */, - A926BA0827AC718A00144157 /* licm_pass.cpp in Sources */, - A926BA8327AC718A00144157 /* convert_to_half_pass.cpp in Sources */, - A926C0D727AC718C00144157 /* validate_mode_setting.cpp in Sources */, - A926B7CE27AC718900144157 /* text.cpp in Sources */, - A926BB3127AC718A00144157 /* instruction.cpp in Sources */, - A926B9A527AC718900144157 /* eliminate_dead_constant_pass.cpp in Sources */, - A926B87927AC718900144157 /* remove_unused_instruction_reduction_opportunity_finder.cpp in Sources */, - A926BAEF27AC718A00144157 /* local_single_store_elim_pass.cpp in Sources */, - A926C0FE27AC718C00144157 /* validate_function.cpp in Sources */, - A926BACB27AC718A00144157 /* dead_insert_elim_pass.cpp in Sources */, - A926C0B327AC718C00144157 /* validate_bitwise.cpp in Sources */, - A926B81927AC718900144157 /* reduction_pass.cpp in Sources */, - A926BB8227AC718A00144157 /* interp_fixup_pass.cpp in Sources */, - A926B96027AC718900144157 /* code_sink.cpp in Sources */, - A926C0A127AC718C00144157 /* validate_debug.cpp in Sources */, - A926BAA127AC718A00144157 /* eliminate_dead_members_pass.cpp in Sources */, - A926B92A27AC718900144157 /* optimizer.cpp in Sources */, - A926C07A27AC718C00144157 /* text_handler.cpp in Sources */, - A926BA7127AC718A00144157 /* loop_descriptor.cpp in Sources */, - A926C0F527AC718C00144157 /* validate_execution_limitations.cpp in Sources */, - A926BA2927AC718A00144157 /* desc_sroa_util.cpp in Sources */, - A926B9ED27AC718A00144157 /* type_manager.cpp in Sources */, - A926BA0B27AC718A00144157 /* eliminate_dead_functions_pass.cpp in Sources */, - A926B8B227AC718900144157 /* structured_loop_to_selection_reduction_opportunity.cpp in Sources */, - A926C09B27AC718C00144157 /* validate_instruction.cpp in Sources */, - A926B9C627AC718900144157 /* inst_debug_printf_pass.cpp in Sources */, - A926C0F827AC718C00144157 /* validate_layout.cpp in Sources */, - A926C0B627AC718C00144157 /* validate_extensions.cpp in Sources */, - A926B8DC27AC718900144157 /* spirv_validator_options.cpp in Sources */, - A926C0A727AC718C00144157 /* validate_interfaces.cpp in Sources */, - A926B98127AC718900144157 /* inst_bindless_check_pass.cpp in Sources */, - A926B7C227AC718900144157 /* divergence_analysis.cpp in Sources */, - A926B9CF27AC718A00144157 /* mem_pass.cpp in Sources */, - A926BAD127AC718A00144157 /* scalar_analysis.cpp in Sources */, - A926B88827AC718900144157 /* merge_blocks_reduction_opportunity_finder.cpp in Sources */, - A926B7D127AC718900144157 /* assembly_grammar.cpp in Sources */, - A926B7D727AC718900144157 /* extensions.cpp in Sources */, - A926B88B27AC718900144157 /* reduction_opportunity.cpp in Sources */, - A926BA1A27AC718A00144157 /* loop_unroller.cpp in Sources */, - A926B8BB27AC718900144157 /* remove_unused_struct_member_reduction_opportunity_finder.cpp in Sources */, - A926BB0127AC718A00144157 /* loop_dependence_helpers.cpp in Sources */, - A926B93027AC718900144157 /* register_pressure.cpp in Sources */, - A926B9F927AC718A00144157 /* inline_pass.cpp in Sources */, - A926C0EC27AC718C00144157 /* instruction.cpp in Sources */, - A926C08627AC718C00144157 /* validate_capability.cpp in Sources */, - A926B9DE27AC718A00144157 /* module.cpp in Sources */, - A926B7EC27AC718900144157 /* timer.cpp in Sources */, - A926BAA427AC718A00144157 /* strength_reduction_pass.cpp in Sources */, - A926BB7F27AC718A00144157 /* local_access_chain_convert_pass.cpp in Sources */, - A926C0C827AC718C00144157 /* validate_small_type_uses.cpp in Sources */, - A926BB6427AC718A00144157 /* dataflow.cpp in Sources */, - A926BB2227AC718A00144157 /* workaround1209.cpp in Sources */, - A926B8EB27AC718900144157 /* spirv_endian.cpp in Sources */, - A926B9E727AC718A00144157 /* loop_unswitch_pass.cpp in Sources */, - A926B9EA27AC718A00144157 /* unify_const_pass.cpp in Sources */, - A926BB3727AC718A00144157 /* reduce_load_size.cpp in Sources */, - A926BB5227AC718A00144157 /* dominator_analysis.cpp in Sources */, - A926BAB627AC718A00144157 /* inline_exhaustive_pass.cpp in Sources */, - A926B87F27AC718900144157 /* operand_to_undef_reduction_opportunity_finder.cpp in Sources */, - A926C0A427AC718C00144157 /* validate_builtins.cpp in Sources */, - A926BB0A27AC718A00144157 /* fold.cpp in Sources */, - A926B97227AC718900144157 /* decoration_manager.cpp in Sources */, - A926B8B527AC718900144157 /* structured_construct_to_block_reduction_opportunity.cpp in Sources */, - A926BAFB27AC718A00144157 /* propagator.cpp in Sources */, - A926B84027AC718900144157 /* simple_conditional_branch_to_branch_opportunity_finder.cpp in Sources */, - A926B86727AC718900144157 /* remove_instruction_reduction_opportunity.cpp in Sources */, - A926BB4927AC718A00144157 /* replace_invalid_opc.cpp in Sources */, - A926BA6227AC718A00144157 /* folding_rules.cpp in Sources */, + A9F7B4B829425A1900B30DA7 /* spirv_reducer_options.cpp in Sources */, + A9F7B4E229425A1900B30DA7 /* register_pressure.cpp in Sources */, + A9F7B79729425A1900B30DA7 /* loop_peeling.cpp in Sources */, + A9F7B6A729425A1900B30DA7 /* block_merge_pass.cpp in Sources */, + A9F7B4D029425A1900B30DA7 /* opcode.cpp in Sources */, + A9F7BC8929425A1B00B30DA7 /* validate_builtins.cpp in Sources */, + A9F7BC6B29425A1B00B30DA7 /* validate_non_uniform.cpp in Sources */, + A9F7B3B329425A1800B30DA7 /* table.cpp in Sources */, + A9F7BCC229425A1B00B30DA7 /* validate_logicals.cpp in Sources */, + A9F7B43A29425A1800B30DA7 /* change_operand_to_undef_reduction_opportunity.cpp in Sources */, + A9F7B3AA29425A1800B30DA7 /* bit_vector.cpp in Sources */, + A9F7B63229425A1900B30DA7 /* ir_context.cpp in Sources */, + A9F7B3D429425A1800B30DA7 /* structured_loop_to_selection_reduction_opportunity_finder.cpp in Sources */, + A9F7B65F29425A1900B30DA7 /* if_conversion.cpp in Sources */, + A9F7B74629425A1900B30DA7 /* remove_dontinline_pass.cpp in Sources */, + A9F7B6AD29425A1900B30DA7 /* convert_to_sampled_image_pass.cpp in Sources */, + A9F7B55D29425A1900B30DA7 /* merge_return_pass.cpp in Sources */, + A9F7B42529425A1800B30DA7 /* reducer.cpp in Sources */, + A9F7B3E629425A1800B30DA7 /* remove_function_reduction_opportunity.cpp in Sources */, + A9F7BC5029425A1B00B30DA7 /* disassemble.cpp in Sources */, + A9F7B64A29425A1900B30DA7 /* composite.cpp in Sources */, + A9F7BCAA29425A1B00B30DA7 /* validate_conversion.cpp in Sources */, + A9F7BCD129425A1B00B30DA7 /* instruction.cpp in Sources */, + A9F7BC6E29425A1B00B30DA7 /* validate_ray_query.cpp in Sources */, + A9F7BC4729425A1B00B30DA7 /* operand.cpp in Sources */, + A9F7B5AE29425A1900B30DA7 /* unify_const_pass.cpp in Sources */, + A9F7B3C829425A1800B30DA7 /* operand_to_const_reduction_opportunity_finder.cpp in Sources */, + A9F7B4AC29425A1900B30DA7 /* enum_string_mapping.cpp in Sources */, + A9F7BCBC29425A1B00B30DA7 /* validate_mode_setting.cpp in Sources */, + A9F7B49D29425A1900B30DA7 /* binary.cpp in Sources */, + A9F7B74329425A1900B30DA7 /* struct_cfg_analysis.cpp in Sources */, + A9F7BC6229425A1B00B30DA7 /* validate_capability.cpp in Sources */, + A9F7BC3529425A1B00B30DA7 /* diagnostic.cpp in Sources */, + A9F7BC3B29425A1B00B30DA7 /* libspirv.cpp in Sources */, + A9F7BCDA29425A1B00B30DA7 /* validate_mesh_shading.cpp in Sources */, + A9F7B4FA29425A1900B30DA7 /* build_module.cpp in Sources */, + A9F7B56929425A1900B30DA7 /* cfg_cleanup_pass.cpp in Sources */, + A9F7B47F29425A1800B30DA7 /* spirv_fuzzer_options.cpp in Sources */, + A9F7BCA729425A1B00B30DA7 /* validate_adjacency.cpp in Sources */, + A9F7BCB329425A1B00B30DA7 /* validate_id.cpp in Sources */, + A9F7B3A729425A1800B30DA7 /* parse_number.cpp in Sources */, + A9F7B6A129425A1900B30DA7 /* scalar_analysis.cpp in Sources */, + A9F7B36229425A1800B30DA7 /* lint_divergent_derivatives.cpp in Sources */, + A9F7B41C29425A1800B30DA7 /* remove_struct_member_reduction_opportunity.cpp in Sources */, + A9F7BC7429425A1B00B30DA7 /* validate_scopes.cpp in Sources */, + A9F7B57B29425A1900B30DA7 /* strip_debug_info_pass.cpp in Sources */, + A9F7B61A29425A1900B30DA7 /* eliminate_dead_functions_util.cpp in Sources */, + A9F7B3DA29425A1800B30DA7 /* remove_function_reduction_opportunity_finder.cpp in Sources */, + A9F7B57E29425A1900B30DA7 /* ssa_rewrite_pass.cpp in Sources */, + A9F7BCCB29425A1B00B30DA7 /* validate_image.cpp in Sources */, + A9F7B5A229425A1900B30DA7 /* module.cpp in Sources */, + A9F7B3F829425A1800B30DA7 /* merge_blocks_reduction_opportunity.cpp in Sources */, + A9F7B5E729425A1900B30DA7 /* constants.cpp in Sources */, + A9F7B46129425A1800B30DA7 /* remove_block_reduction_opportunity.cpp in Sources */, + A9F7B35929425A1800B30DA7 /* spirv_target_env.cpp in Sources */, + A9F7B55429425A1900B30DA7 /* loop_fission.cpp in Sources */, + A9F7B44F29425A1800B30DA7 /* remove_block_reduction_opportunity_finder.cpp in Sources */, + A9F7B3EC29425A1800B30DA7 /* remove_selection_reduction_opportunity_finder.cpp in Sources */, + A9F7B6DA29425A1900B30DA7 /* fold.cpp in Sources */, + A9F7B5F629425A1900B30DA7 /* def_use_manager.cpp in Sources */, + A9F7B4BB29425A1900B30DA7 /* parsed_operand.cpp in Sources */, + A9F7B66E29425A1900B30DA7 /* eliminate_dead_members_pass.cpp in Sources */, + A9F7B70429425A1900B30DA7 /* instruction.cpp in Sources */, + A9F7B4C429425A1900B30DA7 /* name_mapper.cpp in Sources */, + A9F7B77629425A1900B30DA7 /* analyze_live_input_pass.cpp in Sources */, + A9F7BC5F29425A1B00B30DA7 /* validate_cfg.cpp in Sources */, + A9F7B3FB29425A1800B30DA7 /* change_operand_reduction_opportunity.cpp in Sources */, + A9F7BC7D29425A1B00B30DA7 /* validate_instruction.cpp in Sources */, + A9F7B54529425A1900B30DA7 /* instrument_pass.cpp in Sources */, + A9F7BC7129425A1B00B30DA7 /* validate_ray_tracing.cpp in Sources */, + A9F7B55129425A1900B30DA7 /* pass.cpp in Sources */, + A9F7B60229425A1900B30DA7 /* ccp_pass.cpp in Sources */, + A9F7B5F029425A1900B30DA7 /* desc_sroa_util.cpp in Sources */, + A9F7BC9829425A1B00B30DA7 /* validate_bitwise.cpp in Sources */, + A9F7B67729425A1900B30DA7 /* block_merge_util.cpp in Sources */, + A9F7BC8629425A1B00B30DA7 /* validate_debug.cpp in Sources */, + A9F7B63B29425A1900B30DA7 /* loop_descriptor.cpp in Sources */, + A9F7B4C729425A1900B30DA7 /* linker.cpp in Sources */, + A9F7B53329425A1900B30DA7 /* freeze_spec_constant_value_pass.cpp in Sources */, + A9F7B39B29425A1800B30DA7 /* string_utils.cpp in Sources */, + A9F7BCBF29425A1B00B30DA7 /* validate_memory_semantics.cpp in Sources */, + A9F7B51E29425A1900B30DA7 /* types.cpp in Sources */, + A9F7B38029425A1800B30DA7 /* pch_source.cpp in Sources */, + A9F7B48B29425A1800B30DA7 /* print.cpp in Sources */, + A9F7BCA129425A1B00B30DA7 /* function.cpp in Sources */, + A9F7B68629425A1900B30DA7 /* inline_exhaustive_pass.cpp in Sources */, + A9F7B56329425A1900B30DA7 /* eliminate_dead_constant_pass.cpp in Sources */, + A9F7B71929425A1900B30DA7 /* inline_opaque_pass.cpp in Sources */, + A9F7B45829425A1800B30DA7 /* conditional_branch_to_simple_conditional_branch_opportunity_finder.cpp in Sources */, + A9F7B36529425A1800B30DA7 /* linter.cpp in Sources */, + A9F7B4FD29425A1900B30DA7 /* eliminate_dead_output_stores_pass.cpp in Sources */, + A9F7B79429425A1900B30DA7 /* compact_ids_pass.cpp in Sources */, + A9F7B62C29425A1900B30DA7 /* folding_rules.cpp in Sources */, + A9F7B65929425A1900B30DA7 /* strip_nonsemantic_info_pass.cpp in Sources */, + A9F7B6C529425A1900B30DA7 /* private_to_local_pass.cpp in Sources */, + A9F7B5A829425A1900B30DA7 /* fold_spec_constant_op_and_composite_pass.cpp in Sources */, + A9F7BC8029425A1B00B30DA7 /* validate_ray_tracing_reorder.cpp in Sources */, + A9F7BCC529425A1B00B30DA7 /* validate_derivatives.cpp in Sources */, + A9F7B3E329425A1800B30DA7 /* simple_conditional_branch_to_branch_reduction_opportunity.cpp in Sources */, + A9F7B64729425A1900B30DA7 /* control_dependence.cpp in Sources */, + A9F7B47329425A1800B30DA7 /* spirv_optimizer_options.cpp in Sources */, + A9F7B41929425A1800B30DA7 /* pch_source_reduce.cpp in Sources */, + A9F7B59C29425A1900B30DA7 /* dead_variable_elimination.cpp in Sources */, + A9F7B3EF29425A1800B30DA7 /* conditional_branch_to_simple_conditional_branch_reduction_opportunity.cpp in Sources */, + A9F7B67129425A1900B30DA7 /* strength_reduction_pass.cpp in Sources */, + A9F7B78529425A1900B30DA7 /* scalar_analysis_simplification.cpp in Sources */, + A9F7BC8C29425A1B00B30DA7 /* validate_interfaces.cpp in Sources */, + A9F7BC7729425A1B00B30DA7 /* validate_atomics.cpp in Sources */, + A9F7B4D629425A1900B30DA7 /* ext_inst.cpp in Sources */, + A9F7B44329425A1800B30DA7 /* operand_to_dominating_id_reduction_opportunity_finder.cpp in Sources */, + A9F7B52D29425A1900B30DA7 /* decoration_manager.cpp in Sources */, + A9F7B6F529425A1900B30DA7 /* workaround1209.cpp in Sources */, + A9F7B75829425A1900B30DA7 /* interp_fixup_pass.cpp in Sources */, + A9F7BCCE29425A1B00B30DA7 /* validate_literals.cpp in Sources */, + A9F7B4A629425A1900B30DA7 /* diff.cpp in Sources */, + A9F7B55729425A1900B30DA7 /* dominator_tree.cpp in Sources */, + A9F7B6E629425A1900B30DA7 /* interface_var_sroa.cpp in Sources */, + A9F7B77929425A1900B30DA7 /* upgrade_memory_model.cpp in Sources */, + A9F7B4F729425A1900B30DA7 /* combine_access_chains.cpp in Sources */, + A9F7B64429425A1900B30DA7 /* instruction_list.cpp in Sources */, + A9F7B61729425A1900B30DA7 /* aggressive_dead_code_elim_pass.cpp in Sources */, + A9F7B3CE29425A1800B30DA7 /* reduction_util.cpp in Sources */, + A9F7B5D229425A1900B30DA7 /* eliminate_dead_functions_pass.cpp in Sources */, + A9F7BCAD29425A1B00B30DA7 /* validate_small_type_uses.cpp in Sources */, + A9F7BC5C29425A1B00B30DA7 /* validate_misc.cpp in Sources */, + A9F7B51B29425A1900B30DA7 /* code_sink.cpp in Sources */, + A9F7B68329425A1900B30DA7 /* pass_manager.cpp in Sources */, + A9F7B54E29425A1900B30DA7 /* feature_manager.cpp in Sources */, + A9F7B56C29425A1900B30DA7 /* wrap_opkill.cpp in Sources */, + A9F7B73729425A1900B30DA7 /* dataflow.cpp in Sources */, + A9F7BCD429425A1B00B30DA7 /* validate_type.cpp in Sources */, + A9F7B6D429425A1900B30DA7 /* set_spec_constant_default_value_pass.cpp in Sources */, + A9F7B3B929425A1800B30DA7 /* remove_selection_reduction_opportunity.cpp in Sources */, + A9F7BC9529425A1B00B30DA7 /* validate_constants.cpp in Sources */, + A9F7BCE029425A1B00B30DA7 /* validate_layout.cpp in Sources */, + A9F7B57229425A1900B30DA7 /* const_folding_rules.cpp in Sources */, + A9F7B71C29425A1900B30DA7 /* replace_invalid_opc.cpp in Sources */, + A9F7B56F29425A1900B30DA7 /* eliminate_dead_io_components_pass.cpp in Sources */, + A9F7B46A29425A1800B30DA7 /* structured_construct_to_block_reduction_opportunity_finder.cpp in Sources */, + A9F7B46729425A1800B30DA7 /* reduction_opportunity_finder.cpp in Sources */, + A9F7B50329425A1900B30DA7 /* liveness.cpp in Sources */, + A9F7B66529425A1900B30DA7 /* debug_info_manager.cpp in Sources */, + A9F7B6FB29425A1900B30DA7 /* relax_float_ops_pass.cpp in Sources */, + A9F7B71329425A1900B30DA7 /* value_number_table.cpp in Sources */, + A9F7B37429425A1800B30DA7 /* text.cpp in Sources */, + A9F7B6BF29425A1900B30DA7 /* local_single_store_elim_pass.cpp in Sources */, + A9F7B42229425A1800B30DA7 /* remove_unused_instruction_reduction_opportunity_finder.cpp in Sources */, + A9F7B3C229425A1800B30DA7 /* reduction_pass.cpp in Sources */, + A9F7B64D29425A1900B30DA7 /* convert_to_half_pass.cpp in Sources */, + A9F7B70A29425A1900B30DA7 /* reduce_load_size.cpp in Sources */, + A9F7B75529425A1900B30DA7 /* local_access_chain_convert_pass.cpp in Sources */, + A9F7B53F29425A1900B30DA7 /* inst_bindless_check_pass.cpp in Sources */, + A9F7B53029425A1900B30DA7 /* local_single_block_elim_pass.cpp in Sources */, + A9F7BCDD29425A1B00B30DA7 /* validate_execution_limitations.cpp in Sources */, + A9F7B64129425A1900B30DA7 /* function.cpp in Sources */, + A9F7B66229425A1900B30DA7 /* fix_func_call_arguments.cpp in Sources */, + A9F7B45B29425A1800B30DA7 /* structured_loop_to_selection_reduction_opportunity.cpp in Sources */, + A9F7B76A29425A1900B30DA7 /* graphics_robust_access_pass.cpp in Sources */, + A9F7BC9E29425A1B00B30DA7 /* construct.cpp in Sources */, + A9F7B5E129425A1900B30DA7 /* loop_unroller.cpp in Sources */, + A9F7B48529425A1800B30DA7 /* spirv_validator_options.cpp in Sources */, + A9F7B36829425A1800B30DA7 /* divergence_analysis.cpp in Sources */, + A9F7B4E529425A1900B30DA7 /* loop_utils.cpp in Sources */, + A9F7B4EB29425A1900B30DA7 /* spread_volatile_semantics.cpp in Sources */, + A9F7B67429425A1900B30DA7 /* desc_sroa.cpp in Sources */, + A9F7B69B29425A1900B30DA7 /* dead_insert_elim_pass.cpp in Sources */, + A9F7BC8329425A1B00B30DA7 /* validate_decorations.cpp in Sources */, + A9F7B68F29425A1900B30DA7 /* loop_fusion_pass.cpp in Sources */, + A9F7B43129425A1800B30DA7 /* merge_blocks_reduction_opportunity_finder.cpp in Sources */, + A9F7B62629425A1900B30DA7 /* flatten_decoration_pass.cpp in Sources */, + A9F7B71029425A1900B30DA7 /* fix_storage_class.cpp in Sources */, + A9F7B4CD29425A1900B30DA7 /* software_version.cpp in Sources */, + A9F7B37729425A1800B30DA7 /* assembly_grammar.cpp in Sources */, + A9F7B6DD29425A1900B30DA7 /* amd_ext_to_khr.cpp in Sources */, + A9F7BC5629425A1B00B30DA7 /* text_handler.cpp in Sources */, + A9F7B4DC29425A1900B30DA7 /* optimizer.cpp in Sources */, + A9F7BCEF29425A1B00B30DA7 /* validation_state.cpp in Sources */, + A9F7B59329425A1900B30DA7 /* mem_pass.cpp in Sources */, + A9F7B72B29425A1900B30DA7 /* replace_desc_array_access_using_var_index.cpp in Sources */, + A9F7B5C629425A1900B30DA7 /* ir_loader.cpp in Sources */, + A9F7B37D29425A1800B30DA7 /* extensions.cpp in Sources */, + A9F7B5B129425A1900B30DA7 /* type_manager.cpp in Sources */, + A9F7B6E029425A1900B30DA7 /* scalar_replacement_pass.cpp in Sources */, + A9F7B5AB29425A1900B30DA7 /* loop_unswitch_pass.cpp in Sources */, + A9F7B43429425A1800B30DA7 /* reduction_opportunity.cpp in Sources */, + A9F7BC9B29425A1B00B30DA7 /* validate_extensions.cpp in Sources */, + A9F7B46429425A1800B30DA7 /* remove_unused_struct_member_reduction_opportunity_finder.cpp in Sources */, + A9F7B39529425A1800B30DA7 /* timer.cpp in Sources */, + A9F7B60E29425A1900B30DA7 /* pch_source_opt.cpp in Sources */, + A9F7B5C029425A1900B30DA7 /* inline_pass.cpp in Sources */, + A9F7B5F329425A1900B30DA7 /* inst_buff_addr_check_pass.cpp in Sources */, + A9F7BC6829425A1B00B30DA7 /* validate_barriers.cpp in Sources */, + A9F7B6EF29425A1900B30DA7 /* redundancy_elimination.cpp in Sources */, + A9F7B49429425A1800B30DA7 /* spirv_endian.cpp in Sources */, + A9F7B52A29425A1900B30DA7 /* cfg.cpp in Sources */, + A9F7B59929425A1900B30DA7 /* remove_duplicates_pass.cpp in Sources */, + A9F7BC5929425A1B00B30DA7 /* validate_annotation.cpp in Sources */, + A9F7B6D129425A1900B30DA7 /* loop_dependence_helpers.cpp in Sources */, + A9F7B75B29425A1900B30DA7 /* basic_block.cpp in Sources */, + A9F7B58129425A1900B30DA7 /* loop_dependence.cpp in Sources */, + A9F7B5CF29425A1900B30DA7 /* licm_pass.cpp in Sources */, + A9F7B42829425A1800B30DA7 /* operand_to_undef_reduction_opportunity_finder.cpp in Sources */, + A9F7B62329425A1900B30DA7 /* dead_branch_elim_pass.cpp in Sources */, + A9F7B58A29425A1900B30DA7 /* inst_debug_printf_pass.cpp in Sources */, + A9F7B54229425A1900B30DA7 /* local_redundancy_elimination.cpp in Sources */, + A9F7BCC829425A1B00B30DA7 /* validate_memory.cpp in Sources */, + A9F7B72529425A1900B30DA7 /* dominator_analysis.cpp in Sources */, + A9F7BC8F29425A1B00B30DA7 /* validate.cpp in Sources */, + A9F7B67D29425A1900B30DA7 /* copy_prop_arrays.cpp in Sources */, + A9F7B45E29425A1800B30DA7 /* structured_construct_to_block_reduction_opportunity.cpp in Sources */, + A9F7BCEC29425A1B00B30DA7 /* validate_composites.cpp in Sources */, + A9F7B77329425A1900B30DA7 /* loop_fusion.cpp in Sources */, + A9F7BCE329425A1B00B30DA7 /* basic_block.cpp in Sources */, + A9F7B71629425A1900B30DA7 /* remove_unused_interface_variables_pass.cpp in Sources */, + A9F7BCE629425A1B00B30DA7 /* validate_function.cpp in Sources */, + A9F7B5DB29425A1900B30DA7 /* vector_dce.cpp in Sources */, + A9F7BCF229425A1B00B30DA7 /* validate_primitives.cpp in Sources */, + A9F7B62029425A1900B30DA7 /* simplification_pass.cpp in Sources */, + A9F7B6CB29425A1900B30DA7 /* propagator.cpp in Sources */, + A9F7B3E929425A1800B30DA7 /* simple_conditional_branch_to_branch_opportunity_finder.cpp in Sources */, + A9F7B41029425A1800B30DA7 /* remove_instruction_reduction_opportunity.cpp in Sources */, + A9F7BCB929425A1B00B30DA7 /* validate_arithmetics.cpp in Sources */, ); runOnlyForDeploymentPostprocessing = 0; }; @@ -4860,216 +5034,228 @@ isa = PBXSourcesBuildPhase; buildActionMask = 2147483647; files = ( - A926B80C27AC718900144157 /* table.cpp in Sources */, - A926B89327AC718900144157 /* change_operand_to_undef_reduction_opportunity.cpp in Sources */, - A926BA7F27AC718A00144157 /* control_dependence.cpp in Sources */, - A926B80327AC718900144157 /* bit_vector.cpp in Sources */, - A926BA7927AC718A00144157 /* function.cpp in Sources */, - A926BA3D27AC718A00144157 /* ccp_pass.cpp in Sources */, - A926BA9727AC718A00144157 /* if_conversion.cpp in Sources */, - A926B82D27AC718900144157 /* structured_loop_to_selection_reduction_opportunity_finder.cpp in Sources */, - A926BA5227AC718A00144157 /* eliminate_dead_functions_util.cpp in Sources */, - A926B87E27AC718900144157 /* reducer.cpp in Sources */, - A926B83F27AC718900144157 /* remove_function_reduction_opportunity.cpp in Sources */, - A926B82127AC718900144157 /* operand_to_const_reduction_opportunity_finder.cpp in Sources */, - A926C06127AC718C00144157 /* libspirv.cpp in Sources */, - A926C09727AC718C00144157 /* validate_atomics.cpp in Sources */, - A926C08527AC718C00144157 /* validate_cfg.cpp in Sources */, - A926B9B927AC718900144157 /* strip_debug_info_pass.cpp in Sources */, - A926B8F627AC718900144157 /* binary.cpp in Sources */, - A926BAC127AC718A00144157 /* loop_fusion_pass.cpp in Sources */, - A926BB5A27AC718A00144157 /* replace_desc_array_access_using_var_index.cpp in Sources */, - A926B93B27AC718900144157 /* spread_volatile_semantics.cpp in Sources */, - A926C10627AC718C00144157 /* validate_composites.cpp in Sources */, - A926C0D027AC718C00144157 /* validate_id.cpp in Sources */, - A926B98927AC718900144157 /* instrument_pass.cpp in Sources */, - A926B91727AC718900144157 /* linker.cpp in Sources */, - A926B8D827AC718900144157 /* spirv_fuzzer_options.cpp in Sources */, - A926BA1627AC718A00144157 /* vector_dce.cpp in Sources */, - A926BAA927AC718A00144157 /* desc_sroa.cpp in Sources */, - A926BB4227AC718A00144157 /* value_number_table.cpp in Sources */, - A926BB0F27AC718A00144157 /* amd_ext_to_khr.cpp in Sources */, - A926C0B227AC718C00144157 /* validate_constants.cpp in Sources */, - A926B80027AC718900144157 /* parse_number.cpp in Sources */, - A926BA9A27AC718A00144157 /* debug_info_manager.cpp in Sources */, - A926C0BB27AC718C00144157 /* construct.cpp in Sources */, - A926B92627AC718900144157 /* ext_inst.cpp in Sources */, - A926B94727AC718900144157 /* combine_access_chains.cpp in Sources */, - A926BA2227AC718A00144157 /* constants.cpp in Sources */, - A926B7BE27AC718900144157 /* lint_divergent_derivatives.cpp in Sources */, - A926B87527AC718900144157 /* remove_struct_member_reduction_opportunity.cpp in Sources */, - A926B9B327AC718900144157 /* const_folding_rules.cpp in Sources */, - A926BAF727AC718A00144157 /* private_to_local_pass.cpp in Sources */, - A926BB9C27AC718A00144157 /* loop_fusion.cpp in Sources */, - A926C07F27AC718C00144157 /* validate_annotation.cpp in Sources */, - A926B91D27AC718900144157 /* software_version.cpp in Sources */, - A926BA6A27AC718A00144157 /* ir_context.cpp in Sources */, - A926B99227AC718900144157 /* feature_manager.cpp in Sources */, - A926B83327AC718900144157 /* remove_function_reduction_opportunity_finder.cpp in Sources */, - A926B85127AC718900144157 /* merge_blocks_reduction_opportunity.cpp in Sources */, - A926B8BA27AC718900144157 /* remove_block_reduction_opportunity.cpp in Sources */, - A926BADF27AC718A00144157 /* convert_to_sampled_image_pass.cpp in Sources */, - A926B7B527AC718900144157 /* spirv_target_env.cpp in Sources */, - A926BBAB27AC718A00144157 /* scalar_analysis_simplification.cpp in Sources */, - A926B99B27AC718900144157 /* dominator_tree.cpp in Sources */, - A926C0DF27AC718C00144157 /* validate_logicals.cpp in Sources */, - A926BAB527AC718A00144157 /* pass_manager.cpp in Sources */, - A926B8A827AC718900144157 /* remove_block_reduction_opportunity_finder.cpp in Sources */, - A926B98627AC718900144157 /* local_redundancy_elimination.cpp in Sources */, - A926B84527AC718900144157 /* remove_selection_reduction_opportunity_finder.cpp in Sources */, - A926BA4627AC718A00144157 /* pch_source_opt.cpp in Sources */, - A926B93527AC718900144157 /* loop_utils.cpp in Sources */, - A926BB1227AC718A00144157 /* scalar_replacement_pass.cpp in Sources */, - A926B9BF27AC718900144157 /* loop_dependence.cpp in Sources */, - A926BB1E27AC718A00144157 /* redundancy_elimination.cpp in Sources */, - A926BB0627AC718A00144157 /* set_spec_constant_default_value_pass.cpp in Sources */, - A926B85427AC718900144157 /* change_operand_reduction_opportunity.cpp in Sources */, - A926C09127AC718C00144157 /* validate_non_uniform.cpp in Sources */, - A926BA3127AC718A00144157 /* def_use_manager.cpp in Sources */, - A926BAAC27AC718A00144157 /* block_merge_util.cpp in Sources */, - A926B92027AC718900144157 /* opcode.cpp in Sources */, - A926BA7C27AC718A00144157 /* instruction_list.cpp in Sources */, - A926BA5827AC718A00144157 /* simplification_pass.cpp in Sources */, - A926C0A027AC718C00144157 /* validate_decorations.cpp in Sources */, - A926C09427AC718C00144157 /* validate_scopes.cpp in Sources */, - A926BBBA27AC718A00144157 /* compact_ids_pass.cpp in Sources */, - A926B91427AC718900144157 /* name_mapper.cpp in Sources */, - A926B9B027AC718900144157 /* wrap_opkill.cpp in Sources */, - A926BBBD27AC718A00144157 /* loop_peeling.cpp in Sources */, - A926C10927AC718C00144157 /* validation_state.cpp in Sources */, - A926B97127AC718900144157 /* cfg.cpp in Sources */, - A926BA4F27AC718A00144157 /* aggressive_dead_code_elim_pass.cpp in Sources */, - A926B99527AC718900144157 /* pass.cpp in Sources */, - A926B7F427AC718900144157 /* string_utils.cpp in Sources */, - A926C08E27AC718C00144157 /* validate_barriers.cpp in Sources */, - A926B7DC27AC718900144157 /* pch_source.cpp in Sources */, - A926B9D727AC718A00144157 /* remove_duplicates_pass.cpp in Sources */, - A926C0E227AC718C00144157 /* validate_derivatives.cpp in Sources */, - A926C0D627AC718C00144157 /* validate_arithmetics.cpp in Sources */, - A926B9E627AC718A00144157 /* fold_spec_constant_op_and_composite_pass.cpp in Sources */, - A926C0E527AC718C00144157 /* validate_memory.cpp in Sources */, - A926B90827AC718900144157 /* spirv_reducer_options.cpp in Sources */, - A926C10C27AC718C00144157 /* validate_primitives.cpp in Sources */, - A926BB9627AC718A00144157 /* graphics_robust_access_pass.cpp in Sources */, - A926B8E427AC718900144157 /* print.cpp in Sources */, - A926B8B127AC718900144157 /* conditional_branch_to_simple_conditional_branch_opportunity_finder.cpp in Sources */, - A926C0AC27AC718C00144157 /* validate.cpp in Sources */, - A926B7C127AC718900144157 /* linter.cpp in Sources */, - A926BA8227AC718A00144157 /* composite.cpp in Sources */, - A926B83C27AC718900144157 /* simple_conditional_branch_to_branch_reduction_opportunity.cpp in Sources */, - A926BB7227AC718A00144157 /* struct_cfg_analysis.cpp in Sources */, - A926BA5E27AC718A00144157 /* flatten_decoration_pass.cpp in Sources */, - A926BB8727AC718A00144157 /* basic_block.cpp in Sources */, - A926C07627AC718C00144157 /* disassemble.cpp in Sources */, - A926B96527AC718900144157 /* types.cpp in Sources */, - A926B8FC27AC718900144157 /* enum_string_mapping.cpp in Sources */, - A926C0FD27AC718C00144157 /* basic_block.cpp in Sources */, - A926B97A27AC718900144157 /* freeze_spec_constant_value_pass.cpp in Sources */, - A926B9BC27AC718900144157 /* ssa_rewrite_pass.cpp in Sources */, - A926B8CC27AC718900144157 /* spirv_optimizer_options.cpp in Sources */, - A926BB3F27AC718A00144157 /* fix_storage_class.cpp in Sources */, - A926B87227AC718900144157 /* pch_source_reduce.cpp in Sources */, - A926B84827AC718900144157 /* conditional_branch_to_simple_conditional_branch_reduction_opportunity.cpp in Sources */, - A926BB4527AC718A00144157 /* remove_unused_interface_variables_pass.cpp in Sources */, - A926B89C27AC718900144157 /* operand_to_dominating_id_reduction_opportunity_finder.cpp in Sources */, - A926C05B27AC718C00144157 /* diagnostic.cpp in Sources */, - A926B9A127AC718900144157 /* merge_return_pass.cpp in Sources */, - A926B94A27AC718900144157 /* build_module.cpp in Sources */, - A926BB9F27AC718A00144157 /* upgrade_memory_model.cpp in Sources */, - A926C0BE27AC718C00144157 /* function.cpp in Sources */, - A926BA2E27AC718A00144157 /* inst_buff_addr_check_pass.cpp in Sources */, - A926B82727AC718900144157 /* reduction_util.cpp in Sources */, - A926C0DC27AC718C00144157 /* validate_memory_semantics.cpp in Sources */, - A926BB2A27AC718A00144157 /* relax_float_ops_pass.cpp in Sources */, - A926C0F127AC718C00144157 /* validate_type.cpp in Sources */, - A926C0C427AC718C00144157 /* validate_adjacency.cpp in Sources */, - A926BA5B27AC718A00144157 /* dead_branch_elim_pass.cpp in Sources */, - A926B81227AC718900144157 /* remove_selection_reduction_opportunity.cpp in Sources */, - A926C08227AC718C00144157 /* validate_misc.cpp in Sources */, - A926C0E827AC718C00144157 /* validate_image.cpp in Sources */, - A926BA0127AC718A00144157 /* ir_loader.cpp in Sources */, - A926BA9127AC718A00144157 /* strip_nonsemantic_info_pass.cpp in Sources */, - A926BAB227AC718A00144157 /* copy_prop_arrays.cpp in Sources */, - A926B99827AC718900144157 /* loop_fission.cpp in Sources */, - A926BAD927AC718A00144157 /* block_merge_pass.cpp in Sources */, - A926B8C327AC718900144157 /* structured_construct_to_block_reduction_opportunity_finder.cpp in Sources */, - A926B8C027AC718900144157 /* reduction_opportunity_finder.cpp in Sources */, - A926B9DA27AC718A00144157 /* dead_variable_elimination.cpp in Sources */, - A926C0C727AC718C00144157 /* validate_conversion.cpp in Sources */, - A926B90B27AC718900144157 /* parsed_operand.cpp in Sources */, - A926B9AD27AC718900144157 /* cfg_cleanup_pass.cpp in Sources */, - A926B97727AC718900144157 /* local_single_block_elim_pass.cpp in Sources */, - A926C06D27AC718C00144157 /* operand.cpp in Sources */, - A926BB4827AC718A00144157 /* inline_opaque_pass.cpp in Sources */, - A926C0EB27AC718C00144157 /* validate_literals.cpp in Sources */, - A926BA0A27AC718A00144157 /* licm_pass.cpp in Sources */, - A926BA8527AC718A00144157 /* convert_to_half_pass.cpp in Sources */, - A926C0D927AC718C00144157 /* validate_mode_setting.cpp in Sources */, - A926B7D027AC718900144157 /* text.cpp in Sources */, - A926BB3327AC718A00144157 /* instruction.cpp in Sources */, - A926B9A727AC718900144157 /* eliminate_dead_constant_pass.cpp in Sources */, - A926B87B27AC718900144157 /* remove_unused_instruction_reduction_opportunity_finder.cpp in Sources */, - A926BAF127AC718A00144157 /* local_single_store_elim_pass.cpp in Sources */, - A926C10027AC718C00144157 /* validate_function.cpp in Sources */, - A926BACD27AC718A00144157 /* dead_insert_elim_pass.cpp in Sources */, - A926C0B527AC718C00144157 /* validate_bitwise.cpp in Sources */, - A926B81B27AC718900144157 /* reduction_pass.cpp in Sources */, - A926BB8427AC718A00144157 /* interp_fixup_pass.cpp in Sources */, - A926B96227AC718900144157 /* code_sink.cpp in Sources */, - A926C0A327AC718C00144157 /* validate_debug.cpp in Sources */, - A926BAA327AC718A00144157 /* eliminate_dead_members_pass.cpp in Sources */, - A926B92C27AC718900144157 /* optimizer.cpp in Sources */, - A926C07C27AC718C00144157 /* text_handler.cpp in Sources */, - A926BA7327AC718A00144157 /* loop_descriptor.cpp in Sources */, - A926C0F727AC718C00144157 /* validate_execution_limitations.cpp in Sources */, - A926BA2B27AC718A00144157 /* desc_sroa_util.cpp in Sources */, - A926B9EF27AC718A00144157 /* type_manager.cpp in Sources */, - A926BA0D27AC718A00144157 /* eliminate_dead_functions_pass.cpp in Sources */, - A926B8B427AC718900144157 /* structured_loop_to_selection_reduction_opportunity.cpp in Sources */, - A926C09D27AC718C00144157 /* validate_instruction.cpp in Sources */, - A926B9C827AC718900144157 /* inst_debug_printf_pass.cpp in Sources */, - A926C0FA27AC718C00144157 /* validate_layout.cpp in Sources */, - A926C0B827AC718C00144157 /* validate_extensions.cpp in Sources */, - A926B8DE27AC718900144157 /* spirv_validator_options.cpp in Sources */, - A926C0A927AC718C00144157 /* validate_interfaces.cpp in Sources */, - A926B98327AC718900144157 /* inst_bindless_check_pass.cpp in Sources */, - A926B7C427AC718900144157 /* divergence_analysis.cpp in Sources */, - A926B9D127AC718A00144157 /* mem_pass.cpp in Sources */, - A926BAD327AC718A00144157 /* scalar_analysis.cpp in Sources */, - A926B88A27AC718900144157 /* merge_blocks_reduction_opportunity_finder.cpp in Sources */, - A926B7D327AC718900144157 /* assembly_grammar.cpp in Sources */, - A926B7D927AC718900144157 /* extensions.cpp in Sources */, - A926B88D27AC718900144157 /* reduction_opportunity.cpp in Sources */, - A926BA1C27AC718A00144157 /* loop_unroller.cpp in Sources */, - A926B8BD27AC718900144157 /* remove_unused_struct_member_reduction_opportunity_finder.cpp in Sources */, - A926BB0327AC718A00144157 /* loop_dependence_helpers.cpp in Sources */, - A926B93227AC718900144157 /* register_pressure.cpp in Sources */, - A926B9FB27AC718A00144157 /* inline_pass.cpp in Sources */, - A926C0EE27AC718C00144157 /* instruction.cpp in Sources */, - A926C08827AC718C00144157 /* validate_capability.cpp in Sources */, - A926B9E027AC718A00144157 /* module.cpp in Sources */, - A926B7EE27AC718900144157 /* timer.cpp in Sources */, - A926BAA627AC718A00144157 /* strength_reduction_pass.cpp in Sources */, - A926BB8127AC718A00144157 /* local_access_chain_convert_pass.cpp in Sources */, - A926C0CA27AC718C00144157 /* validate_small_type_uses.cpp in Sources */, - A926BB6627AC718A00144157 /* dataflow.cpp in Sources */, - A926BB2427AC718A00144157 /* workaround1209.cpp in Sources */, - A926B8ED27AC718900144157 /* spirv_endian.cpp in Sources */, - A926B9E927AC718A00144157 /* loop_unswitch_pass.cpp in Sources */, - A926B9EC27AC718A00144157 /* unify_const_pass.cpp in Sources */, - A926BB3927AC718A00144157 /* reduce_load_size.cpp in Sources */, - A926BB5427AC718A00144157 /* dominator_analysis.cpp in Sources */, - A926BAB827AC718A00144157 /* inline_exhaustive_pass.cpp in Sources */, - A926B88127AC718900144157 /* operand_to_undef_reduction_opportunity_finder.cpp in Sources */, - A926C0A627AC718C00144157 /* validate_builtins.cpp in Sources */, - A926BB0C27AC718A00144157 /* fold.cpp in Sources */, - A926B97427AC718900144157 /* decoration_manager.cpp in Sources */, - A926B8B727AC718900144157 /* structured_construct_to_block_reduction_opportunity.cpp in Sources */, - A926BAFD27AC718A00144157 /* propagator.cpp in Sources */, - A926B84227AC718900144157 /* simple_conditional_branch_to_branch_opportunity_finder.cpp in Sources */, - A926B86927AC718900144157 /* remove_instruction_reduction_opportunity.cpp in Sources */, - A926BB4B27AC718A00144157 /* replace_invalid_opc.cpp in Sources */, - A926BA6427AC718A00144157 /* folding_rules.cpp in Sources */, + A9F7B4BA29425A1900B30DA7 /* spirv_reducer_options.cpp in Sources */, + A9F7B4E429425A1900B30DA7 /* register_pressure.cpp in Sources */, + A9F7B79929425A1900B30DA7 /* loop_peeling.cpp in Sources */, + A9F7B6A929425A1900B30DA7 /* block_merge_pass.cpp in Sources */, + A9F7B4D229425A1900B30DA7 /* opcode.cpp in Sources */, + A9F7BC8B29425A1B00B30DA7 /* validate_builtins.cpp in Sources */, + A9F7BC6D29425A1B00B30DA7 /* validate_non_uniform.cpp in Sources */, + A9F7B3B529425A1800B30DA7 /* table.cpp in Sources */, + A9F7BCC429425A1B00B30DA7 /* validate_logicals.cpp in Sources */, + A9F7B43C29425A1800B30DA7 /* change_operand_to_undef_reduction_opportunity.cpp in Sources */, + A9F7B3AC29425A1800B30DA7 /* bit_vector.cpp in Sources */, + A9F7B63429425A1900B30DA7 /* ir_context.cpp in Sources */, + A9F7B3D629425A1800B30DA7 /* structured_loop_to_selection_reduction_opportunity_finder.cpp in Sources */, + A9F7B66129425A1900B30DA7 /* if_conversion.cpp in Sources */, + A9F7B74829425A1900B30DA7 /* remove_dontinline_pass.cpp in Sources */, + A9F7B6AF29425A1900B30DA7 /* convert_to_sampled_image_pass.cpp in Sources */, + A9F7B55F29425A1900B30DA7 /* merge_return_pass.cpp in Sources */, + A9F7B42729425A1800B30DA7 /* reducer.cpp in Sources */, + A9F7B3E829425A1800B30DA7 /* remove_function_reduction_opportunity.cpp in Sources */, + A9F7BC5229425A1B00B30DA7 /* disassemble.cpp in Sources */, + A9F7B64C29425A1900B30DA7 /* composite.cpp in Sources */, + A9F7BCAC29425A1B00B30DA7 /* validate_conversion.cpp in Sources */, + A9F7BCD329425A1B00B30DA7 /* instruction.cpp in Sources */, + A9F7BC7029425A1B00B30DA7 /* validate_ray_query.cpp in Sources */, + A9F7BC4929425A1B00B30DA7 /* operand.cpp in Sources */, + A9F7B5B029425A1900B30DA7 /* unify_const_pass.cpp in Sources */, + A9F7B3CA29425A1800B30DA7 /* operand_to_const_reduction_opportunity_finder.cpp in Sources */, + A9F7B4AE29425A1900B30DA7 /* enum_string_mapping.cpp in Sources */, + A9F7BCBE29425A1B00B30DA7 /* validate_mode_setting.cpp in Sources */, + A9F7B49F29425A1900B30DA7 /* binary.cpp in Sources */, + A9F7B74529425A1900B30DA7 /* struct_cfg_analysis.cpp in Sources */, + A9F7BC6429425A1B00B30DA7 /* validate_capability.cpp in Sources */, + A9F7BC3729425A1B00B30DA7 /* diagnostic.cpp in Sources */, + A9F7BC3D29425A1B00B30DA7 /* libspirv.cpp in Sources */, + A9F7BCDC29425A1B00B30DA7 /* validate_mesh_shading.cpp in Sources */, + A9F7B4FC29425A1900B30DA7 /* build_module.cpp in Sources */, + A9F7B56B29425A1900B30DA7 /* cfg_cleanup_pass.cpp in Sources */, + A9F7B48129425A1800B30DA7 /* spirv_fuzzer_options.cpp in Sources */, + A9F7BCA929425A1B00B30DA7 /* validate_adjacency.cpp in Sources */, + A9F7BCB529425A1B00B30DA7 /* validate_id.cpp in Sources */, + A9F7B3A929425A1800B30DA7 /* parse_number.cpp in Sources */, + A9F7B6A329425A1900B30DA7 /* scalar_analysis.cpp in Sources */, + A9F7B36429425A1800B30DA7 /* lint_divergent_derivatives.cpp in Sources */, + A9F7B41E29425A1800B30DA7 /* remove_struct_member_reduction_opportunity.cpp in Sources */, + A9F7BC7629425A1B00B30DA7 /* validate_scopes.cpp in Sources */, + A9F7B57D29425A1900B30DA7 /* strip_debug_info_pass.cpp in Sources */, + A9F7B61C29425A1900B30DA7 /* eliminate_dead_functions_util.cpp in Sources */, + A9F7B3DC29425A1800B30DA7 /* remove_function_reduction_opportunity_finder.cpp in Sources */, + A9F7B58029425A1900B30DA7 /* ssa_rewrite_pass.cpp in Sources */, + A9F7BCCD29425A1B00B30DA7 /* validate_image.cpp in Sources */, + A9F7B5A429425A1900B30DA7 /* module.cpp in Sources */, + A9F7B3FA29425A1800B30DA7 /* merge_blocks_reduction_opportunity.cpp in Sources */, + A9F7B5E929425A1900B30DA7 /* constants.cpp in Sources */, + A9F7B46329425A1800B30DA7 /* remove_block_reduction_opportunity.cpp in Sources */, + A9F7B35B29425A1800B30DA7 /* spirv_target_env.cpp in Sources */, + A9F7B55629425A1900B30DA7 /* loop_fission.cpp in Sources */, + A9F7B45129425A1800B30DA7 /* remove_block_reduction_opportunity_finder.cpp in Sources */, + A9F7B3EE29425A1800B30DA7 /* remove_selection_reduction_opportunity_finder.cpp in Sources */, + A9F7B6DC29425A1900B30DA7 /* fold.cpp in Sources */, + A9F7B5F829425A1900B30DA7 /* def_use_manager.cpp in Sources */, + A9F7B4BD29425A1900B30DA7 /* parsed_operand.cpp in Sources */, + A9F7B67029425A1900B30DA7 /* eliminate_dead_members_pass.cpp in Sources */, + A9F7B70629425A1900B30DA7 /* instruction.cpp in Sources */, + A9F7B4C629425A1900B30DA7 /* name_mapper.cpp in Sources */, + A9F7B77829425A1900B30DA7 /* analyze_live_input_pass.cpp in Sources */, + A9F7BC6129425A1B00B30DA7 /* validate_cfg.cpp in Sources */, + A9F7B3FD29425A1800B30DA7 /* change_operand_reduction_opportunity.cpp in Sources */, + A9F7BC7F29425A1B00B30DA7 /* validate_instruction.cpp in Sources */, + A9F7B54729425A1900B30DA7 /* instrument_pass.cpp in Sources */, + A9F7BC7329425A1B00B30DA7 /* validate_ray_tracing.cpp in Sources */, + A9F7B55329425A1900B30DA7 /* pass.cpp in Sources */, + A9F7B60429425A1900B30DA7 /* ccp_pass.cpp in Sources */, + A9F7B5F229425A1900B30DA7 /* desc_sroa_util.cpp in Sources */, + A9F7BC9A29425A1B00B30DA7 /* validate_bitwise.cpp in Sources */, + A9F7B67929425A1900B30DA7 /* block_merge_util.cpp in Sources */, + A9F7BC8829425A1B00B30DA7 /* validate_debug.cpp in Sources */, + A9F7B63D29425A1900B30DA7 /* loop_descriptor.cpp in Sources */, + A9F7B4C929425A1900B30DA7 /* linker.cpp in Sources */, + A9F7B53529425A1900B30DA7 /* freeze_spec_constant_value_pass.cpp in Sources */, + A9F7B39D29425A1800B30DA7 /* string_utils.cpp in Sources */, + A9F7BCC129425A1B00B30DA7 /* validate_memory_semantics.cpp in Sources */, + A9F7B52029425A1900B30DA7 /* types.cpp in Sources */, + A9F7B38229425A1800B30DA7 /* pch_source.cpp in Sources */, + A9F7B48D29425A1800B30DA7 /* print.cpp in Sources */, + A9F7BCA329425A1B00B30DA7 /* function.cpp in Sources */, + A9F7B68829425A1900B30DA7 /* inline_exhaustive_pass.cpp in Sources */, + A9F7B56529425A1900B30DA7 /* eliminate_dead_constant_pass.cpp in Sources */, + A9F7B71B29425A1900B30DA7 /* inline_opaque_pass.cpp in Sources */, + A9F7B45A29425A1800B30DA7 /* conditional_branch_to_simple_conditional_branch_opportunity_finder.cpp in Sources */, + A9F7B36729425A1800B30DA7 /* linter.cpp in Sources */, + A9F7B4FF29425A1900B30DA7 /* eliminate_dead_output_stores_pass.cpp in Sources */, + A9F7B79629425A1900B30DA7 /* compact_ids_pass.cpp in Sources */, + A9F7B62E29425A1900B30DA7 /* folding_rules.cpp in Sources */, + A9F7B65B29425A1900B30DA7 /* strip_nonsemantic_info_pass.cpp in Sources */, + A9F7B6C729425A1900B30DA7 /* private_to_local_pass.cpp in Sources */, + A9F7B5AA29425A1900B30DA7 /* fold_spec_constant_op_and_composite_pass.cpp in Sources */, + A9F7BC8229425A1B00B30DA7 /* validate_ray_tracing_reorder.cpp in Sources */, + A9F7BCC729425A1B00B30DA7 /* validate_derivatives.cpp in Sources */, + A9F7B3E529425A1800B30DA7 /* simple_conditional_branch_to_branch_reduction_opportunity.cpp in Sources */, + A9F7B64929425A1900B30DA7 /* control_dependence.cpp in Sources */, + A9F7B47529425A1800B30DA7 /* spirv_optimizer_options.cpp in Sources */, + A9F7B41B29425A1800B30DA7 /* pch_source_reduce.cpp in Sources */, + A9F7B59E29425A1900B30DA7 /* dead_variable_elimination.cpp in Sources */, + A9F7B3F129425A1800B30DA7 /* conditional_branch_to_simple_conditional_branch_reduction_opportunity.cpp in Sources */, + A9F7B67329425A1900B30DA7 /* strength_reduction_pass.cpp in Sources */, + A9F7B78729425A1900B30DA7 /* scalar_analysis_simplification.cpp in Sources */, + A9F7BC8E29425A1B00B30DA7 /* validate_interfaces.cpp in Sources */, + A9F7BC7929425A1B00B30DA7 /* validate_atomics.cpp in Sources */, + A9F7B4D829425A1900B30DA7 /* ext_inst.cpp in Sources */, + A9F7B44529425A1800B30DA7 /* operand_to_dominating_id_reduction_opportunity_finder.cpp in Sources */, + A9F7B52F29425A1900B30DA7 /* decoration_manager.cpp in Sources */, + A9F7B6F729425A1900B30DA7 /* workaround1209.cpp in Sources */, + A9F7B75A29425A1900B30DA7 /* interp_fixup_pass.cpp in Sources */, + A9F7BCD029425A1B00B30DA7 /* validate_literals.cpp in Sources */, + A9F7B4A829425A1900B30DA7 /* diff.cpp in Sources */, + A9F7B55929425A1900B30DA7 /* dominator_tree.cpp in Sources */, + A9F7B6E829425A1900B30DA7 /* interface_var_sroa.cpp in Sources */, + A9F7B77B29425A1900B30DA7 /* upgrade_memory_model.cpp in Sources */, + A9F7B4F929425A1900B30DA7 /* combine_access_chains.cpp in Sources */, + A9F7B64629425A1900B30DA7 /* instruction_list.cpp in Sources */, + A9F7B61929425A1900B30DA7 /* aggressive_dead_code_elim_pass.cpp in Sources */, + A9F7B3D029425A1800B30DA7 /* reduction_util.cpp in Sources */, + A9F7B5D429425A1900B30DA7 /* eliminate_dead_functions_pass.cpp in Sources */, + A9F7BCAF29425A1B00B30DA7 /* validate_small_type_uses.cpp in Sources */, + A9F7BC5E29425A1B00B30DA7 /* validate_misc.cpp in Sources */, + A9F7B51D29425A1900B30DA7 /* code_sink.cpp in Sources */, + A9F7B68529425A1900B30DA7 /* pass_manager.cpp in Sources */, + A9F7B55029425A1900B30DA7 /* feature_manager.cpp in Sources */, + A9F7B56E29425A1900B30DA7 /* wrap_opkill.cpp in Sources */, + A9F7B73929425A1900B30DA7 /* dataflow.cpp in Sources */, + A9F7BCD629425A1B00B30DA7 /* validate_type.cpp in Sources */, + A9F7B6D629425A1900B30DA7 /* set_spec_constant_default_value_pass.cpp in Sources */, + A9F7B3BB29425A1800B30DA7 /* remove_selection_reduction_opportunity.cpp in Sources */, + A9F7BC9729425A1B00B30DA7 /* validate_constants.cpp in Sources */, + A9F7BCE229425A1B00B30DA7 /* validate_layout.cpp in Sources */, + A9F7B57429425A1900B30DA7 /* const_folding_rules.cpp in Sources */, + A9F7B71E29425A1900B30DA7 /* replace_invalid_opc.cpp in Sources */, + A9F7B57129425A1900B30DA7 /* eliminate_dead_io_components_pass.cpp in Sources */, + A9F7B46C29425A1800B30DA7 /* structured_construct_to_block_reduction_opportunity_finder.cpp in Sources */, + A9F7B46929425A1800B30DA7 /* reduction_opportunity_finder.cpp in Sources */, + A9F7B50529425A1900B30DA7 /* liveness.cpp in Sources */, + A9F7B66729425A1900B30DA7 /* debug_info_manager.cpp in Sources */, + A9F7B6FD29425A1900B30DA7 /* relax_float_ops_pass.cpp in Sources */, + A9F7B71529425A1900B30DA7 /* value_number_table.cpp in Sources */, + A9F7B37629425A1800B30DA7 /* text.cpp in Sources */, + A9F7B6C129425A1900B30DA7 /* local_single_store_elim_pass.cpp in Sources */, + A9F7B42429425A1800B30DA7 /* remove_unused_instruction_reduction_opportunity_finder.cpp in Sources */, + A9F7B3C429425A1800B30DA7 /* reduction_pass.cpp in Sources */, + A9F7B64F29425A1900B30DA7 /* convert_to_half_pass.cpp in Sources */, + A9F7B70C29425A1900B30DA7 /* reduce_load_size.cpp in Sources */, + A9F7B75729425A1900B30DA7 /* local_access_chain_convert_pass.cpp in Sources */, + A9F7B54129425A1900B30DA7 /* inst_bindless_check_pass.cpp in Sources */, + A9F7B53229425A1900B30DA7 /* local_single_block_elim_pass.cpp in Sources */, + A9F7BCDF29425A1B00B30DA7 /* validate_execution_limitations.cpp in Sources */, + A9F7B64329425A1900B30DA7 /* function.cpp in Sources */, + A9F7B66429425A1900B30DA7 /* fix_func_call_arguments.cpp in Sources */, + A9F7B45D29425A1800B30DA7 /* structured_loop_to_selection_reduction_opportunity.cpp in Sources */, + A9F7B76C29425A1900B30DA7 /* graphics_robust_access_pass.cpp in Sources */, + A9F7BCA029425A1B00B30DA7 /* construct.cpp in Sources */, + A9F7B5E329425A1900B30DA7 /* loop_unroller.cpp in Sources */, + A9F7B48729425A1800B30DA7 /* spirv_validator_options.cpp in Sources */, + A9F7B36A29425A1800B30DA7 /* divergence_analysis.cpp in Sources */, + A9F7B4E729425A1900B30DA7 /* loop_utils.cpp in Sources */, + A9F7B4ED29425A1900B30DA7 /* spread_volatile_semantics.cpp in Sources */, + A9F7B67629425A1900B30DA7 /* desc_sroa.cpp in Sources */, + A9F7B69D29425A1900B30DA7 /* dead_insert_elim_pass.cpp in Sources */, + A9F7BC8529425A1B00B30DA7 /* validate_decorations.cpp in Sources */, + A9F7B69129425A1900B30DA7 /* loop_fusion_pass.cpp in Sources */, + A9F7B43329425A1800B30DA7 /* merge_blocks_reduction_opportunity_finder.cpp in Sources */, + A9F7B62829425A1900B30DA7 /* flatten_decoration_pass.cpp in Sources */, + A9F7B71229425A1900B30DA7 /* fix_storage_class.cpp in Sources */, + A9F7B4CF29425A1900B30DA7 /* software_version.cpp in Sources */, + A9F7B37929425A1800B30DA7 /* assembly_grammar.cpp in Sources */, + A9F7B6DF29425A1900B30DA7 /* amd_ext_to_khr.cpp in Sources */, + A9F7BC5829425A1B00B30DA7 /* text_handler.cpp in Sources */, + A9F7B4DE29425A1900B30DA7 /* optimizer.cpp in Sources */, + A9F7BCF129425A1B00B30DA7 /* validation_state.cpp in Sources */, + A9F7B59529425A1900B30DA7 /* mem_pass.cpp in Sources */, + A9F7B72D29425A1900B30DA7 /* replace_desc_array_access_using_var_index.cpp in Sources */, + A9F7B5C829425A1900B30DA7 /* ir_loader.cpp in Sources */, + A9F7B37F29425A1800B30DA7 /* extensions.cpp in Sources */, + A9F7B5B329425A1900B30DA7 /* type_manager.cpp in Sources */, + A9F7B6E229425A1900B30DA7 /* scalar_replacement_pass.cpp in Sources */, + A9F7B5AD29425A1900B30DA7 /* loop_unswitch_pass.cpp in Sources */, + A9F7B43629425A1800B30DA7 /* reduction_opportunity.cpp in Sources */, + A9F7BC9D29425A1B00B30DA7 /* validate_extensions.cpp in Sources */, + A9F7B46629425A1800B30DA7 /* remove_unused_struct_member_reduction_opportunity_finder.cpp in Sources */, + A9F7B39729425A1800B30DA7 /* timer.cpp in Sources */, + A9F7B61029425A1900B30DA7 /* pch_source_opt.cpp in Sources */, + A9F7B5C229425A1900B30DA7 /* inline_pass.cpp in Sources */, + A9F7B5F529425A1900B30DA7 /* inst_buff_addr_check_pass.cpp in Sources */, + A9F7BC6A29425A1B00B30DA7 /* validate_barriers.cpp in Sources */, + A9F7B6F129425A1900B30DA7 /* redundancy_elimination.cpp in Sources */, + A9F7B49629425A1800B30DA7 /* spirv_endian.cpp in Sources */, + A9F7B52C29425A1900B30DA7 /* cfg.cpp in Sources */, + A9F7B59B29425A1900B30DA7 /* remove_duplicates_pass.cpp in Sources */, + A9F7BC5B29425A1B00B30DA7 /* validate_annotation.cpp in Sources */, + A9F7B6D329425A1900B30DA7 /* loop_dependence_helpers.cpp in Sources */, + A9F7B75D29425A1900B30DA7 /* basic_block.cpp in Sources */, + A9F7B58329425A1900B30DA7 /* loop_dependence.cpp in Sources */, + A9F7B5D129425A1900B30DA7 /* licm_pass.cpp in Sources */, + A9F7B42A29425A1800B30DA7 /* operand_to_undef_reduction_opportunity_finder.cpp in Sources */, + A9F7B62529425A1900B30DA7 /* dead_branch_elim_pass.cpp in Sources */, + A9F7B58C29425A1900B30DA7 /* inst_debug_printf_pass.cpp in Sources */, + A9F7B54429425A1900B30DA7 /* local_redundancy_elimination.cpp in Sources */, + A9F7BCCA29425A1B00B30DA7 /* validate_memory.cpp in Sources */, + A9F7B72729425A1900B30DA7 /* dominator_analysis.cpp in Sources */, + A9F7BC9129425A1B00B30DA7 /* validate.cpp in Sources */, + A9F7B67F29425A1900B30DA7 /* copy_prop_arrays.cpp in Sources */, + A9F7B46029425A1800B30DA7 /* structured_construct_to_block_reduction_opportunity.cpp in Sources */, + A9F7BCEE29425A1B00B30DA7 /* validate_composites.cpp in Sources */, + A9F7B77529425A1900B30DA7 /* loop_fusion.cpp in Sources */, + A9F7BCE529425A1B00B30DA7 /* basic_block.cpp in Sources */, + A9F7B71829425A1900B30DA7 /* remove_unused_interface_variables_pass.cpp in Sources */, + A9F7BCE829425A1B00B30DA7 /* validate_function.cpp in Sources */, + A9F7B5DD29425A1900B30DA7 /* vector_dce.cpp in Sources */, + A9F7BCF429425A1B00B30DA7 /* validate_primitives.cpp in Sources */, + A9F7B62229425A1900B30DA7 /* simplification_pass.cpp in Sources */, + A9F7B6CD29425A1900B30DA7 /* propagator.cpp in Sources */, + A9F7B3EB29425A1800B30DA7 /* simple_conditional_branch_to_branch_opportunity_finder.cpp in Sources */, + A9F7B41229425A1800B30DA7 /* remove_instruction_reduction_opportunity.cpp in Sources */, + A9F7BCBB29425A1B00B30DA7 /* validate_arithmetics.cpp in Sources */, ); runOnlyForDeploymentPostprocessing = 0; }; @@ -5334,6 +5520,7 @@ 2FEA0CD62490322100EEF3AD /* Debug */ = { isa = XCBuildConfiguration; buildSettings = { + GCC_WARN_ABOUT_MISSING_FIELD_INITIALIZERS = NO; GCC_WARN_ABOUT_MISSING_PROTOTYPES = NO; GCC_WARN_CHECK_SWITCH_STATEMENTS = NO; HEADER_SEARCH_PATHS = ( @@ -5351,6 +5538,7 @@ 2FEA0CD72490322100EEF3AD /* Release */ = { isa = XCBuildConfiguration; buildSettings = { + GCC_WARN_ABOUT_MISSING_FIELD_INITIALIZERS = NO; GCC_WARN_ABOUT_MISSING_PROTOTYPES = NO; GCC_WARN_CHECK_SWITCH_STATEMENTS = NO; HEADER_SEARCH_PATHS = ( @@ -5490,6 +5678,7 @@ A972A80D21CECBBF0013AB25 /* Debug */ = { isa = XCBuildConfiguration; buildSettings = { + GCC_WARN_ABOUT_MISSING_FIELD_INITIALIZERS = NO; GCC_WARN_ABOUT_MISSING_PROTOTYPES = NO; GCC_WARN_CHECK_SWITCH_STATEMENTS = NO; HEADER_SEARCH_PATHS = ( @@ -5507,6 +5696,7 @@ A972A80E21CECBBF0013AB25 /* Release */ = { isa = XCBuildConfiguration; buildSettings = { + GCC_WARN_ABOUT_MISSING_FIELD_INITIALIZERS = NO; GCC_WARN_ABOUT_MISSING_PROTOTYPES = NO; GCC_WARN_CHECK_SWITCH_STATEMENTS = NO; HEADER_SEARCH_PATHS = ( @@ -5524,6 +5714,7 @@ A972A82121CECBE90013AB25 /* Debug */ = { isa = XCBuildConfiguration; buildSettings = { + GCC_WARN_ABOUT_MISSING_FIELD_INITIALIZERS = NO; GCC_WARN_ABOUT_MISSING_PROTOTYPES = NO; GCC_WARN_CHECK_SWITCH_STATEMENTS = NO; HEADER_SEARCH_PATHS = ( @@ -5541,6 +5732,7 @@ A972A82221CECBE90013AB25 /* Release */ = { isa = XCBuildConfiguration; buildSettings = { + GCC_WARN_ABOUT_MISSING_FIELD_INITIALIZERS = NO; GCC_WARN_ABOUT_MISSING_PROTOTYPES = NO; GCC_WARN_CHECK_SWITCH_STATEMENTS = NO; HEADER_SEARCH_PATHS = ( diff --git a/ExternalDependencies.xcodeproj/xcshareddata/xcschemes/ExternalDependencies (Debug).xcscheme b/ExternalDependencies.xcodeproj/xcshareddata/xcschemes/ExternalDependencies (Debug).xcscheme index e5dfdf984..ab809b7eb 100644 --- a/ExternalDependencies.xcodeproj/xcshareddata/xcschemes/ExternalDependencies (Debug).xcscheme +++ b/ExternalDependencies.xcodeproj/xcshareddata/xcschemes/ExternalDependencies (Debug).xcscheme @@ -1,6 +1,6 @@ finalizeDispatchState(); // Ensure all updated state has been submitted to Metal id mtlEncoder = cmdEncoder->getMTLComputeEncoder(kMVKCommandUseDispatch); @@ -77,8 +75,6 @@ } void MVKCmdDispatchIndirect::encode(MVKCommandEncoder* cmdEncoder) { -// MVKLogDebug("vkCmdDispatchIndirect() dispatching indirectly."); - cmdEncoder->finalizeDispatchState(); // Ensure all updated state has been submitted to Metal [cmdEncoder->getMTLComputeEncoder(kMVKCommandUseDispatch) dispatchThreadgroupsWithIndirectBuffer: _mtlIndirectBuffer indirectBufferOffset: _mtlIndirectBufferOffset diff --git a/MoltenVK/MoltenVK/Commands/MVKCmdDraw.h b/MoltenVK/MoltenVK/Commands/MVKCmdDraw.h index 32274bf50..2c3fca39c 100644 --- a/MoltenVK/MoltenVK/Commands/MVKCmdDraw.h +++ b/MoltenVK/MoltenVK/Commands/MVKCmdDraw.h @@ -1,7 +1,7 @@ /* * MVKCmdDraw.h * - * Copyright (c) 2015-2022 The Brenwill Workshop Ltd. (http://www.brenwill.com) + * Copyright (c) 2015-2023 The Brenwill Workshop Ltd. (http://www.brenwill.com) * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. diff --git a/MoltenVK/MoltenVK/Commands/MVKCmdDraw.mm b/MoltenVK/MoltenVK/Commands/MVKCmdDraw.mm index 6dfb526f3..6b2b08fc4 100644 --- a/MoltenVK/MoltenVK/Commands/MVKCmdDraw.mm +++ b/MoltenVK/MoltenVK/Commands/MVKCmdDraw.mm @@ -1,7 +1,7 @@ /* * MVKCmdDraw.mm * - * Copyright (c) 2015-2022 The Brenwill Workshop Ltd. (http://www.brenwill.com) + * Copyright (c) 2015-2023 The Brenwill Workshop Ltd. (http://www.brenwill.com) * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. diff --git a/MoltenVK/MoltenVK/Commands/MVKCmdPipeline.h b/MoltenVK/MoltenVK/Commands/MVKCmdPipeline.h index ca4d9c46f..8e1772566 100644 --- a/MoltenVK/MoltenVK/Commands/MVKCmdPipeline.h +++ b/MoltenVK/MoltenVK/Commands/MVKCmdPipeline.h @@ -1,7 +1,7 @@ /* * MVKCmdPipeline.h * - * Copyright (c) 2015-2022 The Brenwill Workshop Ltd. (http://www.brenwill.com) + * Copyright (c) 2015-2023 The Brenwill Workshop Ltd. (http://www.brenwill.com) * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. diff --git a/MoltenVK/MoltenVK/Commands/MVKCmdPipeline.mm b/MoltenVK/MoltenVK/Commands/MVKCmdPipeline.mm index 96e8553f3..eb13c22d7 100644 --- a/MoltenVK/MoltenVK/Commands/MVKCmdPipeline.mm +++ b/MoltenVK/MoltenVK/Commands/MVKCmdPipeline.mm @@ -1,7 +1,7 @@ /* * MVKCmdPipeline.mm * - * Copyright (c) 2015-2022 The Brenwill Workshop Ltd. (http://www.brenwill.com) + * Copyright (c) 2015-2023 The Brenwill Workshop Ltd. (http://www.brenwill.com) * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. diff --git a/MoltenVK/MoltenVK/Commands/MVKCmdQueries.h b/MoltenVK/MoltenVK/Commands/MVKCmdQueries.h index edbbe5247..baa588634 100644 --- a/MoltenVK/MoltenVK/Commands/MVKCmdQueries.h +++ b/MoltenVK/MoltenVK/Commands/MVKCmdQueries.h @@ -1,7 +1,7 @@ /* * MVKCmdQueries.h * - * Copyright (c) 2015-2022 The Brenwill Workshop Ltd. (http://www.brenwill.com) + * Copyright (c) 2015-2023 The Brenwill Workshop Ltd. (http://www.brenwill.com) * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. diff --git a/MoltenVK/MoltenVK/Commands/MVKCmdQueries.mm b/MoltenVK/MoltenVK/Commands/MVKCmdQueries.mm index e64493ad8..bc5ba9c6d 100644 --- a/MoltenVK/MoltenVK/Commands/MVKCmdQueries.mm +++ b/MoltenVK/MoltenVK/Commands/MVKCmdQueries.mm @@ -1,7 +1,7 @@ /* * MVKCmdQueries.mm * - * Copyright (c) 2015-2022 The Brenwill Workshop Ltd. (http://www.brenwill.com) + * Copyright (c) 2015-2023 The Brenwill Workshop Ltd. (http://www.brenwill.com) * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. diff --git a/MoltenVK/MoltenVK/Commands/MVKCmdRenderPass.h b/MoltenVK/MoltenVK/Commands/MVKCmdRenderPass.h index 9b3c14d02..4d6614752 100644 --- a/MoltenVK/MoltenVK/Commands/MVKCmdRenderPass.h +++ b/MoltenVK/MoltenVK/Commands/MVKCmdRenderPass.h @@ -1,7 +1,7 @@ /* * MVKCmdRenderPass.h * - * Copyright (c) 2015-2022 The Brenwill Workshop Ltd. (http://www.brenwill.com) + * Copyright (c) 2015-2023 The Brenwill Workshop Ltd. (http://www.brenwill.com) * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. diff --git a/MoltenVK/MoltenVK/Commands/MVKCmdRenderPass.mm b/MoltenVK/MoltenVK/Commands/MVKCmdRenderPass.mm index 967c905ab..829264d3c 100644 --- a/MoltenVK/MoltenVK/Commands/MVKCmdRenderPass.mm +++ b/MoltenVK/MoltenVK/Commands/MVKCmdRenderPass.mm @@ -1,7 +1,7 @@ /* * MVKCmdRenderPass.mm * - * Copyright (c) 2015-2022 The Brenwill Workshop Ltd. (http://www.brenwill.com) + * Copyright (c) 2015-2023 The Brenwill Workshop Ltd. (http://www.brenwill.com) * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. @@ -61,6 +61,8 @@ } } + cmdBuff->_currentSubpassInfo.beginRenderpass(_renderPass); + return VK_SUCCESS; } @@ -84,7 +86,6 @@ template void MVKCmdBeginRenderPass::encode(MVKCommandEncoder* cmdEncoder) { -// MVKLogDebug("Encoding vkCmdBeginRenderPass(). Elapsed time: %.6f ms.", mvkGetElapsedMilliseconds()); // Convert the sample position array of arrays to an array of array-references, // so that it can be passed to the command encoder. @@ -127,6 +128,8 @@ VkSubpassContents contents) { _contents = contents; + cmdBuff->_currentSubpassInfo.nextSubpass(); + return VK_SUCCESS; } @@ -137,10 +140,7 @@ } void MVKCmdNextSubpass::encode(MVKCommandEncoder* cmdEncoder) { - if (cmdEncoder->getMultiviewPassIndex() + 1 < cmdEncoder->getSubpass()->getMultiviewMetalPassCount()) - cmdEncoder->beginNextMultiviewPass(); - else - cmdEncoder->beginNextSubpass(this, _contents); + cmdEncoder->beginNextSubpass(this, _contents); } @@ -148,20 +148,17 @@ #pragma mark MVKCmdEndRenderPass VkResult MVKCmdEndRenderPass::setContent(MVKCommandBuffer* cmdBuff) { + cmdBuff->_currentSubpassInfo = {}; return VK_SUCCESS; } VkResult MVKCmdEndRenderPass::setContent(MVKCommandBuffer* cmdBuff, const VkSubpassEndInfo* pEndSubpassInfo) { - return VK_SUCCESS; + return setContent(cmdBuff); } void MVKCmdEndRenderPass::encode(MVKCommandEncoder* cmdEncoder) { -// MVKLogDebug("Encoding vkCmdEndRenderPass(). Elapsed time: %.6f ms.", mvkGetElapsedMilliseconds()); - if (cmdEncoder->getMultiviewPassIndex() + 1 < cmdEncoder->getSubpass()->getMultiviewMetalPassCount()) - cmdEncoder->beginNextMultiviewPass(); - else - cmdEncoder->endRenderpass(); + cmdEncoder->endRenderpass(); } @@ -186,6 +183,8 @@ _renderingInfo.pStencilAttachment = &_stencilAttachment; } + cmdBuff->_currentSubpassInfo.beginRendering(pRenderingInfo->viewMask); + return VK_SUCCESS; } @@ -204,6 +203,7 @@ #pragma mark MVKCmdEndRendering VkResult MVKCmdEndRendering::setContent(MVKCommandBuffer* cmdBuff) { + cmdBuff->_currentSubpassInfo = {}; return VK_SUCCESS; } diff --git a/MoltenVK/MoltenVK/Commands/MVKCmdTransfer.h b/MoltenVK/MoltenVK/Commands/MVKCmdTransfer.h index 99ead0d42..ce0af39fd 100644 --- a/MoltenVK/MoltenVK/Commands/MVKCmdTransfer.h +++ b/MoltenVK/MoltenVK/Commands/MVKCmdTransfer.h @@ -1,7 +1,7 @@ /* * MVKCmdTransfer.h * - * Copyright (c) 2015-2022 The Brenwill Workshop Ltd. (http://www.brenwill.com) + * Copyright (c) 2015-2023 The Brenwill Workshop Ltd. (http://www.brenwill.com) * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. @@ -48,6 +48,8 @@ class MVKCmdCopyImage : public MVKCommand { VkImageLayout dstImageLayout, uint32_t regionCount, const VkImageCopy* pRegions); + VkResult setContent(MVKCommandBuffer* cmdBuff, + const VkCopyImageInfo2* pImageInfo); void encode(MVKCommandEncoder* cmdEncoder) override { encode(cmdEncoder, kMVKCommandUseCopyImage); } @@ -55,8 +57,9 @@ class MVKCmdCopyImage : public MVKCommand { protected: MVKCommandTypePool* getTypePool(MVKCommandPool* cmdPool) override; + VkResult validate(MVKCommandBuffer* cmdBuff, const VkImageCopy2* region); - MVKSmallVector _vkImageCopies; + MVKSmallVector _vkImageCopies; MVKImage* _srcImage; MVKImage* _dstImage; VkImageLayout _srcLayout; @@ -76,7 +79,7 @@ typedef MVKCmdCopyImage<4> MVKCmdCopyImageMulti; /** Combines a VkImageBlit with vertices to render it. */ typedef struct { - VkImageBlit region; + VkImageBlit2 region; MVKVertexPosTex vertices[kMVKBlitVertexCount]; } MVKImageBlitRender; @@ -96,6 +99,8 @@ class MVKCmdBlitImage : public MVKCommand { uint32_t regionCount, const VkImageBlit* pRegions, VkFilter filter); + VkResult setContent(MVKCommandBuffer* cmdBuff, + const VkBlitImageInfo2* pBlitImageInfo); void encode(MVKCommandEncoder* cmdEncoder) override { encode(cmdEncoder, kMVKCommandUseBlitImage); } @@ -103,11 +108,12 @@ class MVKCmdBlitImage : public MVKCommand { protected: MVKCommandTypePool* getTypePool(MVKCommandPool* cmdPool) override; - bool canCopyFormats(const VkImageBlit& region); - bool canCopy(const VkImageBlit& region); - void populateVertices(MVKVertexPosTex* vertices, const VkImageBlit& region); + bool canCopyFormats(const VkImageBlit2& region); + bool canCopy(const VkImageBlit2& region); + void populateVertices(MVKVertexPosTex* vertices, const VkImageBlit2& region); + VkResult validate(MVKCommandBuffer* cmdBuff, const VkImageBlit2* region, bool isDestUnwritableLinear); - MVKSmallVector _vkImageBlits; + MVKSmallVector _vkImageBlits; MVKImage* _srcImage; MVKImage* _dstImage; VkImageLayout _srcLayout; @@ -144,13 +150,16 @@ class MVKCmdResolveImage : public MVKCommand { VkImageLayout dstImageLayout, uint32_t regionCount, const VkImageResolve* pRegions); + VkResult setContent(MVKCommandBuffer* cmdBuff, + const VkResolveImageInfo2* pResolveImageInfo); void encode(MVKCommandEncoder* cmdEncoder) override; protected: MVKCommandTypePool* getTypePool(MVKCommandPool* cmdPool) override; + VkResult validate(MVKCommandBuffer* cmdBuff, const VkImageResolve2* region); - MVKSmallVector _vkImageResolves; + MVKSmallVector _vkImageResolves; MVKImage* _srcImage; MVKImage* _dstImage; VkImageLayout _srcLayout; @@ -178,13 +187,15 @@ class MVKCmdCopyBuffer : public MVKCommand { VkBuffer destBuffer, uint32_t regionCount, const VkBufferCopy* pRegions); + VkResult setContent(MVKCommandBuffer* cmdBuff, + const VkCopyBufferInfo2* pCopyBufferInfo); void encode(MVKCommandEncoder* cmdEncoder) override; protected: MVKCommandTypePool* getTypePool(MVKCommandPool* cmdPool) override; - MVKSmallVector _bufferCopyRegions; + MVKSmallVector _bufferCopyRegions; MVKBuffer* _srcBuffer; MVKBuffer* _dstBuffer; }; @@ -212,14 +223,19 @@ class MVKCmdBufferImageCopy : public MVKCommand { uint32_t regionCount, const VkBufferImageCopy* pRegions, bool toImage); + VkResult setContent(MVKCommandBuffer* cmdBuff, + const VkCopyBufferToImageInfo2* pBufferToImageInfo); + VkResult setContent(MVKCommandBuffer* cmdBuff, + const VkCopyImageToBufferInfo2* pImageToBufferInfo); void encode(MVKCommandEncoder* cmdEncoder) override; protected: MVKCommandTypePool* getTypePool(MVKCommandPool* cmdPool) override; bool isArrayTexture(); + VkResult validate(MVKCommandBuffer* cmdBuff); - MVKSmallVector _bufferImageCopyRegions; + MVKSmallVector _bufferImageCopyRegions; MVKBuffer* _buffer; MVKImage* _image; bool _toImage = false; @@ -247,7 +263,8 @@ class MVKCmdClearAttachments : public MVKCommand { uint32_t attachmentCount, const VkClearAttachment* pAttachments, uint32_t rectCount, - const VkClearRect* pRects); + const VkClearRect* pRects, + MVKCommandUse cmdUse = kMVKCommandUseClearAttachments); void encode(MVKCommandEncoder* cmdEncoder) override; @@ -260,13 +277,15 @@ class MVKCmdClearAttachments : public MVKCommand { float attWidth, float attHeight); virtual VkClearValue& getClearValue(uint32_t attIdx) = 0; virtual void setClearValue(uint32_t attIdx, const VkClearValue& clearValue) = 0; + NSString* getMTLDebugGroupLabel(); MVKSmallVector _clearRects; MVKRPSKeyClearAtt _rpsKey; + float _mtlDepthVal; + uint32_t _mtlStencilValue; + MVKCommandUse _commandUse; bool _isClearingDepth; bool _isClearingStencil; - float _mtlDepthVal; - uint32_t _mtlStencilValue; }; diff --git a/MoltenVK/MoltenVK/Commands/MVKCmdTransfer.mm b/MoltenVK/MoltenVK/Commands/MVKCmdTransfer.mm index 3253aa902..d72df15ee 100644 --- a/MoltenVK/MoltenVK/Commands/MVKCmdTransfer.mm +++ b/MoltenVK/MoltenVK/Commands/MVKCmdTransfer.mm @@ -1,7 +1,7 @@ /* * MVKCmdTransfer.mm * - * Copyright (c) 2015-2022 The Brenwill Workshop Ltd. (http://www.brenwill.com) + * Copyright (c) 2015-2023 The Brenwill Workshop Ltd. (http://www.brenwill.com) * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. @@ -64,22 +64,60 @@ static inline MTLSize mvkClampMTLSize(MTLSize size, MTLOrigin origin, MTLSize ma _vkImageCopies.clear(); // Clear for reuse for (uint32_t regionIdx = 0; regionIdx < regionCount; regionIdx++) { auto& vkIR = pRegions[regionIdx]; - uint8_t srcPlaneIndex = MVKImage::getPlaneFromVkImageAspectFlags(vkIR.srcSubresource.aspectMask); - uint8_t dstPlaneIndex = MVKImage::getPlaneFromVkImageAspectFlags(vkIR.dstSubresource.aspectMask); - - // Validate - MVKPixelFormats* pixFmts = cmdBuff->getPixelFormats(); - if ((_dstImage->getSampleCount() != _srcImage->getSampleCount()) || - (pixFmts->getBytesPerBlock(_dstImage->getMTLPixelFormat(dstPlaneIndex)) != pixFmts->getBytesPerBlock(_srcImage->getMTLPixelFormat(srcPlaneIndex)))) { - return cmdBuff->reportError(VK_ERROR_FEATURE_NOT_PRESENT, "vkCmdCopyImage(): Cannot copy between incompatible formats, such as formats of different pixel sizes, or between images with different sample counts."); - } + VkImageCopy2 vkIR2 = { + VK_STRUCTURE_TYPE_IMAGE_COPY_2, nullptr, + vkIR.srcSubresource, vkIR.srcOffset, + vkIR.dstSubresource, vkIR.dstOffset, + vkIR.extent + }; + + if (auto validation = validate(cmdBuff, &vkIR2); validation != VK_SUCCESS) + return validation; - _vkImageCopies.push_back(vkIR); + _vkImageCopies.emplace_back(std::move(vkIR2)); } return VK_SUCCESS; } +template +VkResult MVKCmdCopyImage::setContent(MVKCommandBuffer* cmdBuff, + const VkCopyImageInfo2* pCopyImageInfo) { + _srcImage = (MVKImage*)pCopyImageInfo->srcImage; + _srcLayout = pCopyImageInfo->srcImageLayout; + + _dstImage = (MVKImage*)pCopyImageInfo->dstImage; + _dstLayout = pCopyImageInfo->dstImageLayout; + + _vkImageCopies.clear(); // Clear for reuse + _vkImageCopies.reserve(pCopyImageInfo->regionCount); + for (uint32_t regionIdx = 0; regionIdx < pCopyImageInfo->regionCount; regionIdx++) { + auto& vkIR = pCopyImageInfo->pRegions[regionIdx]; + + if (auto validation = validate(cmdBuff, &vkIR); validation != VK_SUCCESS) + return validation; + + _vkImageCopies.push_back(vkIR); + } + + return VK_SUCCESS; +} + +template +inline VkResult MVKCmdCopyImage::validate(MVKCommandBuffer* cmdBuff, const VkImageCopy2* region) { + uint8_t srcPlaneIndex = MVKImage::getPlaneFromVkImageAspectFlags(region->srcSubresource.aspectMask); + uint8_t dstPlaneIndex = MVKImage::getPlaneFromVkImageAspectFlags(region->dstSubresource.aspectMask); + + // Validate + MVKPixelFormats* pixFmts = cmdBuff->getPixelFormats(); + if ((_dstImage->getSampleCount() != _srcImage->getSampleCount()) || + (pixFmts->getBytesPerBlock(_dstImage->getMTLPixelFormat(dstPlaneIndex)) != pixFmts->getBytesPerBlock(_srcImage->getMTLPixelFormat(srcPlaneIndex)))) { + return cmdBuff->reportError(VK_ERROR_FEATURE_NOT_PRESENT, "vkCmdCopyImage(): Cannot copy between incompatible formats, such as formats of different pixel sizes, or between images with different sample counts."); + } + return VK_SUCCESS; +} + + template void MVKCmdCopyImage::encode(MVKCommandEncoder* cmdEncoder, MVKCommandUse commandUse) { MVKPixelFormats* pixFmts = cmdEncoder->getPixelFormats(); @@ -281,20 +319,59 @@ static inline MTLSize mvkClampMTLSize(MTLSize size, MTLOrigin origin, MTLSize ma _vkImageBlits.clear(); // Clear for reuse for (uint32_t rIdx = 0; rIdx < regionCount; rIdx++) { auto& vkIB = pRegions[rIdx]; - - // Validate - macOS linear images cannot be a scaling or inversion destination - if (isDestUnwritableLinear && !(canCopyFormats(vkIB) && canCopy(vkIB)) ) { - return cmdBuff->reportError(VK_ERROR_FEATURE_NOT_PRESENT, "vkCmdBlitImage(): Scaling or inverting to a linear destination image is not supported."); - } - - _vkImageBlits.push_back(vkIB); + VkImageBlit2 vkIB2 = { + VK_STRUCTURE_TYPE_IMAGE_BLIT_2, nullptr, + vkIB.srcSubresource, vkIB.srcOffsets[0], vkIB.srcOffsets[1], + vkIB.dstSubresource, vkIB.dstOffsets[0], vkIB.dstOffsets[1], + }; + + if (auto validation = validate(cmdBuff, &vkIB2, isDestUnwritableLinear); validation != VK_SUCCESS) + return validation; + + _vkImageBlits.push_back(vkIB2); } return VK_SUCCESS; } template -bool MVKCmdBlitImage::canCopyFormats(const VkImageBlit& region) { +VkResult MVKCmdBlitImage::setContent(MVKCommandBuffer* cmdBuff, + const VkBlitImageInfo2* pBlitImageInfo) { + + _srcImage = (MVKImage*)pBlitImageInfo->srcImage; + _srcLayout = pBlitImageInfo->srcImageLayout; + _dstImage = (MVKImage*)pBlitImageInfo->dstImage; + _dstLayout = pBlitImageInfo->dstImageLayout; + + _filter = pBlitImageInfo->filter; + + bool isDestUnwritableLinear = MVK_MACOS && !cmdBuff->getDevice()->_pMetalFeatures->renderLinearTextures && _dstImage->getIsLinear(); + + _vkImageBlits.clear(); // Clear for reuse + _vkImageBlits.reserve(pBlitImageInfo->regionCount); + for (uint32_t rIdx = 0; rIdx < pBlitImageInfo->regionCount; rIdx++) { + auto& vkIB = pBlitImageInfo->pRegions[rIdx]; + + if (auto validation = validate(cmdBuff, &vkIB, isDestUnwritableLinear); validation != VK_SUCCESS) + return validation; + + _vkImageBlits.emplace_back(vkIB); + } + + return VK_SUCCESS; +} + +template +inline VkResult MVKCmdBlitImage::validate(MVKCommandBuffer *cmdBuff, const VkImageBlit2 *region, bool isDestUnwritableLinear) { + // Validate - macOS linear images cannot be a scaling or inversion destination + if (isDestUnwritableLinear && !(canCopyFormats(*region) && canCopy(*region)) ) { + return cmdBuff->reportError(VK_ERROR_FEATURE_NOT_PRESENT, "vkCmdBlitImage(): Scaling or inverting to a linear destination image is not supported."); + } + return VK_SUCCESS; +} + +template +bool MVKCmdBlitImage::canCopyFormats(const VkImageBlit2& region) { uint8_t srcPlaneIndex = MVKImage::getPlaneFromVkImageAspectFlags(region.srcSubresource.aspectMask); uint8_t dstPlaneIndex = MVKImage::getPlaneFromVkImageAspectFlags(region.dstSubresource.aspectMask); return ((_srcImage->getMTLPixelFormat(srcPlaneIndex) == _dstImage->getMTLPixelFormat(dstPlaneIndex)) && @@ -303,7 +380,7 @@ static inline MTLSize mvkClampMTLSize(MTLSize size, MTLOrigin origin, MTLSize ma // The source and destination sizes must be equal and not be negative in any direction template -bool MVKCmdBlitImage::canCopy(const VkImageBlit& region) { +bool MVKCmdBlitImage::canCopy(const VkImageBlit2& region) { VkOffset3D srcSize = mvkVkOffset3DDifference(region.srcOffsets[1], region.srcOffsets[0]); VkOffset3D dstSize = mvkVkOffset3DDifference(region.dstOffsets[1], region.dstOffsets[0]); return (mvkVkOffset3DsAreEqual(srcSize, dstSize) && @@ -311,7 +388,7 @@ static inline MTLSize mvkClampMTLSize(MTLSize size, MTLOrigin origin, MTLSize ma } template -void MVKCmdBlitImage::populateVertices(MVKVertexPosTex* vertices, const VkImageBlit& region) { +void MVKCmdBlitImage::populateVertices(MVKVertexPosTex* vertices, const VkImageBlit2& region) { const VkOffset3D& so0 = region.srcOffsets[0]; const VkOffset3D& so1 = region.srcOffsets[1]; const VkOffset3D& do0 = region.dstOffsets[0]; @@ -611,20 +688,56 @@ static inline MTLSize mvkClampMTLSize(MTLSize size, MTLOrigin origin, MTLSize ma _vkImageResolves.reserve(regionCount); for (uint32_t regionIdx = 0; regionIdx < regionCount; regionIdx++) { auto& vkIR = pRegions[regionIdx]; - uint8_t dstPlaneIndex = MVKImage::getPlaneFromVkImageAspectFlags(vkIR.dstSubresource.aspectMask); - - // Validate - MVKPixelFormats* pixFmts = cmdBuff->getPixelFormats(); - if ( !mvkAreAllFlagsEnabled(pixFmts->getCapabilities(_dstImage->getMTLPixelFormat(dstPlaneIndex)), kMVKMTLFmtCapsResolve) ) { - return cmdBuff->reportError(VK_ERROR_FEATURE_NOT_PRESENT, "vkCmdResolveImage(): %s cannot be used as a resolve destination on this device.", pixFmts->getName(_dstImage->getVkFormat())); - } + VkImageResolve2 vkIR2 = { + VK_STRUCTURE_TYPE_IMAGE_RESOLVE_2, nullptr, + vkIR.srcSubresource, vkIR.srcOffset, + vkIR.dstSubresource, vkIR.dstOffset, + vkIR.extent, + }; + + if (auto validation = validate(cmdBuff, &vkIR2); validation != VK_SUCCESS) + return validation; - _vkImageResolves.push_back(vkIR); + _vkImageResolves.emplace_back(std::move(vkIR2)); } return VK_SUCCESS; } +template +VkResult MVKCmdResolveImage::setContent(MVKCommandBuffer* cmdBuff, + const VkResolveImageInfo2* pResolveImageInfo) { + _srcImage = (MVKImage*)pResolveImageInfo->srcImage; + _srcLayout = pResolveImageInfo->srcImageLayout; + _dstImage = (MVKImage*)pResolveImageInfo->dstImage; + _dstLayout = pResolveImageInfo->dstImageLayout; + + _vkImageResolves.clear(); // Clear for reuse + _vkImageResolves.reserve(pResolveImageInfo->regionCount); + for (uint32_t regionIdx = 0; regionIdx < pResolveImageInfo->regionCount; regionIdx++) { + auto& vkIR = pResolveImageInfo->pRegions[regionIdx]; + + if (auto validation = validate(cmdBuff, &vkIR); validation != VK_SUCCESS) + return validation; + + _vkImageResolves.push_back(vkIR); + } + + return VK_SUCCESS; +} + +template +inline VkResult MVKCmdResolveImage::validate(MVKCommandBuffer* cmdBuff, const VkImageResolve2* region) { + uint8_t dstPlaneIndex = MVKImage::getPlaneFromVkImageAspectFlags(region->dstSubresource.aspectMask); + + // Validate + MVKPixelFormats* pixFmts = cmdBuff->getPixelFormats(); + if ( !mvkAreAllFlagsEnabled(pixFmts->getCapabilities(_dstImage->getMTLPixelFormat(dstPlaneIndex)), kMVKMTLFmtCapsResolve) ) { + return cmdBuff->reportError(VK_ERROR_FEATURE_NOT_PRESENT, "vkCmdResolveImage(): %s cannot be used as a resolve destination on this device.", pixFmts->getName(_dstImage->getVkFormat())); + } + return VK_SUCCESS; +} + template void MVKCmdResolveImage::encode(MVKCommandEncoder* cmdEncoder) { @@ -637,7 +750,7 @@ static inline MTLSize mvkClampMTLSize(MTLSize size, MTLOrigin origin, MTLSize ma if (cmdEncoder->getDevice()->_pMetalFeatures->multisampleLayeredRendering) { layerCnt = (uint32_t)_vkImageResolves.size(); } else { - for (VkImageResolve& vkIR : _vkImageResolves) { layerCnt += vkIR.dstSubresource.layerCount; } + for (VkImageResolve2& vkIR : _vkImageResolves) { layerCnt += vkIR.dstSubresource.layerCount; } } MVKMetalResolveSlice mtlResolveSlices[layerCnt]; @@ -645,7 +758,7 @@ static inline MTLSize mvkClampMTLSize(MTLSize size, MTLOrigin origin, MTLSize ma uint32_t copyCnt = 0; uint32_t sliceCnt = 0; - for (VkImageResolve& vkIR : _vkImageResolves) { + for (const auto& vkIR : _vkImageResolves) { uint8_t srcPlaneIndex = MVKImage::getPlaneFromVkImageAspectFlags(vkIR.srcSubresource.aspectMask); uint8_t dstPlaneIndex = MVKImage::getPlaneFromVkImageAspectFlags(vkIR.dstSubresource.aspectMask); @@ -793,12 +906,33 @@ static inline MTLSize mvkClampMTLSize(MTLSize size, MTLOrigin origin, MTLSize ma _bufferCopyRegions.clear(); // Clear for reuse _bufferCopyRegions.reserve(regionCount); for (uint32_t i = 0; i < regionCount; i++) { - _bufferCopyRegions.push_back(pRegions[i]); + auto& region = pRegions[i]; + VkBufferCopy2 region2 = { + VK_STRUCTURE_TYPE_BUFFER_COPY_2, nullptr, + region.srcOffset, region.dstOffset, region.size, + }; + _bufferCopyRegions.emplace_back(std::move(region2)); } return VK_SUCCESS; } +template +VkResult MVKCmdCopyBuffer::setContent(MVKCommandBuffer* cmdBuff, + const VkCopyBufferInfo2* pCopyBufferInfo) { + _srcBuffer = (MVKBuffer*)pCopyBufferInfo->srcBuffer; + _dstBuffer = (MVKBuffer*)pCopyBufferInfo->dstBuffer; + + // Add buffer regions + _bufferCopyRegions.clear(); // Clear for reuse + _bufferCopyRegions.reserve(pCopyBufferInfo->regionCount); + for (uint32_t i = 0; i < pCopyBufferInfo->regionCount; i++) { + _bufferCopyRegions.push_back(pCopyBufferInfo->pRegions[i]); + } + + return VK_SUCCESS; +} + template void MVKCmdCopyBuffer::encode(MVKCommandEncoder* cmdEncoder) { id srcMTLBuff = _srcBuffer->getMTLBuffer(); @@ -809,7 +943,7 @@ static inline MTLSize mvkClampMTLSize(MTLSize size, MTLOrigin origin, MTLSize ma VkDeviceSize buffAlign = cmdEncoder->getDevice()->_pMetalFeatures->mtlCopyBufferAlignment; - for (auto& cpyRgn : _bufferCopyRegions) { + for (const auto& cpyRgn : _bufferCopyRegions) { const bool useComputeCopy = buffAlign > 1 && (cpyRgn.srcOffset % buffAlign != 0 || cpyRgn.dstOffset % buffAlign != 0 || cpyRgn.size % buffAlign != 0); @@ -879,19 +1013,56 @@ static inline MTLSize mvkClampMTLSize(MTLSize size, MTLOrigin origin, MTLSize ma _bufferImageCopyRegions.clear(); // Clear for reuse _bufferImageCopyRegions.reserve(regionCount); for (uint32_t i = 0; i < regionCount; i++) { - _bufferImageCopyRegions.push_back(pRegions[i]); - - // Validate - if ( !_image->hasExpectedTexelSize() ) { - MTLPixelFormat mtlPixFmt = _image->getMTLPixelFormat(MVKImage::getPlaneFromVkImageAspectFlags(pRegions[i].imageSubresource.aspectMask)); + const auto& region = pRegions[i]; + VkBufferImageCopy2 region2 = { + VK_STRUCTURE_TYPE_BUFFER_IMAGE_COPY_2, nullptr, + region.bufferOffset, region.bufferRowLength, region.bufferImageHeight, + region.imageSubresource, region.imageOffset, region.imageExtent, + }; + _bufferImageCopyRegions.emplace_back(std::move(region2)); + } + + return validate(cmdBuff); +} + +template +VkResult MVKCmdBufferImageCopy::setContent(MVKCommandBuffer* cmdBuff, + const VkCopyBufferToImageInfo2* pCopyBufferToImageInfo) { + _buffer = (MVKBuffer*)pCopyBufferToImageInfo->srcBuffer; + _image = (MVKImage*)pCopyBufferToImageInfo->dstImage; + _toImage = true; + + _bufferImageCopyRegions.clear(); // Clear for reuse + _bufferImageCopyRegions.resize(pCopyBufferToImageInfo->regionCount); + std::memcpy(_bufferImageCopyRegions.data(), pCopyBufferToImageInfo->pRegions, pCopyBufferToImageInfo->regionCount * sizeof(VkBufferImageCopy2)); + return validate(cmdBuff); +} + +template +VkResult MVKCmdBufferImageCopy::setContent(MVKCommandBuffer* cmdBuff, + const VkCopyImageToBufferInfo2* pCopyImageToBufferInfo) { + _buffer = (MVKBuffer*)pCopyImageToBufferInfo->dstBuffer; + _image = (MVKImage*)pCopyImageToBufferInfo->srcImage; + _toImage = false; + + _bufferImageCopyRegions.clear(); // Clear for reuse + _bufferImageCopyRegions.resize(pCopyImageToBufferInfo->regionCount); + std::memcpy(_bufferImageCopyRegions.data(), pCopyImageToBufferInfo->pRegions, pCopyImageToBufferInfo->regionCount * sizeof(VkBufferImageCopy2)); + return validate(cmdBuff); +} + +template +inline VkResult MVKCmdBufferImageCopy::validate(MVKCommandBuffer *cmdBuff) { + for (auto& region : _bufferImageCopyRegions) { + if (!_image->hasExpectedTexelSize()) { + MTLPixelFormat mtlPixFmt = _image->getMTLPixelFormat(MVKImage::getPlaneFromVkImageAspectFlags(region.imageSubresource.aspectMask)); const char* cmdName = _toImage ? "vkCmdCopyBufferToImage" : "vkCmdCopyImageToBuffer"; return cmdBuff->reportError(VK_ERROR_FORMAT_NOT_SUPPORTED, "%s(): The image is using Metal format %s as a substitute for Vulkan format %s. Since the pixel size is different, content for the image cannot be copied to or from a buffer.", cmdName, cmdBuff->getPixelFormats()->getName(mtlPixFmt), cmdBuff->getPixelFormats()->getName(_image->getVkFormat())); } } - - return VK_SUCCESS; + return VK_SUCCESS; } - + template void MVKCmdBufferImageCopy::encode(MVKCommandEncoder* cmdEncoder) { id mtlBuffer = _buffer->getMTLBuffer(); @@ -1083,8 +1254,10 @@ static inline MTLSize mvkClampMTLSize(MTLSize size, MTLOrigin origin, MTLSize ma uint32_t attachmentCount, const VkClearAttachment* pAttachments, uint32_t rectCount, - const VkClearRect* pRects) { + const VkClearRect* pRects, + MVKCommandUse cmdUse) { _rpsKey.reset(); + _commandUse = cmdUse; _mtlDepthVal = 0.0; _mtlStencilValue = 0; _isClearingDepth = false; @@ -1292,7 +1465,7 @@ static inline MTLSize mvkClampMTLSize(MTLSize size, MTLOrigin origin, MTLSize ma // Render the clear colors to the attachments MVKCommandEncodingPool* cmdEncPool = cmdEncoder->getCommandEncodingPool(); id mtlRendEnc = cmdEncoder->_mtlRenderEncoder; - [mtlRendEnc pushDebugGroup: @"vkCmdClearAttachments"]; + [mtlRendEnc pushDebugGroup: getMTLDebugGroupLabel()]; [mtlRendEnc setRenderPipelineState: cmdEncPool->getCmdClearMTLRenderPipelineState(_rpsKey)]; [mtlRendEnc setDepthStencilState: cmdEncPool->getMTLDepthStencilState(isClearingDepth, isClearingStencil)]; [mtlRendEnc setStencilReferenceValue: _mtlStencilValue]; @@ -1301,6 +1474,8 @@ static inline MTLSize mvkClampMTLSize(MTLSize size, MTLOrigin origin, MTLSize ma [mtlRendEnc setDepthBias: 0 slopeScale: 0 clamp: 0]; [mtlRendEnc setViewport: {0, 0, (double) fbExtent.width, (double) fbExtent.height, 0.0, 1.0}]; [mtlRendEnc setScissorRect: {0, 0, fbExtent.width, fbExtent.height}]; + [mtlRendEnc setVisibilityResultMode: MTLVisibilityResultModeDisabled + offset: cmdEncoder->_pEncodingContext->mtlVisibilityResultOffset]; cmdEncoder->setVertexBytes(mtlRendEnc, clearColors, sizeof(clearColors), 0, true); cmdEncoder->setFragmentBytes(mtlRendEnc, clearColors, sizeof(clearColors), 0, true); @@ -1335,6 +1510,17 @@ static inline MTLSize mvkClampMTLSize(MTLSize size, MTLOrigin origin, MTLSize ma cmdEncoder->_scissorState.markDirty(); } +template +NSString* MVKCmdClearAttachments::getMTLDebugGroupLabel() { + switch (_commandUse) { + case kMVKCommandUseClearAttachments: return @"vkCmdClearAttachments"; + case kMVKCommandUseBeginRenderPass: return @"Clear Render Area on Begin Renderpass"; + case kMVKCommandUseBeginRendering: return @"Clear Render Area on Begin Rendering"; + case kMVKCommandUseNextSubpass: return @"Clear Render Area on Next Subpass"; + default: return @"Unknown Use Clear Attachments"; + } +} + template class MVKCmdClearAttachments<1>; template class MVKCmdClearAttachments<4>; diff --git a/MoltenVK/MoltenVK/Commands/MVKCommand.h b/MoltenVK/MoltenVK/Commands/MVKCommand.h index 1ae9a463e..cd48faccf 100644 --- a/MoltenVK/MoltenVK/Commands/MVKCommand.h +++ b/MoltenVK/MoltenVK/Commands/MVKCommand.h @@ -1,7 +1,7 @@ /* * MVKCommand.h * - * Copyright (c) 2015-2022 The Brenwill Workshop Ltd. (http://www.brenwill.com) + * Copyright (c) 2015-2023 The Brenwill Workshop Ltd. (http://www.brenwill.com) * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. diff --git a/MoltenVK/MoltenVK/Commands/MVKCommandBuffer.h b/MoltenVK/MoltenVK/Commands/MVKCommandBuffer.h index 592bd1b44..d2358bfff 100644 --- a/MoltenVK/MoltenVK/Commands/MVKCommandBuffer.h +++ b/MoltenVK/MoltenVK/Commands/MVKCommandBuffer.h @@ -1,7 +1,7 @@ /* * MVKCommandBuffer.h * - * Copyright (c) 2015-2022 The Brenwill Workshop Ltd. (http://www.brenwill.com) + * Copyright (c) 2015-2023 The Brenwill Workshop Ltd. (http://www.brenwill.com) * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. @@ -65,6 +65,24 @@ typedef struct MVKCommandEncodingContext { } MVKCommandEncodingContext; +#pragma mark - +#pragma mark MVKCurrentSubpassInfo + +/** Tracks current render subpass information. */ +typedef struct MVKCurrentSubpassInfo { + MVKRenderPass* renderpass; + uint32_t subpassIndex; + uint32_t subpassViewMask; + + void beginRenderpass(MVKRenderPass* rp); + void nextSubpass(); + void beginRendering(uint32_t viewMask); + +private: + void updateViewMask(); +} MVKCurrentSubpassInfo; + + #pragma mark - #pragma mark MVKCommandBuffer @@ -96,16 +114,25 @@ class MVKCommandBuffer : public MVKDispatchableVulkanAPIObject, void addCommand(MVKCommand* command); /** Returns the number of commands currently in this command buffer. */ - inline uint32_t getCommandCount() { return _commandCount; } + uint32_t getCommandCount() { return _commandCount; } /** Returns the command pool backing this command buffer. */ - inline MVKCommandPool* getCommandPool() { return _commandPool; } + MVKCommandPool* getCommandPool() { return _commandPool; } /** Submit the commands in this buffer as part of the queue submission. */ void submit(MVKQueueCommandBufferSubmission* cmdBuffSubmit, MVKCommandEncodingContext* pEncodingContext); /** Returns whether this command buffer can be submitted to a queue more than once. */ - inline bool getIsReusable() { return _isReusable; } + bool getIsReusable() { return _isReusable; } + + /** + * If this is a secondary command buffer, returns the number of views inherited + * from the primary command buffer. If this is a primary command buffer, returns 1. + */ + uint32_t getViewCount() const; + + /** Updated as renderpass commands are added. */ + MVKCurrentSubpassInfo _currentSubpassInfo; /** * Metal requires that a visibility buffer is established when a render pass is created, @@ -131,24 +158,6 @@ class MVKCommandBuffer : public MVKDispatchableVulkanAPIObject, MVKCmdBindPipeline* _lastTessellationPipeline; -#pragma mark Multiview render pass command management - - /** Update the last recorded multiview render pass */ - void recordBeginRenderPass(MVKCmdBeginRenderPassBase* mvkBeginRenderPass); - - /** Update the last recorded multiview subpass */ - void recordNextSubpass(); - - /** Forget the last recorded multiview render pass */ - void recordEndRenderPass(); - - /** The most recent recorded multiview render subpass */ - MVKRenderSubpass* _lastMultiviewSubpass; - - /** Returns the currently active multiview render subpass, even for secondary command buffers */ - MVKRenderSubpass* getLastMultiviewSubpass(); - - #pragma mark Construction MVKCommandBuffer(MVKDevice* device) : MVKDeviceTrackingMixin(device) {} @@ -159,13 +168,13 @@ class MVKCommandBuffer : public MVKDispatchableVulkanAPIObject, * Returns a reference to this object suitable for use as a Vulkan API handle. * This is the compliment of the getMVKCommandBuffer() method. */ - inline VkCommandBuffer getVkCommandBuffer() { return (VkCommandBuffer)getVkHandle(); } + VkCommandBuffer getVkCommandBuffer() { return (VkCommandBuffer)getVkHandle(); } /** * Retrieves the MVKCommandBuffer instance referenced by the VkCommandBuffer handle. * This is the compliment of the getVkCommandBuffer() method. */ - static inline MVKCommandBuffer* getMVKCommandBuffer(VkCommandBuffer vkCommandBuffer) { + static MVKCommandBuffer* getMVKCommandBuffer(VkCommandBuffer vkCommandBuffer) { return (MVKCommandBuffer*)getDispatchableObject(vkCommandBuffer); } @@ -177,19 +186,18 @@ class MVKCommandBuffer : public MVKDispatchableVulkanAPIObject, void propagateDebugName() override {} void init(const VkCommandBufferAllocateInfo* pAllocateInfo); bool canExecute(); - bool canPrefill(); - void prefill(); void clearPrefilledMTLCommandBuffer(); void releaseCommands(MVKCommand* command); void releaseRecordedCommands(); - void flushImmediateCmdEncoder(); + void flushImmediateCmdEncoder(); + void checkDeferredEncoding(); MVKCommand* _head = nullptr; MVKCommand* _tail = nullptr; MVKSmallVector _colorAttachmentFormats; MVKCommandPool* _commandPool; VkCommandBufferInheritanceInfo _secondaryInheritanceInfo; - VkCommandBufferInheritanceRenderingInfo _inerhitanceRenderingInfo; + VkCommandBufferInheritanceRenderingInfo _secondaryInheritanceRenderingInfo; id _prefilledMTLCmdBuffer = nil; MVKCommandEncodingContext* _immediateCmdEncodingContext = nullptr; MVKCommandEncoder* _immediateCmdEncoder = nullptr; @@ -243,14 +251,12 @@ class MVKCommandEncoder : public MVKBaseDeviceObject { const VkRect2D& renderArea, MVKArrayRef clearValues, MVKArrayRef attachments, - MVKArrayRef> subpassSamplePositions); + MVKArrayRef> subpassSamplePositions, + MVKCommandUse cmdUse = kMVKCommandUseBeginRenderPass); /** Begins the next render subpass. */ void beginNextSubpass(MVKCommand* subpassCmd, VkSubpassContents renderpassContents); - /** Begins the next multiview Metal render pass. */ - void beginNextMultiviewPass(); - /** Sets the dynamic custom sample positions to use when rendering. */ void setDynamicSamplePositions(MVKArrayRef dynamicSamplePositions); @@ -276,7 +282,7 @@ class MVKCommandEncoder : public MVKBaseDeviceObject { uint32_t getFramebufferLayerCount(); /** Returns the index of the currently active multiview subpass, or zero if the current render pass is not multiview. */ - uint32_t getMultiviewPassIndex(); + uint32_t getMultiviewPassIndex() { return _multiviewPassIndex; } /** Begins a Metal compute encoding. */ void beginMetalComputeEncoding(MVKCommandUse cmdUse); @@ -471,18 +477,26 @@ class MVKCommandEncoder : public MVKBaseDeviceObject { #pragma mark Construction - MVKCommandEncoder(MVKCommandBuffer* cmdBuffer); + MVKCommandEncoder(MVKCommandBuffer* cmdBuffer, + MVKPrefillMetalCommandBuffersStyle prefillStyle = MVK_CONFIG_PREFILL_METAL_COMMAND_BUFFERS_STYLE_NO_PREFILL); + + ~MVKCommandEncoder() override; protected: void addActivatedQueries(MVKQueryPool* pQueryPool, uint32_t query, uint32_t queryCount); void finishQueries(); - void setSubpass(MVKCommand* passCmd, VkSubpassContents subpassContents, uint32_t subpassIndex); - void clearRenderArea(); - NSString* getMTLRenderCommandEncoderName(MVKCommandUse cmdUse); + void setSubpass(MVKCommand* passCmd, VkSubpassContents subpassContents, uint32_t subpassIndex, MVKCommandUse cmdUse); + void clearRenderArea(MVKCommandUse cmdUse); + bool hasMoreMultiviewPasses(); + void beginNextMultiviewPass(); + void encodeCommandsImpl(MVKCommand* command); void encodeGPUCounterSample(MVKGPUCounterQueryPool* mvkQryPool, uint32_t sampleIndex, MVKCounterSamplingFlags samplingPoints); void encodeTimestampStageCounterSamples(); id getStageCountersMTLFence(); MVKArrayRef getCustomSamplePositions(); + NSString* getMTLRenderCommandEncoderName(MVKCommandUse cmdUse); + template void retainIfImmediatelyEncoding(T& mtlEnc); + template void endMetalEncoding(T& mtlEnc); typedef struct GPUCounterQuery { MVKGPUCounterQueryPool* queryPool = nullptr; @@ -507,12 +521,13 @@ class MVKCommandEncoder : public MVKBaseDeviceObject { MVKPushConstantsCommandEncoderState _computePushConstants; MVKPushConstantsCommandEncoderState _geometryPushConstants; MVKOcclusionQueryCommandEncoderState _occlusionQueryState; + MVKPrefillMetalCommandBuffersStyle _prefillStyle; VkSubpassContents _subpassContents; - MVKCommandUse _mtlComputeEncoderUse; - MVKCommandUse _mtlBlitEncoderUse; uint32_t _renderSubpassIndex; uint32_t _multiviewPassIndex; - uint32_t _flushCount = 0; + uint32_t _flushCount; + MVKCommandUse _mtlComputeEncoderUse; + MVKCommandUse _mtlBlitEncoderUse; bool _isRenderingEntireAttachment; }; diff --git a/MoltenVK/MoltenVK/Commands/MVKCommandBuffer.mm b/MoltenVK/MoltenVK/Commands/MVKCommandBuffer.mm index b8d5d1463..f3987e18d 100644 --- a/MoltenVK/MoltenVK/Commands/MVKCommandBuffer.mm +++ b/MoltenVK/MoltenVK/Commands/MVKCommandBuffer.mm @@ -1,7 +1,7 @@ /* * MVKCommandBuffer.mm * - * Copyright (c) 2015-2022 The Brenwill Workshop Ltd. (http://www.brenwill.com) + * Copyright (c) 2015-2023 The Brenwill Workshop Ltd. (http://www.brenwill.com) * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. @@ -30,6 +30,7 @@ using namespace std; + #pragma mark - #pragma mark MVKCommandEncodingContext @@ -57,6 +58,28 @@ } +#pragma mark - +#pragma mark MVKCurrentSubpassInfo + +void MVKCurrentSubpassInfo::beginRenderpass(MVKRenderPass* rp) { + renderpass = rp; + subpassIndex = 0; + updateViewMask(); +} +void MVKCurrentSubpassInfo::nextSubpass() { + subpassIndex++; + updateViewMask(); +} +void MVKCurrentSubpassInfo::beginRendering(uint32_t viewMask) { + renderpass = nullptr; + subpassIndex = 0; + subpassViewMask = viewMask; +} +void MVKCurrentSubpassInfo::updateViewMask() { + subpassViewMask = renderpass ? renderpass->getSubpass(subpassIndex)->getViewMask() : 0; +} + + #pragma mark - #pragma mark MVKCommandBuffer @@ -76,16 +99,15 @@ // Also check for and set any dynamic rendering inheritance info. The color format array must be copied locally. const VkCommandBufferInheritanceInfo* pInheritInfo = (_isSecondary ? pBeginInfo->pInheritanceInfo : nullptr); bool hasInheritInfo = mvkSetOrClear(&_secondaryInheritanceInfo, pInheritInfo); - _doesContinueRenderPass = mvkAreAllFlagsEnabled(usage, VK_COMMAND_BUFFER_USAGE_RENDER_PASS_CONTINUE_BIT) && hasInheritInfo; if (hasInheritInfo) { for (const auto* next = (VkBaseInStructure*)_secondaryInheritanceInfo.pNext; next; next = next->pNext) { switch (next->sType) { case VK_STRUCTURE_TYPE_COMMAND_BUFFER_INHERITANCE_RENDERING_INFO: { - if (mvkSetOrClear(&_inerhitanceRenderingInfo, (VkCommandBufferInheritanceRenderingInfo*)next)) { - for (uint32_t caIdx = 0; caIdx < _inerhitanceRenderingInfo.colorAttachmentCount; caIdx++) { - _colorAttachmentFormats.push_back(_inerhitanceRenderingInfo.pColorAttachmentFormats[caIdx]); + if (mvkSetOrClear(&_secondaryInheritanceRenderingInfo, (VkCommandBufferInheritanceRenderingInfo*)next)) { + for (uint32_t caIdx = 0; caIdx < _secondaryInheritanceRenderingInfo.colorAttachmentCount; caIdx++) { + _colorAttachmentFormats.push_back(_secondaryInheritanceRenderingInfo.pColorAttachmentFormats[caIdx]); } - _inerhitanceRenderingInfo.pColorAttachmentFormats = _colorAttachmentFormats.data(); + _secondaryInheritanceRenderingInfo.pColorAttachmentFormats = _colorAttachmentFormats.data(); } break; } @@ -94,19 +116,21 @@ } } } + _doesContinueRenderPass = mvkAreAllFlagsEnabled(usage, VK_COMMAND_BUFFER_USAGE_RENDER_PASS_CONTINUE_BIT) && hasInheritInfo; - if(canPrefill()) { - @autoreleasepool { - uint32_t qIdx = 0; - _prefilledMTLCmdBuffer = _commandPool->newMTLCommandBuffer(qIdx); // retain - - _immediateCmdEncodingContext = new MVKCommandEncodingContext; - - _immediateCmdEncoder = new MVKCommandEncoder(this); - _immediateCmdEncoder->beginEncoding(_prefilledMTLCmdBuffer, _immediateCmdEncodingContext); - } + if(_device->shouldPrefillMTLCommandBuffers() && !(_isSecondary || _supportsConcurrentExecution)) { + @autoreleasepool { + _prefilledMTLCmdBuffer = [_commandPool->getMTLCommandBuffer(0) retain]; // retained + auto prefillStyle = mvkConfig().prefillMetalCommandBuffers; + if (prefillStyle == MVK_CONFIG_PREFILL_METAL_COMMAND_BUFFERS_STYLE_IMMEDIATE_ENCODING || + prefillStyle == MVK_CONFIG_PREFILL_METAL_COMMAND_BUFFERS_STYLE_IMMEDIATE_ENCODING_NO_AUTORELEASE ) { + _immediateCmdEncodingContext = new MVKCommandEncodingContext; + _immediateCmdEncoder = new MVKCommandEncoder(this, prefillStyle); + _immediateCmdEncoder->beginEncoding(_prefilledMTLCmdBuffer, _immediateCmdEncodingContext); + } + } } - + return getConfigurationResult(); } @@ -146,10 +170,10 @@ _wasExecuted = false; _isExecutingNonConcurrently.clear(); _commandCount = 0; + _currentSubpassInfo = {}; _needsVisibilityResultMTLBuffer = false; _hasStageCounterTimestampCommand = false; _lastTessellationPipeline = nullptr; - _lastMultiviewSubpass = nullptr; setConfigurationResult(VK_NOT_READY); if (mvkAreAllFlagsEnabled(flags, VK_COMMAND_BUFFER_RESET_RELEASE_RESOURCES_BIT)) { @@ -163,10 +187,25 @@ _canAcceptCommands = false; flushImmediateCmdEncoder(); - + checkDeferredEncoding(); + return getConfigurationResult(); } +void MVKCommandBuffer::checkDeferredEncoding() { + if (mvkConfig().prefillMetalCommandBuffers == MVK_CONFIG_PREFILL_METAL_COMMAND_BUFFERS_STYLE_DEFERRED_ENCODING) { + @autoreleasepool { + MVKCommandEncodingContext encodingContext; + MVKCommandEncoder encoder(this); + encoder.encode(_prefilledMTLCmdBuffer, &encodingContext); + + // Once encoded onto Metal, if this command buffer is not reusable, we don't need the + // MVKCommand instances anymore, so release them in order to reduce memory pressure. + if ( !_isReusable ) { releaseRecordedCommands(); } + } + } +} + void MVKCommandBuffer::addCommand(MVKCommand* command) { if ( !_canAcceptCommands ) { setConfigurationResult(reportError(VK_NOT_READY, "Command buffer cannot accept commands before vkBeginCommandBuffer() is called.")); @@ -177,7 +216,6 @@ if(_immediateCmdEncoder) { _immediateCmdEncoder->encodeCommands(command); - if( !_isReusable ) { releaseCommands(command); return; @@ -225,9 +263,20 @@ return true; } -bool MVKCommandBuffer::canPrefill() { - bool wantPrefill = _device->shouldPrefillMTLCommandBuffers(); - return wantPrefill && !(_isSecondary || _supportsConcurrentExecution); +// Return the number of bits set in the view mask, with a minimum value of 1. +uint32_t MVKCommandBuffer::getViewCount() const { + uint32_t viewMask = 0; + if (_doesContinueRenderPass) { + MVKRenderPass* inheritedRenderPass = (MVKRenderPass*)_secondaryInheritanceInfo.renderPass; + if (inheritedRenderPass) { + viewMask = inheritedRenderPass->getSubpass(_secondaryInheritanceInfo.subpass)->getViewMask(); + } else { + viewMask = _secondaryInheritanceRenderingInfo.viewMask; + } + } else { + viewMask = _currentSubpassInfo.subpassViewMask; + } + return max(__builtin_popcount(viewMask), 1); } void MVKCommandBuffer::clearPrefilledMTLCommandBuffer() { @@ -283,33 +332,6 @@ } -#pragma mark - -#pragma mark Multiview render pass command management - -void MVKCommandBuffer::recordBeginRenderPass(MVKCmdBeginRenderPassBase* mvkBeginRenderPass) { - MVKRenderPass* mvkRendPass = mvkBeginRenderPass->getRenderPass(); - _lastMultiviewSubpass = mvkRendPass->isMultiview() ? mvkRendPass->getSubpass(0) : nullptr; -} - -void MVKCommandBuffer::recordNextSubpass() { - if (_lastMultiviewSubpass) { - _lastMultiviewSubpass = _lastMultiviewSubpass->getRenderPass()->getSubpass(_lastMultiviewSubpass->getSubpassIndex() + 1); - } -} - -void MVKCommandBuffer::recordEndRenderPass() { - _lastMultiviewSubpass = nullptr; -} - -MVKRenderSubpass* MVKCommandBuffer::getLastMultiviewSubpass() { - if (_doesContinueRenderPass) { - MVKRenderSubpass* subpass = ((MVKRenderPass*)_secondaryInheritanceInfo.renderPass)->getSubpass(_secondaryInheritanceInfo.subpass); - if (subpass->isMultiview()) { return subpass; } - } - return _lastMultiviewSubpass; -} - - #pragma mark - #pragma mark MVKCommandEncoder @@ -333,7 +355,18 @@ setLabelIfNotNil(_mtlCmdBuffer, _cmdBuffer->_debugName); } +// Multithread autorelease prefill style uses a dedicated autorelease pool when encoding each command. void MVKCommandEncoder::encodeCommands(MVKCommand* command) { + if (_prefillStyle == MVK_CONFIG_PREFILL_METAL_COMMAND_BUFFERS_STYLE_IMMEDIATE_ENCODING) { + @autoreleasepool { + encodeCommandsImpl(command); + } + } else { + encodeCommandsImpl(command); + } +} + +void MVKCommandEncoder::encodeCommandsImpl(MVKCommand* command) { while(command) { uint32_t prevMVPassIdx = _multiviewPassIndex; command->encode(this); @@ -393,7 +426,8 @@ pRenderingInfo->renderArea, MVKArrayRef(clearValues, attCnt), MVKArrayRef(attachments, attCnt), - MVKArrayRef>()); + MVKArrayRef>(), + kMVKCommandUseBeginRendering); // If we've just created new transient objects, once retained by this encoder, // mark the objects as transient by releasing them from their initial creation @@ -412,7 +446,8 @@ const VkRect2D& renderArea, MVKArrayRef clearValues, MVKArrayRef attachments, - MVKArrayRef> subpassSamplePositions) { + MVKArrayRef> subpassSamplePositions, + MVKCommandUse cmdUse) { _pEncodingContext->setRenderingContext(renderPass, framebuffer); _renderArea = renderArea; _isRenderingEntireAttachment = (mvkVkOffset2DsAreEqual(_renderArea.offset, {0,0}) && @@ -427,18 +462,23 @@ subpassSamplePositions[spSPIdx].end()); } - setSubpass(passCmd, subpassContents, 0); + setSubpass(passCmd, subpassContents, 0, cmdUse); } void MVKCommandEncoder::beginNextSubpass(MVKCommand* subpassCmd, VkSubpassContents contents) { - setSubpass(subpassCmd, contents, _renderSubpassIndex + 1); + if (hasMoreMultiviewPasses()) { + beginNextMultiviewPass(); + } else { + setSubpass(subpassCmd, contents, _renderSubpassIndex + 1, kMVKCommandUseNextSubpass); + } } // Sets the current render subpass to the subpass with the specified index. // End current Metal renderpass before udpating subpass index. void MVKCommandEncoder::setSubpass(MVKCommand* subpassCmd, VkSubpassContents subpassContents, - uint32_t subpassIndex) { + uint32_t subpassIndex, + MVKCommandUse cmdUse) { encodeStoreActions(); endMetalRenderEncoding(); @@ -451,21 +491,36 @@ (_device->_pMetalFeatures->multisampleLayeredRendering || (getSubpass()->getSampleCount() == VK_SAMPLE_COUNT_1_BIT))); - beginMetalRenderPass(_renderSubpassIndex == 0 ? kMVKCommandUseBeginRenderPass : kMVKCommandUseNextSubpass); + beginMetalRenderPass(cmdUse); } +bool MVKCommandEncoder::hasMoreMultiviewPasses() { return _multiviewPassIndex + 1 < getSubpass()->getMultiviewMetalPassCount(); } + void MVKCommandEncoder::beginNextMultiviewPass() { encodeStoreActions(); _multiviewPassIndex++; beginMetalRenderPass(kMVKCommandUseNextSubpass); } -uint32_t MVKCommandEncoder::getMultiviewPassIndex() { return _multiviewPassIndex; } - void MVKCommandEncoder::setDynamicSamplePositions(MVKArrayRef dynamicSamplePositions) { _dynamicSamplePositions.assign(dynamicSamplePositions.begin(), dynamicSamplePositions.end()); } +// Retain encoders when prefilling, because prefilling may span multiple autorelease pools. +template +void MVKCommandEncoder::retainIfImmediatelyEncoding(T& mtlEnc) { + if (_cmdBuffer->_immediateCmdEncoder) { [mtlEnc retain]; } +} + +// End Metal encoder and release retained encoders when immediately encoding. +template +void MVKCommandEncoder::endMetalEncoding(T& mtlEnc) { + [mtlEnc endEncoding]; + if (_cmdBuffer->_immediateCmdEncoder) { [mtlEnc release]; } + mtlEnc = nil; +} + + // Creates _mtlRenderEncoder and marks cached render state as dirty so it will be set into the _mtlRenderEncoder. void MVKCommandEncoder::beginMetalRenderPass(MVKCommandUse cmdUse) { @@ -525,13 +580,14 @@ [mtlRPDesc setSamplePositions: cstmSampPosns.data count: cstmSampPosns.size]; } - _mtlRenderEncoder = [_mtlCmdBuffer renderCommandEncoderWithDescriptor: mtlRPDesc]; // not retained + _mtlRenderEncoder = [_mtlCmdBuffer renderCommandEncoderWithDescriptor: mtlRPDesc]; + retainIfImmediatelyEncoding(_mtlRenderEncoder); setLabelIfNotNil(_mtlRenderEncoder, getMTLRenderCommandEncoderName(cmdUse)); // We shouldn't clear the render area if we are restarting the Metal renderpass // separately from a Vulkan subpass, and we otherwise only need to clear render // area if we're not rendering to the entire attachment. - if ( !isRestart && !_isRenderingEntireAttachment ) { clearRenderArea(); } + if ( !isRestart && !_isRenderingEntireAttachment ) { clearRenderArea(cmdUse); } _graphicsPipelineState.beginMetalRenderPass(); _graphicsResourcesState.beginMetalRenderPass(); @@ -660,7 +716,7 @@ encodeStoreActions(true); } _graphicsPipelineState.encode(stage); // Must do first..it sets others - _graphicsResourcesState.encode(stage); + _graphicsResourcesState.encode(stage); // Before push constants, to allow them to override. _viewportState.encode(stage); _scissorState.encode(stage); _depthBiasState.encode(stage); @@ -675,7 +731,7 @@ } // Clears the render area of the framebuffer attachments. -void MVKCommandEncoder::clearRenderArea() { +void MVKCommandEncoder::clearRenderArea(MVKCommandUse cmdUse) { MVKClearAttachments clearAtts; getSubpass()->populateClearAttachments(clearAtts, _clearValues.contents()); @@ -693,7 +749,7 @@ // Create and execute a temporary clear attachments command. // To be threadsafe...do NOT acquire and return the command from the pool. MVKCmdClearMultiAttachments<1> cmd; - cmd.setContent(_cmdBuffer, clearAttCnt, clearAtts.data(), 1, &clearRect); + cmd.setContent(_cmdBuffer, clearAttCnt, clearAtts.data(), 1, &clearRect, cmdUse); cmd.encode(this); } else { // For multiview, it is possible that some attachments need different layers cleared. @@ -705,11 +761,11 @@ // To be threadsafe...do NOT acquire and return the command from the pool. if (clearRects.size() == 1) { MVKCmdClearSingleAttachment<1> cmd; - cmd.setContent(_cmdBuffer, 1, &clearAtt, (uint32_t)clearRects.size(), clearRects.data()); + cmd.setContent(_cmdBuffer, 1, &clearAtt, (uint32_t)clearRects.size(), clearRects.data(), cmdUse); cmd.encode(this); } else { MVKCmdClearSingleAttachment<4> cmd; - cmd.setContent(_cmdBuffer, 1, &clearAtt, (uint32_t)clearRects.size(), clearRects.data()); + cmd.setContent(_cmdBuffer, 1, &clearAtt, (uint32_t)clearRects.size(), clearRects.data(), cmdUse); cmd.encode(this); } } @@ -726,7 +782,7 @@ void MVKCommandEncoder::finalizeDispatchState() { _computePipelineState.encode(); // Must do first..it sets others - _computeResourcesState.encode(); + _computeResourcesState.encode(); // Before push constants, to allow them to override. _computePushConstants.encode(); } @@ -735,6 +791,11 @@ } void MVKCommandEncoder::endRenderpass() { + if (hasMoreMultiviewPasses()) { + beginNextMultiviewPass(); + return; + } + encodeStoreActions(); endMetalRenderEncoding(); if ( !mvkIsAnyFlagEnabled(_pEncodingContext->getRenderingFlags(), VK_RENDERING_SUSPENDING_BIT) ) { @@ -748,8 +809,7 @@ if (_mtlRenderEncoder == nil) { return; } if (_cmdBuffer->_hasStageCounterTimestampCommand) { [_mtlRenderEncoder updateFence: getStageCountersMTLFence() afterStages: MTLRenderStageFragment]; } - [_mtlRenderEncoder endEncoding]; - _mtlRenderEncoder = nil; // not retained + endMetalEncoding(_mtlRenderEncoder); getSubpass()->resolveUnresolvableAttachments(this, _attachments.contents()); @@ -776,13 +836,11 @@ _computePushConstants.markDirty(); if (_mtlComputeEncoder && _cmdBuffer->_hasStageCounterTimestampCommand) { [_mtlComputeEncoder updateFence: getStageCountersMTLFence()]; } - [_mtlComputeEncoder endEncoding]; - _mtlComputeEncoder = nil; // not retained + endMetalEncoding(_mtlComputeEncoder); _mtlComputeEncoderUse = kMVKCommandUseNone; if (_mtlBlitEncoder && _cmdBuffer->_hasStageCounterTimestampCommand) { [_mtlBlitEncoder updateFence: getStageCountersMTLFence()]; } - [_mtlBlitEncoder endEncoding]; - _mtlBlitEncoder = nil; // not retained + endMetalEncoding(_mtlBlitEncoder); _mtlBlitEncoderUse = kMVKCommandUseNone; encodeTimestampStageCounterSamples(); @@ -791,7 +849,8 @@ id MVKCommandEncoder::getMTLComputeEncoder(MVKCommandUse cmdUse) { if ( !_mtlComputeEncoder ) { endCurrentMetalEncoding(); - _mtlComputeEncoder = [_mtlCmdBuffer computeCommandEncoder]; // not retained + _mtlComputeEncoder = [_mtlCmdBuffer computeCommandEncoder]; + retainIfImmediatelyEncoding(_mtlComputeEncoder); beginMetalComputeEncoding(cmdUse); } if (_mtlComputeEncoderUse != cmdUse) { @@ -804,7 +863,8 @@ id MVKCommandEncoder::getMTLBlitEncoder(MVKCommandUse cmdUse) { if ( !_mtlBlitEncoder ) { endCurrentMetalEncoding(); - _mtlBlitEncoder = [_mtlCmdBuffer blitCommandEncoder]; // not retained + _mtlBlitEncoder = [_mtlCmdBuffer blitCommandEncoder]; + retainIfImmediatelyEncoding(_mtlBlitEncoder); } if (_mtlBlitEncoderUse != cmdUse) { _mtlBlitEncoderUse = cmdUse; @@ -847,7 +907,7 @@ } if (descOverride) { - _graphicsResourcesState.markBufferIndexDirty(kMVKShaderStageVertex, mtlBuffIndex); + _graphicsResourcesState.markBufferIndexOverridden(kMVKShaderStageVertex, mtlBuffIndex); } } @@ -864,7 +924,7 @@ } if (descOverride) { - _graphicsResourcesState.markBufferIndexDirty(kMVKShaderStageFragment, mtlBuffIndex); + _graphicsResourcesState.markBufferIndexOverridden(kMVKShaderStageFragment, mtlBuffIndex); } } @@ -881,7 +941,7 @@ } if (descOverride) { - _computeResourcesState.markBufferIndexDirty(mtlBuffIndex); + _computeResourcesState.markBufferIndexOverridden(mtlBuffIndex); } } @@ -979,7 +1039,7 @@ // in Xcode 13 as inaccurate for all platforms. Leave this value at 1 until we can figure out how to // accurately determine the length of sampleBufferAttachments on each platform. uint32_t maxMTLBlitPassSampleBuffers = 1; // Was MTLMaxBlitPassSampleBuffers API definition - auto* bpDesc = [[[MTLBlitPassDescriptor alloc] init] autorelease]; + auto* bpDesc = [MTLBlitPassDescriptor new]; // temp retained for (uint32_t attIdx = 0; attIdx < maxMTLBlitPassSampleBuffers && qIdx < qCnt; attIdx++, qIdx++) { auto* sbAttDesc = bpDesc.sampleBufferAttachments[attIdx]; auto& tsQry = _timestampStageCounterQueries[qIdx]; @@ -994,6 +1054,7 @@ auto* mtlEnc = [_mtlCmdBuffer blitCommandEncoderWithDescriptor: bpDesc]; setLabelIfNotNil(mtlEnc, mvkMTLBlitCommandEncoderLabel(kMVKCommandUseRecordGPUCounterSample)); + [bpDesc release]; // Release temp object [mtlEnc waitForFence: getStageCountersMTLFence()]; [mtlEnc fillBuffer: _device->getDummyBlitMTLBuffer() range: NSMakeRange(0, 1) value: 0]; [mtlEnc endEncoding]; @@ -1047,7 +1108,8 @@ #pragma mark Construction -MVKCommandEncoder::MVKCommandEncoder(MVKCommandBuffer* cmdBuffer) : MVKBaseDeviceObject(cmdBuffer->getDevice()), +MVKCommandEncoder::MVKCommandEncoder(MVKCommandBuffer* cmdBuffer, + MVKPrefillMetalCommandBuffersStyle prefillStyle) : MVKBaseDeviceObject(cmdBuffer->getDevice()), _cmdBuffer(cmdBuffer), _graphicsPipelineState(this), _computePipelineState(this), @@ -1065,7 +1127,8 @@ _fragmentPushConstants(this, VK_SHADER_STAGE_FRAGMENT_BIT), _computePushConstants(this, VK_SHADER_STAGE_COMPUTE_BIT), _geometryPushConstants(this, VK_SHADER_STAGE_GEOMETRY_BIT), - _occlusionQueryState(this) { + _occlusionQueryState(this), + _prefillStyle(prefillStyle){ _pDeviceFeatures = &_device->_enabledFeatures; _pDeviceMetalFeatures = _device->_pMetalFeatures; @@ -1080,6 +1143,14 @@ _mtlBlitEncoderUse = kMVKCommandUseNone; _pEncodingContext = nullptr; _stageCountersMTLFence = nil; + _flushCount = 0; +} + +MVKCommandEncoder::~MVKCommandEncoder() { + [_mtlRenderEncoder release]; + [_mtlComputeEncoder release]; + [_mtlBlitEncoder release]; + // _stageCountersMTLFence is released after Metal command buffer completion } @@ -1101,6 +1172,7 @@ NSString* mvkMTLRenderCommandEncoderLabel(MVKCommandUse cmdUse) { switch (cmdUse) { + case kMVKCommandUseBeginRendering: return @"vkCmdBeginRendering RenderEncoder"; case kMVKCommandUseBeginRenderPass: return @"vkCmdBeginRenderPass RenderEncoder"; case kMVKCommandUseNextSubpass: return @"vkCmdNextSubpass RenderEncoder"; case kMVKCommandUseRestartSubpass: return @"Metal renderpass restart RenderEncoder"; diff --git a/MoltenVK/MoltenVK/Commands/MVKCommandEncoderState.h b/MoltenVK/MoltenVK/Commands/MVKCommandEncoderState.h index d70e2f5dc..71c74d13e 100644 --- a/MoltenVK/MoltenVK/Commands/MVKCommandEncoderState.h +++ b/MoltenVK/MoltenVK/Commands/MVKCommandEncoderState.h @@ -1,7 +1,7 @@ /* * MVKCommandEncoderState.h * - * Copyright (c) 2015-2022 The Brenwill Workshop Ltd. (http://www.brenwill.com) + * Copyright (c) 2015-2023 The Brenwill Workshop Ltd. (http://www.brenwill.com) * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. @@ -64,8 +64,7 @@ class MVKCommandEncoderState : public MVKBaseObject { /** * Called automatically when a Metal render pass begins. If the contents have been * modified from the default values, this instance is marked as dirty, so the contents - * 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. + * will be encoded to Metal. Default state can be left unencoded on a new Metal encoder. */ virtual void beginMetalRenderPass() { if (_isModified) { markDirty(); } } @@ -75,8 +74,7 @@ class MVKCommandEncoderState : public MVKBaseObject { /** * Called automatically when a Metal compute pass begins. If the contents have been * modified from the default values, this instance is marked as dirty, so the contents - * 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. + * will be encoded to Metal. Default state can be left unencoded on a new Metal encoder. */ virtual void beginMetalComputeEncoding() { if (_isModified) { markDirty(); } } @@ -377,15 +375,25 @@ class MVKResourcesCommandEncoderState : public MVKCommandEncoderState { bindingsDirtyFlag = true; } - // Template function to find and mark dirty the binding that uses the index. + // Template function to find and mark as overridden the binding that uses the index. template - void markIndexDirty(T& bindings, bool& bindingsDirtyFlag, uint32_t index) { - for (auto& b : bindings) { + void markBufferIndexOverridden(T& bufferBindings, uint32_t index) { + for (auto& b : bufferBindings) { if (b.index == index) { + b.isOverridden = true; + return; + } + } + } + + // Template function to mark any overridden bindings as dirty. + template + void markOverriddenBufferIndexesDirty(T& bufferBindings, bool& bindingsDirtyFlag) { + for (auto& b : bufferBindings) { + if (b.isOverridden) { b.markDirty(); bindingsDirtyFlag = true; MVKCommandEncoderState::markDirty(); - return; } } } @@ -548,8 +556,14 @@ class MVKGraphicsResourcesCommandEncoderState : public MVKResourcesCommandEncode /** Offset all buffers for vertex attribute bindings with zero divisors by the given number of strides. */ void offsetZeroDivisorVertexBuffers(MVKGraphicsStage stage, MVKGraphicsPipeline* pipeline, uint32_t firstInstance); - /** Marks dirty the buffer binding using the index. */ - void markBufferIndexDirty(MVKShaderStage stage, uint32_t mtlBufferIndex); + /** + * Marks the buffer binding using the index as having been overridden, + * such as by push constants or internal rendering in some transfers. + * */ + void markBufferIndexOverridden(MVKShaderStage stage, uint32_t mtlBufferIndex); + + /** Marks any overridden buffer indexes as dirty. */ + void markOverriddenBufferIndexesDirty(); void markDirty() override; @@ -600,8 +614,14 @@ class MVKComputeResourcesCommandEncoderState : public MVKResourcesCommandEncoder MTLResourceUsage mtlUsage, MTLRenderStages mtlStages) override; - /** Marks dirty the buffer binding using the index. */ - void markBufferIndexDirty(uint32_t mtlBufferIndex); + /** + * Marks the buffer binding using the index as having been overridden, + * such as by push constants or internal rendering in some transfers. + * */ + void markBufferIndexOverridden(uint32_t mtlBufferIndex); + + /** Marks any overridden buffer indexes as dirty. */ + void markOverriddenBufferIndexesDirty(); void markDirty() override; @@ -651,6 +671,7 @@ class MVKOcclusionQueryCommandEncoderState : public MVKCommandEncoderState { MVKSmallVector _mtlRenderPassQueries; MTLVisibilityResultMode _mtlVisibilityResultMode = MTLVisibilityResultModeDisabled; + bool _hasRasterized = false; }; diff --git a/MoltenVK/MoltenVK/Commands/MVKCommandEncoderState.mm b/MoltenVK/MoltenVK/Commands/MVKCommandEncoderState.mm index 3764e67fd..4a2d24e3c 100644 --- a/MoltenVK/MoltenVK/Commands/MVKCommandEncoderState.mm +++ b/MoltenVK/MoltenVK/Commands/MVKCommandEncoderState.mm @@ -1,7 +1,7 @@ /* * MVKCommandEncoderState.mm * - * Copyright (c) 2015-2022 The Brenwill Workshop Ltd. (http://www.brenwill.com) + * Copyright (c) 2015-2023 The Brenwill Workshop Ltd. (http://www.brenwill.com) * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. @@ -1034,9 +1034,15 @@ } } -void MVKGraphicsResourcesCommandEncoderState::markBufferIndexDirty(MVKShaderStage stage, uint32_t mtlBufferIndex) { +void MVKGraphicsResourcesCommandEncoderState::markBufferIndexOverridden(MVKShaderStage stage, uint32_t mtlBufferIndex) { auto& stageRezBinds = _shaderStageResourceBindings[stage]; - markIndexDirty(stageRezBinds.bufferBindings, stageRezBinds.areBufferBindingsDirty, mtlBufferIndex); + MVKResourcesCommandEncoderState::markBufferIndexOverridden(stageRezBinds.bufferBindings, mtlBufferIndex); +} + +void MVKGraphicsResourcesCommandEncoderState::markOverriddenBufferIndexesDirty() { + for (auto& stageRezBinds : _shaderStageResourceBindings) { + MVKResourcesCommandEncoderState::markOverriddenBufferIndexesDirty(stageRezBinds.bufferBindings, stageRezBinds.areBufferBindingsDirty); + } } @@ -1172,17 +1178,23 @@ } } -void MVKComputeResourcesCommandEncoderState::markBufferIndexDirty(uint32_t mtlBufferIndex) { - markIndexDirty(_resourceBindings.bufferBindings, _resourceBindings.areBufferBindingsDirty, mtlBufferIndex); +void MVKComputeResourcesCommandEncoderState::markBufferIndexOverridden(uint32_t mtlBufferIndex) { + MVKResourcesCommandEncoderState::markBufferIndexOverridden(_resourceBindings.bufferBindings, mtlBufferIndex); +} + +void MVKComputeResourcesCommandEncoderState::markOverriddenBufferIndexesDirty() { + MVKResourcesCommandEncoderState::markOverriddenBufferIndexesDirty(_resourceBindings.bufferBindings, _resourceBindings.areBufferBindingsDirty); } #pragma mark - #pragma mark MVKOcclusionQueryCommandEncoderState +// Metal resets the query counter at a render pass boundary, so copy results to the query pool's accumulation buffer. +// Don't copy occlusion info until after rasterization, as Metal renderpasses can be ended prematurely during tessellation. void MVKOcclusionQueryCommandEncoderState::endMetalRenderPass() { const MVKMTLBufferAllocation* vizBuff = _cmdEncoder->_pEncodingContext->visibilityResultBuffer; - if ( !vizBuff || _mtlRenderPassQueries.empty() ) { return; } // Nothing to do. + if ( !_hasRasterized || !vizBuff || _mtlRenderPassQueries.empty() ) { return; } // Nothing to do. id mtlAccumState = _cmdEncoder->getCommandEncodingPool()->getAccumulateOcclusionQueryResultsMTLComputePipelineState(); id mtlAccumEncoder = _cmdEncoder->getMTLComputeEncoder(kMVKCommandUseAccumOcclusionQuery); @@ -1200,6 +1212,7 @@ } _cmdEncoder->endCurrentMetalEncoding(); _mtlRenderPassQueries.clear(); + _hasRasterized = false; } // The Metal visibility buffer has a finite size, and on some Metal platforms (looking at you M1), @@ -1218,18 +1231,21 @@ _mtlVisibilityResultMode = MTLVisibilityResultModeDisabled; _cmdEncoder->_pEncodingContext->mtlVisibilityResultOffset -= kMVKQuerySlotSizeInBytes; } + _hasRasterized = false; markDirty(); } void MVKOcclusionQueryCommandEncoderState::endOcclusionQuery(MVKOcclusionQueryPool* pQueryPool, uint32_t query) { _mtlVisibilityResultMode = MTLVisibilityResultModeDisabled; _cmdEncoder->_pEncodingContext->mtlVisibilityResultOffset += kMVKQuerySlotSizeInBytes; + _hasRasterized = true; // Handle begin and end query with no rasterizing before end of renderpass. markDirty(); } void MVKOcclusionQueryCommandEncoderState::encodeImpl(uint32_t stage) { if (stage != kMVKGraphicsStageRasterization) { return; } + _hasRasterized = true; [_cmdEncoder->_mtlRenderEncoder setVisibilityResultMode: _mtlVisibilityResultMode offset: _cmdEncoder->_pEncodingContext->mtlVisibilityResultOffset]; } diff --git a/MoltenVK/MoltenVK/Commands/MVKCommandEncodingPool.h b/MoltenVK/MoltenVK/Commands/MVKCommandEncodingPool.h index 67b77d1fb..ba9caf053 100644 --- a/MoltenVK/MoltenVK/Commands/MVKCommandEncodingPool.h +++ b/MoltenVK/MoltenVK/Commands/MVKCommandEncodingPool.h @@ -1,7 +1,7 @@ /* * MVKCommandEncodingPool.h * - * Copyright (c) 2015-2022 The Brenwill Workshop Ltd. (http://www.brenwill.com) + * Copyright (c) 2015-2023 The Brenwill Workshop Ltd. (http://www.brenwill.com) * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. diff --git a/MoltenVK/MoltenVK/Commands/MVKCommandEncodingPool.mm b/MoltenVK/MoltenVK/Commands/MVKCommandEncodingPool.mm index 346c0b26a..1d8c893d7 100644 --- a/MoltenVK/MoltenVK/Commands/MVKCommandEncodingPool.mm +++ b/MoltenVK/MoltenVK/Commands/MVKCommandEncodingPool.mm @@ -1,7 +1,7 @@ /* * MVKCommandEncodingPool.mm * - * Copyright (c) 2015-2022 The Brenwill Workshop Ltd. (http://www.brenwill.com) + * Copyright (c) 2015-2023 The Brenwill Workshop Ltd. (http://www.brenwill.com) * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. @@ -109,7 +109,7 @@ MVK_ENC_REZ_ACCESS(_mtlFillBufferComputePipelineState, newCmdFillBufferMTLComputePipelineState(_commandPool)); } -static inline uint32_t getRenderpassLoadStoreStateIndex(MVKFormatType type) { +static constexpr uint32_t getRenderpassLoadStoreStateIndex(MVKFormatType type) { switch (type) { case kMVKFormatColorHalf: case kMVKFormatColorFloat: diff --git a/MoltenVK/MoltenVK/Commands/MVKCommandPipelineStateFactoryShaderSource.h b/MoltenVK/MoltenVK/Commands/MVKCommandPipelineStateFactoryShaderSource.h index 3730d7193..acd492fc9 100644 --- a/MoltenVK/MoltenVK/Commands/MVKCommandPipelineStateFactoryShaderSource.h +++ b/MoltenVK/MoltenVK/Commands/MVKCommandPipelineStateFactoryShaderSource.h @@ -1,7 +1,7 @@ /* * MVKCommandPipelineStateFactoryShaderSource.h * - * Copyright (c) 2015-2022 The Brenwill Workshop Ltd. (http://www.brenwill.com) + * Copyright (c) 2015-2023 The Brenwill Workshop Ltd. (http://www.brenwill.com) * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. diff --git a/MoltenVK/MoltenVK/Commands/MVKCommandPool.h b/MoltenVK/MoltenVK/Commands/MVKCommandPool.h index 977f963d7..f2cf1e66e 100644 --- a/MoltenVK/MoltenVK/Commands/MVKCommandPool.h +++ b/MoltenVK/MoltenVK/Commands/MVKCommandPool.h @@ -1,7 +1,7 @@ /* * MVKCommandPool.h * - * Copyright (c) 2015-2022 The Brenwill Workshop Ltd. (http://www.brenwill.com) + * Copyright (c) 2015-2023 The Brenwill Workshop Ltd. (http://www.brenwill.com) * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. @@ -82,7 +82,7 @@ class MVKCommandPool : public MVKVulkanAPIDeviceObject { * Returns a retained MTLCommandBuffer created from the indexed queue * within the queue family for which this command pool was created. */ - id newMTLCommandBuffer(uint32_t queueIndex); + id getMTLCommandBuffer(uint32_t queueIndex); /** Release any held but unused memory back to the system. */ void trim(); diff --git a/MoltenVK/MoltenVK/Commands/MVKCommandPool.mm b/MoltenVK/MoltenVK/Commands/MVKCommandPool.mm index 0e0d1f302..be4713f36 100644 --- a/MoltenVK/MoltenVK/Commands/MVKCommandPool.mm +++ b/MoltenVK/MoltenVK/Commands/MVKCommandPool.mm @@ -1,7 +1,7 @@ /* * MVKCommandPool.mm * - * Copyright (c) 2015-2022 The Brenwill Workshop Ltd. (http://www.brenwill.com) + * Copyright (c) 2015-2023 The Brenwill Workshop Ltd. (http://www.brenwill.com) * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. @@ -77,8 +77,8 @@ } } -id MVKCommandPool::newMTLCommandBuffer(uint32_t queueIndex) { - return [_device->getQueue(_queueFamilyIndex, queueIndex)->getMTLCommandBuffer(kMVKCommandUseEndCommandBuffer, true) retain]; +id MVKCommandPool::getMTLCommandBuffer(uint32_t queueIndex) { + return _device->getQueue(_queueFamilyIndex, queueIndex)->getMTLCommandBuffer(kMVKCommandUseEndCommandBuffer, true); } // Clear the command type pool member variables. diff --git a/MoltenVK/MoltenVK/Commands/MVKCommandResourceFactory.h b/MoltenVK/MoltenVK/Commands/MVKCommandResourceFactory.h index a23dd0d97..bd30da20c 100644 --- a/MoltenVK/MoltenVK/Commands/MVKCommandResourceFactory.h +++ b/MoltenVK/MoltenVK/Commands/MVKCommandResourceFactory.h @@ -1,7 +1,7 @@ /* * MVKCommandResourceFactory.h * - * Copyright (c) 2015-2022 The Brenwill Workshop Ltd. (http://www.brenwill.com) + * Copyright (c) 2015-2023 The Brenwill Workshop Ltd. (http://www.brenwill.com) * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. diff --git a/MoltenVK/MoltenVK/Commands/MVKCommandResourceFactory.mm b/MoltenVK/MoltenVK/Commands/MVKCommandResourceFactory.mm index fffa8423f..d6c6efb6d 100644 --- a/MoltenVK/MoltenVK/Commands/MVKCommandResourceFactory.mm +++ b/MoltenVK/MoltenVK/Commands/MVKCommandResourceFactory.mm @@ -1,7 +1,7 @@ /* * MVKCommandResourceFactory.mm * - * Copyright (c) 2015-2022 The Brenwill Workshop Ltd. (http://www.brenwill.com) + * Copyright (c) 2015-2023 The Brenwill Workshop Ltd. (http://www.brenwill.com) * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. @@ -116,7 +116,7 @@ id vtxFunc = newClearVertFunction(attKey); // temp retain id fragFunc = newClearFragFunction(attKey); // temp retain MTLRenderPipelineDescriptor* plDesc = [MTLRenderPipelineDescriptor new]; // temp retain - plDesc.label = @"vkCmdClearAttachments"; + plDesc.label = @"ClearRenderAttachments"; plDesc.vertexFunction = vtxFunc; plDesc.fragmentFunction = fragFunc; plDesc.sampleCount = attKey.mtlSampleCount; diff --git a/MoltenVK/MoltenVK/Commands/MVKCommandTypePools.def b/MoltenVK/MoltenVK/Commands/MVKCommandTypePools.def index e8cbae6e3..f8f208b63 100644 --- a/MoltenVK/MoltenVK/Commands/MVKCommandTypePools.def +++ b/MoltenVK/MoltenVK/Commands/MVKCommandTypePools.def @@ -1,7 +1,7 @@ /* * MVKCommandTypePools.def * - * Copyright (c) 2015-2022 The Brenwill Workshop Ltd. (http://www.brenwill.com) + * Copyright (c) 2015-2023 The Brenwill Workshop Ltd. (http://www.brenwill.com) * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. diff --git a/MoltenVK/MoltenVK/Commands/MVKMTLBufferAllocation.h b/MoltenVK/MoltenVK/Commands/MVKMTLBufferAllocation.h index 41cd28f1f..474a0a169 100644 --- a/MoltenVK/MoltenVK/Commands/MVKMTLBufferAllocation.h +++ b/MoltenVK/MoltenVK/Commands/MVKMTLBufferAllocation.h @@ -1,7 +1,7 @@ /* * MVKMTLBufferAllocation.h * - * Copyright (c) 2015-2022 The Brenwill Workshop Ltd. (http://www.brenwill.com) + * Copyright (c) 2015-2023 The Brenwill Workshop Ltd. (http://www.brenwill.com) * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. diff --git a/MoltenVK/MoltenVK/Commands/MVKMTLBufferAllocation.mm b/MoltenVK/MoltenVK/Commands/MVKMTLBufferAllocation.mm index 659a64225..4e3e65ba2 100644 --- a/MoltenVK/MoltenVK/Commands/MVKMTLBufferAllocation.mm +++ b/MoltenVK/MoltenVK/Commands/MVKMTLBufferAllocation.mm @@ -1,7 +1,7 @@ /* * MVKMTLBufferAllocation.mm * - * Copyright (c) 2015-2022 The Brenwill Workshop Ltd. (http://www.brenwill.com) + * Copyright (c) 2015-2023 The Brenwill Workshop Ltd. (http://www.brenwill.com) * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. diff --git a/MoltenVK/MoltenVK/Commands/MVKMTLResourceBindings.h b/MoltenVK/MoltenVK/Commands/MVKMTLResourceBindings.h index f25023096..de72f06dd 100644 --- a/MoltenVK/MoltenVK/Commands/MVKMTLResourceBindings.h +++ b/MoltenVK/MoltenVK/Commands/MVKMTLResourceBindings.h @@ -1,7 +1,7 @@ /* * MVKMTLResourceBindings.h * - * Copyright (c) 2015-2022 The Brenwill Workshop Ltd. (http://www.brenwill.com) + * Copyright (c) 2015-2023 The Brenwill Workshop Ltd. (http://www.brenwill.com) * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. @@ -71,20 +71,23 @@ typedef struct MVKMTLBufferBinding { bool justOffset = false; bool isDirty = true; bool isInline = false; + bool isOverridden = false; - inline void markDirty() { justOffset = false; isDirty = true; } + void markDirty() { justOffset = false; isOverridden = false; isDirty = true; } - inline void update(const MVKMTLBufferBinding &other) { + void update(const MVKMTLBufferBinding &other) { if (mtlBuffer != other.mtlBuffer || size != other.size || other.isInline) { mtlBuffer = other.mtlBuffer; size = other.size; isInline = other.isInline; offset = other.offset; justOffset = false; - isDirty = true; + isOverridden = false; + isDirty = true; } else if (offset != other.offset) { offset = other.offset; - justOffset = !isDirty || justOffset; + justOffset = !isOverridden && (!isDirty || justOffset); + isOverridden = false; isDirty = true; } } diff --git a/MoltenVK/MoltenVK/GPUObjects/MVKBuffer.h b/MoltenVK/MoltenVK/GPUObjects/MVKBuffer.h index 77ff25208..2e338ce7a 100644 --- a/MoltenVK/MoltenVK/GPUObjects/MVKBuffer.h +++ b/MoltenVK/MoltenVK/GPUObjects/MVKBuffer.h @@ -1,7 +1,7 @@ /* * MVKBuffer.h * - * Copyright (c) 2015-2022 The Brenwill Workshop Ltd. (http://www.brenwill.com) + * Copyright (c) 2015-2023 The Brenwill Workshop Ltd. (http://www.brenwill.com) * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. diff --git a/MoltenVK/MoltenVK/GPUObjects/MVKBuffer.mm b/MoltenVK/MoltenVK/GPUObjects/MVKBuffer.mm index d2ab02804..181b220c5 100644 --- a/MoltenVK/MoltenVK/GPUObjects/MVKBuffer.mm +++ b/MoltenVK/MoltenVK/GPUObjects/MVKBuffer.mm @@ -1,7 +1,7 @@ /* * MVKBuffer.mm * - * Copyright (c) 2015-2022 The Brenwill Workshop Ltd. (http://www.brenwill.com) + * Copyright (c) 2015-2023 The Brenwill Workshop Ltd. (http://www.brenwill.com) * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. diff --git a/MoltenVK/MoltenVK/GPUObjects/MVKDescriptor.h b/MoltenVK/MoltenVK/GPUObjects/MVKDescriptor.h index 28d93296b..229b65dc8 100644 --- a/MoltenVK/MoltenVK/GPUObjects/MVKDescriptor.h +++ b/MoltenVK/MoltenVK/GPUObjects/MVKDescriptor.h @@ -1,7 +1,7 @@ /* * MVKDescriptor.h * - * Copyright (c) 2015-2022 The Brenwill Workshop Ltd. (http://www.brenwill.com) + * Copyright (c) 2015-2023 The Brenwill Workshop Ltd. (http://www.brenwill.com) * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. @@ -94,7 +94,7 @@ class MVKDescriptorSetLayoutBinding : public MVKBaseDeviceObject { /** Returns whether this binding has a variable descriptor count. */ inline bool hasVariableDescriptorCount() const { - return mvkIsAnyFlagEnabled(_flags, VK_DESCRIPTOR_BINDING_VARIABLE_DESCRIPTOR_COUNT_BIT_EXT); + return mvkIsAnyFlagEnabled(_flags, VK_DESCRIPTOR_BINDING_VARIABLE_DESCRIPTOR_COUNT_BIT); } /** diff --git a/MoltenVK/MoltenVK/GPUObjects/MVKDescriptor.mm b/MoltenVK/MoltenVK/GPUObjects/MVKDescriptor.mm index 061279b78..172fb0366 100644 --- a/MoltenVK/MoltenVK/GPUObjects/MVKDescriptor.mm +++ b/MoltenVK/MoltenVK/GPUObjects/MVKDescriptor.mm @@ -1,7 +1,7 @@ /* * MVKDescriptor.mm * - * Copyright (c) 2015-2022 The Brenwill Workshop Ltd. (http://www.brenwill.com) + * Copyright (c) 2015-2023 The Brenwill Workshop Ltd. (http://www.brenwill.com) * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. diff --git a/MoltenVK/MoltenVK/GPUObjects/MVKDescriptorSet.h b/MoltenVK/MoltenVK/GPUObjects/MVKDescriptorSet.h index 1f0505544..8964c9019 100644 --- a/MoltenVK/MoltenVK/GPUObjects/MVKDescriptorSet.h +++ b/MoltenVK/MoltenVK/GPUObjects/MVKDescriptorSet.h @@ -1,7 +1,7 @@ /* * MVKDescriptorSet.h * - * Copyright (c) 2015-2022 The Brenwill Workshop Ltd. (http://www.brenwill.com) + * Copyright (c) 2015-2023 The Brenwill Workshop Ltd. (http://www.brenwill.com) * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. diff --git a/MoltenVK/MoltenVK/GPUObjects/MVKDescriptorSet.mm b/MoltenVK/MoltenVK/GPUObjects/MVKDescriptorSet.mm index 156572be8..5ebeed4b9 100644 --- a/MoltenVK/MoltenVK/GPUObjects/MVKDescriptorSet.mm +++ b/MoltenVK/MoltenVK/GPUObjects/MVKDescriptorSet.mm @@ -1,7 +1,7 @@ /* * MVKDescriptorSet.mm * - * Copyright (c) 2015-2022 The Brenwill Workshop Ltd. (http://www.brenwill.com) + * Copyright (c) 2015-2023 The Brenwill Workshop Ltd. (http://www.brenwill.com) * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. @@ -249,8 +249,8 @@ const VkDescriptorBindingFlags* MVKDescriptorSetLayout::getBindingFlags(const VkDescriptorSetLayoutCreateInfo* pCreateInfo) { for (const auto* next = (VkBaseInStructure*)pCreateInfo->pNext; next; next = next->pNext) { switch (next->sType) { - case VK_STRUCTURE_TYPE_DESCRIPTOR_SET_LAYOUT_BINDING_FLAGS_CREATE_INFO_EXT: { - auto* pDescSetLayoutBindingFlags = (VkDescriptorSetLayoutBindingFlagsCreateInfoEXT*)next; + case VK_STRUCTURE_TYPE_DESCRIPTOR_SET_LAYOUT_BINDING_FLAGS_CREATE_INFO: { + auto* pDescSetLayoutBindingFlags = (VkDescriptorSetLayoutBindingFlagsCreateInfo*)next; return pDescSetLayoutBindingFlags->bindingCount ? pDescSetLayoutBindingFlags->pBindingFlags : nullptr; } default: @@ -305,7 +305,7 @@ writeDescriptorAt(pDescriptorAction->dstArrayElement); } else { uint32_t descStartIdx = _layout->getDescriptorIndex(pDescriptorAction->dstBinding, pDescriptorAction->dstArrayElement); - uint32_t elemCnt = pDescriptorAction->descriptorCount; + uint32_t elemCnt = std::min(pDescriptorAction->descriptorCount, (uint32_t)_descriptors.size() - descStartIdx); for (uint32_t elemIdx = 0; elemIdx < elemCnt; elemIdx++) { uint32_t descIdx = descStartIdx + elemIdx; writeDescriptorAt(elemIdx); @@ -321,7 +321,6 @@ MVKDescriptorSetLayoutBinding* mvkDSLBind = _layout->getBinding(pDescriptorCopy->srcBinding); VkDescriptorType descType = mvkDSLBind->getDescriptorType(); - uint32_t descCnt = pDescriptorCopy->descriptorCount; if (descType == VK_DESCRIPTOR_TYPE_INLINE_UNIFORM_BLOCK_EXT) { // For inline buffers srcArrayElement is a byte offset MVKDescriptor* mvkDesc = getDescriptor(pDescriptorCopy->srcBinding); @@ -330,6 +329,7 @@ } } else { uint32_t srcStartIdx = _layout->getDescriptorIndex(pDescriptorCopy->srcBinding, pDescriptorCopy->srcArrayElement); + uint32_t descCnt = std::min(pDescriptorCopy->descriptorCount, (uint32_t)_descriptors.size() - srcStartIdx); for (uint32_t descIdx = 0; descIdx < descCnt; descIdx++) { MVKDescriptor* mvkDesc = _descriptors[srcStartIdx + descIdx]; if (mvkDesc->getDescriptorType() == descType) { @@ -468,8 +468,8 @@ const uint32_t* MVKDescriptorPool::getVariableDecriptorCounts(const VkDescriptorSetAllocateInfo* pAllocateInfo) { for (const auto* next = (VkBaseInStructure*)pAllocateInfo->pNext; next; next = next->pNext) { switch (next->sType) { - case VK_STRUCTURE_TYPE_DESCRIPTOR_SET_VARIABLE_DESCRIPTOR_COUNT_ALLOCATE_INFO_EXT: { - auto* pVarDescSetVarCounts = (VkDescriptorSetVariableDescriptorCountAllocateInfoEXT*)next; + case VK_STRUCTURE_TYPE_DESCRIPTOR_SET_VARIABLE_DESCRIPTOR_COUNT_ALLOCATE_INFO: { + auto* pVarDescSetVarCounts = (VkDescriptorSetVariableDescriptorCountAllocateInfo*)next; return pVarDescSetVarCounts->descriptorSetCount ? pVarDescSetVarCounts->pDescriptorCounts : nullptr; } default: @@ -809,7 +809,7 @@ if (metalArgBuffSize) { NSUInteger maxMTLBuffSize = _device->_pMetalFeatures->maxMTLBufferSize; if (metalArgBuffSize > maxMTLBuffSize) { - setConfigurationResult(reportError(VK_ERROR_FRAGMENTATION_EXT, "vkCreateDescriptorPool(): The requested descriptor storage of %d MB is larger than the maximum descriptor storage of %d MB per VkDescriptorPool.", (uint32_t)(metalArgBuffSize / MEBI), (uint32_t)(maxMTLBuffSize / MEBI))); + setConfigurationResult(reportError(VK_ERROR_FRAGMENTATION, "vkCreateDescriptorPool(): The requested descriptor storage of %d MB is larger than the maximum descriptor storage of %d MB per VkDescriptorPool.", (uint32_t)(metalArgBuffSize / MEBI), (uint32_t)(maxMTLBuffSize / MEBI))); metalArgBuffSize = maxMTLBuffSize; } _metalArgumentBuffer = [getMTLDevice() newBufferWithLength: metalArgBuffSize options: MTLResourceStorageModeShared]; // retained diff --git a/MoltenVK/MoltenVK/GPUObjects/MVKDevice.h b/MoltenVK/MoltenVK/GPUObjects/MVKDevice.h index d378fd997..22f8649eb 100644 --- a/MoltenVK/MoltenVK/GPUObjects/MVKDevice.h +++ b/MoltenVK/MoltenVK/GPUObjects/MVKDevice.h @@ -1,7 +1,7 @@ /* * MVKDevice.h * - * Copyright (c) 2015-2022 The Brenwill Workshop Ltd. (http://www.brenwill.com) + * Copyright (c) 2015-2023 The Brenwill Workshop Ltd. (http://www.brenwill.com) * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. @@ -181,8 +181,12 @@ class MVKPhysicalDevice : public MVKDispatchableVulkanAPIObject { */ VkResult getSurfaceSupport(uint32_t queueFamilyIndex, MVKSurface* surface, VkBool32* pSupported); - /** Returns the capabilities of the specified surface. */ - VkResult getSurfaceCapabilities(MVKSurface* surface, VkSurfaceCapabilitiesKHR* pSurfaceCapabilities); + /** Returns the capabilities of the surface. */ + VkResult getSurfaceCapabilities(VkSurfaceKHR surface, VkSurfaceCapabilitiesKHR* pSurfaceCapabilities); + + /** Returns the capabilities of the surface. */ + VkResult getSurfaceCapabilities(const VkPhysicalDeviceSurfaceInfo2KHR* pSurfaceInfo, + VkSurfaceCapabilities2KHR* pSurfaceCapabilities); /** * Returns the pixel formats supported by the surface. @@ -440,6 +444,7 @@ class MVKPhysicalDevice : public MVKDispatchableVulkanAPIObject { uint32_t _hostCoherentMemoryTypes; uint32_t _privateMemoryTypes; uint32_t _lazilyAllocatedMemoryTypes; + VkExternalMemoryProperties _hostPointerExternalMemoryProperties; VkExternalMemoryProperties _mtlBufferExternalMemoryProperties; VkExternalMemoryProperties _mtlTextureExternalMemoryProperties; }; @@ -510,6 +515,11 @@ class MVKDevice : public MVKDispatchableVulkanAPIObject { /** Populates the device group peer memory features. */ void getPeerMemoryFeatures(uint32_t heapIndex, uint32_t localDevice, uint32_t remoteDevice, VkPeerMemoryFeatureFlags* pPeerMemoryFeatures); + /** Returns the properties of the host memory pointer. */ + VkResult getMemoryHostPointerProperties(VkExternalMemoryHandleTypeFlagBits handleType, + const void* pHostPointer, + VkMemoryHostPointerPropertiesEXT* pMemHostPtrProps); + #pragma mark Object lifecycle @@ -682,7 +692,9 @@ class MVKDevice : public MVKDispatchableVulkanAPIObject { // Log call not locked. Very minor chance that the tracker data will be updated during log call, // resulting in an inconsistent report. Not worth taking lock perf hit for rare inline reporting. - if (_logActivityPerformanceInline) { logActivityPerformance(activityTracker, _performanceStatistics, true); } + if (_activityPerformanceLoggingStyle == MVK_CONFIG_ACTIVITY_PERFORMANCE_LOGGING_STYLE_IMMEDIATE) { + logActivityPerformance(activityTracker, _performanceStatistics, true); + } } }; @@ -715,12 +727,12 @@ class MVKDevice : public MVKDispatchableVulkanAPIObject { /** * Returns an autoreleased options object to be used when compiling MSL shaders. - * The useFastMath parameter is and-combined with MVKConfiguration::fastMathEnabled + * The requestFastMath parameter is combined with the value of MVKConfiguration::fastMathEnabled * to determine whether to enable fast math optimizations in the compiled shader. * The preserveInvariance parameter indicates that the shader requires the position * output invariance across invocations (typically for the position output). */ - MTLCompileOptions* getMTLCompileOptions(bool useFastMath = true, bool preserveInvariance = false); + MTLCompileOptions* getMTLCompileOptions(bool requestFastMath = true, bool preserveInvariance = false); /** Returns the Metal vertex buffer index to use for the specified vertex attribute binding number. */ uint32_t getMetalBufferIndexForVertexAttributeBinding(uint32_t binding); @@ -869,7 +881,7 @@ class MVKDevice : public MVKDispatchableVulkanAPIObject { void updateActivityPerformance(MVKPerformanceTracker& activity, uint64_t startTime, uint64_t endTime); void getDescriptorVariableDescriptorCountLayoutSupport(const VkDescriptorSetLayoutCreateInfo* pCreateInfo, VkDescriptorSetLayoutSupport* pSupport, - VkDescriptorSetVariableDescriptorCountLayoutSupportEXT* pVarDescSetCountSupport); + VkDescriptorSetVariableDescriptorCountLayoutSupport* pVarDescSetCountSupport); MVKPhysicalDevice* _physicalDevice = nullptr; MVKCommandResourceFactory* _commandResourceFactory = nullptr; @@ -887,7 +899,7 @@ class MVKDevice : public MVKDispatchableVulkanAPIObject { id _defaultMTLSamplerState = nil; id _dummyBlitMTLBuffer = nil; uint32_t _globalVisibilityQueryCount = 0; - bool _logActivityPerformanceInline = false; + MVKConfigActivityPerformanceLoggingStyle _activityPerformanceLoggingStyle = MVK_CONFIG_ACTIVITY_PERFORMANCE_LOGGING_STYLE_FRAME_COUNT; bool _isPerformanceTracking = false; bool _isCurrentlyAutoGPUCapturing = false; bool _isUsingMetalArgumentBuffers = false; diff --git a/MoltenVK/MoltenVK/GPUObjects/MVKDevice.mm b/MoltenVK/MoltenVK/GPUObjects/MVKDevice.mm index f43f9426e..3494740e7 100644 --- a/MoltenVK/MoltenVK/GPUObjects/MVKDevice.mm +++ b/MoltenVK/MoltenVK/GPUObjects/MVKDevice.mm @@ -1,7 +1,7 @@ /* * MVKDevice.mm * - * Copyright (c) 2015-2022 The Brenwill Workshop Ltd. (http://www.brenwill.com) + * Copyright (c) 2015-2023 The Brenwill Workshop Ltd. (http://www.brenwill.com) * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. @@ -378,6 +378,11 @@ interlockFeatures->fragmentShaderShadingRateInterlock = false; // Requires variable rate shading; not supported yet in Metal break; } + case VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_PIPELINE_CREATION_CACHE_CONTROL_FEATURES_EXT: { + auto* pipelineCreationCacheControlFeatures = (VkPhysicalDevicePipelineCreationCacheControlFeaturesEXT*)next; + pipelineCreationCacheControlFeatures->pipelineCreationCacheControl = true; + break; + } case VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_ROBUSTNESS_2_FEATURES_EXT: { auto* robustness2Features = (VkPhysicalDeviceRobustness2FeaturesEXT*)next; robustness2Features->robustBufferAccess2 = false; @@ -385,6 +390,28 @@ robustness2Features->nullDescriptor = false; break; } + case VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADER_ATOMIC_FLOAT_FEATURES_EXT: { + auto* atomicFloatFeatures = (VkPhysicalDeviceShaderAtomicFloatFeaturesEXT*)next; + bool atomicFloatEnabled = _metalFeatures.mslVersion >= 030000; + atomicFloatFeatures->shaderBufferFloat32Atomics = atomicFloatEnabled; + atomicFloatFeatures->shaderBufferFloat32AtomicAdd = atomicFloatEnabled; + atomicFloatFeatures->shaderBufferFloat64Atomics = false; + atomicFloatFeatures->shaderBufferFloat64AtomicAdd = false; + atomicFloatFeatures->shaderSharedFloat32Atomics = atomicFloatEnabled; + atomicFloatFeatures->shaderSharedFloat32AtomicAdd = atomicFloatEnabled; + atomicFloatFeatures->shaderSharedFloat64Atomics = false; + atomicFloatFeatures->shaderSharedFloat64AtomicAdd = false; + atomicFloatFeatures->shaderImageFloat32Atomics = false; + atomicFloatFeatures->shaderImageFloat32AtomicAdd = false; + atomicFloatFeatures->sparseImageFloat32Atomics = false; + atomicFloatFeatures->sparseImageFloat32AtomicAdd = false; + break; + } + case VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SWAPCHAIN_MAINTENANCE_1_FEATURES_EXT: { + auto* swapchainMaintenance1Features = (VkPhysicalDeviceSwapchainMaintenance1FeaturesEXT*)next; + swapchainMaintenance1Features->swapchainMaintenance1 = true; + break; + } case VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_TEXEL_BUFFER_ALIGNMENT_FEATURES_EXT: { auto* texelBuffAlignFeatures = (VkPhysicalDeviceTexelBufferAlignmentFeaturesEXT*)next; texelBuffAlignFeatures->texelBufferAlignment = _metalFeatures.texelBuffers && [_mtlDevice respondsToSelector: @selector(minimumLinearTextureAlignmentForPixelFormat:)]; @@ -667,9 +694,16 @@ portabilityProps->minVertexInputBindingStrideAlignment = (uint32_t)_metalFeatures.vertexStrideAlignment; break; } - case VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_VERTEX_ATTRIBUTE_DIVISOR_PROPERTIES_EXT: { - auto* divisorProps = (VkPhysicalDeviceVertexAttributeDivisorPropertiesEXT*)next; - divisorProps->maxVertexAttribDivisor = kMVKUndefinedLargeUInt32; + case VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_EXTERNAL_MEMORY_HOST_PROPERTIES_EXT: { + auto* extMemHostProps = (VkPhysicalDeviceExternalMemoryHostPropertiesEXT*)next; + extMemHostProps->minImportedHostPointerAlignment = _metalFeatures.hostMemoryPageSize; + break; + } + case VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_ROBUSTNESS_2_PROPERTIES_EXT: { + // This isn't implemented yet, but when it is, it is expected that we'll wind up doing it manually. + auto* robustness2Props = (VkPhysicalDeviceRobustness2PropertiesEXT*)next; + robustness2Props->robustStorageBufferAccessSizeAlignment = 1; + robustness2Props->robustUniformBufferAccessSizeAlignment = 1; break; } case VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SAMPLE_LOCATIONS_PROPERTIES_EXT: { @@ -682,11 +716,9 @@ sampLocnProps->variableSampleLocations = VK_FALSE; break; } - case VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_ROBUSTNESS_2_PROPERTIES_EXT: { - // This isn't implemented yet, but when it is, it is expected that we'll wind up doing it manually. - auto* robustness2Props = (VkPhysicalDeviceRobustness2PropertiesEXT*)next; - robustness2Props->robustStorageBufferAccessSizeAlignment = 1; - robustness2Props->robustUniformBufferAccessSizeAlignment = 1; + case VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_VERTEX_ATTRIBUTE_DIVISOR_PROPERTIES_EXT: { + auto* divisorProps = (VkPhysicalDeviceVertexAttributeDivisorPropertiesEXT*)next; + divisorProps->maxVertexAttribDivisor = kMVKUndefinedLargeUInt32; break; } default: @@ -1028,15 +1060,25 @@ VkExternalMemoryProperties& MVKPhysicalDevice::getExternalBufferProperties(VkExternalMemoryHandleTypeFlagBits handleType) { switch (handleType) { - case VK_EXTERNAL_MEMORY_HANDLE_TYPE_MTLBUFFER_BIT_KHR: return _mtlBufferExternalMemoryProperties; - default: return _emptyExtMemProps; + case VK_EXTERNAL_MEMORY_HANDLE_TYPE_HOST_ALLOCATION_BIT_EXT: + case VK_EXTERNAL_MEMORY_HANDLE_TYPE_HOST_MAPPED_FOREIGN_MEMORY_BIT_EXT: + return _hostPointerExternalMemoryProperties; + case VK_EXTERNAL_MEMORY_HANDLE_TYPE_MTLBUFFER_BIT_KHR: + return _mtlBufferExternalMemoryProperties; + default: + return _emptyExtMemProps; } } VkExternalMemoryProperties& MVKPhysicalDevice::getExternalImageProperties(VkExternalMemoryHandleTypeFlagBits handleType) { switch (handleType) { - case VK_EXTERNAL_MEMORY_HANDLE_TYPE_MTLTEXTURE_BIT_KHR: return _mtlTextureExternalMemoryProperties; - default: return _emptyExtMemProps; + case VK_EXTERNAL_MEMORY_HANDLE_TYPE_HOST_ALLOCATION_BIT_EXT: + case VK_EXTERNAL_MEMORY_HANDLE_TYPE_HOST_MAPPED_FOREIGN_MEMORY_BIT_EXT: + return _hostPointerExternalMemoryProperties; + case VK_EXTERNAL_MEMORY_HANDLE_TYPE_MTLTEXTURE_BIT_KHR: + return _mtlTextureExternalMemoryProperties; + default: + return _emptyExtMemProps; } } @@ -1075,32 +1117,139 @@ return *pSupported ? VK_SUCCESS : surface->getConfigurationResult(); } -VkResult MVKPhysicalDevice::getSurfaceCapabilities(MVKSurface* surface, +VkResult MVKPhysicalDevice::getSurfaceCapabilities(VkSurfaceKHR surface, VkSurfaceCapabilitiesKHR* pSurfaceCapabilities) { + VkPhysicalDeviceSurfaceInfo2KHR surfaceInfo; + surfaceInfo.sType = VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SURFACE_INFO_2_KHR; + surfaceInfo.pNext = nullptr; + surfaceInfo.surface = surface; - // The layer underlying the surface view must be a CAMetalLayer. + VkSurfaceCapabilities2KHR surfaceCaps; + surfaceCaps.sType = VK_STRUCTURE_TYPE_SURFACE_CAPABILITIES_2_KHR; + surfaceCaps.pNext = nullptr; + surfaceCaps.surfaceCapabilities = *pSurfaceCapabilities; + + VkResult rslt = getSurfaceCapabilities(&surfaceInfo, &surfaceCaps); + + *pSurfaceCapabilities = surfaceCaps.surfaceCapabilities; + + return rslt; +} + +VkResult MVKPhysicalDevice::getSurfaceCapabilities( const VkPhysicalDeviceSurfaceInfo2KHR* pSurfaceInfo, + VkSurfaceCapabilities2KHR* pSurfaceCapabilities) { + + // Retrieve the present mode if it is supplied in this query. + VkPresentModeKHR presentMode = VK_PRESENT_MODE_MAX_ENUM_KHR; + for (auto* next = (const VkBaseInStructure*)pSurfaceInfo->pNext; next; next = next->pNext) { + switch (next->sType) { + case VK_STRUCTURE_TYPE_SURFACE_PRESENT_MODE_EXT: { + presentMode = ((VkSurfacePresentModeEXT*)next)->presentMode; + break; + } + default: + break; + } + } + + // Retrieve the scaling and present mode compatibility structs if they are supplied in this query. + VkSurfacePresentScalingCapabilitiesEXT* pScalingCaps = nullptr; + VkSurfacePresentModeCompatibilityEXT* pCompatibility = nullptr; + for (auto* next = (VkBaseOutStructure*)pSurfaceCapabilities->pNext; next; next = next->pNext) { + switch (next->sType) { + case VK_STRUCTURE_TYPE_SURFACE_PRESENT_SCALING_CAPABILITIES_EXT: { + pScalingCaps = (VkSurfacePresentScalingCapabilitiesEXT*)next; + break; + } + case VK_STRUCTURE_TYPE_SURFACE_PRESENT_MODE_COMPATIBILITY_EXT: { + pCompatibility = (VkSurfacePresentModeCompatibilityEXT*)next; + break; + } + default: + break; + } + } + + // The CAlayer underlying the surface must be a CAMetalLayer. + MVKSurface* surface = (MVKSurface*)pSurfaceInfo->surface; CAMetalLayer* mtlLayer = surface->getCAMetalLayer(); if ( !mtlLayer ) { return surface->getConfigurationResult(); } - VkExtent2D surfExtnt = mvkVkExtent2DFromCGSize(mtlLayer.naturalDrawableSizeMVK); - - pSurfaceCapabilities->minImageCount = _metalFeatures.minSwapchainImageCount; - pSurfaceCapabilities->maxImageCount = _metalFeatures.maxSwapchainImageCount; - - pSurfaceCapabilities->currentExtent = surfExtnt; - pSurfaceCapabilities->minImageExtent = { 1, 1 }; - pSurfaceCapabilities->maxImageExtent = { _properties.limits.maxImageDimension2D, _properties.limits.maxImageDimension2D }; - pSurfaceCapabilities->maxImageArrayLayers = 1; - 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_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 | - VK_IMAGE_USAGE_TRANSFER_DST_BIT | - VK_IMAGE_USAGE_SAMPLED_BIT); + VkSurfaceCapabilitiesKHR& surfCaps = pSurfaceCapabilities->surfaceCapabilities; + surfCaps.minImageCount = _metalFeatures.minSwapchainImageCount; + surfCaps.maxImageCount = _metalFeatures.maxSwapchainImageCount; + surfCaps.currentExtent = mvkGetNaturalExtent(mtlLayer); + surfCaps.minImageExtent = { 1, 1 }; + surfCaps.maxImageExtent = { _properties.limits.maxImageDimension2D, _properties.limits.maxImageDimension2D }; + surfCaps.maxImageArrayLayers = 1; + surfCaps.supportedTransforms = (VK_SURFACE_TRANSFORM_IDENTITY_BIT_KHR); + surfCaps.currentTransform = VK_SURFACE_TRANSFORM_IDENTITY_BIT_KHR; + surfCaps.supportedCompositeAlpha = (VK_COMPOSITE_ALPHA_OPAQUE_BIT_KHR | + VK_COMPOSITE_ALPHA_POST_MULTIPLIED_BIT_KHR | + VK_COMPOSITE_ALPHA_INHERIT_BIT_KHR); + surfCaps.supportedUsageFlags = (VK_IMAGE_USAGE_COLOR_ATTACHMENT_BIT | + VK_IMAGE_USAGE_STORAGE_BIT | + VK_IMAGE_USAGE_TRANSFER_SRC_BIT | + VK_IMAGE_USAGE_TRANSFER_DST_BIT | + VK_IMAGE_USAGE_SAMPLED_BIT); + + // Swapchain-to-surface scaling capabilities. + if (pScalingCaps) { + pScalingCaps->supportedPresentScaling = (VK_PRESENT_SCALING_ONE_TO_ONE_BIT_EXT | + VK_PRESENT_SCALING_ASPECT_RATIO_STRETCH_BIT_EXT | + VK_PRESENT_SCALING_STRETCH_BIT_EXT); + pScalingCaps->supportedPresentGravityX = (VK_PRESENT_GRAVITY_MIN_BIT_EXT | + VK_PRESENT_GRAVITY_MAX_BIT_EXT | + VK_PRESENT_GRAVITY_CENTERED_BIT_EXT); + pScalingCaps->supportedPresentGravityY = (VK_PRESENT_GRAVITY_MIN_BIT_EXT | + VK_PRESENT_GRAVITY_MAX_BIT_EXT | + VK_PRESENT_GRAVITY_CENTERED_BIT_EXT); + pScalingCaps->minScaledImageExtent = surfCaps.minImageExtent; + pScalingCaps->maxScaledImageExtent = surfCaps.maxImageExtent; + } + + + // Per spec, always include the queried present mode in returned compatibility results. + MVKSmallVector compatiblePresentModes; + if (presentMode != VK_PRESENT_MODE_MAX_ENUM_KHR) { compatiblePresentModes.push_back(presentMode); } + + // Customize results based on the provided present mode. + switch (presentMode) { + case VK_PRESENT_MODE_FIFO_KHR: + // This could be dodgy, because Metal may not match the Vulkan spec's tight + // requirements for transitioning from FIFO to IMMEDIATE, because the change to + // IMMEDIATE may occur while some FIFO items are still on the GPU queue. + if (_metalFeatures.presentModeImmediate) { + compatiblePresentModes.push_back(VK_PRESENT_MODE_IMMEDIATE_KHR); + } + break; + case VK_PRESENT_MODE_IMMEDIATE_KHR: + compatiblePresentModes.push_back(VK_PRESENT_MODE_FIFO_KHR); + surfCaps.minImageCount = surfCaps.maxImageCount; // Recommend always using max count to avoid visual tearing. + break; + case VK_PRESENT_MODE_SHARED_DEMAND_REFRESH_KHR: + case VK_PRESENT_MODE_SHARED_CONTINUOUS_REFRESH_KHR: + // Although these are not advertised as supported, per spec, counts must be 1. + surfCaps.minImageCount = 1; + surfCaps.maxImageCount = 1; + break; + + default: + break; + } + + // If compatible present modes are requested, return them, otherwise return the count of them. + if (pCompatibility) { + if (pCompatibility->pPresentModes) { + pCompatibility->presentModeCount = min(pCompatibility->presentModeCount, (uint32_t)compatiblePresentModes.size()); + for (uint32_t pmIdx = 0; pmIdx < pCompatibility->presentModeCount; pmIdx++) { + pCompatibility->pPresentModes[pmIdx] = compatiblePresentModes[pmIdx]; + } + } else { + pCompatibility->presentModeCount = (uint32_t)compatiblePresentModes.size(); + } + } + return VK_SUCCESS; } @@ -1277,7 +1426,7 @@ *pRectCount = 1; pRects[0].offset = { 0, 0 }; - pRects[0].extent = mvkVkExtent2DFromCGSize(mtlLayer.naturalDrawableSizeMVK); + pRects[0].extent = mvkGetNaturalExtent(mtlLayer); return VK_SUCCESS; } @@ -1465,6 +1614,8 @@ // Start with all Metal features cleared mvkClear(&_metalFeatures); + _metalFeatures.hostMemoryPageSize = mvkGetHostMemoryPageSize(); + _metalFeatures.maxPerStageBufferCount = 31; _metalFeatures.maxMTLBufferSize = (256 * MEBI); _metalFeatures.dynamicMTLBufferSize = 0; @@ -1493,6 +1644,9 @@ _metalFeatures.clearColorFloatRounding = MVK_FLOAT_ROUNDING_DOWN; break; case kAppleVendorId: + // TODO: Other GPUs? + _metalFeatures.needsSampleDrefLodArrayWorkaround = true; + // fallthrough case kIntelVendorId: case kNVVendorId: default: @@ -1822,9 +1976,17 @@ #endif #if (MVK_MACOS && !MVK_MACCAT) || (MVK_MACCAT && MVK_XCODE_14) || (MVK_IOS && MVK_XCODE_12) + // Both current and deprecated properties are retrieved and OR'd together, due to a + // Metal bug that, in some environments, returned true for one and false for the other. + bool bcProp1 = false; + bool bcProp2 = false; if ( [_mtlDevice respondsToSelector: @selector(supportsShaderBarycentricCoordinates)] ) { - _metalFeatures.shaderBarycentricCoordinates = _mtlDevice.supportsShaderBarycentricCoordinates; + bcProp1 = _mtlDevice.supportsShaderBarycentricCoordinates; + } + if ( [_mtlDevice respondsToSelector: @selector(areBarycentricCoordsSupported)] ) { + bcProp2 = _mtlDevice.areBarycentricCoordsSupported; } + _metalFeatures.shaderBarycentricCoordinates = bcProp1 || bcProp2; #endif if ( [_mtlDevice respondsToSelector: @selector(maxBufferLength)] ) { @@ -2103,67 +2265,6 @@ } - -#pragma mark VkPhysicalDeviceFeatures - List of features available on the device - -//typedef struct VkPhysicalDeviceFeatures { -// VkBool32 robustBufferAccess; // done -// VkBool32 fullDrawIndexUint32; // done -// VkBool32 imageCubeArray; // done -// VkBool32 independentBlend; // done -// VkBool32 geometryShader; -// VkBool32 tessellationShader; // done -// VkBool32 sampleRateShading; // done -// VkBool32 dualSrcBlend; // done -// VkBool32 logicOp; -// VkBool32 multiDrawIndirect; // done -// VkBool32 drawIndirectFirstInstance; // done -// VkBool32 depthClamp; // done -// VkBool32 depthBiasClamp; // done -// VkBool32 fillModeNonSolid; // done -// VkBool32 depthBounds; -// VkBool32 wideLines; -// VkBool32 largePoints; // done -// VkBool32 alphaToOne; // done -// VkBool32 multiViewport; // done -// VkBool32 samplerAnisotropy; // done -// VkBool32 textureCompressionETC2; // done -// VkBool32 textureCompressionASTC_LDR; // done -// VkBool32 textureCompressionBC; // done -// VkBool32 occlusionQueryPrecise; // done -// VkBool32 pipelineStatisticsQuery; -// VkBool32 vertexPipelineStoresAndAtomics; // done -// VkBool32 fragmentStoresAndAtomics; // done -// VkBool32 shaderTessellationAndGeometryPointSize; // done -// VkBool32 shaderImageGatherExtended; // done -// VkBool32 shaderStorageImageExtendedFormats; // done -// VkBool32 shaderStorageImageMultisample; -// VkBool32 shaderStorageImageReadWithoutFormat; // done -// VkBool32 shaderStorageImageWriteWithoutFormat; // done -// VkBool32 shaderUniformBufferArrayDynamicIndexing; // done -// VkBool32 shaderSampledImageArrayDynamicIndexing; // done -// VkBool32 shaderStorageBufferArrayDynamicIndexing; // done -// VkBool32 shaderStorageImageArrayDynamicIndexing; // done -// VkBool32 shaderClipDistance; // done -// VkBool32 shaderCullDistance; -// VkBool32 shaderFloat64; -// VkBool32 shaderInt64; // done -// VkBool32 shaderInt16; // done -// VkBool32 shaderResourceResidency; -// VkBool32 shaderResourceMinLod; // done -// VkBool32 sparseBinding; -// VkBool32 sparseResidencyBuffer; -// VkBool32 sparseResidencyImage2D; -// VkBool32 sparseResidencyImage3D; -// VkBool32 sparseResidency2Samples; -// VkBool32 sparseResidency4Samples; -// VkBool32 sparseResidency8Samples; -// VkBool32 sparseResidency16Samples; -// VkBool32 sparseResidencyAliased; -// VkBool32 variableMultisampleRate; -// VkBool32 inheritedQueries; // done -//} VkPhysicalDeviceFeatures; - // Initializes the physical device property limits. void MVKPhysicalDevice::initLimits() { @@ -2239,6 +2340,11 @@ _properties.limits.maxDescriptorSetStorageImages = (_properties.limits.maxPerStageDescriptorStorageImages * 5); _properties.limits.maxDescriptorSetInputAttachments = (_properties.limits.maxPerStageDescriptorInputAttachments * 5); + _properties.limits.maxClipDistances = 8; // Per Apple engineers. + _properties.limits.maxCullDistances = 0; // unsupported + _properties.limits.maxCombinedClipAndCullDistances = max(_properties.limits.maxClipDistances, + _properties.limits.maxCullDistances); // If supported, these consume the same slots. + // Whether handled as a real texture buffer or a 2D texture, this value is likely nowhere near the size of a buffer, // needs to fit in 32 bits, and some apps (I'm looking at you, CTS), assume it is low when doing 32-bit math. _properties.limits.maxTexelBufferElements = _properties.limits.maxImageDimension2D * (4 * KIBI); @@ -2305,13 +2411,13 @@ } } if (mvkAreAllFlagsEnabled(props.bufferFeatures, VK_FORMAT_FEATURE_UNIFORM_TEXEL_BUFFER_BIT)) { - maxStorage = max(maxStorage, uint32_t(alignment)); - if (alignment > texelSize) { singleTexelStorage = false; } - } - if (mvkAreAllFlagsEnabled(props.bufferFeatures, VK_FORMAT_FEATURE_STORAGE_TEXEL_BUFFER_BIT)) { maxUniform = max(maxUniform, uint32_t(alignment)); if (alignment > texelSize) { singleTexelUniform = false; } } + if (mvkAreAllFlagsEnabled(props.bufferFeatures, VK_FORMAT_FEATURE_STORAGE_TEXEL_BUFFER_BIT)) { + maxStorage = max(maxStorage, uint32_t(alignment)); + if (alignment > texelSize) { singleTexelStorage = false; } + } return true; }); _texelBuffAlignProperties.sType = VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_TEXEL_BUFFER_ALIGNMENT_PROPERTIES_EXT; @@ -2486,7 +2592,8 @@ _properties.limits.minTexelGatherOffset = _properties.limits.minTexelOffset; _properties.limits.maxTexelGatherOffset = _properties.limits.maxTexelOffset; - // Features with no specific limits - default to unlimited int values + + // Features with no specific limits - default to effectively unlimited int values _properties.limits.maxMemoryAllocationCount = kMVKUndefinedLargeUInt32; _properties.limits.maxSamplerAllocationCount = getMaxSamplerCount(); @@ -2496,17 +2603,12 @@ _properties.limits.maxComputeWorkGroupCount[1] = kMVKUndefinedLargeUInt32; _properties.limits.maxComputeWorkGroupCount[2] = kMVKUndefinedLargeUInt32; - _properties.limits.maxDrawIndexedIndexValue = numeric_limits::max(); // Must be (2^32 - 1) to support fullDrawIndexUint32 + _properties.limits.maxDrawIndexedIndexValue = numeric_limits::max() - 1; // Support both fullDrawIndexUint32 and automatic primitive restart. _properties.limits.maxDrawIndirectCount = kMVKUndefinedLargeUInt32; - _properties.limits.maxClipDistances = kMVKUndefinedLargeUInt32; - _properties.limits.maxCullDistances = 0; // unsupported - _properties.limits.maxCombinedClipAndCullDistances = _properties.limits.maxClipDistances + - _properties.limits.maxCullDistances; - // Features with unknown limits - default to Vulkan required limits - + _properties.limits.subPixelPrecisionBits = 4; _properties.limits.subTexelPrecisionBits = 4; _properties.limits.mipmapPrecisionBits = 4; @@ -2622,127 +2724,6 @@ static uint32_t mvkGetEntryProperty(io_registry_entry_t entry, CFStringRef prope } #endif //MVK_IOS_OR_TVOS -#pragma mark VkPhysicalDeviceLimits - List of feature limits available on the device - -//typedef struct VkPhysicalDeviceLimits { -// uint32_t maxImageDimension1D; // done -// uint32_t maxImageDimension2D; // done -// uint32_t maxImageDimension3D; // done -// uint32_t maxImageDimensionCube; // done -// uint32_t maxImageArrayLayers; // done -// uint32_t maxTexelBufferElements; // done -// uint32_t maxUniformBufferRange; // done -// uint32_t maxStorageBufferRange; // done -// uint32_t maxPushConstantsSize; // done -// uint32_t maxMemoryAllocationCount; // done -// uint32_t maxSamplerAllocationCount; // done -// VkDeviceSize bufferImageGranularity; // done -// VkDeviceSize sparseAddressSpaceSize; // done -// uint32_t maxBoundDescriptorSets; // done -// uint32_t maxPerStageDescriptorSamplers; // done -// uint32_t maxPerStageDescriptorUniformBuffers; // done -// uint32_t maxPerStageDescriptorStorageBuffers; // done -// uint32_t maxPerStageDescriptorSampledImages; // done -// uint32_t maxPerStageDescriptorStorageImages; // done -// uint32_t maxPerStageDescriptorInputAttachments; // done -// uint32_t maxPerStageResources; // done -// uint32_t maxDescriptorSetSamplers; // done -// uint32_t maxDescriptorSetUniformBuffers; // done -// uint32_t maxDescriptorSetUniformBuffersDynamic; // done -// uint32_t maxDescriptorSetStorageBuffers; // done -// uint32_t maxDescriptorSetStorageBuffersDynamic; // done -// uint32_t maxDescriptorSetSampledImages; // done -// uint32_t maxDescriptorSetStorageImages; // done -// uint32_t maxDescriptorSetInputAttachments; // done -// uint32_t maxVertexInputAttributes; // done -// uint32_t maxVertexInputBindings; // done -// uint32_t maxVertexInputAttributeOffset; // done -// uint32_t maxVertexInputBindingStride; // done -// uint32_t maxVertexOutputComponents; // done -// uint32_t maxTessellationGenerationLevel; // done -// uint32_t maxTessellationPatchSize; // done -// uint32_t maxTessellationControlPerVertexInputComponents; // done -// uint32_t maxTessellationControlPerVertexOutputComponents; // done -// uint32_t maxTessellationControlPerPatchOutputComponents; // done -// uint32_t maxTessellationControlTotalOutputComponents; // done -// uint32_t maxTessellationEvaluationInputComponents; // done -// uint32_t maxTessellationEvaluationOutputComponents; // done -// uint32_t maxGeometryShaderInvocations; // done -// uint32_t maxGeometryInputComponents; // done -// uint32_t maxGeometryOutputComponents; // done -// uint32_t maxGeometryOutputVertices; // done -// uint32_t maxGeometryTotalOutputComponents; // done -// uint32_t maxFragmentInputComponents; // done -// uint32_t maxFragmentOutputAttachments; // done -// uint32_t maxFragmentDualSrcAttachments; // done -// uint32_t maxFragmentCombinedOutputResources; // done -// uint32_t maxComputeSharedMemorySize; // done -// uint32_t maxComputeWorkGroupCount[3]; // done -// uint32_t maxComputeWorkGroupInvocations; // done -// uint32_t maxComputeWorkGroupSize[3]; // done -// uint32_t subPixelPrecisionBits; // done -// uint32_t subTexelPrecisionBits; // done -// uint32_t mipmapPrecisionBits; // done -// uint32_t maxDrawIndexedIndexValue; // done -// uint32_t maxDrawIndirectCount; // done -// float maxSamplerLodBias; // done -// float maxSamplerAnisotropy; // done -// uint32_t maxViewports; // done -// uint32_t maxViewportDimensions[2]; // done -// float viewportBoundsRange[2]; // done -// uint32_t viewportSubPixelBits; // done -// size_t minMemoryMapAlignment; // done -// VkDeviceSize minTexelBufferOffsetAlignment; // done -// VkDeviceSize minUniformBufferOffsetAlignment; // done -// VkDeviceSize minStorageBufferOffsetAlignment; // done -// int32_t minTexelOffset; // done -// uint32_t maxTexelOffset; // done -// int32_t minTexelGatherOffset; // done -// uint32_t maxTexelGatherOffset; // done -// float minInterpolationOffset; // done -// float maxInterpolationOffset; // done -// uint32_t subPixelInterpolationOffsetBits; // done -// uint32_t maxFramebufferWidth; // done -// uint32_t maxFramebufferHeight; // done -// uint32_t maxFramebufferLayers; // done -// VkSampleCountFlags framebufferColorSampleCounts; // done -// VkSampleCountFlags framebufferDepthSampleCounts; // done -// VkSampleCountFlags framebufferStencilSampleCounts; // done -// VkSampleCountFlags framebufferNoAttachmentsSampleCounts; // done -// uint32_t maxColorAttachments; // done -// VkSampleCountFlags sampledImageColorSampleCounts; // done -// VkSampleCountFlags sampledImageIntegerSampleCounts; // done -// VkSampleCountFlags sampledImageDepthSampleCounts; // done -// VkSampleCountFlags sampledImageStencilSampleCounts; // done -// VkSampleCountFlags storageImageSampleCounts; // done -// uint32_t maxSampleMaskWords; // done -// VkBool32 timestampComputeAndGraphics; // done -// float timestampPeriod; // done -// uint32_t maxClipDistances; // done -// uint32_t maxCullDistances; // done -// uint32_t maxCombinedClipAndCullDistances; // done -// uint32_t discreteQueuePriorities; // done -// float pointSizeRange[2]; // done -// float lineWidthRange[2]; // done -// float pointSizeGranularity; // done -// float lineWidthGranularity; // done -// VkBool32 strictLines; // done -// VkBool32 standardSampleLocations; // done -// VkDeviceSize optimalBufferCopyOffsetAlignment; // done -// VkDeviceSize optimalBufferCopyRowPitchAlignment; // done -// VkDeviceSize nonCoherentAtomSize; // done -//} VkPhysicalDeviceLimits; - -//typedef struct { -// VkBool32 residencyStandard2DBlockShape; -// VkBool32 residencyStandard2DMSBlockShape; -// VkBool32 residencyStandard3DBlockShape; -// VkBool32 residencyAlignedMipSize; -// VkBool32 residencyNonResident; -// VkBool32 residencyNonResidentStrict; -//} VkPhysicalDeviceSparseProperties; - - void MVKPhysicalDevice::initPipelineCacheUUID() { // Clear the UUID @@ -2789,7 +2770,7 @@ static uint32_t mvkGetEntryProperty(io_registry_entry_t entry, CFStringRef prope #if (MVK_IOS || MVK_MACOS) && MVK_XCODE_12 if (supportsMTLGPUFamily(Apple7)) { gpuFam = MTLGPUFamilyApple7; } #endif -#if MVK_IOS && MVK_XCODE_13 +#if MVK_XCODE_14 || (MVK_IOS && MVK_XCODE_13) if (supportsMTLGPUFamily(Apple8)) { gpuFam = MTLGPUFamilyApple8; } #endif @@ -3029,6 +3010,12 @@ static uint32_t mvkGetEntryProperty(io_registry_entry_t entry, CFStringRef prope void MVKPhysicalDevice::initExternalMemoryProperties() { + // Common + _hostPointerExternalMemoryProperties.externalMemoryFeatures = VK_EXTERNAL_MEMORY_FEATURE_IMPORTABLE_BIT; + _hostPointerExternalMemoryProperties.exportFromImportedHandleTypes = 0; + _hostPointerExternalMemoryProperties.compatibleHandleTypes = (VK_EXTERNAL_MEMORY_HANDLE_TYPE_HOST_ALLOCATION_BIT_EXT | + VK_EXTERNAL_MEMORY_HANDLE_TYPE_HOST_MAPPED_FOREIGN_MEMORY_BIT_EXT); + // Buffers _mtlBufferExternalMemoryProperties.externalMemoryFeatures = (VK_EXTERNAL_MEMORY_FEATURE_EXPORTABLE_BIT | VK_EXTERNAL_MEMORY_FEATURE_IMPORTABLE_BIT); @@ -3077,11 +3064,19 @@ static uint32_t mvkGetEntryProperty(io_registry_entry_t entry, CFStringRef prope pWritableExtns->vk_KHR_fragment_shader_barycentric.enabled = false; pWritableExtns->vk_NV_fragment_shader_barycentric.enabled = false; } - // gpuAddress requires Tier2 argument buffer support (per feedback from Apple engineers). - if (_metalFeatures.argumentBuffersTier < MTLArgumentBuffersTier2) { + + // The relevant functions are not available if not built with Xcode 14. +#if MVK_XCODE_14 + // gpuAddress requires Tier2 argument buffer support (per feedback from Apple engineers). + if (_metalFeatures.argumentBuffersTier < MTLArgumentBuffersTier2) { pWritableExtns->vk_KHR_buffer_device_address.enabled = false; pWritableExtns->vk_EXT_buffer_device_address.enabled = false; } +#else + pWritableExtns->vk_KHR_buffer_device_address.enabled = false; + pWritableExtns->vk_EXT_buffer_device_address.enabled = false; +#endif + #if MVK_MACOS if (!supportsMTLGPUFamily(Apple5)) { pWritableExtns->vk_AMD_shader_image_load_store_lod.enabled = false; @@ -3118,12 +3113,13 @@ static uint32_t mvkGetEntryProperty(io_registry_entry_t entry, CFStringRef prope // Determine whether Vulkan semaphores should use a MTLEvent, CPU callbacks, or should limit // Vulkan to a single queue and use Metal's implicit guarantees that all operations submitted // to a queue will give the same result as if they had been run in submission order. -// MTLEvents for semaphores can sometimes prove troublesome on some platforms, -// and so may optionally be disabled on those platforms. +// MTLEvents for semaphores are preferred, but can sometimes prove troublesome on some platforms, +// and so may be disabled on those platforms, unless explicitly requested. If MTLEvents are +// unusable, void MVKPhysicalDevice::initVkSemaphoreStyle() { - // Default to CPU callback if other options unavailable. - _vkSemaphoreStyle = MVKSemaphoreStyleUseEmulation; + // Default to single queue if other options unavailable. + _vkSemaphoreStyle = MVKSemaphoreStyleSingleQueue; switch (mvkConfig().semaphoreSupportStyle) { case MVK_CONFIG_VK_SEMAPHORE_SUPPORT_STYLE_METAL_EVENTS_WHERE_SAFE: { @@ -3135,10 +3131,10 @@ static uint32_t mvkGetEntryProperty(io_registry_entry_t entry, CFStringRef prope case MVK_CONFIG_VK_SEMAPHORE_SUPPORT_STYLE_METAL_EVENTS: if (_metalFeatures.events) { _vkSemaphoreStyle = MVKSemaphoreStyleUseMTLEvent; } break; - case MVK_CONFIG_VK_SEMAPHORE_SUPPORT_STYLE_SINGLE_QUEUE: - _vkSemaphoreStyle = MVKSemaphoreStyleSingleQueue; - break; case MVK_CONFIG_VK_SEMAPHORE_SUPPORT_STYLE_CALLBACK: + _vkSemaphoreStyle = MVKSemaphoreStyleUseEmulation; + break; + case MVK_CONFIG_VK_SEMAPHORE_SUPPORT_STYLE_SINGLE_QUEUE: default: break; } @@ -3159,6 +3155,8 @@ static uint32_t mvkGetEntryProperty(io_registry_entry_t entry, CFStringRef prope case 0x8a51: case 0x8a52: case 0x8a53: + case 0x8a5a: + case 0x8a5c: return true; default: return false; @@ -3194,7 +3192,7 @@ static uint32_t mvkGetEntryProperty(io_registry_entry_t entry, CFStringRef prope logMsg += "\n\tsupports the following Metal Versions, GPU's and Feature Sets:"; logMsg += "\n\t\tMetal Shading Language %s"; -#if MVK_IOS && MVK_XCODE_13 +#if MVK_XCODE_14 || (MVK_IOS && MVK_XCODE_13) if (supportsMTLGPUFamily(Apple8)) { logMsg += "\n\t\tGPU Family Apple 8"; } #endif #if (MVK_IOS || MVK_MACOS) && MVK_XCODE_12 @@ -3364,8 +3362,8 @@ static uint32_t mvkGetEntryProperty(io_registry_entry_t entry, CFStringRef prope // Check whether the layout has a variable-count descriptor, and if so, whether we can support it. for (auto* next = (VkBaseOutStructure*)pSupport->pNext; next; next = next->pNext) { switch (next->sType) { - case VK_STRUCTURE_TYPE_DESCRIPTOR_SET_VARIABLE_DESCRIPTOR_COUNT_LAYOUT_SUPPORT_EXT: { - auto* pVarDescSetCountSupport = (VkDescriptorSetVariableDescriptorCountLayoutSupportEXT*)next; + case VK_STRUCTURE_TYPE_DESCRIPTOR_SET_VARIABLE_DESCRIPTOR_COUNT_LAYOUT_SUPPORT: { + auto* pVarDescSetCountSupport = (VkDescriptorSetVariableDescriptorCountLayoutSupport*)next; getDescriptorVariableDescriptorCountLayoutSupport(pCreateInfo, pSupport, pVarDescSetCountSupport); break; } @@ -3378,7 +3376,7 @@ static uint32_t mvkGetEntryProperty(io_registry_entry_t entry, CFStringRef prope // Check whether the layout has a variable-count descriptor, and if so, whether we can support it. void MVKDevice::getDescriptorVariableDescriptorCountLayoutSupport(const VkDescriptorSetLayoutCreateInfo* pCreateInfo, VkDescriptorSetLayoutSupport* pSupport, - VkDescriptorSetVariableDescriptorCountLayoutSupportEXT* pVarDescSetCountSupport) { + VkDescriptorSetVariableDescriptorCountLayoutSupport* pVarDescSetCountSupport) { // Assume we don't need this, then set appropriately if we do. pVarDescSetCountSupport->maxVariableDescriptorCount = 0; @@ -3386,8 +3384,8 @@ static uint32_t mvkGetEntryProperty(io_registry_entry_t entry, CFStringRef prope int32_t varBindingIdx = -1; for (const auto* next = (VkBaseInStructure*)pCreateInfo->pNext; next; next = next->pNext) { switch (next->sType) { - case VK_STRUCTURE_TYPE_DESCRIPTOR_SET_LAYOUT_BINDING_FLAGS_CREATE_INFO_EXT: { - auto* pDescSetLayoutBindingFlags = (VkDescriptorSetLayoutBindingFlagsCreateInfoEXT*)next; + case VK_STRUCTURE_TYPE_DESCRIPTOR_SET_LAYOUT_BINDING_FLAGS_CREATE_INFO: { + auto* pDescSetLayoutBindingFlags = (VkDescriptorSetLayoutBindingFlagsCreateInfo*)next; for (uint32_t bindIdx = 0; bindIdx < pDescSetLayoutBindingFlags->bindingCount; bindIdx++) { if (mvkIsAnyFlagEnabled(pDescSetLayoutBindingFlags->pBindingFlags[bindIdx], VK_DESCRIPTOR_BINDING_VARIABLE_DESCRIPTOR_COUNT_BIT)) { varBindingIdx = bindIdx; @@ -3494,6 +3492,23 @@ static uint32_t mvkGetEntryProperty(io_registry_entry_t entry, CFStringRef prope *pPeerMemoryFeatures = VK_PEER_MEMORY_FEATURE_COPY_SRC_BIT | VK_PEER_MEMORY_FEATURE_COPY_DST_BIT; } +VkResult MVKDevice::getMemoryHostPointerProperties(VkExternalMemoryHandleTypeFlagBits handleType, + const void* pHostPointer, + VkMemoryHostPointerPropertiesEXT* pMemHostPtrProps) { + if (pMemHostPtrProps) { + switch (handleType) { + case VK_EXTERNAL_MEMORY_HANDLE_TYPE_HOST_ALLOCATION_BIT_EXT: + case VK_EXTERNAL_MEMORY_HANDLE_TYPE_HOST_MAPPED_FOREIGN_MEMORY_BIT_EXT: + pMemHostPtrProps->memoryTypeBits = _physicalDevice->getHostVisibleMemoryTypes(); + break; + default: + pMemHostPtrProps->memoryTypeBits = 0; + break; + } + } + return VK_SUCCESS; +} + #pragma mark Object lifecycle @@ -3621,7 +3636,8 @@ static uint32_t mvkGetEntryProperty(io_registry_entry_t entry, CFStringRef prope MVKSwapchain* swapchain, uint32_t swapchainIndex, const VkAllocationCallbacks* pAllocator) { - MVKPresentableSwapchainImage* mvkImg = new MVKPresentableSwapchainImage(this, pCreateInfo, swapchain, swapchainIndex); + MVKPresentableSwapchainImage* mvkImg = new MVKPresentableSwapchainImage(this, pCreateInfo, + swapchain, swapchainIndex); for (auto& memoryBinding : mvkImg->_memoryBindings) { addResource(memoryBinding); } @@ -3772,10 +3788,16 @@ static uint32_t mvkGetEntryProperty(io_registry_entry_t entry, CFStringRef prope const PipelineInfoType* pCreateInfos, const VkAllocationCallbacks* pAllocator, VkPipeline* pPipelines) { + bool ignoreFurtherPipelines = false; VkResult rslt = VK_SUCCESS; MVKPipelineCache* mvkPLC = (MVKPipelineCache*)pipelineCache; for (uint32_t plIdx = 0; plIdx < count; plIdx++) { + + // Ensure all slots are purposefully set. + pPipelines[plIdx] = VK_NULL_HANDLE; + if (ignoreFurtherPipelines) { continue; } + const PipelineInfoType* pCreateInfo = &pCreateInfos[plIdx]; // See if this pipeline has a parent. This can come either directly @@ -3788,18 +3810,19 @@ static uint32_t mvkGetEntryProperty(io_registry_entry_t entry, CFStringRef prope parentPL = vkParentPL ? (MVKPipeline*)vkParentPL : VK_NULL_HANDLE; } - // Create the pipeline and if creation was successful, insert the new pipeline - // in the return array and add it to the pipeline cache (if the cache was specified). - // If creation was unsuccessful, insert NULL into the return array, change the - // result code of this function, and destroy the broken pipeline. + // Create the pipeline and if creation was successful, insert the new pipeline in the return array. MVKPipeline* mvkPL = new PipelineType(this, mvkPLC, parentPL, pCreateInfo); VkResult plRslt = mvkPL->getConfigurationResult(); if (plRslt == VK_SUCCESS) { pPipelines[plIdx] = (VkPipeline)mvkPL; } else { - rslt = plRslt; - pPipelines[plIdx] = VK_NULL_HANDLE; - mvkPL->destroy(); + // If creation was unsuccessful, destroy the broken pipeline, change the result + // code of this function, and if the VK_PIPELINE_CREATE_EARLY_RETURN_ON_FAILURE_BIT + // flag is set, don't build any further pipelines. + mvkPL->destroy(); + if (rslt == VK_SUCCESS) { rslt = plRslt; } + ignoreFurtherPipelines = (_enabledPipelineCreationCacheControlFeatures.pipelineCreationCacheControl && + mvkIsAnyFlagEnabled(pCreateInfo->flags, VK_PIPELINE_CREATE_EARLY_RETURN_ON_FAILURE_BIT)); } } @@ -4046,7 +4069,7 @@ static uint32_t mvkGetEntryProperty(io_registry_entry_t entry, CFStringRef prope } void MVKDevice::logPerformanceSummary() { - if (_logActivityPerformanceInline) { return; } + if (_activityPerformanceLoggingStyle == MVK_CONFIG_ACTIVITY_PERFORMANCE_LOGGING_STYLE_IMMEDIATE) { return; } // Get a copy to minimize time under lock MVKPerformanceStatistics perfStats; @@ -4060,6 +4083,8 @@ static uint32_t mvkGetEntryProperty(io_registry_entry_t entry, CFStringRef prope logActivityPerformance(perfStats.shaderCompilation.spirvToMSL, perfStats); logActivityPerformance(perfStats.shaderCompilation.mslCompile, perfStats); logActivityPerformance(perfStats.shaderCompilation.mslLoad, perfStats); + logActivityPerformance(perfStats.shaderCompilation.mslCompress, perfStats); + logActivityPerformance(perfStats.shaderCompilation.mslDecompress, perfStats); logActivityPerformance(perfStats.shaderCompilation.shaderLibraryFromCache, perfStats); logActivityPerformance(perfStats.shaderCompilation.functionRetrieval, perfStats); logActivityPerformance(perfStats.shaderCompilation.functionSpecialization, perfStats); @@ -4074,6 +4099,8 @@ static uint32_t mvkGetEntryProperty(io_registry_entry_t entry, CFStringRef prope if (&activity == &perfStats.shaderCompilation.spirvToMSL) { return "Convert SPIR-V to MSL source code"; } if (&activity == &perfStats.shaderCompilation.mslCompile) { return "Compile MSL source code into a MTLLibrary"; } if (&activity == &perfStats.shaderCompilation.mslLoad) { return "Load pre-compiled MSL code into a MTLLibrary"; } + if (&activity == &perfStats.shaderCompilation.mslCompress) { return "Compress MSL source code after compiling a MTLLibrary"; } + if (&activity == &perfStats.shaderCompilation.mslDecompress) { return "Decompress MSL source code during pipeline cache write"; } if (&activity == &perfStats.shaderCompilation.shaderLibraryFromCache) { return "Retrieve shader library from the cache"; } if (&activity == &perfStats.shaderCompilation.functionRetrieval) { return "Retrieve a MTLFunction from a MTLLibrary"; } if (&activity == &perfStats.shaderCompilation.functionSpecialization) { return "Specialize a retrieved MTLFunction"; } @@ -4244,10 +4271,11 @@ static uint32_t mvkGetEntryProperty(io_registry_entry_t entry, CFStringRef prope return _dummyBlitMTLBuffer; } -MTLCompileOptions* MVKDevice::getMTLCompileOptions(bool useFastMath, bool preserveInvariance) { +MTLCompileOptions* MVKDevice::getMTLCompileOptions(bool requestFastMath, bool preserveInvariance) { MTLCompileOptions* mtlCompOpt = [MTLCompileOptions new]; mtlCompOpt.languageVersion = _pMetalFeatures->mslVersionEnum; - mtlCompOpt.fastMathEnabled = useFastMath && mvkConfig().fastMathEnabled; + mtlCompOpt.fastMathEnabled = (mvkConfig().fastMathEnabled == MVK_CONFIG_FAST_MATH_ALWAYS || + (mvkConfig().fastMathEnabled == MVK_CONFIG_FAST_MATH_ON_DEMAND && requestFastMath)); #if MVK_XCODE_12 if ([mtlCompOpt respondsToSelector: @selector(setPreserveInvariance:)]) { [mtlCompOpt setPreserveInvariance: preserveInvariance]; @@ -4422,29 +4450,25 @@ static uint32_t mvkGetEntryProperty(io_registry_entry_t entry, CFStringRef prope void MVKDevice::initPerformanceTracking() { _isPerformanceTracking = mvkConfig().performanceTracking; - _logActivityPerformanceInline = mvkConfig().logActivityPerformanceInline; - - MVKPerformanceTracker initPerf; - initPerf.count = 0; - initPerf.averageDuration = 0.0; - initPerf.minimumDuration = 0.0; - initPerf.maximumDuration = 0.0; - - _performanceStatistics.shaderCompilation.hashShaderCode = initPerf; - _performanceStatistics.shaderCompilation.spirvToMSL = initPerf; - _performanceStatistics.shaderCompilation.mslCompile = initPerf; - _performanceStatistics.shaderCompilation.mslLoad = initPerf; - _performanceStatistics.shaderCompilation.shaderLibraryFromCache = initPerf; - _performanceStatistics.shaderCompilation.functionRetrieval = initPerf; - _performanceStatistics.shaderCompilation.functionSpecialization = initPerf; - _performanceStatistics.shaderCompilation.pipelineCompile = initPerf; - _performanceStatistics.pipelineCache.sizePipelineCache = initPerf; - _performanceStatistics.pipelineCache.writePipelineCache = initPerf; - _performanceStatistics.pipelineCache.readPipelineCache = initPerf; - _performanceStatistics.queue.mtlQueueAccess = initPerf; - _performanceStatistics.queue.mtlCommandBufferCompletion = initPerf; - _performanceStatistics.queue.nextCAMetalDrawable = initPerf; - _performanceStatistics.queue.frameInterval = initPerf; + _activityPerformanceLoggingStyle = mvkConfig().activityPerformanceLoggingStyle; + + _performanceStatistics.shaderCompilation.hashShaderCode = {}; + _performanceStatistics.shaderCompilation.spirvToMSL = {}; + _performanceStatistics.shaderCompilation.mslCompile = {}; + _performanceStatistics.shaderCompilation.mslLoad = {}; + _performanceStatistics.shaderCompilation.mslCompress = {}; + _performanceStatistics.shaderCompilation.mslDecompress = {}; + _performanceStatistics.shaderCompilation.shaderLibraryFromCache = {}; + _performanceStatistics.shaderCompilation.functionRetrieval = {}; + _performanceStatistics.shaderCompilation.functionSpecialization = {}; + _performanceStatistics.shaderCompilation.pipelineCompile = {}; + _performanceStatistics.pipelineCache.sizePipelineCache = {}; + _performanceStatistics.pipelineCache.writePipelineCache = {}; + _performanceStatistics.pipelineCache.readPipelineCache = {}; + _performanceStatistics.queue.mtlQueueAccess = {}; + _performanceStatistics.queue.mtlCommandBufferCompletion = {}; + _performanceStatistics.queue.nextCAMetalDrawable = {}; + _performanceStatistics.queue.frameInterval = {}; } void MVKDevice::initPhysicalDevice(MVKPhysicalDevice* physicalDevice, const VkDeviceCreateInfo* pCreateInfo) { @@ -4711,9 +4735,15 @@ static uint32_t mvkGetEntryProperty(io_registry_entry_t entry, CFStringRef prope } MVKDevice::~MVKDevice() { + if (_activityPerformanceLoggingStyle == MVK_CONFIG_ACTIVITY_PERFORMANCE_LOGGING_STYLE_DEVICE_LIFETIME) { + MVKLogInfo("Device activity performance summary:"); + logPerformanceSummary(); + } + for (auto& queues : _queuesByQueueFamilyIndex) { mvkDestroyContainerContents(queues); } + if (_commandResourceFactory) { _commandResourceFactory->destroy(); } [_globalVisibilityResultMTLBuffer release]; diff --git a/MoltenVK/MoltenVK/GPUObjects/MVKDeviceFeatureStructs.def b/MoltenVK/MoltenVK/GPUObjects/MVKDeviceFeatureStructs.def index 3235a2078..0674e4c18 100644 --- a/MoltenVK/MoltenVK/GPUObjects/MVKDeviceFeatureStructs.def +++ b/MoltenVK/MoltenVK/GPUObjects/MVKDeviceFeatureStructs.def @@ -1,7 +1,7 @@ /* * MVKDeviceFeatureStructs.def * - * Copyright (c) 2015-2022 The Brenwill Workshop Ltd. (http://www.brenwill.com) + * Copyright (c) 2015-2023 The Brenwill Workshop Ltd. (http://www.brenwill.com) * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. @@ -35,38 +35,41 @@ #pragma push_macro("INTEL") #undef INTEL -MVK_DEVICE_FEATURE(16BitStorage, 16BIT_STORAGE, 4) -MVK_DEVICE_FEATURE(8BitStorage, 8BIT_STORAGE, 3) -MVK_DEVICE_FEATURE(BufferDeviceAddress, BUFFER_DEVICE_ADDRESS, 3) -MVK_DEVICE_FEATURE(DescriptorIndexing, DESCRIPTOR_INDEXING, 20) -MVK_DEVICE_FEATURE(DynamicRendering, DYNAMIC_RENDERING, 1) -MVK_DEVICE_FEATURE(HostQueryReset, HOST_QUERY_RESET, 1) -MVK_DEVICE_FEATURE(ImagelessFramebuffer, IMAGELESS_FRAMEBUFFER, 1) -MVK_DEVICE_FEATURE(ImageRobustness, IMAGE_ROBUSTNESS, 1) -MVK_DEVICE_FEATURE(InlineUniformBlock, INLINE_UNIFORM_BLOCK, 2) -MVK_DEVICE_FEATURE(Multiview, MULTIVIEW, 3) -MVK_DEVICE_FEATURE(PrivateData, PRIVATE_DATA, 1) -MVK_DEVICE_FEATURE(ProtectedMemory, PROTECTED_MEMORY, 1) -MVK_DEVICE_FEATURE(SamplerYcbcrConversion, SAMPLER_YCBCR_CONVERSION, 1) -MVK_DEVICE_FEATURE(ScalarBlockLayout, SCALAR_BLOCK_LAYOUT, 1) -MVK_DEVICE_FEATURE(SeparateDepthStencilLayouts, SEPARATE_DEPTH_STENCIL_LAYOUTS, 1) -MVK_DEVICE_FEATURE(ShaderDrawParameters, SHADER_DRAW_PARAMETERS, 1) -MVK_DEVICE_FEATURE(ShaderAtomicInt64, SHADER_ATOMIC_INT64, 2) -MVK_DEVICE_FEATURE(ShaderFloat16Int8, SHADER_FLOAT16_INT8, 2) -MVK_DEVICE_FEATURE(ShaderSubgroupExtendedTypes, SHADER_SUBGROUP_EXTENDED_TYPES, 1) -MVK_DEVICE_FEATURE(SubgroupSizeControl, SUBGROUP_SIZE_CONTROL, 2) -MVK_DEVICE_FEATURE(TextureCompressionASTCHDR, TEXTURE_COMPRESSION_ASTC_HDR, 1) -MVK_DEVICE_FEATURE(TimelineSemaphore, TIMELINE_SEMAPHORE, 1) -MVK_DEVICE_FEATURE(UniformBufferStandardLayout, UNIFORM_BUFFER_STANDARD_LAYOUT, 1) -MVK_DEVICE_FEATURE(VariablePointer, VARIABLE_POINTER, 2) -MVK_DEVICE_FEATURE(VulkanMemoryModel, VULKAN_MEMORY_MODEL, 3) -MVK_DEVICE_FEATURE_EXTN(FragmentShaderBarycentric, FRAGMENT_SHADER_BARYCENTRIC, KHR, 1) -MVK_DEVICE_FEATURE_EXTN(PortabilitySubset, PORTABILITY_SUBSET, KHR, 15) -MVK_DEVICE_FEATURE_EXTN(FragmentShaderInterlock, FRAGMENT_SHADER_INTERLOCK, EXT, 3) -MVK_DEVICE_FEATURE_EXTN(Robustness2, ROBUSTNESS_2, EXT, 3) -MVK_DEVICE_FEATURE_EXTN(TexelBufferAlignment, TEXEL_BUFFER_ALIGNMENT, EXT, 1) -MVK_DEVICE_FEATURE_EXTN(VertexAttributeDivisor, VERTEX_ATTRIBUTE_DIVISOR, EXT, 2) -MVK_DEVICE_FEATURE_EXTN(ShaderIntegerFunctions2, SHADER_INTEGER_FUNCTIONS_2, INTEL, 1) +MVK_DEVICE_FEATURE(16BitStorage, 16BIT_STORAGE, 4) +MVK_DEVICE_FEATURE(8BitStorage, 8BIT_STORAGE, 3) +MVK_DEVICE_FEATURE(BufferDeviceAddress, BUFFER_DEVICE_ADDRESS, 3) +MVK_DEVICE_FEATURE(DescriptorIndexing, DESCRIPTOR_INDEXING, 20) +MVK_DEVICE_FEATURE(DynamicRendering, DYNAMIC_RENDERING, 1) +MVK_DEVICE_FEATURE(HostQueryReset, HOST_QUERY_RESET, 1) +MVK_DEVICE_FEATURE(ImagelessFramebuffer, IMAGELESS_FRAMEBUFFER, 1) +MVK_DEVICE_FEATURE(ImageRobustness, IMAGE_ROBUSTNESS, 1) +MVK_DEVICE_FEATURE(InlineUniformBlock, INLINE_UNIFORM_BLOCK, 2) +MVK_DEVICE_FEATURE(Multiview, MULTIVIEW, 3) +MVK_DEVICE_FEATURE(PrivateData, PRIVATE_DATA, 1) +MVK_DEVICE_FEATURE(ProtectedMemory, PROTECTED_MEMORY, 1) +MVK_DEVICE_FEATURE(SamplerYcbcrConversion, SAMPLER_YCBCR_CONVERSION, 1) +MVK_DEVICE_FEATURE(ScalarBlockLayout, SCALAR_BLOCK_LAYOUT, 1) +MVK_DEVICE_FEATURE(SeparateDepthStencilLayouts, SEPARATE_DEPTH_STENCIL_LAYOUTS, 1) +MVK_DEVICE_FEATURE(ShaderDrawParameters, SHADER_DRAW_PARAMETERS, 1) +MVK_DEVICE_FEATURE(ShaderAtomicInt64, SHADER_ATOMIC_INT64, 2) +MVK_DEVICE_FEATURE(ShaderFloat16Int8, SHADER_FLOAT16_INT8, 2) +MVK_DEVICE_FEATURE(ShaderSubgroupExtendedTypes, SHADER_SUBGROUP_EXTENDED_TYPES, 1) +MVK_DEVICE_FEATURE(SubgroupSizeControl, SUBGROUP_SIZE_CONTROL, 2) +MVK_DEVICE_FEATURE(TextureCompressionASTCHDR, TEXTURE_COMPRESSION_ASTC_HDR, 1) +MVK_DEVICE_FEATURE(TimelineSemaphore, TIMELINE_SEMAPHORE, 1) +MVK_DEVICE_FEATURE(UniformBufferStandardLayout, UNIFORM_BUFFER_STANDARD_LAYOUT, 1) +MVK_DEVICE_FEATURE(VariablePointer, VARIABLE_POINTER, 2) +MVK_DEVICE_FEATURE(VulkanMemoryModel, VULKAN_MEMORY_MODEL, 3) +MVK_DEVICE_FEATURE_EXTN(FragmentShaderBarycentric, FRAGMENT_SHADER_BARYCENTRIC, KHR, 1) +MVK_DEVICE_FEATURE_EXTN(PortabilitySubset, PORTABILITY_SUBSET, KHR, 15) +MVK_DEVICE_FEATURE_EXTN(FragmentShaderInterlock, FRAGMENT_SHADER_INTERLOCK, EXT, 3) +MVK_DEVICE_FEATURE_EXTN(PipelineCreationCacheControl, PIPELINE_CREATION_CACHE_CONTROL, EXT, 1) +MVK_DEVICE_FEATURE_EXTN(Robustness2, ROBUSTNESS_2, EXT, 3) +MVK_DEVICE_FEATURE_EXTN(ShaderAtomicFloat, SHADER_ATOMIC_FLOAT, EXT, 12) +MVK_DEVICE_FEATURE_EXTN(SwapchainMaintenance1, SWAPCHAIN_MAINTENANCE_1, EXT, 1) +MVK_DEVICE_FEATURE_EXTN(TexelBufferAlignment, TEXEL_BUFFER_ALIGNMENT, EXT, 1) +MVK_DEVICE_FEATURE_EXTN(VertexAttributeDivisor, VERTEX_ATTRIBUTE_DIVISOR, EXT, 2) +MVK_DEVICE_FEATURE_EXTN(ShaderIntegerFunctions2, SHADER_INTEGER_FUNCTIONS_2, INTEL, 1) #pragma pop_macro("INTEL") #undef MVK_DEVICE_FEATURE_EXTN diff --git a/MoltenVK/MoltenVK/GPUObjects/MVKDeviceMemory.h b/MoltenVK/MoltenVK/GPUObjects/MVKDeviceMemory.h index 0966dd356..9fee83534 100644 --- a/MoltenVK/MoltenVK/GPUObjects/MVKDeviceMemory.h +++ b/MoltenVK/MoltenVK/GPUObjects/MVKDeviceMemory.h @@ -1,7 +1,7 @@ /* * MVKDeviceMemory.h * - * Copyright (c) 2015-2022 The Brenwill Workshop Ltd. (http://www.brenwill.com) + * Copyright (c) 2015-2023 The Brenwill Workshop Ltd. (http://www.brenwill.com) * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. @@ -78,10 +78,10 @@ class MVKDeviceMemory : public MVKVulkanAPIDeviceObject { * Maps the memory address at the specified offset from the start of this memory allocation, * and returns the address in the specified data reference. */ - VkResult map(VkDeviceSize offset, VkDeviceSize size, VkMemoryMapFlags flags, void** ppData); - + VkResult map(const VkMemoryMapInfoKHR* mapInfo, void** ppData); + /** Unmaps a previously mapped memory range. */ - void unmap(); + VkResult unmap(const VkMemoryUnmapInfoKHR* unmapInfo); /** * If this device memory is currently mapped to host memory, returns the range within @@ -170,6 +170,7 @@ class MVKDeviceMemory : public MVKVulkanAPIDeviceObject { MTLStorageMode _mtlStorageMode; MTLCPUCacheMode _mtlCPUCacheMode; bool _isDedicated = false; + bool _isHostMemImported = false; }; diff --git a/MoltenVK/MoltenVK/GPUObjects/MVKDeviceMemory.mm b/MoltenVK/MoltenVK/GPUObjects/MVKDeviceMemory.mm index 154eb60ad..e7e97ea9f 100644 --- a/MoltenVK/MoltenVK/GPUObjects/MVKDeviceMemory.mm +++ b/MoltenVK/MoltenVK/GPUObjects/MVKDeviceMemory.mm @@ -1,7 +1,7 @@ /* * MVKDeviceMemory.mm * - * Copyright (c) 2015-2022 The Brenwill Workshop Ltd. (http://www.brenwill.com) + * Copyright (c) 2015-2023 The Brenwill Workshop Ltd. (http://www.brenwill.com) * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. @@ -36,8 +36,7 @@ setLabelIfNotNil(_mtlBuffer, _debugName); } -VkResult MVKDeviceMemory::map(VkDeviceSize offset, VkDeviceSize size, VkMemoryMapFlags flags, void** ppData) { - +VkResult MVKDeviceMemory::map(const VkMemoryMapInfoKHR* pMemoryMapInfo, void** ppData) { if ( !isMemoryHostAccessible() ) { return reportError(VK_ERROR_MEMORY_MAP_FAILED, "Private GPU-only memory cannot be mapped to host memory."); } @@ -50,25 +49,23 @@ return reportError(VK_ERROR_OUT_OF_HOST_MEMORY, "Could not allocate %llu bytes of host-accessible device memory.", _allocationSize); } - _mappedRange.offset = offset; - _mappedRange.size = adjustMemorySize(size, offset); + _mappedRange.offset = pMemoryMapInfo->offset; + _mappedRange.size = adjustMemorySize(pMemoryMapInfo->size, pMemoryMapInfo->offset); - *ppData = (void*)((uintptr_t)_pMemory + offset); + *ppData = (void*)((uintptr_t)_pMemory + pMemoryMapInfo->offset); // Coherent memory does not require flushing by app, so we must flush now // to support Metal textures that actually reside in non-coherent memory. if (mvkIsAnyFlagEnabled(_vkMemPropFlags, VK_MEMORY_PROPERTY_HOST_COHERENT_BIT)) { - pullFromDevice(offset, size); + pullFromDevice(pMemoryMapInfo->offset, pMemoryMapInfo->size); } return VK_SUCCESS; } -void MVKDeviceMemory::unmap() { - +VkResult MVKDeviceMemory::unmap(const VkMemoryUnmapInfoKHR* pUnmapMemoryInfo) { if ( !isMapped() ) { - reportError(VK_ERROR_MEMORY_MAP_FAILED, "Memory is not mapped. Call vkMapMemory() first."); - return; + return reportError(VK_ERROR_MEMORY_MAP_FAILED, "Memory is not mapped. Call vkMapMemory() first."); } // Coherent memory does not require flushing by app, so we must flush now @@ -79,6 +76,8 @@ _mappedRange.offset = 0; _mappedRange.size = 0; + + return VK_SUCCESS; } VkResult MVKDeviceMemory::flushToDevice(VkDeviceSize offset, VkDeviceSize size) { @@ -181,6 +180,9 @@ if (_mtlHeap) { return true; } + // Can't create a MTLHeap on a imported memory + if (_isHostMemImported) { return true; } + // Don't bother if we don't have placement heaps. if (!getDevice()->_pMetalFeatures->placementHeaps) { return true; } @@ -233,7 +235,12 @@ } [_mtlBuffer makeAliasable]; } else if (_pHostMemory) { - _mtlBuffer = [getMTLDevice() newBufferWithBytes: _pHostMemory length: memLen options: getMTLResourceOptions()]; // retained + auto rezOpts = getMTLResourceOptions(); + if (_isHostMemImported) { + _mtlBuffer = [getMTLDevice() newBufferWithBytesNoCopy: _pHostMemory length: memLen options: rezOpts deallocator: nil]; // retained + } else { + _mtlBuffer = [getMTLDevice() newBufferWithBytes: _pHostMemory length: memLen options: rezOpts]; // retained + } freeHostMemory(); } else { _mtlBuffer = [getMTLDevice() newBufferWithLength: memLen options: getMTLResourceOptions()]; // retained @@ -264,7 +271,7 @@ } void MVKDeviceMemory::freeHostMemory() { - free(_pHostMemory); + if ( !_isHostMemImported ) { free(_pHostMemory); } _pHostMemory = nullptr; } @@ -296,6 +303,23 @@ _isDedicated = dedicatedImage || dedicatedBuffer; break; } + case VK_STRUCTURE_TYPE_IMPORT_MEMORY_HOST_POINTER_INFO_EXT: { + auto* pMemHostPtrInfo = (VkImportMemoryHostPointerInfoEXT*)next; + if (mvkIsAnyFlagEnabled(_vkMemPropFlags, VK_MEMORY_PROPERTY_HOST_VISIBLE_BIT)) { + switch (pMemHostPtrInfo->handleType) { + case VK_EXTERNAL_MEMORY_HANDLE_TYPE_HOST_ALLOCATION_BIT_EXT: + case VK_EXTERNAL_MEMORY_HANDLE_TYPE_HOST_MAPPED_FOREIGN_MEMORY_BIT_EXT: + _pHostMemory = pMemHostPtrInfo->pHostPointer; + _isHostMemImported = true; + break; + default: + break; + } + } else { + setConfigurationResult(reportError(VK_ERROR_INVALID_EXTERNAL_HANDLE_KHR, "vkAllocateMemory(): Imported memory must be host-visible.")); + } + break; + } case VK_STRUCTURE_TYPE_EXPORT_MEMORY_ALLOCATE_INFO: { auto* pExpMemInfo = (VkExportMemoryAllocateInfo*)next; handleTypes = pExpMemInfo->handleTypes; @@ -333,7 +357,7 @@ #if MVK_MACOS if (isMemoryHostCoherent() ) { if (!((MVKImage*)dedicatedImage)->_isLinear) { - setConfigurationResult(reportError(VK_ERROR_OUT_OF_DEVICE_MEMORY, "Host-coherent VkDeviceMemory objects cannot be associated with optimal-tiling images.")); + setConfigurationResult(reportError(VK_ERROR_OUT_OF_DEVICE_MEMORY, "vkAllocateMemory(): Host-coherent VkDeviceMemory objects cannot be associated with optimal-tiling images.")); } else { if (!_device->_pMetalFeatures->sharedLinearTextures) { // Need to use the managed mode for images. @@ -341,7 +365,7 @@ } // Nonetheless, we need a buffer to be able to map the memory at will. if (!ensureMTLBuffer() ) { - setConfigurationResult(reportError(VK_ERROR_OUT_OF_DEVICE_MEMORY, "Could not allocate a host-coherent VkDeviceMemory of size %llu bytes. The maximum memory-aligned size of a host-coherent VkDeviceMemory is %llu bytes.", _allocationSize, _device->_pMetalFeatures->maxMTLBufferSize)); + setConfigurationResult(reportError(VK_ERROR_OUT_OF_DEVICE_MEMORY, "vkAllocateMemory(): Could not allocate a host-coherent VkDeviceMemory of size %llu bytes. The maximum memory-aligned size of a host-coherent VkDeviceMemory is %llu bytes.", _allocationSize, _device->_pMetalFeatures->maxMTLBufferSize)); } } } @@ -359,15 +383,16 @@ // If we can, create a MTLHeap. This should happen before creating the buffer, allowing us to map its contents. if ( !_isDedicated ) { if (!ensureMTLHeap()) { - setConfigurationResult(reportError(VK_ERROR_OUT_OF_DEVICE_MEMORY, "Could not allocate VkDeviceMemory of size %llu bytes.", _allocationSize)); + setConfigurationResult(reportError(VK_ERROR_OUT_OF_DEVICE_MEMORY, "vkAllocateMemory(): Could not allocate VkDeviceMemory of size %llu bytes.", _allocationSize)); return; } } - // If memory needs to be coherent it must reside in an MTLBuffer, since an open-ended map() must work. + // If memory needs to be coherent it must reside in a MTLBuffer, since an open-ended map() must work. + // If memory was imported, a MTLBuffer must be created on it. // Or if a MTLBuffer will be exported, ensure it exists. - if ((isMemoryHostCoherent() || willExportMTLBuffer) && !ensureMTLBuffer() ) { - setConfigurationResult(reportError(VK_ERROR_OUT_OF_DEVICE_MEMORY, "Could not allocate a host-coherent or exportable VkDeviceMemory of size %llu bytes. The maximum memory-aligned size of a host-coherent VkDeviceMemory is %llu bytes.", _allocationSize, _device->_pMetalFeatures->maxMTLBufferSize)); + if ((isMemoryHostCoherent() || _isHostMemImported || willExportMTLBuffer) && !ensureMTLBuffer() ) { + setConfigurationResult(reportError(VK_ERROR_OUT_OF_DEVICE_MEMORY, "vkAllocateMemory(): Could not allocate a host-coherent or exportable VkDeviceMemory of size %llu bytes. The maximum memory-aligned size of a host-coherent VkDeviceMemory is %llu bytes.", _allocationSize, _device->_pMetalFeatures->maxMTLBufferSize)); } } diff --git a/MoltenVK/MoltenVK/GPUObjects/MVKFramebuffer.h b/MoltenVK/MoltenVK/GPUObjects/MVKFramebuffer.h index 60aeb429b..ec9b3fdfa 100644 --- a/MoltenVK/MoltenVK/GPUObjects/MVKFramebuffer.h +++ b/MoltenVK/MoltenVK/GPUObjects/MVKFramebuffer.h @@ -1,7 +1,7 @@ /* * MVKFramebuffer.h * - * Copyright (c) 2015-2022 The Brenwill Workshop Ltd. (http://www.brenwill.com) + * Copyright (c) 2015-2023 The Brenwill Workshop Ltd. (http://www.brenwill.com) * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. diff --git a/MoltenVK/MoltenVK/GPUObjects/MVKFramebuffer.mm b/MoltenVK/MoltenVK/GPUObjects/MVKFramebuffer.mm index 7bf9f475f..c6f56bc75 100644 --- a/MoltenVK/MoltenVK/GPUObjects/MVKFramebuffer.mm +++ b/MoltenVK/MoltenVK/GPUObjects/MVKFramebuffer.mm @@ -1,7 +1,7 @@ /* * MVKFramebuffer.mm * - * Copyright (c) 2015-2022 The Brenwill Workshop Ltd. (http://www.brenwill.com) + * Copyright (c) 2015-2023 The Brenwill Workshop Ltd. (http://www.brenwill.com) * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. diff --git a/MoltenVK/MoltenVK/GPUObjects/MVKImage.h b/MoltenVK/MoltenVK/GPUObjects/MVKImage.h index fc9e5fd26..c2a03ee53 100644 --- a/MoltenVK/MoltenVK/GPUObjects/MVKImage.h +++ b/MoltenVK/MoltenVK/GPUObjects/MVKImage.h @@ -1,7 +1,7 @@ /* * MVKImage.h * - * Copyright (c) 2015-2022 The Brenwill Workshop Ltd. (http://www.brenwill.com) + * Copyright (c) 2015-2023 The Brenwill Workshop Ltd. (http://www.brenwill.com) * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. @@ -423,13 +423,15 @@ typedef struct MVKSwapchainImageAvailability { bool operator< (const MVKSwapchainImageAvailability& rhs) const; } MVKSwapchainImageAvailability; -/** VK_GOOGLE_display_timing extension info */ +/** Presentation info. */ typedef struct { MVKPresentableSwapchainImage* presentableImage; - bool hasPresentTime; // Keep track of whether presentation included VK_GOOGLE_display_timing - uint32_t presentID; // VK_GOOGLE_display_timing presentID + MVKFence* fence; // VK_EXT_swapchain_maintenance1 fence signaled when resources can be destroyed uint64_t desiredPresentTime; // VK_GOOGLE_display_timing desired presentation time in nanoseconds -} MVKPresentTimingInfo; + uint32_t presentID; // VK_GOOGLE_display_timing presentID + VkPresentModeKHR presentMode; // VK_EXT_swapchain_maintenance1 present mode specialization + bool hasPresentTime; // Keep track of whether presentation included VK_GOOGLE_display_timing +} MVKImagePresentInfo; /** Tracks a semaphore and fence for later signaling. */ struct MVKSwapchainSignaler { @@ -447,16 +449,13 @@ class MVKPresentableSwapchainImage : public MVKSwapchainImage { #pragma mark Metal /** Presents the contained drawable to the OS. */ - void presentCAMetalDrawable(id mtlCmdBuff, - MVKPresentTimingInfo presentTimingInfo); + void presentCAMetalDrawable(id mtlCmdBuff, MVKImagePresentInfo& presentInfo); #pragma mark Construction - MVKPresentableSwapchainImage(MVKDevice* device, - const VkImageCreateInfo* pCreateInfo, - MVKSwapchain* swapchain, - uint32_t swapchainIndex); + MVKPresentableSwapchainImage(MVKDevice* device, const VkImageCreateInfo* pCreateInfo, + MVKSwapchain* swapchain, uint32_t swapchainIndex); ~MVKPresentableSwapchainImage() override; @@ -464,15 +463,12 @@ class MVKPresentableSwapchainImage : public MVKSwapchainImage { friend MVKSwapchain; id getCAMetalDrawable() override; - void addPresentedHandler(id mtlDrawable, MVKPresentTimingInfo presentTimingInfo); + void addPresentedHandler(id mtlDrawable, MVKImagePresentInfo& presentInfo); void releaseMetalDrawable(); MVKSwapchainImageAvailability getAvailability(); void makeAvailable(const MVKSwapchainSignaler& signaler); + void makeAvailable(); void acquireAndSignalWhenAvailable(MVKSemaphore* semaphore, MVKFence* fence); - void signal(const MVKSwapchainSignaler& signaler, id mtlCmdBuff); - void signalPresentationSemaphore(const MVKSwapchainSignaler& signaler, id mtlCmdBuff); - static void markAsTracked(const MVKSwapchainSignaler& signaler); - static void unmarkAsTracked(const MVKSwapchainSignaler& signaler); void renderWatermark(id mtlCmdBuff); id _mtlDrawable; diff --git a/MoltenVK/MoltenVK/GPUObjects/MVKImage.mm b/MoltenVK/MoltenVK/GPUObjects/MVKImage.mm index 33042358d..19822de6a 100644 --- a/MoltenVK/MoltenVK/GPUObjects/MVKImage.mm +++ b/MoltenVK/MoltenVK/GPUObjects/MVKImage.mm @@ -1,7 +1,7 @@ /* * MVKImage.mm * - * Copyright (c) 2015-2022 The Brenwill Workshop Ltd. (http://www.brenwill.com) + * Copyright (c) 2015-2023 The Brenwill Workshop Ltd. (http://www.brenwill.com) * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. @@ -144,7 +144,7 @@ VkDeviceSize offset = 0; if (_planeIndex > 0 && _image->_memoryBindings.size() == 1) { - if (!_image->_isLinear && _image->getDevice()->_pMetalFeatures->placementHeaps) { + if (!_image->_isLinear && !_image->_isLinearForAtomics && _image->getDevice()->_pMetalFeatures->placementHeaps) { // For textures allocated directly on the heap, we need to obey the size and alignment // requirements reported by the device. MTLTextureDescriptor* mtlTexDesc = _image->_planes[_planeIndex-1]->newMTLTextureDescriptor(); // temp retain @@ -856,7 +856,7 @@ needsReinterpretation = needsReinterpretation || !pixFmts->compatibleAsLinearOrSRGB(mtlPixFmt, viewFmt); } - MTLTextureUsage mtlUsage = pixFmts->getMTLTextureUsage(getCombinedUsage(), mtlPixFmt, _samples, _isLinear, needsReinterpretation, _hasExtendedUsage); + MTLTextureUsage mtlUsage = pixFmts->getMTLTextureUsage(getCombinedUsage(), mtlPixFmt, _samples, _isLinear || _isLinearForAtomics, needsReinterpretation, _hasExtendedUsage); // Metal before 3.0 doesn't support 3D compressed textures, so we'll // decompress the texture ourselves, and we need to be able to write to it. @@ -930,7 +930,7 @@ // If this is a storage image of format R32_UINT or R32_SINT, or MUTABLE_FORMAT is set // and R32_UINT is in the set of possible view formats, then we must use a texel buffer, // or image atomics won't work. - _isLinearForAtomics = (_isLinear && mvkIsAnyFlagEnabled(getCombinedUsage(), VK_IMAGE_USAGE_STORAGE_BIT) && + _isLinearForAtomics = (_arrayLayers == 1 && _mipLevels == 1 && getImageType() == VK_IMAGE_TYPE_2D && mvkIsAnyFlagEnabled(getCombinedUsage(), VK_IMAGE_USAGE_STORAGE_BIT) && ((_vkFormat == VK_FORMAT_R32_UINT || _vkFormat == VK_FORMAT_R32_SINT) || (_hasMutableFormat && pixFmts->getViewClass(_vkFormat) == MVKMTLViewClass::Color32 && (getIsValidViewFormat(VK_FORMAT_R32_UINT) || getIsValidViewFormat(VK_FORMAT_R32_SINT))))); @@ -939,7 +939,7 @@ _isDepthStencilAttachment = (mvkAreAllFlagsEnabled(pCreateInfo->usage, VK_IMAGE_USAGE_DEPTH_STENCIL_ATTACHMENT_BIT) || mvkAreAllFlagsEnabled(pixFmts->getVkFormatProperties(pCreateInfo->format).optimalTilingFeatures, VK_FORMAT_FEATURE_DEPTH_STENCIL_ATTACHMENT_BIT)); _canSupportMTLTextureView = !_isDepthStencilAttachment || _device->_pMetalFeatures->stencilViews; - _rowByteAlignment = _isLinear ? _device->getVkFormatTexelBufferAlignment(pCreateInfo->format, this) : mvkEnsurePowerOfTwo(pixFmts->getBytesPerBlock(pCreateInfo->format)); + _rowByteAlignment = _isLinear || _isLinearForAtomics ? _device->getVkFormatTexelBufferAlignment(pCreateInfo->format, this) : mvkEnsurePowerOfTwo(pixFmts->getBytesPerBlock(pCreateInfo->format)); VkExtent2D blockTexelSizeOfPlane[3]; uint32_t bytesPerBlockOfPlane[3]; @@ -964,7 +964,7 @@ } _planes[planeIndex]->initSubresources(pCreateInfo); MVKImageMemoryBinding* memoryBinding = _planes[planeIndex]->getMemoryBinding(); - if (!_isLinear && _device->_pMetalFeatures->placementHeaps) { + if (!_isLinear && !_isLinearForAtomics && _device->_pMetalFeatures->placementHeaps) { MTLTextureDescriptor* mtlTexDesc = _planes[planeIndex]->newMTLTextureDescriptor(); // temp retain MTLSizeAndAlign sizeAndAlign = [_device->getMTLDevice() heapTextureSizeAndAlignWithDescriptor: mtlTexDesc]; [mtlTexDesc release]; @@ -1218,13 +1218,30 @@ return _availability; } -// 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 MVKPresentableSwapchainImage::makeAvailable(const MVKSwapchainSignaler& signaler) { - lock_guard lock(_availabilityLock); +// If present, signal the semaphore for the first waiter for the given image. +static void signalPresentationSemaphore(const MVKSwapchainSignaler& signaler, id mtlCmdBuff) { + if (signaler.semaphore) { signaler.semaphore->encodeDeferredSignal(mtlCmdBuff, signaler.semaphoreSignalToken); } +} - // Signal the semaphore and fence, and let them know they are no longer being tracked. +// Signal either or both of the semaphore and fence in the specified tracker pair. +static void signal(const MVKSwapchainSignaler& signaler, id mtlCmdBuff) { + if (signaler.semaphore) { signaler.semaphore->encodeDeferredSignal(mtlCmdBuff, signaler.semaphoreSignalToken); } + if (signaler.fence) { signaler.fence->signal(); } +} + +// Tell the semaphore and fence that they are being tracked for future signaling. +static void markAsTracked(const MVKSwapchainSignaler& signaler) { + if (signaler.semaphore) { signaler.semaphore->retain(); } + if (signaler.fence) { signaler.fence->retain(); } +} + +// Tell the semaphore and fence that they are no longer being tracked for future signaling. +static void unmarkAsTracked(const MVKSwapchainSignaler& signaler) { + if (signaler.semaphore) { signaler.semaphore->release(); } + if (signaler.fence) { signaler.fence->release(); } +} + +static void signalAndUnmarkAsTracked(const MVKSwapchainSignaler& signaler) { signal(signaler, nil); unmarkAsTracked(signaler); } @@ -1263,33 +1280,6 @@ markAsTracked(signaler); } -// If present, signal the semaphore for the first waiter for the given image. -void MVKPresentableSwapchainImage::signalPresentationSemaphore(const MVKSwapchainSignaler& signaler, id mtlCmdBuff) { - MVKSemaphore* mvkSem = signaler.semaphore; - if (mvkSem) { mvkSem->encodeDeferredSignal(mtlCmdBuff, signaler.semaphoreSignalToken); } -} - -// Signal either or both of the semaphore and fence in the specified tracker pair. -void MVKPresentableSwapchainImage::signal(const MVKSwapchainSignaler& signaler, id mtlCmdBuff) { - if (signaler.semaphore) { signaler.semaphore->encodeDeferredSignal(mtlCmdBuff, signaler.semaphoreSignalToken); } - if (signaler.fence) { signaler.fence->signal(); } -} - -// Tell the semaphore and fence that they are being tracked for future signaling. -void MVKPresentableSwapchainImage::markAsTracked(const MVKSwapchainSignaler& signaler) { - if (signaler.semaphore) { signaler.semaphore->retain(); } - if (signaler.fence) { signaler.fence->retain(); } -} - -// Tell the semaphore and fence that they are no longer being tracked for future signaling. -void MVKPresentableSwapchainImage::unmarkAsTracked(const MVKSwapchainSignaler& signaler) { - if (signaler.semaphore) { signaler.semaphore->release(); } - if (signaler.fence) { signaler.fence->release(); } -} - - -#pragma mark Metal - id MVKPresentableSwapchainImage::getCAMetalDrawable() { while ( !_mtlDrawable ) { @autoreleasepool { // Reclaim auto-released drawable object before end of loop @@ -1306,8 +1296,7 @@ // Present the drawable and make myself available only once the command buffer has completed. void MVKPresentableSwapchainImage::presentCAMetalDrawable(id mtlCmdBuff, - MVKPresentTimingInfo presentTimingInfo) { - + MVKImagePresentInfo& presentInfo) { lock_guard lock(_availabilityLock); _swapchain->willPresentSurface(getMTLTexture(0), mtlCmdBuff); @@ -1318,10 +1307,15 @@ // Attach present handler before presenting to avoid race condition. id mtlDrwbl = getCAMetalDrawable(); [mtlCmdBuff addScheduledHandler: ^(id mcb) { - if (presentTimingInfo.hasPresentTime) { + // Try to do any present mode transitions as late as possible in an attempt + // to avoid visual disruptions on any presents already on the queue. + if (presentInfo.presentMode != VK_PRESENT_MODE_MAX_ENUM_KHR) { + mtlDrwbl.layer.displaySyncEnabledMVK = (presentInfo.presentMode != VK_PRESENT_MODE_IMMEDIATE_KHR); + } + if (presentInfo.hasPresentTime) { // Convert from nsecs to seconds for Metal - addPresentedHandler(mtlDrwbl, presentTimingInfo); - [mtlDrwbl presentAtTime: (double)presentTimingInfo.desiredPresentTime * 1.0e-9]; + addPresentedHandler(mtlDrwbl, presentInfo); + [mtlDrwbl presentAtTime: (double)presentInfo.desiredPresentTime * 1.0e-9]; } else { [mtlDrwbl present]; } @@ -1337,7 +1331,6 @@ // Because 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 = _preSignaler; - // Save the command buffer in case this image is acquired before presentation is finished. } else { // If this image is not yet available, extract and signal the first semaphore and fence. auto sigIter = _availabilitySignalers.begin(); @@ -1345,18 +1338,28 @@ _availabilitySignalers.erase(sigIter); } - // Ensure this image is not destroyed while awaiting MTLCommandBuffer completion + // Ensure this image, the drawable, and the present fence are not destroyed while + // awaiting MTLCommandBuffer completion. We retain the drawable separately because + // a new drawable might be acquired by this image by then. retain(); + [mtlDrwbl retain]; + auto* fence = presentInfo.fence; + if (fence) { fence->retain(); } [mtlCmdBuff addCompletedHandler: ^(id mcb) { + [mtlDrwbl release]; makeAvailable(signaler); release(); + if (fence) { + fence->signal(); + fence->release(); + } }]; signalPresentationSemaphore(signaler, mtlCmdBuff); } void MVKPresentableSwapchainImage::addPresentedHandler(id mtlDrawable, - MVKPresentTimingInfo presentTimingInfo) { + MVKImagePresentInfo& presentInfo) { #if !MVK_OS_SIMULATOR if ([mtlDrawable respondsToSelector: @selector(addPresentedHandler:)]) { retain(); // Ensure this image is not destroyed while awaiting presentation @@ -1364,7 +1367,7 @@ // Since we're in a callback, it's possible that the swapchain has been released by now. // Lock the swapchain, and test if it is present before doing anything with it. lock_guard cblock(_swapchainLock); - if (_swapchain) { _swapchain->recordPresentTime(presentTimingInfo, drawable.presentedTime * 1.0e9); } + if (_swapchain) { _swapchain->recordPresentTime(presentInfo, drawable.presentedTime * 1.0e9); } release(); }]; return; @@ -1377,7 +1380,7 @@ // the swapchain has been released by the time this function runs. // Lock the swapchain, and test if it is present before doing anything with it. lock_guard lock(_swapchainLock); - if (_swapchain) {_swapchain->recordPresentTime(presentTimingInfo); } + if (_swapchain) {_swapchain->recordPresentTime(presentInfo); } } // Resets the MTLTexture and CAMetalDrawable underlying this image. @@ -1389,6 +1392,29 @@ _mtlDrawable = nil; } +// 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 MVKPresentableSwapchainImage::makeAvailable(const MVKSwapchainSignaler& signaler) { + lock_guard lock(_availabilityLock); + + signalAndUnmarkAsTracked(signaler); +} + +// Signal, untrack, and release any signalers that are tracking. +void MVKPresentableSwapchainImage::makeAvailable() { + lock_guard lock(_availabilityLock); + + if ( !_availability.isAvailable ) { + signalAndUnmarkAsTracked(_preSignaler); + for (auto& sig : _availabilitySignalers) { + signalAndUnmarkAsTracked(sig); + } + _availabilitySignalers.clear(); + _availability.isAvailable = true; + } +} + #pragma mark Construction @@ -1405,8 +1431,11 @@ _preSignaler = MVKSwapchainSignaler{nullptr, nullptr, 0}; } +// Unsignaled signalers will exist if this image is acquired more than it is presented. +// Ensure they are signaled and untracked so the fences and semaphores will be released. MVKPresentableSwapchainImage::~MVKPresentableSwapchainImage() { releaseMetalDrawable(); + makeAvailable(); } diff --git a/MoltenVK/MoltenVK/GPUObjects/MVKInstance.h b/MoltenVK/MoltenVK/GPUObjects/MVKInstance.h index 06d86bd61..6f9066402 100644 --- a/MoltenVK/MoltenVK/GPUObjects/MVKInstance.h +++ b/MoltenVK/MoltenVK/GPUObjects/MVKInstance.h @@ -1,7 +1,7 @@ /* * MVKInstance.h * - * Copyright (c) 2015-2022 The Brenwill Workshop Ltd. (http://www.brenwill.com) + * Copyright (c) 2015-2023 The Brenwill Workshop Ltd. (http://www.brenwill.com) * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. diff --git a/MoltenVK/MoltenVK/GPUObjects/MVKInstance.mm b/MoltenVK/MoltenVK/GPUObjects/MVKInstance.mm index 2f4c85ff9..8988f7763 100644 --- a/MoltenVK/MoltenVK/GPUObjects/MVKInstance.mm +++ b/MoltenVK/MoltenVK/GPUObjects/MVKInstance.mm @@ -1,7 +1,7 @@ /* * MVKInstance.mm * - * Copyright (c) 2015-2022 The Brenwill Workshop Ltd. (http://www.brenwill.com) + * Copyright (c) 2015-2023 The Brenwill Workshop Ltd. (http://www.brenwill.com) * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. @@ -402,16 +402,18 @@ #define ADD_INST_ENTRY_POINT(func) ADD_ENTRY_POINT(func, VK_API_VERSION_1_0, nullptr, nullptr, false) #define ADD_DVC_ENTRY_POINT(func) ADD_ENTRY_POINT(func, VK_API_VERSION_1_0, nullptr, nullptr, true) +// Add a core function. #define ADD_INST_1_1_ENTRY_POINT(func) ADD_ENTRY_POINT(func, VK_API_VERSION_1_1, nullptr, nullptr, false) +#define ADD_INST_1_3_ENTRY_POINT(func) ADD_ENTRY_POINT(func, VK_API_VERSION_1_3, nullptr, nullptr, false) #define ADD_DVC_1_1_ENTRY_POINT(func) ADD_ENTRY_POINT(func, VK_API_VERSION_1_1, nullptr, nullptr, true) #define ADD_DVC_1_2_ENTRY_POINT(func) ADD_ENTRY_POINT(func, VK_API_VERSION_1_2, nullptr, nullptr, true) +#define ADD_DVC_1_3_ENTRY_POINT(func) ADD_ENTRY_POINT(func, VK_API_VERSION_1_3, nullptr, nullptr, true) -// Adds both the 1.1 function and the promoted extension function. +// Add both the promoted core function and the extension function. #define ADD_INST_1_1_PROMOTED_ENTRY_POINT(func, EXT) \ ADD_INST_1_1_ENTRY_POINT(func); \ ADD_ENTRY_POINT_MAP(func##KHR, func, 0, VK_##EXT##_EXTENSION_NAME, nullptr, false) -// Adds both the 1.1 function and the promoted extension function. #define ADD_DVC_1_1_PROMOTED_ENTRY_POINT(func, EXT) \ ADD_DVC_1_1_ENTRY_POINT(func); \ ADD_ENTRY_POINT_MAP(func##KHR, func, 0, VK_##EXT##_EXTENSION_NAME, nullptr, true) @@ -420,6 +422,15 @@ ADD_DVC_1_2_ENTRY_POINT(func); \ ADD_ENTRY_POINT_MAP(func##suffix, func, 0, VK_##EXT##_EXTENSION_NAME, nullptr, true) +#define ADD_INST_1_3_PROMOTED_ENTRY_POINT(func, EXT) \ + ADD_INST_1_3_ENTRY_POINT(func); \ + ADD_ENTRY_POINT_MAP(func##KHR, func, 0, VK_##EXT##_EXTENSION_NAME, nullptr, false) + +#define ADD_DVC_1_3_PROMOTED_ENTRY_POINT(func, suffix, EXT) \ + ADD_DVC_1_3_ENTRY_POINT(func); \ + ADD_ENTRY_POINT_MAP(func##suffix, func, 0, VK_##EXT##_EXTENSION_NAME, nullptr, true) + +// Add an extension function. #define ADD_INST_EXT_ENTRY_POINT(func, EXT) ADD_ENTRY_POINT(func, 0, VK_##EXT##_EXTENSION_NAME, nullptr, false) #define ADD_DVC_EXT_ENTRY_POINT(func, EXT) ADD_ENTRY_POINT(func, 0, VK_##EXT##_EXTENSION_NAME, nullptr, true) @@ -438,7 +449,6 @@ ADD_INST_ENTRY_POINT(vkGetPhysicalDeviceProperties); ADD_INST_ENTRY_POINT(vkGetPhysicalDeviceQueueFamilyProperties); ADD_INST_ENTRY_POINT(vkGetPhysicalDeviceMemoryProperties); - ADD_INST_ENTRY_POINT(vkGetInstanceProcAddr); ADD_INST_ENTRY_POINT(vkCreateDevice); ADD_INST_ENTRY_POINT(vkEnumerateDeviceExtensionProperties); ADD_INST_ENTRY_POINT(vkEnumerateDeviceLayerProperties); @@ -456,6 +466,8 @@ ADD_INST_1_1_PROMOTED_ENTRY_POINT(vkGetPhysicalDeviceExternalBufferProperties, KHR_EXTERNAL_MEMORY_CAPABILITIES); ADD_INST_1_1_PROMOTED_ENTRY_POINT(vkGetPhysicalDeviceExternalSemaphoreProperties, KHR_EXTERNAL_SEMAPHORE_CAPABILITIES); + ADD_INST_1_3_PROMOTED_ENTRY_POINT(vkGetPhysicalDeviceToolProperties, EXT_TOOLING_INFO); + // Device functions: ADD_DVC_ENTRY_POINT(vkGetDeviceProcAddr); ADD_DVC_ENTRY_POINT(vkDestroyDevice); @@ -611,6 +623,43 @@ ADD_DVC_1_2_PROMOTED_ENTRY_POINT(vkSignalSemaphore, KHR, KHR_TIMELINE_SEMAPHORE); ADD_DVC_1_2_PROMOTED_ENTRY_POINT(vkWaitSemaphores, KHR, KHR_TIMELINE_SEMAPHORE); + ADD_DVC_1_3_PROMOTED_ENTRY_POINT(vkCmdBeginRendering, KHR, KHR_DYNAMIC_RENDERING); + ADD_DVC_1_3_PROMOTED_ENTRY_POINT(vkCmdBindVertexBuffers2, EXT, EXT_EXTENDED_DYNAMIC_STATE); + ADD_DVC_1_3_PROMOTED_ENTRY_POINT(vkCmdBlitImage2, KHR, KHR_COPY_COMMANDS_2); + ADD_DVC_1_3_PROMOTED_ENTRY_POINT(vkCmdCopyBuffer2, KHR, KHR_COPY_COMMANDS_2); + ADD_DVC_1_3_PROMOTED_ENTRY_POINT(vkCmdCopyBufferToImage2, KHR, KHR_COPY_COMMANDS_2); + ADD_DVC_1_3_PROMOTED_ENTRY_POINT(vkCmdCopyImage2, KHR, KHR_COPY_COMMANDS_2); + ADD_DVC_1_3_PROMOTED_ENTRY_POINT(vkCmdCopyImageToBuffer2, KHR, KHR_COPY_COMMANDS_2); + ADD_DVC_1_3_PROMOTED_ENTRY_POINT(vkCmdEndRendering, KHR, KHR_DYNAMIC_RENDERING); + ADD_DVC_1_3_PROMOTED_ENTRY_POINT(vkCmdPipelineBarrier2, KHR, KHR_SYNCHRONIZATION_2); + ADD_DVC_1_3_PROMOTED_ENTRY_POINT(vkCmdResetEvent2, KHR, KHR_SYNCHRONIZATION_2); + ADD_DVC_1_3_PROMOTED_ENTRY_POINT(vkCmdResolveImage2, KHR, KHR_COPY_COMMANDS_2); + ADD_DVC_1_3_PROMOTED_ENTRY_POINT(vkCmdSetCullMode, EXT, EXT_EXTENDED_DYNAMIC_STATE); + ADD_DVC_1_3_PROMOTED_ENTRY_POINT(vkCmdSetDepthBiasEnable, EXT, EXT_EXTENDED_DYNAMIC_STATE); + ADD_DVC_1_3_PROMOTED_ENTRY_POINT(vkCmdSetDepthBoundsTestEnable, EXT, EXT_EXTENDED_DYNAMIC_STATE); + ADD_DVC_1_3_PROMOTED_ENTRY_POINT(vkCmdSetDepthCompareOp, EXT, EXT_EXTENDED_DYNAMIC_STATE); + ADD_DVC_1_3_PROMOTED_ENTRY_POINT(vkCmdSetDepthTestEnable, EXT, EXT_EXTENDED_DYNAMIC_STATE); + ADD_DVC_1_3_PROMOTED_ENTRY_POINT(vkCmdSetDepthWriteEnable, EXT, EXT_EXTENDED_DYNAMIC_STATE); + ADD_DVC_1_3_PROMOTED_ENTRY_POINT(vkCmdSetEvent2, KHR, KHR_SYNCHRONIZATION_2); + ADD_DVC_1_3_PROMOTED_ENTRY_POINT(vkCmdSetFrontFace, EXT, EXT_EXTENDED_DYNAMIC_STATE); + ADD_DVC_1_3_PROMOTED_ENTRY_POINT(vkCmdSetPrimitiveRestartEnable, EXT, EXT_EXTENDED_DYNAMIC_STATE); + ADD_DVC_1_3_PROMOTED_ENTRY_POINT(vkCmdSetPrimitiveTopology, EXT, EXT_EXTENDED_DYNAMIC_STATE); + ADD_DVC_1_3_PROMOTED_ENTRY_POINT(vkCmdSetRasterizerDiscardEnable, EXT, EXT_EXTENDED_DYNAMIC_STATE); + ADD_DVC_1_3_PROMOTED_ENTRY_POINT(vkCmdSetScissorWithCount, EXT, EXT_EXTENDED_DYNAMIC_STATE); + ADD_DVC_1_3_PROMOTED_ENTRY_POINT(vkCmdSetStencilOp, EXT, EXT_EXTENDED_DYNAMIC_STATE); + ADD_DVC_1_3_PROMOTED_ENTRY_POINT(vkCmdSetStencilTestEnable, EXT, EXT_EXTENDED_DYNAMIC_STATE); + ADD_DVC_1_3_PROMOTED_ENTRY_POINT(vkCmdSetViewportWithCount, EXT, EXT_EXTENDED_DYNAMIC_STATE); + ADD_DVC_1_3_PROMOTED_ENTRY_POINT(vkCmdWaitEvents2, KHR, KHR_SYNCHRONIZATION_2); + ADD_DVC_1_3_PROMOTED_ENTRY_POINT(vkCmdWriteTimestamp2, KHR, KHR_SYNCHRONIZATION_2); + ADD_DVC_1_3_PROMOTED_ENTRY_POINT(vkCreatePrivateDataSlot, EXT, EXT_PRIVATE_DATA); + ADD_DVC_1_3_PROMOTED_ENTRY_POINT(vkDestroyPrivateDataSlot, EXT, EXT_PRIVATE_DATA); + ADD_DVC_1_3_PROMOTED_ENTRY_POINT(vkGetDeviceBufferMemoryRequirements, KHR, KHR_MAINTENANCE_4); + ADD_DVC_1_3_PROMOTED_ENTRY_POINT(vkGetDeviceImageMemoryRequirements, KHR, KHR_MAINTENANCE_4); + ADD_DVC_1_3_PROMOTED_ENTRY_POINT(vkGetDeviceImageSparseMemoryRequirements, KHR, KHR_MAINTENANCE_4); + ADD_DVC_1_3_PROMOTED_ENTRY_POINT(vkGetPrivateData, EXT, EXT_PRIVATE_DATA); + ADD_DVC_1_3_PROMOTED_ENTRY_POINT(vkQueueSubmit2, KHR, KHR_SYNCHRONIZATION_2); + ADD_DVC_1_3_PROMOTED_ENTRY_POINT(vkSetPrivateData, EXT, EXT_PRIVATE_DATA); + // Instance extension functions: ADD_INST_EXT_ENTRY_POINT(vkDestroySurfaceKHR, KHR_SURFACE); ADD_INST_EXT_ENTRY_POINT(vkGetPhysicalDeviceSurfaceSupportKHR, KHR_SURFACE); @@ -656,8 +705,8 @@ ADD_INST_EXT_ENTRY_POINT(vkGetMTLCommandQueueMVK, MVK_MOLTENVK); // Device extension functions: - ADD_DVC_EXT_ENTRY_POINT(vkCmdBeginRenderingKHR, KHR_DYNAMIC_RENDERING); - ADD_DVC_EXT_ENTRY_POINT(vkCmdEndRenderingKHR, KHR_DYNAMIC_RENDERING); + ADD_DVC_EXT_ENTRY_POINT(vkMapMemory2KHR, KHR_MAP_MEMORY_2); + ADD_DVC_EXT_ENTRY_POINT(vkUnmapMemory2KHR, KHR_MAP_MEMORY_2); ADD_DVC_EXT_ENTRY_POINT(vkCmdPushDescriptorSetKHR, KHR_PUSH_DESCRIPTOR); ADD_DVC_EXT2_ENTRY_POINT(vkCmdPushDescriptorSetWithTemplateKHR, KHR_PUSH_DESCRIPTOR, KHR_DESCRIPTOR_UPDATE_TEMPLATE); ADD_DVC_EXT_ENTRY_POINT(vkCreateSwapchainKHR, KHR_SWAPCHAIN); @@ -674,6 +723,7 @@ ADD_DVC_EXT_ENTRY_POINT(vkCmdDebugMarkerBeginEXT, EXT_DEBUG_MARKER); ADD_DVC_EXT_ENTRY_POINT(vkCmdDebugMarkerEndEXT, EXT_DEBUG_MARKER); ADD_DVC_EXT_ENTRY_POINT(vkCmdDebugMarkerInsertEXT, EXT_DEBUG_MARKER); + ADD_DVC_EXT_ENTRY_POINT(vkGetMemoryHostPointerPropertiesEXT, EXT_EXTERNAL_MEMORY_HOST); ADD_DVC_EXT_ENTRY_POINT(vkSetHdrMetadataEXT, EXT_HDR_METADATA); ADD_DVC_EXT_ENTRY_POINT(vkExportMetalObjectsEXT, EXT_METAL_OBJECTS); ADD_DVC_EXT_ENTRY_POINT(vkCreatePrivateDataSlotEXT, EXT_PRIVATE_DATA); @@ -682,9 +732,9 @@ ADD_DVC_EXT_ENTRY_POINT(vkSetPrivateDataEXT, EXT_PRIVATE_DATA); ADD_DVC_EXT_ENTRY_POINT(vkGetPhysicalDeviceMultisamplePropertiesEXT, EXT_SAMPLE_LOCATIONS); ADD_DVC_EXT_ENTRY_POINT(vkCmdSetSampleLocationsEXT, EXT_SAMPLE_LOCATIONS); + ADD_DVC_EXT_ENTRY_POINT(vkReleaseSwapchainImagesEXT, EXT_SWAPCHAIN_MAINTENANCE_1); ADD_DVC_EXT_ENTRY_POINT(vkGetRefreshCycleDurationGOOGLE, GOOGLE_DISPLAY_TIMING); ADD_DVC_EXT_ENTRY_POINT(vkGetPastPresentationTimingGOOGLE, GOOGLE_DISPLAY_TIMING); - } void MVKInstance::logVersions() { diff --git a/MoltenVK/MoltenVK/GPUObjects/MVKPipeline.h b/MoltenVK/MoltenVK/GPUObjects/MVKPipeline.h index 83e20577d..94b18c0bd 100644 --- a/MoltenVK/MoltenVK/GPUObjects/MVKPipeline.h +++ b/MoltenVK/MoltenVK/GPUObjects/MVKPipeline.h @@ -1,7 +1,7 @@ /* * MVKPipeline.h * - * Copyright (c) 2015-2022 The Brenwill Workshop Ltd. (http://www.brenwill.com) + * Copyright (c) 2015-2023 The Brenwill Workshop Ltd. (http://www.brenwill.com) * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. @@ -155,8 +155,18 @@ class MVKPipeline : public MVKVulkanAPIDeviceObject { /** Returns the number of descriptor sets in this pipeline layout. */ uint32_t getDescriptorSetCount() { return _descriptorSetCount; } + /** Returns the pipeline cache used by this pipeline. */ + MVKPipelineCache* getPipelineCache() { return _pipelineCache; } + + /** Returns whether the pipeline creation fail if a pipeline compile is required. */ + bool shouldFailOnPipelineCompileRequired() { + return (_device->_enabledPipelineCreationCacheControlFeatures.pipelineCreationCacheControl && + mvkIsAnyFlagEnabled(_flags, VK_PIPELINE_CREATE_FAIL_ON_PIPELINE_COMPILE_REQUIRED_BIT)); + } + /** Constructs an instance for the device. layout, and parent (which may be NULL). */ - MVKPipeline(MVKDevice* device, MVKPipelineCache* pipelineCache, MVKPipelineLayout* layout, MVKPipeline* parent); + MVKPipeline(MVKDevice* device, MVKPipelineCache* pipelineCache, MVKPipelineLayout* layout, + VkPipelineCreateFlags flags, MVKPipeline* parent); protected: void propagateDebugName() override {} @@ -172,6 +182,7 @@ class MVKPipeline : public MVKVulkanAPIDeviceObject { MVKShaderImplicitRezBinding _dynamicOffsetBufferIndex; MVKShaderImplicitRezBinding _indirectParamsIndex; MVKShaderImplicitRezBinding _pushConstantsBufferIndex; + VkPipelineCreateFlags _flags; uint32_t _descriptorSetCount; bool _stageUsesPushConstants[kMVKShaderStageCount]; bool _fullImageViewSwizzle; @@ -332,6 +343,9 @@ class MVKGraphicsPipeline : public MVKPipeline { bool verifyImplicitBuffer(bool needsBuffer, MVKShaderImplicitRezBinding& index, MVKShaderStage stage, const char* name); uint32_t getTranslatedVertexBinding(uint32_t binding, uint32_t translationOffset, uint32_t maxBinding); uint32_t getImplicitBufferIndex(MVKShaderStage stage, uint32_t bufferIndexOffset); + MVKMTLFunction getMTLFunction(SPIRVToMSLConversionConfiguration& shaderConfig, + const VkPipelineShaderStageCreateInfo* pShaderStage, + const char* pStageName); const VkPipelineShaderStageCreateInfo* _pVertexSS = nullptr; const VkPipelineShaderStageCreateInfo* _pTessCtlSS = nullptr; @@ -465,8 +479,14 @@ class MVKPipelineCache : public MVKVulkanAPIDeviceObject { */ VkResult writeData(size_t* pDataSize, void* pData); - /** Return a shader library from the shader conversion configuration and sourced from the specified shader module. */ - MVKShaderLibrary* getShaderLibrary(SPIRVToMSLConversionConfiguration* pContext, MVKShaderModule* shaderModule); + /** + * Return a shader library for the shader conversion configuration, from the + * pipeline's pipeline cache, or compiled from source in the shader module. + */ + MVKShaderLibrary* getShaderLibrary(SPIRVToMSLConversionConfiguration* pContext, + MVKShaderModule* shaderModule, + MVKPipeline* pipeline, + uint64_t startTime = 0); /** Merges the contents of the specified number of pipeline caches into this cache. */ VkResult mergePipelineCaches(uint32_t srcCacheCount, const VkPipelineCache* pSrcCaches); @@ -483,11 +503,18 @@ class MVKPipelineCache : public MVKVulkanAPIDeviceObject { MVKShaderLibraryCache* getShaderLibraryCache(MVKShaderModuleKey smKey); void readData(const VkPipelineCacheCreateInfo* pCreateInfo); void writeData(std::ostream& outstream, bool isCounting = false); + MVKShaderLibrary* getShaderLibraryImpl(SPIRVToMSLConversionConfiguration* pContext, + MVKShaderModule* shaderModule, + MVKPipeline* pipeline, + uint64_t startTime); + VkResult writeDataImpl(size_t* pDataSize, void* pData); + VkResult mergePipelineCachesImpl(uint32_t srcCacheCount, const VkPipelineCache* pSrcCaches); void markDirty(); std::unordered_map _shaderCache; size_t _dataSize = 0; std::mutex _shaderCacheLock; + bool _isExternallySynchronized = false; }; diff --git a/MoltenVK/MoltenVK/GPUObjects/MVKPipeline.mm b/MoltenVK/MoltenVK/GPUObjects/MVKPipeline.mm index 808c7a513..b01ab40f1 100644 --- a/MoltenVK/MoltenVK/GPUObjects/MVKPipeline.mm +++ b/MoltenVK/MoltenVK/GPUObjects/MVKPipeline.mm @@ -1,7 +1,7 @@ /* * MVKPipeline.mm * - * Copyright (c) 2015-2022 The Brenwill Workshop Ltd. (http://www.brenwill.com) + * Copyright (c) 2015-2023 The Brenwill Workshop Ltd. (http://www.brenwill.com) * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. @@ -208,9 +208,11 @@ } } -MVKPipeline::MVKPipeline(MVKDevice* device, MVKPipelineCache* pipelineCache, MVKPipelineLayout* layout, MVKPipeline* parent) : +MVKPipeline::MVKPipeline(MVKDevice* device, MVKPipelineCache* pipelineCache, MVKPipelineLayout* layout, + VkPipelineCreateFlags flags, MVKPipeline* parent) : MVKVulkanAPIDeviceObject(device), _pipelineCache(pipelineCache), + _flags(flags), _descriptorSetCount(layout->getDescriptorSetCount()), _fullImageViewSwizzle(mvkConfig().fullImageViewSwizzle) { @@ -309,6 +311,8 @@ break; } + + cmdEncoder->_graphicsResourcesState.markOverriddenBufferIndexesDirty(); cmdEncoder->_graphicsResourcesState.bindSwizzleBuffer(_swizzleBufferIndex, _needsVertexSwizzleBuffer, _needsTessCtlSwizzleBuffer, _needsTessEvalSwizzleBuffer, _needsFragmentSwizzleBuffer); cmdEncoder->_graphicsResourcesState.bindBufferSizeBuffer(_bufferSizeBufferIndex, _needsVertexBufferSizeBuffer, _needsTessCtlBufferSizeBuffer, _needsTessEvalBufferSizeBuffer, _needsFragmentBufferSizeBuffer); cmdEncoder->_graphicsResourcesState.bindDynamicOffsetBuffer(_dynamicOffsetBufferIndex, _needsVertexDynamicOffsetBuffer, _needsTessCtlDynamicOffsetBuffer, _needsTessEvalDynamicOffsetBuffer, _needsFragmentDynamicOffsetBuffer); @@ -391,7 +395,7 @@ MVKPipelineCache* pipelineCache, MVKPipeline* parent, const VkGraphicsPipelineCreateInfo* pCreateInfo) : - MVKPipeline(device, pipelineCache, (MVKPipelineLayout*)pCreateInfo->layout, parent) { + MVKPipeline(device, pipelineCache, (MVKPipelineLayout*)pCreateInfo->layout, pCreateInfo->flags, parent) { // Determine rasterization early, as various other structs are validated and interpreted in this context. const VkPipelineRenderingCreateInfo* pRendInfo = getRenderingCreateInfo(pCreateInfo); @@ -431,6 +435,14 @@ } } + // Tessellation - must ignore allowed bad pTessellationState pointer if not tess pipeline + _outputControlPointCount = reflectData.numControlPoints; + mvkSetOrClear(&_tessInfo, (_pTessCtlSS && _pTessEvalSS) ? pCreateInfo->pTessellationState : nullptr); + + // Render pipeline state. Do this as early as possible, to fail fast if pipeline requires a fail on cache-miss. + initMTLRenderPipelineState(pCreateInfo, reflectData); + if ( !_hasValidMTLPipelineStates ) { return; } + // Track dynamic state const VkPipelineDynamicStateCreateInfo* pDS = pCreateInfo->pDynamicState; if (pDS) { @@ -455,10 +467,6 @@ } } - // Tessellation - must ignore allowed bad pTessellationState pointer if not tess pipeline - _outputControlPointCount = reflectData.numControlPoints; - mvkSetOrClear(&_tessInfo, (_pTessCtlSS && _pTessEvalSS) ? pCreateInfo->pTessellationState : nullptr); - // Rasterization _mtlCullMode = MTLCullModeNone; _mtlFrontWinding = MTLWindingCounterClockwise; @@ -481,9 +489,6 @@ // Must run after _isRasterizing and _dynamicState are populated initCustomSamplePositions(pCreateInfo); - // Render pipeline state - initMTLRenderPipelineState(pCreateInfo, reflectData); - // Depth stencil content - clearing will disable depth and stencil testing // Must ignore allowed bad pDepthStencilState pointer if rasterization disabled or no depth attachment mvkSetOrClear(&_depthStencilInfo, _isRasterizingDepthStencil ? pCreateInfo->pDepthStencilState : nullptr); @@ -638,8 +643,10 @@ } else { getOrCompilePipeline(plDesc, _mtlPipelineState); } + [plDesc release]; // temp release + } else { + _hasValidMTLPipelineStates = false; } - [plDesc release]; // temp release } } @@ -900,10 +907,6 @@ static MTLVertexFormat mvkAdjustFormatVectorToSize(MTLVertexFormat format, uint3 setConfigurationResult(reportError(VK_ERROR_INITIALIZATION_FAILED, "Failed to get tessellation control outputs: %s", errorLog.c_str())); return nil; } - if (!getShaderInputs(((MVKShaderModule*)_pTessEvalSS->module)->getSPIRV(), spv::ExecutionModelTessellationEvaluation, _pTessEvalSS->pName, teInputs, errorLog) ) { - setConfigurationResult(reportError(VK_ERROR_INITIALIZATION_FAILED, "Failed to get tessellation evaluation inputs: %s", errorLog.c_str())); - return nil; - } if (!getShaderOutputs(((MVKShaderModule*)_pTessEvalSS->module)->getSPIRV(), spv::ExecutionModelTessellationEvaluation, _pTessEvalSS->pName, teOutputs, errorLog) ) { setConfigurationResult(reportError(VK_ERROR_INITIALIZATION_FAILED, "Failed to get tessellation evaluation outputs: %s", errorLog.c_str())); return nil; @@ -915,112 +918,6 @@ static MTLVertexFormat mvkAdjustFormatVectorToSize(MTLVertexFormat format, uint3 return nil; } - // Tessellation evaluation stage input - // This needs to happen before compiling the fragment shader, or we'll lose information on shader inputs. - // First, add extra builtins that are in teInputs but not tcOutputs. They can be read - // even if not written. - teInputs.erase(std::remove_if(teInputs.begin(), teInputs.end(), [&tcOutputs](const SPIRVShaderInterfaceVariable& var) { - return var.builtin != spv::BuiltInPosition && var.builtin != spv::BuiltInPointSize && var.builtin != spv::BuiltInClipDistance && var.builtin != spv::BuiltInCullDistance; - }), teInputs.end()); - std::remove_copy_if(teInputs.begin(), teInputs.end(), std::back_inserter(tcOutputs), [&tcOutputs](const SPIRVShaderInterfaceVariable& input) { - auto iter = std::find_if(tcOutputs.begin(), tcOutputs.end(), [input](const SPIRVShaderInterfaceVariable& oldVar) { - return oldVar.builtin == input.builtin; - }); - if (iter != tcOutputs.end()) { - iter->isUsed = input.isUsed; - } - return iter != tcOutputs.end(); - }); - - auto isBuiltInRead = [&teInputs](spv::BuiltIn builtin) { - for (const auto& input : teInputs) { - if (input.builtin == builtin) { - return input.isUsed; - } - } - return false; - }; - - plDesc.vertexDescriptor = [MTLVertexDescriptor vertexDescriptor]; - uint32_t offset = 0, patchOffset = 0, outerLoc = -1, innerLoc = -1; - bool usedPerVertex = false, usedPerPatch = false; - const SPIRVShaderOutput* firstVertex = nullptr, * firstPatch = nullptr; - for (const SPIRVShaderOutput& output : tcOutputs) { - if (output.builtin == spv::BuiltInPointSize && !reflectData.pointMode) { continue; } - if ((output.builtin != spv::BuiltInMax && !isBuiltInRead(output.builtin)) && - !shaderConfig.isShaderInputLocationUsed(output.location)) { - if (output.perPatch && !(output.builtin == spv::BuiltInTessLevelOuter || output.builtin == spv::BuiltInTessLevelInner) ) { - if (!firstPatch) { firstPatch = &output; } - patchOffset += getShaderOutputSize(output); - } else if (!output.perPatch) { - if (!firstVertex) { firstVertex = &output; } - offset += getShaderOutputSize(output); - } - continue; - } - if (output.perPatch && (output.builtin == spv::BuiltInTessLevelOuter || output.builtin == spv::BuiltInTessLevelInner) ) { - uint32_t location = output.location; - if (output.builtin == spv::BuiltInTessLevelOuter) { - if (outerLoc != (uint32_t)(-1)) { continue; } - if (innerLoc != (uint32_t)(-1)) { - // For triangle tessellation, we use a single attribute. Don't add it more than once. - if (reflectData.patchKind == spv::ExecutionModeTriangles) { continue; } - // getShaderOutputs() assigned individual elements their own locations. Try to reduce the gap. - location = innerLoc + 1; - } - outerLoc = location; - } else { - if (innerLoc != (uint32_t)(-1)) { continue; } - if (outerLoc != (uint32_t)(-1)) { - if (reflectData.patchKind == spv::ExecutionModeTriangles) { continue; } - location = outerLoc + 1; - } - innerLoc = location; - } - plDesc.vertexDescriptor.attributes[location].bufferIndex = getMetalBufferIndexForVertexAttributeBinding(kMVKTessEvalLevelBufferBinding); - if (reflectData.patchKind == spv::ExecutionModeTriangles || output.builtin == spv::BuiltInTessLevelOuter) { - plDesc.vertexDescriptor.attributes[location].offset = 0; - plDesc.vertexDescriptor.attributes[location].format = MTLVertexFormatHalf4; // FIXME Should use Float4 - } else { - plDesc.vertexDescriptor.attributes[location].offset = 8; - plDesc.vertexDescriptor.attributes[location].format = MTLVertexFormatHalf2; // FIXME Should use Float2 - } - } else if (output.perPatch) { - patchOffset = (uint32_t)mvkAlignByteCount(patchOffset, getShaderOutputAlignment(output)); - plDesc.vertexDescriptor.attributes[output.location].bufferIndex = getMetalBufferIndexForVertexAttributeBinding(kMVKTessEvalPatchInputBufferBinding); - plDesc.vertexDescriptor.attributes[output.location].format = getPixelFormats()->getMTLVertexFormat(mvkFormatFromOutput(output)); - plDesc.vertexDescriptor.attributes[output.location].offset = patchOffset; - patchOffset += getShaderOutputSize(output); - if (!firstPatch) { firstPatch = &output; } - usedPerPatch = true; - } else { - offset = (uint32_t)mvkAlignByteCount(offset, getShaderOutputAlignment(output)); - plDesc.vertexDescriptor.attributes[output.location].bufferIndex = getMetalBufferIndexForVertexAttributeBinding(kMVKTessEvalInputBufferBinding); - plDesc.vertexDescriptor.attributes[output.location].format = getPixelFormats()->getMTLVertexFormat(mvkFormatFromOutput(output)); - plDesc.vertexDescriptor.attributes[output.location].offset = offset; - offset += getShaderOutputSize(output); - if (!firstVertex) { firstVertex = &output; } - usedPerVertex = true; - } - } - if (usedPerVertex) { - uint32_t mtlVBIdx = getMetalBufferIndexForVertexAttributeBinding(kMVKTessEvalInputBufferBinding); - plDesc.vertexDescriptor.layouts[mtlVBIdx].stepFunction = MTLVertexStepFunctionPerPatchControlPoint; - plDesc.vertexDescriptor.layouts[mtlVBIdx].stride = mvkAlignByteCount(offset, getShaderOutputAlignment(*firstVertex)); - } - if (usedPerPatch) { - uint32_t mtlVBIdx = getMetalBufferIndexForVertexAttributeBinding(kMVKTessEvalPatchInputBufferBinding); - plDesc.vertexDescriptor.layouts[mtlVBIdx].stepFunction = MTLVertexStepFunctionPerPatch; - plDesc.vertexDescriptor.layouts[mtlVBIdx].stride = mvkAlignByteCount(patchOffset, getShaderOutputAlignment(*firstPatch)); - } - if (outerLoc != (uint32_t)(-1) || innerLoc != (uint32_t)(-1)) { - uint32_t mtlVBIdx = getMetalBufferIndexForVertexAttributeBinding(kMVKTessEvalLevelBufferBinding); - plDesc.vertexDescriptor.layouts[mtlVBIdx].stepFunction = MTLVertexStepFunctionPerPatch; - plDesc.vertexDescriptor.layouts[mtlVBIdx].stride = - reflectData.patchKind == spv::ExecutionModeTriangles ? sizeof(MTLTriangleTessellationFactorsHalf) : - sizeof(MTLQuadTessellationFactorsHalf); - } - // Fragment shader - only add if rasterization is enabled if (!addFragmentShaderToPipeline(plDesc, pCreateInfo, shaderConfig, teOutputs)) { [plDesc release]; @@ -1066,13 +963,10 @@ static MTLVertexFormat mvkAdjustFormatVectorToSize(MTLVertexFormat format, uint3 shaderConfig.options.mslOptions.disable_rasterization = !_isRasterizing; addVertexInputToShaderConversionConfig(shaderConfig, pCreateInfo); - MVKMTLFunction func = ((MVKShaderModule*)_pVertexSS->module)->getMTLFunction(&shaderConfig, _pVertexSS->pSpecializationInfo, _pipelineCache); + MVKMTLFunction func = getMTLFunction(shaderConfig, _pVertexSS, "Vertex"); id mtlFunc = func.getMTLFunction(); - if ( !mtlFunc ) { - setConfigurationResult(reportError(VK_ERROR_INVALID_SHADER_NV, "Vertex shader function could not be compiled into pipeline. See previous logged error.")); - return false; - } plDesc.vertexFunction = mtlFunc; + if ( !mtlFunc ) { return false; } auto& funcRslts = func.shaderConversionResults; plDesc.rasterizationEnabled = !funcRslts.isRasterizationDisabled; @@ -1229,22 +1123,19 @@ static MTLVertexFormat mvkAdjustFormatVectorToSize(MTLVertexFormat format, uint3 addVertexInputToShaderConversionConfig(shaderConfig, pCreateInfo); addNextStageInputToShaderConversionConfig(shaderConfig, tcInputs); + // We need to compile this function three times, with no indexing, 16-bit indices, and 32-bit indices. static const CompilerMSL::Options::IndexType indexTypes[] = { CompilerMSL::Options::IndexType::None, CompilerMSL::Options::IndexType::UInt16, CompilerMSL::Options::IndexType::UInt32, }; - // We need to compile this function three times, with no indexing, 16-bit indices, and 32-bit indices. MVKMTLFunction func; for (uint32_t i = 0; i < sizeof(indexTypes)/sizeof(indexTypes[0]); i++) { shaderConfig.options.mslOptions.vertex_index_type = indexTypes[i]; - func = ((MVKShaderModule*)_pVertexSS->module)->getMTLFunction(&shaderConfig, _pVertexSS->pSpecializationInfo, _pipelineCache); + func = getMTLFunction(shaderConfig, _pVertexSS, "Vertex"); id mtlFunc = func.getMTLFunction(); - if ( !mtlFunc ) { - setConfigurationResult(reportError(VK_ERROR_INVALID_SHADER_NV, "Vertex shader function could not be compiled into pipeline. See previous logged error.")); - return false; - } _mtlTessVertexFunctions[i] = [mtlFunc retain]; + if ( !mtlFunc ) { return false; } auto& funcRslts = func.shaderConversionResults; _needsVertexSwizzleBuffer = funcRslts.needsSwizzleBuffer; @@ -1298,13 +1189,10 @@ static MTLVertexFormat mvkAdjustFormatVectorToSize(MTLVertexFormat format, uint3 addPrevStageOutputToShaderConversionConfig(shaderConfig, vtxOutputs); addNextStageInputToShaderConversionConfig(shaderConfig, teInputs); - MVKMTLFunction func = ((MVKShaderModule*)_pTessCtlSS->module)->getMTLFunction(&shaderConfig, _pTessCtlSS->pSpecializationInfo, _pipelineCache); + MVKMTLFunction func = getMTLFunction(shaderConfig, _pTessCtlSS, "Tessellation control"); id mtlFunc = func.getMTLFunction(); - if ( !mtlFunc ) { - setConfigurationResult(reportError(VK_ERROR_INVALID_SHADER_NV, "Tessellation control shader function could not be compiled into pipeline. See previous logged error.")); - return false; - } plDesc.computeFunction = mtlFunc; + if ( !mtlFunc ) { return false; } auto& funcRslts = func.shaderConversionResults; _needsTessCtlSwizzleBuffer = funcRslts.needsSwizzleBuffer; @@ -1349,20 +1237,20 @@ static MTLVertexFormat mvkAdjustFormatVectorToSize(MTLVertexFormat format, uint3 shaderConfig.options.entryPointStage = spv::ExecutionModelTessellationEvaluation; shaderConfig.options.entryPointName = _pTessEvalSS->pName; shaderConfig.options.mslOptions.swizzle_buffer_index = _swizzleBufferIndex.stages[kMVKShaderStageTessEval]; + shaderConfig.options.mslOptions.shader_input_buffer_index = getMetalBufferIndexForVertexAttributeBinding(kMVKTessEvalInputBufferBinding); + shaderConfig.options.mslOptions.shader_patch_input_buffer_index = getMetalBufferIndexForVertexAttributeBinding(kMVKTessEvalPatchInputBufferBinding); + shaderConfig.options.mslOptions.shader_tess_factor_buffer_index = getMetalBufferIndexForVertexAttributeBinding(kMVKTessEvalLevelBufferBinding); shaderConfig.options.mslOptions.buffer_size_buffer_index = _bufferSizeBufferIndex.stages[kMVKShaderStageTessEval]; shaderConfig.options.mslOptions.dynamic_offsets_buffer_index = _dynamicOffsetBufferIndex.stages[kMVKShaderStageTessEval]; shaderConfig.options.mslOptions.capture_output_to_buffer = false; + shaderConfig.options.mslOptions.raw_buffer_tese_input = true; shaderConfig.options.mslOptions.disable_rasterization = !_isRasterizing; addPrevStageOutputToShaderConversionConfig(shaderConfig, tcOutputs); - MVKMTLFunction func = ((MVKShaderModule*)_pTessEvalSS->module)->getMTLFunction(&shaderConfig, _pTessEvalSS->pSpecializationInfo, _pipelineCache); + MVKMTLFunction func = getMTLFunction(shaderConfig, _pTessEvalSS, "Tessellation evaluation"); id mtlFunc = func.getMTLFunction(); - if ( !mtlFunc ) { - setConfigurationResult(reportError(VK_ERROR_INVALID_SHADER_NV, "Tessellation evaluation shader function could not be compiled into pipeline. See previous logged error.")); - return false; - } - // Yeah, you read that right. Tess. eval functions are a kind of vertex function in Metal. - plDesc.vertexFunction = mtlFunc; + plDesc.vertexFunction = mtlFunc; // Yeah, you read that right. Tess. eval functions are a kind of vertex function in Metal. + if ( !mtlFunc ) { return false; } auto& funcRslts = func.shaderConversionResults; plDesc.rasterizationEnabled = !funcRslts.isRasterizationDisabled; @@ -1404,6 +1292,10 @@ static MTLVertexFormat mvkAdjustFormatVectorToSize(MTLVertexFormat format, uint3 shaderConfig.options.mslOptions.fixed_subgroup_size = mvkIsAnyFlagEnabled(_pFragmentSS->flags, VK_PIPELINE_SHADER_STAGE_CREATE_ALLOW_VARYING_SUBGROUP_SIZE_BIT_EXT) ? 0 : _device->_pMetalFeatures->maxSubgroupSize; shaderConfig.options.mslOptions.for_mesh = false; shaderConfig.options.mslOptions.wrap_in_mesh = false; + shaderConfig.options.mslOptions.check_discarded_frag_stores = true; + if (_device->_pMetalFeatures->needsSampleDrefLodArrayWorkaround) { + shaderConfig.options.mslOptions.sample_dref_lod_array_as_grad = true; + } if (_isRasterizing && pCreateInfo->pMultisampleState) { // Must ignore allowed bad pMultisampleState pointer if rasterization disabled if (pCreateInfo->pMultisampleState->pSampleMask && pCreateInfo->pMultisampleState->pSampleMask[0] != 0xffffffff) { shaderConfig.options.mslOptions.additional_fixed_sample_mask = pCreateInfo->pMultisampleState->pSampleMask[0]; @@ -1415,13 +1307,10 @@ static MTLVertexFormat mvkAdjustFormatVectorToSize(MTLVertexFormat format, uint3 } addPrevStageOutputToShaderConversionConfig(shaderConfig, shaderOutputs); - MVKMTLFunction func = ((MVKShaderModule*)_pFragmentSS->module)->getMTLFunction(&shaderConfig, _pFragmentSS->pSpecializationInfo, _pipelineCache); + MVKMTLFunction func = getMTLFunction(shaderConfig, _pFragmentSS, "Fragment"); id mtlFunc = func.getMTLFunction(); - if ( !mtlFunc ) { - setConfigurationResult(reportError(VK_ERROR_INVALID_SHADER_NV, "Fragment shader function could not be compiled into pipeline. See previous logged error.")); - return false; - } plDesc.fragmentFunction = mtlFunc; + if ( !mtlFunc ) { return false; } auto& funcRslts = func.shaderConversionResults; _needsFragmentSwizzleBuffer = funcRslts.needsSwizzleBuffer; @@ -1498,8 +1387,8 @@ static MTLVertexFormat mvkAdjustFormatVectorToSize(MTLVertexFormat format, uint3 // Vertex buffer divisors (step rates) std::unordered_set zeroDivisorBindings; if (pVertexInputDivisorState) { - vbCnt = pVertexInputDivisorState->vertexBindingDivisorCount; - for (uint32_t i = 0; i < vbCnt; i++) { + uint32_t vbdCnt = pVertexInputDivisorState->vertexBindingDivisorCount; + for (uint32_t i = 0; i < vbdCnt; i++) { const VkVertexInputBindingDivisorDescriptionEXT* pVKVB = &pVertexInputDivisorState->pVertexBindingDivisors[i]; if (shaderConfig.isVertexBufferUsed(pVKVB->binding)) { uint32_t vbIdx = getMetalBufferIndexForVertexAttributeBinding(pVKVB->binding); @@ -1957,6 +1846,7 @@ static MTLVertexFormat mvkAdjustFormatVectorToSize(MTLVertexFormat format, uint3 so.shaderVar.component = shaderInputs[soIdx].component; so.shaderVar.builtin = shaderInputs[soIdx].builtin; so.shaderVar.vecsize = shaderInputs[soIdx].vecWidth; + so.shaderVar.rate = shaderInputs[soIdx].perPatch ? MSL_SHADER_VARIABLE_RATE_PER_PATCH : MSL_SHADER_VARIABLE_RATE_PER_VERTEX; switch (getPixelFormats()->getFormatType(mvkFormatFromOutput(shaderInputs[soIdx]) ) ) { case kMVKFormatColorUInt8: @@ -2000,6 +1890,7 @@ static MTLVertexFormat mvkAdjustFormatVectorToSize(MTLVertexFormat format, uint3 si.shaderVar.component = shaderOutputs[siIdx].component; si.shaderVar.builtin = shaderOutputs[siIdx].builtin; si.shaderVar.vecsize = shaderOutputs[siIdx].vecWidth; + si.shaderVar.rate = shaderOutputs[siIdx].perPatch ? MSL_SHADER_VARIABLE_RATE_PER_PATCH : MSL_SHADER_VARIABLE_RATE_PER_VERTEX; switch (getPixelFormats()->getFormatType(mvkFormatFromOutput(shaderOutputs[siIdx]) ) ) { case kMVKFormatColorUInt8: @@ -2043,6 +1934,23 @@ static MTLVertexFormat mvkAdjustFormatVectorToSize(MTLVertexFormat format, uint3 (mvkMTLPrimitiveTopologyClassFromVkPrimitiveTopology(pCreateInfo->pInputAssemblyState->topology) == MTLPrimitiveTopologyClassTriangle)))); } +MVKMTLFunction MVKGraphicsPipeline::getMTLFunction(SPIRVToMSLConversionConfiguration& shaderConfig, + const VkPipelineShaderStageCreateInfo* pShaderStage, + const char* pStageName) { + MVKShaderModule* shaderModule = (MVKShaderModule*)pShaderStage->module; + MVKMTLFunction func = shaderModule->getMTLFunction(&shaderConfig, + pShaderStage->pSpecializationInfo, + this); + if ( !func.getMTLFunction() ) { + if (shouldFailOnPipelineCompileRequired()) { + setConfigurationResult(VK_PIPELINE_COMPILE_REQUIRED); + } else { + setConfigurationResult(reportError(VK_ERROR_INVALID_SHADER_NV, "%s shader function could not be compiled into pipeline. See previous logged error.", pStageName)); + } + } + return func; +} + MVKGraphicsPipeline::~MVKGraphicsPipeline() { @synchronized (getMTLDevice()) { [_mtlTessVertexStageDesc release]; @@ -2066,6 +1974,8 @@ static MTLVertexFormat mvkAdjustFormatVectorToSize(MTLVertexFormat format, uint3 [cmdEncoder->getMTLComputeEncoder(kMVKCommandUseDispatch) setComputePipelineState: _mtlPipelineState]; cmdEncoder->_mtlThreadgroupSize = _mtlThreadgroupSize; + + cmdEncoder->_computeResourcesState.markOverriddenBufferIndexesDirty(); cmdEncoder->_computeResourcesState.bindSwizzleBuffer(_swizzleBufferIndex, _needsSwizzleBuffer); cmdEncoder->_computeResourcesState.bindBufferSizeBuffer(_bufferSizeBufferIndex, _needsBufferSizeBuffer); cmdEncoder->_computeResourcesState.bindDynamicOffsetBuffer(_dynamicOffsetBufferIndex, _needsDynamicOffsetBuffer); @@ -2075,7 +1985,7 @@ static MTLVertexFormat mvkAdjustFormatVectorToSize(MTLVertexFormat format, uint3 MVKPipelineCache* pipelineCache, MVKPipeline* parent, const VkComputePipelineCreateInfo* pCreateInfo) : - MVKPipeline(device, pipelineCache, (MVKPipelineLayout*)pCreateInfo->layout, parent) { + MVKPipeline(device, pipelineCache, (MVKPipelineLayout*)pCreateInfo->layout, pCreateInfo->flags, parent) { _allowsDispatchBase = mvkAreAllFlagsEnabled(pCreateInfo->flags, VK_PIPELINE_CREATE_DISPATCH_BASE_BIT); @@ -2108,7 +2018,7 @@ static MTLVertexFormat mvkAdjustFormatVectorToSize(MTLVertexFormat format, uint3 if ( !_mtlPipelineState ) { _hasValidMTLPipelineStates = false; } } else { - setConfigurationResult(reportError(VK_ERROR_INVALID_SHADER_NV, "Compute shader function could not be compiled into pipeline. See previous logged error.")); + _hasValidMTLPipelineStates = false; } if (_needsSwizzleBuffer && _swizzleBufferIndex.stages[kMVKShaderStageCompute] > _device->_pMetalFeatures->maxPerStageBufferCount) { @@ -2176,8 +2086,14 @@ static MTLVertexFormat mvkAdjustFormatVectorToSize(MTLVertexFormat format, uint3 shaderConfig.options.mslOptions.dynamic_offsets_buffer_index = _dynamicOffsetBufferIndex.stages[kMVKShaderStageCompute]; shaderConfig.options.mslOptions.indirect_params_buffer_index = _indirectParamsIndex.stages[kMVKShaderStageCompute]; - MVKMTLFunction func = ((MVKShaderModule*)pSS->module)->getMTLFunction(&shaderConfig, pSS->pSpecializationInfo, _pipelineCache); - + MVKMTLFunction func = ((MVKShaderModule*)pSS->module)->getMTLFunction(&shaderConfig, pSS->pSpecializationInfo, this); + if ( !func.getMTLFunction() ) { + if (shouldFailOnPipelineCompileRequired()) { + setConfigurationResult(VK_PIPELINE_COMPILE_REQUIRED); + } else { + setConfigurationResult(reportError(VK_ERROR_INVALID_SHADER_NV, "Compute shader function could not be compiled into pipeline. See previous logged error.")); + } + } auto& funcRslts = func.shaderConversionResults; _needsSwizzleBuffer = funcRslts.needsSwizzleBuffer; _needsBufferSizeBuffer = funcRslts.needsBufferSizeBuffer; @@ -2204,12 +2120,25 @@ static MTLVertexFormat mvkAdjustFormatVectorToSize(MTLVertexFormat format, uint3 #pragma mark MVKPipelineCache // Return a shader library from the specified shader conversion configuration sourced from the specified shader module. -MVKShaderLibrary* MVKPipelineCache::getShaderLibrary(SPIRVToMSLConversionConfiguration* pContext, MVKShaderModule* shaderModule) { - lock_guard lock(_shaderCacheLock); +MVKShaderLibrary* MVKPipelineCache::getShaderLibrary(SPIRVToMSLConversionConfiguration* pContext, + MVKShaderModule* shaderModule, + MVKPipeline* pipeline, + uint64_t startTime) { + if (_isExternallySynchronized) { + return getShaderLibraryImpl(pContext, shaderModule, pipeline, startTime); + } else { + lock_guard lock(_shaderCacheLock); + return getShaderLibraryImpl(pContext, shaderModule, pipeline, startTime); + } +} +MVKShaderLibrary* MVKPipelineCache::getShaderLibraryImpl(SPIRVToMSLConversionConfiguration* pContext, + MVKShaderModule* shaderModule, + MVKPipeline* pipeline, + uint64_t startTime) { bool wasAdded = false; MVKShaderLibraryCache* slCache = getShaderLibraryCache(shaderModule->getKey()); - MVKShaderLibrary* shLib = slCache->getShaderLibrary(pContext, shaderModule, &wasAdded); + MVKShaderLibrary* shLib = slCache->getShaderLibrary(pContext, shaderModule, pipeline, &wasAdded, startTime); if (wasAdded) { markDirty(); } return shLib; } @@ -2249,8 +2178,8 @@ static MTLVertexFormat mvkAdjustFormatVectorToSize(MTLVertexFormat format, uint3 bool next() { return (++_index < (_pSLCache ? _pSLCache->_shaderLibraries.size() : 0)); } SPIRVToMSLConversionConfiguration& getShaderConversionConfig() { return _pSLCache->_shaderLibraries[_index].first; } - std::string& getMSL() { return _pSLCache->_shaderLibraries[_index].second->_msl; } - SPIRVToMSLConversionResults& getShaderConversionResults() { return _pSLCache->_shaderLibraries[_index].second->_shaderConversionResults; } + MVKCompressor& getCompressedMSL() { return _pSLCache->_shaderLibraries[_index].second->getCompressedMSL(); } + SPIRVToMSLConversionResultInfo& getShaderConversionResultInfo() { return _pSLCache->_shaderLibraries[_index].second->_shaderConversionResultInfo; } MVKShaderCacheIterator(MVKShaderLibraryCache* pSLCache) : _pSLCache(pSLCache) {} MVKShaderLibraryCache* _pSLCache; @@ -2258,14 +2187,21 @@ static MTLVertexFormat mvkAdjustFormatVectorToSize(MTLVertexFormat format, uint3 int32_t _index = -1; }; +VkResult MVKPipelineCache::writeData(size_t* pDataSize, void* pData) { + if (_isExternallySynchronized) { + return writeDataImpl(pDataSize, pData); + } else { + lock_guard lock(_shaderCacheLock); + return writeDataImpl(pDataSize, pData); + } +} + // If pData is not null, serializes at most pDataSize bytes of the contents of the cache into that // memory location, and returns the number of bytes serialized in pDataSize. If pData is null, // returns the number of bytes required to serialize the contents of this pipeline cache. // This is the compliment of the readData() function. The two must be kept aligned. -VkResult MVKPipelineCache::writeData(size_t* pDataSize, void* pData) { +VkResult MVKPipelineCache::writeDataImpl(size_t* pDataSize, void* pData) { #if MVK_USE_CEREAL - lock_guard lock(_shaderCacheLock); - try { if ( !pDataSize ) { return VK_SUCCESS; } @@ -2331,8 +2267,8 @@ static MTLVertexFormat mvkAdjustFormatVectorToSize(MTLVertexFormat format, uint3 writer(cacheEntryType); writer(smKey); writer(cacheIter.getShaderConversionConfig()); - writer(cacheIter.getShaderConversionResults()); - writer(cacheIter.getMSL()); + writer(cacheIter.getShaderConversionResultInfo()); + writer(cacheIter.getCompressedMSL()); _device->addActivityPerformance(activityTracker, startTime); } } @@ -2394,16 +2330,16 @@ static MTLVertexFormat mvkAdjustFormatVectorToSize(MTLVertexFormat format, uint3 SPIRVToMSLConversionConfiguration shaderConversionConfig; reader(shaderConversionConfig); - SPIRVToMSLConversionResults shaderConversionResults; - reader(shaderConversionResults); + SPIRVToMSLConversionResultInfo resultInfo; + reader(resultInfo); - string msl; - reader(msl); + MVKCompressor compressedMSL; + reader(compressedMSL); // Add the shader library to the staging cache. MVKShaderLibraryCache* slCache = getShaderLibraryCache(smKey); _device->addActivityPerformance(_device->_performanceStatistics.pipelineCache.readPipelineCache, startTime); - slCache->addShaderLibrary(&shaderConversionConfig, msl, shaderConversionResults); + slCache->addShaderLibrary(&shaderConversionConfig, resultInfo, compressedMSL); break; } @@ -2429,6 +2365,15 @@ static MTLVertexFormat mvkAdjustFormatVectorToSize(MTLVertexFormat format, uint3 } VkResult MVKPipelineCache::mergePipelineCaches(uint32_t srcCacheCount, const VkPipelineCache* pSrcCaches) { + if (_isExternallySynchronized) { + return mergePipelineCachesImpl(srcCacheCount, pSrcCaches); + } else { + lock_guard lock(_shaderCacheLock); + return mergePipelineCachesImpl(srcCacheCount, pSrcCaches); + } +} + +VkResult MVKPipelineCache::mergePipelineCachesImpl(uint32_t srcCacheCount, const VkPipelineCache* pSrcCaches) { for (uint32_t srcIdx = 0; srcIdx < srcCacheCount; srcIdx++) { MVKPipelineCache* srcPLC = (MVKPipelineCache*)pSrcCaches[srcIdx]; for (auto& srcPair : srcPLC->_shaderCache) { @@ -2461,6 +2406,7 @@ void serialize(Archive & archive, CompilerMSL::Options& opt) { opt.dynamic_offsets_buffer_index, opt.shader_input_buffer_index, opt.shader_index_buffer_index, + opt.shader_patch_input_buffer_index, opt.shader_input_wg_index, opt.device_index, opt.enable_frag_output_mask, @@ -2492,12 +2438,16 @@ void serialize(Archive & archive, CompilerMSL::Options& opt) { opt.force_native_arrays, opt.enable_clip_distance_user_varying, opt.multi_patch_workgroup, + opt.raw_buffer_tese_input, opt.vertex_for_tessellation, opt.arrayed_subpass_input, opt.ios_use_simdgroup_functions, opt.emulate_subgroups, opt.vertex_index_type, - opt.force_sample_rate_shading); + opt.force_sample_rate_shading, + opt.manual_helper_invocation_updates, + opt.check_discarded_frag_stores, + opt.sample_dref_lod_array_as_grad); } template @@ -2506,7 +2456,8 @@ void serialize(Archive & archive, MSLShaderInterfaceVariable& si) { si.component, si.format, si.builtin, - si.vecsize); + si.vecsize, + si.rate); } template @@ -2613,7 +2564,7 @@ void serialize(Archive & archive, SPIRVToMSLConversionConfiguration& ctx) { } template - void serialize(Archive & archive, SPIRVToMSLConversionResults& scr) { + void serialize(Archive & archive, SPIRVToMSLConversionResultInfo& scr) { archive(scr.entryPoint, scr.isRasterizationDisabled, scr.isPositionInvariant, @@ -2635,10 +2586,21 @@ void serialize(Archive & archive, MVKShaderModuleKey& k) { k.codeHash); } +template +void serialize(Archive & archive, MVKCompressor& comp) { + archive(comp._compressed, + comp._uncompressedSize, + comp._algorithm); +} + #pragma mark Construction -MVKPipelineCache::MVKPipelineCache(MVKDevice* device, const VkPipelineCacheCreateInfo* pCreateInfo) : MVKVulkanAPIDeviceObject(device) { +MVKPipelineCache::MVKPipelineCache(MVKDevice* device, const VkPipelineCacheCreateInfo* pCreateInfo) : + MVKVulkanAPIDeviceObject(device), + _isExternallySynchronized(device->_enabledPipelineCreationCacheControlFeatures.pipelineCreationCacheControl && + mvkIsAnyFlagEnabled(pCreateInfo->flags, VK_PIPELINE_CACHE_CREATE_EXTERNALLY_SYNCHRONIZED_BIT)) { + readData(pCreateInfo); } diff --git a/MoltenVK/MoltenVK/GPUObjects/MVKPixelFormats.h b/MoltenVK/MoltenVK/GPUObjects/MVKPixelFormats.h index 9737b009f..37bbf10e6 100644 --- a/MoltenVK/MoltenVK/GPUObjects/MVKPixelFormats.h +++ b/MoltenVK/MoltenVK/GPUObjects/MVKPixelFormats.h @@ -1,7 +1,7 @@ /* * MVKPixelFormats.h * - * Copyright (c) 2015-2022 The Brenwill Workshop Ltd. (http://www.brenwill.com) + * Copyright (c) 2015-2023 The Brenwill Workshop Ltd. (http://www.brenwill.com) * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. @@ -154,7 +154,7 @@ typedef struct MVKVkFormatDesc { inline double bytesPerTexel() const { return (double)bytesPerBlock / (double)(blockTexelSize.width * blockTexelSize.height); }; - inline bool isSupported() const { return (mtlPixelFormat != MTLPixelFormatInvalid || chromaSubsamplingPlaneCount > 0); }; + inline bool isSupported() const { return (mtlPixelFormat != MTLPixelFormatInvalid || chromaSubsamplingPlaneCount > 1); }; inline bool isSupportedOrSubstitutable() const { return isSupported() || (mtlPixelFormatSubstitute != MTLPixelFormatInvalid); }; inline bool vertexIsSupported() const { return (mtlVertexFormat != MTLVertexFormatInvalid); }; diff --git a/MoltenVK/MoltenVK/GPUObjects/MVKPixelFormats.mm b/MoltenVK/MoltenVK/GPUObjects/MVKPixelFormats.mm index 688d82495..39a2ad8f0 100644 --- a/MoltenVK/MoltenVK/GPUObjects/MVKPixelFormats.mm +++ b/MoltenVK/MoltenVK/GPUObjects/MVKPixelFormats.mm @@ -1,7 +1,7 @@ /* * MVKPixelFormats.mm * - * Copyright (c) 2015-2022 The Brenwill Workshop Ltd. (http://www.brenwill.com) + * Copyright (c) 2015-2023 The Brenwill Workshop Ltd. (http://www.brenwill.com) * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. @@ -23,27 +23,43 @@ using namespace std; +// Some Metal formats are not supported by the headers on certain platforms. However, formats have +// been 'unlocked' on some platforms with newer versions of Xcode. // Add stub defs for unsupported MTLPixelFormats per platform #if MVK_MACOS -# if !MVK_MACOS_APPLE_SILICON +# if !MVK_XCODE_12 // macOS 11.0 / iOS 14.2 +# define MTLPixelFormatR8Unorm_sRGB MTLPixelFormatInvalid +# define MTLPixelFormatRG8Unorm_sRGB MTLPixelFormatInvalid # define MTLPixelFormatABGR4Unorm MTLPixelFormatInvalid # define MTLPixelFormatB5G6R5Unorm MTLPixelFormatInvalid # define MTLPixelFormatA1BGR5Unorm MTLPixelFormatInvalid # define MTLPixelFormatBGR5A1Unorm MTLPixelFormatInvalid -# define MTLPixelFormatR8Unorm_sRGB MTLPixelFormatInvalid -# define MTLPixelFormatRG8Unorm_sRGB MTLPixelFormatInvalid -# define MTLPixelFormatETC2_RGB8 MTLPixelFormatInvalid -# define MTLPixelFormatETC2_RGB8_sRGB MTLPixelFormatInvalid -# define MTLPixelFormatETC2_RGB8A1 MTLPixelFormatInvalid -# define MTLPixelFormatETC2_RGB8A1_sRGB MTLPixelFormatInvalid +# define MTLPixelFormatBGR10_XR MTLPixelFormatInvalid +# define MTLPixelFormatBGR10_XR_sRGB MTLPixelFormatInvalid +# define MTLPixelFormatBGRA10_XR MTLPixelFormatInvalid +# define MTLPixelFormatBGRA10_XR_sRGB MTLPixelFormatInvalid + +# define MTLPixelFormatPVRTC_RGB_2BPP MTLPixelFormatInvalid +# define MTLPixelFormatPVRTC_RGB_2BPP_sRGB MTLPixelFormatInvalid +# define MTLPixelFormatPVRTC_RGB_4BPP MTLPixelFormatInvalid +# define MTLPixelFormatPVRTC_RGB_4BPP_sRGB MTLPixelFormatInvalid +# define MTLPixelFormatPVRTC_RGBA_2BPP MTLPixelFormatInvalid +# define MTLPixelFormatPVRTC_RGBA_2BPP_sRGB MTLPixelFormatInvalid +# define MTLPixelFormatPVRTC_RGBA_4BPP MTLPixelFormatInvalid +# define MTLPixelFormatPVRTC_RGBA_4BPP_sRGB MTLPixelFormatInvalid + # define MTLPixelFormatEAC_RGBA8 MTLPixelFormatInvalid # define MTLPixelFormatEAC_RGBA8_sRGB MTLPixelFormatInvalid # define MTLPixelFormatEAC_R11Unorm MTLPixelFormatInvalid # define MTLPixelFormatEAC_R11Snorm MTLPixelFormatInvalid # define MTLPixelFormatEAC_RG11Unorm MTLPixelFormatInvalid # define MTLPixelFormatEAC_RG11Snorm MTLPixelFormatInvalid +# define MTLPixelFormatETC2_RGB8 MTLPixelFormatInvalid +# define MTLPixelFormatETC2_RGB8_sRGB MTLPixelFormatInvalid +# define MTLPixelFormatETC2_RGB8A1 MTLPixelFormatInvalid +# define MTLPixelFormatETC2_RGB8A1_sRGB MTLPixelFormatInvalid # define MTLPixelFormatASTC_4x4_HDR MTLPixelFormatInvalid # define MTLPixelFormatASTC_4x4_LDR MTLPixelFormatInvalid @@ -87,20 +103,6 @@ # define MTLPixelFormatASTC_12x12_HDR MTLPixelFormatInvalid # define MTLPixelFormatASTC_12x12_LDR MTLPixelFormatInvalid # define MTLPixelFormatASTC_12x12_sRGB MTLPixelFormatInvalid - -# define MTLPixelFormatPVRTC_RGB_2BPP MTLPixelFormatInvalid -# define MTLPixelFormatPVRTC_RGB_2BPP_sRGB MTLPixelFormatInvalid -# define MTLPixelFormatPVRTC_RGB_4BPP MTLPixelFormatInvalid -# define MTLPixelFormatPVRTC_RGB_4BPP_sRGB MTLPixelFormatInvalid -# define MTLPixelFormatPVRTC_RGBA_2BPP MTLPixelFormatInvalid -# define MTLPixelFormatPVRTC_RGBA_2BPP_sRGB MTLPixelFormatInvalid -# define MTLPixelFormatPVRTC_RGBA_4BPP MTLPixelFormatInvalid -# define MTLPixelFormatPVRTC_RGBA_4BPP_sRGB MTLPixelFormatInvalid - -# define MTLPixelFormatBGRA10_XR MTLPixelFormatInvalid -# define MTLPixelFormatBGRA10_XR_sRGB MTLPixelFormatInvalid -# define MTLPixelFormatBGR10_XR MTLPixelFormatInvalid -# define MTLPixelFormatBGR10_XR_sRGB MTLPixelFormatInvalid # endif # define MTLPixelFormatDepth16Unorm_Stencil8 MTLPixelFormatDepth24Unorm_Stencil8 @@ -1489,7 +1491,7 @@ addFeatSetMTLPixFmtCaps( macOS_GPUFamily1_v3, BGR10A2Unorm, RFCMRB ); -#if MVK_MACOS_APPLE_SILICON +#if MVK_XCODE_12 if ([mtlDevice respondsToSelector: @selector(supports32BitMSAA)] && !mtlDevice.supports32BitMSAA) { @@ -2051,6 +2053,7 @@ enableFormatFeatures(Read, Tex, mtlPixFmtCaps, vkProps.optimalTilingFeatures); enableFormatFeatures(Filter, Tex, mtlPixFmtCaps, vkProps.optimalTilingFeatures); enableFormatFeatures(Write, Tex, mtlPixFmtCaps, vkProps.optimalTilingFeatures); + enableFormatFeatures(Atomic, Tex, mtlPixFmtCaps, vkProps.optimalTilingFeatures); enableFormatFeatures(ColorAtt, Tex, mtlPixFmtCaps, vkProps.optimalTilingFeatures); enableFormatFeatures(DSAtt, Tex, mtlPixFmtCaps, vkProps.optimalTilingFeatures); enableFormatFeatures(Blend, Tex, mtlPixFmtCaps, vkProps.optimalTilingFeatures); @@ -2084,9 +2087,6 @@ // Start with optimal tiling features, and modify. vkProps.linearTilingFeatures = vkProps.optimalTilingFeatures; - // Linear tiling can support atomic writing for some formats, even though optimal tiling does not. - enableFormatFeatures(Atomic, Tex, mtlPixFmtCaps, vkProps.linearTilingFeatures); - #if !MVK_APPLE_SILICON // On macOS IMR GPUs, linear textures cannot be used as attachments, so disable those features. mvkDisableFlags(vkProps.linearTilingFeatures, (kMVKVkFormatFeatureFlagsTexColorAtt | diff --git a/MoltenVK/MoltenVK/GPUObjects/MVKQueryPool.h b/MoltenVK/MoltenVK/GPUObjects/MVKQueryPool.h index ace41a158..80c3a3572 100644 --- a/MoltenVK/MoltenVK/GPUObjects/MVKQueryPool.h +++ b/MoltenVK/MoltenVK/GPUObjects/MVKQueryPool.h @@ -1,7 +1,7 @@ /* * MVKQueryPool.h * - * Copyright (c) 2015-2022 The Brenwill Workshop Ltd. (http://www.brenwill.com) + * Copyright (c) 2015-2023 The Brenwill Workshop Ltd. (http://www.brenwill.com) * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. diff --git a/MoltenVK/MoltenVK/GPUObjects/MVKQueryPool.mm b/MoltenVK/MoltenVK/GPUObjects/MVKQueryPool.mm index 18f6ae1b1..1f6470063 100644 --- a/MoltenVK/MoltenVK/GPUObjects/MVKQueryPool.mm +++ b/MoltenVK/MoltenVK/GPUObjects/MVKQueryPool.mm @@ -1,7 +1,7 @@ /* * MVKQueryPool.mm * - * Copyright (c) 2015-2022 The Brenwill Workshop Ltd. (http://www.brenwill.com) + * Copyright (c) 2015-2023 The Brenwill Workshop Ltd. (http://www.brenwill.com) * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. @@ -161,6 +161,8 @@ VkDeviceSize stride, VkQueryResultFlags flags) { + if (queryCount == 0) { return; } + // If this asked for 64-bit results with no availability and packed stride, then we can do // a straight copy. Otherwise, we need a shader. if (mvkIsAnyFlagEnabled(flags, VK_QUERY_RESULT_64_BIT) && @@ -183,9 +185,16 @@ _availabilityLock.lock(); cmdEncoder->setComputeBytes(mtlComputeCmdEnc, _availability.data(), _availability.size() * sizeof(Status), 5); _availabilityLock.unlock(); + // Run one thread per query. Try to fill up a subgroup. - [mtlComputeCmdEnc dispatchThreadgroups: MTLSizeMake(max(queryCount / mtlCopyResultsState.threadExecutionWidth, NSUInteger(1)), 1, 1) - threadsPerThreadgroup: MTLSizeMake(min(NSUInteger(queryCount), mtlCopyResultsState.threadExecutionWidth), 1, 1)]; + NSUInteger threadCount = NSUInteger(queryCount); + NSUInteger threadExecutionWidth = mtlCopyResultsState.threadExecutionWidth; + NSUInteger tgWidth = min(threadCount, threadExecutionWidth); + NSUInteger tgCount = threadCount / threadExecutionWidth; + if(threadCount > (tgCount * threadExecutionWidth)) tgCount++; // Round up + + [mtlComputeCmdEnc dispatchThreadgroups: MTLSizeMake(tgCount, 1, 1) + threadsPerThreadgroup: MTLSizeMake(tgWidth, 1, 1)]; } } @@ -281,12 +290,9 @@ } void MVKOcclusionQueryPool::beginQueryAddedTo(uint32_t query, MVKCommandBuffer* cmdBuffer) { + // In multiview passes, one query is used for each view. + NSUInteger queryCount = cmdBuffer->getViewCount(); NSUInteger offset = getVisibilityResultOffset(query); - NSUInteger queryCount = 1; - if (cmdBuffer->getLastMultiviewSubpass()) { - // In multiview passes, one query is used for each view. - queryCount = cmdBuffer->getLastMultiviewSubpass()->getViewCount(); - } NSUInteger maxOffset = getDevice()->_pMetalFeatures->maxQueryBufferSize - kMVKQuerySlotSizeInBytes * queryCount; if (offset > maxOffset) { cmdBuffer->setConfigurationResult(reportError(VK_ERROR_OUT_OF_DEVICE_MEMORY, "vkCmdBeginQuery(): The query offset value %lu is larger than the maximum offset value %lu available on this device.", offset, maxOffset)); diff --git a/MoltenVK/MoltenVK/GPUObjects/MVKQueue.h b/MoltenVK/MoltenVK/GPUObjects/MVKQueue.h index dbda5e679..96d77bc18 100644 --- a/MoltenVK/MoltenVK/GPUObjects/MVKQueue.h +++ b/MoltenVK/MoltenVK/GPUObjects/MVKQueue.h @@ -1,7 +1,7 @@ /* * MVKQueue.h * - * Copyright (c) 2015-2022 The Brenwill Workshop Ltd. (http://www.brenwill.com) + * Copyright (c) 2015-2023 The Brenwill Workshop Ltd. (http://www.brenwill.com) * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. @@ -189,6 +189,8 @@ class MVKQueueSubmission : public MVKBaseObject, public MVKConfigurableMixin { protected: friend class MVKQueue; + virtual void finish() = 0; + MVKQueue* _queue; MVKSmallVector> _waitSemaphores; }; @@ -197,7 +199,10 @@ class MVKQueueSubmission : public MVKBaseObject, public MVKConfigurableMixin { #pragma mark - #pragma mark MVKQueueCommandBufferSubmission -/** Submits the commands in a set of command buffers to the queue. */ +/** + * Submits an empty set of command buffers to the queue. + * Used for fence-only command submissions. + */ class MVKQueueCommandBufferSubmission : public MVKQueueSubmission { public: @@ -213,13 +218,15 @@ class MVKQueueCommandBufferSubmission : public MVKQueueSubmission { id getActiveMTLCommandBuffer(); void setActiveMTLCommandBuffer(id mtlCmdBuff); void commitActiveMTLCommandBuffer(bool signalCompletion = false); - virtual void finish(); + void finish() override; virtual void submitCommandBuffers() {} + MVKCommandEncodingContext _encodingContext; MVKSmallVector> _signalSemaphores; MVKFence* _fence; id _activeMTLCommandBuffer; MVKCommandUse _commandUse; + bool _emulatedWaitDone; //Used to track if we've already waited for emulated semaphores. }; @@ -269,8 +276,8 @@ class MVKQueuePresentSurfaceSubmission : public MVKQueueSubmission { const VkPresentInfoKHR* pPresentInfo); protected: - void stopAutoGPUCapture(); + void finish() override; - MVKSmallVector _presentInfo; + MVKSmallVector _presentInfo; }; diff --git a/MoltenVK/MoltenVK/GPUObjects/MVKQueue.mm b/MoltenVK/MoltenVK/GPUObjects/MVKQueue.mm index 4db74af8a..fc234c010 100644 --- a/MoltenVK/MoltenVK/GPUObjects/MVKQueue.mm +++ b/MoltenVK/MoltenVK/GPUObjects/MVKQueue.mm @@ -1,7 +1,7 @@ /* * MVKQueue.mm * - * Copyright (c) 2015-2022 The Brenwill Workshop Ltd. (http://www.brenwill.com) + * Copyright (c) 2015-2023 The Brenwill Workshop Ltd. (http://www.brenwill.com) * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. @@ -290,11 +290,15 @@ _waitSemaphores.reserve(waitSemaphoreCount); for (uint32_t i = 0; i < waitSemaphoreCount; i++) { - _waitSemaphores.push_back(make_pair((MVKSemaphore*)pWaitSemaphores[i], (uint64_t)0)); + auto* sem4 = (MVKSemaphore*)pWaitSemaphores[i]; + sem4->retain(); + uint64_t sem4Val = 0; + _waitSemaphores.emplace_back(sem4, sem4Val); } } MVKQueueSubmission::~MVKQueueSubmission() { + for (auto s : _waitSemaphores) { s.first->release(); } _queue->release(); } @@ -304,8 +308,6 @@ void MVKQueueCommandBufferSubmission::execute() { -// MVKLogDebug("Executing submission %p.", this); - _queue->_submissionCaptureScope->beginScope(); // If using encoded semaphore waiting, do so now. @@ -359,7 +361,22 @@ void MVKQueueCommandBufferSubmission::commitActiveMTLCommandBuffer(bool signalCompletion) { // If using inline semaphore waiting, do so now. - for (auto& ws : _waitSemaphores) { ws.first->encodeWait(nil, ws.second); } + // When prefilled command buffers are used, multiple commits will happen because native semaphore + // waits need to be committed before the prefilled command buffer is committed. Since semaphores + // will reset their internal signal flag on wait, we need to make sure that we only wait once, otherwise we will freeze. + // Another option to wait on emulated semaphores once is to do it in the execute function, but doing it here + // should be more performant when prefilled command buffers aren't used, because we spend time encoding commands + // first, thus giving the command buffer signalling these semaphores more time to complete. + if ( !_emulatedWaitDone ) { + for (auto& ws : _waitSemaphores) { ws.first->encodeWait(nil, ws.second); } + _emulatedWaitDone = true; + } + + // The visibility result buffer will be returned to its pool when the active MTLCommandBuffer + // finishes executing, and therefore cannot be used beyond the active MTLCommandBuffer. + // By now, it's been submitted to the MTLCommandBuffer, so remove it from the encoding context, + // to ensure a fresh one will be used by commands executing on any subsequent MTLCommandBuffers. + _encodingContext.visibilityResultBuffer = nullptr; // If we need to signal completion, use getActiveMTLCommandBuffer() to ensure at least // one MTLCommandBuffer is used, otherwise if this instance has no content, it will not @@ -438,8 +455,6 @@ // and the app immediately destroys objects. Rare, but it has been encountered. void MVKQueueCommandBufferSubmission::finish() { -// MVKLogDebug("Finishing submission %p. Submission count %u.", this, _subCount--); - // Performed here instead of as part of execute() for rare case where app destroys queue // immediately after a waitIdle() is cleared by fence below, taking the capture scope with it. _queue->_submissionCaptureScope->endScope(); @@ -463,7 +478,8 @@ MVKQueueSubmission(queue, (pSubmit ? pSubmit->waitSemaphoreCount : 0), (pSubmit ? pSubmit->pWaitSemaphores : nullptr)), - _commandUse(cmdUse) { + _commandUse(cmdUse), + _emulatedWaitDone(false) { // pSubmit can be null if just tracking the fence alone if (pSubmit) { @@ -498,9 +514,6 @@ if (_fence) { _fence->retain(); } _activeMTLCommandBuffer = nil; - -// static std::atomic _subCount; -// MVKLogDebug("Creating submission %p. Submission count %u.", this, ++_subCount); } MVKQueueCommandBufferSubmission::~MVKQueueCommandBufferSubmission() { @@ -512,8 +525,7 @@ template void MVKQueueFullCommandBufferSubmission::submitCommandBuffers() { _queue->getPhysicalDevice()->startTimestampCorrelation(_cpuStart, _gpuStart); - MVKCommandEncodingContext encodingContext; - for (auto& cb : _cmdBuffers) { cb->submit(this, &encodingContext); } + for (auto& cb : _cmdBuffers) { cb->submit(this, &_encodingContext); } } template @@ -526,47 +538,61 @@ #pragma mark - #pragma mark MVKQueuePresentSurfaceSubmission +// 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. void MVKQueuePresentSurfaceSubmission::execute() { - // 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 mtlCmdBuff = _queue->getMTLCommandBuffer(kMVKCommandUseQueuePresent); [mtlCmdBuff enqueue]; for (auto& ws : _waitSemaphores) { ws.first->encodeWait(mtlCmdBuff, 0); } + + // Add completion handler that will destroy this submission only once the MTLCommandBuffer + // is finished with the resources retained here, including the wait semaphores. + // Completion handlers are also added in presentCAMetalDrawable() to retain the swapchain images. + [mtlCmdBuff addCompletedHandler: ^(id mcb) { + this->finish(); + }]; + for (int i = 0; i < _presentInfo.size(); i++ ) { - MVKPresentableSwapchainImage *img = _presentInfo[i].presentableImage; - img->presentCAMetalDrawable(mtlCmdBuff, _presentInfo[i]); + _presentInfo[i].presentableImage->presentCAMetalDrawable(mtlCmdBuff, _presentInfo[i]); } + for (auto& ws : _waitSemaphores) { ws.first->encodeWait(nil, 0); } [mtlCmdBuff commit]; +} + +void MVKQueuePresentSurfaceSubmission::finish() { - // 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, + // and if auto GPU capture is active, and it's time to stop it, do so. auto cs = _queue->_submissionCaptureScope; cs->endScope(); cs->beginScope(); - stopAutoGPUCapture(); - - this->destroy(); -} - -void MVKQueuePresentSurfaceSubmission::stopAutoGPUCapture() { if (_queue->_queueFamily->getIndex() == mvkConfig().defaultGPUCaptureScopeQueueFamilyIndex && _queue->_index == mvkConfig().defaultGPUCaptureScopeQueueIndex) { _queue->getDevice()->stopAutoGPUCapture(MVK_CONFIG_AUTO_GPU_CAPTURE_SCOPE_FRAME); } + + this->destroy(); } MVKQueuePresentSurfaceSubmission::MVKQueuePresentSurfaceSubmission(MVKQueue* queue, const VkPresentInfoKHR* pPresentInfo) : MVKQueueSubmission(queue, pPresentInfo->waitSemaphoreCount, pPresentInfo->pWaitSemaphores) { - const VkPresentTimesInfoGOOGLE *pPresentTimesInfoGOOGLE = nullptr; - for ( const auto *next = ( VkBaseInStructure* ) pPresentInfo->pNext; next; next = next->pNext ) - { - switch ( next->sType ) - { + const VkPresentTimesInfoGOOGLE* pPresentTimesInfo = nullptr; + const VkSwapchainPresentFenceInfoEXT* pPresentFenceInfo = nullptr; + const VkSwapchainPresentModeInfoEXT* pPresentModeInfo = nullptr; + for (auto* next = (const VkBaseInStructure*)pPresentInfo->pNext; next; next = next->pNext) { + switch (next->sType) { + case VK_STRUCTURE_TYPE_SWAPCHAIN_PRESENT_FENCE_INFO_EXT: + pPresentFenceInfo = (const VkSwapchainPresentFenceInfoEXT*) next; + break; + case VK_STRUCTURE_TYPE_SWAPCHAIN_PRESENT_MODE_INFO_EXT: + pPresentModeInfo = (const VkSwapchainPresentModeInfoEXT*) next; + break; case VK_STRUCTURE_TYPE_PRESENT_TIMES_INFO_GOOGLE: - pPresentTimesInfoGOOGLE = ( const VkPresentTimesInfoGOOGLE * ) next; + pPresentTimesInfo = (const VkPresentTimesInfoGOOGLE*) next; break; default: break; @@ -575,21 +601,34 @@ // Populate the array of swapchain images, testing each one for status uint32_t scCnt = pPresentInfo->swapchainCount; - const VkPresentTimeGOOGLE *pPresentTimesGOOGLE = nullptr; - if ( pPresentTimesInfoGOOGLE && pPresentTimesInfoGOOGLE->pTimes ) { - pPresentTimesGOOGLE = pPresentTimesInfoGOOGLE->pTimes; - MVKAssert( pPresentTimesInfoGOOGLE->swapchainCount == pPresentInfo->swapchainCount, "VkPresentTimesInfoGOOGLE swapchainCount must match VkPresentInfo swapchainCount" ); + const VkPresentTimeGOOGLE* pPresentTimes = nullptr; + if (pPresentTimesInfo && pPresentTimesInfo->pTimes) { + pPresentTimes = pPresentTimesInfo->pTimes; + MVKAssert(pPresentTimesInfo->swapchainCount == scCnt, "VkPresentTimesInfoGOOGLE swapchainCount must match VkPresentInfo swapchainCount."); + } + const VkPresentModeKHR* pPresentModes = nullptr; + if (pPresentModeInfo) { + pPresentModes = pPresentModeInfo->pPresentModes; + MVKAssert(pPresentModeInfo->swapchainCount == scCnt, "VkSwapchainPresentModeInfoEXT swapchainCount must match VkPresentInfo swapchainCount."); } + const VkFence* pFences = nullptr; + if (pPresentFenceInfo) { + pFences = pPresentFenceInfo->pFences; + MVKAssert(pPresentFenceInfo->swapchainCount == scCnt, "VkSwapchainPresentFenceInfoEXT swapchainCount must match VkPresentInfo swapchainCount."); + } + VkResult* pSCRslts = pPresentInfo->pResults; _presentInfo.reserve(scCnt); for (uint32_t scIdx = 0; scIdx < scCnt; scIdx++) { MVKSwapchain* mvkSC = (MVKSwapchain*)pPresentInfo->pSwapchains[scIdx]; - MVKPresentTimingInfo presentInfo = {}; + MVKImagePresentInfo presentInfo = {}; presentInfo.presentableImage = mvkSC->getPresentableImage(pPresentInfo->pImageIndices[scIdx]); - if ( pPresentTimesGOOGLE ) { + presentInfo.presentMode = pPresentModes ? pPresentModes[scIdx] : VK_PRESENT_MODE_MAX_ENUM_KHR; + presentInfo.fence = pFences ? (MVKFence*)pFences[scIdx] : nullptr; + if (pPresentTimes) { presentInfo.hasPresentTime = true; - presentInfo.presentID = pPresentTimesGOOGLE[scIdx].presentID; - presentInfo.desiredPresentTime = pPresentTimesGOOGLE[scIdx].desiredPresentTime; + presentInfo.presentID = pPresentTimes[scIdx].presentID; + presentInfo.desiredPresentTime = pPresentTimes[scIdx].desiredPresentTime; } else { presentInfo.hasPresentTime = false; } diff --git a/MoltenVK/MoltenVK/GPUObjects/MVKRenderPass.h b/MoltenVK/MoltenVK/GPUObjects/MVKRenderPass.h index d440b2e1a..3b88f5b07 100644 --- a/MoltenVK/MoltenVK/GPUObjects/MVKRenderPass.h +++ b/MoltenVK/MoltenVK/GPUObjects/MVKRenderPass.h @@ -1,7 +1,7 @@ /* * MVKRenderPass.h * - * Copyright (c) 2015-2022 The Brenwill Workshop Ltd. (http://www.brenwill.com) + * Copyright (c) 2015-2023 The Brenwill Workshop Ltd. (http://www.brenwill.com) * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. @@ -84,8 +84,8 @@ class MVKRenderSubpass : public MVKBaseObject { /** Returns whether or not this is a multiview subpass. */ bool isMultiview() const { return _pipelineRenderingCreateInfo.viewMask != 0; } - /** Returns the total number of views to be rendered. */ - uint32_t getViewCount() const { return __builtin_popcount(_pipelineRenderingCreateInfo.viewMask); } + /** Returns the multiview view mask. */ + uint32_t getViewMask() const { return _pipelineRenderingCreateInfo.viewMask; } /** Returns the number of Metal render passes needed to render all views. */ uint32_t getMultiviewMetalPassCount() const; @@ -314,7 +314,7 @@ uint32_t mvkGetAttachments(const VkRenderingInfo* pRenderingInfo, VkClearValue clearValues[]); /** Returns whether the view mask uses multiview. */ -static inline bool mvkIsMultiview(uint32_t viewMask) { return viewMask != 0; } +static constexpr bool mvkIsMultiview(uint32_t viewMask) { return viewMask != 0; } /** Returns whether the attachment is being used. */ bool mvkIsColorAttachmentUsed(const VkPipelineRenderingCreateInfo* pRendInfo, uint32_t colorAttIdx); diff --git a/MoltenVK/MoltenVK/GPUObjects/MVKRenderPass.mm b/MoltenVK/MoltenVK/GPUObjects/MVKRenderPass.mm index 6500c99a7..662bf2bbd 100644 --- a/MoltenVK/MoltenVK/GPUObjects/MVKRenderPass.mm +++ b/MoltenVK/MoltenVK/GPUObjects/MVKRenderPass.mm @@ -1,7 +1,7 @@ /* * MVKRenderPass.mm * - * Copyright (c) 2015-2022 The Brenwill Workshop Ltd. (http://www.brenwill.com) + * Copyright (c) 2015-2023 The Brenwill Workshop Ltd. (http://www.brenwill.com) * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. @@ -668,8 +668,9 @@ bool storeOverride) { // If the renderpass is going to be suspended, and resumed later, store the contents to preserve them until then. - bool isSuspending = mvkIsAnyFlagEnabled(_renderPass->getRenderingFlags(), VK_RENDERING_SUSPENDING_BIT); - if (isSuspending) { return MTLStoreActionStore; } + if (mvkIsAnyFlagEnabled(_renderPass->getRenderingFlags(), VK_RENDERING_SUSPENDING_BIT)) { + return MTLStoreActionStore; + } // If a resolve attachment exists, this attachment must resolve once complete. if (hasResolveAttachment && canResolveFormat && !_renderPass->getDevice()->_pMetalFeatures->combinedStoreResolveAction) { @@ -689,9 +690,12 @@ return mvkMTLStoreActionFromVkAttachmentStoreOp(storeOp, hasResolveAttachment, canResolveFormat); } -// If the subpass is not the first subpass to use this attachment, -// don't clear this attachment, otherwise, clear if requested. bool MVKRenderPassAttachment::shouldClearAttachment(MVKRenderSubpass* subpass, bool isStencil) { + + // If the renderpass is being resumed after being suspended, don't clear this attachment. + if (mvkIsAnyFlagEnabled(_renderPass->getRenderingFlags(), VK_RENDERING_RESUMING_BIT_KHR)) { return false; } + + // If the subpass is not the first subpass to use this attachment, don't clear this attachment. if (subpass->isMultiview()) { if (_firstUseViewMasks[subpass->_subpassIndex] == 0) { return false; } } else { diff --git a/MoltenVK/MoltenVK/GPUObjects/MVKResource.h b/MoltenVK/MoltenVK/GPUObjects/MVKResource.h index 3c3e63f7e..a1c3da6b2 100644 --- a/MoltenVK/MoltenVK/GPUObjects/MVKResource.h +++ b/MoltenVK/MoltenVK/GPUObjects/MVKResource.h @@ -1,7 +1,7 @@ /* * MVKResource.h * - * Copyright (c) 2015-2022 The Brenwill Workshop Ltd. (http://www.brenwill.com) + * Copyright (c) 2015-2023 The Brenwill Workshop Ltd. (http://www.brenwill.com) * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. diff --git a/MoltenVK/MoltenVK/GPUObjects/MVKResource.mm b/MoltenVK/MoltenVK/GPUObjects/MVKResource.mm index 30650d458..0e2131dcd 100644 --- a/MoltenVK/MoltenVK/GPUObjects/MVKResource.mm +++ b/MoltenVK/MoltenVK/GPUObjects/MVKResource.mm @@ -1,7 +1,7 @@ /* * MVKResource.mm * - * Copyright (c) 2015-2022 The Brenwill Workshop Ltd. (http://www.brenwill.com) + * Copyright (c) 2015-2023 The Brenwill Workshop Ltd. (http://www.brenwill.com) * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. diff --git a/MoltenVK/MoltenVK/GPUObjects/MVKShaderModule.h b/MoltenVK/MoltenVK/GPUObjects/MVKShaderModule.h index 430f886cc..a7e3417fb 100644 --- a/MoltenVK/MoltenVK/GPUObjects/MVKShaderModule.h +++ b/MoltenVK/MoltenVK/GPUObjects/MVKShaderModule.h @@ -1,7 +1,7 @@ /* * MVKShaderModule.h * - * Copyright (c) 2015-2022 The Brenwill Workshop Ltd. (http://www.brenwill.com) + * Copyright (c) 2015-2023 The Brenwill Workshop Ltd. (http://www.brenwill.com) * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. @@ -20,6 +20,7 @@ #include "MVKDevice.h" #include "MVKSync.h" +#include "MVKCodec.h" #include "MVKSmallVector.h" #include #include @@ -40,11 +41,11 @@ using namespace mvk; /** A MTLFunction and corresponding result information resulting from a shader conversion. */ typedef struct MVKMTLFunction { - SPIRVToMSLConversionResults shaderConversionResults; + SPIRVToMSLConversionResultInfo shaderConversionResults; MTLSize threadGroupSize; inline id getMTLFunction() { return _mtlFunction; } - MVKMTLFunction(id mtlFunc, const SPIRVToMSLConversionResults scRslts, MTLSize tgSize); + MVKMTLFunction(id mtlFunc, const SPIRVToMSLConversionResultInfo scRslts, MTLSize tgSize); MVKMTLFunction(const MVKMTLFunction& other); MVKMTLFunction& operator=(const MVKMTLFunction& other); MVKMTLFunction() {} @@ -56,7 +57,7 @@ typedef struct MVKMTLFunction { } MVKMTLFunction; /** A MVKMTLFunction indicating an invalid MTLFunction. The mtlFunction member is nil. */ -const MVKMTLFunction MVKMTLFunctionNull(nil, SPIRVToMSLConversionResults(), MTLSizeMake(1, 1, 1)); +const MVKMTLFunction MVKMTLFunctionNull(nil, SPIRVToMSLConversionResultInfo(), MTLSizeMake(1, 1, 1)); /** Wraps a single MTLLibrary. */ class MVKShaderLibrary : public MVKBaseObject { @@ -84,12 +85,13 @@ class MVKShaderLibrary : public MVKBaseObject { */ void setWorkgroupSize(uint32_t x, uint32_t y, uint32_t z); - /** Constructs an instance from the specified MSL source code. */ MVKShaderLibrary(MVKVulkanAPIDeviceObject* owner, - const std::string& mslSourceCode, - const SPIRVToMSLConversionResults& shaderConversionResults); + const SPIRVToMSLConversionResult& conversionResult); + + MVKShaderLibrary(MVKVulkanAPIDeviceObject* owner, + const SPIRVToMSLConversionResultInfo& resultInfo, + const MVKCompressor compressedMSL); - /** Constructs an instance from the specified compiled MSL code data. */ MVKShaderLibrary(MVKVulkanAPIDeviceObject* owner, const void* mslCompiledCodeData, size_t mslCompiledCodeLength); @@ -108,11 +110,15 @@ class MVKShaderLibrary : public MVKBaseObject { MVKMTLFunction getMTLFunction(const VkSpecializationInfo* pSpecializationInfo, MVKShaderModule* shaderModule); void handleCompilationError(NSError* err, const char* opDesc); MTLFunctionConstant* getFunctionConstant(NSArray* mtlFCs, NSUInteger mtlFCID); + void compileLibrary(const std::string& msl); + void compressMSL(const std::string& msl); + void decompressMSL(std::string& msl); + MVKCompressor& getCompressedMSL() { return _compressedMSL; } MVKVulkanAPIDeviceObject* _owner; id _mtlLibrary; - SPIRVToMSLConversionResults _shaderConversionResults; - std::string _msl; + MVKCompressor _compressedMSL; + SPIRVToMSLConversionResultInfo _shaderConversionResultInfo; }; @@ -128,15 +134,17 @@ class MVKShaderLibraryCache : public MVKBaseObject { MVKVulkanAPIObject* getVulkanAPIObject() override { return _owner->getVulkanAPIObject(); }; /** - * Returns a shader library from the shader conversion configuration sourced from the shader module, - * lazily creating the shader library from source code in the shader module, if needed. + * Returns a shader library from the shader conversion configuration sourced from the + * shader module, lazily creating the shader library from source code in the shader + * module, if needed, and if the pipeline is not configured to fail if a pipeline compile + * is required. In that case, the new shader library is not created, and nil is returned. * * If pWasAdded is not nil, this function will set it to true if a new shader library was created, * and to false if an existing shader library was found and returned. */ MVKShaderLibrary* getShaderLibrary(SPIRVToMSLConversionConfiguration* pShaderConfig, - MVKShaderModule* shaderModule, - bool* pWasAdded = nullptr); + MVKShaderModule* shaderModule, MVKPipeline* pipeline, + bool* pWasAdded, uint64_t startTime = 0); MVKShaderLibraryCache(MVKVulkanAPIDeviceObject* owner) : _owner(owner) {}; @@ -147,10 +155,12 @@ class MVKShaderLibraryCache : public MVKBaseObject { friend MVKPipelineCache; friend MVKShaderModule; - MVKShaderLibrary* findShaderLibrary(SPIRVToMSLConversionConfiguration* pShaderConfig); - MVKShaderLibrary* addShaderLibrary(SPIRVToMSLConversionConfiguration* pShaderConfig, - const std::string& mslSourceCode, - const SPIRVToMSLConversionResults& shaderConversionResults); + MVKShaderLibrary* findShaderLibrary(SPIRVToMSLConversionConfiguration* pShaderConfig, uint64_t startTime = 0); + MVKShaderLibrary* addShaderLibrary(const SPIRVToMSLConversionConfiguration* pShaderConfig, + const SPIRVToMSLConversionResult& conversionResult); + MVKShaderLibrary* addShaderLibrary(const SPIRVToMSLConversionConfiguration* pShaderConfig, + const SPIRVToMSLConversionResultInfo& resultInfo, + const MVKCompressor compressedMSL); void merge(MVKShaderLibraryCache* other); MVKVulkanAPIDeviceObject* _owner; @@ -197,23 +207,15 @@ class MVKShaderModule : public MVKVulkanAPIDeviceObject { /** Returns the Metal shader function, possibly specialized. */ MVKMTLFunction getMTLFunction(SPIRVToMSLConversionConfiguration* pShaderConfig, const VkSpecializationInfo* pSpecializationInfo, - MVKPipelineCache* pipelineCache); + MVKPipeline* pipeline); /** Convert the SPIR-V to MSL, using the specified shader conversion configuration. */ - bool convert(SPIRVToMSLConversionConfiguration* pShaderConfig); + bool convert(SPIRVToMSLConversionConfiguration* pShaderConfig, + SPIRVToMSLConversionResult& conversionResult); /** Returns the original SPIR-V code that was specified when this object was created. */ const std::vector& getSPIRV() { return _spvConverter.getSPIRV(); } - /** - * Returns the Metal Shading Language source code as converted by the most recent - * call to convert() function, or set directly using the setMSL() function. - */ - const std::string& getMSL() { return _spvConverter.getMSL(); } - - /** Returns information about the shader conversion results. */ - const SPIRVToMSLConversionResults& getConversionResults() { return _spvConverter.getConversionResults(); } - /** Sets the number of threads in a single compute kernel workgroup, per dimension. */ void setWorkgroupSize(uint32_t x, uint32_t y, uint32_t z); @@ -258,7 +260,7 @@ class MVKShaderLibraryCompiler : public MVKMetalCompiler { * nanoseconds, an error will be generated and logged, and nil will be returned. */ id newMTLLibrary(NSString* mslSourceCode, - const SPIRVToMSLConversionResults& shaderConversionResults); + const SPIRVToMSLConversionResultInfo& shaderConversionResults); #pragma mark Construction diff --git a/MoltenVK/MoltenVK/GPUObjects/MVKShaderModule.mm b/MoltenVK/MoltenVK/GPUObjects/MVKShaderModule.mm index 8170433a1..2eb57ebb4 100644 --- a/MoltenVK/MoltenVK/GPUObjects/MVKShaderModule.mm +++ b/MoltenVK/MoltenVK/GPUObjects/MVKShaderModule.mm @@ -1,7 +1,7 @@ /* * MVKShaderModule.mm * - * Copyright (c) 2015-2022 The Brenwill Workshop Ltd. (http://www.brenwill.com) + * Copyright (c) 2015-2023 The Brenwill Workshop Ltd. (http://www.brenwill.com) * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. @@ -19,12 +19,11 @@ #include "MVKShaderModule.h" #include "MVKPipeline.h" #include "MVKFoundation.h" -#include using namespace std; -MVKMTLFunction::MVKMTLFunction(id mtlFunc, const SPIRVToMSLConversionResults scRslts, MTLSize tgSize) { +MVKMTLFunction::MVKMTLFunction(id mtlFunc, const SPIRVToMSLConversionResultInfo scRslts, MTLSize tgSize) { _mtlFunction = [mtlFunc retain]; // retained shaderConversionResults = scRslts; threadGroupSize = tgSize; @@ -74,7 +73,7 @@ static uint32_t getWorkgroupDimensionSize(const SPIRVWorkgroupSizeDimension& wgD @synchronized (_owner->getMTLDevice()) { @autoreleasepool { - NSString* mtlFuncName = @(_shaderConversionResults.entryPoint.mtlFunctionName.c_str()); + NSString* mtlFuncName = @(_shaderConversionResultInfo.entryPoint.mtlFunctionName.c_str()); MVKDevice* mvkDev = _owner->getDevice(); uint64_t startTime = mvkDev->getPerformanceTimestamp(); @@ -121,8 +120,8 @@ static uint32_t getWorkgroupDimensionSize(const SPIRVWorkgroupSizeDimension& wgD if ( !dbName ) { dbName = _owner-> getDebugName(); } setLabelIfNotNil(mtlFunc, dbName); - auto& wgSize = _shaderConversionResults.entryPoint.workgroupSize; - return MVKMTLFunction(mtlFunc, _shaderConversionResults, MTLSizeMake(getWorkgroupDimensionSize(wgSize.width, pSpecializationInfo), + auto& wgSize = _shaderConversionResultInfo.entryPoint.workgroupSize; + return MVKMTLFunction(mtlFunc, _shaderConversionResultInfo, MTLSizeMake(getWorkgroupDimensionSize(wgSize.width, pSpecializationInfo), getWorkgroupDimensionSize(wgSize.height, pSpecializationInfo), getWorkgroupDimensionSize(wgSize.depth, pSpecializationInfo))); } @@ -130,29 +129,55 @@ static uint32_t getWorkgroupDimensionSize(const SPIRVWorkgroupSizeDimension& wgD } void MVKShaderLibrary::setEntryPointName(string& funcName) { - _shaderConversionResults.entryPoint.mtlFunctionName = funcName; + _shaderConversionResultInfo.entryPoint.mtlFunctionName = funcName; } void MVKShaderLibrary::setWorkgroupSize(uint32_t x, uint32_t y, uint32_t z) { - auto& wgSize = _shaderConversionResults.entryPoint.workgroupSize; + auto& wgSize = _shaderConversionResultInfo.entryPoint.workgroupSize; wgSize.width.size = x; wgSize.height.size = y; wgSize.depth.size = z; } +// Sets the cached MSL source code, after first compressing it. +void MVKShaderLibrary::compressMSL(const string& msl) { + MVKDevice* mvkDev = _owner->getDevice(); + uint64_t startTime = mvkDev->getPerformanceTimestamp(); + _compressedMSL.compress(msl, mvkConfig().shaderSourceCompressionAlgorithm); + mvkDev->addActivityPerformance(mvkDev->_performanceStatistics.shaderCompilation.mslCompress, startTime); +} + +// Decompresses the cached MSL into the string. +void MVKShaderLibrary::decompressMSL(string& msl) { + MVKDevice* mvkDev = _owner->getDevice(); + uint64_t startTime = mvkDev->getPerformanceTimestamp(); + _compressedMSL.decompress(msl); + mvkDev->addActivityPerformance(mvkDev->_performanceStatistics.shaderCompilation.mslDecompress, startTime); +} + MVKShaderLibrary::MVKShaderLibrary(MVKVulkanAPIDeviceObject* owner, - const string& mslSourceCode, - const SPIRVToMSLConversionResults& shaderConversionResults) : _owner(owner) { - MVKShaderLibraryCompiler* slc = new MVKShaderLibraryCompiler(_owner); + const SPIRVToMSLConversionResult& conversionResult) : _owner(owner) { + _shaderConversionResultInfo = conversionResult.resultInfo; + compressMSL(conversionResult.msl); + compileLibrary(conversionResult.msl); +} - NSString* nsSrc = [[NSString alloc] initWithUTF8String: mslSourceCode.c_str()]; // temp retained - _mtlLibrary = slc->newMTLLibrary(nsSrc, shaderConversionResults); // retained - [nsSrc release]; // release temp string +MVKShaderLibrary::MVKShaderLibrary(MVKVulkanAPIDeviceObject* owner, + const SPIRVToMSLConversionResultInfo& resultInfo, + const MVKCompressor compressedMSL) : _owner(owner) { + _shaderConversionResultInfo = resultInfo; + _compressedMSL = compressedMSL; + string msl; + decompressMSL(msl); + compileLibrary(msl); +} +void MVKShaderLibrary::compileLibrary(const string& msl) { + MVKShaderLibraryCompiler* slc = new MVKShaderLibraryCompiler(_owner); + NSString* nsSrc = [[NSString alloc] initWithUTF8String: msl.c_str()]; // temp retained + _mtlLibrary = slc->newMTLLibrary(nsSrc, _shaderConversionResultInfo); // retained + [nsSrc release]; // release temp string slc->destroy(); - - _shaderConversionResults = shaderConversionResults; - _msl = mslSourceCode; } MVKShaderLibrary::MVKShaderLibrary(MVKVulkanAPIDeviceObject* owner, @@ -176,8 +201,8 @@ static uint32_t getWorkgroupDimensionSize(const SPIRVWorkgroupSizeDimension& wgD MVKShaderLibrary::MVKShaderLibrary(const MVKShaderLibrary& other) { _owner = other._owner; _mtlLibrary = [other._mtlLibrary retain]; - _shaderConversionResults = other._shaderConversionResults; - _msl = other._msl; + _shaderConversionResultInfo = other._shaderConversionResultInfo; + _compressedMSL = other._compressedMSL; } MVKShaderLibrary& MVKShaderLibrary::operator=(const MVKShaderLibrary& other) { @@ -186,8 +211,8 @@ static uint32_t getWorkgroupDimensionSize(const SPIRVWorkgroupSizeDimension& wgD _mtlLibrary = [other._mtlLibrary retain]; } _owner = other._owner; - _shaderConversionResults = other._shaderConversionResults; - _msl = other._msl; + _shaderConversionResultInfo = other._shaderConversionResultInfo; + _compressedMSL = other._compressedMSL; return *this; } @@ -216,13 +241,14 @@ static uint32_t getWorkgroupDimensionSize(const SPIRVWorkgroupSizeDimension& wgD #pragma mark MVKShaderLibraryCache MVKShaderLibrary* MVKShaderLibraryCache::getShaderLibrary(SPIRVToMSLConversionConfiguration* pShaderConfig, - MVKShaderModule* shaderModule, - bool* pWasAdded) { + MVKShaderModule* shaderModule, MVKPipeline* pipeline, + bool* pWasAdded, uint64_t startTime) { bool wasAdded = false; - MVKShaderLibrary* shLib = findShaderLibrary(pShaderConfig); - if ( !shLib ) { - if (shaderModule->convert(pShaderConfig)) { - shLib = addShaderLibrary(pShaderConfig, shaderModule->getMSL(), shaderModule->getConversionResults()); + MVKShaderLibrary* shLib = findShaderLibrary(pShaderConfig, startTime); + if ( !shLib && !pipeline->shouldFailOnPipelineCompileRequired() ) { + SPIRVToMSLConversionResult conversionResult; + if (shaderModule->convert(pShaderConfig, conversionResult)) { + shLib = addShaderLibrary(pShaderConfig, conversionResult); wasAdded = true; } } @@ -234,10 +260,13 @@ static uint32_t getWorkgroupDimensionSize(const SPIRVWorkgroupSizeDimension& wgD // Finds and returns a shader library matching the shader config, or returns nullptr if it doesn't exist. // If a match is found, the shader config is aligned with the shader config of the matching library. -MVKShaderLibrary* MVKShaderLibraryCache::findShaderLibrary(SPIRVToMSLConversionConfiguration* pShaderConfig) { +MVKShaderLibrary* MVKShaderLibraryCache::findShaderLibrary(SPIRVToMSLConversionConfiguration* pShaderConfig, + uint64_t startTime) { for (auto& slPair : _shaderLibraries) { if (slPair.first.matches(*pShaderConfig)) { pShaderConfig->alignWith(slPair.first); + MVKDevice* mvkDev = _owner->getDevice(); + mvkDev->addActivityPerformance(mvkDev->_performanceStatistics.shaderCompilation.shaderLibraryFromCache, startTime); return slPair.second; } } @@ -245,10 +274,18 @@ static uint32_t getWorkgroupDimensionSize(const SPIRVWorkgroupSizeDimension& wgD } // Adds and returns a new shader library configured from the specified conversion configuration. -MVKShaderLibrary* MVKShaderLibraryCache::addShaderLibrary(SPIRVToMSLConversionConfiguration* pShaderConfig, - const string& mslSourceCode, - const SPIRVToMSLConversionResults& shaderConversionResults) { - MVKShaderLibrary* shLib = new MVKShaderLibrary(_owner, mslSourceCode, shaderConversionResults); +MVKShaderLibrary* MVKShaderLibraryCache::addShaderLibrary(const SPIRVToMSLConversionConfiguration* pShaderConfig, + const SPIRVToMSLConversionResult& conversionResult) { + MVKShaderLibrary* shLib = new MVKShaderLibrary(_owner, conversionResult); + _shaderLibraries.emplace_back(*pShaderConfig, shLib); + return shLib; +} + +// Adds and returns a new shader library configured from contents read from a pipeline cache. +MVKShaderLibrary* MVKShaderLibraryCache::addShaderLibrary(const SPIRVToMSLConversionConfiguration* pShaderConfig, + const SPIRVToMSLConversionResultInfo& resultInfo, + const MVKCompressor compressedMSL) { + MVKShaderLibrary* shLib = new MVKShaderLibrary(_owner, resultInfo, compressedMSL); _shaderLibraries.emplace_back(*pShaderConfig, shLib); return shLib; } @@ -274,18 +311,17 @@ static uint32_t getWorkgroupDimensionSize(const SPIRVWorkgroupSizeDimension& wgD MVKMTLFunction MVKShaderModule::getMTLFunction(SPIRVToMSLConversionConfiguration* pShaderConfig, const VkSpecializationInfo* pSpecializationInfo, - MVKPipelineCache* pipelineCache) { - lock_guard lock(_accessLock); - + MVKPipeline* pipeline) { MVKShaderLibrary* mvkLib = _directMSLLibrary; if ( !mvkLib ) { uint64_t startTime = _device->getPerformanceTimestamp(); + MVKPipelineCache* pipelineCache = pipeline->getPipelineCache(); if (pipelineCache) { - mvkLib = pipelineCache->getShaderLibrary(pShaderConfig, this); + mvkLib = pipelineCache->getShaderLibrary(pShaderConfig, this, pipeline, startTime); } else { - mvkLib = _shaderLibraryCache.getShaderLibrary(pShaderConfig, this); + lock_guard lock(_accessLock); + mvkLib = _shaderLibraryCache.getShaderLibrary(pShaderConfig, this, pipeline, nullptr, startTime); } - _device->addActivityPerformance(_device->_performanceStatistics.shaderCompilation.shaderLibraryFromCache, startTime); } else { mvkLib->setEntryPointName(pShaderConfig->options.entryPointName); pShaderConfig->markAllInterfaceVarsAndResourcesUsed(); @@ -294,7 +330,8 @@ static uint32_t getWorkgroupDimensionSize(const SPIRVWorkgroupSizeDimension& wgD return mvkLib ? mvkLib->getMTLFunction(pSpecializationInfo, this) : MVKMTLFunctionNull; } -bool MVKShaderModule::convert(SPIRVToMSLConversionConfiguration* pShaderConfig) { +bool MVKShaderModule::convert(SPIRVToMSLConversionConfiguration* pShaderConfig, + SPIRVToMSLConversionResult& conversionResult) { bool shouldLogCode = mvkConfig().debugMode; bool shouldLogEstimatedGLSL = shouldLogCode; @@ -302,27 +339,28 @@ static uint32_t getWorkgroupDimensionSize(const SPIRVWorkgroupSizeDimension& wgD // convert the GLSL code to SPIR-V and set it into the SPIR-V conveter. if ( !_spvConverter.hasSPIRV() && _glslConverter.hasGLSL() ) { + GLSLToSPIRVConversionResult glslConversionResult; uint64_t startTime = _device->getPerformanceTimestamp(); - bool wasConverted = _glslConverter.convert(getMVKGLSLConversionShaderStage(pShaderConfig), shouldLogCode, false); + bool wasConverted = _glslConverter.convert(getMVKGLSLConversionShaderStage(pShaderConfig), glslConversionResult, shouldLogCode, false); _device->addActivityPerformance(_device->_performanceStatistics.shaderCompilation.glslToSPRIV, startTime); if (wasConverted) { - if (shouldLogCode) { MVKLogInfo("%s", _glslConverter.getResultLog().c_str()); } - _spvConverter.setSPIRV(_glslConverter.getSPIRV()); + if (shouldLogCode) { MVKLogInfo("%s", glslConversionResult.resultLog.c_str()); } + _spvConverter.setSPIRV(glslConversionResult.spirv); } else { - reportError(VK_ERROR_INVALID_SHADER_NV, "Unable to convert GLSL to SPIR-V:\n%s", _glslConverter.getResultLog().c_str()); + reportError(VK_ERROR_INVALID_SHADER_NV, "Unable to convert GLSL to SPIR-V:\n%s", glslConversionResult.resultLog.c_str()); } shouldLogEstimatedGLSL = false; } uint64_t startTime = _device->getPerformanceTimestamp(); - bool wasConverted = _spvConverter.convert(*pShaderConfig, shouldLogCode, shouldLogCode, shouldLogEstimatedGLSL); + bool wasConverted = _spvConverter.convert(*pShaderConfig, conversionResult, shouldLogCode, shouldLogCode, shouldLogEstimatedGLSL); _device->addActivityPerformance(_device->_performanceStatistics.shaderCompilation.spirvToMSL, startTime); if (wasConverted) { - if (shouldLogCode) { MVKLogInfo("%s", _spvConverter.getResultLog().c_str()); } + if (shouldLogCode) { MVKLogInfo("%s", conversionResult.resultLog.c_str()); } } else { - reportError(VK_ERROR_INVALID_SHADER_NV, "Unable to convert SPIR-V to MSL:\n%s", _spvConverter.getResultLog().c_str()); + reportError(VK_ERROR_INVALID_SHADER_NV, "Unable to convert SPIR-V to MSL:\n%s", conversionResult.resultLog.c_str()); } return wasConverted; } @@ -345,7 +383,6 @@ static uint32_t getWorkgroupDimensionSize(const SPIRVWorkgroupSizeDimension& wgD } void MVKShaderModule::setWorkgroupSize(uint32_t x, uint32_t y, uint32_t z) { - _spvConverter.setWorkgroupSize(x, y, z); if(_directMSLLibrary) { _directMSLLibrary->setWorkgroupSize(x, y, z); } } @@ -394,8 +431,9 @@ static uint32_t getWorkgroupDimensionSize(const SPIRVWorkgroupSizeDimension& wgD codeHash = mvkHash(pMSLCode, mslCodeLen, codeHash); _device->addActivityPerformance(_device->_performanceStatistics.shaderCompilation.hashShaderCode, startTime); - _spvConverter.setMSL(pMSLCode, nullptr); - _directMSLLibrary = new MVKShaderLibrary(this, _spvConverter.getMSL().c_str(), _spvConverter.getConversionResults()); + SPIRVToMSLConversionResult conversionResult; + conversionResult.msl = pMSLCode; + _directMSLLibrary = new MVKShaderLibrary(this, conversionResult); break; } @@ -441,7 +479,7 @@ static uint32_t getWorkgroupDimensionSize(const SPIRVWorkgroupSizeDimension& wgD #pragma mark MVKShaderLibraryCompiler id MVKShaderLibraryCompiler::newMTLLibrary(NSString* mslSourceCode, - const SPIRVToMSLConversionResults& shaderConversionResults) { + const SPIRVToMSLConversionResultInfo& shaderConversionResults) { unique_lock lock(_completionLock); compile(lock, ^{ diff --git a/MoltenVK/MoltenVK/GPUObjects/MVKSurface.h b/MoltenVK/MoltenVK/GPUObjects/MVKSurface.h index 8ec3eb1a1..544c8dfac 100644 --- a/MoltenVK/MoltenVK/GPUObjects/MVKSurface.h +++ b/MoltenVK/MoltenVK/GPUObjects/MVKSurface.h @@ -1,7 +1,7 @@ /* * MVKSurface.h * - * Copyright (c) 2015-2022 The Brenwill Workshop Ltd. (http://www.brenwill.com) + * Copyright (c) 2015-2023 The Brenwill Workshop Ltd. (http://www.brenwill.com) * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. diff --git a/MoltenVK/MoltenVK/GPUObjects/MVKSurface.mm b/MoltenVK/MoltenVK/GPUObjects/MVKSurface.mm index a35517798..1309d73dc 100644 --- a/MoltenVK/MoltenVK/GPUObjects/MVKSurface.mm +++ b/MoltenVK/MoltenVK/GPUObjects/MVKSurface.mm @@ -1,7 +1,7 @@ /* * MVKSurface.mm * - * Copyright (c) 2015-2022 The Brenwill Workshop Ltd. (http://www.brenwill.com) + * Copyright (c) 2015-2023 The Brenwill Workshop Ltd. (http://www.brenwill.com) * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. @@ -42,8 +42,6 @@ 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)); - // Get the platform object contained in pView id obj = (id)pCreateInfo->pView; diff --git a/MoltenVK/MoltenVK/GPUObjects/MVKSwapchain.h b/MoltenVK/MoltenVK/GPUObjects/MVKSwapchain.h index 76ae1cec6..47a26d2a7 100644 --- a/MoltenVK/MoltenVK/GPUObjects/MVKSwapchain.h +++ b/MoltenVK/MoltenVK/GPUObjects/MVKSwapchain.h @@ -1,7 +1,7 @@ /* * MVKSwapchain.h * - * Copyright (c) 2015-2022 The Brenwill Workshop Ltd. (http://www.brenwill.com) + * Copyright (c) 2015-2023 The Brenwill Workshop Ltd. (http://www.brenwill.com) * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. @@ -66,26 +66,27 @@ class MVKSwapchain : public MVKVulkanAPIDeviceObject { */ VkResult getImages(uint32_t* pCount, VkImage* pSwapchainImages); - /** Returns the index of the next swapchain image. */ - VkResult acquireNextImageKHR(uint64_t timeout, - VkSemaphore semaphore, - VkFence fence, - uint32_t deviceMask, - uint32_t* pImageIndex); + /** Returns the index of the next acquireable image. */ + VkResult acquireNextImage(uint64_t timeout, + VkSemaphore semaphore, + VkFence fence, + uint32_t deviceMask, + uint32_t* pImageIndex); + + /** Releases swapchain images. */ + VkResult releaseImages(const VkReleaseSwapchainImagesInfoEXT* pReleaseInfo); /** Returns whether the parent surface is now lost and this swapchain must be recreated. */ bool getIsSurfaceLost() { return _surfaceLost; } - /** Returns whether the surface size or resolution scale has changed since the last time this function was called. */ - bool getHasSurfaceSizeChanged() { - return !CGSizeEqualToSize(_mtlLayer.naturalDrawableSizeMVK, _mtlLayer.drawableSize); - } + /** Returns whether this swapchain is optimally sized for the surface. */ + bool hasOptimalSurface(); - /** Returns the status of the surface. Surface loss takes precedence over out-of-date errors. */ + /** Returns the status of the surface. Surface loss takes precedence over sub-optimal errors. */ VkResult getSurfaceStatus() { if (_device->getConfigurationResult() != VK_SUCCESS) { return _device->getConfigurationResult(); } if (getIsSurfaceLost()) { return VK_ERROR_SURFACE_LOST_KHR; } - if (getHasSurfaceSizeChanged()) { return VK_SUBOPTIMAL_KHR; } + if ( !hasOptimalSurface() ) { return VK_SUBOPTIMAL_KHR; } return VK_SUCCESS; } @@ -97,7 +98,7 @@ class MVKSwapchain : public MVKVulkanAPIDeviceObject { /** VK_GOOGLE_display_timing - returns past presentation times */ VkResult getPastPresentationTiming(uint32_t *pCount, VkPastPresentationTimingGOOGLE *pPresentationTimings); - + void destroy() override; #pragma mark Construction @@ -110,7 +111,9 @@ class MVKSwapchain : public MVKVulkanAPIDeviceObject { friend class MVKPresentableSwapchainImage; void propagateDebugName() override; - void initCAMetalLayer(const VkSwapchainCreateInfoKHR* pCreateInfo, uint32_t imgCnt); + void initCAMetalLayer(const VkSwapchainCreateInfoKHR* pCreateInfo, + VkSwapchainPresentScalingCreateInfoEXT* pScalingInfo, + uint32_t imgCnt); void initSurfaceImages(const VkSwapchainCreateInfoKHR* pCreateInfo, uint32_t imgCnt); void releaseLayer(); void releaseUndisplayedSurfaces(); @@ -118,22 +121,39 @@ class MVKSwapchain : public MVKVulkanAPIDeviceObject { void willPresentSurface(id mtlTexture, id mtlCmdBuff); void renderWatermark(id mtlTexture, id mtlCmdBuff); void markFrameInterval(); - void recordPresentTime(MVKPresentTimingInfo presentTimingInfo, uint64_t actualPresentTime = 0); + void recordPresentTime(MVKImagePresentInfo& presentInfo, uint64_t actualPresentTime = 0); - CAMetalLayer* _mtlLayer; - MVKWatermark* _licenseWatermark; + CAMetalLayer* _mtlLayer = nil; + MVKWatermark* _licenseWatermark = nullptr; MVKSmallVector _presentableImages; - std::atomic _currentAcquisitionID; - uint64_t _lastFrameTime; - uint32_t _currentPerfLogFrameCount; - std::atomic _surfaceLost; - MVKBlockObserver* _layerObserver; - std::mutex _layerLock; + MVKSmallVector _compatiblePresentModes; static const int kMaxPresentationHistory = 60; VkPastPresentationTimingGOOGLE _presentTimingHistory[kMaxPresentationHistory]; - uint32_t _presentHistoryCount; - uint32_t _presentHistoryIndex; - uint32_t _presentHistoryHeadIndex; + std::atomic _currentAcquisitionID = 0; + MVKBlockObserver* _layerObserver = nil; std::mutex _presentHistoryLock; + std::mutex _layerLock; + uint64_t _lastFrameTime = 0; + VkExtent2D _mtlLayerDrawableExtent = {0, 0}; + uint32_t _currentPerfLogFrameCount = 0; + uint32_t _presentHistoryCount = 0; + uint32_t _presentHistoryIndex = 0; + uint32_t _presentHistoryHeadIndex = 0; + std::atomic _surfaceLost = false; + bool _isDeliberatelyScaled = false; }; + +#pragma mark - +#pragma mark Support functions + +/** + * Returns the natural extent of the CAMetalLayer. + * + * The natural extent is the size of the bounds property of the layer, + * multiplied by the contentsScale property of the layer, rounded + * to nearest integer using half-to-even rounding. + */ +static inline VkExtent2D mvkGetNaturalExtent(CAMetalLayer* mtlLayer) { + return mvkVkExtent2DFromCGSize(mtlLayer.naturalDrawableSizeMVK); +} diff --git a/MoltenVK/MoltenVK/GPUObjects/MVKSwapchain.mm b/MoltenVK/MoltenVK/GPUObjects/MVKSwapchain.mm index 2739b8723..53aba660a 100644 --- a/MoltenVK/MoltenVK/GPUObjects/MVKSwapchain.mm +++ b/MoltenVK/MoltenVK/GPUObjects/MVKSwapchain.mm @@ -1,7 +1,7 @@ /* * MVKSwapchain.mm * - * Copyright (c) 2015-2022 The Brenwill Workshop Ltd. (http://www.brenwill.com) + * Copyright (c) 2015-2023 The Brenwill Workshop Ltd. (http://www.brenwill.com) * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. @@ -70,11 +70,11 @@ return result; } -VkResult MVKSwapchain::acquireNextImageKHR(uint64_t timeout, - VkSemaphore semaphore, - VkFence fence, - uint32_t deviceMask, - uint32_t* pImageIndex) { +VkResult MVKSwapchain::acquireNextImage(uint64_t timeout, + VkSemaphore semaphore, + VkFence fence, + uint32_t deviceMask, + uint32_t* pImageIndex) { if ( _device->getConfigurationResult() != VK_SUCCESS ) { return _device->getConfigurationResult(); } if ( getIsSurfaceLost() ) { return VK_ERROR_SURFACE_LOST_KHR; } @@ -100,6 +100,14 @@ return getSurfaceStatus(); } +VkResult MVKSwapchain::releaseImages(const VkReleaseSwapchainImagesInfoEXT* pReleaseInfo) { + for (uint32_t imgIdxIdx = 0; imgIdxIdx < pReleaseInfo->imageIndexCount; imgIdxIdx++) { + getPresentableImage(pReleaseInfo->pImageIndices[imgIdxIdx])->makeAvailable(); + } + + return VK_SUCCESS; +} + uint64_t MVKSwapchain::getNextAcquisitionID() { return ++_currentAcquisitionID; } // Releases any surfaces that are not currently being displayed, @@ -107,6 +115,18 @@ void MVKSwapchain::releaseUndisplayedSurfaces() {} +// This swapchain is optimally sized for the surface if the app has specified deliberate +// swapchain scaling, or the CAMetalLayer drawableSize has not changed since the swapchain +// was created, and the CAMetalLayer will not need to be scaled when composited. +bool MVKSwapchain::hasOptimalSurface() { + if (_isDeliberatelyScaled) { return true; } + + VkExtent2D drawExtent = mvkVkExtent2DFromCGSize(_mtlLayer.drawableSize); + return (mvkVkExtent2DsAreEqual(drawExtent, _mtlLayerDrawableExtent) && + mvkVkExtent2DsAreEqual(drawExtent, mvkGetNaturalExtent(_mtlLayer))); +} + + #pragma mark Rendering // Called automatically when a swapchain image is about to be presented to the surface by the queue. @@ -168,7 +188,7 @@ // According to D.3.28: // "[x and y] specify the normalized x and y chromaticity coordinates, respectively... // in normalized increments of 0.00002." -static inline uint16_t FloatToCIE1931Unorm(float x) { return OSSwapHostToBigInt16((uint16_t)(x * 100000 / 2)); } +static constexpr uint16_t FloatToCIE1931Unorm(float x) { return OSSwapHostToBigInt16((uint16_t)(x * 100000 / 2)); } static inline CIE1931XY VkXYColorEXTToCIE1931XY(VkXYColorEXT xy) { return { FloatToCIE1931Unorm(xy.x), FloatToCIE1931Unorm(xy.y) }; } @@ -227,19 +247,37 @@ static inline CIE1931XY VkXYColorEXTToCIE1931XY(VkXYColorEXT xy) { #pragma mark Construction MVKSwapchain::MVKSwapchain(MVKDevice* device, - const VkSwapchainCreateInfoKHR* pCreateInfo) : - MVKVulkanAPIDeviceObject(device), - _licenseWatermark(nil), - _currentAcquisitionID(0), - _lastFrameTime(0), - _currentPerfLogFrameCount(0), - _surfaceLost(false), - _layerObserver(nil), - _presentHistoryCount(0), - _presentHistoryIndex(0), - _presentHistoryHeadIndex(0) { - + const VkSwapchainCreateInfoKHR* pCreateInfo) : MVKVulkanAPIDeviceObject(device) { memset(_presentTimingHistory, 0, sizeof(_presentTimingHistory)); + + // Retrieve the scaling and present mode structs if they are supplied. + VkSwapchainPresentScalingCreateInfoEXT* pScalingInfo = nullptr; + VkSwapchainPresentModesCreateInfoEXT* pPresentModesInfo = nullptr; + for (auto* next = (const VkBaseInStructure*)pCreateInfo->pNext; next; next = next->pNext) { + switch (next->sType) { + case VK_STRUCTURE_TYPE_SWAPCHAIN_PRESENT_SCALING_CREATE_INFO_EXT: { + pScalingInfo = (VkSwapchainPresentScalingCreateInfoEXT*)next; + break; + } + case VK_STRUCTURE_TYPE_SWAPCHAIN_PRESENT_MODES_CREATE_INFO_EXT: { + pPresentModesInfo = (VkSwapchainPresentModesCreateInfoEXT*)next; + break; + } + default: + break; + } + } + + _isDeliberatelyScaled = pScalingInfo && pScalingInfo->scalingBehavior; + + // Set the list of present modes that can be specified in a queue + // present submission without causing the swapchain to be rebuilt. + if (pPresentModesInfo) { + for (uint32_t pmIdx = 0; pmIdx < pPresentModesInfo->presentModeCount; pmIdx++) { + _compatiblePresentModes.push_back(pPresentModesInfo->pPresentModes[pmIdx]); + } + } + // If applicable, release any surfaces (not currently being displayed) from the old swapchain. MVKSwapchain* oldSwapchain = (MVKSwapchain*)pCreateInfo->oldSwapchain; if (oldSwapchain) { oldSwapchain->releaseUndisplayedSurfaces(); } @@ -247,12 +285,51 @@ static inline CIE1931XY VkXYColorEXTToCIE1931XY(VkXYColorEXT xy) { uint32_t imgCnt = mvkClamp(pCreateInfo->minImageCount, _device->_pMetalFeatures->minSwapchainImageCount, _device->_pMetalFeatures->maxSwapchainImageCount); - initCAMetalLayer(pCreateInfo, imgCnt); + initCAMetalLayer(pCreateInfo, pScalingInfo, imgCnt); initSurfaceImages(pCreateInfo, imgCnt); // After initCAMetalLayer() } +// kCAGravityResize is the Metal default +static CALayerContentsGravity getCALayerContentsGravity(VkSwapchainPresentScalingCreateInfoEXT* pScalingInfo) { + + if( !pScalingInfo ) { return kCAGravityResize; } + + switch (pScalingInfo->scalingBehavior) { + case VK_PRESENT_SCALING_STRETCH_BIT_EXT: return kCAGravityResize; + case VK_PRESENT_SCALING_ASPECT_RATIO_STRETCH_BIT_EXT: return kCAGravityResizeAspect; + case VK_PRESENT_SCALING_ONE_TO_ONE_BIT_EXT: + switch (pScalingInfo->presentGravityY) { + case VK_PRESENT_GRAVITY_MIN_BIT_EXT: + switch (pScalingInfo->presentGravityX) { + case VK_PRESENT_GRAVITY_MIN_BIT_EXT: return kCAGravityTopLeft; + case VK_PRESENT_GRAVITY_CENTERED_BIT_EXT: return kCAGravityTop; + case VK_PRESENT_GRAVITY_MAX_BIT_EXT: return kCAGravityTopRight; + default: return kCAGravityTop; + } + case VK_PRESENT_GRAVITY_CENTERED_BIT_EXT: + switch (pScalingInfo->presentGravityX) { + case VK_PRESENT_GRAVITY_MIN_BIT_EXT: return kCAGravityLeft; + case VK_PRESENT_GRAVITY_CENTERED_BIT_EXT: return kCAGravityCenter; + case VK_PRESENT_GRAVITY_MAX_BIT_EXT: return kCAGravityRight; + default: return kCAGravityCenter; + } + case VK_PRESENT_GRAVITY_MAX_BIT_EXT: + switch (pScalingInfo->presentGravityX) { + case VK_PRESENT_GRAVITY_MIN_BIT_EXT: return kCAGravityBottomLeft; + case VK_PRESENT_GRAVITY_CENTERED_BIT_EXT: return kCAGravityBottom; + case VK_PRESENT_GRAVITY_MAX_BIT_EXT: return kCAGravityBottomRight; + default: return kCAGravityBottom; + } + default: return kCAGravityCenter; + } + default: return kCAGravityResize; + } +} + // Initializes the CAMetalLayer underlying the surface of this swapchain. -void MVKSwapchain::initCAMetalLayer(const VkSwapchainCreateInfoKHR* pCreateInfo, uint32_t imgCnt) { +void MVKSwapchain::initCAMetalLayer(const VkSwapchainCreateInfoKHR* pCreateInfo, + VkSwapchainPresentScalingCreateInfoEXT* pScalingInfo, + uint32_t imgCnt) { MVKSurface* mvkSrfc = (MVKSurface*)pCreateInfo->surface; _mtlLayer = mvkSrfc->getCAMetalLayer(); @@ -262,15 +339,23 @@ static inline CIE1931XY VkXYColorEXTToCIE1931XY(VkXYColorEXT xy) { return; } + auto minMagFilter = mvkConfig().swapchainMinMagFilterUseNearest ? kCAFilterNearest : kCAFilterLinear; _mtlLayer.device = getMTLDevice(); _mtlLayer.pixelFormat = getPixelFormats()->getMTLPixelFormat(pCreateInfo->imageFormat); _mtlLayer.maximumDrawableCountMVK = imgCnt; _mtlLayer.displaySyncEnabledMVK = (pCreateInfo->presentMode != VK_PRESENT_MODE_IMMEDIATE_KHR); - _mtlLayer.magnificationFilter = mvkConfig().swapchainMagFilterUseNearest ? kCAFilterNearest : kCAFilterLinear; + _mtlLayer.minificationFilter = minMagFilter; + _mtlLayer.magnificationFilter = minMagFilter; + _mtlLayer.contentsGravity = getCALayerContentsGravity(pScalingInfo); _mtlLayer.framebufferOnly = !mvkIsAnyFlagEnabled(pCreateInfo->imageUsage, (VK_IMAGE_USAGE_TRANSFER_SRC_BIT | VK_IMAGE_USAGE_TRANSFER_DST_BIT | VK_IMAGE_USAGE_SAMPLED_BIT | VK_IMAGE_USAGE_STORAGE_BIT)); + // Remember the extent to later detect if it has changed under the covers, + // and set the drawable size of the CAMetalLayer from the extent. + _mtlLayerDrawableExtent = pCreateInfo->imageExtent; + _mtlLayer.drawableSize = mvkCGSizeFromVkExtent2D(_mtlLayerDrawableExtent); + if (pCreateInfo->compositeAlpha != VK_COMPOSITE_ALPHA_INHERIT_BIT_KHR) { _mtlLayer.opaque = pCreateInfo->compositeAlpha == VK_COMPOSITE_ALPHA_OPAQUE_BIT_KHR; } @@ -330,7 +415,6 @@ static inline CIE1931XY VkXYColorEXTToCIE1931XY(VkXYColorEXT xy) { setConfigurationResult(reportError(VK_ERROR_FORMAT_NOT_SUPPORTED, "vkCreateSwapchainKHR(): Metal does not support VkColorSpaceKHR value %d.", pCreateInfo->imageColorSpace)); break; } - _mtlLayer.drawableSize = mvkCGSizeFromVkExtent2D(pCreateInfo->imageExtent); // TODO: set additional CAMetalLayer properties before extracting drawables: // - presentsWithTransaction @@ -398,8 +482,12 @@ static inline CIE1931XY VkXYColorEXTToCIE1931XY(VkXYColorEXT xy) { mvkEnableFlags(imgInfo.flags, VK_IMAGE_CREATE_SPLIT_INSTANCE_BIND_REGIONS_BIT); } + // The VK_SWAPCHAIN_CREATE_DEFERRED_MEMORY_ALLOCATION_BIT_EXT flag is ignored, because + // swapchain image memory allocation is provided by a MTLDrawable, which is retrieved + // lazily, and hence is already deferred (or as deferred as we can make it). + for (uint32_t imgIdx = 0; imgIdx < imgCnt; imgIdx++) { - _presentableImages.push_back(_device->createPresentableSwapchainImage(&imgInfo, this, imgIdx, NULL)); + _presentableImages.push_back(_device->createPresentableSwapchainImage(&imgInfo, this, imgIdx, nullptr)); } NSString* screenName = @"Main Screen"; @@ -469,7 +557,7 @@ static inline CIE1931XY VkXYColorEXTToCIE1931XY(VkXYColorEXT xy) { return res; } -void MVKSwapchain::recordPresentTime(MVKPresentTimingInfo presentTimingInfo, uint64_t actualPresentTime) { +void MVKSwapchain::recordPresentTime(MVKImagePresentInfo& presentInfo, uint64_t actualPresentTime) { std::lock_guard lock(_presentHistoryLock); if (_presentHistoryCount < kMaxPresentationHistory) { _presentHistoryCount++; @@ -478,10 +566,10 @@ static inline CIE1931XY VkXYColorEXTToCIE1931XY(VkXYColorEXT xy) { } // If actual time not supplied, use desired time instead - if (actualPresentTime == 0) { actualPresentTime = presentTimingInfo.desiredPresentTime; } + if (actualPresentTime == 0) { actualPresentTime = presentInfo.desiredPresentTime; } - _presentTimingHistory[_presentHistoryIndex].presentID = presentTimingInfo.presentID; - _presentTimingHistory[_presentHistoryIndex].desiredPresentTime = presentTimingInfo.desiredPresentTime; + _presentTimingHistory[_presentHistoryIndex].presentID = presentInfo.presentID; + _presentTimingHistory[_presentHistoryIndex].desiredPresentTime = presentInfo.desiredPresentTime; _presentTimingHistory[_presentHistoryIndex].actualPresentTime = actualPresentTime; // These details are not available in Metal _presentTimingHistory[_presentHistoryIndex].earliestPresentTime = actualPresentTime; diff --git a/MoltenVK/MoltenVK/GPUObjects/MVKSync.h b/MoltenVK/MoltenVK/GPUObjects/MVKSync.h index 0a0349919..c8d9da452 100644 --- a/MoltenVK/MoltenVK/GPUObjects/MVKSync.h +++ b/MoltenVK/MoltenVK/GPUObjects/MVKSync.h @@ -1,7 +1,7 @@ /* * MVKSync.h * - * Copyright (c) 2015-2022 The Brenwill Workshop Ltd. (http://www.brenwill.com) + * Copyright (c) 2015-2023 The Brenwill Workshop Ltd. (http://www.brenwill.com) * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. diff --git a/MoltenVK/MoltenVK/GPUObjects/MVKSync.mm b/MoltenVK/MoltenVK/GPUObjects/MVKSync.mm index 318e86a15..47bf78a23 100644 --- a/MoltenVK/MoltenVK/GPUObjects/MVKSync.mm +++ b/MoltenVK/MoltenVK/GPUObjects/MVKSync.mm @@ -1,7 +1,7 @@ /* * MVKSync.mm * - * Copyright (c) 2015-2022 The Brenwill Workshop Ltd. (http://www.brenwill.com) + * Copyright (c) 2015-2023 The Brenwill Workshop Ltd. (http://www.brenwill.com) * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. diff --git a/MoltenVK/MoltenVK/GPUObjects/MVKVulkanAPIObject.h b/MoltenVK/MoltenVK/GPUObjects/MVKVulkanAPIObject.h index c82b03642..fdb52ae98 100644 --- a/MoltenVK/MoltenVK/GPUObjects/MVKVulkanAPIObject.h +++ b/MoltenVK/MoltenVK/GPUObjects/MVKVulkanAPIObject.h @@ -1,7 +1,7 @@ /* * MVKVulkanAPIObject.h * - * Copyright (c) 2015-2022 The Brenwill Workshop Ltd. (http://www.brenwill.com) + * Copyright (c) 2015-2023 The Brenwill Workshop Ltd. (http://www.brenwill.com) * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. diff --git a/MoltenVK/MoltenVK/GPUObjects/MVKVulkanAPIObject.mm b/MoltenVK/MoltenVK/GPUObjects/MVKVulkanAPIObject.mm index ff8f7d53e..e2a1b2e97 100644 --- a/MoltenVK/MoltenVK/GPUObjects/MVKVulkanAPIObject.mm +++ b/MoltenVK/MoltenVK/GPUObjects/MVKVulkanAPIObject.mm @@ -1,7 +1,7 @@ /* * MVKVulkanAPIObject.mm * - * Copyright (c) 2015-2022 The Brenwill Workshop Ltd. (http://www.brenwill.com) + * Copyright (c) 2015-2023 The Brenwill Workshop Ltd. (http://www.brenwill.com) * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. diff --git a/MoltenVK/MoltenVK/Layers/MVKExtensions.def b/MoltenVK/MoltenVK/Layers/MVKExtensions.def index 0e78c86c1..ce68d29f8 100644 --- a/MoltenVK/MoltenVK/Layers/MVKExtensions.def +++ b/MoltenVK/MoltenVK/Layers/MVKExtensions.def @@ -1,7 +1,7 @@ /* * MVKExtensions.def * - * Copyright (c) 2015-2022 The Brenwill Workshop Ltd. (http://www.brenwill.com) + * Copyright (c) 2015-2023 The Brenwill Workshop Ltd. (http://www.brenwill.com) * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. @@ -44,7 +44,8 @@ MVK_EXTENSION(KHR_16bit_storage, KHR_16BIT_STORAGE, DEVICE, 10.11, 8.0) MVK_EXTENSION(KHR_8bit_storage, KHR_8BIT_STORAGE, DEVICE, 10.11, 8.0) MVK_EXTENSION(KHR_bind_memory2, KHR_BIND_MEMORY_2, DEVICE, 10.11, 8.0) -MVK_EXTENSION(KHR_buffer_device_address, KHR_BUFFER_DEVICE_ADDRESS, DEVICE, 12.05, 16.0) +MVK_EXTENSION(KHR_buffer_device_address, KHR_BUFFER_DEVICE_ADDRESS, DEVICE, 13.0, 16.0) +MVK_EXTENSION(KHR_copy_commands2, KHR_COPY_COMMANDS_2, DEVICE, 10.11, 8.0) MVK_EXTENSION(KHR_create_renderpass2, KHR_CREATE_RENDERPASS_2, DEVICE, 10.11, 8.0) MVK_EXTENSION(KHR_dedicated_allocation, KHR_DEDICATED_ALLOCATION, DEVICE, 10.11, 8.0) MVK_EXTENSION(KHR_depth_stencil_resolve, KHR_DEPTH_STENCIL_RESOLVE, DEVICE, 10.11, 8.0) @@ -69,6 +70,7 @@ MVK_EXTENSION(KHR_image_format_list, KHR_IMAGE_FORMAT_LIST, MVK_EXTENSION(KHR_maintenance1, KHR_MAINTENANCE1, DEVICE, 10.11, 8.0) MVK_EXTENSION(KHR_maintenance2, KHR_MAINTENANCE2, DEVICE, 10.11, 8.0) MVK_EXTENSION(KHR_maintenance3, KHR_MAINTENANCE3, DEVICE, 10.11, 8.0) +MVK_EXTENSION(KHR_map_memory2, KHR_MAP_MEMORY_2, DEVICE, 10.11, 8.0) MVK_EXTENSION(KHR_multiview, KHR_MULTIVIEW, DEVICE, 10.11, 8.0) MVK_EXTENSION(KHR_portability_subset, KHR_PORTABILITY_SUBSET, DEVICE, 10.11, 8.0) MVK_EXTENSION(KHR_push_descriptor, KHR_PUSH_DESCRIPTOR, DEVICE, 10.11, 8.0) @@ -81,6 +83,7 @@ MVK_EXTENSION(KHR_shader_draw_parameters, KHR_SHADER_DRAW_PARAMETERS, MVK_EXTENSION(KHR_shader_float_controls, KHR_SHADER_FLOAT_CONTROLS, DEVICE, 10.11, 8.0) MVK_EXTENSION(KHR_shader_float16_int8, KHR_SHADER_FLOAT16_INT8, DEVICE, 10.11, 8.0) MVK_EXTENSION(KHR_shader_subgroup_extended_types, KHR_SHADER_SUBGROUP_EXTENDED_TYPES, DEVICE, 10.14, 13.0) +MVK_EXTENSION(KHR_spirv_1_4, KHR_SPIRV_1_4, DEVICE, 10.11, 8.0) MVK_EXTENSION(KHR_storage_buffer_storage_class, KHR_STORAGE_BUFFER_STORAGE_CLASS, DEVICE, 10.11, 8.0) MVK_EXTENSION(KHR_surface, KHR_SURFACE, INSTANCE, 10.11, 8.0) MVK_EXTENSION(KHR_swapchain, KHR_SWAPCHAIN, DEVICE, 10.11, 8.0) @@ -89,11 +92,12 @@ MVK_EXTENSION(KHR_timeline_semaphore, KHR_TIMELINE_SEMAPHORE, MVK_EXTENSION(KHR_uniform_buffer_standard_layout, KHR_UNIFORM_BUFFER_STANDARD_LAYOUT, DEVICE, 10.11, 8.0) MVK_EXTENSION(KHR_variable_pointers, KHR_VARIABLE_POINTERS, DEVICE, 10.11, 8.0) MVK_EXTENSION(KHR_vulkan_memory_model, KHR_VULKAN_MEMORY_MODEL, DEVICE, MVK_NA, MVK_NA) -MVK_EXTENSION(EXT_buffer_device_address, EXT_BUFFER_DEVICE_ADDRESS, DEVICE, 12.05, 16.0) +MVK_EXTENSION(EXT_buffer_device_address, EXT_BUFFER_DEVICE_ADDRESS, DEVICE, 13.0, 16.0) MVK_EXTENSION(EXT_debug_marker, EXT_DEBUG_MARKER, DEVICE, 10.11, 8.0) MVK_EXTENSION(EXT_debug_report, EXT_DEBUG_REPORT, INSTANCE, 10.11, 8.0) MVK_EXTENSION(EXT_debug_utils, EXT_DEBUG_UTILS, INSTANCE, 10.11, 8.0) MVK_EXTENSION(EXT_descriptor_indexing, EXT_DESCRIPTOR_INDEXING, DEVICE, 10.11, 8.0) +MVK_EXTENSION(EXT_external_memory_host, EXT_EXTERNAL_MEMORY_HOST, DEVICE, 10.11, 8.0) MVK_EXTENSION(EXT_fragment_shader_interlock, EXT_FRAGMENT_SHADER_INTERLOCK, DEVICE, 10.13, 11.0) MVK_EXTENSION(EXT_hdr_metadata, EXT_HDR_METADATA, DEVICE, 10.15, MVK_NA) MVK_EXTENSION(EXT_host_query_reset, EXT_HOST_QUERY_RESET, DEVICE, 10.11, 8.0) @@ -102,6 +106,7 @@ MVK_EXTENSION(EXT_inline_uniform_block, EXT_INLINE_UNIFORM_BLOCK, MVK_EXTENSION(EXT_memory_budget, EXT_MEMORY_BUDGET, DEVICE, 10.13, 11.0) MVK_EXTENSION(EXT_metal_objects, EXT_METAL_OBJECTS, DEVICE, 10.11, 8.0) MVK_EXTENSION(EXT_metal_surface, EXT_METAL_SURFACE, INSTANCE, 10.11, 8.0) +MVK_EXTENSION(EXT_pipeline_creation_cache_control, EXT_PIPELINE_CREATION_CACHE_CONTROL, DEVICE, 10.11, 8.0) MVK_EXTENSION(EXT_post_depth_coverage, EXT_POST_DEPTH_COVERAGE, DEVICE, 11.0, 11.0) MVK_EXTENSION(EXT_private_data, EXT_PRIVATE_DATA, DEVICE, 10.11, 8.0) MVK_EXTENSION(EXT_robustness2, EXT_ROBUSTNESS_2, DEVICE, 10.11, 8.0) @@ -109,10 +114,13 @@ MVK_EXTENSION(EXT_sample_locations, EXT_SAMPLE_LOCATIONS, MVK_EXTENSION(EXT_sampler_filter_minmax, EXT_SAMPLER_FILTER_MINMAX, DEVICE, MVK_NA, MVK_NA) MVK_EXTENSION(EXT_scalar_block_layout, EXT_SCALAR_BLOCK_LAYOUT, DEVICE, 10.11, 8.0) MVK_EXTENSION(EXT_separate_stencil_usage, EXT_SEPARATE_STENCIL_USAGE, DEVICE, 10.11, 8.0) +MVK_EXTENSION(EXT_shader_atomic_float, EXT_SHADER_ATOMIC_FLOAT, DEVICE, 13.0, 16.0) MVK_EXTENSION(EXT_shader_stencil_export, EXT_SHADER_STENCIL_EXPORT, DEVICE, 10.14, 12.0) MVK_EXTENSION(EXT_shader_viewport_index_layer, EXT_SHADER_VIEWPORT_INDEX_LAYER, DEVICE, 10.11, 8.0) MVK_EXTENSION(EXT_subgroup_size_control, EXT_SUBGROUP_SIZE_CONTROL, DEVICE, 10.14, 13.0) +MVK_EXTENSION(EXT_surface_maintenance1, EXT_SURFACE_MAINTENANCE_1, INSTANCE, 10.11, 8.0) MVK_EXTENSION(EXT_swapchain_colorspace, EXT_SWAPCHAIN_COLOR_SPACE, INSTANCE, 10.11, 9.0) +MVK_EXTENSION(EXT_swapchain_maintenance1, EXT_SWAPCHAIN_MAINTENANCE_1, DEVICE, 10.11, 8.0) MVK_EXTENSION(EXT_texel_buffer_alignment, EXT_TEXEL_BUFFER_ALIGNMENT, DEVICE, 10.13, 11.0) MVK_EXTENSION(EXT_texture_compression_astc_hdr, EXT_TEXTURE_COMPRESSION_ASTC_HDR, DEVICE, 11.0, 13.0) MVK_EXTENSION(EXT_vertex_attribute_divisor, EXT_VERTEX_ATTRIBUTE_DIVISOR, DEVICE, 10.11, 8.0) diff --git a/MoltenVK/MoltenVK/Layers/MVKExtensions.h b/MoltenVK/MoltenVK/Layers/MVKExtensions.h index 5ec51533a..64b35e360 100644 --- a/MoltenVK/MoltenVK/Layers/MVKExtensions.h +++ b/MoltenVK/MoltenVK/Layers/MVKExtensions.h @@ -1,7 +1,7 @@ /* * MVKExtensions.h * - * Copyright (c) 2015-2022 The Brenwill Workshop Ltd. (http://www.brenwill.com) + * Copyright (c) 2015-2023 The Brenwill Workshop Ltd. (http://www.brenwill.com) * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. diff --git a/MoltenVK/MoltenVK/Layers/MVKExtensions.mm b/MoltenVK/MoltenVK/Layers/MVKExtensions.mm index c11262273..596f5882a 100644 --- a/MoltenVK/MoltenVK/Layers/MVKExtensions.mm +++ b/MoltenVK/MoltenVK/Layers/MVKExtensions.mm @@ -1,7 +1,7 @@ /* * MVKExtensions.mm * - * Copyright (c) 2015-2022 The Brenwill Workshop Ltd. (http://www.brenwill.com) + * Copyright (c) 2015-2023 The Brenwill Workshop Ltd. (http://www.brenwill.com) * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. @@ -141,7 +141,7 @@ static bool mvkIsSupportedOnPlatform(VkExtensionProperties* pProperties) { const MVKExtension* extnAry = &extensionArray; for (uint32_t extnIdx = 0; extnIdx < extnCnt; extnIdx++) { const MVKExtension& extn = extnAry[extnIdx]; - if ( strcmp(extn.pProperties->extensionName, extnName) == 0 ) { + if (mvkStringsAreEqual(extn.pProperties->extensionName, extnName)) { return extn.enabled; } } @@ -153,7 +153,7 @@ static bool mvkIsSupportedOnPlatform(VkExtensionProperties* pProperties) { MVKExtension* extnAry = &extensionArray; for (uint32_t extnIdx = 0; extnIdx < extnCnt; extnIdx++) { MVKExtension& extn = extnAry[extnIdx]; - if ( strcmp(extn.pProperties->extensionName, extnName) == 0 ) { + if (mvkStringsAreEqual(extn.pProperties->extensionName, extnName)) { extn.enabled = true; return; } diff --git a/MoltenVK/MoltenVK/Layers/MVKLayers.h b/MoltenVK/MoltenVK/Layers/MVKLayers.h index 1a99f4324..8776986d4 100644 --- a/MoltenVK/MoltenVK/Layers/MVKLayers.h +++ b/MoltenVK/MoltenVK/Layers/MVKLayers.h @@ -1,7 +1,7 @@ /* * MVKLayers.h * - * Copyright (c) 2015-2022 The Brenwill Workshop Ltd. (http://www.brenwill.com) + * Copyright (c) 2015-2023 The Brenwill Workshop Ltd. (http://www.brenwill.com) * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. diff --git a/MoltenVK/MoltenVK/Layers/MVKLayers.mm b/MoltenVK/MoltenVK/Layers/MVKLayers.mm index 2613cee29..040712b31 100644 --- a/MoltenVK/MoltenVK/Layers/MVKLayers.mm +++ b/MoltenVK/MoltenVK/Layers/MVKLayers.mm @@ -1,7 +1,7 @@ /* * MVKLayers.mm * - * Copyright (c) 2015-2022 The Brenwill Workshop Ltd. (http://www.brenwill.com) + * Copyright (c) 2015-2023 The Brenwill Workshop Ltd. (http://www.brenwill.com) * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. @@ -19,7 +19,6 @@ #include "MVKLayers.h" #include "MVKEnvironment.h" #include "MVKFoundation.h" -#include "vk_mvk_moltenvk.h" #include using namespace std; @@ -65,7 +64,7 @@ uint32_t layCnt = (uint32_t)_layers.size(); for (uint32_t layIdx = 0; layIdx < layCnt; layIdx++) { MVKLayer* pLayer = &_layers[layIdx]; - if ( strcmp(pLayer->getName(), pLayerName) == 0 ) { return pLayer; } + if (mvkStringsAreEqual(pLayer->getName(), pLayerName)) { return pLayer; } } return VK_NULL_HANDLE; } diff --git a/MoltenVK/MoltenVK/OS/CAMetalLayer+MoltenVK.h b/MoltenVK/MoltenVK/OS/CAMetalLayer+MoltenVK.h index 0cf039bd5..7181b237c 100644 --- a/MoltenVK/MoltenVK/OS/CAMetalLayer+MoltenVK.h +++ b/MoltenVK/MoltenVK/OS/CAMetalLayer+MoltenVK.h @@ -1,7 +1,7 @@ /* * CAMetalLayer+MoltenVK.h * - * Copyright (c) 2015-2022 The Brenwill Workshop Ltd. (http://www.brenwill.com) + * Copyright (c) 2015-2023 The Brenwill Workshop Ltd. (http://www.brenwill.com) * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. @@ -38,20 +38,11 @@ /** * Returns the natural drawable size for this layer. * - * The natural drawable size is the size of the bounds property of this layer, multiplied - * by the contentsScale property of this layer, and is the value that the drawableSize - * property will be set to when the updatedDrawableSizeMVK nethod is invoked. + * The natural drawable size is the size of the bounds + * property multiplied by the contentsScale property. */ @property(nonatomic, readonly) CGSize naturalDrawableSizeMVK; -/** - * Ensures the drawableSize property of this layer is up to date, by ensuring - * it is set to the value returned by the naturalDrawableSizeMVK property. - * - * Returns the updated drawableSize value. - */ --(CGSize) updatedDrawableSizeMVK; - /** * Replacement for the displaySyncEnabled property. * diff --git a/MoltenVK/MoltenVK/OS/CAMetalLayer+MoltenVK.m b/MoltenVK/MoltenVK/OS/CAMetalLayer+MoltenVK.m index 0214e8b48..a9e5a009a 100644 --- a/MoltenVK/MoltenVK/OS/CAMetalLayer+MoltenVK.m +++ b/MoltenVK/MoltenVK/OS/CAMetalLayer+MoltenVK.m @@ -1,7 +1,7 @@ /* * CAMetalLayer+MoltenVK.m * - * Copyright (c) 2015-2022 The Brenwill Workshop Ltd. (http://www.brenwill.com) + * Copyright (c) 2015-2023 The Brenwill Workshop Ltd. (http://www.brenwill.com) * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. @@ -31,18 +31,8 @@ @implementation CAMetalLayer (MoltenVK) -(CGSize) naturalDrawableSizeMVK { CGSize drawSize = self.bounds.size; CGFloat scaleFactor = self.contentsScale; - drawSize.width = trunc(drawSize.width * scaleFactor); - drawSize.height = trunc(drawSize.height * scaleFactor); - return drawSize; -} - -// Only update drawableSize property value if it needs to be, -// in case updating to same value causes internal reconfigurations. --(CGSize) updatedDrawableSizeMVK { - CGSize drawSize = self.naturalDrawableSizeMVK; - if ( !CGSizeEqualToSize(drawSize, self.drawableSize) ) { - self.drawableSize = drawSize; - } + drawSize.width *= scaleFactor; + drawSize.height *= scaleFactor; return drawSize; } diff --git a/MoltenVK/MoltenVK/OS/MTLRenderPassDepthAttachmentDescriptor+MoltenVK.h b/MoltenVK/MoltenVK/OS/MTLRenderPassDepthAttachmentDescriptor+MoltenVK.h index 364eeb724..fb180ab3f 100644 --- a/MoltenVK/MoltenVK/OS/MTLRenderPassDepthAttachmentDescriptor+MoltenVK.h +++ b/MoltenVK/MoltenVK/OS/MTLRenderPassDepthAttachmentDescriptor+MoltenVK.h @@ -1,7 +1,7 @@ /* * MTLRenderPassDepthAttachmentDescriptor+MoltenVK.h * - * Copyright (c) 2020-2022 Chip Davis for CodeWeavers + * Copyright (c) 2020-2023 Chip Davis for CodeWeavers * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. diff --git a/MoltenVK/MoltenVK/OS/MTLRenderPassDepthAttachmentDescriptor+MoltenVK.m b/MoltenVK/MoltenVK/OS/MTLRenderPassDepthAttachmentDescriptor+MoltenVK.m index 37b083fd1..21cfbeffd 100644 --- a/MoltenVK/MoltenVK/OS/MTLRenderPassDepthAttachmentDescriptor+MoltenVK.m +++ b/MoltenVK/MoltenVK/OS/MTLRenderPassDepthAttachmentDescriptor+MoltenVK.m @@ -1,7 +1,7 @@ /* * MTLRenderPassDepthAttachmentDescriptor+MoltenVK.m * - * Copyright (c) 2020-2022 Chip Davis for CodeWeavers + * Copyright (c) 2020-2023 Chip Davis for CodeWeavers * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. diff --git a/MoltenVK/MoltenVK/OS/MTLRenderPassDescriptor+MoltenVK.h b/MoltenVK/MoltenVK/OS/MTLRenderPassDescriptor+MoltenVK.h index aff36d88c..51d72e737 100644 --- a/MoltenVK/MoltenVK/OS/MTLRenderPassDescriptor+MoltenVK.h +++ b/MoltenVK/MoltenVK/OS/MTLRenderPassDescriptor+MoltenVK.h @@ -1,7 +1,7 @@ /* * MTLRenderPassDescriptor+MoltenVK.h * - * Copyright (c) 2015-2022 The Brenwill Workshop Ltd. (http://www.brenwill.com) + * Copyright (c) 2015-2023 The Brenwill Workshop Ltd. (http://www.brenwill.com) * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. diff --git a/MoltenVK/MoltenVK/OS/MTLRenderPassDescriptor+MoltenVK.m b/MoltenVK/MoltenVK/OS/MTLRenderPassDescriptor+MoltenVK.m index 0a3ee2350..d5a9a1238 100644 --- a/MoltenVK/MoltenVK/OS/MTLRenderPassDescriptor+MoltenVK.m +++ b/MoltenVK/MoltenVK/OS/MTLRenderPassDescriptor+MoltenVK.m @@ -1,7 +1,7 @@ /* * MTLRenderPassDescriptor+MoltenVK.m * - * Copyright (c) 2015-2022 The Brenwill Workshop Ltd. (http://www.brenwill.com) + * Copyright (c) 2015-2023 The Brenwill Workshop Ltd. (http://www.brenwill.com) * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. diff --git a/MoltenVK/MoltenVK/OS/MTLRenderPassStencilAttachmentDescriptor+MoltenVK.h b/MoltenVK/MoltenVK/OS/MTLRenderPassStencilAttachmentDescriptor+MoltenVK.h index 54dfacc27..fe51ad610 100644 --- a/MoltenVK/MoltenVK/OS/MTLRenderPassStencilAttachmentDescriptor+MoltenVK.h +++ b/MoltenVK/MoltenVK/OS/MTLRenderPassStencilAttachmentDescriptor+MoltenVK.h @@ -1,7 +1,7 @@ /* * MTLRenderPassStencilAttachmentDescriptor+MoltenVK.h * - * Copyright (c) 2020-2022 Chip Davis for CodeWeavers + * Copyright (c) 2020-2023 Chip Davis for CodeWeavers * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. diff --git a/MoltenVK/MoltenVK/OS/MTLRenderPassStencilAttachmentDescriptor+MoltenVK.m b/MoltenVK/MoltenVK/OS/MTLRenderPassStencilAttachmentDescriptor+MoltenVK.m index 31fd4f570..8a54d4077 100644 --- a/MoltenVK/MoltenVK/OS/MTLRenderPassStencilAttachmentDescriptor+MoltenVK.m +++ b/MoltenVK/MoltenVK/OS/MTLRenderPassStencilAttachmentDescriptor+MoltenVK.m @@ -1,7 +1,7 @@ /* * MTLRenderPassStencilAttachmentDescriptor+MoltenVK.m * - * Copyright (c) 2020-2022 Chip Davis for CodeWeavers + * Copyright (c) 2020-2023 Chip Davis for CodeWeavers * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. diff --git a/MoltenVK/MoltenVK/OS/MTLRenderPipelineDescriptor+MoltenVK.h b/MoltenVK/MoltenVK/OS/MTLRenderPipelineDescriptor+MoltenVK.h index 9e271cdee..36a5f41fc 100644 --- a/MoltenVK/MoltenVK/OS/MTLRenderPipelineDescriptor+MoltenVK.h +++ b/MoltenVK/MoltenVK/OS/MTLRenderPipelineDescriptor+MoltenVK.h @@ -1,7 +1,7 @@ /* * MTLRenderPipelineDescriptor+MoltenVK.h * - * Copyright (c) 2015-2022 The Brenwill Workshop Ltd. (http://www.brenwill.com) + * Copyright (c) 2015-2023 The Brenwill Workshop Ltd. (http://www.brenwill.com) * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. diff --git a/MoltenVK/MoltenVK/OS/MTLRenderPipelineDescriptor+MoltenVK.m b/MoltenVK/MoltenVK/OS/MTLRenderPipelineDescriptor+MoltenVK.m index 4b84041e3..147a3f4ab 100644 --- a/MoltenVK/MoltenVK/OS/MTLRenderPipelineDescriptor+MoltenVK.m +++ b/MoltenVK/MoltenVK/OS/MTLRenderPipelineDescriptor+MoltenVK.m @@ -1,7 +1,7 @@ /* * MTLRenderPipelineDescriptor+MoltenVK.m * - * Copyright (c) 2015-2022 The Brenwill Workshop Ltd. (http://www.brenwill.com) + * Copyright (c) 2015-2023 The Brenwill Workshop Ltd. (http://www.brenwill.com) * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. diff --git a/MoltenVK/MoltenVK/OS/MTLSamplerDescriptor+MoltenVK.h b/MoltenVK/MoltenVK/OS/MTLSamplerDescriptor+MoltenVK.h index f2a02fec7..4ca01ccab 100644 --- a/MoltenVK/MoltenVK/OS/MTLSamplerDescriptor+MoltenVK.h +++ b/MoltenVK/MoltenVK/OS/MTLSamplerDescriptor+MoltenVK.h @@ -1,7 +1,7 @@ /* * MTLSamplerDescriptor+MoltenVK.h * - * Copyright (c) 2015-2022 The Brenwill Workshop Ltd. (http://www.brenwill.com) + * Copyright (c) 2015-2023 The Brenwill Workshop Ltd. (http://www.brenwill.com) * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. diff --git a/MoltenVK/MoltenVK/OS/MTLSamplerDescriptor+MoltenVK.m b/MoltenVK/MoltenVK/OS/MTLSamplerDescriptor+MoltenVK.m index 60e735b63..f7474d754 100644 --- a/MoltenVK/MoltenVK/OS/MTLSamplerDescriptor+MoltenVK.m +++ b/MoltenVK/MoltenVK/OS/MTLSamplerDescriptor+MoltenVK.m @@ -1,7 +1,7 @@ /* * MTLSamplerDescriptor+MoltenVK.m * - * Copyright (c) 2015-2022 The Brenwill Workshop Ltd. (http://www.brenwill.com) + * Copyright (c) 2015-2023 The Brenwill Workshop Ltd. (http://www.brenwill.com) * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. diff --git a/MoltenVK/MoltenVK/OS/MTLTextureDescriptor+MoltenVK.h b/MoltenVK/MoltenVK/OS/MTLTextureDescriptor+MoltenVK.h index cbee46804..52f2203dc 100644 --- a/MoltenVK/MoltenVK/OS/MTLTextureDescriptor+MoltenVK.h +++ b/MoltenVK/MoltenVK/OS/MTLTextureDescriptor+MoltenVK.h @@ -1,7 +1,7 @@ /* * MTLTextureDescriptor+MoltenVK.h * - * Copyright (c) 2015-2022 The Brenwill Workshop Ltd. (http://www.brenwill.com) + * Copyright (c) 2015-2023 The Brenwill Workshop Ltd. (http://www.brenwill.com) * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. diff --git a/MoltenVK/MoltenVK/OS/MTLTextureDescriptor+MoltenVK.m b/MoltenVK/MoltenVK/OS/MTLTextureDescriptor+MoltenVK.m index 0c045326f..46c91aefd 100644 --- a/MoltenVK/MoltenVK/OS/MTLTextureDescriptor+MoltenVK.m +++ b/MoltenVK/MoltenVK/OS/MTLTextureDescriptor+MoltenVK.m @@ -1,7 +1,7 @@ /* * MTLTextureDescriptor+MoltenVK.m * - * Copyright (c) 2015-2022 The Brenwill Workshop Ltd. (http://www.brenwill.com) + * Copyright (c) 2015-2023 The Brenwill Workshop Ltd. (http://www.brenwill.com) * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. diff --git a/MoltenVK/MoltenVK/OS/MVKGPUCapture.h b/MoltenVK/MoltenVK/OS/MVKGPUCapture.h index ca3fbb2a8..6e4c67d8c 100644 --- a/MoltenVK/MoltenVK/OS/MVKGPUCapture.h +++ b/MoltenVK/MoltenVK/OS/MVKGPUCapture.h @@ -1,7 +1,7 @@ /* * MVKGPUCapture.h * - * Copyright (c) 2015-2022 The Brenwill Workshop Ltd. (http://www.brenwill.com) + * Copyright (c) 2015-2023 The Brenwill Workshop Ltd. (http://www.brenwill.com) * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. diff --git a/MoltenVK/MoltenVK/OS/MVKGPUCapture.mm b/MoltenVK/MoltenVK/OS/MVKGPUCapture.mm index 9248915bc..785694cd2 100644 --- a/MoltenVK/MoltenVK/OS/MVKGPUCapture.mm +++ b/MoltenVK/MoltenVK/OS/MVKGPUCapture.mm @@ -1,7 +1,7 @@ /* * MVKGPUCapture.mm * - * Copyright (c) 2015-2022 The Brenwill Workshop Ltd. (http://www.brenwill.com) + * Copyright (c) 2015-2023 The Brenwill Workshop Ltd. (http://www.brenwill.com) * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. diff --git a/MoltenVK/MoltenVK/OS/NSString+MoltenVK.h b/MoltenVK/MoltenVK/OS/NSString+MoltenVK.h index 8173d84fc..8cc02fb80 100644 --- a/MoltenVK/MoltenVK/OS/NSString+MoltenVK.h +++ b/MoltenVK/MoltenVK/OS/NSString+MoltenVK.h @@ -1,7 +1,7 @@ /* * NSString+MoltenVK.h * - * Copyright (c) 2015-2022 The Brenwill Workshop Ltd. (http://www.brenwill.com) + * Copyright (c) 2015-2023 The Brenwill Workshop Ltd. (http://www.brenwill.com) * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. diff --git a/MoltenVK/MoltenVK/OS/NSString+MoltenVK.mm b/MoltenVK/MoltenVK/OS/NSString+MoltenVK.mm index 41371d7f4..09506b92a 100644 --- a/MoltenVK/MoltenVK/OS/NSString+MoltenVK.mm +++ b/MoltenVK/MoltenVK/OS/NSString+MoltenVK.mm @@ -1,7 +1,7 @@ /* * NSString+MoltenVK.mm * - * Copyright (c) 2015-2022 The Brenwill Workshop Ltd. (http://www.brenwill.com) + * Copyright (c) 2015-2023 The Brenwill Workshop Ltd. (http://www.brenwill.com) * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. diff --git a/MoltenVK/MoltenVK/Utility/MVKBaseObject.h b/MoltenVK/MoltenVK/Utility/MVKBaseObject.h index f06fe105c..d71a37f89 100644 --- a/MoltenVK/MoltenVK/Utility/MVKBaseObject.h +++ b/MoltenVK/MoltenVK/Utility/MVKBaseObject.h @@ -1,7 +1,7 @@ /* * MVKBaseObject.h * - * Copyright (c) 2015-2022 The Brenwill Workshop Ltd. (http://www.brenwill.com) + * Copyright (c) 2015-2023 The Brenwill Workshop Ltd. (http://www.brenwill.com) * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. diff --git a/MoltenVK/MoltenVK/Utility/MVKBaseObject.mm b/MoltenVK/MoltenVK/Utility/MVKBaseObject.mm index 7d6806750..d2dc3c91f 100644 --- a/MoltenVK/MoltenVK/Utility/MVKBaseObject.mm +++ b/MoltenVK/MoltenVK/Utility/MVKBaseObject.mm @@ -1,7 +1,7 @@ /* * MVKBaseObject.mm * - * Copyright (c) 2015-2022 The Brenwill Workshop Ltd. (http://www.brenwill.com) + * Copyright (c) 2015-2023 The Brenwill Workshop Ltd. (http://www.brenwill.com) * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. diff --git a/MoltenVK/MoltenVK/Utility/MVKBitArray.h b/MoltenVK/MoltenVK/Utility/MVKBitArray.h index 351c2985f..46bf41cdf 100755 --- a/MoltenVK/MoltenVK/Utility/MVKBitArray.h +++ b/MoltenVK/MoltenVK/Utility/MVKBitArray.h @@ -1,7 +1,7 @@ /* * MVKBitArray.h * - * Copyright (c) 2020-2022 The Brenwill Workshop Ltd. (http://www.brenwill.com) + * Copyright (c) 2020-2023 The Brenwill Workshop Ltd. (http://www.brenwill.com) * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. diff --git a/MoltenVK/MoltenVK/Utility/MVKBlockObserver.h b/MoltenVK/MoltenVK/Utility/MVKBlockObserver.h index d71a41c02..c3a9142cf 100644 --- a/MoltenVK/MoltenVK/Utility/MVKBlockObserver.h +++ b/MoltenVK/MoltenVK/Utility/MVKBlockObserver.h @@ -1,7 +1,7 @@ /* * MVKBlockObserver.h * - * Copyright (c) 2019-2022 Chip Davis for CodeWeavers + * Copyright (c) 2019-2023 Chip Davis for CodeWeavers * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. diff --git a/MoltenVK/MoltenVK/Utility/MVKBlockObserver.m b/MoltenVK/MoltenVK/Utility/MVKBlockObserver.m index a608fa2fd..7db2f0c22 100644 --- a/MoltenVK/MoltenVK/Utility/MVKBlockObserver.m +++ b/MoltenVK/MoltenVK/Utility/MVKBlockObserver.m @@ -1,7 +1,7 @@ /* * MVKBlockObserver.m * - * Copyright (c) 2019-2022 Chip Davis for CodeWeavers + * Copyright (c) 2019-2023 Chip Davis for CodeWeavers * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. diff --git a/MoltenVK/MoltenVK/Utility/MVKCodec.h b/MoltenVK/MoltenVK/Utility/MVKCodec.h index 483e376f6..595a50fa6 100644 --- a/MoltenVK/MoltenVK/Utility/MVKCodec.h +++ b/MoltenVK/MoltenVK/Utility/MVKCodec.h @@ -1,7 +1,7 @@ /* * MVKCodec.h * - * Copyright (c) 2018-2022 Chip Davis for CodeWeavers + * Copyright (c) 2018-2023 Chip Davis for CodeWeavers * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. @@ -19,17 +19,18 @@ #pragma once -#include "MVKFoundation.h" +#include "MVKEnvironment.h" +#include #include +#pragma mark - #pragma mark Texture data codecs /** * This is the base class implemented by all codecs supported by MoltenVK. - * Objects of this class are used to decompress texture data for upload to a - * 3D texture. + * Objects of this class are used to decompress texture data for upload to a 3D texture. */ class MVKCodec { @@ -43,8 +44,89 @@ class MVKCodec { }; + +#pragma mark - +#pragma mark General data compressor + +/** + * Holds compressed data, along with information allowing it to be decompressed again. + * The template class C must support the basic data container methods data(), size() and resize(). + * + * THIS CLASS IS STREAMED OUT AS PART OF THE PIEPLINE CACHE. + * STURCTURAL CHANGES TO THIS CLASS MUST BE CAPTURED IN THE STREAMING LOGIC OF THE PIPELINE CACHE. + */ +template +class MVKCompressor { + +public: + + /** + * Compresses the content in the data container using the algorithm, and retains + * the compressed content. If an error occurs, or if the compressed data is actually + * larger (which can happen with some compression algorithms if the source is small), + * the uncompressed content is retained. Returns true if the content was successfully + * compressed, or returns false if the content was retained as uncompressed, + */ + bool compress(const C& uncompressed, MVKConfigCompressionAlgorithm algorithm) { + + _uncompressedSize = uncompressed.size(); + _compressed.resize(_uncompressedSize); + _algorithm = algorithm; + size_t compSize = mvkCompress((uint8_t*)uncompressed.data(), uncompressed.size(), + _compressed.data(), _compressed.size(), + _algorithm); + + bool wasCompressed = (compSize > 0); + if ( !wasCompressed ) { + _algorithm = MVK_CONFIG_COMPRESSION_ALGORITHM_NONE; + compSize = mvkCompress((uint8_t*)uncompressed.data(), uncompressed.size(), + _compressed.data(), _compressed.size(), + _algorithm); + } + + _compressed.resize(compSize); + _compressed.shrink_to_fit(); + + return wasCompressed; + } + + /** Decompress the retained compressed content into the data container. */ + void decompress(C& uncompressed) { + uncompressed.resize(_uncompressedSize); + mvkDecompress(_compressed.data(), _compressed.size(), + (uint8_t*)uncompressed.data(), uncompressed.size(), + _algorithm); + } + + std::vector _compressed; + size_t _uncompressedSize = 0; + MVKConfigCompressionAlgorithm _algorithm = MVK_CONFIG_COMPRESSION_ALGORITHM_NONE; +}; + + +#pragma mark - +#pragma mark Support functions + /** Returns an appropriate codec for the given format, or nullptr if the format is not supported. */ std::unique_ptr mvkCreateCodec(VkFormat format); /** Returns whether or not the given format can be decompressed. */ bool mvkCanDecodeFormat(VkFormat format); + +/** + * Compresses the source bytes into the destination bytes using a compression algorithm, + * and returns the number of bytes written to dstBytes. If an error occurs, or the compressed + * data is larger than dstSize, no data is copied to dstBytes, and zero is returned. + */ +size_t mvkCompress(const uint8_t* srcBytes, size_t srcSize, + uint8_t* dstBytes, size_t dstSize, + MVKConfigCompressionAlgorithm compAlgo); + +/** + * Decompresses the source bytes into the destination bytes using a compression algorithm, + * and returns the number of bytes written to dstBytes. If an error occurs, or the decompressed + * data is larger than dstSize, no data is copied to dstBytes, and zero is returned. + */ +size_t mvkDecompress(const uint8_t* srcBytes, size_t srcSize, + uint8_t* dstBytes, size_t dstSize, + MVKConfigCompressionAlgorithm compAlgo); diff --git a/MoltenVK/MoltenVK/Utility/MVKCodec.cpp b/MoltenVK/MoltenVK/Utility/MVKCodec.mm similarity index 53% rename from MoltenVK/MoltenVK/Utility/MVKCodec.cpp rename to MoltenVK/MoltenVK/Utility/MVKCodec.mm index b30a21726..7c07d6afd 100644 --- a/MoltenVK/MoltenVK/Utility/MVKCodec.cpp +++ b/MoltenVK/MoltenVK/Utility/MVKCodec.mm @@ -1,7 +1,7 @@ /* * MVKCodec.cpp * - * Copyright (c) 2018-2022 Chip Davis for CodeWeavers + * Copyright (c) 2018-2023 Chip Davis for CodeWeavers * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. @@ -18,10 +18,13 @@ #include "MVKCodec.h" +#include "MVKBaseObject.h" +#include "MVKFoundation.h" #include #include +using namespace std; using simd::float3; using simd::float4; @@ -62,8 +65,8 @@ class MVKDXTnCodec : public MVKCodec { for (uint32_t y = 0; y < extent.height; y += 4) { for (uint32_t x = 0; x < extent.width; x += 4) { VkExtent2D blockExtent; - blockExtent.width = std::min(extent.width - x, 4u); - blockExtent.height = std::min(extent.height - y, 4u); + blockExtent.width = min(extent.width - x, 4u); + blockExtent.height = min(extent.height - y, 4u); decompressDXTnBlock(pSrcRow + x * (blockByteCount / 4), pDestRow + x * 4, blockExtent, destLayout.rowPitch, _format); } @@ -90,7 +93,11 @@ class MVKDXTnCodec : public MVKCodec { VkFormat _format; }; -std::unique_ptr mvkCreateCodec(VkFormat format) { + +#pragma mark - +#pragma mark Support functions + +unique_ptr mvkCreateCodec(VkFormat format) { switch (format) { case VK_FORMAT_BC1_RGB_UNORM_BLOCK: case VK_FORMAT_BC1_RGB_SRGB_BLOCK: @@ -100,7 +107,7 @@ std::unique_ptr mvkCreateCodec(VkFormat format) { case VK_FORMAT_BC2_SRGB_BLOCK: case VK_FORMAT_BC3_UNORM_BLOCK: case VK_FORMAT_BC3_SRGB_BLOCK: - return std::unique_ptr(new MVKDXTnCodec(format)); + return unique_ptr(new MVKDXTnCodec(format)); default: return nullptr; @@ -123,3 +130,63 @@ bool mvkCanDecodeFormat(VkFormat format) { return false; } } + +static NSDataCompressionAlgorithm getSystemCompressionAlgo(MVKConfigCompressionAlgorithm compAlgo) { + switch (compAlgo) { + case MVK_CONFIG_COMPRESSION_ALGORITHM_NONE: return NSDataCompressionAlgorithmLZFSE; + case MVK_CONFIG_COMPRESSION_ALGORITHM_LZFSE: return NSDataCompressionAlgorithmLZFSE; + case MVK_CONFIG_COMPRESSION_ALGORITHM_LZ4: return NSDataCompressionAlgorithmLZ4; + case MVK_CONFIG_COMPRESSION_ALGORITHM_LZMA: return NSDataCompressionAlgorithmLZMA; + case MVK_CONFIG_COMPRESSION_ALGORITHM_ZLIB: return NSDataCompressionAlgorithmZlib; + default: return NSDataCompressionAlgorithmLZFSE; + } +} + +// Only copy into the dstBytes if it can fit, otherwise the data will be corrupted +static size_t mvkCompressDecompress(const uint8_t* srcBytes, size_t srcSize, + uint8_t* dstBytes, size_t dstSize, + MVKConfigCompressionAlgorithm compAlgo, + bool isCompressing) { + size_t dstByteCount = 0; + if (compAlgo != MVK_CONFIG_COMPRESSION_ALGORITHM_NONE) { + @autoreleasepool { + NSDataCompressionAlgorithm sysCompAlgo = getSystemCompressionAlgo(compAlgo); + NSData* srcData = [NSData dataWithBytesNoCopy: (void*)srcBytes length: srcSize freeWhenDone: NO]; + + NSError* err = nil; + NSData* dstData = (isCompressing + ? [srcData compressedDataUsingAlgorithm: sysCompAlgo error: &err] + : [srcData decompressedDataUsingAlgorithm: sysCompAlgo error: &err]); + if ( !err ) { + size_t dataLen = dstData.length; + if (dstSize >= dataLen) { + [dstData getBytes: dstBytes length: dstSize]; + dstByteCount = dataLen; + } + } else { + MVKBaseObject::reportError(nullptr, VK_ERROR_FORMAT_NOT_SUPPORTED, + "Could not %scompress data (Error code %li):\n%s", + (isCompressing ? "" : "de"), + (long)err.code, err.localizedDescription.UTF8String); + } + } + } else if (dstSize >= srcSize) { + mvkCopy(dstBytes, srcBytes, srcSize); + dstByteCount = srcSize; + } + return dstByteCount; +} + +size_t mvkCompress(const uint8_t* srcBytes, size_t srcSize, + uint8_t* dstBytes, size_t dstSize, + MVKConfigCompressionAlgorithm compAlgo) { + + return mvkCompressDecompress(srcBytes, srcSize, dstBytes, dstSize, compAlgo, true); +} + +size_t mvkDecompress(const uint8_t* srcBytes, size_t srcSize, + uint8_t* dstBytes, size_t dstSize, + MVKConfigCompressionAlgorithm compAlgo) { + + return mvkCompressDecompress(srcBytes, srcSize, dstBytes, dstSize, compAlgo, false); +} diff --git a/MoltenVK/MoltenVK/Utility/MVKDXTnCodec.def b/MoltenVK/MoltenVK/Utility/MVKDXTnCodec.def index bbea094cc..aa9051a98 100644 --- a/MoltenVK/MoltenVK/Utility/MVKDXTnCodec.def +++ b/MoltenVK/MoltenVK/Utility/MVKDXTnCodec.def @@ -1,7 +1,7 @@ /* * MVKDXTnCodec.def * - * Copyright (c) 2018-2022 Chip Davis for CodeWeavers + * Copyright (c) 2018-2023 Chip Davis for CodeWeavers * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. diff --git a/MoltenVK/MoltenVK/Utility/MVKEnvironment.cpp b/MoltenVK/MoltenVK/Utility/MVKEnvironment.cpp index f28af0939..1381c616b 100644 --- a/MoltenVK/MoltenVK/Utility/MVKEnvironment.cpp +++ b/MoltenVK/MoltenVK/Utility/MVKEnvironment.cpp @@ -1,7 +1,7 @@ /* * MVKEnvironment.cpp * - * Copyright (c) 2015-2022 The Brenwill Workshop Ltd. (http://www.brenwill.com) + * Copyright (c) 2015-2023 The Brenwill Workshop Ltd. (http://www.brenwill.com) * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. @@ -30,22 +30,23 @@ static void mvkInitConfigFromEnvVars() { MVK_SET_FROM_ENV_OR_BUILD_BOOL (evCfg.debugMode, MVK_DEBUG); MVK_SET_FROM_ENV_OR_BUILD_BOOL (evCfg.shaderConversionFlipVertexY, MVK_CONFIG_SHADER_CONVERSION_FLIP_VERTEX_Y); MVK_SET_FROM_ENV_OR_BUILD_BOOL (evCfg.synchronousQueueSubmits, MVK_CONFIG_SYNCHRONOUS_QUEUE_SUBMITS); - MVK_SET_FROM_ENV_OR_BUILD_BOOL (evCfg.prefillMetalCommandBuffers, MVK_CONFIG_PREFILL_METAL_COMMAND_BUFFERS); + MVK_SET_FROM_ENV_OR_BUILD_INT32 (evCfg.prefillMetalCommandBuffers, MVK_CONFIG_PREFILL_METAL_COMMAND_BUFFERS); MVK_SET_FROM_ENV_OR_BUILD_INT32 (evCfg.maxActiveMetalCommandBuffersPerQueue, MVK_CONFIG_MAX_ACTIVE_METAL_COMMAND_BUFFERS_PER_QUEUE); MVK_SET_FROM_ENV_OR_BUILD_BOOL (evCfg.supportLargeQueryPools, MVK_CONFIG_SUPPORT_LARGE_QUERY_POOLS); MVK_SET_FROM_ENV_OR_BUILD_BOOL (evCfg.presentWithCommandBuffer, MVK_CONFIG_PRESENT_WITH_COMMAND_BUFFER); - MVK_SET_FROM_ENV_OR_BUILD_BOOL (evCfg.swapchainMagFilterUseNearest, MVK_CONFIG_SWAPCHAIN_MAG_FILTER_USE_NEAREST); + MVK_SET_FROM_ENV_OR_BUILD_BOOL (evCfg.swapchainMinMagFilterUseNearest, MVK_CONFIG_SWAPCHAIN_MAG_FILTER_USE_NEAREST); // Deprecated legacy env var + MVK_SET_FROM_ENV_OR_BUILD_BOOL (evCfg.swapchainMinMagFilterUseNearest, MVK_CONFIG_SWAPCHAIN_MIN_MAG_FILTER_USE_NEAREST); MVK_SET_FROM_ENV_OR_BUILD_INT64 (evCfg.metalCompileTimeout, MVK_CONFIG_METAL_COMPILE_TIMEOUT); MVK_SET_FROM_ENV_OR_BUILD_BOOL (evCfg.performanceTracking, MVK_CONFIG_PERFORMANCE_TRACKING); MVK_SET_FROM_ENV_OR_BUILD_INT32 (evCfg.performanceLoggingFrameCount, MVK_CONFIG_PERFORMANCE_LOGGING_FRAME_COUNT); - MVK_SET_FROM_ENV_OR_BUILD_BOOL (evCfg.logActivityPerformanceInline, MVK_CONFIG_PERFORMANCE_LOGGING_INLINE); + MVK_SET_FROM_ENV_OR_BUILD_INT32 (evCfg.activityPerformanceLoggingStyle, MVK_CONFIG_ACTIVITY_PERFORMANCE_LOGGING_STYLE); MVK_SET_FROM_ENV_OR_BUILD_BOOL (evCfg.displayWatermark, MVK_CONFIG_DISPLAY_WATERMARK); MVK_SET_FROM_ENV_OR_BUILD_BOOL (evCfg.specializedQueueFamilies, MVK_CONFIG_SPECIALIZED_QUEUE_FAMILIES); MVK_SET_FROM_ENV_OR_BUILD_BOOL (evCfg.switchSystemGPU, MVK_CONFIG_SWITCH_SYSTEM_GPU); MVK_SET_FROM_ENV_OR_BUILD_BOOL (evCfg.fullImageViewSwizzle, MVK_CONFIG_FULL_IMAGE_VIEW_SWIZZLE); MVK_SET_FROM_ENV_OR_BUILD_BOOL (evCfg.defaultGPUCaptureScopeQueueFamilyIndex, MVK_CONFIG_DEFAULT_GPU_CAPTURE_SCOPE_QUEUE_FAMILY_INDEX); MVK_SET_FROM_ENV_OR_BUILD_BOOL (evCfg.defaultGPUCaptureScopeQueueIndex, MVK_CONFIG_DEFAULT_GPU_CAPTURE_SCOPE_QUEUE_INDEX); - MVK_SET_FROM_ENV_OR_BUILD_BOOL (evCfg.fastMathEnabled, MVK_CONFIG_FAST_MATH_ENABLED); + MVK_SET_FROM_ENV_OR_BUILD_INT32 (evCfg.fastMathEnabled, MVK_CONFIG_FAST_MATH_ENABLED); MVK_SET_FROM_ENV_OR_BUILD_INT32 (evCfg.logLevel, MVK_CONFIG_LOG_LEVEL); MVK_SET_FROM_ENV_OR_BUILD_INT32 (evCfg.traceVulkanCalls, MVK_CONFIG_TRACE_VULKAN_CALLS); MVK_SET_FROM_ENV_OR_BUILD_BOOL (evCfg.forceLowPowerGPU, MVK_CONFIG_FORCE_LOW_POWER_GPU); @@ -61,19 +62,31 @@ static void mvkInitConfigFromEnvVars() { MVK_SET_FROM_ENV_OR_BUILD_INT32 (evCfg.advertiseExtensions, MVK_CONFIG_ADVERTISE_EXTENSIONS); MVK_SET_FROM_ENV_OR_BUILD_BOOL (evCfg.resumeLostDevice, MVK_CONFIG_RESUME_LOST_DEVICE); MVK_SET_FROM_ENV_OR_BUILD_INT32 (evCfg.useMetalArgumentBuffers, MVK_CONFIG_USE_METAL_ARGUMENT_BUFFERS); + MVK_SET_FROM_ENV_OR_BUILD_INT32 (evCfg.shaderSourceCompressionAlgorithm, MVK_CONFIG_SHADER_COMPRESSION_ALGORITHM); // Deprected legacy VkSemaphore MVK_ALLOW_METAL_FENCES and MVK_ALLOW_METAL_EVENTS config. // Legacy MVK_ALLOW_METAL_EVENTS is covered by MVK_CONFIG_VK_SEMAPHORE_SUPPORT_STYLE, // but for backwards compatibility, if legacy MVK_ALLOW_METAL_EVENTS is explicitly // disabled, disable semaphoreUseMTLEvent (aliased as semaphoreSupportStyle value - // MVK_CONFIG_VK_SEMAPHORE_SUPPORT_STYLE_CALLBACK), and let mvkSetConfig() further - // process legacy behavior based on the value of legacy semaphoreUseMTLFence). + // MVK_CONFIG_VK_SEMAPHORE_SUPPORT_STYLE_SINGLE_QUEUE), and let mvkSetConfig() + // further process legacy behavior of MVK_ALLOW_METAL_FENCES. bool sem4UseMTLEvent; MVK_SET_FROM_ENV_OR_BUILD_BOOL(sem4UseMTLEvent, MVK_ALLOW_METAL_EVENTS); if ( !sem4UseMTLEvent ) { - evCfg.semaphoreUseMTLEvent = (MVKVkSemaphoreSupportStyle)false; // Disabled. Also semaphoreSupportStyle MVK_CONFIG_VK_SEMAPHORE_SUPPORT_STYLE_CALLBACK. + evCfg.semaphoreUseMTLEvent = (MVKVkSemaphoreSupportStyle)false; // Disabled. Also semaphoreSupportStyle MVK_CONFIG_VK_SEMAPHORE_SUPPORT_STYLE_SINGLE_QUEUE. } + // Deprecated legacy env var MVK_CONFIG_PERFORMANCE_LOGGING_INLINE config. If legacy + // MVK_CONFIG_PERFORMANCE_LOGGING_INLINE env var was used, and activityPerformanceLoggingStyle + // was not already set by MVK_CONFIG_ACTIVITY_PERFORMANCE_LOGGING_STYLE, set + // activityPerformanceLoggingStyle to MVK_CONFIG_ACTIVITY_PERFORMANCE_LOGGING_STYLE_IMMEDIATE. + bool logPerfInline; + MVK_SET_FROM_ENV_OR_BUILD_BOOL(logPerfInline, MVK_CONFIG_PERFORMANCE_LOGGING_INLINE); + if (logPerfInline && evCfg.activityPerformanceLoggingStyle == MVK_CONFIG_ACTIVITY_PERFORMANCE_LOGGING_STYLE_FRAME_COUNT) { + evCfg.activityPerformanceLoggingStyle = MVK_CONFIG_ACTIVITY_PERFORMANCE_LOGGING_STYLE_IMMEDIATE; + } + + mvkSetConfig(evCfg); } @@ -102,11 +115,12 @@ void mvkSetConfig(const MVKConfiguration& mvkConfig) { VK_VERSION_MINOR(_mvkConfig.apiVersionToAdvertise), VK_HEADER_VERSION); - // Deprecated legacy support for specific case where semaphoreUseMTLFence is enabled and legacy - // semaphoreUseMTLEvent (now aliased to semaphoreSupportStyle) is disabled. In this case the user - // had been using the legacy MTLFence, so use MVK_CONFIG_VK_SEMAPHORE_SUPPORT_STYLE_SINGLE_QUEUE now. - if (_mvkConfig.semaphoreUseMTLFence && !_mvkConfig.semaphoreUseMTLEvent) { - _mvkConfig.semaphoreSupportStyle = MVK_CONFIG_VK_SEMAPHORE_SUPPORT_STYLE_SINGLE_QUEUE; + // Deprecated legacy support for specific case where both legacy semaphoreUseMTLEvent + // (now aliased to semaphoreSupportStyle) and legacy semaphoreUseMTLFence are explicitly + // disabled by the app. In this case the app had been using CPU emulation, so use + // MVK_CONFIG_VK_SEMAPHORE_SUPPORT_STYLE_CALLBACK. + if ( !_mvkConfig.semaphoreUseMTLEvent && !_mvkConfig.semaphoreUseMTLFence ) { + _mvkConfig.semaphoreSupportStyle = MVK_CONFIG_VK_SEMAPHORE_SUPPORT_STYLE_CALLBACK; } // Set capture file path string diff --git a/MoltenVK/MoltenVK/Utility/MVKEnvironment.h b/MoltenVK/MoltenVK/Utility/MVKEnvironment.h index 307038d7d..cec1740e7 100644 --- a/MoltenVK/MoltenVK/Utility/MVKEnvironment.h +++ b/MoltenVK/MoltenVK/Utility/MVKEnvironment.h @@ -1,7 +1,7 @@ /* * MVKEnvironment.h * - * Copyright (c) 2015-2022 The Brenwill Workshop Ltd. (http://www.brenwill.com) + * Copyright (c) 2015-2023 The Brenwill Workshop Ltd. (http://www.brenwill.com) * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. @@ -36,8 +36,8 @@ #endif /** Macro to determine the Vulkan version supported by MoltenVK. */ -#define MVK_VULKAN_API_VERSION VK_MAKE_VERSION(VK_VERSION_MAJOR(VK_API_VERSION_1_1), \ - VK_VERSION_MINOR(VK_API_VERSION_1_1), \ +#define MVK_VULKAN_API_VERSION VK_MAKE_VERSION(VK_VERSION_MAJOR(VK_API_VERSION_1_2), \ + VK_VERSION_MINOR(VK_API_VERSION_1_2), \ VK_HEADER_VERSION) /** @@ -105,9 +105,9 @@ void mvkSetConfig(const MVKConfiguration& mvkConfig); # define MVK_CONFIG_SYNCHRONOUS_QUEUE_SUBMITS mvkOSVersionIsAtLeast(MVK_CONFIG_MTLEVENT_MIN_OS) #endif -/** Fill a Metal command buffers when each Vulkan command buffer is filled. */ +/** Fill a Metal command buffer when each Vulkan command buffer is filled. */ #ifndef MVK_CONFIG_PREFILL_METAL_COMMAND_BUFFERS -# define MVK_CONFIG_PREFILL_METAL_COMMAND_BUFFERS 0 +# define MVK_CONFIG_PREFILL_METAL_COMMAND_BUFFERS MVK_CONFIG_PREFILL_METAL_COMMAND_BUFFERS_STYLE_NO_PREFILL #endif /** @@ -118,7 +118,7 @@ void mvkSetConfig(const MVKConfiguration& mvkConfig); # define MVK_CONFIG_MAX_ACTIVE_METAL_COMMAND_BUFFERS_PER_QUEUE 64 #endif -/** Support more than 8192 occlusion queries per buffer. Enabled by default. */ +/** Support more than 8192 or 32768 occlusion queries per device. Enabled by default. */ #ifndef MVK_CONFIG_SUPPORT_LARGE_QUERY_POOLS # define MVK_CONFIG_SUPPORT_LARGE_QUERY_POOLS 1 #endif @@ -128,9 +128,12 @@ void mvkSetConfig(const MVKConfiguration& mvkConfig); # define MVK_CONFIG_PRESENT_WITH_COMMAND_BUFFER 1 #endif -/** Use nearest sampling to magnify swapchain images. Enabled by default. */ +/** Use nearest sampling to minify or magnify swapchain images. Enabled by default. Second macro name is deprecated legacy. */ +#ifndef MVK_CONFIG_SWAPCHAIN_MIN_MAG_FILTER_USE_NEAREST +# define MVK_CONFIG_SWAPCHAIN_MIN_MAG_FILTER_USE_NEAREST 1 +#endif #ifndef MVK_CONFIG_SWAPCHAIN_MAG_FILTER_USE_NEAREST -# define MVK_CONFIG_SWAPCHAIN_MAG_FILTER_USE_NEAREST 1 +# define MVK_CONFIG_SWAPCHAIN_MAG_FILTER_USE_NEAREST MVK_CONFIG_SWAPCHAIN_MIN_MAG_FILTER_USE_NEAREST #endif /** The maximum amount of time, in nanoseconds, to wait for a Metal library. Default is infinite. */ @@ -148,8 +151,11 @@ void mvkSetConfig(const MVKConfiguration& mvkConfig); # define MVK_CONFIG_PERFORMANCE_LOGGING_FRAME_COUNT 0 #endif -/** Log activity performance every time an activity occurs. Disabled by default. */ -# ifndef MVK_CONFIG_PERFORMANCE_LOGGING_INLINE +/** Activity performance logging style. Default is to log after a configured number of frames. */ +# ifndef MVK_CONFIG_ACTIVITY_PERFORMANCE_LOGGING_STYLE +# define MVK_CONFIG_ACTIVITY_PERFORMANCE_LOGGING_STYLE MVK_CONFIG_ACTIVITY_PERFORMANCE_LOGGING_STYLE_FRAME_COUNT +# endif +# ifndef MVK_CONFIG_PERFORMANCE_LOGGING_INLINE // Deprecated # define MVK_CONFIG_PERFORMANCE_LOGGING_INLINE 0 # endif @@ -173,9 +179,9 @@ void mvkSetConfig(const MVKConfiguration& mvkConfig); # define MVK_CONFIG_FULL_IMAGE_VIEW_SWIZZLE 0 #endif -/** Set the fastMathEnabled Metal Compiler option. Enabled by default. */ +/** Set the fastMathEnabled Metal Compiler option. Set to always use fast math by default. */ #ifndef MVK_CONFIG_FAST_MATH_ENABLED -# define MVK_CONFIG_FAST_MATH_ENABLED 1 +# define MVK_CONFIG_FAST_MATH_ENABLED MVK_CONFIG_FAST_MATH_ALWAYS #endif /** Set the logging level: */ @@ -241,7 +247,7 @@ void mvkSetConfig(const MVKConfiguration& mvkConfig); # define MVK_ALLOW_METAL_EVENTS 1 #endif #ifndef MVK_ALLOW_METAL_FENCES // Deprecated -# define MVK_ALLOW_METAL_FENCES 0 +# define MVK_ALLOW_METAL_FENCES 1 #endif /** Substitute Metal 2D textures for Vulkan 1D images. Enabled by default. */ @@ -283,3 +289,8 @@ void mvkSetConfig(const MVKConfiguration& mvkConfig); #ifndef MVK_CONFIG_USE_METAL_ARGUMENT_BUFFERS # define MVK_CONFIG_USE_METAL_ARGUMENT_BUFFERS MVK_CONFIG_USE_METAL_ARGUMENT_BUFFERS_NEVER #endif + +/** Compress MSL shader source code in a pipeline cache. Defaults to no compression. */ +#ifndef MVK_CONFIG_SHADER_COMPRESSION_ALGORITHM +# define MVK_CONFIG_SHADER_COMPRESSION_ALGORITHM MVK_CONFIG_COMPRESSION_ALGORITHM_NONE +#endif diff --git a/MoltenVK/MoltenVK/Utility/MVKFoundation.cpp b/MoltenVK/MoltenVK/Utility/MVKFoundation.cpp index 800857829..29ee115ff 100644 --- a/MoltenVK/MoltenVK/Utility/MVKFoundation.cpp +++ b/MoltenVK/MoltenVK/Utility/MVKFoundation.cpp @@ -1,7 +1,7 @@ /* * MVKFoundation.cpp * - * Copyright (c) 2015-2022 The Brenwill Workshop Ltd. (http://www.brenwill.com) + * Copyright (c) 2015-2023 The Brenwill Workshop Ltd. (http://www.brenwill.com) * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. @@ -24,49 +24,57 @@ const char* mvkVkResultName(VkResult vkResult) { switch (vkResult) { - CASE_STRINGIFY(VK_SUCCESS); - CASE_STRINGIFY(VK_NOT_READY); - CASE_STRINGIFY(VK_TIMEOUT); - CASE_STRINGIFY(VK_EVENT_SET); - CASE_STRINGIFY(VK_EVENT_RESET); - CASE_STRINGIFY(VK_INCOMPLETE); - - CASE_STRINGIFY(VK_ERROR_OUT_OF_HOST_MEMORY); - CASE_STRINGIFY(VK_ERROR_OUT_OF_DEVICE_MEMORY); - CASE_STRINGIFY(VK_ERROR_INITIALIZATION_FAILED); - CASE_STRINGIFY(VK_ERROR_DEVICE_LOST); - CASE_STRINGIFY(VK_ERROR_MEMORY_MAP_FAILED); - CASE_STRINGIFY(VK_ERROR_LAYER_NOT_PRESENT); - CASE_STRINGIFY(VK_ERROR_EXTENSION_NOT_PRESENT); - CASE_STRINGIFY(VK_ERROR_FEATURE_NOT_PRESENT); - CASE_STRINGIFY(VK_ERROR_INCOMPATIBLE_DRIVER); - CASE_STRINGIFY(VK_ERROR_TOO_MANY_OBJECTS); - CASE_STRINGIFY(VK_ERROR_FORMAT_NOT_SUPPORTED); - CASE_STRINGIFY(VK_ERROR_FRAGMENTED_POOL); - - CASE_STRINGIFY(VK_ERROR_UNKNOWN); - CASE_STRINGIFY(VK_ERROR_OUT_OF_POOL_MEMORY); - CASE_STRINGIFY(VK_ERROR_INVALID_EXTERNAL_HANDLE); - CASE_STRINGIFY(VK_ERROR_FRAGMENTATION); - CASE_STRINGIFY(VK_ERROR_INVALID_OPAQUE_CAPTURE_ADDRESS); - - CASE_STRINGIFY(VK_ERROR_SURFACE_LOST_KHR); - CASE_STRINGIFY(VK_ERROR_NATIVE_WINDOW_IN_USE_KHR); - CASE_STRINGIFY(VK_SUBOPTIMAL_KHR); - CASE_STRINGIFY(VK_ERROR_OUT_OF_DATE_KHR); - CASE_STRINGIFY(VK_ERROR_INCOMPATIBLE_DISPLAY_KHR); - - CASE_STRINGIFY(VK_ERROR_VALIDATION_FAILED_EXT); - CASE_STRINGIFY(VK_ERROR_INVALID_SHADER_NV); - - CASE_STRINGIFY(VK_ERROR_INVALID_DRM_FORMAT_MODIFIER_PLANE_LAYOUT_EXT); - CASE_STRINGIFY(VK_ERROR_NOT_PERMITTED_EXT); - CASE_STRINGIFY(VK_ERROR_FULL_SCREEN_EXCLUSIVE_MODE_LOST_EXT); - CASE_STRINGIFY(VK_THREAD_IDLE_KHR); - CASE_STRINGIFY(VK_THREAD_DONE_KHR); - CASE_STRINGIFY(VK_OPERATION_DEFERRED_KHR); - CASE_STRINGIFY(VK_OPERATION_NOT_DEFERRED_KHR); - CASE_STRINGIFY(VK_PIPELINE_COMPILE_REQUIRED_EXT); + CASE_STRINGIFY(VK_SUCCESS); + CASE_STRINGIFY(VK_NOT_READY); + CASE_STRINGIFY(VK_TIMEOUT); + CASE_STRINGIFY(VK_EVENT_SET); + CASE_STRINGIFY(VK_EVENT_RESET); + CASE_STRINGIFY(VK_INCOMPLETE); + + CASE_STRINGIFY(VK_ERROR_OUT_OF_HOST_MEMORY); + CASE_STRINGIFY(VK_ERROR_OUT_OF_DEVICE_MEMORY); + CASE_STRINGIFY(VK_ERROR_INITIALIZATION_FAILED); + CASE_STRINGIFY(VK_ERROR_DEVICE_LOST); + CASE_STRINGIFY(VK_ERROR_MEMORY_MAP_FAILED); + CASE_STRINGIFY(VK_ERROR_LAYER_NOT_PRESENT); + CASE_STRINGIFY(VK_ERROR_EXTENSION_NOT_PRESENT); + CASE_STRINGIFY(VK_ERROR_FEATURE_NOT_PRESENT); + CASE_STRINGIFY(VK_ERROR_INCOMPATIBLE_DRIVER); + CASE_STRINGIFY(VK_ERROR_TOO_MANY_OBJECTS); + CASE_STRINGIFY(VK_ERROR_FORMAT_NOT_SUPPORTED); + CASE_STRINGIFY(VK_ERROR_FRAGMENTED_POOL); + + CASE_STRINGIFY(VK_ERROR_UNKNOWN); + CASE_STRINGIFY(VK_ERROR_OUT_OF_POOL_MEMORY); + CASE_STRINGIFY(VK_ERROR_INVALID_EXTERNAL_HANDLE); + CASE_STRINGIFY(VK_ERROR_FRAGMENTATION); + CASE_STRINGIFY(VK_ERROR_INVALID_OPAQUE_CAPTURE_ADDRESS); + CASE_STRINGIFY(VK_PIPELINE_COMPILE_REQUIRED); + + CASE_STRINGIFY(VK_ERROR_SURFACE_LOST_KHR); + CASE_STRINGIFY(VK_ERROR_NATIVE_WINDOW_IN_USE_KHR); + CASE_STRINGIFY(VK_SUBOPTIMAL_KHR); + CASE_STRINGIFY(VK_ERROR_OUT_OF_DATE_KHR); + CASE_STRINGIFY(VK_ERROR_INCOMPATIBLE_DISPLAY_KHR); + + CASE_STRINGIFY(VK_ERROR_VALIDATION_FAILED_EXT); + CASE_STRINGIFY(VK_ERROR_INVALID_SHADER_NV); + CASE_STRINGIFY(VK_ERROR_IMAGE_USAGE_NOT_SUPPORTED_KHR); + + CASE_STRINGIFY(VK_ERROR_VIDEO_PICTURE_LAYOUT_NOT_SUPPORTED_KHR); + CASE_STRINGIFY(VK_ERROR_VIDEO_PROFILE_OPERATION_NOT_SUPPORTED_KHR); + CASE_STRINGIFY(VK_ERROR_VIDEO_PROFILE_FORMAT_NOT_SUPPORTED_KHR); + CASE_STRINGIFY(VK_ERROR_VIDEO_PROFILE_CODEC_NOT_SUPPORTED_KHR); + CASE_STRINGIFY(VK_ERROR_VIDEO_STD_VERSION_NOT_SUPPORTED_KHR); + + CASE_STRINGIFY(VK_ERROR_INVALID_DRM_FORMAT_MODIFIER_PLANE_LAYOUT_EXT); + CASE_STRINGIFY(VK_ERROR_NOT_PERMITTED_KHR); + CASE_STRINGIFY(VK_ERROR_FULL_SCREEN_EXCLUSIVE_MODE_LOST_EXT); + CASE_STRINGIFY(VK_THREAD_IDLE_KHR); + CASE_STRINGIFY(VK_THREAD_DONE_KHR); + CASE_STRINGIFY(VK_OPERATION_DEFERRED_KHR); + CASE_STRINGIFY(VK_OPERATION_NOT_DEFERRED_KHR); + CASE_STRINGIFY(VK_ERROR_COMPRESSION_EXHAUSTED_EXT); default: return "VK_UNKNOWN_VK_Result"; } diff --git a/MoltenVK/MoltenVK/Utility/MVKFoundation.h b/MoltenVK/MoltenVK/Utility/MVKFoundation.h index 30d0a4bfb..58b85d150 100644 --- a/MoltenVK/MoltenVK/Utility/MVKFoundation.h +++ b/MoltenVK/MoltenVK/Utility/MVKFoundation.h @@ -1,7 +1,7 @@ /* * MVKFoundation.h * - * Copyright (c) 2015-2022 The Brenwill Workshop Ltd. (http://www.brenwill.com) + * Copyright (c) 2015-2023 The Brenwill Workshop Ltd. (http://www.brenwill.com) * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. @@ -71,6 +71,7 @@ typedef enum : uint8_t { kMVKCommandUseQueueWaitIdle, /**< vkQueueWaitIdle. */ kMVKCommandUseDeviceWaitIdle, /**< vkDeviceWaitIdle. */ kMVKCommandUseInvalidateMappedMemoryRanges, /**< vkInvalidateMappedMemoryRanges. */ + kMVKCommandUseBeginRendering, /**< vkCmdBeginRendering. */ kMVKCommandUseBeginRenderPass, /**< vkCmdBeginRenderPass. */ kMVKCommandUseNextSubpass, /**< vkCmdNextSubpass. */ kMVKCommandUseRestartSubpass, /**< Restart a subpass because of explicit or implicit barrier. */ @@ -85,6 +86,7 @@ typedef enum : uint8_t { kMVKCommandUseCopyImageToBuffer, /**< vkCmdCopyImageToBuffer. */ kMVKCommandUseFillBuffer, /**< vkCmdFillBuffer. */ kMVKCommandUseUpdateBuffer, /**< vkCmdUpdateBuffer. */ + kMVKCommandUseClearAttachments, /**< vkCmdClearAttachments. */ kMVKCommandUseClearColorImage, /**< vkCmdClearColorImage. */ kMVKCommandUseClearDepthStencilImage, /**< vkCmdClearDepthStencilImage. */ kMVKCommandUseResetQueryPool, /**< vkCmdResetQueryPool. */ @@ -137,8 +139,7 @@ static inline std::string mvkGetMoltenVKVersionString(uint32_t mvkVersion) { /** Returns whether the specified positive value is a power-of-two. */ template -static inline bool mvkIsPowerOfTwo(T value) { - // Test POT: (x != 0) && ((x & (x - 1)) == 0) +static constexpr bool mvkIsPowerOfTwo(T value) { return value && ((value & (value - 1)) == 0); } @@ -148,7 +149,7 @@ static inline bool mvkIsPowerOfTwo(T value) { * that is larger than the specified value is returned. */ template -static inline T mvkEnsurePowerOfTwo(T value) { +static constexpr T mvkEnsurePowerOfTwo(T value) { if (mvkIsPowerOfTwo(value)) { return value; } T pot = 1; @@ -163,7 +164,7 @@ static inline T mvkEnsurePowerOfTwo(T value) { * This implementation returns zero for both zero and one as inputs. */ template -static inline T mvkPowerOfTwoExponent(T value) { +static constexpr T mvkPowerOfTwoExponent(T value) { T p2Value = mvkEnsurePowerOfTwo(value); // Count the trailing zeros @@ -184,7 +185,7 @@ static inline T mvkPowerOfTwoExponent(T value) { * This is a low level utility method. Usually you will use the convenience functions * mvkAlignAddress() and mvkAlignByteCount() to align addresses and offsets respectively. */ -static inline uintptr_t mvkAlignByteRef(uintptr_t byteRef, uintptr_t byteAlignment, bool alignDown = false) { +static constexpr uintptr_t mvkAlignByteRef(uintptr_t byteRef, uintptr_t byteAlignment, bool alignDown = false) { if (byteAlignment == 0) { return byteRef; } assert(mvkIsPowerOfTwo(byteAlignment)); @@ -213,7 +214,7 @@ static inline void* mvkAlignAddress(void* address, uintptr_t byteAlignment, bool * which will be greater than or equal to the original offset if alignDown is false, or less * than or equal to the original offset if alignDown is true. */ -static inline uintptr_t mvkAlignByteCount(uintptr_t byteCount, uintptr_t byteAlignment, bool alignDown = false) { +static constexpr uint64_t mvkAlignByteCount(uint64_t byteCount, uint64_t byteAlignment, bool alignDown = false) { return mvkAlignByteRef(byteCount, byteAlignment, alignDown); } @@ -254,22 +255,22 @@ static inline VkExtent2D mvkVkExtent2DFromVkExtent3D(VkExtent3D e) { return {e.w static inline VkExtent3D mvkVkExtent3DFromVkExtent2D(VkExtent2D e) { return {e.width, e.height, 1U }; } /** Returns whether the two Vulkan extents are equal by comparing their respective components. */ -static inline bool mvkVkExtent2DsAreEqual(VkExtent2D e1, VkExtent2D e2) { +static constexpr bool mvkVkExtent2DsAreEqual(VkExtent2D e1, VkExtent2D e2) { return (e1.width == e2.width) && (e1.height == e2.height); } /** Returns whether the two Vulkan extents are equal by comparing their respective components. */ -static inline bool mvkVkExtent3DsAreEqual(VkExtent3D e1, VkExtent3D e2) { +static constexpr bool mvkVkExtent3DsAreEqual(VkExtent3D e1, VkExtent3D e2) { return (e1.width == e2.width) && (e1.height == e2.height) && (e1.depth == e2.depth); } /** Returns whether the two Vulkan offsets are equal by comparing their respective components. */ -static inline bool mvkVkOffset2DsAreEqual(VkOffset2D os1, VkOffset2D os2) { +static constexpr bool mvkVkOffset2DsAreEqual(VkOffset2D os1, VkOffset2D os2) { return (os1.x == os2.x) && (os1.y == os2.y); } /** Returns whether the two Vulkan offsets are equal by comparing their respective components. */ -static inline bool mvkVkOffset3DsAreEqual(VkOffset3D os1, VkOffset3D os2) { +static constexpr bool mvkVkOffset3DsAreEqual(VkOffset3D os1, VkOffset3D os2) { return (os1.x == os2.x) && (os1.y == os2.y) && (os1.z == os2.z); } @@ -286,9 +287,9 @@ static inline VkOffset3D mvkVkOffset3DDifference(VkOffset3D minuend, VkOffset3D } /** Packs the four swizzle components into a single 32-bit word. */ -static inline uint32_t mvkPackSwizzle(VkComponentMapping components) { - return ((components.r & 0xFF) << 0) | ((components.g & 0xFF) << 8) | - ((components.b & 0xFF) << 16) | ((components.a & 0xFF) << 24); +static constexpr uint32_t mvkPackSwizzle(VkComponentMapping components) { + return (((components.r & 0xFF) << 0) | ((components.g & 0xFF) << 8) | + ((components.b & 0xFF) << 16) | ((components.a & 0xFF) << 24)); } /** Unpacks a single 32-bit word containing four swizzle components. */ @@ -311,9 +312,9 @@ static inline VkComponentMapping mvkUnpackSwizzle(uint32_t packed) { * 3) Either cs1 or cs2 is VK_COMPONENT_SWIZZLE_MAX_ENUM, which is considered a wildcard, * and matches any value. */ -static inline bool mvkVKComponentSwizzlesMatch(VkComponentSwizzle cs1, - VkComponentSwizzle cs2, - VkComponentSwizzle csPos) { +static constexpr bool mvkVKComponentSwizzlesMatch(VkComponentSwizzle cs1, + VkComponentSwizzle cs2, + VkComponentSwizzle csPos) { return ((cs1 == cs2) || ((cs1 == VK_COMPONENT_SWIZZLE_IDENTITY) && (cs2 == csPos)) || ((cs2 == VK_COMPONENT_SWIZZLE_IDENTITY) && (cs1 == csPos)) || @@ -328,7 +329,7 @@ static inline bool mvkVKComponentSwizzlesMatch(VkComponentSwizzle cs1, * A component value of VK_COMPONENT_SWIZZLE_MAX_ENUM is considered a wildcard and matches * any value in the corresponding component in the other mapping. */ -static inline bool mvkVkComponentMappingsMatch(VkComponentMapping cm1, VkComponentMapping cm2) { +static constexpr bool mvkVkComponentMappingsMatch(VkComponentMapping cm1, VkComponentMapping cm2) { return (mvkVKComponentSwizzlesMatch(cm1.r, cm2.r, VK_COMPONENT_SWIZZLE_R) && mvkVKComponentSwizzlesMatch(cm1.g, cm2.g, VK_COMPONENT_SWIZZLE_G) && mvkVKComponentSwizzlesMatch(cm1.b, cm2.b, VK_COMPONENT_SWIZZLE_B) && @@ -339,11 +340,13 @@ static inline bool mvkVkComponentMappingsMatch(VkComponentMapping cm1, VkCompone #define mvkPrintSizeOf(type) printf("Size of " #type " is %lu.\n", sizeof(type)) -#pragma mark - -#pragma mark Template functions - #pragma mark Math +/** Rounds the value to nearest integer using half-to-even rounding. */ +static inline double mvkRoundHalfToEven(const double val) { + return val - std::remainder(val, 1.0); // remainder() uses half-to-even rounding, and unfortunately isn't constexpr until C++23. +} + /** Returns whether the value will fit inside the numeric type. */ template const bool mvkFits(const Tval& val) { @@ -549,6 +552,15 @@ bool mvkAreEqual(const T* pV1, const T* pV2, size_t count = 1) { return (pV1 && pV2) ? (memcmp(pV1, pV2, sizeof(T) * count) == 0) : false; } +/** + * If both pV1 and pV2 are not null, returns whether the contents of the two strings are equal, + * otherwise returns false. This functionality is different than the char version of mvkAreEqual(), + * which works on individual chars or char arrays, not strings. + */ +static constexpr bool mvkStringsAreEqual(const char* pV1, const char* pV2, size_t count = 1) { + return (pV1 && pV2) ? (strcmp(pV1, pV2) == 0) : false; +} + /** * Sets the value referenced by the destination pointer with the value referenced by * the source pointer, and returns whether the value was set. @@ -562,7 +574,7 @@ bool mvkAreEqual(const T* pV1, const T* pV2, size_t count = 1) { * If the destination pointer is NULL, does nothing, and returns false. */ template -bool mvkSetOrClear(T* pDest, const T* pSrc) { +static constexpr bool mvkSetOrClear(T* pDest, const T* pSrc) { if (pDest && pSrc) { *pDest = *pSrc; return true; @@ -584,17 +596,17 @@ void mvkDisableFlags(Tv& value, const Tm bitMask) { value = (Tv)(value & ~(Tv)bi /** Returns whether the specified value has ANY of the flags specified in bitMask enabled (set to 1). */ template -bool mvkIsAnyFlagEnabled(Tv value, const Tm bitMask) { return ((value & bitMask) != 0); } +static constexpr bool mvkIsAnyFlagEnabled(Tv value, const Tm bitMask) { return ((value & bitMask) != 0); } /** Returns whether the specified value has ALL of the flags specified in bitMask enabled (set to 1). */ template -bool mvkAreAllFlagsEnabled(Tv value, const Tm bitMask) { return ((value & bitMask) == bitMask); } +static constexpr bool mvkAreAllFlagsEnabled(Tv value, const Tm bitMask) { return ((value & bitMask) == bitMask); } /** Returns whether the specified value has ONLY one or more of the flags specified in bitMask enabled (set to 1), and none others. */ template -bool mvkIsOnlyAnyFlagEnabled(Tv value, const Tm bitMask) { return (mvkIsAnyFlagEnabled(value, bitMask) && ((value | bitMask) == bitMask)); } +static constexpr bool mvkIsOnlyAnyFlagEnabled(Tv value, const Tm bitMask) { return (mvkIsAnyFlagEnabled(value, bitMask) && ((value | bitMask) == bitMask)); } /** Returns whether the specified value has ONLY ALL of the flags specified in bitMask enabled (set to 1), and none others. */ template -bool mvkAreOnlyAllFlagsEnabled(Tv value, const Tm bitMask) { return (value == bitMask); } +static constexpr bool mvkAreOnlyAllFlagsEnabled(Tv value, const Tm bitMask) { return (value == bitMask); } diff --git a/MoltenVK/MoltenVK/Utility/MVKLogging.h b/MoltenVK/MoltenVK/Utility/MVKLogging.h index 8cfef8333..bea3a92f5 100644 --- a/MoltenVK/MoltenVK/Utility/MVKLogging.h +++ b/MoltenVK/MoltenVK/Utility/MVKLogging.h @@ -1,7 +1,7 @@ /* * MVKLogging.h * - * Copyright (c) 2015-2022 The Brenwill Workshop Ltd. (http://www.brenwill.com) + * Copyright (c) 2015-2023 The Brenwill Workshop Ltd. (http://www.brenwill.com) * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. @@ -207,9 +207,6 @@ do { \ # define MVK_DEBUGGER() { kill( getpid(), SIGINT ) ; } #endif -// Log the size of a type, struct, or class -#define MVKLogSizeOf(T) printf("sizeof(%s): %lu.\n", #T, sizeof(T)) - #ifdef __cplusplus } diff --git a/MoltenVK/MoltenVK/Utility/MVKObjectPool.h b/MoltenVK/MoltenVK/Utility/MVKObjectPool.h index e74ba8956..36cd4419d 100644 --- a/MoltenVK/MoltenVK/Utility/MVKObjectPool.h +++ b/MoltenVK/MoltenVK/Utility/MVKObjectPool.h @@ -1,7 +1,7 @@ /* * MVKObjectPool.h * - * Copyright (c) 2015-2022 The Brenwill Workshop Ltd. (http://www.brenwill.com) + * Copyright (c) 2015-2023 The Brenwill Workshop Ltd. (http://www.brenwill.com) * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. diff --git a/MoltenVK/MoltenVK/Utility/MVKSmallVector.h b/MoltenVK/MoltenVK/Utility/MVKSmallVector.h index f2625215b..6294f9139 100755 --- a/MoltenVK/MoltenVK/Utility/MVKSmallVector.h +++ b/MoltenVK/MoltenVK/Utility/MVKSmallVector.h @@ -1,7 +1,7 @@ /* * MVKSmallVector.h * - * Copyright (c) 2012-2022 Dr. Torsten Hans (hans@ipacs.de) + * Copyright (c) 2012-2023 Dr. Torsten Hans (hans@ipacs.de) * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. diff --git a/MoltenVK/MoltenVK/Utility/MVKSmallVectorAllocator.h b/MoltenVK/MoltenVK/Utility/MVKSmallVectorAllocator.h index 50303b9a3..1b107c486 100755 --- a/MoltenVK/MoltenVK/Utility/MVKSmallVectorAllocator.h +++ b/MoltenVK/MoltenVK/Utility/MVKSmallVectorAllocator.h @@ -1,7 +1,7 @@ /* * MVKSmallVectorAllocator.h * - * Copyright (c) 2012-2022 Dr. Torsten Hans (hans@ipacs.de) + * Copyright (c) 2012-2023 Dr. Torsten Hans (hans@ipacs.de) * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. diff --git a/MoltenVK/MoltenVK/Utility/MVKWatermark.h b/MoltenVK/MoltenVK/Utility/MVKWatermark.h index c8fb75f88..ddde30854 100644 --- a/MoltenVK/MoltenVK/Utility/MVKWatermark.h +++ b/MoltenVK/MoltenVK/Utility/MVKWatermark.h @@ -1,7 +1,7 @@ /* * MVKWatermark.h * - * Copyright (c) 2015-2022 The Brenwill Workshop Ltd. (http://www.brenwill.com) + * Copyright (c) 2015-2023 The Brenwill Workshop Ltd. (http://www.brenwill.com) * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. diff --git a/MoltenVK/MoltenVK/Utility/MVKWatermark.mm b/MoltenVK/MoltenVK/Utility/MVKWatermark.mm index 28673e6b9..a016f98fe 100644 --- a/MoltenVK/MoltenVK/Utility/MVKWatermark.mm +++ b/MoltenVK/MoltenVK/Utility/MVKWatermark.mm @@ -1,7 +1,7 @@ /* * MVKWatermark.mm * - * Copyright (c) 2015-2022 The Brenwill Workshop Ltd. (http://www.brenwill.com) + * Copyright (c) 2015-2023 The Brenwill Workshop Ltd. (http://www.brenwill.com) * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. diff --git a/MoltenVK/MoltenVK/Utility/MVKWatermarkShaderSource.h b/MoltenVK/MoltenVK/Utility/MVKWatermarkShaderSource.h index e1d52d569..60cb284d9 100644 --- a/MoltenVK/MoltenVK/Utility/MVKWatermarkShaderSource.h +++ b/MoltenVK/MoltenVK/Utility/MVKWatermarkShaderSource.h @@ -1,7 +1,7 @@ /* * MVKWatermarkShaderSource.h * - * Copyright (c) 2015-2022 The Brenwill Workshop Ltd. (http://www.brenwill.com) + * Copyright (c) 2015-2023 The Brenwill Workshop Ltd. (http://www.brenwill.com) * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. diff --git a/MoltenVK/MoltenVK/Utility/MVKWatermarkTextureContent.h b/MoltenVK/MoltenVK/Utility/MVKWatermarkTextureContent.h index ff29298f9..8ae690a52 100644 --- a/MoltenVK/MoltenVK/Utility/MVKWatermarkTextureContent.h +++ b/MoltenVK/MoltenVK/Utility/MVKWatermarkTextureContent.h @@ -1,7 +1,7 @@ /* * MVKWatermarkTextureContent.h * - * Copyright (c) 2015-2022 The Brenwill Workshop Ltd. (http://www.brenwill.com) + * Copyright (c) 2015-2023 The Brenwill Workshop Ltd. (http://www.brenwill.com) * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. diff --git a/MoltenVK/MoltenVK/Vulkan/mvk_datatypes.hpp b/MoltenVK/MoltenVK/Vulkan/mvk_datatypes.hpp index 8ee57bfe4..12afed6e7 100644 --- a/MoltenVK/MoltenVK/Vulkan/mvk_datatypes.hpp +++ b/MoltenVK/MoltenVK/Vulkan/mvk_datatypes.hpp @@ -1,7 +1,7 @@ /* * mvk_datatypes.hpp * - * Copyright (c) 2015-2022 The Brenwill Workshop Ltd. (http://www.brenwill.com) + * Copyright (c) 2015-2023 The Brenwill Workshop Ltd. (http://www.brenwill.com) * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. diff --git a/MoltenVK/MoltenVK/Vulkan/mvk_datatypes.mm b/MoltenVK/MoltenVK/Vulkan/mvk_datatypes.mm index 7e06c111c..4c3faaab7 100644 --- a/MoltenVK/MoltenVK/Vulkan/mvk_datatypes.mm +++ b/MoltenVK/MoltenVK/Vulkan/mvk_datatypes.mm @@ -1,7 +1,7 @@ /* * mvk_datatypes.mm * - * Copyright (c) 2015-2022 The Brenwill Workshop Ltd. (http://www.brenwill.com) + * Copyright (c) 2015-2023 The Brenwill Workshop Ltd. (http://www.brenwill.com) * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. @@ -730,6 +730,24 @@ MVK_PUBLIC_SYMBOL MTLBarrierScope mvkMTLBarrierScopeFromVkAccessFlags(VkAccessFl } +#pragma mark - +#pragma mark Geometry conversions + +MVK_PUBLIC_SYMBOL VkExtent2D mvkVkExtent2DFromCGSize(CGSize cgSize) { + VkExtent2D vkExt; + vkExt.width = mvkRoundHalfToEven(cgSize.width); + vkExt.height = mvkRoundHalfToEven(cgSize.height); + return vkExt; +} + +MVK_PUBLIC_SYMBOL CGSize mvkCGSizeFromVkExtent2D(VkExtent2D vkExtent) { + CGSize cgSize; + cgSize.width = vkExtent.width; + cgSize.height = vkExtent.height; + return cgSize; +} + + #pragma mark - #pragma mark Memory options diff --git a/MoltenVK/MoltenVK/Vulkan/vk_mvk_moltenvk.mm b/MoltenVK/MoltenVK/Vulkan/vk_mvk_moltenvk.mm index 72a8ac639..c6f7844ce 100644 --- a/MoltenVK/MoltenVK/Vulkan/vk_mvk_moltenvk.mm +++ b/MoltenVK/MoltenVK/Vulkan/vk_mvk_moltenvk.mm @@ -1,7 +1,7 @@ /* * vk_mvk_moltenvk.mm * - * Copyright (c) 2015-2022 The Brenwill Workshop Ltd. (http://www.brenwill.com) + * Copyright (c) 2015-2023 The Brenwill Workshop Ltd. (http://www.brenwill.com) * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. @@ -49,7 +49,7 @@ VkResult mvkCopy(S* pDst, const S* pSrc, size_t* pCopySize) { } } -MVK_PUBLIC_SYMBOL VkResult vkGetMoltenVKConfigurationMVK( +MVK_PUBLIC_VULKAN_SYMBOL VkResult vkGetMoltenVKConfigurationMVK( VkInstance ignored, MVKConfiguration* pConfiguration, size_t* pConfigurationSize) { @@ -57,7 +57,7 @@ MVK_PUBLIC_SYMBOL VkResult vkGetMoltenVKConfigurationMVK( return mvkCopy(pConfiguration, &mvkConfig(), pConfigurationSize); } -MVK_PUBLIC_SYMBOL VkResult vkSetMoltenVKConfigurationMVK( +MVK_PUBLIC_VULKAN_SYMBOL VkResult vkSetMoltenVKConfigurationMVK( VkInstance ignored, const MVKConfiguration* pConfiguration, size_t* pConfigurationSize) { @@ -88,7 +88,7 @@ MVK_PUBLIC_VULKAN_SYMBOL VkResult vkGetPerformanceStatisticsMVK( return mvkCopy(pPerf, &mvkPerf, pPerfSize); } -MVK_PUBLIC_SYMBOL void vkGetVersionStringsMVK( +MVK_PUBLIC_VULKAN_SYMBOL void vkGetVersionStringsMVK( char* pMoltenVersionStringBuffer, uint32_t moltenVersionStringBufferLength, char* pVulkanVersionStringBuffer, diff --git a/MoltenVK/MoltenVK/Vulkan/vulkan.mm b/MoltenVK/MoltenVK/Vulkan/vulkan.mm index b17e030ce..be2307cbb 100644 --- a/MoltenVK/MoltenVK/Vulkan/vulkan.mm +++ b/MoltenVK/MoltenVK/Vulkan/vulkan.mm @@ -1,7 +1,7 @@ /* * vulkan.mm * - * Copyright (c) 2015-2022 The Brenwill Workshop Ltd. (http://www.brenwill.com) + * Copyright (c) 2015-2023 The Brenwill Workshop Ltd. (http://www.brenwill.com) * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. @@ -50,35 +50,59 @@ // Optionally log start of function calls to stderr static inline uint64_t MVKTraceVulkanCallStartImpl(const char* funcName) { - MVKConfigTraceVulkanCalls traceLvl = mvkConfig().traceVulkanCalls; - if (traceLvl == MVK_CONFIG_TRACE_VULKAN_CALLS_NONE || - traceLvl > MVK_CONFIG_TRACE_VULKAN_CALLS_DURATION) { return 0; } + bool includeThread = false; + bool includeExit = false; + bool includeDuration = false; - uint64_t gtid, mtid; - const uint32_t kThreadNameBuffSize = 256; - char threadName[kThreadNameBuffSize]; - pthread_t tid = pthread_self(); - mtid = pthread_mach_thread_np(tid); // Mach thread ID - pthread_threadid_np(tid, >id); // Global system-wide thead ID - pthread_getname_np(tid, threadName, kThreadNameBuffSize); + switch (mvkConfig().traceVulkanCalls) { + case MVK_CONFIG_TRACE_VULKAN_CALLS_DURATION: + includeDuration = true; // fallthrough + case MVK_CONFIG_TRACE_VULKAN_CALLS_ENTER_EXIT: + includeExit = true; // fallthrough + case MVK_CONFIG_TRACE_VULKAN_CALLS_ENTER: + break; + + case MVK_CONFIG_TRACE_VULKAN_CALLS_DURATION_THREAD_ID: + includeDuration = true; // fallthrough + case MVK_CONFIG_TRACE_VULKAN_CALLS_ENTER_EXIT_THREAD_ID: + includeExit = true; // fallthrough + case MVK_CONFIG_TRACE_VULKAN_CALLS_ENTER_THREAD_ID: + includeThread = true; // fallthrough + break; - fprintf(stderr, "[mvk-trace] %s()%s [%llu/%llu/%s]\n", - funcName, (traceLvl >= MVK_CONFIG_TRACE_VULKAN_CALLS_ENTER_EXIT) ? " {" : "", - mtid, gtid, threadName); + case MVK_CONFIG_TRACE_VULKAN_CALLS_NONE: + default: + return 0; + } - return (traceLvl == MVK_CONFIG_TRACE_VULKAN_CALLS_DURATION) ? mvkGetTimestamp() : 0; + if (includeThread) { + uint64_t gtid, mtid; + const uint32_t kThreadNameBuffSize = 256; + char threadName[kThreadNameBuffSize]; + pthread_t tid = pthread_self(); + mtid = pthread_mach_thread_np(tid); // Mach thread ID + pthread_threadid_np(tid, >id); // Global system-wide thead ID + pthread_getname_np(tid, threadName, kThreadNameBuffSize); + fprintf(stderr, "[mvk-trace] %s()%s [%llu/%llu/%s]\n", funcName, includeExit ? " {" : "", mtid, gtid, threadName); + } else { + fprintf(stderr, "[mvk-trace] %s()%s\n", funcName, includeExit ? " {" : ""); + } + + return includeDuration ? mvkGetTimestamp() : 0; } // Optionally log end of function calls and timings to stderr static inline void MVKTraceVulkanCallEndImpl(const char* funcName, uint64_t startTime) { switch(mvkConfig().traceVulkanCalls) { - case MVK_CONFIG_TRACE_VULKAN_CALLS_DURATION: - fprintf(stderr, "[mvk-trace] } %s [%.4f ms]\n", funcName, mvkGetElapsedMilliseconds(startTime)); - break; case MVK_CONFIG_TRACE_VULKAN_CALLS_ENTER_EXIT: + case MVK_CONFIG_TRACE_VULKAN_CALLS_ENTER_EXIT_THREAD_ID: fprintf(stderr, "[mvk-trace] } %s\n", funcName); break; + case MVK_CONFIG_TRACE_VULKAN_CALLS_DURATION: + case MVK_CONFIG_TRACE_VULKAN_CALLS_DURATION_THREAD_ID: + fprintf(stderr, "[mvk-trace] } %s [%.4f ms]\n", funcName, mvkGetElapsedMilliseconds(startTime)); + break; default: break; } @@ -164,6 +188,15 @@ static inline void MVKTraceVulkanCallEndImpl(const char* funcName, uint64_t star // Define an extension call as an alias of a core call #define MVK_PUBLIC_VULKAN_CORE_ALIAS(vkf, ext) MVK_PUBLIC_VULKAN_ALIAS(vkf##ext, vkf) +#define MVK_PUBLIC_VULKAN_STUB(name, ret, ...) MVK_PUBLIC_VULKAN_SYMBOL ret name(__VA_ARGS__) { \ + assert(false); \ + return (ret)0; \ +} + +#define MVK_PUBLIC_VULKAN_STUB_VKRESULT(name, ...) MVK_PUBLIC_VULKAN_SYMBOL VkResult name(__VA_ARGS__) { \ + assert(false); \ + return VK_ERROR_FEATURE_NOT_PRESENT; \ +} #pragma mark - #pragma mark Vulkan 1.0 calls @@ -275,17 +308,18 @@ MVK_PUBLIC_VULKAN_SYMBOL PFN_vkVoidFunction vkGetInstanceProcAddr( VkInstance instance, const char* pName) { - MVKTraceVulkanCallStart(); - // Handle the special platform functions where the instance parameter may be NULL. PFN_vkVoidFunction func = nullptr; - if (strcmp(pName, "vkCreateInstance") == 0) { + MVKTraceVulkanCallStart(); + if (mvkStringsAreEqual(pName, "vkGetInstanceProcAddr")) { + func = (PFN_vkVoidFunction)vkGetInstanceProcAddr; + } else if (mvkStringsAreEqual(pName, "vkCreateInstance")) { func = (PFN_vkVoidFunction)vkCreateInstance; - } else if (strcmp(pName, "vkEnumerateInstanceExtensionProperties") == 0) { + } else if (mvkStringsAreEqual(pName, "vkEnumerateInstanceExtensionProperties")) { func = (PFN_vkVoidFunction)vkEnumerateInstanceExtensionProperties; - } else if (strcmp(pName, "vkEnumerateInstanceLayerProperties") == 0) { + } else if (mvkStringsAreEqual(pName, "vkEnumerateInstanceLayerProperties")) { func = (PFN_vkVoidFunction)vkEnumerateInstanceLayerProperties; - } else if (strcmp(pName, "vkEnumerateInstanceVersion") == 0) { + } else if (mvkStringsAreEqual(pName, "vkEnumerateInstanceVersion")) { func = (PFN_vkVoidFunction)vkEnumerateInstanceVersion; } else if (instance) { MVKInstance* mvkInst = MVKInstance::getMVKInstance(instance); @@ -458,8 +492,16 @@ MVK_PUBLIC_VULKAN_SYMBOL VkResult vkMapMemory( void** ppData) { MVKTraceVulkanCallStart(); + VkMemoryMapInfoKHR mapInfo = {}; + mapInfo.sType = VK_STRUCTURE_TYPE_MEMORY_MAP_INFO_KHR; + mapInfo.pNext = nullptr; + mapInfo.flags = flags; + mapInfo.memory = mem; + mapInfo.offset = offset; + mapInfo.size = size; + MVKDeviceMemory* mvkMem = (MVKDeviceMemory*)mem; - VkResult rslt = mvkMem->map(offset, size, flags, ppData); + VkResult rslt = mvkMem->map(&mapInfo, ppData); MVKTraceVulkanCallEnd(); return rslt; } @@ -469,8 +511,13 @@ MVK_PUBLIC_VULKAN_SYMBOL void vkUnmapMemory( VkDeviceMemory mem) { MVKTraceVulkanCallStart(); + VkMemoryUnmapInfoKHR unmapInfo = {}; + unmapInfo.sType = VK_STRUCTURE_TYPE_MEMORY_UNMAP_INFO_KHR; + unmapInfo.pNext = nullptr; + unmapInfo.flags = 0; + unmapInfo.memory = mem; MVKDeviceMemory* mvkMem = (MVKDeviceMemory*)mem; - mvkMem->unmap(); + mvkMem->unmap(&unmapInfo); MVKTraceVulkanCallEnd(); } @@ -2445,7 +2492,7 @@ MVK_PUBLIC_VULKAN_SYMBOL void vkResetQueryPool( MVK_PUBLIC_VULKAN_SYMBOL VkResult vkSignalSemaphore( VkDevice device, - const VkSemaphoreSignalInfoKHR* pSignalInfo) { + const VkSemaphoreSignalInfo* pSignalInfo) { MVKTraceVulkanCallStart(); auto* mvkSem4 = (MVKTimelineSemaphore*)pSignalInfo->semaphore; @@ -2456,7 +2503,7 @@ MVK_PUBLIC_VULKAN_SYMBOL VkResult vkSignalSemaphore( MVK_PUBLIC_VULKAN_SYMBOL VkResult vkWaitSemaphores( VkDevice device, - const VkSemaphoreWaitInfoKHR* pWaitInfo, + const VkSemaphoreWaitInfo* pWaitInfo, uint64_t timeout) { MVKTraceVulkanCallStart(); @@ -2466,6 +2513,111 @@ MVK_PUBLIC_VULKAN_SYMBOL VkResult vkWaitSemaphores( return rslt; } +#pragma mark - +#pragma mark Vulkan 1.3 calls + +MVK_PUBLIC_VULKAN_SYMBOL void vkCmdBeginRendering( + VkCommandBuffer commandBuffer, + const VkRenderingInfo* pRenderingInfo) { + + MVKTraceVulkanCallStart(); + MVKAddCmdFrom3Thresholds(BeginRendering, pRenderingInfo->colorAttachmentCount, + 1, 2, 4, commandBuffer, pRenderingInfo); + MVKTraceVulkanCallEnd(); +} + +MVK_PUBLIC_VULKAN_SYMBOL void vkCmdEndRendering( + VkCommandBuffer commandBuffer) { + + MVKTraceVulkanCallStart(); + MVKAddCmd(EndRendering, commandBuffer); + MVKTraceVulkanCallEnd(); +} + +MVK_PUBLIC_VULKAN_STUB(vkCmdBindVertexBuffers2, void, VkCommandBuffer, uint32_t, uint32_t, const VkBuffer*, const VkDeviceSize*, const VkDeviceSize*, const VkDeviceSize*) + +MVK_PUBLIC_VULKAN_SYMBOL void vkCmdBlitImage2( + VkCommandBuffer commandBuffer, + const VkBlitImageInfo2* pBlitImageInfo) { + MVKTraceVulkanCallStart(); + MVKAddCmdFromThreshold(BlitImage, pBlitImageInfo->regionCount, 1, commandBuffer, + pBlitImageInfo); + MVKTraceVulkanCallEnd(); +} + +MVK_PUBLIC_VULKAN_SYMBOL void vkCmdCopyBuffer2( + VkCommandBuffer commandBuffer, + const VkCopyBufferInfo2* pCopyBufferInfo) { + MVKTraceVulkanCallStart(); + MVKAddCmdFromThreshold(CopyBuffer, pCopyBufferInfo->regionCount, 1, commandBuffer, pCopyBufferInfo); + MVKTraceVulkanCallEnd(); +} + +MVK_PUBLIC_VULKAN_SYMBOL void vkCmdCopyBufferToImage2( + VkCommandBuffer commandBuffer, + const VkCopyBufferToImageInfo2* pCopyBufferToImageInfo) { + MVKTraceVulkanCallStart(); + MVKAddCmdFrom3Thresholds(BufferImageCopy, pCopyBufferToImageInfo->regionCount, 1, 4, 8, commandBuffer, + pCopyBufferToImageInfo); + MVKTraceVulkanCallEnd(); +} + +MVK_PUBLIC_VULKAN_SYMBOL void vkCmdCopyImage2( + VkCommandBuffer commandBuffer, + const VkCopyImageInfo2* pCopyImageInfo) { + MVKTraceVulkanCallStart(); + MVKAddCmdFromThreshold(CopyImage, pCopyImageInfo->regionCount, 1, commandBuffer, + pCopyImageInfo); + MVKTraceVulkanCallEnd(); +} + +MVK_PUBLIC_VULKAN_SYMBOL void vkCmdCopyImageToBuffer2( + VkCommandBuffer commandBuffer, + const VkCopyImageToBufferInfo2* pCopyImageInfo) { + MVKTraceVulkanCallStart(); + MVKAddCmdFrom3Thresholds(BufferImageCopy, pCopyImageInfo->regionCount, 1, 4, 8, commandBuffer, + pCopyImageInfo); + MVKTraceVulkanCallEnd(); +} + +MVK_PUBLIC_VULKAN_STUB(vkCmdPipelineBarrier2, void, VkCommandBuffer, const VkDependencyInfo*) +MVK_PUBLIC_VULKAN_STUB(vkCmdResetEvent2, void, VkCommandBuffer, VkEvent, VkPipelineStageFlags2 stageMask) + +MVK_PUBLIC_VULKAN_SYMBOL void vkCmdResolveImage2( + VkCommandBuffer commandBuffer, + const VkResolveImageInfo2* pResolveImageInfo) { + MVKTraceVulkanCallStart(); + MVKAddCmdFromThreshold(ResolveImage, pResolveImageInfo->regionCount, 1, commandBuffer, + pResolveImageInfo); + MVKTraceVulkanCallEnd(); +} + +MVK_PUBLIC_VULKAN_STUB(vkCmdSetCullMode, void, VkCommandBuffer, VkCullModeFlags) +MVK_PUBLIC_VULKAN_STUB(vkCmdSetDepthBiasEnable, void, VkCommandBuffer, VkBool32) +MVK_PUBLIC_VULKAN_STUB(vkCmdSetDepthBoundsTestEnable, void, VkCommandBuffer, VkBool32) +MVK_PUBLIC_VULKAN_STUB(vkCmdSetDepthCompareOp, void, VkCommandBuffer, VkCompareOp) +MVK_PUBLIC_VULKAN_STUB(vkCmdSetDepthTestEnable, void, VkCommandBuffer, VkBool32) +MVK_PUBLIC_VULKAN_STUB(vkCmdSetDepthWriteEnable, void, VkCommandBuffer, VkBool32) +MVK_PUBLIC_VULKAN_STUB(vkCmdSetEvent2, void, VkCommandBuffer, VkEvent, const VkDependencyInfo*) +MVK_PUBLIC_VULKAN_STUB(vkCmdSetFrontFace, void, VkCommandBuffer, VkFrontFace) +MVK_PUBLIC_VULKAN_STUB(vkCmdSetPrimitiveRestartEnable, void, VkCommandBuffer, VkBool32) +MVK_PUBLIC_VULKAN_STUB(vkCmdSetPrimitiveTopology, void, VkCommandBuffer, VkPrimitiveTopology) +MVK_PUBLIC_VULKAN_STUB(vkCmdSetRasterizerDiscardEnable, void, VkCommandBuffer, VkBool32) +MVK_PUBLIC_VULKAN_STUB(vkCmdSetScissorWithCount, void, VkCommandBuffer, uint32_t, const VkRect2D*) +MVK_PUBLIC_VULKAN_STUB(vkCmdSetStencilOp, void, VkCommandBuffer, VkStencilFaceFlags, VkStencilOp, VkStencilOp, VkStencilOp, VkCompareOp) +MVK_PUBLIC_VULKAN_STUB(vkCmdSetStencilTestEnable, void, VkCommandBuffer, VkBool32) +MVK_PUBLIC_VULKAN_STUB(vkCmdSetViewportWithCount, void, VkCommandBuffer, uint32_t, const VkViewport*) +MVK_PUBLIC_VULKAN_STUB(vkCmdWaitEvents2, void, VkCommandBuffer, uint32_t, const VkEvent*, const VkDependencyInfo*) +MVK_PUBLIC_VULKAN_STUB(vkCmdWriteTimestamp2, void, VkCommandBuffer, VkPipelineStageFlags2, VkQueryPool, uint32_t) +MVK_PUBLIC_VULKAN_STUB_VKRESULT(vkCreatePrivateDataSlot, VkDevice, const VkPrivateDataSlotCreateInfo*, const VkAllocationCallbacks*, VkPrivateDataSlot*) +MVK_PUBLIC_VULKAN_STUB(vkDestroyPrivateDataSlot, void, VkDevice, VkPrivateDataSlot, const VkAllocationCallbacks*) +MVK_PUBLIC_VULKAN_STUB(vkGetDeviceBufferMemoryRequirements, void, VkDevice, const VkDeviceBufferMemoryRequirements*, VkMemoryRequirements2*) +MVK_PUBLIC_VULKAN_STUB(vkGetDeviceImageMemoryRequirements, void, VkDevice, const VkDeviceImageMemoryRequirements*, VkMemoryRequirements2*) +MVK_PUBLIC_VULKAN_STUB(vkGetDeviceImageSparseMemoryRequirements, void, VkDevice, const VkDeviceImageMemoryRequirements*, uint32_t*, VkSparseImageMemoryRequirements2*) +MVK_PUBLIC_VULKAN_STUB_VKRESULT(vkGetPhysicalDeviceToolProperties, VkPhysicalDevice, uint32_t*, VkPhysicalDeviceToolProperties*) +MVK_PUBLIC_VULKAN_STUB(vkGetPrivateData, void, VkDevice, VkObjectType, uint64_t, VkPrivateDataSlot, uint64_t*) +MVK_PUBLIC_VULKAN_STUB_VKRESULT(vkQueueSubmit2, VkQueue, uint32_t, const VkSubmitInfo2*, VkFence) +MVK_PUBLIC_VULKAN_STUB_VKRESULT(vkSetPrivateData, VkDevice, VkObjectType, uint64_t, VkPrivateDataSlot, uint64_t) #pragma mark - #pragma mark VK_KHR_bind_memory2 extension @@ -2482,6 +2634,17 @@ MVK_PUBLIC_VULKAN_SYMBOL VkResult vkWaitSemaphores( MVK_PUBLIC_VULKAN_CORE_ALIAS(vkGetDeviceMemoryOpaqueCaptureAddress, KHR); +#pragma mark - +#pragma mark VK_KHR_copy_commands2 extension + +MVK_PUBLIC_VULKAN_CORE_ALIAS(vkCmdBlitImage2, KHR); +MVK_PUBLIC_VULKAN_CORE_ALIAS(vkCmdCopyBuffer2, KHR); +MVK_PUBLIC_VULKAN_CORE_ALIAS(vkCmdCopyBufferToImage2, KHR); +MVK_PUBLIC_VULKAN_CORE_ALIAS(vkCmdCopyImage2, KHR); +MVK_PUBLIC_VULKAN_CORE_ALIAS(vkCmdCopyImageToBuffer2, KHR); +MVK_PUBLIC_VULKAN_CORE_ALIAS(vkCmdResolveImage2, KHR); + + #pragma mark - #pragma mark VK_KHR_create_renderpass2 extension @@ -2494,23 +2657,8 @@ MVK_PUBLIC_VULKAN_SYMBOL VkResult vkWaitSemaphores( #pragma mark - #pragma mark VK_KHR_dynamic_rendering extension -void vkCmdBeginRenderingKHR( - VkCommandBuffer commandBuffer, - const VkRenderingInfo* pRenderingInfo) { - - MVKTraceVulkanCallStart(); - MVKAddCmdFrom3Thresholds(BeginRendering, pRenderingInfo->colorAttachmentCount, - 1, 2, 4, commandBuffer, pRenderingInfo); - MVKTraceVulkanCallEnd(); -} - -void vkCmdEndRenderingKHR( - VkCommandBuffer commandBuffer) { - - MVKTraceVulkanCallStart(); - MVKAddCmd(EndRendering, commandBuffer); - MVKTraceVulkanCallEnd(); -} +MVK_PUBLIC_VULKAN_CORE_ALIAS(vkCmdBeginRendering, KHR); +MVK_PUBLIC_VULKAN_CORE_ALIAS(vkCmdEndRendering, KHR); #pragma mark - @@ -2592,6 +2740,33 @@ void vkCmdEndRenderingKHR( MVK_PUBLIC_VULKAN_CORE_ALIAS(vkGetDescriptorSetLayoutSupport, KHR); +#pragma mark - +#pragma mark VK_KHR_map_memory2 extension + +MVK_PUBLIC_VULKAN_SYMBOL VkResult vkMapMemory2KHR( + VkDevice device, + const VkMemoryMapInfoKHR* pMemoryMapInfo, + void** ppData) { + + MVKTraceVulkanCallStart(); + MVKDeviceMemory* mvkMem = (MVKDeviceMemory*)pMemoryMapInfo->memory; + VkResult rslt = mvkMem->map(pMemoryMapInfo, ppData); + MVKTraceVulkanCallEnd(); + return rslt; +} + +MVK_PUBLIC_VULKAN_SYMBOL VkResult vkUnmapMemory2KHR( + VkDevice device, + const VkMemoryUnmapInfoKHR* pMemoryUnmapInfo) { + + MVKTraceVulkanCallStart(); + MVKDeviceMemory* mvkMem = (MVKDeviceMemory*)pMemoryUnmapInfo->memory; + VkResult rslt = mvkMem->unmap(pMemoryUnmapInfo); + MVKTraceVulkanCallEnd(); + return rslt; +} + + #pragma mark - #pragma mark VK_KHR_push_descriptor extension @@ -2684,7 +2859,7 @@ MVK_PUBLIC_VULKAN_SYMBOL VkResult vkAcquireNextImageKHR( MVKTraceVulkanCallStart(); MVKSwapchain* mvkSwapchain = (MVKSwapchain*)swapchain; - VkResult rslt = mvkSwapchain->acquireNextImageKHR(timeout, semaphore, fence, ~0u, pImageIndex); + VkResult rslt = mvkSwapchain->acquireNextImage(timeout, semaphore, fence, ~0u, pImageIndex); MVKTraceVulkanCallEnd(); return rslt; } @@ -2745,11 +2920,25 @@ MVK_PUBLIC_VULKAN_SYMBOL VkResult vkAcquireNextImage2KHR( MVKTraceVulkanCallStart(); MVKSwapchain* mvkSwapchain = (MVKSwapchain*)pAcquireInfo->swapchain; - VkResult rslt = mvkSwapchain->acquireNextImageKHR(pAcquireInfo->timeout, - pAcquireInfo->semaphore, - pAcquireInfo->fence, - pAcquireInfo->deviceMask, - pImageIndex); + VkResult rslt = mvkSwapchain->acquireNextImage(pAcquireInfo->timeout, + pAcquireInfo->semaphore, + pAcquireInfo->fence, + pAcquireInfo->deviceMask, + pImageIndex); + MVKTraceVulkanCallEnd(); + return rslt; +} + +#pragma mark - +#pragma mark VK_EXT_swapchain_maintenance1 extension + +MVK_PUBLIC_VULKAN_SYMBOL VkResult vkReleaseSwapchainImagesEXT( + VkDevice device, + const VkReleaseSwapchainImagesInfoEXT* pReleaseInfo) { + + MVKTraceVulkanCallStart(); + MVKSwapchain* mvkSwapchain = (MVKSwapchain*)pReleaseInfo->swapchain; + VkResult rslt = mvkSwapchain->releaseImages(pReleaseInfo); MVKTraceVulkanCallEnd(); return rslt; } @@ -2790,8 +2979,7 @@ MVK_PUBLIC_VULKAN_SYMBOL VkResult vkGetPhysicalDeviceSurfaceCapabilitiesKHR( MVKTraceVulkanCallStart(); MVKPhysicalDevice* mvkPD = MVKPhysicalDevice::getMVKPhysicalDevice(physicalDevice); - MVKSurface* mvkSrfc = (MVKSurface*)surface; - VkResult rslt = mvkPD->getSurfaceCapabilities(mvkSrfc, pSurfaceCapabilities); + VkResult rslt = mvkPD->getSurfaceCapabilities(surface, pSurfaceCapabilities); MVKTraceVulkanCallEnd(); return rslt; } @@ -2835,8 +3023,7 @@ MVK_PUBLIC_VULKAN_SYMBOL VkResult vkGetPhysicalDeviceSurfaceCapabilities2KHR( MVKTraceVulkanCallStart(); MVKPhysicalDevice* mvkPD = MVKPhysicalDevice::getMVKPhysicalDevice(physicalDevice); - MVKSurface* mvkSrfc = (MVKSurface*)pSurfaceInfo->surface; - VkResult rslt = mvkPD->getSurfaceCapabilities(mvkSrfc, &pSurfaceCapabilities->surfaceCapabilities); + VkResult rslt = mvkPD->getSurfaceCapabilities(pSurfaceInfo, pSurfaceCapabilities); MVKTraceVulkanCallEnd(); return rslt; } @@ -3081,6 +3268,23 @@ MVK_PUBLIC_VULKAN_SYMBOL void vkSubmitDebugUtilsMessageEXT( } +#pragma mark - +#pragma mark VK_EXT_external_memory_host extension + +MVK_PUBLIC_VULKAN_SYMBOL VkResult vkGetMemoryHostPointerPropertiesEXT( + VkDevice device, + VkExternalMemoryHandleTypeFlagBits handleType, + const void* pHostPointer, + VkMemoryHostPointerPropertiesEXT* pMemoryHostPointerProperties) { + + MVKTraceVulkanCallStart(); + MVKDevice* mvkDvc = MVKDevice::getMVKDevice(device); + VkResult rslt = mvkDvc->getMemoryHostPointerProperties(handleType, pHostPointer, pMemoryHostPointerProperties); + MVKTraceVulkanCallEnd(); + return rslt; +} + + #pragma mark - #pragma mark VK_EXT_hdr_metadata extension @@ -3309,9 +3513,9 @@ MVK_PUBLIC_SYMBOL PFN_vkVoidFunction vk_icdGetInstanceProcAddr( MVKTraceVulkanCallStart(); PFN_vkVoidFunction func = nullptr; - if (strcmp(pName, "vk_icdNegotiateLoaderICDInterfaceVersion") == 0) { + if (mvkStringsAreEqual(pName, "vk_icdNegotiateLoaderICDInterfaceVersion")) { func = (PFN_vkVoidFunction)vk_icdNegotiateLoaderICDInterfaceVersion; - } else if (strcmp(pName, "vk_icdGetPhysicalDeviceProcAddr") == 0) { + } else if (mvkStringsAreEqual(pName, "vk_icdGetPhysicalDeviceProcAddr")) { func = (PFN_vkVoidFunction)vk_icdGetPhysicalDeviceProcAddr; } else { func = vkGetInstanceProcAddr(instance, pName); diff --git a/MoltenVK/icd/MoltenVK_icd.json b/MoltenVK/icd/MoltenVK_icd.json index 9c9c182cb..9b753d8b5 100644 --- a/MoltenVK/icd/MoltenVK_icd.json +++ b/MoltenVK/icd/MoltenVK_icd.json @@ -2,7 +2,7 @@ "file_format_version" : "1.0.0", "ICD": { "library_path": "./libMoltenVK.dylib", - "api_version" : "1.1.0", + "api_version" : "1.2.0", "is_portability_driver" : true } } diff --git a/MoltenVKPackaging.xcodeproj/xcshareddata/xcschemes/MVKShaderConverterTool Package.xcscheme b/MoltenVKPackaging.xcodeproj/xcshareddata/xcschemes/MVKShaderConverterTool Package.xcscheme index f64c99219..32cc6ebb0 100644 --- a/MoltenVKPackaging.xcodeproj/xcshareddata/xcschemes/MVKShaderConverterTool Package.xcscheme +++ b/MoltenVKPackaging.xcodeproj/xcshareddata/xcschemes/MVKShaderConverterTool Package.xcscheme @@ -1,6 +1,6 @@ setStrings(glslStrings, 1); + glslShaders.back()->setAutoMapBindings(true); if (glslShaders.back()->parse(&glslCompilerResources, 100, false, messages)) { if (shouldLogGLSL) { - logMsg(glslShaders.back()->getInfoLog()); - logMsg(glslShaders.back()->getInfoDebugLog()); + logMsg(conversionResult.resultLog, glslShaders.back()->getInfoLog()); + logMsg(conversionResult.resultLog, glslShaders.back()->getInfoDebugLog()); } } else { - logError(glslShaders.back()->getInfoLog()); - logError(glslShaders.back()->getInfoDebugLog()); - return logError("Error compiling GLSL when converting GLSL to SPIR-V."); + logError(conversionResult.resultLog, glslShaders.back()->getInfoLog()); + logError(conversionResult.resultLog, glslShaders.back()->getInfoDebugLog()); + return logError(conversionResult.resultLog, "Error compiling GLSL when converting GLSL to SPIR-V."); } // Add a shader to the program. Each shader added will be linked together. glslProgram.addShader(glslShaders.back().get()); @@ -92,61 +92,57 @@ MVK_PUBLIC_SYMBOL bool GLSLToSPIRVConverter::convert(MVKGLSLConversionShaderStag // Create and link a shader program if ( !glslProgram.link(messages) ) { - logError(glslProgram.getInfoLog()); - logError(glslProgram.getInfoDebugLog()); - return logError("Error creating GLSL program when converting GLSL to SPIR-V."); + logError(conversionResult.resultLog, glslProgram.getInfoLog()); + logError(conversionResult.resultLog, glslProgram.getInfoDebugLog()); + return logError(conversionResult.resultLog, "Error creating GLSL program when converting GLSL to SPIR-V."); } // Output the SPIR-V code from the shader program - glslang::GlslangToSpv(*glslProgram.getIntermediate(stage), _spirv); + glslang::GlslangToSpv(*glslProgram.getIntermediate(stage), conversionResult.spirv); - if (shouldLogSPIRV) { logSPIRV("Converted"); } + if (shouldLogSPIRV) { logSPIRV(conversionResult, "Converted"); } - return _wasConverted; + return wasConverted; } /** Appends the message text to the result log. */ -void GLSLToSPIRVConverter::logMsg(const char* logMsg) { +void GLSLToSPIRVConverter::logMsg(string& log, const char* logMsg) { string trimMsg = trim(logMsg); if ( !trimMsg.empty() ) { - _resultLog += trimMsg; - _resultLog += "\n\n"; + log += trimMsg; + log += "\n\n"; } } /** Appends the error text to the result log, sets the wasConverted property to false, and returns it. */ -bool GLSLToSPIRVConverter::logError(const char* errMsg) { - logMsg(errMsg); - _wasConverted = false; - return _wasConverted; +bool GLSLToSPIRVConverter::logError(string& log, const char* errMsg) { + logMsg(log, errMsg); + return false; } /** Appends the SPIR-V to the result log, indicating whether it is being converted or was converted. */ -void GLSLToSPIRVConverter::logSPIRV(const char* opDesc) { +void GLSLToSPIRVConverter::logSPIRV(GLSLToSPIRVConversionResult& conversionResult, const char* opDesc) { - string spvLog; - mvk::logSPIRV(_spirv, spvLog); - - _resultLog += opDesc; - _resultLog += " SPIR-V:\n"; - _resultLog += spvLog; - _resultLog += "\nEnd SPIR-V\n\n"; + conversionResult.resultLog += opDesc; + conversionResult.resultLog += " SPIR-V:\n"; + mvk::logSPIRV(conversionResult.spirv, conversionResult.resultLog); + conversionResult.resultLog += "\nEnd SPIR-V\n\n"; } /** Validates that the SPIR-V code will disassemble during logging. */ -bool GLSLToSPIRVConverter::validateSPIRV() { - if (_spirv.size() < 5) { return false; } - if (_spirv[0] != spv::MagicNumber) { return false; } - if (_spirv[4] != 0) { return false; } +bool GLSLToSPIRVConverter::validateSPIRV(vector spirv) { + if (spirv.size() < 5) { return false; } + if (spirv[0] != spv::MagicNumber) { return false; } + if (spirv[4] != 0) { return false; } return true; } /** Appends the GLSL to the result log, indicating whether it is being converted or was converted. */ -void GLSLToSPIRVConverter::logGLSL(const char* opDesc) { - _resultLog += opDesc; - _resultLog += " GLSL:\n"; - for (const auto& glsl : _glsls) { _resultLog += glsl + "\n"; } - _resultLog += "End GLSL\n\n"; +void GLSLToSPIRVConverter::logGLSL(string& log, const char* opDesc) { + log += opDesc; + log += " GLSL:\n"; + for (const auto& glsl : _glsls) { log += glsl + "\n"; } + log += "End GLSL\n\n"; } diff --git a/MoltenVKShaderConverter/MoltenVKShaderConverter/GLSLToSPIRVConverter.h b/MoltenVKShaderConverter/MoltenVKShaderConverter/GLSLToSPIRVConverter.h index ff05831f5..53ba9b2cb 100644 --- a/MoltenVKShaderConverter/MoltenVKShaderConverter/GLSLToSPIRVConverter.h +++ b/MoltenVKShaderConverter/MoltenVKShaderConverter/GLSLToSPIRVConverter.h @@ -1,7 +1,7 @@ /* * GLSLToSPIRVConverter.h * - * Copyright (c) 2015-2022 The Brenwill Workshop Ltd. (http://www.brenwill.com) + * Copyright (c) 2015-2023 The Brenwill Workshop Ltd. (http://www.brenwill.com) * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. @@ -27,6 +27,17 @@ namespace mvk { + +#pragma mark - +#pragma mark SPIRVToMSLConversionResult + + /** The results of a GLSL to SPIRV conversion. */ + typedef struct GLSLToSPIRVConversionResult { + std::vector spirv; + std::string resultLog; + } GLSLToSPIRVConversionResult; + + #pragma mark - #pragma mark GLSLToSPIRVConverter @@ -50,8 +61,7 @@ namespace mvk { /** * Sets the GLSL source code that is to be converted to the specified strings. * - * A separate shader will be compiled for each source and linked together into a single - * program. + * A separate shader will be compiled for each source and linked together into a single program. */ void setGLSLs(const std::vector& glslSrcs); @@ -67,36 +77,20 @@ namespace mvk { * The boolean flags indicate whether the original GLSL code and resulting SPIR-V code should * be logged to the result log of this converter. This can be useful during shader debugging. */ - bool convert(MVKGLSLConversionShaderStage shaderStage, bool shouldLogGLSL, bool shouldLogSPIRV); - - /** - * Returns whether the most recent conversion was successful. - * - * The initial value of this property is NO. It is set to YES upon successful conversion. - */ - bool wasConverted() { return _wasConverted; } - - /** Returns the SPIRV code most recently converted by the convert() function. */ - const std::vector& getSPIRV() { return _spirv; } - - /** - * Returns a human-readable log of the most recent conversion activity. - * This may be empty if the conversion was successful. - */ - const std::string& getResultLog() { return _resultLog; } + bool convert(MVKGLSLConversionShaderStage shaderStage, + GLSLToSPIRVConversionResult& conversionResult, + bool shouldLogGLSL, + bool shouldLogSPIRV); protected: - void logMsg(const char* logMsg); - bool logError(const char* errMsg); - void logGLSL(const char* opDesc); - void logSPIRV(const char* opDesc); - bool validateSPIRV(); + void logMsg(std::string& log, const char* logMsg); + bool logError(std::string& log, const char* errMsg); + void logGLSL(std::string& log, const char* opDesc); + void logSPIRV(GLSLToSPIRVConversionResult& conversionResult, const char* opDesc); + bool validateSPIRV(std::vector spirv); void initGLSLCompilerResources(); std::vector _glsls; - std::vector _spirv; - std::string _resultLog; - bool _wasConverted = false; }; } diff --git a/MoltenVKShaderConverter/MoltenVKShaderConverter/SPIRVConversion.h b/MoltenVKShaderConverter/MoltenVKShaderConverter/SPIRVConversion.h index fadbf2fda..2f77f3578 100644 --- a/MoltenVKShaderConverter/MoltenVKShaderConverter/SPIRVConversion.h +++ b/MoltenVKShaderConverter/MoltenVKShaderConverter/SPIRVConversion.h @@ -1,7 +1,7 @@ /* * SPIRVConversion.h * - * Copyright (c) 2015-2022 The Brenwill Workshop Ltd. (http://www.brenwill.com) + * Copyright (c) 2015-2023 The Brenwill Workshop Ltd. (http://www.brenwill.com) * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. diff --git a/MoltenVKShaderConverter/MoltenVKShaderConverter/SPIRVConversion.mm b/MoltenVKShaderConverter/MoltenVKShaderConverter/SPIRVConversion.mm index aab4933e9..257018bf1 100644 --- a/MoltenVKShaderConverter/MoltenVKShaderConverter/SPIRVConversion.mm +++ b/MoltenVKShaderConverter/MoltenVKShaderConverter/SPIRVConversion.mm @@ -1,7 +1,7 @@ /* * SPIRVConversion.mm * - * Copyright (c) 2015-2022 The Brenwill Workshop Ltd. (http://www.brenwill.com) + * Copyright (c) 2015-2023 The Brenwill Workshop Ltd. (http://www.brenwill.com) * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. @@ -32,20 +32,19 @@ MVK_PUBLIC_SYMBOL bool mvkConvertSPIRVToMSL(uint32_t* spvCode, bool shouldLogSPIRV, bool shouldLogMSL) { SPIRVToMSLConversionConfiguration spvCtx; + SPIRVToMSLConversionResult conversionResult; SPIRVToMSLConverter spvConverter; spvConverter.setSPIRV(spvCode, spvLength); - bool wasConverted = spvConverter.convert(spvCtx, shouldLogSPIRV, shouldLogMSL); + bool wasConverted = spvConverter.convert(spvCtx, conversionResult, shouldLogSPIRV, shouldLogMSL); if (pMSL) { - auto& msl = spvConverter.getMSL(); - *pMSL = (char*)malloc(msl.size() + 1); - strcpy(*pMSL, msl.data()); + *pMSL = (char*)malloc(conversionResult.msl.size() + 1); + strcpy(*pMSL, conversionResult.msl.data()); } if (pResultLog) { - auto log = spvConverter.getResultLog(); - *pResultLog = (char*)malloc(log.size() + 1); - strcpy(*pResultLog, log.data()); + *pResultLog = (char*)malloc(conversionResult.resultLog.size() + 1); + strcpy(*pResultLog, conversionResult.resultLog.data()); } return wasConverted; diff --git a/MoltenVKShaderConverter/MoltenVKShaderConverter/SPIRVReflection.h b/MoltenVKShaderConverter/MoltenVKShaderConverter/SPIRVReflection.h index b9e1e4a16..105cefff8 100644 --- a/MoltenVKShaderConverter/MoltenVKShaderConverter/SPIRVReflection.h +++ b/MoltenVKShaderConverter/MoltenVKShaderConverter/SPIRVReflection.h @@ -1,7 +1,7 @@ /* * SPIRVReflection.h * - * Copyright (c) 2019-2022 Chip Davis for Codeweavers + * Copyright (c) 2019-2023 Chip Davis for Codeweavers * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. @@ -313,6 +313,12 @@ namespace mvk { bool isUsed = true; const auto* type = &reflect.get_type(reflect.get_type_from_variable(varID).parent_type); bool patch = reflect.has_decoration(varID, spv::DecorationPatch); + if (reflect.has_decoration(type->self, spv::DecorationBlock)) { + // In this case, the Patch decoration is on the members. + // FIXME It is theoretically possible for some members of a block to have + // the decoration and some not. What then? + patch = reflect.has_member_decoration(type->self, 0, spv::DecorationPatch); + } auto biType = spv::BuiltInMax; if (reflect.has_decoration(varID, spv::DecorationBuiltIn)) { biType = (spv::BuiltIn)reflect.get_decoration(varID, spv::DecorationBuiltIn); diff --git a/MoltenVKShaderConverter/MoltenVKShaderConverter/SPIRVSupport.cpp b/MoltenVKShaderConverter/MoltenVKShaderConverter/SPIRVSupport.cpp index a421e2348..7fcc587b8 100644 --- a/MoltenVKShaderConverter/MoltenVKShaderConverter/SPIRVSupport.cpp +++ b/MoltenVKShaderConverter/MoltenVKShaderConverter/SPIRVSupport.cpp @@ -1,7 +1,7 @@ /* * SPIRVSupport.cpp * - * Copyright (c) 2015-2022 The Brenwill Workshop Ltd. (http://www.brenwill.com) + * Copyright (c) 2015-2023 The Brenwill Workshop Ltd. (http://www.brenwill.com) * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. @@ -20,6 +20,7 @@ #include "MVKStrings.h" #include #include +#include #import @@ -97,16 +98,25 @@ void mvk::logSPIRV(vector& spirv, string& spvLog) { uint32_t options = (SPV_BINARY_TO_TEXT_OPTION_INDENT); spv_text text; spv_diagnostic diagnostic = nullptr; - spv_context context = spvContextCreate(SPV_ENV_VULKAN_1_0); + spv_context context = spvContextCreate(SPV_ENV_VULKAN_1_2); spv_result_t error = spvBinaryToText(context, spirv.data(), spirv.size(), options, &text, &diagnostic); spvContextDestroy(context); - if (error) { - spvDiagnosticPrint(diagnostic); + if (diagnostic) { + // Cribbed from spvDiagnosticPrint() + stringstream diagMsgOut; + diagMsgOut << "\nSPIR-V error (" << error << ") at "; + if (diagnostic->isTextSource) { + diagMsgOut << "line: " << diagnostic->position.line + 1 << " col: " << diagnostic->position.column + 1 << ": "; + } else { + diagMsgOut << "index: " << diagnostic->position.index << ": "; + } + diagMsgOut << diagnostic->error << "\n"; + spvLog.append(diagMsgOut.str()); spvDiagnosticDestroy(diagnostic); - return; + } else { + spvLog.append(text->str, text->length); + spvTextDestroy(text); } - spvLog.append(text->str, text->length); - spvTextDestroy(text); } #endif diff --git a/MoltenVKShaderConverter/MoltenVKShaderConverter/SPIRVSupport.h b/MoltenVKShaderConverter/MoltenVKShaderConverter/SPIRVSupport.h index ecb0a72a2..52f59ede2 100644 --- a/MoltenVKShaderConverter/MoltenVKShaderConverter/SPIRVSupport.h +++ b/MoltenVKShaderConverter/MoltenVKShaderConverter/SPIRVSupport.h @@ -1,7 +1,7 @@ /* * SPIRVSupport.h * - * Copyright (c) 2015-2022 The Brenwill Workshop Ltd. (http://www.brenwill.com) + * Copyright (c) 2015-2023 The Brenwill Workshop Ltd. (http://www.brenwill.com) * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. diff --git a/MoltenVKShaderConverter/MoltenVKShaderConverter/SPIRVToMSLConverter.cpp b/MoltenVKShaderConverter/MoltenVKShaderConverter/SPIRVToMSLConverter.cpp index 6853b91c5..f1672e2ba 100644 --- a/MoltenVKShaderConverter/MoltenVKShaderConverter/SPIRVToMSLConverter.cpp +++ b/MoltenVKShaderConverter/MoltenVKShaderConverter/SPIRVToMSLConverter.cpp @@ -1,7 +1,7 @@ /* * SPIRVToMSLConverter.cpp * - * Copyright (c) 2015-2022 The Brenwill Workshop Ltd. (http://www.brenwill.com) + * Copyright (c) 2015-2023 The Brenwill Workshop Ltd. (http://www.brenwill.com) * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. @@ -261,6 +261,7 @@ MVK_PUBLIC_SYMBOL void SPIRVToMSLConverter::setSPIRV(const uint32_t* spirvCode, } MVK_PUBLIC_SYMBOL bool SPIRVToMSLConverter::convert(SPIRVToMSLConversionConfiguration& shaderConfig, + SPIRVToMSLConversionResult& conversionResult, bool shouldLogSPIRV, bool shouldLogMSL, bool shouldLogGLSL) { @@ -270,14 +271,10 @@ MVK_PUBLIC_SYMBOL bool SPIRVToMSLConverter::convert(SPIRVToMSLConversionConfigur // spvFile.write((char*)_spirv.data(), _spirv.size() << 2); // spvFile.close(); - _wasConverted = true; - _resultLog.clear(); - _msl.clear(); - _shaderConversionResults.reset(); - - if (shouldLogSPIRV) { logSPIRV("Converting"); } + if (shouldLogSPIRV) { logSPIRV(conversionResult.resultLog, "Converting"); } CompilerMSL* pMSLCompiler = nullptr; + bool wasConverted = true; #ifndef SPIRV_CROSS_EXCEPTIONS_TO_ASSERTIONS try { @@ -341,42 +338,42 @@ MVK_PUBLIC_SYMBOL bool SPIRVToMSLConverter::convert(SPIRVToMSLConversionConfigur } } } - _msl = pMSLCompiler->compile(); + conversionResult.msl = pMSLCompiler->compile(); - if (shouldLogMSL) { logSource(_msl, "MSL", "Converted"); } + if (shouldLogMSL) { logSource(conversionResult.resultLog, conversionResult.msl, "MSL", "Converted"); } #ifndef SPIRV_CROSS_EXCEPTIONS_TO_ASSERTIONS } catch (CompilerError& ex) { string errMsg("MSL conversion error: "); errMsg += ex.what(); - logError(errMsg.data()); + logError(conversionResult.resultLog, errMsg.data()); if (shouldLogMSL && pMSLCompiler) { - _msl = pMSLCompiler->get_partial_source(); - logSource(_msl, "MSL", "Partially converted"); + auto partialMSL = pMSLCompiler->get_partial_source(); + logSource(conversionResult.resultLog, partialMSL, "MSL", "Partially converted"); } } #endif // Populate the shader conversion results with info from the compilation run, // and mark which vertex attributes and resource bindings are used by the shader - populateEntryPoint(pMSLCompiler, shaderConfig.options); - _shaderConversionResults.isRasterizationDisabled = pMSLCompiler && pMSLCompiler->get_is_rasterization_disabled(); - _shaderConversionResults.isPositionInvariant = pMSLCompiler && pMSLCompiler->is_position_invariant(); - _shaderConversionResults.needsSwizzleBuffer = pMSLCompiler && pMSLCompiler->needs_swizzle_buffer(); - _shaderConversionResults.needsOutputBuffer = pMSLCompiler && pMSLCompiler->needs_output_buffer(); - _shaderConversionResults.needsPatchOutputBuffer = pMSLCompiler && pMSLCompiler->needs_patch_output_buffer(); - _shaderConversionResults.needsBufferSizeBuffer = pMSLCompiler && pMSLCompiler->needs_buffer_size_buffer(); - _shaderConversionResults.needsInputThreadgroupMem = pMSLCompiler && pMSLCompiler->needs_input_threadgroup_mem(); - _shaderConversionResults.needsDispatchBaseBuffer = pMSLCompiler && pMSLCompiler->needs_dispatch_base_buffer(); - _shaderConversionResults.needsViewRangeBuffer = pMSLCompiler && pMSLCompiler->needs_view_mask_buffer(); + populateEntryPoint(pMSLCompiler, shaderConfig.options, conversionResult.resultInfo.entryPoint); + conversionResult.resultInfo.isRasterizationDisabled = pMSLCompiler && pMSLCompiler->get_is_rasterization_disabled(); + conversionResult.resultInfo.isPositionInvariant = pMSLCompiler && pMSLCompiler->is_position_invariant(); + conversionResult.resultInfo.needsSwizzleBuffer = pMSLCompiler && pMSLCompiler->needs_swizzle_buffer(); + conversionResult.resultInfo.needsOutputBuffer = pMSLCompiler && pMSLCompiler->needs_output_buffer(); + conversionResult.resultInfo.needsPatchOutputBuffer = pMSLCompiler && pMSLCompiler->needs_patch_output_buffer(); + conversionResult.resultInfo.needsBufferSizeBuffer = pMSLCompiler && pMSLCompiler->needs_buffer_size_buffer(); + conversionResult.resultInfo.needsInputThreadgroupMem = pMSLCompiler && pMSLCompiler->needs_input_threadgroup_mem(); + conversionResult.resultInfo.needsDispatchBaseBuffer = pMSLCompiler && pMSLCompiler->needs_dispatch_base_buffer(); + conversionResult.resultInfo.needsViewRangeBuffer = pMSLCompiler && pMSLCompiler->needs_view_mask_buffer(); // When using Metal argument buffers, if the shader is provided with dynamic buffer offsets, // then it needs a buffer to hold these dynamic offsets. - _shaderConversionResults.needsDynamicOffsetBuffer = false; + conversionResult.resultInfo.needsDynamicOffsetBuffer = false; if (shaderConfig.options.mslOptions.argument_buffers) { for (auto& db : shaderConfig.dynamicBufferDescriptors) { if (db.stage == shaderConfig.options.entryPointStage) { - _shaderConversionResults.needsDynamicOffsetBuffer = true; + conversionResult.resultInfo.needsDynamicOffsetBuffer = true; } } } @@ -418,68 +415,64 @@ MVK_PUBLIC_SYMBOL bool SPIRVToMSLConverter::convert(SPIRVToMSLConversionConfigur options.separate_shader_objects = true; pGLSLCompiler->set_common_options(options); string glsl = pGLSLCompiler->compile(); - logSource(glsl, "GLSL", "Estimated original"); + logSource(conversionResult.resultLog, glsl, "GLSL", "Estimated original"); #ifndef SPIRV_CROSS_EXCEPTIONS_TO_ASSERTIONS } catch (CompilerError& ex) { string errMsg("Original GLSL extraction error: "); errMsg += ex.what(); - logMsg(errMsg.data()); + logMsg(conversionResult.resultLog, errMsg.data()); if (pGLSLCompiler) { string glsl = pGLSLCompiler->get_partial_source(); - logSource(glsl, "GLSL", "Partially converted"); + logSource(conversionResult.resultLog, glsl, "GLSL", "Partially converted"); } } #endif delete pGLSLCompiler; } - return _wasConverted; + return wasConverted; } // Appends the message text to the result log. -void SPIRVToMSLConverter::logMsg(const char* logMsg) { +void SPIRVToMSLConverter::logMsg(string& log, const char* logMsg) { string trimMsg = trim(logMsg); if ( !trimMsg.empty() ) { - _resultLog += trimMsg; - _resultLog += "\n\n"; + log += trimMsg; + log += "\n\n"; } } -// Appends the error text to the result log, sets the wasConverted property to false, and returns it. -bool SPIRVToMSLConverter::logError(const char* errMsg) { - logMsg(errMsg); - _wasConverted = false; - return _wasConverted; +// Appends the error text to the result log, and returns false to indicate an error. +bool SPIRVToMSLConverter::logError(string& log, const char* errMsg) { + logMsg(log, errMsg); + return false; } // Appends the SPIR-V to the result log, indicating whether it is being converted or was converted. -void SPIRVToMSLConverter::logSPIRV(const char* opDesc) { - - string spvLog; - mvk::logSPIRV(_spirv, spvLog); +void SPIRVToMSLConverter::logSPIRV(string& log, const char* opDesc) { - _resultLog += opDesc; - _resultLog += " SPIR-V:\n"; - _resultLog += spvLog; - _resultLog += "\nEnd SPIR-V\n\n"; + log += opDesc; + log += " SPIR-V:\n"; + mvk::logSPIRV(_spirv, log); + log += "\nEnd SPIR-V\n\n"; // Uncomment one or both of the following lines to get additional debugging and tracability capabilities. // The SPIR-V can be written in binary form to a file, and/or logged in human readable form to the console. // These can be helpful if errors occur during conversion of SPIR-V to MSL. -// writeSPIRVToFile("spvout.spv"); -// printf("\n%s\n", getResultLog().c_str()); +// writeSPIRVToFile("spvout.spv", log); +// printf("\n%s\n", log.c_str()); } // Writes the SPIR-V code to a file. This can be useful for debugging // when the SPRIR-V did not originally come from a known file -void SPIRVToMSLConverter::writeSPIRVToFile(string spvFilepath) { +void SPIRVToMSLConverter::writeSPIRVToFile(string spvFilepath, string& log) { vector fileContents; spirvToBytes(_spirv, fileContents); string errMsg; if (writeFile(spvFilepath, fileContents, errMsg)) { - _resultLog += "Saved SPIR-V to file: " + absolutePath(spvFilepath) + "\n\n"; + log += "Saved SPIR-V to file: " + absolutePath(spvFilepath) + "\n\n"; } else { - _resultLog += "Could not write SPIR-V file. " + errMsg + "\n\n"; + log += "Could not write SPIR-V file. " + errMsg + "\n\n"; } } @@ -492,15 +485,15 @@ bool SPIRVToMSLConverter::validateSPIRV() { } // Appends the source to the result log, prepending with the operation. -void SPIRVToMSLConverter::logSource(string& src, const char* srcLang, const char* opDesc) { - _resultLog += opDesc; - _resultLog += " "; - _resultLog += srcLang; - _resultLog += ":\n"; - _resultLog += src; - _resultLog += "\nEnd "; - _resultLog += srcLang; - _resultLog += "\n\n"; +void SPIRVToMSLConverter::logSource(string& log, string& src, const char* srcLang, const char* opDesc) { + log += opDesc; + log += " "; + log += srcLang; + log += ":\n"; + log += src; + log += "\nEnd "; + log += srcLang; + log += "\n\n"; } void SPIRVToMSLConverter::populateWorkgroupDimension(SPIRVWorkgroupSizeDimension& wgDim, @@ -513,7 +506,8 @@ void SPIRVToMSLConverter::populateWorkgroupDimension(SPIRVWorkgroupSizeDimension // Populates the entry point with info extracted from the SPRI-V compiler. void SPIRVToMSLConverter::populateEntryPoint(Compiler* pCompiler, - SPIRVToMSLConversionOptions& options) { + SPIRVToMSLConversionOptions& options, + SPIRVEntryPoint& entryPoint) { if ( !pCompiler ) { return; } @@ -528,14 +522,13 @@ void SPIRVToMSLConverter::populateEntryPoint(Compiler* pCompiler, } } - auto& ep = _shaderConversionResults.entryPoint; - ep.mtlFunctionName = spvEP.name; - ep.supportsFastMath = !spvEP.flags.get(ExecutionModeSignedZeroInfNanPreserve); + entryPoint.mtlFunctionName = spvEP.name; + entryPoint.supportsFastMath = !spvEP.flags.get(ExecutionModeSignedZeroInfNanPreserve); SpecializationConstant widthSC, heightSC, depthSC; pCompiler->get_work_group_size_specialization_constants(widthSC, heightSC, depthSC); - auto& wgSize = ep.workgroupSize; + auto& wgSize = entryPoint.workgroupSize; populateWorkgroupDimension(wgSize.width, spvEP.workgroup_size.x, widthSC); populateWorkgroupDimension(wgSize.height, spvEP.workgroup_size.y, heightSC); populateWorkgroupDimension(wgSize.depth, spvEP.workgroup_size.z, depthSC); diff --git a/MoltenVKShaderConverter/MoltenVKShaderConverter/SPIRVToMSLConverter.h b/MoltenVKShaderConverter/MoltenVKShaderConverter/SPIRVToMSLConverter.h index 5f00e5044..765e110ff 100644 --- a/MoltenVKShaderConverter/MoltenVKShaderConverter/SPIRVToMSLConverter.h +++ b/MoltenVKShaderConverter/MoltenVKShaderConverter/SPIRVToMSLConverter.h @@ -1,7 +1,7 @@ /* * SPIRVToMSLConverter.h * - * Copyright (c) 2015-2022 The Brenwill Workshop Ltd. (http://www.brenwill.com) + * Copyright (c) 2015-2023 The Brenwill Workshop Ltd. (http://www.brenwill.com) * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. @@ -192,7 +192,7 @@ namespace mvk { #pragma mark - -#pragma mark SPIRVToMSLConversionResults +#pragma mark SPIRVToMSLConversionResult /** * Describes one dimension of the workgroup size of a SPIR-V entry point, including whether @@ -227,12 +227,12 @@ namespace mvk { } SPIRVEntryPoint; /** - * Contains the results of the shader conversion that can be used to populate a pipeline. + * Contains information about a shader conversion that can be used to populate a pipeline. * * THIS STRUCT IS STREAMED OUT AS PART OF THE PIEPLINE CACHE. * CHANGES TO THIS STRUCT SHOULD BE CAPTURED IN THE STREAMING LOGIC OF THE PIPELINE CACHE. */ - typedef struct SPIRVToMSLConversionResults { + typedef struct SPIRVToMSLConversionResultInfo { SPIRVEntryPoint entryPoint; bool isRasterizationDisabled = false; bool isPositionInvariant = false; @@ -245,9 +245,14 @@ namespace mvk { bool needsDispatchBaseBuffer = false; bool needsViewRangeBuffer = false; - void reset() { *this = SPIRVToMSLConversionResults(); } + } SPIRVToMSLConversionResultInfo; - } SPIRVToMSLConversionResults; + /** The results of a SPIRV to MSL conversion. */ + typedef struct SPIRVToMSLConversionResult { + SPIRVToMSLConversionResultInfo resultInfo = {}; + std::string msl; + std::string resultLog; + } SPIRVToMSLConversionResult; #pragma mark - @@ -274,68 +279,29 @@ namespace mvk { bool hasSPIRV() { return !_spirv.empty(); } /** - * Converts SPIR-V code, set using setSPIRV() to MSL code, which can be retrieved using getMSL(). + * Converts SPIR-V code, set using setSPIRV() to MSL code. * * The boolean flags indicate whether the original SPIR-V code, the resulting MSL code, * and optionally, the original GLSL (as converted from the SPIR_V), should be logged * to the result log of this converter. This can be useful during shader debugging. */ bool convert(SPIRVToMSLConversionConfiguration& shaderConfig, - bool shouldLogSPIRV = false, - bool shouldLogMSL = false, - bool shouldLogGLSL = false); - - /** - * Returns whether the most recent conversion was successful. - * - * The initial value of this property is NO. It is set to YES upon successful conversion. - */ - bool wasConverted() { return _wasConverted; } - - /** - * Returns the Metal Shading Language source code most recently converted - * by the convert() function, or set directly using the setMSL() function. - */ - const std::string& getMSL() { return _msl; } - - /** Returns information about the shader conversion. */ - const SPIRVToMSLConversionResults& getConversionResults() { return _shaderConversionResults; } - - /** Sets the number of threads in a single compute kernel workgroup, per dimension. */ - void setWorkgroupSize(uint32_t x, uint32_t y, uint32_t z) { - auto& wgSize = _shaderConversionResults.entryPoint.workgroupSize; - wgSize.width.size = x; - wgSize.height.size = y; - wgSize.depth.size = z; - } - - /** - * Returns a human-readable log of the most recent conversion activity. - * This may be empty if the conversion was successful. - */ - const std::string& getResultLog() { return _resultLog; } - - /** Sets MSL source code. This can be used when MSL is supplied directly. */ - void setMSL(const std::string& msl, const SPIRVToMSLConversionResults* pShaderConversionResults) { - _msl = msl; - if (pShaderConversionResults) { _shaderConversionResults = *pShaderConversionResults; } - } + SPIRVToMSLConversionResult& conversionResult, + bool shouldLogSPIRV = false, + bool shouldLogMSL = false, + bool shouldLogGLSL = false); protected: - void logMsg(const char* logMsg); - bool logError(const char* errMsg); - void logSPIRV(const char* opDesc); + void logMsg(std::string& log, const char* logMsg); + bool logError(std::string& log, const char* errMsg); + void logSPIRV(std::string& log, const char* opDesc); + void logSource(std::string& log, std::string& src, const char* srcLang, const char* opDesc); bool validateSPIRV(); - void writeSPIRVToFile(std::string spvFilepath); - void logSource(std::string& src, const char* srcLang, const char* opDesc); + void writeSPIRVToFile(std::string spvFilepath, std::string& log); void populateWorkgroupDimension(SPIRVWorkgroupSizeDimension& wgDim, uint32_t size, SPIRV_CROSS_NAMESPACE::SpecializationConstant& spvSpecConst); - void populateEntryPoint(SPIRV_CROSS_NAMESPACE::Compiler* pCompiler, SPIRVToMSLConversionOptions& options); + void populateEntryPoint(SPIRV_CROSS_NAMESPACE::Compiler* pCompiler, SPIRVToMSLConversionOptions& options, SPIRVEntryPoint& entryPoint); std::vector _spirv; - std::string _msl; - std::string _resultLog; - SPIRVToMSLConversionResults _shaderConversionResults; - bool _wasConverted = false; }; } diff --git a/MoltenVKShaderConverter/MoltenVKShaderConverterTool/MoltenVKShaderConverterTool.cpp b/MoltenVKShaderConverter/MoltenVKShaderConverterTool/MoltenVKShaderConverterTool.cpp index f720f5194..9a911e3de 100644 --- a/MoltenVKShaderConverter/MoltenVKShaderConverterTool/MoltenVKShaderConverterTool.cpp +++ b/MoltenVKShaderConverter/MoltenVKShaderConverterTool/MoltenVKShaderConverterTool.cpp @@ -1,7 +1,7 @@ /* * MoltenVKShaderConverterTool.cpp * - * Copyright (c) 2015-2022 The Brenwill Workshop Ltd. (http://www.brenwill.com) + * Copyright (c) 2015-2023 The Brenwill Workshop Ltd. (http://www.brenwill.com) * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. @@ -137,24 +137,23 @@ bool MoltenVKShaderConverterTool::convertGLSL(string& glslInFile, } // Convert GLSL to SPIR-V + GLSLToSPIRVConversionResult conversionResult; GLSLToSPIRVConverter glslConverter; glslConverter.setGLSL(glslCode); uint64_t startTime = _glslConversionPerformance.getTimestamp(); - bool wasConverted = glslConverter.convert(shaderStage, _shouldLogConversions, _shouldLogConversions); + bool wasConverted = glslConverter.convert(shaderStage, conversionResult, _shouldLogConversions, _shouldLogConversions); _glslConversionPerformance.accumulate(startTime); if (wasConverted) { - if (_shouldLogConversions) { log(glslConverter.getResultLog().data()); } + if (_shouldLogConversions) { log(conversionResult.resultLog.data()); } } else { string logMsg = "Could not convert GLSL in file: " + absolutePath(path); log(logMsg.data()); - log(glslConverter.getResultLog().data()); + log(conversionResult.resultLog.data()); return false; } - const vector& spv = glslConverter.getSPIRV(); - // Write the SPIR-V code to a file. // If no file has been supplied, create one from the GLSL file name. if (_shouldWriteSPIRV) { @@ -162,9 +161,9 @@ bool MoltenVKShaderConverterTool::convertGLSL(string& glslInFile, if (path.empty()) { path = pathWithExtension(glslInFile, _shouldOutputAsHeaders ? "h" : "spv", _shouldIncludeOrigPathExtn, _origPathExtnSep); } if (_shouldOutputAsHeaders) { - spirvToHeaderBytes(spv, fileContents, fileName(path, false)); + spirvToHeaderBytes(conversionResult.spirv, fileContents, fileName(path, false)); } else { - spirvToBytes(spv, fileContents); + spirvToBytes(conversionResult.spirv, fileContents); } if (writeFile(path, fileContents, errMsg)) { @@ -177,7 +176,7 @@ bool MoltenVKShaderConverterTool::convertGLSL(string& glslInFile, } } - return convertSPIRV(spv, glslInFile, mslOutFile, false); + return convertSPIRV(conversionResult.spirv, glslInFile, mslOutFile, false); } // Read SPIR-V code from a SPIR-V file, convert to MSL, and write the MSL code to files. @@ -227,25 +226,25 @@ bool MoltenVKShaderConverterTool::convertSPIRV(const vector& spv, spvConverter.setSPIRV(spv); uint64_t startTime = _spvConversionPerformance.getTimestamp(); - bool wasConverted = spvConverter.convert(mslContext, shouldLogSPV, _shouldLogConversions, (_shouldLogConversions && shouldLogSPV)); + SPIRVToMSLConversionResult conversionResult; + bool wasConverted = spvConverter.convert(mslContext, conversionResult, shouldLogSPV, _shouldLogConversions, (_shouldLogConversions && shouldLogSPV)); _spvConversionPerformance.accumulate(startTime); if (wasConverted) { - if (_shouldLogConversions) { log(spvConverter.getResultLog().data()); } + if (_shouldLogConversions) { log(conversionResult.resultLog.data()); } } else { string errMsg = "Could not convert SPIR-V in file: " + absolutePath(inFile); log(errMsg.data()); - log(spvConverter.getResultLog().data()); + log(conversionResult.resultLog.data()); return false; } // Write the MSL to file string path = mslOutFile; if (mslOutFile.empty()) { path = pathWithExtension(inFile, "metal", _shouldIncludeOrigPathExtn, _origPathExtnSep); } - const string& msl = spvConverter.getMSL(); string compileErrMsg; - bool wasCompiled = compile(msl, compileErrMsg, _mslVersionMajor, _mslVersionMinor, _mslVersionPatch); + bool wasCompiled = compile(conversionResult.msl, compileErrMsg, _mslVersionMajor, _mslVersionMinor, _mslVersionPatch); if (compileErrMsg.size() > 0) { string preamble = wasCompiled ? "is valid but the validation compilation produced warnings: " : "failed a validation compilation: "; compileErrMsg = "Generated MSL " + preamble + compileErrMsg; @@ -255,7 +254,7 @@ bool MoltenVKShaderConverterTool::convertSPIRV(const vector& spv, } vector fileContents; - fileContents.insert(fileContents.end(), msl.begin(), msl.end()); + fileContents.insert(fileContents.end(), conversionResult.msl.begin(), conversionResult.msl.end()); string writeErrMsg; if (writeFile(path, fileContents, writeErrMsg)) { string logMsg = "Saved MSL to file: " + fileName(path); diff --git a/MoltenVKShaderConverter/MoltenVKShaderConverterTool/MoltenVKShaderConverterTool.h b/MoltenVKShaderConverter/MoltenVKShaderConverterTool/MoltenVKShaderConverterTool.h index 179ce3b41..a23d04a46 100644 --- a/MoltenVKShaderConverter/MoltenVKShaderConverterTool/MoltenVKShaderConverterTool.h +++ b/MoltenVKShaderConverter/MoltenVKShaderConverterTool/MoltenVKShaderConverterTool.h @@ -1,7 +1,7 @@ /* * MoltenVKShaderConverterTool.h * - * Copyright (c) 2015-2022 The Brenwill Workshop Ltd. (http://www.brenwill.com) + * Copyright (c) 2015-2023 The Brenwill Workshop Ltd. (http://www.brenwill.com) * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. diff --git a/MoltenVKShaderConverter/MoltenVKShaderConverterTool/OSSupport.h b/MoltenVKShaderConverter/MoltenVKShaderConverterTool/OSSupport.h index 4251619ac..93f138628 100644 --- a/MoltenVKShaderConverter/MoltenVKShaderConverterTool/OSSupport.h +++ b/MoltenVKShaderConverter/MoltenVKShaderConverterTool/OSSupport.h @@ -1,7 +1,7 @@ /* * OSSupport.h * - * Copyright (c) 2015-2022 The Brenwill Workshop Ltd. (http://www.brenwill.com) + * Copyright (c) 2015-2023 The Brenwill Workshop Ltd. (http://www.brenwill.com) * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. diff --git a/MoltenVKShaderConverter/MoltenVKShaderConverterTool/OSSupport.mm b/MoltenVKShaderConverter/MoltenVKShaderConverterTool/OSSupport.mm index 06fedcbbf..965d6cb03 100644 --- a/MoltenVKShaderConverter/MoltenVKShaderConverterTool/OSSupport.mm +++ b/MoltenVKShaderConverter/MoltenVKShaderConverterTool/OSSupport.mm @@ -1,7 +1,7 @@ /* * OSSupport.mm * - * Copyright (c) 2015-2022 The Brenwill Workshop Ltd. (http://www.brenwill.com) + * Copyright (c) 2015-2023 The Brenwill Workshop Ltd. (http://www.brenwill.com) * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. diff --git a/MoltenVKShaderConverter/MoltenVKShaderConverterTool/main.cpp b/MoltenVKShaderConverter/MoltenVKShaderConverterTool/main.cpp index 1b6650e95..78e687e55 100644 --- a/MoltenVKShaderConverter/MoltenVKShaderConverterTool/main.cpp +++ b/MoltenVKShaderConverter/MoltenVKShaderConverterTool/main.cpp @@ -1,7 +1,7 @@ /* * main.cpp * - * Copyright (c) 2015-2022 The Brenwill Workshop Ltd. (http://www.brenwill.com) + * Copyright (c) 2015-2023 The Brenwill Workshop Ltd. (http://www.brenwill.com) * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. diff --git a/README.md b/README.md index 49f74682d..20249d647 100644 --- a/README.md +++ b/README.md @@ -7,7 +7,7 @@ MoltenVK ======== -Copyright (c) 2015-2022 [The Brenwill Workshop Ltd.](http://www.brenwill.com) +Copyright (c) 2015-2023 [The Brenwill Workshop Ltd.](http://www.brenwill.com) [comment]: # "This document is written in Markdown (http://en.wikipedia.org/wiki/Markdown) format." [comment]: # "For best results, use a Markdown reader." @@ -69,7 +69,7 @@ document in the `Docs` directory. Introduction to MoltenVK ------------------------ -**MoltenVK** is a layered implementation of [*Vulkan 1.1*](https://www.khronos.org/vulkan) +**MoltenVK** is a layered implementation of [*Vulkan 1.2*](https://www.khronos.org/vulkan) graphics and compute functionality, that is built on Apple's [*Metal*](https://developer.apple.com/metal) graphics and compute framework on *macOS*, *iOS*, and *tvOS*. **MoltenVK** allows you to use *Vulkan* graphics and compute functionality to develop modern, cross-platform, high-performance graphical @@ -88,7 +88,7 @@ channels, including *Apple's App Store*. The **MoltenVK** runtime package contains two products: - **MoltenVK** is a implementation of an almost-complete subset of the - [*Vulkan 1.1*](https://www.khronos.org/vulkan) graphics and compute API. + [*Vulkan 1.2*](https://www.khronos.org/vulkan) graphics and compute API. - **MoltenVKShaderConverter** converts *SPIR-V* shader code to *Metal Shading Language (MSL)* shader code, and converts *GLSL* shader source code to *SPIR-V* shader code and/or @@ -158,6 +158,20 @@ Building **MoltenVK** During building, **MoltenVK** references the latest *Apple SDK* frameworks. To access these frameworks, and to avoid build errors, be sure to use the latest publicly available version of *Xcode*. +> ***Note:*** *Xcode 14* introduced a new static linkage model that is not compatible with previous +versions of *Xcode*. If you link to a `MoltenVK.xcframework` that was built with *Xcode 14* or later, +also use *Xcode 14* or later to link it to your app or game. +> +> If you need to use *Xcode 13* or earlier to link `MoltenVK.xcframework` to your app or game, +first build **MoltenVK** with *Xcode 13* or earlier. +> +> Or, if you want to use *Xcode 14* or later to build **MoltenVK**, in order to be able to use the +latest *Metal* capabilities, but need to use *Xcode 13* or earlier to link `MoltenVK.xcframework` +to your app or game, first add the value `-fno-objc-msgsend-selector-stubs` to the `OTHER_CFLAGS` +*Xcode* build setting in the `MoltenVK.xcodeproj` and `MoltenVKShaderConverter.xcodeproj` *Xcode* +projects, build **MoltenVK** with *Xcode 14* or later, and then link `MoltenVK.xcframework` +to your app or game using *Xcode 13* or earlier. + **MoltenVK** can be built to support at least *macOS 10.11*, *iOS 9*, or *tvOS 9*, but the default _Xcode_ build settings in the included _Xcode_ projects are set to a minimum deployment target of *macOS 10.13*, *iOS 11*, and *tvOS 11*, which are the oldest OS versions supported by the current @@ -254,20 +268,33 @@ The `make` targets all require that *Xcode* is installed on your system. Building from the command line creates the same `Package` folder structure described above when building from within *Xcode*. +When building from the command line, you can set any of the build settings documented in +the `vk_mvk_moltenvk.h` file for `MVKConfiguration`, by passing them in the command line, +as in the following examples: + + make MVK_CONFIG_LOG_LEVEL=0 +or + + make macos MVK_CONFIG_PREFILL_METAL_COMMAND_BUFFERS=1 + +...etc. + ### Hiding Vulkan API Symbols You can optionally build MoltenVK with the Vulkan API static call symbols (`vk*`) hidden, to avoid library linking conflicts when bound to a Vulkan Loader that also exports identical symbols. -To do so, when building MoltenVK, set the build setting or environment varible `MVK_HIDE_VULKAN_SYMBOLS=1`. -This build setting can be changed in the `MoltenVK.xcodeproj` *Xcode* project, or it can be included in -any of the `make` build commands. For example: +To do so, when building MoltenVK, set the build setting `MVK_HIDE_VULKAN_SYMBOLS=1`. +This build setting can be set in the `MoltenVK.xcodeproj` *Xcode* project, +or it can be included in any of the `make` build commands. For example: make MVK_HIDE_VULKAN_SYMBOLS=1 - ... - make macos-debug MVK_HIDE_VULKAN_SYMBOLS=1 - ...etc. +or + + make macos MVK_HIDE_VULKAN_SYMBOLS=1 + +...etc. @@ -305,11 +332,11 @@ the contents of that directory out of this **MoltenVK** repository into your own **MoltenVK** and *Vulkan* Compliance ------------------------------------ -**MoltenVK** is designed to be an implementation of a *Vulkan 1.1* subset that runs on *macOS*, *iOS*, +**MoltenVK** is designed to be an implementation of a *Vulkan 1.2* subset that runs on *macOS*, *iOS*, and *tvOS* platforms by mapping *Vulkan* capability to native *Metal* capability. The fundamental design and development goal of **MoltenVK** is to provide this capability in a way that -is both maximally compliant with the *Vulkan 1.1* specification, and maximally performant. +is both maximally compliant with the *Vulkan 1.2* specification, and maximally performant. Such compliance and performance is inherently affected by the capability available through *Metal*, as the native graphics driver on *macOS*, *iOS*, and *tvOS* platforms. *Vulkan* compliance may fall into one of @@ -389,7 +416,7 @@ Property claims. ### *Vulkan* Validation Despite running on top of *Metal*, **MoltenVK** operates as a *Vulkan* core layer. As such, as per the -error handling guidelines of the [*Vulkan* specification](https://www.khronos.org/registry/vulkan/specs/1.1/html/vkspec.html#fundamentals-errors), **MoltenVK** should not perform *Vulkan* validation. When adding functionality +error handling guidelines of the [*Vulkan* specification](https://www.khronos.org/registry/vulkan/specs/1.2/html/vkspec.html#fundamentals-errors), **MoltenVK** should not perform *Vulkan* validation. When adding functionality to **MoltenVK**, avoid adding unnecessary validation code. Validation and error generation **_is_** appropriate within **MoltenVK** in cases where **MoltenVK** deviates @@ -406,14 +433,14 @@ behavior from the *Vulkan* specification. ### Memory Management *Metal*, and other *Objective-C* objects in *Apple's SDK* frameworks, use reference counting for memory management. -When instantiating *Objective-C* objects, it is important that you do not rely on implied *autorelease pools* to do -memory management for you. Because many *Vulkan* games and apps may be ported from other platforms, they will -typically not include autorelease pools in their threading models. - -Avoid the use of the `autorelease` method, or any object creation methods that imply use of `autorelease`, -(eg- `[NSString stringWithFormat: ]`, etc). Instead, favour object creation methods that return a retained object -(eg- `[[NSString alloc] initWithFormat: ]`, etc), and manually track and release those objects. If you need to use -autoreleased objects, wrap code blocks in an `@autoreleasepool {...}` block. +As a contributor to **MoltenVK**, when instantiating *Objective-C* objects, it is important that you do not rely on +the app providing *autorelease pools* to do memory management for you. Because many *Vulkan* games and apps may be +ported from other platforms, they will often not automatically include autorelease pools in their threading models. + +As a contributor to **MoltenVK**, avoid the use of the *Metal* `autorelease` method, or any object *Metal* creation +methods that imply internal use of `autorelease`, (eg- `[NSString stringWithFormat: ]`, etc). Instead, favor object +creation methods that return a retained object (eg- `[[NSString alloc] initWithFormat: ]`, etc), and manually track +and release those objects. If you need to use autoreleased objects, wrap your code in an `@autoreleasepool {...}` block. ### Code Formatting diff --git a/Scripts/runcts b/Scripts/runcts index 6a8761d0d..2349e75d0 100755 --- a/Scripts/runcts +++ b/Scripts/runcts @@ -1,6 +1,6 @@ #!/bin/bash -# Copyright (c) 2016-2022 The Brenwill Workshop Ltd. +# Copyright (c) 2016-2023 The Brenwill Workshop Ltd. # # runcts - This script simplifies running Vulkan CTS tests on MoltenVK. # @@ -94,22 +94,24 @@ if [ "${is_portability}" != "" ]; then export MVK_CONFIG_ADVERTISE_EXTENSIONS=0xA fi +# ----- Metal validation settings ------ export METAL_DEVICE_WRAPPER_TYPE=1 export METAL_ERROR_MODE=3 export METAL_DEBUG_ERROR_MODE=3 # ----- MoltenVK config settings ------ -export MVK_CONFIG_LOG_LEVEL=1 +export MVK_CONFIG_LOG_LEVEL=1 #(1 = Errors only, 3 = Info) export MVK_DEBUG=0 -# Additional MoltenVK configuration can be set here by -# editing below, or can be set before calling this script. +# Additional MoltenVK configuration can be set here by editing below. export MVK_CONFIG_RESUME_LOST_DEVICE=1 export MVK_CONFIG_FAST_MATH_ENABLED=1 -export MVK_CONFIG_USE_METAL_ARGUMENT_BUFFERS=0 #(2 = VK_EXT_descriptor_indexing enabled) export MVK_CONFIG_FORCE_LOW_POWER_GPU=0 -export MVK_CONFIG_VK_SEMAPHORE_SUPPORT_STYLE=2 #(2 = MTLEvents always) - +export MVK_CONFIG_USE_METAL_ARGUMENT_BUFFERS=0 #(2 = VK_EXT_descriptor_indexing enabled) +export MVK_CONFIG_VK_SEMAPHORE_SUPPORT_STYLE=2 #(2 = MTLEvents always) +export MVK_CONFIG_SHADER_COMPRESSION_ALGORITHM=0 #(2 = ZLIB, 3 = LZ4) +export MVK_CONFIG_PERFORMANCE_TRACKING=0 +export MVK_CONFIG_ACTIVITY_PERFORMANCE_LOGGING_STYLE=2 #(2 = Device lifetime) # -------------- Operation -------------------- diff --git a/Templates/spirv-tools/build.zip b/Templates/spirv-tools/build.zip index 7faf95cc0..c78f151c3 100644 Binary files a/Templates/spirv-tools/build.zip and b/Templates/spirv-tools/build.zip differ diff --git a/fetchDependencies b/fetchDependencies index 2b74ddaf0..5491da25d 100755 --- a/fetchDependencies +++ b/fetchDependencies @@ -1,6 +1,6 @@ #!/bin/bash # -# Copyright (c) 2016-2022 The Brenwill Workshop Ltd. +# Copyright (c) 2016-2023 The Brenwill Workshop Ltd. # # fetchDependencies - Retrieves the correct versions of all dependencies #