@@ -626,6 +626,16 @@ void SPIRV::RequirementHandler::removeCapabilityIf(
626626namespace llvm {
627627namespace SPIRV {
628628void RequirementHandler::initAvailableCapabilities (const SPIRVSubtarget &ST) {
629+ // Provided by both all supported Vulkan versions and OpenCl.
630+ addAvailableCaps ({Capability::Shader, Capability::Linkage, Capability::Int8,
631+ Capability::Int16});
632+
633+ if (ST.isAtLeastSPIRVVer (VersionTuple (1 , 6 )))
634+ addAvailableCaps ({Capability::DotProductKHR,
635+ Capability::DotProductInputAllKHR,
636+ Capability::DotProductInput4x8BitKHR,
637+ Capability::DotProductInput4x8BitPackedKHR});
638+
629639 if (ST.isOpenCLEnv ()) {
630640 initAvailableCapabilitiesForOpenCL (ST);
631641 return ;
@@ -643,10 +653,8 @@ void RequirementHandler::initAvailableCapabilitiesForOpenCL(
643653 const SPIRVSubtarget &ST) {
644654 // Add the min requirements for different OpenCL and SPIR-V versions.
645655 addAvailableCaps ({Capability::Addresses, Capability::Float16Buffer,
646- Capability::Int16, Capability::Int8, Capability::Kernel,
647- Capability::Linkage, Capability::Vector16,
648- Capability::Groups, Capability::GenericPointer,
649- Capability::Shader});
656+ Capability::Kernel, Capability::Vector16,
657+ Capability::Groups, Capability::GenericPointer});
650658 if (ST.hasOpenCLFullProfile ())
651659 addAvailableCaps ({Capability::Int64, Capability::Int64Atomics});
652660 if (ST.hasOpenCLImageSupport ()) {
@@ -672,11 +680,6 @@ void RequirementHandler::initAvailableCapabilitiesForOpenCL(
672680 Capability::SignedZeroInfNanPreserve,
673681 Capability::RoundingModeRTE,
674682 Capability::RoundingModeRTZ});
675- if (ST.isAtLeastSPIRVVer (VersionTuple (1 , 6 )))
676- addAvailableCaps ({Capability::DotProductKHR,
677- Capability::DotProductInputAllKHR,
678- Capability::DotProductInput4x8BitKHR,
679- Capability::DotProductInput4x8BitPackedKHR});
680683 // TODO: verify if this needs some checks.
681684 addAvailableCaps ({Capability::Float16, Capability::Float64});
682685
@@ -692,10 +695,9 @@ void RequirementHandler::initAvailableCapabilitiesForOpenCL(
692695
693696void RequirementHandler::initAvailableCapabilitiesForVulkan (
694697 const SPIRVSubtarget &ST) {
695- addAvailableCaps ({Capability::Shader, Capability::Linkage});
696698
697699 // Core in Vulkan 1.1 and earlier.
698- addAvailableCaps ({Capability::Int16, Capability:: Int64, Capability::Float16,
700+ addAvailableCaps ({Capability::Int64, Capability::Float16,
699701 Capability::Float64, Capability::GroupNonUniform,
700702 Capability::Image1D, Capability::SampledBuffer,
701703 Capability::ImageBuffer,
0 commit comments