You can not select more than 25 topics Topics must start with a chinese character,a letter or number, can include dashes ('-') and can be up to 35 characters long.

arithmetic_fp16.h 7.5 kB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120
  1. /**
  2. * Copyright 2020 Huawei Technologies Co., Ltd
  3. *
  4. * Licensed under the Apache License, Version 2.0 (the "License");
  5. * you may not use this file except in compliance with the License.
  6. * You may obtain a copy of the License at
  7. *
  8. * http://www.apache.org/licenses/LICENSE-2.0
  9. *
  10. * Unless required by applicable law or agreed to in writing, software
  11. * distributed under the License is distributed on an "AS IS" BASIS,
  12. * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
  13. * See the License for the specific language governing permissions and
  14. * limitations under the License.
  15. */
  16. #ifndef MINDSPORE_LITE_NNACL_FP16_ARITHMETIC_FP16_H_
  17. #define MINDSPORE_LITE_NNACL_FP16_ARITHMETIC_FP16_H_
  18. #ifdef ENABLE_NEON
  19. #include <arm_neon.h>
  20. #endif
  21. #include "nnacl/op_base.h"
  22. #include "nnacl/arithmetic_common.h"
  23. #include "nnacl/errorcode.h"
  24. #ifdef __cplusplus
  25. extern "C" {
  26. #endif
  27. int ElementOptMulFp16(float16_t *input0, float16_t *input1, float16_t *output, int element_size,
  28. ArithmeticParameter *param);
  29. int ElementOptMulReluFp16(float16_t *input0, float16_t *input1, float16_t *output, int element_size,
  30. ArithmeticParameter *param);
  31. int ElementOptMulRelu6Fp16(float16_t *input0, float16_t *input1, float16_t *output, int element_size,
  32. ArithmeticParameter *param);
  33. int ElementOptAddFp16(float16_t *input0, float16_t *input1, float16_t *output, int element_size,
  34. ArithmeticParameter *param);
  35. int ElementOptAddReluFp16(float16_t *input0, float16_t *input1, float16_t *output, int element_size,
  36. ArithmeticParameter *param);
  37. int ElementOptAddRelu6Fp16(float16_t *input0, float16_t *input1, float16_t *output, int element_size,
  38. ArithmeticParameter *param);
  39. int ElementOptSubFp16(float16_t *input0, float16_t *input1, float16_t *output, int element_size,
  40. ArithmeticParameter *param);
  41. int ElementOptSubReluFp16(float16_t *input0, float16_t *input1, float16_t *output, int element_size,
  42. ArithmeticParameter *param);
  43. int ElementOptSubRelu6Fp16(float16_t *input0, float16_t *input1, float16_t *output, int element_size,
  44. ArithmeticParameter *param);
  45. int ElementOptDivFp16(float16_t *input0, float16_t *input1, float16_t *output, int element_size,
  46. ArithmeticParameter *param);
  47. int ElementOptDivReluFp16(float16_t *input0, float16_t *input1, float16_t *output, int element_size,
  48. ArithmeticParameter *param);
  49. int ElementOptDivRelu6Fp16(float16_t *input0, float16_t *input1, float16_t *output, int element_size,
  50. ArithmeticParameter *param);
  51. int ElementOptFloorModFp16(float16_t *input0, float16_t *input1, float16_t *output, int element_size,
  52. ArithmeticParameter *param);
  53. int ElementOptFloorDivFp16(float16_t *input0, float16_t *input1, float16_t *output, int element_size,
  54. ArithmeticParameter *param);
  55. int ElementOptLogicalAndFp16(float16_t *input0, float16_t *input1, float16_t *output, int element_size,
  56. ArithmeticParameter *param);
  57. int ElementOptLogicalOrFp16(float16_t *input0, float16_t *input1, float16_t *output, int element_size,
  58. ArithmeticParameter *param);
  59. int ElementOptSquaredDifferenceFp16(float16_t *input0, float16_t *input1, float16_t *output, int element_size,
  60. ArithmeticParameter *param);
  61. int ElementOptMaximumFp16(float16_t *input0, float16_t *input1, float16_t *output, int element_size,
  62. ArithmeticParameter *param);
  63. int ElementOptMinimumFp16(float16_t *input0, float16_t *input1, float16_t *output, int element_size,
  64. ArithmeticParameter *param);
  65. int ElementOptNotEqualFp16(float16_t *input0, float16_t *input1, float16_t *output, int element_size,
  66. ArithmeticParameter *param);
  67. int ElementOptEqualFp16(float16_t *input0, float16_t *input1, float16_t *output, int element_size,
  68. ArithmeticParameter *param);
  69. int ElementOptLessFp16(float16_t *input0, float16_t *input1, float16_t *output, int element_size,
  70. ArithmeticParameter *param);
  71. int ElementOptLessEqualFp16(float16_t *input0, float16_t *input1, float16_t *output, int element_size,
  72. ArithmeticParameter *param);
  73. int ElementOptGreaterFp16(float16_t *input0, float16_t *input1, float16_t *output, int element_size,
  74. ArithmeticParameter *param);
  75. int ElementOptGreaterEqualFp16(float16_t *input0, float16_t *input1, float16_t *output, int element_size,
  76. ArithmeticParameter *param);
  77. int ElementMulFp16(float16_t *input0, float16_t *input1, float16_t *output, int element_size);
  78. int ElementMulReluFp16(float16_t *input0, float16_t *input1, float16_t *output, int element_size);
  79. int ElementMulRelu6Fp16(float16_t *input0, float16_t *input1, float16_t *output, int element_size);
  80. int ElementAddFp16(float16_t *input0, float16_t *input1, float16_t *output, int element_size);
  81. int ElementAddReluFp16(float16_t *input0, float16_t *input1, float16_t *output, int element_size);
  82. int ElementAddRelu6Fp16(float16_t *input0, float16_t *input1, float16_t *output, int element_size);
  83. int ElementSubFp16(float16_t *input0, float16_t *input1, float16_t *output, int element_size);
  84. int ElementSubReluFp16(float16_t *input0, float16_t *input1, float16_t *output, int element_size);
  85. int ElementSubRelu6Fp16(float16_t *input0, float16_t *input1, float16_t *output, int element_size);
  86. int ElementDivFp16(float16_t *input0, float16_t *input1, float16_t *output, int element_size);
  87. int ElementDivReluFp16(float16_t *input0, float16_t *input1, float16_t *output, int element_size);
  88. int ElementDivRelu6Fp16(float16_t *input0, float16_t *input1, float16_t *output, int element_size);
  89. int ElementFloorModFp16(float16_t *input0, float16_t *input1, float16_t *output, int element_size);
  90. int ElementFloorDivFp16(float16_t *input0, float16_t *input1, float16_t *output, int element_size);
  91. int ElementLogicalAndFp16(float16_t *input0, float16_t *input1, float16_t *output, int element_size);
  92. int ElementLogicalOrFp16(float16_t *input0, float16_t *input1, float16_t *output, int element_size);
  93. int ElementSquaredDifferenceFp16(float16_t *input0, float16_t *input1, float16_t *output, int element_size);
  94. int ElementMaximumFp16(float16_t *input0, float16_t *input1, float16_t *output, int element_size);
  95. int ElementMinimumFp16(float16_t *input0, float16_t *input1, float16_t *output, int element_size);
  96. int ElementNotEqualFp16(float16_t *input0, float16_t *input1, float16_t *output, int element_size);
  97. int ElementEqualFp16(float16_t *input0, float16_t *input1, float16_t *output, int element_size);
  98. int ElementLessFp16(float16_t *input0, float16_t *input1, float16_t *output, int element_size);
  99. int ElementLessEqual(float16_t *input0, float16_t *input1, float16_t *output, int element_size);
  100. int ElementGreaterFp16(float16_t *input0, float16_t *input1, float16_t *output, int element_size);
  101. int ElementGreaterEqualFp16(float16_t *input0, float16_t *input1, float16_t *output, int element_size);
  102. void TileDimensionsFp16(float16_t *data0, float16_t *data1, float16_t *tile_data0, float16_t *tile_data1,
  103. ArithmeticParameter *param);
  104. #ifdef __cplusplus
  105. }
  106. #endif
  107. #endif // MINDSPORE_LITE_NNACL_FP16_ARITHMETIC_FP16_H_