Skip to content

Commit d2851ae

Browse files
committed
move out common capabilities
1 parent 9c98c3c commit d2851ae

File tree

1 file changed

+13
-11
lines changed

1 file changed

+13
-11
lines changed

llvm/lib/Target/SPIRV/SPIRVModuleAnalysis.cpp

Lines changed: 13 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -626,6 +626,16 @@ void SPIRV::RequirementHandler::removeCapabilityIf(
626626
namespace llvm {
627627
namespace SPIRV {
628628
void 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

693696
void 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

Comments
 (0)