| 204 | namespace { |
| 205 | template <typename KEY_TYPE> |
| 206 | spv_result_t LookupOpcodeForEnvInternal(spv_target_env env, KEY_TYPE key, |
| 207 | const InstructionDesc** desc) { |
| 208 | const InstructionDesc* desc_proxy; |
| 209 | auto status = LookupOpcode(key, &desc_proxy); |
| 210 | if (status != SPV_SUCCESS) { |
| 211 | return status; |
| 212 | } |
| 213 | const auto& entry = *desc_proxy; |
| 214 | const auto version = spvVersionForTargetEnv(env); |
| 215 | if ((version >= entry.minVersion && version <= entry.lastVersion) || |
| 216 | entry.extensions_range.count() > 0 || |
| 217 | entry.capabilities_range.count() > 0) { |
| 218 | *desc = desc_proxy; |
| 219 | return SPV_SUCCESS; |
| 220 | } |
| 221 | return SPV_ERROR_INVALID_LOOKUP; |
| 222 | } |
| 223 | } // namespace |
| 224 | |
| 225 | spv_result_t LookupOpcodeForEnv(spv_target_env env, const char* name, |
no test coverage detected