aot_emit_compare_test.cc 3.8 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112
  1. /*
  2. * Copyright (C) 2019 Intel Corporation. All rights reserved.
  3. * SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception
  4. */
  5. #include "gtest/gtest.h"
  6. #include "aot_emit_compare.h"
  7. class compilation_aot_emit_compare_test : public testing::Test
  8. {
  9. protected:
  10. virtual void SetUp() {}
  11. virtual void TearDown() {}
  12. public:
  13. };
  14. TEST_F(compilation_aot_emit_compare_test, aot_compile_op_i32_compare)
  15. {
  16. AOTCompContext comp_ctx = { 0 };
  17. AOTFuncContext func_ctx = { 0 };
  18. IntCond cond = INT_EQZ;
  19. IntCond cond1 = INT_EQZ;
  20. /* false cond = 0 */
  21. EXPECT_FALSE(aot_compile_op_i32_compare(&comp_ctx, &func_ctx, cond));
  22. /* false cond = -1 */
  23. EXPECT_FALSE(
  24. aot_compile_op_i32_compare(&comp_ctx, &func_ctx, (IntCond)(-1)));
  25. /* false cond = [1:10] || [11:100] */
  26. for (int i = 0; i < 0xFFFF; i++) {
  27. /* Generate random number range:[m,n] int a=m+rand()%(n-m+1); */
  28. cond = (IntCond)(1 + (rand() % (INT_GE_U - 1 + 1)));
  29. cond1 = (IntCond)((INT_GE_U + 1) + (rand() % (100 - 1 + 1)));
  30. EXPECT_FALSE(aot_compile_op_i32_compare(&comp_ctx, &func_ctx, cond));
  31. EXPECT_FALSE(aot_compile_op_i32_compare(&comp_ctx, &func_ctx, cond1));
  32. }
  33. }
  34. TEST_F(compilation_aot_emit_compare_test, aot_compile_op_i64_compare)
  35. {
  36. AOTCompContext comp_ctx = { 0 };
  37. AOTFuncContext func_ctx = { 0 };
  38. IntCond cond = INT_EQZ;
  39. IntCond cond1 = INT_EQZ;
  40. /* false cond = 0 */
  41. // EXPECT_FALSE(aot_compile_op_i64_compare(&comp_ctx, &func_ctx, cond));
  42. /* false cond = -1 */
  43. EXPECT_FALSE(
  44. aot_compile_op_i64_compare(&comp_ctx, &func_ctx, (IntCond)(-1)));
  45. /* false cond = [1:10] || [11:100] */
  46. for (int i = 0; i < 0xFFFF; i++) {
  47. /* Generate random number range:[m,n] int a=m+rand()%(n-m+1); */
  48. cond = (IntCond)(1 + (rand() % (INT_GE_U - 1 + 1)));
  49. cond1 = (IntCond)((INT_GE_U + 1) + (rand() % (100 - 1 + 1)));
  50. EXPECT_FALSE(aot_compile_op_i64_compare(&comp_ctx, &func_ctx, cond));
  51. EXPECT_FALSE(aot_compile_op_i64_compare(&comp_ctx, &func_ctx, cond1));
  52. }
  53. }
  54. TEST_F(compilation_aot_emit_compare_test, aot_compile_op_f32_compare)
  55. {
  56. AOTCompContext comp_ctx = { 0 };
  57. AOTFuncContext func_ctx = { 0 };
  58. FloatCond cond = FLOAT_EQ;
  59. FloatCond cond1 = FLOAT_EQ;
  60. /* false cond = 0 */
  61. EXPECT_FALSE(aot_compile_op_f32_compare(&comp_ctx, &func_ctx, cond));
  62. /* false cond = -1 */
  63. EXPECT_FALSE(
  64. aot_compile_op_f32_compare(&comp_ctx, &func_ctx, (FloatCond)(-1)));
  65. /* false cond = [1:10] || [7:100] */
  66. for (int i = 0; i < 0xFFFF; i++) {
  67. /* Generate random number range:[m,n] int a=m+rand()%(n-m+1); */
  68. cond = (FloatCond)(1 + (rand() % (FLOAT_UNO - 1 + 1)));
  69. cond1 = (FloatCond)((FLOAT_UNO + 1) + (rand() % (100 - 1 + 1)));
  70. EXPECT_FALSE(aot_compile_op_f32_compare(&comp_ctx, &func_ctx, cond));
  71. EXPECT_FALSE(aot_compile_op_f32_compare(&comp_ctx, &func_ctx, cond1));
  72. }
  73. }
  74. TEST_F(compilation_aot_emit_compare_test, aot_compile_op_f64_compare)
  75. {
  76. AOTCompContext comp_ctx = { 0 };
  77. AOTFuncContext func_ctx = { 0 };
  78. FloatCond cond = FLOAT_EQ;
  79. FloatCond cond1 = FLOAT_EQ;
  80. /* false cond = 0 */
  81. EXPECT_FALSE(aot_compile_op_f64_compare(&comp_ctx, &func_ctx, cond));
  82. /* false cond = -1 */
  83. EXPECT_FALSE(
  84. aot_compile_op_f64_compare(&comp_ctx, &func_ctx, (FloatCond)(-1)));
  85. /* false cond = [1:10] || [7:100] */
  86. for (int i = 0; i < 0xFFFF; i++) {
  87. /* Generate random number range:[m,n] int a=m+rand()%(n-m+1); */
  88. cond = (FloatCond)(1 + (rand() % (FLOAT_UNO - 1 + 1)));
  89. cond1 = (FloatCond)((FLOAT_UNO + 1) + (rand() % (100 - 1 + 1)));
  90. EXPECT_FALSE(aot_compile_op_f64_compare(&comp_ctx, &func_ctx, cond));
  91. EXPECT_FALSE(aot_compile_op_f64_compare(&comp_ctx, &func_ctx, cond1));
  92. }
  93. }