Lines Matching full:divisor
32 static Value *generateSignedRemainderCode(Value *Dividend, Value *Divisor, in generateSignedRemainderCode() argument
41 // ; %divisor_sgn = ashr i32 %divisor, 31 in generateSignedRemainderCode()
43 // ; %dvs_xor = xor i32 %divisor, %divisor_sgn in generateSignedRemainderCode()
46 // ; %urem = urem i32 %dividend, %divisor in generateSignedRemainderCode()
50 Divisor = Builder.CreateFreeze(Divisor); in generateSignedRemainderCode()
52 Value *DivisorSign = Builder.CreateAShr(Divisor, Shift); in generateSignedRemainderCode()
54 Value *DvsXor = Builder.CreateXor(Divisor, DivisorSign); 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()
80 // ; %product = mul i32 %divisor, %quotient in generatedUnsignedRemainderCode()
83 Divisor = Builder.CreateFreeze(Divisor); in generatedUnsignedRemainderCode()
84 Value *Quotient = Builder.CreateUDiv(Dividend, Divisor); in generatedUnsignedRemainderCode()
85 Value *Product = Builder.CreateMul(Divisor, Quotient); in generatedUnsignedRemainderCode()
99 static Value *generateSignedDivisionCode(Value *Dividend, Value *Divisor, in generateSignedDivisionCode() argument
110 // ; %tmp1 = ashr i32 %divisor, 31 in generateSignedDivisionCode()
113 // ; %tmp3 = xor i32 %tmp1, %divisor in generateSignedDivisionCode()
120 Divisor = Builder.CreateFreeze(Divisor); in generateSignedDivisionCode()
122 Value *Tmp1 = Builder.CreateAShr(Divisor, Shift); in generateSignedDivisionCode()
125 Value *Tmp3 = Builder.CreateXor(Tmp1, Divisor); in generateSignedDivisionCode()
141 static Value *generateUnsignedDivisionCode(Value *Dividend, Value *Divisor, in generateUnsignedDivisionCode() argument
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()
216 // ; %ret0_1 = icmp eq i32 %divisor, 0 in generateUnsignedDivisionCode()
219 // ; %tmp0 = tail call i32 @llvm.ctlz.i32(i32 %divisor, i1 true) in generateUnsignedDivisionCode()
229 Divisor = Builder.CreateFreeze(Divisor); in generateUnsignedDivisionCode()
231 Value *Ret0_1 = Builder.CreateICmpEQ(Divisor, Zero); in generateUnsignedDivisionCode()
234 Value *Tmp0 = Builder.CreateCall(CTLZ, {Divisor, True}); in generateUnsignedDivisionCode()
259 // ; %tmp4 = add i32 %divisor, -1 in generateUnsignedDivisionCode()
263 Value *Tmp4 = Builder.CreateAdd(Divisor, NegOne); in generateUnsignedDivisionCode()
279 // ; %tmp11 = and i32 %tmp10, %divisor in generateUnsignedDivisionCode()
297 Value *Tmp11 = Builder.CreateAnd(Tmp10, Divisor); in generateUnsignedDivisionCode()