Lines Matching full:den
243 Value *Num, Value *Den) const;
245 Value *Num, Value *Den,
250 Value *Num, Value *Den,
254 Value *Num, Value *Den, unsigned NumBits,
259 Value *Num, Value *Den) const;
262 Value *Num, Value *Den) const;
281 Value *optimizeWithRsq(IRBuilder<> &Builder, Value *Num, Value *Den,
285 Value *optimizeWithRcp(IRBuilder<> &Builder, Value *Num, Value *Den,
287 Value *optimizeWithFDivFast(IRBuilder<> &Builder, Value *Num, Value *Den,
290 Value *visitFDivElement(IRBuilder<> &Builder, Value *Num, Value *Den,
805 // 0x1p+126 < den <= 0x1p+127.
903 IRBuilder<> &Builder, Value *Num, Value *Den, const FastMathFlags DivFMF,
915 assert(Den->getType()->isFloatTy());
926 canIgnoreDenormalInput(Den, CtxI)) {
927 Value *Result = Builder.CreateUnaryIntrinsic(Intrinsic::amdgcn_rsq, Den);
932 return emitRsqIEEE1ULP(Builder, Den, IsNegative);
946 Value *Den, FastMathFlags FMF,
951 assert(Den->getType()->isFloatTy());
957 Value *Src = Den;
990 Value *Recip = Builder.CreateUnaryIntrinsic(Intrinsic::amdgcn_rcp, Den);
994 Value *Recip = emitRcpIEEE1ULP(Builder, Den, false);
1009 IRBuilder<> &Builder, Value *Num, Value *Den, float ReqdAccuracy) const {
1015 assert(Den->getType()->isFloatTy());
1030 return Builder.CreateIntrinsic(Intrinsic::amdgcn_fdiv_fast, {}, {Num, Den});
1034 IRBuilder<> &Builder, Value *Num, Value *Den, FastMathFlags DivFMF,
1044 Value *Rcp = optimizeWithRcp(Builder, Num, Den, DivFMF, FDivInst);
1052 Value *FDivFast = optimizeWithFDivFast(Builder, Num, Den, ReqdDivAccuracy);
1056 return emitFrexpDiv(Builder, Num, Den, DivFMF);
1092 Value *Den = FDiv.getOperand(1);
1095 auto *DenII = dyn_cast<IntrinsicInst>(Den);
1129 extractValues(Builder, DenVals, Den);
1194 Value *Den, unsigned AtLeast,
1201 unsigned RHSSignBits = ComputeNumSignBits(Den, DL, 0, AC, &I);
1216 Value *Den, bool IsDiv,
1221 int DivBits = getDivNumBits(I, Num, Den, AtLeast, IsSigned);
1224 return expandDivRem24Impl(Builder, I, Num, Den, DivBits, IsDiv, IsSigned);
1228 IRBuilder<> &Builder, BinaryOperator &I, Value *Num, Value *Den,
1232 Den = Builder.CreateTrunc(Den, I32Ty);
1240 JQ = Builder.CreateXor(Num, Den);
1253 Value *IB = Den;
1304 Value *Rem = Builder.CreateMul(Div, Den);
1331 Value *Den) const {
1332 if (Constant *C = dyn_cast<Constant>(Den)) {
1349 if (BinaryOperator *BinOpDen = dyn_cast<BinaryOperator>(Den)) {
1499 Value *Den) const {
1500 if (!ExpandDiv64InIR && divHasSpecialOptimization(I, Num, Den))
1508 int NumDivBits = getDivNumBits(I, Num, Den, 32, IsSigned);
1514 Narrowed = expandDivRem24Impl(Builder, I, Num, Den, NumDivBits,
1517 Narrowed = expandDivRem32(Builder, I, Num, Den);
1568 Value *Den = I.getOperand(1);
1577 Value *DenEltN = Builder.CreateExtractElement(Den, N);
1604 NewDiv = expandDivRem32(Builder, I, Num, Den);
1606 NewDiv = shrinkDivRem64(Builder, I, Num, Den);