reference, declarationdefinition
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;