|
reference, declaration → definition
definition → references, declarations, derived classes, virtual overrides
reference to multiple definitions → definitions
unreferenced
|
References
unittests/IR/PatternMatch.cpp 54 Value *One = IRB.CreateAdd(IRB.CreateAdd(IRB.getInt32(1), IRB.getInt32(2)),
54 Value *One = IRB.CreateAdd(IRB.CreateAdd(IRB.getInt32(1), IRB.getInt32(2)),
54 Value *One = IRB.CreateAdd(IRB.CreateAdd(IRB.getInt32(1), IRB.getInt32(2)),
54 Value *One = IRB.CreateAdd(IRB.CreateAdd(IRB.getInt32(1), IRB.getInt32(2)),
55 IRB.getInt32(42));
56 Value *Two = IRB.CreateAdd(One, IRB.getInt32(42));
56 Value *Two = IRB.CreateAdd(One, IRB.getInt32(42));
57 Value *Leaf = IRB.CreateAdd(IRB.CreateAdd(Two, IRB.getInt32(8)),
57 Value *Leaf = IRB.CreateAdd(IRB.CreateAdd(Two, IRB.getInt32(8)),
57 Value *Leaf = IRB.CreateAdd(IRB.CreateAdd(Two, IRB.getInt32(8)),
58 IRB.CreateAdd(Two, IRB.getInt32(13)));
58 IRB.CreateAdd(Two, IRB.getInt32(13)));
69 Type *IntTy = IRB.getInt32Ty();
108 Type *IntTy = IRB.getInt32Ty();
147 Type *IntTy = IRB.getInt32Ty();
186 Type *IntTy = IRB.getInt32Ty();
225 Type *IntTy = IRB.getInt32Ty();
264 Type *IntTy = IRB.getInt32Ty();
303 Type *IntTy = IRB.getInt32Ty();
342 Type *IntTy = IRB.getInt32Ty();
381 Type *IntTy = IRB.getInt32Ty();
420 Type *IntTy = IRB.getInt32Ty();
459 Value *X = IRB.CreateAdd(IRB.getInt32(1), IRB.getInt32(0));
459 Value *X = IRB.CreateAdd(IRB.getInt32(1), IRB.getInt32(0));
459 Value *X = IRB.CreateAdd(IRB.getInt32(1), IRB.getInt32(0));
475 LLVMContext &Ctx = IRB.getContext();
477 Value *One32 = IRB.getInt32(1);
478 Value *One64Z = IRB.CreateZExt(One32, IntegerType::getInt64Ty(Ctx));
479 Value *One64S = IRB.CreateSExt(One32, IntegerType::getInt64Ty(Ctx));
511 Value *C128 = IRB.getInt32(128);
520 Value *CIntMin = IRB.getInt64(APSInt::getSignedMinValue(64).getSExtValue());
531 Value *X = IRB.getInt32(1);
532 Value *Y = IRB.getInt32(2);
557 EXPECT_TRUE(match(IRB.CreateAnd(X, X), m_And(m_Value(tX), m_Deferred(tX))));
563 match(IRB.CreateAnd(X, Y), m_c_And(m_Value(tX), m_Deferred(tX))));
574 checkMatch(IRB.CreateAnd(X, IRB.CreateAnd(X, Y)));
574 checkMatch(IRB.CreateAnd(X, IRB.CreateAnd(X, Y)));
575 checkMatch(IRB.CreateAnd(X, IRB.CreateAnd(Y, X)));
575 checkMatch(IRB.CreateAnd(X, IRB.CreateAnd(Y, X)));
576 checkMatch(IRB.CreateAnd(IRB.CreateAnd(X, Y), X));
576 checkMatch(IRB.CreateAnd(IRB.CreateAnd(X, Y), X));
577 checkMatch(IRB.CreateAnd(IRB.CreateAnd(Y, X), X));
577 checkMatch(IRB.CreateAnd(IRB.CreateAnd(Y, X), X));
581 Type *FltTy = IRB.getFloatTy();
588 .match(IRB.CreateSelect(IRB.CreateFCmpOLT(L, R), L, R)));
588 .match(IRB.CreateSelect(IRB.CreateFCmpOLT(L, R), L, R)));
594 .match(IRB.CreateSelect(IRB.CreateFCmpOLE(L, R), L, R)));
594 .match(IRB.CreateSelect(IRB.CreateFCmpOLE(L, R), L, R)));
600 .match(IRB.CreateSelect(IRB.CreateFCmpOGE(L, R), L, R)));
600 .match(IRB.CreateSelect(IRB.CreateFCmpOGE(L, R), L, R)));
604 .match(IRB.CreateSelect(IRB.CreateFCmpOGT(L, R), L, R)));
604 .match(IRB.CreateSelect(IRB.CreateFCmpOGT(L, R), L, R)));
615 .match(IRB.CreateSelect(IRB.CreateFCmpOGE(L, R), R, L)));
615 .match(IRB.CreateSelect(IRB.CreateFCmpOGE(L, R), R, L)));
617 .match(IRB.CreateSelect(IRB.CreateFCmpUGE(L, R), R, L)));
617 .match(IRB.CreateSelect(IRB.CreateFCmpUGE(L, R), R, L)));
623 .match(IRB.CreateSelect(IRB.CreateFCmpOGT(L, R), R, L)));
623 .match(IRB.CreateSelect(IRB.CreateFCmpOGT(L, R), R, L)));
625 .match(IRB.CreateSelect(IRB.CreateFCmpUGT(L, R), R, L)));
625 .match(IRB.CreateSelect(IRB.CreateFCmpUGT(L, R), R, L)));
631 Type *FltTy = IRB.getFloatTy();
638 .match(IRB.CreateSelect(IRB.CreateFCmpOGT(L, R), L, R)));
638 .match(IRB.CreateSelect(IRB.CreateFCmpOGT(L, R), L, R)));
644 .match(IRB.CreateSelect(IRB.CreateFCmpOGE(L, R), L, R)));
644 .match(IRB.CreateSelect(IRB.CreateFCmpOGE(L, R), L, R)));
650 .match(IRB.CreateSelect(IRB.CreateFCmpOLE(L, R), L, R)));
650 .match(IRB.CreateSelect(IRB.CreateFCmpOLE(L, R), L, R)));
654 .match(IRB.CreateSelect(IRB.CreateFCmpOLT(L, R), L, R)));
654 .match(IRB.CreateSelect(IRB.CreateFCmpOLT(L, R), L, R)));
666 .match(IRB.CreateSelect(IRB.CreateFCmpOLE(L, R), R, L)));
666 .match(IRB.CreateSelect(IRB.CreateFCmpOLE(L, R), R, L)));
668 .match(IRB.CreateSelect(IRB.CreateFCmpULE(L, R), R, L)));
668 .match(IRB.CreateSelect(IRB.CreateFCmpULE(L, R), R, L)));
674 .match(IRB.CreateSelect(IRB.CreateFCmpOLT(L, R), R, L)));
674 .match(IRB.CreateSelect(IRB.CreateFCmpOLT(L, R), R, L)));
676 .match(IRB.CreateSelect(IRB.CreateFCmpULT(L, R), R, L)));
676 .match(IRB.CreateSelect(IRB.CreateFCmpULT(L, R), R, L)));
682 Type *FltTy = IRB.getFloatTy();
689 .match(IRB.CreateSelect(IRB.CreateFCmpULT(L, R), L, R)));
689 .match(IRB.CreateSelect(IRB.CreateFCmpULT(L, R), L, R)));
695 .match(IRB.CreateSelect(IRB.CreateFCmpULE(L, R), L, R)));
695 .match(IRB.CreateSelect(IRB.CreateFCmpULE(L, R), L, R)));
701 .match(IRB.CreateSelect(IRB.CreateFCmpUGE(L, R), L, R)));
701 .match(IRB.CreateSelect(IRB.CreateFCmpUGE(L, R), L, R)));
705 .match(IRB.CreateSelect(IRB.CreateFCmpUGT(L, R), L, R)));
705 .match(IRB.CreateSelect(IRB.CreateFCmpUGT(L, R), L, R)));
716 .match(IRB.CreateSelect(IRB.CreateFCmpUGE(L, R), R, L)));
716 .match(IRB.CreateSelect(IRB.CreateFCmpUGE(L, R), R, L)));
718 .match(IRB.CreateSelect(IRB.CreateFCmpOGE(L, R), R, L)));
718 .match(IRB.CreateSelect(IRB.CreateFCmpOGE(L, R), R, L)));
724 .match(IRB.CreateSelect(IRB.CreateFCmpUGT(L, R), R, L)));
724 .match(IRB.CreateSelect(IRB.CreateFCmpUGT(L, R), R, L)));
726 .match(IRB.CreateSelect(IRB.CreateFCmpOGT(L, R), R, L)));
726 .match(IRB.CreateSelect(IRB.CreateFCmpOGT(L, R), R, L)));
732 Type *FltTy = IRB.getFloatTy();
739 .match(IRB.CreateSelect(IRB.CreateFCmpUGT(L, R), L, R)));
739 .match(IRB.CreateSelect(IRB.CreateFCmpUGT(L, R), L, R)));
745 .match(IRB.CreateSelect(IRB.CreateFCmpUGE(L, R), L, R)));
745 .match(IRB.CreateSelect(IRB.CreateFCmpUGE(L, R), L, R)));
751 .match(IRB.CreateSelect(IRB.CreateFCmpULE(L, R), L, R)));
751 .match(IRB.CreateSelect(IRB.CreateFCmpULE(L, R), L, R)));
755 .match(IRB.CreateSelect(IRB.CreateFCmpULT(L, R), L, R)));
755 .match(IRB.CreateSelect(IRB.CreateFCmpULT(L, R), L, R)));
766 .match(IRB.CreateSelect(IRB.CreateFCmpULE(L, R), R, L)));
766 .match(IRB.CreateSelect(IRB.CreateFCmpULE(L, R), R, L)));
768 .match(IRB.CreateSelect(IRB.CreateFCmpOLE(L, R), R, L)));
768 .match(IRB.CreateSelect(IRB.CreateFCmpOLE(L, R), R, L)));
774 .match(IRB.CreateSelect(IRB.CreateFCmpULT(L, R), R, L)));
774 .match(IRB.CreateSelect(IRB.CreateFCmpULT(L, R), R, L)));
776 .match(IRB.CreateSelect(IRB.CreateFCmpOLT(L, R), R, L)));
776 .match(IRB.CreateSelect(IRB.CreateFCmpOLT(L, R), R, L)));
782 Value *L = IRB.getInt32(1);
783 Value *R = IRB.getInt32(2);
787 m_NSWAdd(m_Value(MatchL), m_Value(MatchR)).match(IRB.CreateNSWAdd(L, R)));
792 m_NSWSub(m_Value(MatchL), m_Value(MatchR)).match(IRB.CreateNSWSub(L, R)));
797 m_NSWMul(m_Value(MatchL), m_Value(MatchR)).match(IRB.CreateNSWMul(L, R)));
802 IRB.CreateShl(L, R, "", /* NUW */ false, /* NSW */ true)));
807 m_NUWAdd(m_Value(MatchL), m_Value(MatchR)).match(IRB.CreateNUWAdd(L, R)));
812 m_NUWSub(m_Value(MatchL), m_Value(MatchR)).match(IRB.CreateNUWSub(L, R)));
817 m_NUWMul(m_Value(MatchL), m_Value(MatchR)).match(IRB.CreateNUWMul(L, R)));
822 IRB.CreateShl(L, R, "", /* NUW */ true, /* NSW */ false)));
826 EXPECT_FALSE(m_NSWAdd(m_Value(), m_Value()).match(IRB.CreateAdd(L, R)));
827 EXPECT_FALSE(m_NSWAdd(m_Value(), m_Value()).match(IRB.CreateNUWAdd(L, R)));
828 EXPECT_FALSE(m_NSWAdd(m_Value(), m_Value()).match(IRB.CreateNSWSub(L, R)));
829 EXPECT_FALSE(m_NSWSub(m_Value(), m_Value()).match(IRB.CreateSub(L, R)));
830 EXPECT_FALSE(m_NSWSub(m_Value(), m_Value()).match(IRB.CreateNUWSub(L, R)));
831 EXPECT_FALSE(m_NSWSub(m_Value(), m_Value()).match(IRB.CreateNSWAdd(L, R)));
832 EXPECT_FALSE(m_NSWMul(m_Value(), m_Value()).match(IRB.CreateMul(L, R)));
833 EXPECT_FALSE(m_NSWMul(m_Value(), m_Value()).match(IRB.CreateNUWMul(L, R)));
834 EXPECT_FALSE(m_NSWMul(m_Value(), m_Value()).match(IRB.CreateNSWAdd(L, R)));
835 EXPECT_FALSE(m_NSWShl(m_Value(), m_Value()).match(IRB.CreateShl(L, R)));
837 IRB.CreateShl(L, R, "", /* NUW */ true, /* NSW */ false)));
838 EXPECT_FALSE(m_NSWShl(m_Value(), m_Value()).match(IRB.CreateNSWAdd(L, R)));
840 EXPECT_FALSE(m_NUWAdd(m_Value(), m_Value()).match(IRB.CreateAdd(L, R)));
841 EXPECT_FALSE(m_NUWAdd(m_Value(), m_Value()).match(IRB.CreateNSWAdd(L, R)));
842 EXPECT_FALSE(m_NUWAdd(m_Value(), m_Value()).match(IRB.CreateNUWSub(L, R)));
843 EXPECT_FALSE(m_NUWSub(m_Value(), m_Value()).match(IRB.CreateSub(L, R)));
844 EXPECT_FALSE(m_NUWSub(m_Value(), m_Value()).match(IRB.CreateNSWSub(L, R)));
845 EXPECT_FALSE(m_NUWSub(m_Value(), m_Value()).match(IRB.CreateNUWAdd(L, R)));
846 EXPECT_FALSE(m_NUWMul(m_Value(), m_Value()).match(IRB.CreateMul(L, R)));
847 EXPECT_FALSE(m_NUWMul(m_Value(), m_Value()).match(IRB.CreateNSWMul(L, R)));
848 EXPECT_FALSE(m_NUWMul(m_Value(), m_Value()).match(IRB.CreateNUWAdd(L, R)));
849 EXPECT_FALSE(m_NUWShl(m_Value(), m_Value()).match(IRB.CreateShl(L, R)));
851 IRB.CreateShl(L, R, "", /* NUW */ false, /* NSW */ true)));
852 EXPECT_FALSE(m_NUWShl(m_Value(), m_Value()).match(IRB.CreateNUWAdd(L, R)));
862 Value *Alloca = IRB.CreateAlloca(IRB.getInt32Ty());
862 Value *Alloca = IRB.CreateAlloca(IRB.getInt32Ty());
863 Value *LoadInst = IRB.CreateLoad(IRB.getInt32Ty(), Alloca);
863 Value *LoadInst = IRB.CreateLoad(IRB.getInt32Ty(), Alloca);
864 Value *FourtyTwo = IRB.getInt32(42);
865 Value *StoreInst = IRB.CreateStore(FourtyTwo, Alloca);
908 Type *VecTy = VectorType::get(IRB.getInt8Ty(), 2);
909 Type *i32 = IRB.getInt32Ty();
912 Value *Val = IRB.CreateAdd(IRB.getInt8(0), IRB.getInt8(1));
912 Value *Val = IRB.CreateAdd(IRB.getInt8(0), IRB.getInt8(1));
912 Value *Val = IRB.CreateAdd(IRB.getInt8(0), IRB.getInt8(1));
913 Value *Val2 = IRB.CreateAdd(Val, IRB.getInt8(3));
913 Value *Val2 = IRB.CreateAdd(Val, IRB.getInt8(3));
921 Value *VI1 = IRB.CreateInsertElement(UndefVec, IRB.getInt8(1), (uint64_t)0);
921 Value *VI1 = IRB.CreateInsertElement(UndefVec, IRB.getInt8(1), (uint64_t)0);
922 Value *VI2 = IRB.CreateInsertElement(VI1, Val2, Val);
923 Value *VI3 = IRB.CreateInsertElement(VI1, Val2, (uint64_t)1);
924 Value *VI4 = IRB.CreateInsertElement(VI1, IRB.getInt8(2), Val);
924 Value *VI4 = IRB.CreateInsertElement(VI1, IRB.getInt8(2), Val);
926 Value *EX1 = IRB.CreateExtractElement(VI4, Val);
927 Value *EX2 = IRB.CreateExtractElement(VI4, (uint64_t)0);
928 Value *EX3 = IRB.CreateExtractElement(IdxVec, (uint64_t)1);
931 Value *SI1 = IRB.CreateShuffleVector(VI1, UndefVec, Zero);
932 Value *SI2 = IRB.CreateShuffleVector(VI3, VI4, IdxVec);
933 Value *SI3 = IRB.CreateShuffleVector(VI3, UndefVec, Zero);
934 Value *SI4 = IRB.CreateShuffleVector(VI4, UndefVec, Zero);
936 Value *SP1 = IRB.CreateVectorSplat(2, IRB.getInt8(2));
936 Value *SP1 = IRB.CreateVectorSplat(2, IRB.getInt8(2));
937 Value *SP2 = IRB.CreateVectorSplat(2, Val);
1000 Type *ScalarTy = IRB.getInt8Ty();
1028 Type *ScalarTy = IRB.getFloatTy();
1056 Type *FltTy = IRB.getFloatTy();
1060 Value *V = IRB.CreateFNeg(One);
1061 Value *V1 = IRB.CreateFSub(NZ, One);
1062 Value *V2 = IRB.CreateFSub(Z, One);
1063 Value *V3 = IRB.CreateFAdd(NZ, One);
1087 Value *Br1 = IRB.CreateCondBr(IRB.getTrue(), TrueBB, FalseBB);
1087 Value *Br1 = IRB.CreateCondBr(IRB.getTrue(), TrueBB, FalseBB);
1107 Value *Br2 = IRB.CreateCondBr(IRB.getTrue(), TrueBB, TrueBB);
1107 Value *Br2 = IRB.CreateCondBr(IRB.getTrue(), TrueBB, TrueBB);
1120 auto &IRB = PatternMatchTest::IRB;