Skip to content

Commit f050bb7

Browse files
authored
spirv-val: allow Float16 in OpenCL environments (KhronosGroup#6110)
Until now, the Float16 capability was reported as not allowed under the various OpenCL environments. Signed-off-by: Sven van Haastregt <[email protected]>
1 parent cb61991 commit f050bb7

File tree

2 files changed

+21
-0
lines changed

2 files changed

+21
-0
lines changed

source/val/validate_capability.cpp

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -276,6 +276,7 @@ bool IsSupportOptionalOpenCL_1_2(uint32_t capability) {
276276
switch (spv::Capability(capability)) {
277277
case spv::Capability::ImageBasic:
278278
case spv::Capability::Float64:
279+
case spv::Capability::Float16:
279280
return true;
280281
default:
281282
break;

test/val/val_capability_test.cpp

Lines changed: 20 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -2628,6 +2628,26 @@ OpDecorate %intt BuiltIn PointSize
26282628
HasSubstr("Capability DrawParameters is not allowed by Vulkan 1.0"));
26292629
}
26302630

2631+
using OpenCLFloat16CapabilityBase = spvtest::ValidateBase<spv_target_env>;
2632+
2633+
TEST_P(OpenCLFloat16CapabilityBase, OpenCLFloat16Capability) {
2634+
const std::string spirv = R"(
2635+
OpCapability Kernel
2636+
OpCapability Addresses
2637+
OpCapability Linkage
2638+
OpCapability Float16
2639+
OpMemoryModel Physical64 OpenCL
2640+
%f16 = OpTypeFloat 16
2641+
)";
2642+
CompileSuccessfully(spirv, GetParam());
2643+
EXPECT_EQ(SPV_SUCCESS, ValidateInstructions(GetParam()));
2644+
}
2645+
2646+
INSTANTIATE_TEST_SUITE_P(OpenCLFloat16Capability, OpenCLFloat16CapabilityBase,
2647+
ValuesIn(std::vector<spv_target_env>{
2648+
SPV_ENV_OPENCL_1_2, SPV_ENV_OPENCL_2_0,
2649+
SPV_ENV_OPENCL_2_1, SPV_ENV_OPENCL_2_2}));
2650+
26312651
TEST_F(ValidateCapability, NonOpenCL12FullCapability) {
26322652
const std::string spirv = R"(
26332653
OpCapability Kernel

0 commit comments

Comments
 (0)