10b15439f8f0f2d4755587f4096c3ea04cb199d23Andrew Selle/* Copyright 2017 The TensorFlow Authors. All Rights Reserved. 20b15439f8f0f2d4755587f4096c3ea04cb199d23Andrew Selle 30b15439f8f0f2d4755587f4096c3ea04cb199d23Andrew SelleLicensed under the Apache License, Version 2.0 (the "License"); 40b15439f8f0f2d4755587f4096c3ea04cb199d23Andrew Selleyou may not use this file except in compliance with the License. 50b15439f8f0f2d4755587f4096c3ea04cb199d23Andrew SelleYou may obtain a copy of the License at 60b15439f8f0f2d4755587f4096c3ea04cb199d23Andrew Selle 70b15439f8f0f2d4755587f4096c3ea04cb199d23Andrew Selle http://www.apache.org/licenses/LICENSE-2.0 80b15439f8f0f2d4755587f4096c3ea04cb199d23Andrew Selle 90b15439f8f0f2d4755587f4096c3ea04cb199d23Andrew SelleUnless required by applicable law or agreed to in writing, software 100b15439f8f0f2d4755587f4096c3ea04cb199d23Andrew Selledistributed under the License is distributed on an "AS IS" BASIS, 110b15439f8f0f2d4755587f4096c3ea04cb199d23Andrew SelleWITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 120b15439f8f0f2d4755587f4096c3ea04cb199d23Andrew SelleSee the License for the specific language governing permissions and 130b15439f8f0f2d4755587f4096c3ea04cb199d23Andrew Sellelimitations under the License. 140b15439f8f0f2d4755587f4096c3ea04cb199d23Andrew Selle==============================================================================*/ 15f8347ceebbad0e06552633fcdf8e63f52246ba62Sanjoy Das#ifndef TENSORFLOW_CONTRIB_LITE_KERNELS_INTERNAL_COMPATIBILITY_H_ 16f8347ceebbad0e06552633fcdf8e63f52246ba62Sanjoy Das#define TENSORFLOW_CONTRIB_LITE_KERNELS_INTERNAL_COMPATIBILITY_H_ 170b15439f8f0f2d4755587f4096c3ea04cb199d23Andrew Selle 180b15439f8f0f2d4755587f4096c3ea04cb199d23Andrew Selle#include <cassert> 190b15439f8f0f2d4755587f4096c3ea04cb199d23Andrew Selle#include <cstdint> 200b15439f8f0f2d4755587f4096c3ea04cb199d23Andrew Selle#include <cstdlib> 210b15439f8f0f2d4755587f4096c3ea04cb199d23Andrew Selle 220b15439f8f0f2d4755587f4096c3ea04cb199d23Andrew Selle#ifndef TFLITE_DCHECK 230b15439f8f0f2d4755587f4096c3ea04cb199d23Andrew Selle#define TFLITE_DCHECK(condition) (condition) ? (void)0 : assert(false) 240b15439f8f0f2d4755587f4096c3ea04cb199d23Andrew Selle#endif 250b15439f8f0f2d4755587f4096c3ea04cb199d23Andrew Selle 260b15439f8f0f2d4755587f4096c3ea04cb199d23Andrew Selle#ifndef TFLITE_DCHECK_EQ 270b15439f8f0f2d4755587f4096c3ea04cb199d23Andrew Selle#define TFLITE_DCHECK_EQ(x, y) ((x) == (y)) ? (void)0 : assert(false) 280b15439f8f0f2d4755587f4096c3ea04cb199d23Andrew Selle#endif 290b15439f8f0f2d4755587f4096c3ea04cb199d23Andrew Selle 3077b22b38f03e5d9b52909d444f08592ffbe0334dA. Unique TensorFlower#ifndef TFLITE_DCHECK_NE 3177b22b38f03e5d9b52909d444f08592ffbe0334dA. Unique TensorFlower#define TFLITE_DCHECK_NE(x, y) ((x) != (y)) ? (void)0 : assert(false) 3277b22b38f03e5d9b52909d444f08592ffbe0334dA. Unique TensorFlower#endif 3377b22b38f03e5d9b52909d444f08592ffbe0334dA. Unique TensorFlower 340b15439f8f0f2d4755587f4096c3ea04cb199d23Andrew Selle#ifndef TFLITE_DCHECK_GE 350b15439f8f0f2d4755587f4096c3ea04cb199d23Andrew Selle#define TFLITE_DCHECK_GE(x, y) ((x) >= (y)) ? (void)0 : assert(false) 360b15439f8f0f2d4755587f4096c3ea04cb199d23Andrew Selle#endif 370b15439f8f0f2d4755587f4096c3ea04cb199d23Andrew Selle 380b15439f8f0f2d4755587f4096c3ea04cb199d23Andrew Selle#ifndef TFLITE_DCHECK_GT 390b15439f8f0f2d4755587f4096c3ea04cb199d23Andrew Selle#define TFLITE_DCHECK_GT(x, y) ((x) > (y)) ? (void)0 : assert(false) 400b15439f8f0f2d4755587f4096c3ea04cb199d23Andrew Selle#endif 410b15439f8f0f2d4755587f4096c3ea04cb199d23Andrew Selle 420b15439f8f0f2d4755587f4096c3ea04cb199d23Andrew Selle#ifndef TFLITE_DCHECK_LE 430b15439f8f0f2d4755587f4096c3ea04cb199d23Andrew Selle#define TFLITE_DCHECK_LE(x, y) ((x) <= (y)) ? (void)0 : assert(false) 440b15439f8f0f2d4755587f4096c3ea04cb199d23Andrew Selle#endif 450b15439f8f0f2d4755587f4096c3ea04cb199d23Andrew Selle 460b15439f8f0f2d4755587f4096c3ea04cb199d23Andrew Selle#ifndef TFLITE_DCHECK_LT 470b15439f8f0f2d4755587f4096c3ea04cb199d23Andrew Selle#define TFLITE_DCHECK_LT(x, y) ((x) < (y)) ? (void)0 : assert(false) 480b15439f8f0f2d4755587f4096c3ea04cb199d23Andrew Selle#endif 490b15439f8f0f2d4755587f4096c3ea04cb199d23Andrew Selle 500b15439f8f0f2d4755587f4096c3ea04cb199d23Andrew Selle// TODO(ahentz): Clean up: We should stick to the DCHECK versions. 510b15439f8f0f2d4755587f4096c3ea04cb199d23Andrew Selle#ifndef TFLITE_CHECK 520b15439f8f0f2d4755587f4096c3ea04cb199d23Andrew Selle#define TFLITE_CHECK(condition) (condition) ? (void)0 : abort() 530b15439f8f0f2d4755587f4096c3ea04cb199d23Andrew Selle#endif 540b15439f8f0f2d4755587f4096c3ea04cb199d23Andrew Selle 550b15439f8f0f2d4755587f4096c3ea04cb199d23Andrew Selle#ifndef TFLITE_CHECK_EQ 560b15439f8f0f2d4755587f4096c3ea04cb199d23Andrew Selle#define TFLITE_CHECK_EQ(x, y) ((x) == (y)) ? (void)0 : abort() 570b15439f8f0f2d4755587f4096c3ea04cb199d23Andrew Selle#endif 580b15439f8f0f2d4755587f4096c3ea04cb199d23Andrew Selle 5977b22b38f03e5d9b52909d444f08592ffbe0334dA. Unique TensorFlower#ifndef TFLITE_CHECK_NE 6077b22b38f03e5d9b52909d444f08592ffbe0334dA. Unique TensorFlower#define TFLITE_CHECK_NE(x, y) ((x) != (y)) ? (void)0 : abort() 6177b22b38f03e5d9b52909d444f08592ffbe0334dA. Unique TensorFlower#endif 6277b22b38f03e5d9b52909d444f08592ffbe0334dA. Unique TensorFlower 630b15439f8f0f2d4755587f4096c3ea04cb199d23Andrew Selle#ifndef TFLITE_CHECK_GE 640b15439f8f0f2d4755587f4096c3ea04cb199d23Andrew Selle#define TFLITE_CHECK_GE(x, y) ((x) >= (y)) ? (void)0 : abort() 650b15439f8f0f2d4755587f4096c3ea04cb199d23Andrew Selle#endif 660b15439f8f0f2d4755587f4096c3ea04cb199d23Andrew Selle 670b15439f8f0f2d4755587f4096c3ea04cb199d23Andrew Selle#ifndef TFLITE_CHECK_GT 680b15439f8f0f2d4755587f4096c3ea04cb199d23Andrew Selle#define TFLITE_CHECK_GT(x, y) ((x) > (y)) ? (void)0 : abort() 690b15439f8f0f2d4755587f4096c3ea04cb199d23Andrew Selle#endif 700b15439f8f0f2d4755587f4096c3ea04cb199d23Andrew Selle 710b15439f8f0f2d4755587f4096c3ea04cb199d23Andrew Selle#ifndef TFLITE_CHECK_LE 720b15439f8f0f2d4755587f4096c3ea04cb199d23Andrew Selle#define TFLITE_CHECK_LE(x, y) ((x) <= (y)) ? (void)0 : abort() 730b15439f8f0f2d4755587f4096c3ea04cb199d23Andrew Selle#endif 740b15439f8f0f2d4755587f4096c3ea04cb199d23Andrew Selle 750b15439f8f0f2d4755587f4096c3ea04cb199d23Andrew Selle#ifndef TFLITE_CHECK_LT 760b15439f8f0f2d4755587f4096c3ea04cb199d23Andrew Selle#define TFLITE_CHECK_LT(x, y) ((x) < (y)) ? (void)0 : abort() 770b15439f8f0f2d4755587f4096c3ea04cb199d23Andrew Selle#endif 780b15439f8f0f2d4755587f4096c3ea04cb199d23Andrew Selle 790b15439f8f0f2d4755587f4096c3ea04cb199d23Andrew Selle// TODO(ahentz): Clean up. 800b15439f8f0f2d4755587f4096c3ea04cb199d23Andrew Selleusing uint8 = std::uint8_t; 810b15439f8f0f2d4755587f4096c3ea04cb199d23Andrew Selleusing int16 = std::int16_t; 820b15439f8f0f2d4755587f4096c3ea04cb199d23Andrew Selleusing uint16 = std::uint16_t; 830b15439f8f0f2d4755587f4096c3ea04cb199d23Andrew Selleusing int32 = std::int32_t; 840b15439f8f0f2d4755587f4096c3ea04cb199d23Andrew Selleusing uint32 = std::uint32_t; 850b15439f8f0f2d4755587f4096c3ea04cb199d23Andrew Selle 86f8347ceebbad0e06552633fcdf8e63f52246ba62Sanjoy Das#endif // TENSORFLOW_CONTRIB_LITE_KERNELS_INTERNAL_COMPATIBILITY_H_ 87