• Home
  • Raw
  • Download

Lines Matching +full:0 +full:x

54 template <class T> T SilenceNaN(T x)  in SilenceNaN()  argument
56 assert(std::isnan(x)); in SilenceNaN()
58 return x - x; in SilenceNaN()
69 Environment env(0, &builder); in HWTEST_F_L0()
74 // test x + 0 => x in HWTEST_F_L0()
76 auto x = builder.Arguments(1); in HWTEST_F_L0() local
77 auto const_i64_0 = builder.Int64(0); in HWTEST_F_L0()
78 auto test_x_add_0 = builder.Int64Add(x, const_i64_0); in HWTEST_F_L0()
79 EXPECT_EQ(instcombie.VisitGate(test_x_add_0), x); in HWTEST_F_L0()
130 Environment env(0, &builder); in HWTEST_F_L0()
134 // test x + 0 => x in HWTEST_F_L0()
136 auto x = builder.Arguments(1); in HWTEST_F_L0() local
137 auto const_i32_0 = builder.Int32(0); in HWTEST_F_L0()
138 auto test_x_add_0 = builder.Int32Add(x, const_i32_0); in HWTEST_F_L0()
139 EXPECT_EQ(instcombie.VisitGate(test_x_add_0), x); in HWTEST_F_L0()
161 // test (0 - x) + y => y - x in HWTEST_F_L0()
163 auto x = builder.Arguments(2); in HWTEST_F_L0() local
165 auto zero = builder.Int32(0); in HWTEST_F_L0()
166 auto result = instcombie.VisitGate(builder.Int32Add(builder.Int32Sub(zero, x), y)); in HWTEST_F_L0()
169 EXPECT_EQ(m.Right().Gate(), x); in HWTEST_F_L0()
172 // test y + (0 - x) => y - x in HWTEST_F_L0()
174 auto x = builder.Arguments(4); in HWTEST_F_L0() local
176 auto zero = builder.Int32(0); in HWTEST_F_L0()
177 auto result = instcombie.VisitGate(builder.Int32Add(y, builder.Int32Sub(zero, x))); in HWTEST_F_L0()
180 EXPECT_EQ(m.Right().Gate(), x); in HWTEST_F_L0()
216 Environment env(0, &builder); in HWTEST_F_L0()
221 // test x - 0 => x in HWTEST_F_L0()
223 auto x = builder.Arguments(1); in HWTEST_F_L0() local
224 auto const_i64_0 = builder.Int64(0); in HWTEST_F_L0()
225 auto test_x_add_0 = builder.Int64Sub(x, const_i64_0); in HWTEST_F_L0()
226 EXPECT_EQ(instcombie.VisitGate(test_x_add_0), x); in HWTEST_F_L0()
248 // test x -x => 0 in HWTEST_F_L0()
250 auto x = builder.Arguments(2); in HWTEST_F_L0() local
251 auto result = instcombie.VisitGate(builder.Int64Sub(x, x)); in HWTEST_F_L0()
252 EXPECT_EQ(acc.IsConstantValue(result, 0), true); in HWTEST_F_L0()
255 // test x - k = x + (-k) in HWTEST_F_L0()
257 auto x = builder.Arguments(3); in HWTEST_F_L0() local
259 auto result = instcombie.VisitGate(builder.Int64Sub(x, const_1)); in HWTEST_F_L0()
261 EXPECT_EQ(m.Left().Gate(), x); in HWTEST_F_L0()
265 // Test for x - k = x + (-k) when k is the minimum int64_t value in HWTEST_F_L0()
267 auto x = builder.Arguments(3); in HWTEST_F_L0() local
269 auto result = instcombie.VisitGate(builder.Int64Sub(x, const_min)); in HWTEST_F_L0()
274 EXPECT_EQ(m.Left().Gate(), x); in HWTEST_F_L0()
288 Environment env(0, &builder); in HWTEST_F_L0()
293 // test x - 0 => x in HWTEST_F_L0()
295 auto x = builder.Arguments(1); in HWTEST_F_L0() local
296 auto const_i32_0 = builder.Int32(0); in HWTEST_F_L0()
297 auto test_x_add_0 = builder.Int32Sub(x, const_i32_0); in HWTEST_F_L0()
298 EXPECT_EQ(instcombie.VisitGate(test_x_add_0), x); in HWTEST_F_L0()
319 // test x -x => 0 in HWTEST_F_L0()
321 auto x = builder.Arguments(2); in HWTEST_F_L0() local
322 auto result = instcombie.VisitGate(builder.Int32Sub(x, x)); in HWTEST_F_L0()
323 EXPECT_EQ(acc.IsConstantValue(result, 0), true); in HWTEST_F_L0()
326 // test x - k = x + (-k) in HWTEST_F_L0()
328 auto x = builder.Arguments(3); in HWTEST_F_L0() local
330 auto result = instcombie.VisitGate(builder.Int32Sub(x, const_1)); in HWTEST_F_L0()
332 EXPECT_EQ(m.Left().Gate(), x); in HWTEST_F_L0()
337 // Test for x - k = x + (-k) when k is the minimum int32_t value in HWTEST_F_L0()
339 auto x = builder.Arguments(3); in HWTEST_F_L0() local
341 auto result = instcombie.VisitGate(builder.Int32Sub(x, const_min)); in HWTEST_F_L0()
346 EXPECT_EQ(m.Left().Gate(), x); in HWTEST_F_L0()
361 Environment env(0, &b); in HWTEST_F_L0()
366 // test x * 0 => 0 in HWTEST_F_L0()
368 auto x = b.Arguments(1); in HWTEST_F_L0() local
369 auto const_0 = b.Int64(0); in HWTEST_F_L0()
370 auto result = b.Int64Mul(x, const_0); in HWTEST_F_L0()
373 // test x * 1 => x in HWTEST_F_L0()
375 auto x = b.Arguments(1); in HWTEST_F_L0() local
377 auto result = b.Int64Mul(x, const_1); in HWTEST_F_L0()
378 EXPECT_EQ(instcombie.VisitGate(result), x); in HWTEST_F_L0()
399 // test x * -1 => 0 - X in HWTEST_F_L0()
401 auto x = b.Arguments(2); in HWTEST_F_L0() local
402 auto result = instcombie.VisitGate(b.Int64Mul(x, b.Int64(-1))); in HWTEST_F_L0()
405 EXPECT_EQ(m.Left().ResolvedValue(), 0); in HWTEST_F_L0()
406 EXPECT_EQ(m.Right().Gate(), x); in HWTEST_F_L0()
410 // test x * 2^n => x << n in HWTEST_F_L0()
412 auto x = b.Arguments(3); in HWTEST_F_L0() local
414 auto result = instcombie.VisitGate(b.Int64Mul(x, const_4)); in HWTEST_F_L0()
416 EXPECT_EQ(m.Left().Gate(), x); in HWTEST_F_L0()
421 // (x * Int64Constant(a)) * Int64Constant(b)) => x * Int64Constant(a * b) in HWTEST_F_L0()
423 auto x = b.Arguments(4); in HWTEST_F_L0() local
426 auto result = instcombie.VisitGate(b.Int64Mul(b.Int64Mul(x, const_4), const_5)); in HWTEST_F_L0()
428 EXPECT_EQ(m.Left().Gate(), x); in HWTEST_F_L0()
432 // Test for (x * Int64Constant(a)) * Int64Constant(b)) => x * Int64Constant(a * b) with overflow in HWTEST_F_L0()
434 auto x = b.Arguments(4); in HWTEST_F_L0() local
437 auto result = instcombie.VisitGate(b.Int64Mul(b.Int64Mul(x, const_almost_max), const_3)); in HWTEST_F_L0()
442 EXPECT_EQ(m.Left().Gate(), x); in HWTEST_F_L0()
457 Environment env(0, &b); in HWTEST_F_L0()
462 // test x * 0 => 0 in HWTEST_F_L0()
464 auto x = b.Arguments(1); in HWTEST_F_L0() local
465 auto const_0 = b.Int32(0); in HWTEST_F_L0()
466 auto result = b.Int32Mul(x, const_0); in HWTEST_F_L0()
469 // test x * 1 => x in HWTEST_F_L0()
471 auto x = b.Arguments(1); in HWTEST_F_L0() local
473 auto result = b.Int32Mul(x, const_1); in HWTEST_F_L0()
474 EXPECT_EQ(instcombie.VisitGate(result), x); in HWTEST_F_L0()
500 // test x * -1 => 0 - X in HWTEST_F_L0()
502 auto x = b.Arguments(2); in HWTEST_F_L0() local
503 auto result = instcombie.VisitGate(b.Int32Mul(x, b.Int32(-1))); in HWTEST_F_L0()
507 EXPECT_EQ(m.Left().ResolvedValue(), 0); in HWTEST_F_L0()
508 EXPECT_EQ(m.Right().Gate(), x); in HWTEST_F_L0()
512 // test x * 2^n => x << n in HWTEST_F_L0()
514 auto x = b.Arguments(3); in HWTEST_F_L0() local
516 auto result = instcombie.VisitGate(b.Int32Mul(x, const_4)); in HWTEST_F_L0()
519 EXPECT_EQ(m.Left().Gate(), x); in HWTEST_F_L0()
524 // (x * Int32Constant(a)) * Int32Constant(b)) => x * Int32Constant(a * b) in HWTEST_F_L0()
526 auto x = b.Arguments(4); in HWTEST_F_L0() local
529 auto result = instcombie.VisitGate(b.Int32Mul(b.Int32Mul(x, const_4), const_5)); in HWTEST_F_L0()
532 EXPECT_EQ(m.Left().Gate(), x); in HWTEST_F_L0()
536 // Test for (x * Int32Constant(a)) * Int32Constant(b)) => x * Int32Constant(a * b) with overflow in HWTEST_F_L0()
538 auto x = b.Arguments(4); in HWTEST_F_L0() local
541 auto result = instcombie.VisitGate(b.Int32Mul(b.Int32Mul(x, const_almost_max), const_3)); in HWTEST_F_L0()
546 EXPECT_EQ(m.Left().Gate(), x); in HWTEST_F_L0()
562 Environment env(0, &b); in HWTEST_F_L0()
567 // test 0/x => 0 in HWTEST_F_L0()
569 auto x = b.Arguments(1); in HWTEST_F_L0() local
570 auto const_0 = b.Int64(0); in HWTEST_F_L0()
571 auto result = b.Int64Div(const_0, x); in HWTEST_F_L0()
576 // test x/0 => 0 in HWTEST_F_L0()
578 auto x = b.Arguments(1); in HWTEST_F_L0() local
579 auto const_0 = b.Int64(0); in HWTEST_F_L0()
580 auto result = b.Int64Div(x, const_0); in HWTEST_F_L0()
584 // test x / 1 => x in HWTEST_F_L0()
586 auto x = b.Arguments(1); in HWTEST_F_L0() local
588 auto result = b.Int64Div(x, const_1); in HWTEST_F_L0()
589 EXPECT_EQ(instcombie.VisitGate(result), x); in HWTEST_F_L0()
601 // test x / -1 => 0 - X in HWTEST_F_L0()
603 auto x = b.Arguments(2); in HWTEST_F_L0() local
604 auto result = instcombie.VisitGate(b.Int64Div(x, b.Int64(-1))); in HWTEST_F_L0()
609 EXPECT_EQ(m.Left().ResolvedValue(), 0); in HWTEST_F_L0()
610 EXPECT_EQ(m.Right().Gate(), x); in HWTEST_F_L0()
614 // test x / -5 => 0 - x / 5 in HWTEST_F_L0()
616 auto x = b.Arguments(2); in HWTEST_F_L0() local
617 auto result = instcombie.VisitGate(b.Int64Div(x, b.Int64(-5))); in HWTEST_F_L0()
621 EXPECT_EQ(m.Left().ResolvedValue(), 0); in HWTEST_F_L0()
625 EXPECT_EQ(m_right.Left().Gate(), x); in HWTEST_F_L0()
639 Environment env(0, &b); in HWTEST_F_L0()
644 // test 0/x => 0 in HWTEST_F_L0()
646 auto x = b.Arguments(1); in HWTEST_F_L0() local
647 auto const_0 = b.Int32(0); in HWTEST_F_L0()
648 auto result = b.Int32Div(const_0, x); in HWTEST_F_L0()
653 // test x/0 => 0 in HWTEST_F_L0()
655 auto x = b.Arguments(1); in HWTEST_F_L0() local
656 auto const_0 = b.Int32(0); in HWTEST_F_L0()
657 auto result = b.Int32Div(x, const_0); in HWTEST_F_L0()
661 // test x / 1 => x in HWTEST_F_L0()
663 auto x = b.Arguments(1); in HWTEST_F_L0() local
665 auto result = b.Int32Div(x, const_1); in HWTEST_F_L0()
666 EXPECT_EQ(instcombie.VisitGate(result), x); in HWTEST_F_L0()
679 // test x / -1 => 0 - X in HWTEST_F_L0()
681 auto x = b.Arguments(2); in HWTEST_F_L0() local
682 auto result = instcombie.VisitGate(b.Int32Div(x, b.Int32(-1))); in HWTEST_F_L0()
686 EXPECT_EQ(m.Left().ResolvedValue(), 0); in HWTEST_F_L0()
687 EXPECT_EQ(m.Right().Gate(), x); in HWTEST_F_L0()
691 // test x / -5 => 0 - x / 5 in HWTEST_F_L0()
693 auto x = b.Arguments(2); in HWTEST_F_L0() local
694 auto result = instcombie.VisitGate(b.Int32Div(x, b.Int32(-5))); in HWTEST_F_L0()
698 EXPECT_EQ(m.Left().ResolvedValue(), 0); in HWTEST_F_L0()
702 EXPECT_EQ(m_right.Left().Gate(), x); in HWTEST_F_L0()
716 Environment env(0, &b); in HWTEST_F_L0()
721 // test x op NaN => NaN in HWTEST_F_L0()
723 auto x = b.Arguments(1); in HWTEST_F_L0() local
725 auto zero = b.Double(0); in HWTEST_F_L0()
730 EXPECT_EQ(instcombie.VisitGate(b.DoubleAdd(x, nan)), nan); in HWTEST_F_L0()
731 EXPECT_EQ(instcombie.VisitGate(b.DoubleSub(x, nan)), nan); in HWTEST_F_L0()
732 EXPECT_EQ(instcombie.VisitGate(b.DoubleMul(x, nan)), nan); in HWTEST_F_L0()
733 EXPECT_EQ(instcombie.VisitGate(b.DoubleDiv(x, nan)), nan); in HWTEST_F_L0()
734 // x % 0 => NaN in HWTEST_F_L0()
735 EXPECT_EQ(instcombie.VisitGate(b.DoubleMod(x, zero)), nan); in HWTEST_F_L0()
739 auto x = b.Arguments(1); in HWTEST_F_L0() local
741 EXPECT_EQ(instcombie.VisitGate(b.DoubleAdd(nan, x)), nan); in HWTEST_F_L0()
742 EXPECT_EQ(instcombie.VisitGate(b.DoubleSub(nan, x)), nan); in HWTEST_F_L0()
743 EXPECT_EQ(instcombie.VisitGate(b.DoubleDiv(nan, x)), nan); in HWTEST_F_L0()
744 EXPECT_EQ(instcombie.VisitGate(b.DoubleMod(nan, x)), nan); in HWTEST_F_L0()
768 // test x * -1.0 => -0.0 - x in HWTEST_F_L0()
770 auto x = b.Arguments(1); in HWTEST_F_L0() local
772 auto result = instcombie.VisitGate(b.DoubleMul(x, neg_one)); in HWTEST_F_L0()
778 EXPECT_EQ(m.Right().Gate(), x); in HWTEST_F_L0()
781 // test x * -1.0 => -0.0 - x in HWTEST_F_L0()
783 auto x = b.Arguments(1); in HWTEST_F_L0() local
785 auto result = instcombie.VisitGate(b.DoubleMul(x, two)); in HWTEST_F_L0()
789 EXPECT_EQ(m.Left().Gate(), x); in HWTEST_F_L0()
790 EXPECT_EQ(m.Right().Gate(), x); in HWTEST_F_L0()
801 Environment env(0, &b); in HWTEST_F_L0()
806 auto x = b.Arguments(1); in HWTEST_F_L0() local
807 auto zero = b.Int32(0); in HWTEST_F_L0()
813 // 0 % x => 0 in HWTEST_F_L0()
814 // x % 0 => 0 in HWTEST_F_L0()
815 // x % 1 => 0 in HWTEST_F_L0()
816 // x % -1 => 0 in HWTEST_F_L0()
817 // x % x => 0 in HWTEST_F_L0()
818 EXPECT_EQ(instcombie.VisitGate(b.Int32Mod(x, zero)), zero); in HWTEST_F_L0()
819 EXPECT_EQ(instcombie.VisitGate(b.Int32Mod(zero, x)), zero); in HWTEST_F_L0()
820 EXPECT_EQ(instcombie.VisitGate(b.Int32Mod(x, one)), zero); in HWTEST_F_L0()
821 EXPECT_EQ(instcombie.VisitGate(b.Int32Mod(x, neg_one)), zero); in HWTEST_F_L0()
822 EXPECT_EQ(instcombie.VisitGate(b.Int32Mod(x, x)), zero); in HWTEST_F_L0()
836 Environment env(0, &b); in HWTEST_F_L0()
845 … auto add_result = b.ExtractValue(ecmascript::kungfu::MachineType::I32, add_overflow, b.Int32(0)); in HWTEST_F_L0()
854 … auto add_result = b.ExtractValue(ecmascript::kungfu::MachineType::I32, add_overflow, b.Int32(0)); in HWTEST_F_L0()
861 // x add 0 => 0 in HWTEST_F_L0()
864 auto x = b.Arguments(1); in HWTEST_F_L0() local
865 auto add_overflow = b.AddWithOverflow(x, b.Int32(0)); in HWTEST_F_L0()
866 … auto add_result = b.ExtractValue(ecmascript::kungfu::MachineType::I32, add_overflow, b.Int32(0)); in HWTEST_F_L0()
868 EXPECT_EQ(instcombie.VisitGate(add_result), x); in HWTEST_F_L0()
881 Environment env(0, &b); in HWTEST_F_L0()
890 … auto sub_result = b.ExtractValue(ecmascript::kungfu::MachineType::I32, sub_overflow, b.Int32(0)); in HWTEST_F_L0()
899 … auto sub_result = b.ExtractValue(ecmascript::kungfu::MachineType::I32, sub_overflow, b.Int32(0)); in HWTEST_F_L0()
905 // x sub 0 => x in HWTEST_F_L0()
908 auto x = b.Arguments(1); in HWTEST_F_L0() local
909 auto sub_overflow = b.SubWithOverflow(x, b.Int32(0)); in HWTEST_F_L0()
910 … auto sub_result = b.ExtractValue(ecmascript::kungfu::MachineType::I32, sub_overflow, b.Int32(0)); in HWTEST_F_L0()
912 EXPECT_EQ(instcombie.VisitGate(sub_result), x); in HWTEST_F_L0()
925 Environment env(0, &b); in HWTEST_F_L0()
934 … auto mul_result = b.ExtractValue(ecmascript::kungfu::MachineType::I32, mul_overflow, b.Int32(0)); in HWTEST_F_L0()
944 … auto mul_result = b.ExtractValue(ecmascript::kungfu::MachineType::I32, mul_overflow, b.Int32(0)); in HWTEST_F_L0()
950 // x * 1 => x in HWTEST_F_L0()
953 auto x = b.Arguments(1); in HWTEST_F_L0() local
954 auto mul_overflow = b.MulWithOverflow(x, b.Int32(1)); in HWTEST_F_L0()
955 … auto mul_result = b.ExtractValue(ecmascript::kungfu::MachineType::I32, mul_overflow, b.Int32(0)); in HWTEST_F_L0()
957 EXPECT_EQ(instcombie.VisitGate(mul_result), x); in HWTEST_F_L0()
961 // x * 0 => 0 in HWTEST_F_L0()
964 auto x = b.Arguments(1); in HWTEST_F_L0() local
965 auto mul_overflow = b.MulWithOverflow(x, b.Int32(0)); in HWTEST_F_L0()
966 … auto mul_result = b.ExtractValue(ecmascript::kungfu::MachineType::I32, mul_overflow, b.Int32(0)); in HWTEST_F_L0()
968 EXPECT_EQ(instcombie.VisitGate(mul_result), b.Int32(0)); in HWTEST_F_L0()
981 Environment env(0, &b); in HWTEST_F_L0()
986 auto x = b.Arguments(1); in HWTEST_F_L0() local
987 auto zero = b.Int64(0); in HWTEST_F_L0()
989 auto Icmp = b.Equal(x, zero); in HWTEST_F_L0()
992 EXPECT_EQ(instcombie.VisitGate(b.Int64And(x, zero)), zero); // x & 0 => 0 in HWTEST_F_L0()
993 EXPECT_EQ(instcombie.VisitGate(b.Int64And(x, neg_one)), x); // x & -1 => x in HWTEST_F_L0()
996 EXPECT_EQ(instcombie.VisitGate(b.Int64And(x, x)), x); // x & x => x in HWTEST_F_L0()
997 // (x & 1) & 2 => x & 0 in HWTEST_F_L0()
998 auto result = instcombie.VisitGate(b.Int64And(b.Int64And(x, one), two)); in HWTEST_F_L0()
1001 EXPECT_EQ(m.Left().Gate(), x); in HWTEST_F_L0()
1007 auto x = b.Arguments(2); in HWTEST_F_L0() local
1008 auto zero = b.Int32(0); in HWTEST_F_L0()
1010 auto Icmp = b.Equal(x, zero); in HWTEST_F_L0()
1013 EXPECT_EQ(instcombie.VisitGate(b.Int32And(x, zero)), zero); // x & 0 => 0 in HWTEST_F_L0()
1014 EXPECT_EQ(instcombie.VisitGate(b.Int32And(x, neg_one)), x); // x & -1 => x in HWTEST_F_L0()
1017 EXPECT_EQ(instcombie.VisitGate(b.Int32And(x, x)), x); // x & x => x in HWTEST_F_L0()
1018 // (x & 1) & 2 => x & 0 in HWTEST_F_L0()
1019 auto result = instcombie.VisitGate(b.Int32And(b.Int32And(x, one), two)); in HWTEST_F_L0()
1022 EXPECT_EQ(m.Left().Gate(), x); in HWTEST_F_L0()
1036 Environment env(0, &b); in HWTEST_F_L0()
1041 auto x = b.Arguments(1); in HWTEST_F_L0() local
1042 auto zero = b.Int64(0); in HWTEST_F_L0()
1047 EXPECT_EQ(instcombie.VisitGate(b.Int64Or(x, zero)), x); // x | 0 => x in HWTEST_F_L0()
1048 EXPECT_EQ(instcombie.VisitGate(b.Int64Or(x, neg_one)), neg_one); // x | -1 => -1 in HWTEST_F_L0()
1050 EXPECT_EQ(instcombie.VisitGate(b.Int64Or(x, x)), x); // x | x => x in HWTEST_F_L0()
1051 // (x & K1) | K2 => x | K2 if K2 has ones for every zero bit in K1. in HWTEST_F_L0()
1053 … b.Int64Or(b.Int64And(x, b.Int64(-6148914691236517205L)), b.Int64(6148914691236517205L))); in HWTEST_F_L0()
1056 EXPECT_EQ(m.Left().Gate(), x); in HWTEST_F_L0()
1062 auto x = b.Arguments(1); in HWTEST_F_L0() local
1063 auto zero = b.Int32(0); in HWTEST_F_L0()
1068 EXPECT_EQ(instcombie.VisitGate(b.Int32Or(x, zero)), x); // x | 0 => x in HWTEST_F_L0()
1069 EXPECT_EQ(instcombie.VisitGate(b.Int32Or(x, neg_one)), neg_one); // x | -1 => -1 in HWTEST_F_L0()
1071 EXPECT_EQ(instcombie.VisitGate(b.Int32Or(x, x)), x); // x | x => x in HWTEST_F_L0()
1072 // (x & K1) | K2 => x | K2 if K2 has ones for every zero bit in K1. in HWTEST_F_L0()
1073 …auto result = instcombie.VisitGate(b.Int32Or(b.Int32And(x, b.Int32(-1431655765)), b.Int32(14316557… in HWTEST_F_L0()
1076 EXPECT_EQ(m.Left().Gate(), x); in HWTEST_F_L0()
1090 Environment env(0, &b); in HWTEST_F_L0()
1095 auto x = b.Arguments(1); in HWTEST_F_L0() local
1096 auto zero = b.Int64(0); in HWTEST_F_L0()
1101 EXPECT_EQ(instcombie.VisitGate(b.Int64Xor(x, zero)), x); // x ^ 0 => x in HWTEST_F_L0()
1103 EXPECT_EQ(instcombie.VisitGate(b.Int64Xor(x, x)), zero); // x ^ x => 0 in HWTEST_F_L0()
1104 // (x ^ -1) ^ -1 => x in HWTEST_F_L0()
1105 EXPECT_EQ(instcombie.VisitGate(b.Int64Xor(b.Int64Xor(x, neg_one), neg_one)), x); in HWTEST_F_L0()
1109 auto x = b.Arguments(1); in HWTEST_F_L0() local
1110 auto zero = b.Int32(0); in HWTEST_F_L0()
1115 EXPECT_EQ(instcombie.VisitGate(b.Int32Xor(x, zero)), x); // x ^ 0 => x in HWTEST_F_L0()
1117 EXPECT_EQ(instcombie.VisitGate(b.Int32Xor(x, x)), zero); // x ^ x => 0 in HWTEST_F_L0()
1118 // (x ^ -1) ^ -1 => x in HWTEST_F_L0()
1119 EXPECT_EQ(instcombie.VisitGate(b.Int32Xor(b.Int32Xor(x, neg_one), neg_one)), x); in HWTEST_F_L0()
1131 Environment env(0, &b); in HWTEST_F_L0()
1137 auto x = b.Arguments(1); in HWTEST_F_L0() local
1138 auto zero = b.Int64(0); in HWTEST_F_L0()
1140 EXPECT_EQ(instcombie.VisitGate(b.Int64LSR(x, zero)), x); // x >>> 0 => x in HWTEST_F_L0()
1148 auto x = b.Arguments(1); in HWTEST_F_L0() local
1149 auto zero = b.Int32(0); in HWTEST_F_L0()
1151 EXPECT_EQ(instcombie.VisitGate(b.Int32LSR(x, zero)), x); // x >>> 0 => x in HWTEST_F_L0()
1156 // (x & 1023) >>> 10 => 0 in HWTEST_F_L0()
1157 … EXPECT_EQ(instcombie.VisitGate(b.Int32LSR(b.Int32And(x, b.Int32(1023)), b.Int32(10))), zero); in HWTEST_F_L0()
1169 Environment env(0, &b); in HWTEST_F_L0()
1174 auto x = b.Arguments(1); in HWTEST_F_L0() local
1175 auto zero = b.Int64(0); in HWTEST_F_L0()
1177 // x >> 0 => x in HWTEST_F_L0()
1178 EXPECT_EQ(instcombie.VisitGate(b.Int64ASR(x, zero)), x); in HWTEST_F_L0()
1185 auto x = b.Arguments(1); in HWTEST_F_L0() local
1186 auto zero = b.Int32(0); in HWTEST_F_L0()
1188 // x >> 0 => x in HWTEST_F_L0()
1189 EXPECT_EQ(instcombie.VisitGate(b.Int32ASR(x, zero)), x); in HWTEST_F_L0()
1205 Environment env(0, &b); in HWTEST_F_L0()
1210 auto x = b.Arguments(1); in HWTEST_F_L0() local
1211 auto zero = b.Int64(0); in HWTEST_F_L0()
1213 // x << 0 => x in HWTEST_F_L0()
1214 EXPECT_EQ(instcombie.VisitGate(b.Int64LSL(x, zero)), x); in HWTEST_F_L0()
1219 auto x = b.Arguments(1); in HWTEST_F_L0() local
1220 auto zero = b.Int32(0); in HWTEST_F_L0()
1222 // x << 0 => x in HWTEST_F_L0()
1223 EXPECT_EQ(instcombie.VisitGate(b.Int32LSL(x, zero)), x); in HWTEST_F_L0()
1237 Environment env(0, &b); in HWTEST_F_L0()
1242 // Match {EQ ((x or constant1) , constant2)} {((constant1 || constant2) != constant2)} => false in HWTEST_F_L0()
1244 auto x = b.Arguments(1); in HWTEST_F_L0() local
1247 auto result = instcombie.VisitGate(b.Equal(b.Int64Or(x, constant1), constant2)); in HWTEST_F_L0()
1253 auto x = b.Arguments(1); in HWTEST_F_L0() local
1256 …auto result = instcombie.VisitGate(b.Equal(b.Int64ToTaggedPtr(b.Int64Or(x, constant1)), constant2)… in HWTEST_F_L0()
1259 …// Match {EQ((X or constant1) & constant2, 0)} { (constan2 !=0 && constant1 & constant2 !=0) }=> f… in HWTEST_F_L0()
1261 auto x = b.Arguments(1); in HWTEST_F_L0() local
1264 auto zero = b.Int64(0); in HWTEST_F_L0()
1265 … auto result = instcombie.VisitGate(b.Equal(b.Int64And(b.Int64Or(x, constant1), constant2), zero)); in HWTEST_F_L0()
1278 Environment env(0, &b); in HWTEST_F_L0()
1283 auto x = b.Arguments(1); in HWTEST_F_L0() local
1284 EXPECT_EQ(instcombie.VisitGate(b.ChangeFloat64ToInt32(b.ChangeInt32ToFloat64(x))), x); in HWTEST_F_L0()
1287 auto x = b.Arguments(2); in HWTEST_F_L0() local
1288 EXPECT_NE(instcombie.VisitGate(b.ChangeInt32ToFloat64(b.ChangeFloat64ToInt32(x))), x); in HWTEST_F_L0()
1291 auto x = b.Arguments(3); in HWTEST_F_L0() local
1292 EXPECT_NE(instcombie.VisitGate(b.Int64ToTaggedPtr(b.ChangeTaggedPointerToInt64(x))), x); in HWTEST_F_L0()