/* Copyright 2019 Google LLC. All Rights Reserved. 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 RUY_RUY_TRMUL_PARAMS_H_ #define RUY_RUY_TRMUL_PARAMS_H_ #include <cstdint> #include "ruy/mat.h" #include "ruy/mul_params.h" #include "ruy/path.h" #include "ruy/side_pair.h" #include "ruy/tune.h" namespace ruy { RunKernelFn; RunPackFn; // This should not be needed since we require c++14, where std::max is already // constexpr, but TensorFlow continuous integration uses Ubuntu 16 with a // libstdc++ that does not support that. constexpr int constexpr_max(int a, int b) { … } // Under-estimating these values would be caught by a static_assert in // StoreMulParams. Over-estimating these values cannot easily be caught, and // would cause unnecessary inflation of the TrMulParams data structure. constexpr int kMaxMulParamsAlignment = …; constexpr int kMaxMulParamsSizeFloatingPointCase = …; constexpr int kMaxMulParamsSizeRawIntegerCase = …; constexpr int kMaxMulParamsSizeQuantizedIntegerCase = …; constexpr int kMaxMulParamsSize = …; // OK to adjust as needed, but we want to avoid unnecessarily inflating that. // Temporarily bumped from 32 to 48 as part of temporarily not using unions // in MulParams. static_assert …; // Type-erased data needed for implementing TrMul. struct TrMulParams { … }; } // namespace ruy #endif // RUY_RUY_TRMUL_PARAMS_H_