// Copyright (c) 2017 Google Inc.
//
// Licensed under the Apache License, Version 2.0 (the "License");
// you may not use this file except in compliance with the License.
// You may obtain a copy of the License at
//
//     http://www.apache.org/licenses/LICENSE-2.0
//
// Unless required by applicable law or agreed to in writing, software
// distributed under the License is distributed on an "AS IS" BASIS,
// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
// See the License for the specific language governing permissions and
// limitations under the License.

#ifndef LIBSPIRV_ID_DESCRIPTOR_H_
#define LIBSPIRV_ID_DESCRIPTOR_H_

#include <unordered_map>
#include <vector>

#include "spirv-tools/libspirv.hpp"

namespace libspirv {

// Computes and stores id descriptors.
//
// Descriptors are computed as hash of all words in the instruction where ids
// were substituted with previously computed descriptors.
class IdDescriptorCollection {
 public:
  IdDescriptorCollection() {
    words_.reserve(16);
  }

  // Computes descriptor for the result id of the given instruction and
  // registers it in id_to_descriptor_. Returns the computed descriptor.
  // This function needs to be sequentially called for every instruction in the
  // module.
  uint32_t ProcessInstruction(const spv_parsed_instruction_t& inst);

  // Returns a previously computed descriptor id.
  uint32_t GetDescriptor(uint32_t id) const {
    const auto it = id_to_descriptor_.find(id);
    if (it == id_to_descriptor_.end())
      return 0;
    return it->second;
  }

 private:
  std::unordered_map<uint32_t, uint32_t> id_to_descriptor_;

  // Scratch buffer used for hashing. Class member to optimize on allocation.
  std::vector<uint32_t> words_;
};

}  // namespace libspirv

#endif  // LIBSPIRV_ID_DESCRIPTOR_H_

