Home | History | Annotate | Download | only in Utils

Lines Matching refs:Value

34 static Value *generateSignedRemainderCode(Value *Dividend, Value *Divisor,
58 Value *DividendSign = Builder.CreateAShr(Dividend, Shift);
59 Value *DivisorSign = Builder.CreateAShr(Divisor, Shift);
60 Value *DvdXor = Builder.CreateXor(Dividend, DividendSign);
61 Value *DvsXor = Builder.CreateXor(Divisor, DivisorSign);
62 Value *UDividend = Builder.CreateSub(DvdXor, DividendSign);
63 Value *UDivisor = Builder.CreateSub(DvsXor, DivisorSign);
64 Value *URem = Builder.CreateURem(UDividend, UDivisor);
65 Value *Xored = Builder.CreateXor(URem, DividendSign);
66 Value *SRem = Builder.CreateSub(Xored, DividendSign);
80 static Value *generatedUnsignedRemainderCode(Value *Dividend, Value *Divisor,
89 Value *Quotient = Builder.CreateUDiv(Dividend, Divisor);
90 Value *Product = Builder.CreateMul(Divisor, Quotient);
91 Value *Remainder = Builder.CreateSub(Dividend, Product);
104 static Value *generateSignedDivisionCode(Value *Dividend, Value *Divisor,
131 Value *Tmp = Builder.CreateAShr(Dividend, Shift);
132 Value *Tmp1 = Builder.CreateAShr(Divisor, Shift);
133 Value *Tmp2 = Builder.CreateXor(Tmp, Dividend);
134 Value *U_Dvnd = Builder.CreateSub(Tmp2, Tmp);
135 Value *Tmp3 = Builder.CreateXor(Tmp1, Divisor);
136 Value *U_Dvsr = Builder.CreateSub(Tmp3, Tmp1);
137 Value *Q_Sgn = Builder.CreateXor(Tmp1, Tmp);
138 Value *Q_Mag = Builder.CreateUDiv(U_Dvnd, U_Dvsr);
139 Value *Tmp4 = Builder.CreateXor(Q_Mag, Q_Sgn);
140 Value *Q = Builder.CreateSub(Tmp4, Q_Sgn);
151 static Value *generateUnsignedDivisionCode(Value *Dividend, Value *Divisor,
252 Value *Ret0_1 = Builder.CreateICmpEQ(Divisor, Zero);
253 Value *Ret0_2 = Builder.CreateICmpEQ(Dividend, Zero);
254 Value *Ret0_3 = Builder.CreateOr(Ret0_1, Ret0_2);
255 Value *Tmp0 = Builder.CreateCall(CTLZ, {Divisor, True});
256 Value *Tmp1 = Builder.CreateCall(CTLZ, {Dividend, True});
257 Value *SR = Builder.CreateSub(Tmp0, Tmp1);
258 Value *Ret0_4 = Builder.CreateICmpUGT(SR, MSB);
259 Value *Ret0 = Builder.CreateOr(Ret0_3, Ret0_4);
260 Value *RetDividend = Builder.CreateICmpEQ(SR, MSB);
261 Value *RetVal = Builder.CreateSelect(Ret0, Zero, Dividend);
262 Value *EarlyRet = Builder.CreateOr(Ret0, RetDividend);
272 Value *SR_1 = Builder.CreateAdd(SR, One);
273 Value *Tmp2 = Builder.CreateSub(MSB, SR);
274 Value *Q = Builder.CreateShl(Dividend, Tmp2);
275 Value *SkipLoop = Builder.CreateICmpEQ(SR_1, Zero);
283 Value *Tmp3 = Builder.CreateLShr(Dividend, SR_1);
284 Value *Tmp4 = Builder.CreateAdd(Divisor, NegOne);
310 Value *Tmp5 = Builder.CreateShl(R_1, One);
311 Value *Tmp6 = Builder.CreateLShr(Q_2, MSB);
312 Value *Tmp7 = Builder.CreateOr(Tmp5, Tmp6);
313 Value *Tmp8 = Builder.CreateShl(Q_2, One);
314 Value *Q_1 = Builder.CreateOr(Carry_1, Tmp8);
315 Value *Tmp9 = Builder.CreateSub(Tmp4, Tmp7);
316 Value *Tmp10 = Builder.CreateAShr(Tmp9, MSB);
317 Value *Carry = Builder.CreateAnd(Tmp10, One);
318 Value *Tmp11 = Builder.CreateAnd(Tmp10, Divisor);
319 Value *R = Builder.CreateSub(Tmp7, Tmp11);
320 Value *SR_2 = Builder.CreateAdd(SR_3, NegOne);
321 Value *Tmp12 = Builder.CreateICmpEQ(SR_2, Zero);
333 Value *Tmp13 = Builder.CreateShl(Q_3, One);
334 Value *Q_4 = Builder.CreateOr(Carry_2, Tmp13);
394 Value *Remainder = generateSignedRemainderCode(Rem->getOperand(0),
411 Value *Remainder = generatedUnsignedRemainderCode(Rem->getOperand(0),
455 Value *Quotient = generateSignedDivisionCode(Div->getOperand(0),
472 Value *Quotient = generateUnsignedDivisionCode(Div->getOperand(0),
510 Value *ExtDividend;
511 Value *ExtDivisor;
512 Value *ExtRem;
513 Value *Trunc;
560 Value *ExtDividend;
561 Value *ExtDivisor;
562 Value *ExtRem;
563 Value *Trunc;
611 Value *ExtDividend;
612 Value *ExtDivisor;
613 Value *ExtDiv;
614 Value *Trunc;
661 Value *ExtDividend;
662 Value *ExtDivisor;
663 Value *ExtDiv;
664 Value *Trunc;