diff options
Diffstat (limited to 'llvm/lib/Target/SPIRV/SPIRVModuleAnalysis.cpp')
-rw-r--r-- | llvm/lib/Target/SPIRV/SPIRVModuleAnalysis.cpp | 13 |
1 files changed, 12 insertions, 1 deletions
diff --git a/llvm/lib/Target/SPIRV/SPIRVModuleAnalysis.cpp b/llvm/lib/Target/SPIRV/SPIRVModuleAnalysis.cpp index 0cd9d78..ab06fc0 100644 --- a/llvm/lib/Target/SPIRV/SPIRVModuleAnalysis.cpp +++ b/llvm/lib/Target/SPIRV/SPIRVModuleAnalysis.cpp @@ -744,8 +744,14 @@ void SPIRV::RequirementHandler::checkSatisfiable( IsSatisfiable = false; } + AvoidCapabilitiesSet AvoidCaps; + if (!ST.isShader()) + AvoidCaps.S.insert(SPIRV::Capability::Shader); + else + AvoidCaps.S.insert(SPIRV::Capability::Kernel); + for (auto Cap : MinimalCaps) { - if (AvailableCaps.contains(Cap)) + if (AvailableCaps.contains(Cap) && !AvoidCaps.S.contains(Cap)) continue; LLVM_DEBUG(dbgs() << "Capability not supported: " << getSymbolicOperandMnemonic( @@ -1865,6 +1871,11 @@ void addInstrRequirements(const MachineInstr &MI, Reqs.addCapability(SPIRV::Capability::TernaryBitwiseFunctionINTEL); break; } + case SPIRV::OpCopyMemorySized: { + Reqs.addCapability(SPIRV::Capability::Addresses); + // TODO: Add UntypedPointersKHR when implemented. + break; + } default: break; |