aboutsummaryrefslogtreecommitdiff
path: root/source/ext_inst.cpp
diff options
context:
space:
mode:
authorDejan Mircevski <deki@google.com>2016-04-07 14:41:34 -0400
committerDavid Neto <dneto@google.com>2016-04-18 10:45:57 -0400
commitcb3c49ef82b2878f15d55573c2620b71bcf87d0f (patch)
tree13bebbe4028ea7615a8ccf16727358b96a04fc83 /source/ext_inst.cpp
parente26fdc6bd18cdd1d5150ad4914b1fda818dcfbaa (diff)
downloadspirv-tools-cb3c49ef82b2878f15d55573c2620b71bcf87d0f.tar.gz
Add SPIR-V 1.1 grammar.
Switch to SPIR-V 1.1 as default. Introduce SPV_ENV_UNIVERSAL_1_1. Add "1_0" to the internal variable names. Add spv_target_env to spv*GetTable().
Diffstat (limited to 'source/ext_inst.cpp')
-rw-r--r--source/ext_inst.cpp42
1 files changed, 26 insertions, 16 deletions
diff --git a/source/ext_inst.cpp b/source/ext_inst.cpp
index 32e76fe3..4020b9e5 100644
--- a/source/ext_inst.cpp
+++ b/source/ext_inst.cpp
@@ -26,41 +26,51 @@
#include "ext_inst.h"
-#include <string.h>
+#include <cassert>
+#include <cstring>
#include "spirv/GLSL.std.450.h"
#include "spirv/OpenCL.std.h"
#include "spirv_definition.h"
-static const spv_ext_inst_desc_t glslStd450Entries[] = {
+static const spv_ext_inst_desc_t glslStd450Entries_1_0[] = {
#include "glsl.std.450.insts-1-0.inc"
};
-static const spv_ext_inst_desc_t openclEntries[] = {
+static const spv_ext_inst_desc_t openclEntries_1_0[] = {
#include "opencl.std.insts-1-0.inc"
};
-spv_result_t spvExtInstTableGet(spv_ext_inst_table* pExtInstTable) {
+spv_result_t spvExtInstTableGet(spv_ext_inst_table* pExtInstTable,
+ spv_target_env env) {
if (!pExtInstTable) return SPV_ERROR_INVALID_POINTER;
- static const spv_ext_inst_group_t groups[] = {
+ static const spv_ext_inst_group_t groups_1_0[] = {
{SPV_EXT_INST_TYPE_GLSL_STD_450,
- static_cast<uint32_t>(sizeof(glslStd450Entries) /
+ static_cast<uint32_t>(sizeof(glslStd450Entries_1_0) /
sizeof(spv_ext_inst_desc_t)),
- glslStd450Entries},
+ glslStd450Entries_1_0},
{SPV_EXT_INST_TYPE_OPENCL_STD,
- static_cast<uint32_t>(sizeof(openclEntries) /
+ static_cast<uint32_t>(sizeof(openclEntries_1_0) /
sizeof(spv_ext_inst_desc_t)),
- openclEntries},
+ openclEntries_1_0},
};
- static const spv_ext_inst_table_t table = {
- static_cast<uint32_t>(sizeof(groups) / sizeof(spv_ext_inst_group_t)),
- groups};
-
- *pExtInstTable = &table;
-
- return SPV_SUCCESS;
+ static const spv_ext_inst_table_t table_1_0 = {
+ static_cast<uint32_t>(sizeof(groups_1_0) / sizeof(spv_ext_inst_group_t)),
+ groups_1_0};
+
+ switch (env) {
+ // The extended instruction sets are all version 1.0 so far.
+ case SPV_ENV_UNIVERSAL_1_0:
+ case SPV_ENV_VULKAN_1_0:
+ case SPV_ENV_UNIVERSAL_1_1:
+ *pExtInstTable = &table_1_0;
+ return SPV_SUCCESS;
+ default:
+ assert(0 && "Unknown spv_target_env in spvExtInstTableGet()");
+ return SPV_ERROR_INVALID_TABLE;
+ }
}
spv_ext_inst_type_t spvExtInstImportTypeGet(const char* name) {