diff --git a/src/compiler/clc/clc_helpers.cpp b/src/compiler/clc/clc_helpers.cpp index 80bc84831e4e0..7599141fb6635 100644 --- a/src/compiler/clc/clc_helpers.cpp +++ b/src/compiler/clc/clc_helpers.cpp @@ -1149,6 +1149,17 @@ clc_link_spirv_binaries(const struct clc_linker_args *args, return 0; } +bool +clc_validate_spirv(const struct clc_binary *spirv, + const struct clc_logger *logger) +{ + SPIRVMessageConsumer msgconsumer(logger); + spvtools::SpirvTools tools(spirv_target); + tools.SetMessageConsumer(msgconsumer); + const uint32_t *data = static_cast(spirv->data); + return tools.Validate(data, spirv->size / 4); +} + int clc_spirv_specialize(const struct clc_binary *in_spirv, const struct clc_parsed_spirv *parsed_data, diff --git a/src/compiler/clc/clc_helpers.h b/src/compiler/clc/clc_helpers.h index 0ad0990f0748c..0bfb90dec15cd 100644 --- a/src/compiler/clc/clc_helpers.h +++ b/src/compiler/clc/clc_helpers.h @@ -73,6 +73,10 @@ clc_link_spirv_binaries(const struct clc_linker_args *args, const struct clc_logger *logger, struct clc_binary *out_spirv); +bool +clc_validate_spirv(const struct clc_binary *spirv, + const struct clc_logger *logger); + int clc_spirv_specialize(const struct clc_binary *in_spirv, const struct clc_parsed_spirv *parsed_data,