Lines Matching refs:Ops

78 static Value *EmitX86MaskedStore(CodeGenFunction &CGF, ArrayRef<Value *> Ops,  in EmitX86MaskedStore()  argument
80 Value *Ptr = Ops[0]; in EmitX86MaskedStore()
83 CGF, Ops[2], in EmitX86MaskedStore()
84 cast<llvm::FixedVectorType>(Ops[1]->getType())->getNumElements()); in EmitX86MaskedStore()
86 return CGF.Builder.CreateMaskedStore(Ops[1], Ptr, Alignment, MaskVec); in EmitX86MaskedStore()
89 static Value *EmitX86MaskedLoad(CodeGenFunction &CGF, ArrayRef<Value *> Ops, in EmitX86MaskedLoad() argument
91 llvm::Type *Ty = Ops[1]->getType(); in EmitX86MaskedLoad()
92 Value *Ptr = Ops[0]; in EmitX86MaskedLoad()
95 CGF, Ops[2], cast<llvm::FixedVectorType>(Ty)->getNumElements()); in EmitX86MaskedLoad()
97 return CGF.Builder.CreateMaskedLoad(Ty, Ptr, Alignment, MaskVec, Ops[1]); in EmitX86MaskedLoad()
101 ArrayRef<Value *> Ops) { in EmitX86ExpandLoad() argument
102 auto *ResultTy = cast<llvm::VectorType>(Ops[1]->getType()); in EmitX86ExpandLoad()
103 Value *Ptr = Ops[0]; in EmitX86ExpandLoad()
106 CGF, Ops[2], cast<FixedVectorType>(ResultTy)->getNumElements()); in EmitX86ExpandLoad()
110 return CGF.Builder.CreateCall(F, { Ptr, MaskVec, Ops[1] }); in EmitX86ExpandLoad()
114 ArrayRef<Value *> Ops, in EmitX86CompressExpand() argument
116 auto *ResultTy = cast<llvm::FixedVectorType>(Ops[1]->getType()); in EmitX86CompressExpand()
118 Value *MaskVec = getMaskVecValue(CGF, Ops[2], ResultTy->getNumElements()); in EmitX86CompressExpand()
123 return CGF.Builder.CreateCall(F, { Ops[0], Ops[1], MaskVec }); in EmitX86CompressExpand()
127 ArrayRef<Value *> Ops) { in EmitX86CompressStore() argument
128 auto *ResultTy = cast<llvm::FixedVectorType>(Ops[1]->getType()); in EmitX86CompressStore()
129 Value *Ptr = Ops[0]; in EmitX86CompressStore()
131 Value *MaskVec = getMaskVecValue(CGF, Ops[2], ResultTy->getNumElements()); in EmitX86CompressStore()
135 return CGF.Builder.CreateCall(F, { Ops[1], Ptr, MaskVec }); in EmitX86CompressStore()
139 ArrayRef<Value *> Ops, in EmitX86MaskLogic() argument
141 unsigned NumElts = Ops[0]->getType()->getIntegerBitWidth(); in EmitX86MaskLogic()
142 Value *LHS = getMaskVecValue(CGF, Ops[0], NumElts); in EmitX86MaskLogic()
143 Value *RHS = getMaskVecValue(CGF, Ops[1], NumElts); in EmitX86MaskLogic()
149 Ops[0]->getType()); in EmitX86MaskLogic()
170 static Value *EmitX86vpcom(CodeGenFunction &CGF, ArrayRef<Value *> Ops, in EmitX86vpcom() argument
172 Value *Op0 = Ops[0]; in EmitX86vpcom()
173 Value *Op1 = Ops[1]; in EmitX86vpcom()
175 uint64_t Imm = cast<llvm::ConstantInt>(Ops[2])->getZExtValue() & 0x7; in EmitX86vpcom()
262 bool Signed, ArrayRef<Value *> Ops) { in EmitX86MaskedCompare() argument
263 assert((Ops.size() == 2 || Ops.size() == 4) && in EmitX86MaskedCompare()
266 cast<llvm::FixedVectorType>(Ops[0]->getType())->getNumElements(); in EmitX86MaskedCompare()
286 Cmp = CGF.Builder.CreateICmp(Pred, Ops[0], Ops[1]); in EmitX86MaskedCompare()
290 if (Ops.size() == 4) in EmitX86MaskedCompare()
291 MaskIn = Ops[3]; in EmitX86MaskedCompare()
302 ArrayRef<Value *> Ops, bool IsSigned) { in EmitX86ConvertIntToFp() argument
303 unsigned Rnd = cast<llvm::ConstantInt>(Ops[3])->getZExtValue(); in EmitX86ConvertIntToFp()
304 llvm::Type *Ty = Ops[1]->getType(); in EmitX86ConvertIntToFp()
310 Function *F = CGF.CGM.getIntrinsic(IID, { Ty, Ops[0]->getType() }); in EmitX86ConvertIntToFp()
311 Res = CGF.Builder.CreateCall(F, { Ops[0], Ops[3] }); in EmitX86ConvertIntToFp()
314 Res = IsSigned ? CGF.Builder.CreateSIToFP(Ops[0], Ty) in EmitX86ConvertIntToFp()
315 : CGF.Builder.CreateUIToFP(Ops[0], Ty); in EmitX86ConvertIntToFp()
318 return EmitX86Select(CGF, Ops[2], Res, Ops[1]); in EmitX86ConvertIntToFp()
323 ArrayRef<Value *> Ops, unsigned BuiltinID, in EmitX86FMAExpr() argument
378 Value *A = Ops[0]; in EmitX86FMAExpr()
379 Value *B = Ops[1]; in EmitX86FMAExpr()
380 Value *C = Ops[2]; in EmitX86FMAExpr()
389 (cast<llvm::ConstantInt>(Ops.back())->getZExtValue() != (uint64_t)4 || in EmitX86FMAExpr()
392 Res = CGF.Builder.CreateCall(Intr, {A, B, C, Ops.back() }); in EmitX86FMAExpr()
415 MaskFalseVal = Ops[0]; in EmitX86FMAExpr()
423 MaskFalseVal = Constant::getNullValue(Ops[0]->getType()); in EmitX86FMAExpr()
437 MaskFalseVal = Ops[2]; in EmitX86FMAExpr()
442 return EmitX86Select(CGF, Ops[3], Res, MaskFalseVal); in EmitX86FMAExpr()
448 MutableArrayRef<Value *> Ops, Value *Upper, in EmitScalarFMAExpr() argument
452 if (Ops.size() > 4) in EmitScalarFMAExpr()
453 Rnd = cast<llvm::ConstantInt>(Ops[4])->getZExtValue(); in EmitScalarFMAExpr()
456 Ops[2] = CGF.Builder.CreateFNeg(Ops[2]); in EmitScalarFMAExpr()
458 Ops[0] = CGF.Builder.CreateExtractElement(Ops[0], (uint64_t)0); in EmitScalarFMAExpr()
459 Ops[1] = CGF.Builder.CreateExtractElement(Ops[1], (uint64_t)0); in EmitScalarFMAExpr()
460 Ops[2] = CGF.Builder.CreateExtractElement(Ops[2], (uint64_t)0); in EmitScalarFMAExpr()
465 switch (Ops[0]->getType()->getPrimitiveSizeInBits()) { in EmitScalarFMAExpr()
479 {Ops[0], Ops[1], Ops[2], Ops[4]}); in EmitScalarFMAExpr()
483 Intrinsic::experimental_constrained_fma, Ops[0]->getType()); in EmitScalarFMAExpr()
484 Res = CGF.Builder.CreateConstrainedFPCall(FMA, Ops.slice(0, 3)); in EmitScalarFMAExpr()
486 Function *FMA = CGF.CGM.getIntrinsic(Intrinsic::fma, Ops[0]->getType()); in EmitScalarFMAExpr()
487 Res = CGF.Builder.CreateCall(FMA, Ops.slice(0, 3)); in EmitScalarFMAExpr()
490 if (Ops.size() > 3) { in EmitScalarFMAExpr()
492 : Ops[PTIdx]; in EmitScalarFMAExpr()
500 Res = EmitX86ScalarSelect(CGF, Ops[3], Res, PassThru); in EmitScalarFMAExpr()
506 ArrayRef<Value *> Ops) { in EmitX86Muldq() argument
507 llvm::Type *Ty = Ops[0]->getType(); in EmitX86Muldq()
511 Value *LHS = CGF.Builder.CreateBitCast(Ops[0], Ty); in EmitX86Muldq()
512 Value *RHS = CGF.Builder.CreateBitCast(Ops[1], Ty); in EmitX86Muldq()
535 ArrayRef<Value *> Ops) { in EmitX86Ternlog() argument
536 llvm::Type *Ty = Ops[0]->getType(); in EmitX86Ternlog()
557 Ops.drop_back()); in EmitX86Ternlog()
558 Value *PassThru = ZeroMask ? ConstantAggregateZero::get(Ty) : Ops[0]; in EmitX86Ternlog()
559 return EmitX86Select(CGF, Ops[4], Ternlog, PassThru); in EmitX86Ternlog()
578 ArrayRef<Value *> Ops, in EmitX86CvtF16ToFloatExpr() argument
580 assert((Ops.size() == 1 || Ops.size() == 3 || Ops.size() == 4) && in EmitX86CvtF16ToFloatExpr()
584 if (Ops.size() == 4 && cast<llvm::ConstantInt>(Ops[3])->getZExtValue() != 4) { in EmitX86CvtF16ToFloatExpr()
587 return CGF.Builder.CreateCall(F, {Ops[0], Ops[1], Ops[2], Ops[3]}); in EmitX86CvtF16ToFloatExpr()
591 Value *Src = Ops[0]; in EmitX86CvtF16ToFloatExpr()
608 if (Ops.size() >= 3) in EmitX86CvtF16ToFloatExpr()
609 Res = EmitX86Select(CGF, Ops[2], Res, Ops[1]); in EmitX86CvtF16ToFloatExpr()
751 SmallVector<Value*, 4> Ops; in EmitX86BuiltinExpr() local
762 Ops.push_back(EmitScalarOrConstFoldImmArg(ICEArguments, i, E)); in EmitX86BuiltinExpr()
771 auto getCmpIntrinsicCall = [this, &Ops](Intrinsic::ID ID, unsigned Imm) { in EmitX86BuiltinExpr()
772 Ops.push_back(llvm::ConstantInt::get(Int8Ty, Imm)); in EmitX86BuiltinExpr()
774 return Builder.CreateCall(F, Ops); in EmitX86BuiltinExpr()
782 auto getVectorFCmpIR = [this, &Ops, E](CmpInst::Predicate Pred, in EmitX86BuiltinExpr()
787 Cmp = Builder.CreateFCmpS(Pred, Ops[0], Ops[1]); in EmitX86BuiltinExpr()
789 Cmp = Builder.CreateFCmp(Pred, Ops[0], Ops[1]); in EmitX86BuiltinExpr()
790 llvm::VectorType *FPVecTy = cast<llvm::VectorType>(Ops[0]->getType()); in EmitX86BuiltinExpr()
799 Value *Address = Ops[0]; in EmitX86BuiltinExpr()
800 ConstantInt *C = cast<ConstantInt>(Ops[1]); in EmitX86BuiltinExpr()
809 Value *Address = Ops[0]; in EmitX86BuiltinExpr()
820 Ops[0]); in EmitX86BuiltinExpr()
840 Ops[0]); in EmitX86BuiltinExpr()
846 Function *F = CGM.getIntrinsic(Intrinsic::ctlz, Ops[0]->getType()); in EmitX86BuiltinExpr()
847 return Builder.CreateCall(F, {Ops[0], Builder.getInt1(false)}); in EmitX86BuiltinExpr()
852 Function *F = CGM.getIntrinsic(Intrinsic::cttz, Ops[0]->getType()); in EmitX86BuiltinExpr()
853 return Builder.CreateCall(F, {Ops[0], Builder.getInt1(false)}); in EmitX86BuiltinExpr()
875 cast<llvm::FixedVectorType>(Ops[0]->getType())->getNumElements(); in EmitX86BuiltinExpr()
876 uint64_t Index = cast<ConstantInt>(Ops[1])->getZExtValue(); in EmitX86BuiltinExpr()
880 return Builder.CreateExtractElement(Ops[0], Index); in EmitX86BuiltinExpr()
892 cast<llvm::FixedVectorType>(Ops[0]->getType())->getNumElements(); in EmitX86BuiltinExpr()
893 unsigned Index = cast<ConstantInt>(Ops[2])->getZExtValue(); in EmitX86BuiltinExpr()
897 return Builder.CreateInsertElement(Ops[0], Ops[1], Index); in EmitX86BuiltinExpr()
902 Builder.CreateStore(Ops[0], Tmp); in EmitX86BuiltinExpr()
953 Builder.CreateLShr(Ops[1], ConstantInt::get(Int64Ty, 32)), Int32Ty); in EmitX86BuiltinExpr()
954 Value *Mlo = Builder.CreateTrunc(Ops[1], Int32Ty); in EmitX86BuiltinExpr()
955 Ops[1] = Mhi; in EmitX86BuiltinExpr()
956 Ops.push_back(Mlo); in EmitX86BuiltinExpr()
957 return Builder.CreateCall(CGM.getIntrinsic(ID), Ops); in EmitX86BuiltinExpr()
961 return Builder.CreateCall(CGM.getIntrinsic(Intrinsic::x86_xgetbv), Ops); in EmitX86BuiltinExpr()
980 return EmitX86MaskedStore(*this, Ops, Align(1)); in EmitX86BuiltinExpr()
986 return EmitX86MaskedStore(*this, Ops, Align(1)); in EmitX86BuiltinExpr()
1000 return EmitX86SExtMask(*this, Ops[0], ConvertType(E->getType())); in EmitX86BuiltinExpr()
1014 return EmitX86ConvertToMask(*this, Ops[0]); in EmitX86BuiltinExpr()
1022 return EmitX86ConvertIntToFp(*this, E, Ops, /*IsSigned*/ true); in EmitX86BuiltinExpr()
1029 return EmitX86ConvertIntToFp(*this, E, Ops, /*IsSigned*/ false); in EmitX86BuiltinExpr()
1036 return EmitScalarFMAExpr(*this, E, Ops, Ops[0]); in EmitX86BuiltinExpr()
1039 return EmitScalarFMAExpr(*this, E, Ops, in EmitX86BuiltinExpr()
1040 Constant::getNullValue(Ops[0]->getType())); in EmitX86BuiltinExpr()
1044 return EmitScalarFMAExpr(*this, E, Ops, Ops[0], /*ZeroMask*/ true); in EmitX86BuiltinExpr()
1048 return EmitScalarFMAExpr(*this, E, Ops, Ops[2], /*ZeroMask*/ false, 2); in EmitX86BuiltinExpr()
1052 return EmitScalarFMAExpr(*this, E, Ops, Ops[2], /*ZeroMask*/ false, 2, in EmitX86BuiltinExpr()
1075 return EmitX86FMAExpr(*this, E, Ops, BuiltinID, /*IsAddSub*/ false); in EmitX86BuiltinExpr()
1088 return EmitX86FMAExpr(*this, E, Ops, BuiltinID, /*IsAddSub*/ true); in EmitX86BuiltinExpr()
1103 *this, Ops, in EmitX86BuiltinExpr()
1124 return EmitX86MaskedLoad(*this, Ops, Align(1)); in EmitX86BuiltinExpr()
1130 return EmitX86MaskedLoad(*this, Ops, Align(1)); in EmitX86BuiltinExpr()
1145 *this, Ops, in EmitX86BuiltinExpr()
1166 return EmitX86ExpandLoad(*this, Ops); in EmitX86BuiltinExpr()
1186 return EmitX86CompressStore(*this, Ops); in EmitX86BuiltinExpr()
1206 return EmitX86CompressExpand(*this, Ops, /*IsCompress*/false); in EmitX86BuiltinExpr()
1226 return EmitX86CompressExpand(*this, Ops, /*IsCompress*/true); in EmitX86BuiltinExpr()
1330 cast<llvm::FixedVectorType>(Ops[0]->getType())->getNumElements(), in EmitX86BuiltinExpr()
1331 cast<llvm::FixedVectorType>(Ops[2]->getType())->getNumElements()); in EmitX86BuiltinExpr()
1332 Ops[3] = getMaskVecValue(*this, Ops[3], MinElts); in EmitX86BuiltinExpr()
1334 return Builder.CreateCall(Intr, Ops); in EmitX86BuiltinExpr()
1439 cast<llvm::FixedVectorType>(Ops[2]->getType())->getNumElements(), in EmitX86BuiltinExpr()
1440 cast<llvm::FixedVectorType>(Ops[3]->getType())->getNumElements()); in EmitX86BuiltinExpr()
1441 Ops[1] = getMaskVecValue(*this, Ops[1], MinElts); in EmitX86BuiltinExpr()
1443 return Builder.CreateCall(Intr, Ops); in EmitX86BuiltinExpr()
1465 cast<llvm::FixedVectorType>(Ops[0]->getType())->getNumElements(); in EmitX86BuiltinExpr()
1467 unsigned Index = cast<ConstantInt>(Ops[1])->getZExtValue(); in EmitX86BuiltinExpr()
1476 Value *Res = Builder.CreateShuffleVector(Ops[0], ArrayRef(Indices, NumElts), in EmitX86BuiltinExpr()
1479 if (Ops.size() == 4) in EmitX86BuiltinExpr()
1480 Res = EmitX86Select(*this, Ops[3], Res, Ops[2]); in EmitX86BuiltinExpr()
1501 cast<llvm::FixedVectorType>(Ops[0]->getType())->getNumElements(); in EmitX86BuiltinExpr()
1503 cast<llvm::FixedVectorType>(Ops[1]->getType())->getNumElements(); in EmitX86BuiltinExpr()
1505 unsigned Index = cast<ConstantInt>(Ops[2])->getZExtValue(); in EmitX86BuiltinExpr()
1515 Ops[1], ArrayRef(Indices, DstNumElts), "widen"); in EmitX86BuiltinExpr()
1524 return Builder.CreateShuffleVector(Ops[0], Op1, in EmitX86BuiltinExpr()
1529 Value *Res = Builder.CreateTrunc(Ops[0], Ops[1]->getType()); in EmitX86BuiltinExpr()
1530 return EmitX86Select(*this, Ops[2], Res, Ops[1]); in EmitX86BuiltinExpr()
1535 if (const auto *C = dyn_cast<Constant>(Ops[2])) in EmitX86BuiltinExpr()
1537 return Builder.CreateTrunc(Ops[0], Ops[1]->getType()); in EmitX86BuiltinExpr()
1554 return Builder.CreateCall(Intr, Ops); in EmitX86BuiltinExpr()
1565 cast<llvm::FixedVectorType>(Ops[0]->getType())->getNumElements(); in EmitX86BuiltinExpr()
1566 unsigned Imm = cast<llvm::ConstantInt>(Ops[2])->getZExtValue(); in EmitX86BuiltinExpr()
1574 return Builder.CreateShuffleVector(Ops[0], Ops[1], in EmitX86BuiltinExpr()
1580 uint32_t Imm = cast<llvm::ConstantInt>(Ops[1])->getZExtValue(); in EmitX86BuiltinExpr()
1581 auto *Ty = cast<llvm::FixedVectorType>(Ops[0]->getType()); in EmitX86BuiltinExpr()
1597 return Builder.CreateShuffleVector(Ops[0], ArrayRef(Indices, NumElts), in EmitX86BuiltinExpr()
1603 uint32_t Imm = cast<llvm::ConstantInt>(Ops[1])->getZExtValue(); in EmitX86BuiltinExpr()
1604 auto *Ty = cast<llvm::FixedVectorType>(Ops[0]->getType()); in EmitX86BuiltinExpr()
1620 return Builder.CreateShuffleVector(Ops[0], ArrayRef(Indices, NumElts), in EmitX86BuiltinExpr()
1632 uint32_t Imm = cast<llvm::ConstantInt>(Ops[1])->getZExtValue(); in EmitX86BuiltinExpr()
1633 auto *Ty = cast<llvm::FixedVectorType>(Ops[0]->getType()); in EmitX86BuiltinExpr()
1649 return Builder.CreateShuffleVector(Ops[0], ArrayRef(Indices, NumElts), in EmitX86BuiltinExpr()
1658 uint32_t Imm = cast<llvm::ConstantInt>(Ops[2])->getZExtValue(); in EmitX86BuiltinExpr()
1659 auto *Ty = cast<llvm::FixedVectorType>(Ops[0]->getType()); in EmitX86BuiltinExpr()
1678 return Builder.CreateShuffleVector(Ops[0], Ops[1], in EmitX86BuiltinExpr()
1685 unsigned Imm = cast<llvm::ConstantInt>(Ops[1])->getZExtValue(); in EmitX86BuiltinExpr()
1686 auto *Ty = cast<llvm::FixedVectorType>(Ops[0]->getType()); in EmitX86BuiltinExpr()
1695 return Builder.CreateShuffleVector(Ops[0], ArrayRef(Indices, NumElts), in EmitX86BuiltinExpr()
1701 unsigned ShiftVal = cast<llvm::ConstantInt>(Ops[2])->getZExtValue() & 0xff; in EmitX86BuiltinExpr()
1704 cast<llvm::FixedVectorType>(Ops[0]->getType())->getNumElements(); in EmitX86BuiltinExpr()
1716 Ops[1] = Ops[0]; in EmitX86BuiltinExpr()
1717 Ops[0] = llvm::Constant::getNullValue(Ops[0]->getType()); in EmitX86BuiltinExpr()
1731 return Builder.CreateShuffleVector(Ops[1], Ops[0], in EmitX86BuiltinExpr()
1741 cast<llvm::FixedVectorType>(Ops[0]->getType())->getNumElements(); in EmitX86BuiltinExpr()
1742 unsigned ShiftVal = cast<llvm::ConstantInt>(Ops[2])->getZExtValue() & 0xff; in EmitX86BuiltinExpr()
1751 return Builder.CreateShuffleVector(Ops[1], Ops[0], in EmitX86BuiltinExpr()
1762 unsigned Imm = cast<llvm::ConstantInt>(Ops[2])->getZExtValue(); in EmitX86BuiltinExpr()
1763 auto *Ty = cast<llvm::FixedVectorType>(Ops[0]->getType()); in EmitX86BuiltinExpr()
1779 return Builder.CreateShuffleVector(Ops[0], Ops[1], in EmitX86BuiltinExpr()
1787 unsigned Imm = cast<llvm::ConstantInt>(Ops[2])->getZExtValue(); in EmitX86BuiltinExpr()
1789 cast<llvm::FixedVectorType>(Ops[0]->getType())->getNumElements(); in EmitX86BuiltinExpr()
1801 OutOps[l] = llvm::ConstantAggregateZero::get(Ops[0]->getType()); in EmitX86BuiltinExpr()
1803 OutOps[l] = Ops[1]; in EmitX86BuiltinExpr()
1805 OutOps[l] = Ops[0]; in EmitX86BuiltinExpr()
1825 unsigned ShiftVal = cast<llvm::ConstantInt>(Ops[1])->getZExtValue() & 0xff; in EmitX86BuiltinExpr()
1826 auto *ResultType = cast<llvm::FixedVectorType>(Ops[0]->getType()); in EmitX86BuiltinExpr()
1845 Value *Cast = Builder.CreateBitCast(Ops[0], VecTy, "cast"); in EmitX86BuiltinExpr()
1849 return Builder.CreateBitCast(SV, Ops[0]->getType(), "cast"); in EmitX86BuiltinExpr()
1854 unsigned ShiftVal = cast<llvm::ConstantInt>(Ops[1])->getZExtValue() & 0xff; in EmitX86BuiltinExpr()
1855 auto *ResultType = cast<llvm::FixedVectorType>(Ops[0]->getType()); in EmitX86BuiltinExpr()
1874 Value *Cast = Builder.CreateBitCast(Ops[0], VecTy, "cast"); in EmitX86BuiltinExpr()
1884 unsigned ShiftVal = cast<llvm::ConstantInt>(Ops[1])->getZExtValue() & 0xff; in EmitX86BuiltinExpr()
1885 unsigned NumElts = Ops[0]->getType()->getIntegerBitWidth(); in EmitX86BuiltinExpr()
1888 return llvm::Constant::getNullValue(Ops[0]->getType()); in EmitX86BuiltinExpr()
1890 Value *In = getMaskVecValue(*this, Ops[0], NumElts); in EmitX86BuiltinExpr()
1899 return Builder.CreateBitCast(SV, Ops[0]->getType()); in EmitX86BuiltinExpr()
1905 unsigned ShiftVal = cast<llvm::ConstantInt>(Ops[1])->getZExtValue() & 0xff; in EmitX86BuiltinExpr()
1906 unsigned NumElts = Ops[0]->getType()->getIntegerBitWidth(); in EmitX86BuiltinExpr()
1909 return llvm::Constant::getNullValue(Ops[0]->getType()); in EmitX86BuiltinExpr()
1911 Value *In = getMaskVecValue(*this, Ops[0], NumElts); in EmitX86BuiltinExpr()
1920 return Builder.CreateBitCast(SV, Ops[0]->getType()); in EmitX86BuiltinExpr()
1929 Value *Ptr = Ops[0]; in EmitX86BuiltinExpr()
1930 Value *Src = Ops[1]; in EmitX86BuiltinExpr()
1964 return EmitX86FunnelShift(*this, Ops[0], Ops[0], Ops[1], false); in EmitX86BuiltinExpr()
1977 return EmitX86FunnelShift(*this, Ops[0], Ops[0], Ops[1], true); in EmitX86BuiltinExpr()
2002 return EmitX86Select(*this, Ops[0], Ops[1], Ops[2]); in EmitX86BuiltinExpr()
2007 Value *A = Builder.CreateExtractElement(Ops[1], (uint64_t)0); in EmitX86BuiltinExpr()
2008 Value *B = Builder.CreateExtractElement(Ops[2], (uint64_t)0); in EmitX86BuiltinExpr()
2009 A = EmitX86ScalarSelect(*this, Ops[0], A, B); in EmitX86BuiltinExpr()
2010 return Builder.CreateInsertElement(Ops[1], A, (uint64_t)0); in EmitX86BuiltinExpr()
2024 unsigned CC = cast<llvm::ConstantInt>(Ops[2])->getZExtValue() & 0x7; in EmitX86BuiltinExpr()
2025 return EmitX86MaskedCompare(*this, CC, true, Ops); in EmitX86BuiltinExpr()
2039 unsigned CC = cast<llvm::ConstantInt>(Ops[2])->getZExtValue() & 0x7; in EmitX86BuiltinExpr()
2040 return EmitX86MaskedCompare(*this, CC, false, Ops); in EmitX86BuiltinExpr()
2046 return EmitX86vpcom(*this, Ops, true); in EmitX86BuiltinExpr()
2051 return EmitX86vpcom(*this, Ops, false); in EmitX86BuiltinExpr()
2057 Value *Or = EmitX86MaskLogic(*this, Instruction::Or, Ops); in EmitX86BuiltinExpr()
2058 Value *C = llvm::Constant::getAllOnesValue(Ops[0]->getType()); in EmitX86BuiltinExpr()
2066 Value *Or = EmitX86MaskLogic(*this, Instruction::Or, Ops); in EmitX86BuiltinExpr()
2067 Value *C = llvm::Constant::getNullValue(Ops[0]->getType()); in EmitX86BuiltinExpr()
2109 unsigned NumElts = Ops[0]->getType()->getIntegerBitWidth(); in EmitX86BuiltinExpr()
2110 Value *LHS = getMaskVecValue(*this, Ops[0], NumElts); in EmitX86BuiltinExpr()
2111 Value *RHS = getMaskVecValue(*this, Ops[1], NumElts); in EmitX86BuiltinExpr()
2137 unsigned NumElts = Ops[0]->getType()->getIntegerBitWidth(); in EmitX86BuiltinExpr()
2138 Value *LHS = getMaskVecValue(*this, Ops[0], NumElts); in EmitX86BuiltinExpr()
2139 Value *RHS = getMaskVecValue(*this, Ops[1], NumElts); in EmitX86BuiltinExpr()
2142 return Builder.CreateBitCast(Res, Ops[0]->getType()); in EmitX86BuiltinExpr()
2148 return EmitX86MaskLogic(*this, Instruction::And, Ops); in EmitX86BuiltinExpr()
2153 return EmitX86MaskLogic(*this, Instruction::And, Ops, true); in EmitX86BuiltinExpr()
2158 return EmitX86MaskLogic(*this, Instruction::Or, Ops); in EmitX86BuiltinExpr()
2163 return EmitX86MaskLogic(*this, Instruction::Xor, Ops, true); in EmitX86BuiltinExpr()
2168 return EmitX86MaskLogic(*this, Instruction::Xor, Ops); in EmitX86BuiltinExpr()
2173 unsigned NumElts = Ops[0]->getType()->getIntegerBitWidth(); in EmitX86BuiltinExpr()
2174 Value *Res = getMaskVecValue(*this, Ops[0], NumElts); in EmitX86BuiltinExpr()
2176 Ops[0]->getType()); in EmitX86BuiltinExpr()
2185 unsigned NumElts = Ops[0]->getType()->getIntegerBitWidth(); in EmitX86BuiltinExpr()
2186 Value *Res = getMaskVecValue(*this, Ops[0], NumElts); in EmitX86BuiltinExpr()
2187 return Builder.CreateBitCast(Res, Ops[0]->getType()); in EmitX86BuiltinExpr()
2193 unsigned NumElts = Ops[0]->getType()->getIntegerBitWidth(); in EmitX86BuiltinExpr()
2194 Value *LHS = getMaskVecValue(*this, Ops[0], NumElts); in EmitX86BuiltinExpr()
2195 Value *RHS = getMaskVecValue(*this, Ops[1], NumElts); in EmitX86BuiltinExpr()
2208 return Builder.CreateBitCast(Res, Ops[0]->getType()); in EmitX86BuiltinExpr()
2217 Function *F = CGM.getIntrinsic(Intrinsic::ctlz, Ops[0]->getType()); in EmitX86BuiltinExpr()
2218 return Builder.CreateCall(F, {Ops[0],Builder.getInt1(false)}); in EmitX86BuiltinExpr()
2222 Value *A = Builder.CreateExtractElement(Ops[0], (uint64_t)0); in EmitX86BuiltinExpr()
2233 return Builder.CreateInsertElement(Ops[0], A, (uint64_t)0); in EmitX86BuiltinExpr()
2238 unsigned CC = cast<llvm::ConstantInt>(Ops[4])->getZExtValue(); in EmitX86BuiltinExpr()
2257 return Builder.CreateCall(CGM.getIntrinsic(IID), Ops); in EmitX86BuiltinExpr()
2259 Value *A = Builder.CreateExtractElement(Ops[1], (uint64_t)0); in EmitX86BuiltinExpr()
2270 Value *Src = Builder.CreateExtractElement(Ops[2], (uint64_t)0); in EmitX86BuiltinExpr()
2271 A = EmitX86ScalarSelect(*this, Ops[3], A, Src); in EmitX86BuiltinExpr()
2272 return Builder.CreateInsertElement(Ops[0], A, (uint64_t)0); in EmitX86BuiltinExpr()
2286 if (Ops.size() == 2) { in EmitX86BuiltinExpr()
2287 unsigned CC = cast<llvm::ConstantInt>(Ops[1])->getZExtValue(); in EmitX86BuiltinExpr()
2306 return Builder.CreateCall(CGM.getIntrinsic(IID), Ops); in EmitX86BuiltinExpr()
2312 Ops[0]->getType()); in EmitX86BuiltinExpr()
2313 return Builder.CreateConstrainedFPCall(F, Ops[0]); in EmitX86BuiltinExpr()
2315 Function *F = CGM.getIntrinsic(Intrinsic::sqrt, Ops[0]->getType()); in EmitX86BuiltinExpr()
2316 return Builder.CreateCall(F, Ops[0]); in EmitX86BuiltinExpr()
2323 return EmitX86Muldq(*this, /*IsSigned*/false, Ops); in EmitX86BuiltinExpr()
2328 return EmitX86Muldq(*this, /*IsSigned*/true, Ops); in EmitX86BuiltinExpr()
2336 return EmitX86Ternlog(*this, /*ZeroMask*/false, Ops); in EmitX86BuiltinExpr()
2344 return EmitX86Ternlog(*this, /*ZeroMask*/true, Ops); in EmitX86BuiltinExpr()
2355 return EmitX86FunnelShift(*this, Ops[0], Ops[1], Ops[2], false); in EmitX86BuiltinExpr()
2367 return EmitX86FunnelShift(*this, Ops[1], Ops[0], Ops[2], true); in EmitX86BuiltinExpr()
2378 return EmitX86FunnelShift(*this, Ops[0], Ops[1], Ops[2], false); in EmitX86BuiltinExpr()
2390 return EmitX86FunnelShift(*this, Ops[1], Ops[0], Ops[2], true); in EmitX86BuiltinExpr()
2399 CGM.getIntrinsic(Intrinsic::vector_reduce_fadd, Ops[1]->getType()); in EmitX86BuiltinExpr()
2402 return Builder.CreateCall(F, {Ops[0], Ops[1]}); in EmitX86BuiltinExpr()
2410 CGM.getIntrinsic(Intrinsic::vector_reduce_fmul, Ops[1]->getType()); in EmitX86BuiltinExpr()
2413 return Builder.CreateCall(F, {Ops[0], Ops[1]}); in EmitX86BuiltinExpr()
2421 CGM.getIntrinsic(Intrinsic::vector_reduce_fmax, Ops[0]->getType()); in EmitX86BuiltinExpr()
2424 return Builder.CreateCall(F, {Ops[0]}); in EmitX86BuiltinExpr()
2432 CGM.getIntrinsic(Intrinsic::vector_reduce_fmin, Ops[0]->getType()); in EmitX86BuiltinExpr()
2435 return Builder.CreateCall(F, {Ops[0]}); in EmitX86BuiltinExpr()
2469 Ops[0]); in EmitX86BuiltinExpr()
2494 { Ops[0], Ops[1], Ops[2] }); in EmitX86BuiltinExpr()
2496 Ops[3]); in EmitX86BuiltinExpr()
2513 cast<llvm::FixedVectorType>(Ops[0]->getType())->getNumElements(); in EmitX86BuiltinExpr()
2514 Value *MaskIn = Ops[2]; in EmitX86BuiltinExpr()
2515 Ops.erase(&Ops[2]); in EmitX86BuiltinExpr()
2558 Value *Fpclass = Builder.CreateCall(CGM.getIntrinsic(ID), Ops); in EmitX86BuiltinExpr()
2569 cast<llvm::FixedVectorType>(Ops[0]->getType())->getNumElements(); in EmitX86BuiltinExpr()
2594 Value *Call = Builder.CreateCall(CGM.getIntrinsic(ID), {Ops[0], Ops[1]}); in EmitX86BuiltinExpr()
2597 Builder.CreateDefaultAlignedStore(Result, Ops[2]); in EmitX86BuiltinExpr()
2601 return Builder.CreateDefaultAlignedStore(Result, Ops[3]); in EmitX86BuiltinExpr()
2621 return Builder.CreateCall(CGM.getIntrinsic(ID), Ops); in EmitX86BuiltinExpr()
2628 cast<llvm::FixedVectorType>(Ops[0]->getType())->getNumElements(); in EmitX86BuiltinExpr()
2629 Value *MaskIn = Ops[2]; in EmitX86BuiltinExpr()
2630 Ops.erase(&Ops[2]); in EmitX86BuiltinExpr()
2646 Value *Shufbit = Builder.CreateCall(CGM.getIntrinsic(ID), Ops); in EmitX86BuiltinExpr()
2700 unsigned CC = cast<llvm::ConstantInt>(Ops[2])->getZExtValue() & 0x1f; in EmitX86BuiltinExpr()
2789 cast<llvm::FixedVectorType>(Ops[0]->getType())->getNumElements(); in EmitX86BuiltinExpr()
2790 Ops[3] = getMaskVecValue(*this, Ops[3], NumElts); in EmitX86BuiltinExpr()
2791 Value *Cmp = Builder.CreateCall(Intr, Ops); in EmitX86BuiltinExpr()
2795 return Builder.CreateCall(Intr, Ops); in EmitX86BuiltinExpr()
2806 cast<llvm::FixedVectorType>(Ops[0]->getType())->getNumElements(); in EmitX86BuiltinExpr()
2809 Cmp = Builder.CreateFCmpS(Pred, Ops[0], Ops[1]); in EmitX86BuiltinExpr()
2811 Cmp = Builder.CreateFCmp(Pred, Ops[0], Ops[1]); in EmitX86BuiltinExpr()
2812 return EmitX86MaskedCompareResult(*this, Cmp, NumElts, Ops[3]); in EmitX86BuiltinExpr()
2859 return EmitX86CvtF16ToFloatExpr(*this, Ops, ConvertType(E->getType())); in EmitX86BuiltinExpr()
2864 Ops[2] = getMaskVecValue( in EmitX86BuiltinExpr()
2865 *this, Ops[2], in EmitX86BuiltinExpr()
2866 cast<llvm::FixedVectorType>(Ops[0]->getType())->getNumElements()); in EmitX86BuiltinExpr()
2868 return Builder.CreateCall(CGM.getIntrinsic(IID), Ops); in EmitX86BuiltinExpr()
2871 return Builder.CreateFPExt(Ops[0], Builder.getFloatTy()); in EmitX86BuiltinExpr()
2885 Value *Res = Builder.CreateCall(CGM.getIntrinsic(IID), Ops[0]); in EmitX86BuiltinExpr()
2886 return EmitX86Select(*this, Ops[2], Res, Ops[1]); in EmitX86BuiltinExpr()
2933 Value *LHS = Builder.CreateIntCast(Ops[0], Int64Ty, isSigned); in EmitX86BuiltinExpr()
2934 Value *RHS = Builder.CreateIntCast(Ops[1], Int64Ty, isSigned); in EmitX86BuiltinExpr()
2945 Value *LHS = Builder.CreateIntCast(Ops[0], Int128Ty, IsSigned); in EmitX86BuiltinExpr()
2946 Value *RHS = Builder.CreateIntCast(Ops[1], Int128Ty, IsSigned); in EmitX86BuiltinExpr()
2978 std::swap(Ops[0], Ops[1]); in EmitX86BuiltinExpr()
2979 Ops[2] = Builder.CreateZExt(Ops[2], Int64Ty); in EmitX86BuiltinExpr()
2980 return Builder.CreateCall(F, Ops); in EmitX86BuiltinExpr()
2997 return Builder.CreateMemSet(Ops[0], Ops[1], Ops[2], Align(1), true); in EmitX86BuiltinExpr()
3040 {Ops[0], Ops[1], Ops[2], Ops[5], Ops[6]}); in EmitX86BuiltinExpr()
3052 Builder.CreateDefaultAlignedStore(VecT0, Ops[3]); in EmitX86BuiltinExpr()
3058 Value *Store = Builder.CreateDefaultAlignedStore(VecT1, Ops[4]); in EmitX86BuiltinExpr()
3088 Ops[0], llvm::PointerType::get(getLLVMContext(), 257)); in EmitX86BuiltinExpr()
3100 Ops[0], llvm::PointerType::get(getLLVMContext(), 256)); in EmitX86BuiltinExpr()
3109 Value *Call = Builder.CreateCall(CGM.getIntrinsic(IID), {Ops[0], Ops[1]}); in EmitX86BuiltinExpr()
3113 Value *Ptr = Builder.CreateConstGEP1_32(Int8Ty, Ops[2], i * 16); in EmitX86BuiltinExpr()
3123 Builder.CreateCall(CGM.getIntrinsic(IID), {Ops[0], Ops[1], Ops[2]}); in EmitX86BuiltinExpr()
3127 Value *Ptr = Builder.CreateConstGEP1_32(Int8Ty, Ops[3], i * 16); in EmitX86BuiltinExpr()
3160 Value *Call = Builder.CreateCall(CGM.getIntrinsic(IID), {Ops[1], Ops[2]}); in EmitX86BuiltinExpr()
3173 Builder.CreateDefaultAlignedStore(Out, Ops[0]); in EmitX86BuiltinExpr()
3178 Builder.CreateDefaultAlignedStore(Zero, Ops[0]); in EmitX86BuiltinExpr()
3211 InOps[0] = Ops[2]; in EmitX86BuiltinExpr()
3213 Value *Ptr = Builder.CreateConstGEP1_32(Ty, Ops[1], i); in EmitX86BuiltinExpr()
3231 Value *Ptr = Builder.CreateConstGEP1_32(Extract->getType(), Ops[0], i); in EmitX86BuiltinExpr()
3240 Value *Ptr = Builder.CreateConstGEP1_32(Out->getType(), Ops[0], i); in EmitX86BuiltinExpr()
3255 Value *Call = Builder.CreateCall(CGM.getIntrinsic(IID), Ops); in EmitX86BuiltinExpr()
3256 return EmitX86Select(*this, Ops[3], Call, Ops[0]); in EmitX86BuiltinExpr()
3264 Value *Call = Builder.CreateCall(CGM.getIntrinsic(IID), Ops); in EmitX86BuiltinExpr()
3265 Value *And = Builder.CreateAnd(Ops[3], llvm::ConstantInt::get(Int8Ty, 1)); in EmitX86BuiltinExpr()
3266 return EmitX86Select(*this, And, Call, Ops[0]); in EmitX86BuiltinExpr()
3274 Value *Call = Builder.CreateCall(CGM.getIntrinsic(IID), Ops); in EmitX86BuiltinExpr()
3276 return Builder.CreateShuffleVector(Call, Ops[2], Mask); in EmitX86BuiltinExpr()
3280 CGM.getIntrinsic(Intrinsic::prefetch, Ops[0]->getType()), in EmitX86BuiltinExpr()
3281 {Ops[0], llvm::ConstantInt::get(Int32Ty, 0), Ops[1], in EmitX86BuiltinExpr()