• 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()
630 // test x / -9,223,372,036,854,775,808 in HWTEST_F_L0()
632 auto x = b.Arguments(2); in HWTEST_F_L0() local
633 … auto result = instcombie.VisitGate(b.Int64Div(x, b.Int64(std::numeric_limits<int64_t>::min()))); in HWTEST_F_L0()
646 Environment env(0, &b); in HWTEST_F_L0()
651 // test 0/x => 0 in HWTEST_F_L0()
653 auto x = b.Arguments(1); in HWTEST_F_L0() local
654 auto const_0 = b.Int32(0); in HWTEST_F_L0()
655 auto result = b.Int32Div(const_0, x); in HWTEST_F_L0()
660 // test x/0 => 0 in HWTEST_F_L0()
662 auto x = b.Arguments(1); in HWTEST_F_L0() local
663 auto const_0 = b.Int32(0); in HWTEST_F_L0()
664 auto result = b.Int32Div(x, const_0); in HWTEST_F_L0()
668 // test x / 1 => x in HWTEST_F_L0()
670 auto x = b.Arguments(1); in HWTEST_F_L0() local
672 auto result = b.Int32Div(x, const_1); in HWTEST_F_L0()
673 EXPECT_EQ(instcombie.VisitGate(result), x); in HWTEST_F_L0()
686 // test x / -1 => 0 - X in HWTEST_F_L0()
688 auto x = b.Arguments(2); in HWTEST_F_L0() local
689 auto result = instcombie.VisitGate(b.Int32Div(x, b.Int32(-1))); in HWTEST_F_L0()
693 EXPECT_EQ(m.Left().ResolvedValue(), 0); in HWTEST_F_L0()
694 EXPECT_EQ(m.Right().Gate(), x); in HWTEST_F_L0()
698 // test x / -5 => 0 - x / 5 in HWTEST_F_L0()
700 auto x = b.Arguments(2); in HWTEST_F_L0() local
701 auto result = instcombie.VisitGate(b.Int32Div(x, b.Int32(-5))); in HWTEST_F_L0()
705 EXPECT_EQ(m.Left().ResolvedValue(), 0); in HWTEST_F_L0()
709 EXPECT_EQ(m_right.Left().Gate(), x); in HWTEST_F_L0()
723 Environment env(0, &b); in HWTEST_F_L0()
728 // test x op NaN => NaN in HWTEST_F_L0()
730 auto x = b.Arguments(1); in HWTEST_F_L0() local
732 auto zero = b.Double(0); in HWTEST_F_L0()
737 EXPECT_EQ(instcombie.VisitGate(b.DoubleAdd(x, nan)), nan); in HWTEST_F_L0()
738 EXPECT_EQ(instcombie.VisitGate(b.DoubleSub(x, nan)), nan); in HWTEST_F_L0()
739 EXPECT_EQ(instcombie.VisitGate(b.DoubleMul(x, nan)), nan); in HWTEST_F_L0()
740 EXPECT_EQ(instcombie.VisitGate(b.DoubleDiv(x, nan)), nan); in HWTEST_F_L0()
741 // x % 0 => NaN in HWTEST_F_L0()
742 EXPECT_EQ(instcombie.VisitGate(b.DoubleMod(x, zero)), nan); in HWTEST_F_L0()
746 auto x = b.Arguments(1); in HWTEST_F_L0() local
748 EXPECT_EQ(instcombie.VisitGate(b.DoubleAdd(nan, x)), nan); in HWTEST_F_L0()
749 EXPECT_EQ(instcombie.VisitGate(b.DoubleSub(nan, x)), nan); in HWTEST_F_L0()
750 EXPECT_EQ(instcombie.VisitGate(b.DoubleDiv(nan, x)), nan); in HWTEST_F_L0()
751 EXPECT_EQ(instcombie.VisitGate(b.DoubleMod(nan, x)), nan); in HWTEST_F_L0()
775 // test x * -1.0 => -0.0 - x in HWTEST_F_L0()
777 auto x = b.Arguments(1); in HWTEST_F_L0() local
779 auto result = instcombie.VisitGate(b.DoubleMul(x, neg_one)); in HWTEST_F_L0()
785 EXPECT_EQ(m.Right().Gate(), x); in HWTEST_F_L0()
788 // test x * -1.0 => -0.0 - x in HWTEST_F_L0()
790 auto x = b.Arguments(1); in HWTEST_F_L0() local
792 auto result = instcombie.VisitGate(b.DoubleMul(x, two)); in HWTEST_F_L0()
796 EXPECT_EQ(m.Left().Gate(), x); in HWTEST_F_L0()
797 EXPECT_EQ(m.Right().Gate(), x); in HWTEST_F_L0()
808 Environment env(0, &b); in HWTEST_F_L0()
813 auto x = b.Arguments(1); in HWTEST_F_L0() local
814 auto zero = b.Int32(0); in HWTEST_F_L0()
820 // 0 % x => 0 in HWTEST_F_L0()
821 // x % 0 => 0 in HWTEST_F_L0()
822 // x % 1 => 0 in HWTEST_F_L0()
823 // x % -1 => 0 in HWTEST_F_L0()
824 // x % x => 0 in HWTEST_F_L0()
825 EXPECT_EQ(instcombie.VisitGate(b.Int32Mod(x, zero)), zero); in HWTEST_F_L0()
826 EXPECT_EQ(instcombie.VisitGate(b.Int32Mod(zero, x)), zero); in HWTEST_F_L0()
827 EXPECT_EQ(instcombie.VisitGate(b.Int32Mod(x, one)), zero); in HWTEST_F_L0()
828 EXPECT_EQ(instcombie.VisitGate(b.Int32Mod(x, neg_one)), zero); in HWTEST_F_L0()
829 EXPECT_EQ(instcombie.VisitGate(b.Int32Mod(x, x)), zero); in HWTEST_F_L0()
843 Environment env(0, &b); in HWTEST_F_L0()
852 … auto add_result = b.ExtractValue(ecmascript::kungfu::MachineType::I32, add_overflow, b.Int32(0)); in HWTEST_F_L0()
861 … auto add_result = b.ExtractValue(ecmascript::kungfu::MachineType::I32, add_overflow, b.Int32(0)); in HWTEST_F_L0()
868 // x add 0 => 0 in HWTEST_F_L0()
871 auto x = b.Arguments(1); in HWTEST_F_L0() local
872 auto add_overflow = b.AddWithOverflow(x, b.Int32(0)); in HWTEST_F_L0()
873 … auto add_result = b.ExtractValue(ecmascript::kungfu::MachineType::I32, add_overflow, b.Int32(0)); in HWTEST_F_L0()
875 EXPECT_EQ(instcombie.VisitGate(add_result), x); in HWTEST_F_L0()
888 Environment env(0, &b); in HWTEST_F_L0()
897 … auto sub_result = b.ExtractValue(ecmascript::kungfu::MachineType::I32, sub_overflow, b.Int32(0)); in HWTEST_F_L0()
906 … auto sub_result = b.ExtractValue(ecmascript::kungfu::MachineType::I32, sub_overflow, b.Int32(0)); in HWTEST_F_L0()
912 // x sub 0 => x in HWTEST_F_L0()
915 auto x = b.Arguments(1); in HWTEST_F_L0() local
916 auto sub_overflow = b.SubWithOverflow(x, b.Int32(0)); in HWTEST_F_L0()
917 … auto sub_result = b.ExtractValue(ecmascript::kungfu::MachineType::I32, sub_overflow, b.Int32(0)); in HWTEST_F_L0()
919 EXPECT_EQ(instcombie.VisitGate(sub_result), x); in HWTEST_F_L0()
932 Environment env(0, &b); in HWTEST_F_L0()
941 … auto mul_result = b.ExtractValue(ecmascript::kungfu::MachineType::I32, mul_overflow, b.Int32(0)); in HWTEST_F_L0()
951 … auto mul_result = b.ExtractValue(ecmascript::kungfu::MachineType::I32, mul_overflow, b.Int32(0)); in HWTEST_F_L0()
957 // x * 1 => x in HWTEST_F_L0()
960 auto x = b.Arguments(1); in HWTEST_F_L0() local
961 auto mul_overflow = b.MulWithOverflow(x, b.Int32(1)); in HWTEST_F_L0()
962 … auto mul_result = b.ExtractValue(ecmascript::kungfu::MachineType::I32, mul_overflow, b.Int32(0)); in HWTEST_F_L0()
964 EXPECT_EQ(instcombie.VisitGate(mul_result), x); in HWTEST_F_L0()
968 // x * 0 => 0 in HWTEST_F_L0()
971 auto x = b.Arguments(1); in HWTEST_F_L0() local
972 auto mul_overflow = b.MulWithOverflow(x, b.Int32(0)); in HWTEST_F_L0()
973 … auto mul_result = b.ExtractValue(ecmascript::kungfu::MachineType::I32, mul_overflow, b.Int32(0)); in HWTEST_F_L0()
975 EXPECT_EQ(instcombie.VisitGate(mul_result), b.Int32(0)); in HWTEST_F_L0()
988 Environment env(0, &b); in HWTEST_F_L0()
993 auto x = b.Arguments(1); in HWTEST_F_L0() local
994 auto zero = b.Int64(0); in HWTEST_F_L0()
996 auto Icmp = b.Equal(x, zero); in HWTEST_F_L0()
999 EXPECT_EQ(instcombie.VisitGate(b.Int64And(x, zero)), zero); // x & 0 => 0 in HWTEST_F_L0()
1000 EXPECT_EQ(instcombie.VisitGate(b.Int64And(x, neg_one)), x); // x & -1 => x in HWTEST_F_L0()
1003 EXPECT_EQ(instcombie.VisitGate(b.Int64And(x, x)), x); // x & x => x in HWTEST_F_L0()
1004 // (x & 1) & 2 => x & 0 in HWTEST_F_L0()
1005 auto result = instcombie.VisitGate(b.Int64And(b.Int64And(x, one), two)); in HWTEST_F_L0()
1008 EXPECT_EQ(m.Left().Gate(), x); in HWTEST_F_L0()
1014 auto x = b.Arguments(2); in HWTEST_F_L0() local
1015 auto zero = b.Int32(0); in HWTEST_F_L0()
1017 auto Icmp = b.Equal(x, zero); in HWTEST_F_L0()
1020 EXPECT_EQ(instcombie.VisitGate(b.Int32And(x, zero)), zero); // x & 0 => 0 in HWTEST_F_L0()
1021 EXPECT_EQ(instcombie.VisitGate(b.Int32And(x, neg_one)), x); // x & -1 => x in HWTEST_F_L0()
1024 EXPECT_EQ(instcombie.VisitGate(b.Int32And(x, x)), x); // x & x => x in HWTEST_F_L0()
1025 // (x & 1) & 2 => x & 0 in HWTEST_F_L0()
1026 auto result = instcombie.VisitGate(b.Int32And(b.Int32And(x, one), two)); in HWTEST_F_L0()
1029 EXPECT_EQ(m.Left().Gate(), x); in HWTEST_F_L0()
1043 Environment env(0, &b); in HWTEST_F_L0()
1048 auto x = b.Arguments(1); in HWTEST_F_L0() local
1049 auto zero = b.Int64(0); in HWTEST_F_L0()
1054 EXPECT_EQ(instcombie.VisitGate(b.Int64Or(x, zero)), x); // x | 0 => x in HWTEST_F_L0()
1055 EXPECT_EQ(instcombie.VisitGate(b.Int64Or(x, neg_one)), neg_one); // x | -1 => -1 in HWTEST_F_L0()
1057 EXPECT_EQ(instcombie.VisitGate(b.Int64Or(x, x)), x); // x | x => x in HWTEST_F_L0()
1058 // (x & K1) | K2 => x | K2 if K2 has ones for every zero bit in K1. in HWTEST_F_L0()
1060 … b.Int64Or(b.Int64And(x, b.Int64(-6148914691236517205L)), b.Int64(6148914691236517205L))); in HWTEST_F_L0()
1063 EXPECT_EQ(m.Left().Gate(), x); in HWTEST_F_L0()
1069 auto x = b.Arguments(1); in HWTEST_F_L0() local
1070 auto zero = b.Int32(0); in HWTEST_F_L0()
1075 EXPECT_EQ(instcombie.VisitGate(b.Int32Or(x, zero)), x); // x | 0 => x in HWTEST_F_L0()
1076 EXPECT_EQ(instcombie.VisitGate(b.Int32Or(x, neg_one)), neg_one); // x | -1 => -1 in HWTEST_F_L0()
1078 EXPECT_EQ(instcombie.VisitGate(b.Int32Or(x, x)), x); // x | x => x in HWTEST_F_L0()
1079 // (x & K1) | K2 => x | K2 if K2 has ones for every zero bit in K1. in HWTEST_F_L0()
1080 …auto result = instcombie.VisitGate(b.Int32Or(b.Int32And(x, b.Int32(-1431655765)), b.Int32(14316557… in HWTEST_F_L0()
1083 EXPECT_EQ(m.Left().Gate(), x); in HWTEST_F_L0()
1097 Environment env(0, &b); in HWTEST_F_L0()
1102 auto x = b.Arguments(1); in HWTEST_F_L0() local
1103 auto zero = b.Int64(0); in HWTEST_F_L0()
1108 EXPECT_EQ(instcombie.VisitGate(b.Int64Xor(x, zero)), x); // x ^ 0 => x in HWTEST_F_L0()
1110 EXPECT_EQ(instcombie.VisitGate(b.Int64Xor(x, x)), zero); // x ^ x => 0 in HWTEST_F_L0()
1111 // (x ^ -1) ^ -1 => x in HWTEST_F_L0()
1112 EXPECT_EQ(instcombie.VisitGate(b.Int64Xor(b.Int64Xor(x, neg_one), neg_one)), x); in HWTEST_F_L0()
1116 auto x = b.Arguments(1); in HWTEST_F_L0() local
1117 auto zero = b.Int32(0); in HWTEST_F_L0()
1122 EXPECT_EQ(instcombie.VisitGate(b.Int32Xor(x, zero)), x); // x ^ 0 => x in HWTEST_F_L0()
1124 EXPECT_EQ(instcombie.VisitGate(b.Int32Xor(x, x)), zero); // x ^ x => 0 in HWTEST_F_L0()
1125 // (x ^ -1) ^ -1 => x in HWTEST_F_L0()
1126 EXPECT_EQ(instcombie.VisitGate(b.Int32Xor(b.Int32Xor(x, neg_one), neg_one)), x); in HWTEST_F_L0()
1138 Environment env(0, &b); in HWTEST_F_L0()
1144 auto x = b.Arguments(1); in HWTEST_F_L0() local
1145 auto zero = b.Int64(0); in HWTEST_F_L0()
1147 EXPECT_EQ(instcombie.VisitGate(b.Int64LSR(x, zero)), x); // x >>> 0 => x in HWTEST_F_L0()
1155 auto x = b.Arguments(1); in HWTEST_F_L0() local
1156 auto zero = b.Int32(0); in HWTEST_F_L0()
1158 EXPECT_EQ(instcombie.VisitGate(b.Int32LSR(x, zero)), x); // x >>> 0 => x in HWTEST_F_L0()
1163 // (x & 1023) >>> 10 => 0 in HWTEST_F_L0()
1164 … EXPECT_EQ(instcombie.VisitGate(b.Int32LSR(b.Int32And(x, b.Int32(1023)), b.Int32(10))), zero); in HWTEST_F_L0()
1176 Environment env(0, &b); in HWTEST_F_L0()
1181 auto x = b.Arguments(1); in HWTEST_F_L0() local
1182 auto zero = b.Int64(0); in HWTEST_F_L0()
1184 // x >> 0 => x in HWTEST_F_L0()
1185 EXPECT_EQ(instcombie.VisitGate(b.Int64ASR(x, zero)), x); in HWTEST_F_L0()
1192 auto x = b.Arguments(1); in HWTEST_F_L0() local
1193 auto zero = b.Int32(0); in HWTEST_F_L0()
1195 // x >> 0 => x in HWTEST_F_L0()
1196 EXPECT_EQ(instcombie.VisitGate(b.Int32ASR(x, zero)), x); in HWTEST_F_L0()
1212 Environment env(0, &b); in HWTEST_F_L0()
1217 auto x = b.Arguments(1); in HWTEST_F_L0() local
1218 auto zero = b.Int64(0); in HWTEST_F_L0()
1220 // x << 0 => x in HWTEST_F_L0()
1221 EXPECT_EQ(instcombie.VisitGate(b.Int64LSL(x, zero)), x); in HWTEST_F_L0()
1226 auto x = b.Arguments(1); in HWTEST_F_L0() local
1227 auto zero = b.Int32(0); in HWTEST_F_L0()
1229 // x << 0 => x in HWTEST_F_L0()
1230 EXPECT_EQ(instcombie.VisitGate(b.Int32LSL(x, zero)), x); in HWTEST_F_L0()
1244 Environment env(0, &b); in HWTEST_F_L0()
1249 // Match {EQ ((x or constant1) , constant2)} {((constant1 || constant2) != constant2)} => false in HWTEST_F_L0()
1251 auto x = b.Arguments(1); in HWTEST_F_L0() local
1254 auto result = instcombie.VisitGate(b.Equal(b.Int64Or(x, constant1), constant2)); in HWTEST_F_L0()
1260 auto x = b.Arguments(1); in HWTEST_F_L0() local
1263 …auto result = instcombie.VisitGate(b.Equal(b.Int64ToTaggedPtr(b.Int64Or(x, constant1)), constant2)… in HWTEST_F_L0()
1266 …// Match {EQ((X or constant1) & constant2, 0)} { (constan2 !=0 && constant1 & constant2 !=0) }=> f… in HWTEST_F_L0()
1268 auto x = b.Arguments(1); in HWTEST_F_L0() local
1271 auto zero = b.Int64(0); in HWTEST_F_L0()
1272 … auto result = instcombie.VisitGate(b.Equal(b.Int64And(b.Int64Or(x, constant1), constant2), zero)); in HWTEST_F_L0()
1285 Environment env(0, &b); in HWTEST_F_L0()
1290 auto x = b.Arguments(1); in HWTEST_F_L0() local
1291 EXPECT_EQ(instcombie.VisitGate(b.ChangeFloat64ToInt32(b.ChangeInt32ToFloat64(x))), x); in HWTEST_F_L0()
1294 auto x = b.Arguments(2); in HWTEST_F_L0() local
1295 EXPECT_NE(instcombie.VisitGate(b.ChangeInt32ToFloat64(b.ChangeFloat64ToInt32(x))), x); in HWTEST_F_L0()
1298 auto x = b.Arguments(3); in HWTEST_F_L0() local
1299 EXPECT_NE(instcombie.VisitGate(b.Int64ToTaggedPtr(b.ChangeTaggedPointerToInt64(x))), x); in HWTEST_F_L0()