@@ -494,6 +494,45 @@ TEST_F(PatternMatchTest, Unless) {
494
494
EXPECT_FALSE (m_Unless (m_c_Add (m_Zero (), m_One ())).match (X));
495
495
}
496
496
497
+ TEST_F (PatternMatchTest, BitWise) {
498
+ Value *Or = IRB.CreateOr (IRB.getInt32 (1 ), IRB.getInt32 (0 ));
499
+ Value *Xor = IRB.CreateXor (IRB.getInt32 (1 ), IRB.getInt32 (0 ));
500
+ Value *And = IRB.CreateXor (IRB.getInt32 (1 ), IRB.getInt32 (0 ));
501
+ Constant *T = IRB.getInt1 (true );
502
+ Constant *F = IRB.getInt1 (false );
503
+ Value *Alloca = IRB.CreateAlloca (IRB.getInt1Ty ());
504
+ Value *X = IRB.CreateLoad (IRB.getInt1Ty (), Alloca);
505
+ Value *Y = IRB.CreateLoad (IRB.getInt1Ty (), Alloca);
506
+ Value *LAnd = IRB.CreateSelect (X, Y, F);
507
+ Value *LOr = IRB.CreateSelect (X, T, Y);
508
+ Value *Add = IRB.CreateAdd (IRB.getInt32 (1 ), IRB.getInt32 (0 ));
509
+
510
+ EXPECT_TRUE (m_BitwiseLogic (m_One (), m_Zero ()).match (Or));
511
+ EXPECT_TRUE (m_BitwiseLogic (m_One (), m_Zero ()).match (Xor));
512
+ EXPECT_TRUE (m_BitwiseLogic (m_One (), m_Zero ()).match (And));
513
+ EXPECT_FALSE (m_BitwiseLogic (m_Value (), m_Value ()).match (LAnd));
514
+ EXPECT_FALSE (m_BitwiseLogic (m_Value (), m_Value ()).match (LOr));
515
+ EXPECT_FALSE (m_BitwiseLogic (m_Value (), m_Value ()).match (Add));
516
+
517
+ EXPECT_FALSE (m_BitwiseLogic (m_Zero (), m_One ()).match (Or));
518
+ EXPECT_FALSE (m_BitwiseLogic (m_Zero (), m_One ()).match (Xor));
519
+ EXPECT_FALSE (m_BitwiseLogic (m_Zero (), m_One ()).match (And));
520
+
521
+ EXPECT_TRUE (m_c_BitwiseLogic (m_One (), m_Zero ()).match (Or));
522
+ EXPECT_TRUE (m_c_BitwiseLogic (m_One (), m_Zero ()).match (Xor));
523
+ EXPECT_TRUE (m_c_BitwiseLogic (m_One (), m_Zero ()).match (And));
524
+ EXPECT_FALSE (m_c_BitwiseLogic (m_Value (), m_Value ()).match (LAnd));
525
+ EXPECT_FALSE (m_c_BitwiseLogic (m_Value (), m_Value ()).match (LOr));
526
+ EXPECT_FALSE (m_c_BitwiseLogic (m_Value (), m_Value ()).match (Add));
527
+
528
+ EXPECT_TRUE (m_c_BitwiseLogic (m_Zero (), m_One ()).match (Or));
529
+ EXPECT_TRUE (m_c_BitwiseLogic (m_Zero (), m_One ()).match (Xor));
530
+ EXPECT_TRUE (m_c_BitwiseLogic (m_Zero (), m_One ()).match (And));
531
+
532
+ EXPECT_FALSE (m_c_BitwiseLogic (m_One (), m_One ()).match (Or));
533
+ EXPECT_FALSE (m_c_BitwiseLogic (m_Zero (), m_Zero ()).match (Xor));
534
+ }
535
+
497
536
TEST_F (PatternMatchTest, ZExtSExtSelf) {
498
537
LLVMContext &Ctx = IRB.getContext ();
499
538
0 commit comments