Lines Matching defs:IC

58 static Instruction *simplifyX86MaskedLoad(IntrinsicInst &II, InstCombiner &IC) {
65 return IC.replaceInstUsesWith(II, ZeroVec);
69 if (Value *BoolMask = getBoolVecFromMask(Mask, IC.getDataLayout())) {
74 Value *PtrCast = IC.Builder.CreateBitCast(Ptr, VecPtrTy, "castvec");
77 CallInst *NewMaskedLoad = IC.Builder.CreateMaskedLoad(
79 return IC.replaceInstUsesWith(II, NewMaskedLoad);
88 static bool simplifyX86MaskedStore(IntrinsicInst &II, InstCombiner &IC) {
95 IC.eraseInstFromFunction(II);
106 if (Value *BoolMask = getBoolVecFromMask(Mask, IC.getDataLayout())) {
109 Value *PtrCast = IC.Builder.CreateBitCast(Ptr, VecPtrTy, "castvec");
111 IC.Builder.CreateMaskedStore(Vec, PtrCast, Align(1), BoolMask);
114 IC.eraseInstFromFunction(II);
2146 X86TTIImpl::instCombineIntrinsic(InstCombiner &IC, IntrinsicInst &II) const {
2147 auto SimplifyDemandedVectorEltsLow = [&IC](Value *Op, unsigned Width,
2151 return IC.SimplifyDemandedVectorElts(Op, DemandedElts, UndefElts);
2168 return IC.replaceInstUsesWith(II, ConstantInt::get(II.getType(), 0));
2176 return IC.replaceInstUsesWith(II,
2191 return IC.replaceInstUsesWith(II, II.getArgOperand(0));
2194 return IC.replaceInstUsesWith(II, ConstantInt::get(II.getType(), 0));
2200 return IC.replaceInstUsesWith(II,
2210 return IC.replaceInstUsesWith(II, ConstantInt::get(II.getType(), 0));
2213 return IC.replaceInstUsesWith(II, II.getArgOperand(0));
2222 Value *Masked = IC.Builder.CreateAnd(Input, II.getArgOperand(1));
2224 Value *Shifted = IC.Builder.CreateLShr(Masked, ShiftAmt);
2225 return IC.replaceInstUsesWith(II, Shifted);
2245 return IC.replaceInstUsesWith(II,
2254 return IC.replaceInstUsesWith(II, ConstantInt::get(II.getType(), 0));
2257 return IC.replaceInstUsesWith(II, II.getArgOperand(0));
2267 Value *Shifted = IC.Builder.CreateShl(Input, ShiftAmt);
2268 Value *Masked = IC.Builder.CreateAnd(Shifted, II.getArgOperand(1));
2269 return IC.replaceInstUsesWith(II, Masked);
2289 return IC.replaceInstUsesWith(II,
2324 return IC.replaceOperand(II, 0, V);
2336 if (Value *V = simplifyX86movmsk(II, IC.Builder)) {
2337 return IC.replaceInstUsesWith(II, V);
2376 IC.replaceOperand(II, 0, V);
2380 IC.replaceOperand(II, 1, V);
2410 V = IC.Builder.CreateFAdd(Arg0, Arg1);
2414 V = IC.Builder.CreateFSub(Arg0, Arg1);
2418 V = IC.Builder.CreateFMul(Arg0, Arg1);
2422 V = IC.Builder.CreateFDiv(Arg0, Arg1);
2426 return IC.replaceInstUsesWith(II, V);
2446 Value *LHS = IC.Builder.CreateExtractElement(Arg0, (uint64_t)0);
2447 Value *RHS = IC.Builder.CreateExtractElement(Arg1, (uint64_t)0);
2455 V = IC.Builder.CreateFAdd(LHS, RHS);
2459 V = IC.Builder.CreateFSub(LHS, RHS);
2463 V = IC.Builder.CreateFMul(LHS, RHS);
2467 V = IC.Builder.CreateFDiv(LHS, RHS);
2478 IC.Builder.getInt1Ty(),
2480 Mask = IC.Builder.CreateBitCast(Mask, MaskTy);
2481 Mask = IC.Builder.CreateExtractElement(Mask, (uint64_t)0);
2484 IC.Builder.CreateExtractElement(II.getArgOperand(2), (uint64_t)0);
2485 V = IC.Builder.CreateSelect(Mask, V, Passthru);
2489 V = IC.Builder.CreateInsertElement(Arg0, V, (uint64_t)0);
2491 return IC.replaceInstUsesWith(II, V);
2526 if (Value *V = simplifyX86immShift(II, IC.Builder)) {
2527 return IC.replaceInstUsesWith(II, V);
2558 if (Value *V = simplifyX86immShift(II, IC.Builder)) {
2559 return IC.replaceInstUsesWith(II, V);
2570 return IC.replaceOperand(II, 1, V);
2602 if (Value *V = simplifyX86varShift(II, IC.Builder)) {
2603 return IC.replaceInstUsesWith(II, V);
2613 if (Value *V = simplifyX86pack(II, IC.Builder, true)) {
2614 return IC.replaceInstUsesWith(II, V);
2624 if (Value *V = simplifyX86pack(II, IC.Builder, false)) {
2625 return IC.replaceInstUsesWith(II, V);
2632 if (Value *V = simplifyX86pmulh(II, IC.Builder, true, false)) {
2633 return IC.replaceInstUsesWith(II, V);
2640 if (Value *V = simplifyX86pmulh(II, IC.Builder, false, false)) {
2641 return IC.replaceInstUsesWith(II, V);
2648 if (Value *V = simplifyX86pmulh(II, IC.Builder, true, true)) {
2649 return IC.replaceInstUsesWith(II, V);
2656 if (Value *V = simplifyX86pmadd(II, IC.Builder, true)) {
2657 return IC.replaceInstUsesWith(II, V);
2664 if (Value *V = simplifyX86pmadd(II, IC.Builder, false)) {
2665 return IC.replaceInstUsesWith(II, V);
2685 IC.SimplifyDemandedVectorElts(Arg0, DemandedElts1, UndefElts1)) {
2686 IC.replaceOperand(II, 0, V);
2694 IC.SimplifyDemandedVectorElts(Arg1, DemandedElts2, UndefElts2)) {
2695 IC.replaceOperand(II, 1, V);
2702 return IC.replaceInstUsesWith(II,
2714 if (Value *V = simplifyX86insertps(II, IC.Builder)) {
2715 return IC.replaceInstUsesWith(II, V);
2738 if (Value *V = simplifyX86extrq(II, Op0, CILength, CIIndex, IC.Builder)) {
2739 return IC.replaceInstUsesWith(II, V);
2746 IC.replaceOperand(II, 0, V);
2750 IC.replaceOperand(II, 1, V);
2772 if (Value *V = simplifyX86extrq(II, Op0, CILength, CIIndex, IC.Builder)) {
2773 return IC.replaceInstUsesWith(II, V);
2779 return IC.replaceOperand(II, 0, V);
2804 if (Value *V = simplifyX86insertq(II, Op0, Op1, Len, Idx, IC.Builder)) {
2805 return IC.replaceInstUsesWith(II, V);
2812 return IC.replaceOperand(II, 0, V);
2837 if (Value *V = simplifyX86insertq(II, Op0, Op1, Len, Idx, IC.Builder)) {
2838 return IC.replaceInstUsesWith(II, V);
2846 IC.replaceOperand(II, 0, V);
2850 IC.replaceOperand(II, 1, V);
2870 return IC.replaceInstUsesWith(II, Op0);
2875 return IC.replaceInstUsesWith(II, Op0);
2881 getNegativeIsTrueBoolVec(ConstantMask, IC.getDataLayout());
2925 BoolVec = IC.Builder.CreateShuffleVector(BoolVec, ScaledMask);
2939 Value *CastOp0 = IC.Builder.CreateBitCast(Op0, MaskTy);
2940 Value *CastOp1 = IC.Builder.CreateBitCast(Op1, MaskTy);
2941 Value *Sel = IC.Builder.CreateSelect(BoolVec, CastOp1, CastOp0);
2952 if (Value *V = simplifyX86pshufb(II, IC.Builder)) {
2953 return IC.replaceInstUsesWith(II, V);
2963 if (Value *V = simplifyX86vpermilvar(II, IC.Builder)) {
2964 return IC.replaceInstUsesWith(II, V);
2982 if (Value *V = simplifyX86vpermv(II, IC.Builder)) {
2983 return IC.replaceInstUsesWith(II, V);
3005 if (Value *V = simplifyX86vpermv3(II, IC.Builder)) {
3006 return IC.replaceInstUsesWith(II, V);
3018 if (Instruction *I = simplifyX86MaskedLoad(II, IC)) {
3032 if (simplifyX86MaskedStore(II, IC)) {
3039 if (Value *V = simplifyX86addcarry(II, IC.Builder)) {
3040 return IC.replaceInstUsesWith(II, V);
3050 if (Value *V = simplifyTernarylogic(II, IC.Builder)) {
3051 return IC.replaceInstUsesWith(II, V);
3061 InstCombiner &IC, IntrinsicInst &II, APInt DemandedMask, KnownBits &Known,
3101 InstCombiner &IC, IntrinsicInst &II, APInt DemandedElts, APInt &UndefElts,
3116 IC.addToWorklist(&II);
3135 IC.addToWorklist(&II);
3155 IC.addToWorklist(&II);
3182 IC.addToWorklist(&II);
3216 IC.addToWorklist(&II);
3244 IRBuilderBase::InsertPointGuard Guard(IC.Builder);
3245 IC.Builder.SetInsertPoint(&II);
3247 return IC.Builder.CreateBinOp(