Lines Matching full:dividend

27 /// remainder, which will have the sign of the dividend. Builder's insert point
32 static Value *generateSignedRemainderCode(Value *Dividend, Value *Divisor, in generateSignedRemainderCode() argument
34 unsigned BitWidth = Dividend->getType()->getIntegerBitWidth(); in generateSignedRemainderCode()
40 // ; %dividend_sgn = ashr i32 %dividend, 31 in generateSignedRemainderCode()
42 // ; %dvd_xor = xor i32 %dividend, %dividend_sgn in generateSignedRemainderCode()
46 // ; %urem = urem i32 %dividend, %divisor in generateSignedRemainderCode()
49 Dividend = Builder.CreateFreeze(Dividend); in generateSignedRemainderCode()
51 Value *DividendSign = Builder.CreateAShr(Dividend, Shift); in generateSignedRemainderCode()
53 Value *DvdXor = Builder.CreateXor(Dividend, DividendSign); in generateSignedRemainderCode()
73 static Value *generatedUnsignedRemainderCode(Value *Dividend, Value *Divisor, in generatedUnsignedRemainderCode() argument
75 // Remainder = Dividend - Quotient*Divisor in generatedUnsignedRemainderCode()
79 // ; %quotient = udiv i32 %dividend, %divisor in generatedUnsignedRemainderCode()
81 // ; %remainder = sub i32 %dividend, %product in generatedUnsignedRemainderCode()
82 Dividend = Builder.CreateFreeze(Dividend); in generatedUnsignedRemainderCode()
84 Value *Quotient = Builder.CreateUDiv(Dividend, Divisor); in generatedUnsignedRemainderCode()
86 Value *Remainder = Builder.CreateSub(Dividend, Product); in generatedUnsignedRemainderCode()
99 static Value *generateSignedDivisionCode(Value *Dividend, Value *Divisor, in generateSignedDivisionCode() argument
103 unsigned BitWidth = Dividend->getType()->getIntegerBitWidth(); in generateSignedDivisionCode()
109 // ; %tmp = ashr i32 %dividend, 31 in generateSignedDivisionCode()
111 // ; %tmp2 = xor i32 %tmp, %dividend in generateSignedDivisionCode()
119 Dividend = Builder.CreateFreeze(Dividend); in generateSignedDivisionCode()
121 Value *Tmp = Builder.CreateAShr(Dividend, Shift); in generateSignedDivisionCode()
123 Value *Tmp2 = Builder.CreateXor(Tmp, Dividend); in generateSignedDivisionCode()
141 static Value *generateUnsignedDivisionCode(Value *Dividend, Value *Divisor, in generateUnsignedDivisionCode() argument
148 IntegerType *DivTy = cast<IntegerType>(Dividend->getType()); in generateUnsignedDivisionCode()
213 // First off, check for special cases: dividend or divisor is zero, divisor in generateUnsignedDivisionCode()
214 // is greater than dividend, and divisor is 1. in generateUnsignedDivisionCode()
217 // ; %ret0_2 = icmp eq i32 %dividend, 0 in generateUnsignedDivisionCode()
220 // ; %tmp1 = tail call i32 @llvm.ctlz.i32(i32 %dividend, i1 true) in generateUnsignedDivisionCode()
225 // ; %retVal = select i1 %ret0, i32 0, i32 %dividend in generateUnsignedDivisionCode()
230 Dividend = Builder.CreateFreeze(Dividend); in generateUnsignedDivisionCode()
232 Value *Ret0_2 = Builder.CreateICmpEQ(Dividend, Zero); in generateUnsignedDivisionCode()
235 Value *Tmp1 = Builder.CreateCall(CTLZ, {Dividend, True}); in generateUnsignedDivisionCode()
240 Value *RetVal = Builder.CreateSelect(Ret0, Zero, Dividend); in generateUnsignedDivisionCode()
247 // ; %q = shl i32 %dividend, %tmp2 in generateUnsignedDivisionCode()
253 Value *Q = Builder.CreateShl(Dividend, Tmp2); in generateUnsignedDivisionCode()
258 // ; %tmp3 = lshr i32 %dividend, %sr_1 in generateUnsignedDivisionCode()
262 Value *Tmp3 = Builder.CreateLShr(Dividend, SR_1); in generateUnsignedDivisionCode()