1 // Copyright (c) 2017 Google Inc.
3 // Licensed under the Apache License, Version 2.0 (the "License");
4 // you may not use this file except in compliance with the License.
5 // You may obtain a copy of the License at
7 // http://www.apache.org/licenses/LICENSE-2.0
9 // Unless required by applicable law or agreed to in writing, software
10 // distributed under the License is distributed on an "AS IS" BASIS,
11 // WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
12 // See the License for the specific language governing permissions and
13 // limitations under the License.
15 #include "source/extensions.h"
21 #include "source/binary.h"
22 #include "source/enum_string_mapping.h"
26 std::string
GetExtensionString(const spv_parsed_instruction_t
* inst
) {
27 if (inst
->opcode
!= static_cast<uint16_t>(spv::Op::OpExtension
)) {
28 return "ERROR_not_op_extension";
31 assert(inst
->num_operands
== 1);
33 const auto& operand
= inst
->operands
[0];
34 assert(operand
.type
== SPV_OPERAND_TYPE_LITERAL_STRING
);
35 assert(inst
->num_words
> operand
.offset
);
36 (void)operand
; /* No unused variables in release builds. */
38 return spvDecodeLiteralStringOperand(*inst
, 0);
41 std::string
ExtensionSetToString(const ExtensionSet
& extensions
) {
43 for (auto extension
: extensions
) {
44 ss
<< ExtensionToString(extension
) << " ";
49 } // namespace spvtools