Updated spirv-tools.

This commit is contained in:
Бранимир Караџић
2019-09-22 05:24:08 -07:00
parent 502a8d1502
commit d5b4179ce9
86 changed files with 10755 additions and 176 deletions

View File

@@ -18,6 +18,7 @@
#include "source/diagnostic.h"
#include "source/opcode.h"
#include "source/spirv_constant.h"
#include "source/val/instruction.h"
#include "source/val/validation_state.h"
@@ -467,15 +468,40 @@ spv_result_t ConversionPass(ValidationState_t& _, const Instruction* inst) {
<< "Expected input to be a pointer or int or float vector "
<< "or scalar: " << spvOpcodeString(opcode);
if (result_is_pointer && !input_is_pointer && !input_is_int_scalar)
return _.diag(SPV_ERROR_INVALID_DATA, inst)
<< "Expected input to be a pointer or int scalar if Result Type "
<< "is pointer: " << spvOpcodeString(opcode);
if (_.version() >= SPV_SPIRV_VERSION_WORD(1, 5) ||
_.HasExtension(kSPV_KHR_physical_storage_buffer)) {
const bool result_is_int_vector = _.IsIntVectorType(result_type);
const bool result_has_int32 =
_.ContainsSizedIntOrFloatType(result_type, SpvOpTypeInt, 32);
const bool input_is_int_vector = _.IsIntVectorType(input_type);
const bool input_has_int32 =
_.ContainsSizedIntOrFloatType(input_type, SpvOpTypeInt, 32);
if (result_is_pointer && !input_is_pointer && !input_is_int_scalar &&
!(input_is_int_vector && input_has_int32))
return _.diag(SPV_ERROR_INVALID_DATA, inst)
<< "Expected input to be a pointer, int scalar or 32-bit int "
"vector if Result Type is pointer: "
<< spvOpcodeString(opcode);
if (input_is_pointer && !result_is_pointer && !result_is_int_scalar)
return _.diag(SPV_ERROR_INVALID_DATA, inst)
<< "Pointer can only be converted to another pointer or int "
<< "scalar: " << spvOpcodeString(opcode);
if (input_is_pointer && !result_is_pointer && !result_is_int_scalar &&
!(result_is_int_vector && result_has_int32))
return _.diag(SPV_ERROR_INVALID_DATA, inst)
<< "Pointer can only be converted to another pointer, int "
"scalar or 32-bit int vector: "
<< spvOpcodeString(opcode);
} else {
if (result_is_pointer && !input_is_pointer && !input_is_int_scalar)
return _.diag(SPV_ERROR_INVALID_DATA, inst)
<< "Expected input to be a pointer or int scalar if Result "
"Type is pointer: "
<< spvOpcodeString(opcode);
if (input_is_pointer && !result_is_pointer && !result_is_int_scalar)
return _.diag(SPV_ERROR_INVALID_DATA, inst)
<< "Pointer can only be converted to another pointer or int "
"scalar: "
<< spvOpcodeString(opcode);
}
if (!result_is_pointer && !input_is_pointer) {
const uint32_t result_size =