Lines Matching refs:Builder
92 IRBuilder<> Builder(FPToI); in expandFPToI() local
104 Value *A0 = Builder.CreateFPToUI(FloatVal, Builder.getIntNTy(32)); in expandFPToI()
105 A1 = Builder.CreateZExt(A0, IntTy); in expandFPToI()
107 Value *A0 = Builder.CreateFPToSI(FloatVal, Builder.getIntNTy(32)); in expandFPToI()
108 A1 = Builder.CreateSExt(A0, IntTy); in expandFPToI()
123 Value *ImplicitBit = Builder.CreateShl( in expandFPToI()
124 Builder.getIntN(BitWidth, 1), Builder.getIntN(BitWidth, FPMantissaWidth)); in expandFPToI()
126 Builder.CreateSub(ImplicitBit, Builder.getIntN(BitWidth, 1)); in expandFPToI()
127 Value *NegOne = Builder.CreateSExt( in expandFPToI()
128 ConstantInt::getSigned(Builder.getInt32Ty(), -1), IntTy); in expandFPToI()
130 Builder.CreateShl(ConstantInt::getSigned(IntTy, 1), in expandFPToI()
133 BasicBlock *Entry = Builder.GetInsertBlock(); in expandFPToI()
137 Entry->splitBasicBlock(Builder.GetInsertPoint(), "fp-to-i-cleanup"); in expandFPToI()
139 BasicBlock::Create(Builder.getContext(), "fp-to-i-if-end", F, End); in expandFPToI()
141 BasicBlock::Create(Builder.getContext(), "fp-to-i-if-then5", F, End); in expandFPToI()
143 BasicBlock::Create(Builder.getContext(), "fp-to-i-if-end9", F, End); in expandFPToI()
145 BasicBlock::Create(Builder.getContext(), "fp-to-i-if-then12", F, End); in expandFPToI()
147 BasicBlock::Create(Builder.getContext(), "fp-to-i-if-else", F, End); in expandFPToI()
152 Builder.SetInsertPoint(Entry); in expandFPToI()
158 Builder.CreateFPExt(FloatVal, Type::getFP128Ty(Builder.getContext())); in expandFPToI()
160 Builder.CreateBitCast(FloatVal0, Builder.getIntNTy(FloatWidth)); in expandFPToI()
161 Value *ARep = Builder.CreateZExt(ARep0, FPToI->getType()); in expandFPToI()
162 Value *PosOrNeg = Builder.CreateICmpSGT( in expandFPToI()
163 ARep0, ConstantInt::getSigned(Builder.getIntNTy(FloatWidth), -1)); in expandFPToI()
164 Value *Sign = Builder.CreateSelect(PosOrNeg, ConstantInt::getSigned(IntTy, 1), in expandFPToI()
167 Builder.CreateLShr(ARep, Builder.getIntN(BitWidth, FPMantissaWidth)); in expandFPToI()
168 Value *And2 = Builder.CreateAnd( in expandFPToI()
169 And, Builder.getIntN(BitWidth, (1 << ExponentWidth) - 1)); in expandFPToI()
170 Value *Abs = Builder.CreateAnd(ARep, SignificandMask); in expandFPToI()
171 Value *Or = Builder.CreateOr(Abs, ImplicitBit); in expandFPToI()
173 Builder.CreateICmpULT(And2, Builder.getIntN(BitWidth, ExponentBias)); in expandFPToI()
174 Builder.CreateCondBr(Cmp, End, IfEnd); in expandFPToI()
177 Builder.SetInsertPoint(IfEnd); in expandFPToI()
178 Value *Add1 = Builder.CreateAdd( in expandFPToI()
181 Value *Cmp3 = Builder.CreateICmpULT( in expandFPToI()
183 Builder.CreateCondBr(Cmp3, IfThen5, IfEnd9); in expandFPToI()
186 Builder.SetInsertPoint(IfThen5); in expandFPToI()
187 Value *PosInf = Builder.CreateXor(NegOne, NegInf); in expandFPToI()
188 Value *Cond8 = Builder.CreateSelect(PosOrNeg, PosInf, NegInf); in expandFPToI()
189 Builder.CreateBr(End); in expandFPToI()
192 Builder.SetInsertPoint(IfEnd9); in expandFPToI()
193 Value *Cmp10 = Builder.CreateICmpULT( in expandFPToI()
194 And2, Builder.getIntN(BitWidth, ExponentBias + FPMantissaWidth)); in expandFPToI()
195 Builder.CreateCondBr(Cmp10, IfThen12, IfElse); in expandFPToI()
198 Builder.SetInsertPoint(IfThen12); in expandFPToI()
199 Value *Sub13 = Builder.CreateSub( in expandFPToI()
200 Builder.getIntN(BitWidth, ExponentBias + FPMantissaWidth), And2); in expandFPToI()
201 Value *Shr14 = Builder.CreateLShr(Or, Sub13); in expandFPToI()
202 Value *Mul = Builder.CreateMul(Shr14, Sign); in expandFPToI()
203 Builder.CreateBr(End); in expandFPToI()
206 Builder.SetInsertPoint(IfElse); in expandFPToI()
207 Value *Sub15 = Builder.CreateAdd( in expandFPToI()
210 Value *Shl = Builder.CreateShl(Or, Sub15); in expandFPToI()
211 Value *Mul16 = Builder.CreateMul(Shl, Sign); in expandFPToI()
212 Builder.CreateBr(End); in expandFPToI()
215 Builder.SetInsertPoint(End, End->begin()); in expandFPToI()
216 PHINode *Retval0 = Builder.CreatePHI(FPToI->getType(), 4); in expandFPToI()
221 Retval0->addIncoming(Builder.getIntN(BitWidth, 0), Entry); in expandFPToI()
311 IRBuilder<> Builder(IToFP); in expandIToFP() local
331 Builder.CreateShl(Builder.getIntN(BitWidth, 1), in expandIToFP()
332 Builder.getIntN(BitWidth, FPMantissaWidth + 3)); in expandIToFP()
334 BasicBlock *Entry = Builder.GetInsertBlock(); in expandIToFP()
338 Entry->splitBasicBlock(Builder.GetInsertPoint(), "itofp-return"); in expandIToFP()
340 BasicBlock::Create(Builder.getContext(), "itofp-if-end", F, End); in expandIToFP()
342 BasicBlock::Create(Builder.getContext(), "itofp-if-then4", F, End); in expandIToFP()
344 BasicBlock::Create(Builder.getContext(), "itofp-sw-bb", F, End); in expandIToFP()
346 BasicBlock::Create(Builder.getContext(), "itofp-sw-default", F, End); in expandIToFP()
348 BasicBlock::Create(Builder.getContext(), "itofp-sw-epilog", F, End); in expandIToFP()
350 BasicBlock::Create(Builder.getContext(), "itofp-if-then20", F, End); in expandIToFP()
352 BasicBlock::Create(Builder.getContext(), "itofp-if-else", F, End); in expandIToFP()
354 BasicBlock::Create(Builder.getContext(), "itofp-if-end26", F, End); in expandIToFP()
360 ConstantInt *True = Builder.getTrue(); in expandIToFP()
363 Builder.SetInsertPoint(Entry); in expandIToFP()
364 Value *Cmp = Builder.CreateICmpEQ(IntVal, ConstantInt::getSigned(IntTy, 0)); in expandIToFP()
365 Builder.CreateCondBr(Cmp, End, IfEnd); in expandIToFP()
368 Builder.SetInsertPoint(IfEnd); in expandIToFP()
370 Builder.CreateAShr(IntVal, Builder.getIntN(BitWidth, BitWidth - 1)); in expandIToFP()
371 Value *Xor = Builder.CreateXor(Shr, IntVal); in expandIToFP()
372 Value *Sub = Builder.CreateSub(Xor, Shr); in expandIToFP()
373 Value *Call = Builder.CreateCall(CTLZ, {IsSigned ? Sub : IntVal, True}); in expandIToFP()
374 Value *Cast = Builder.CreateTrunc(Call, Builder.getInt32Ty()); in expandIToFP()
376 Value *Sub1 = Builder.CreateSub(Builder.getIntN(BitWidthNew, BitWidth), in expandIToFP()
378 Value *Sub2 = Builder.CreateSub(Builder.getIntN(BitWidthNew, BitWidth - 1), in expandIToFP()
380 Value *Cmp3 = Builder.CreateICmpSGT( in expandIToFP()
381 Sub1, Builder.getIntN(BitWidthNew, FPMantissaWidth + 1)); in expandIToFP()
382 Builder.CreateCondBr(Cmp3, IfThen4, IfElse); in expandIToFP()
385 Builder.SetInsertPoint(IfThen4); in expandIToFP()
386 llvm::SwitchInst *SI = Builder.CreateSwitch(Sub1, SwDefault); in expandIToFP()
387 SI->addCase(Builder.getIntN(BitWidthNew, FPMantissaWidth + 2), SwBB); in expandIToFP()
388 SI->addCase(Builder.getIntN(BitWidthNew, FPMantissaWidth + 3), SwEpilog); in expandIToFP()
391 Builder.SetInsertPoint(SwBB); in expandIToFP()
393 Builder.CreateShl(IsSigned ? Sub : IntVal, Builder.getIntN(BitWidth, 1)); in expandIToFP()
394 Builder.CreateBr(SwEpilog); in expandIToFP()
397 Builder.SetInsertPoint(SwDefault); in expandIToFP()
398 Value *Sub5 = Builder.CreateSub( in expandIToFP()
399 Builder.getIntN(BitWidthNew, BitWidth - FPMantissaWidth - 3), in expandIToFP()
401 Value *ShProm = Builder.CreateZExt(Sub5, IntTy); in expandIToFP()
402 Value *Shr6 = Builder.CreateLShr(IsSigned ? Sub : IntVal, in expandIToFP()
405 Builder.CreateAdd(FloatWidth == 128 ? Call : Cast, in expandIToFP()
406 Builder.getIntN(BitWidthNew, FPMantissaWidth + 3)); in expandIToFP()
407 Value *ShProm9 = Builder.CreateZExt(Sub8, IntTy); in expandIToFP()
408 Value *Shr9 = Builder.CreateLShr(ConstantInt::getSigned(IntTy, -1), in expandIToFP()
410 Value *And = Builder.CreateAnd(Shr9, IsSigned ? Sub : IntVal); in expandIToFP()
411 Value *Cmp10 = Builder.CreateICmpNE(And, Builder.getIntN(BitWidth, 0)); in expandIToFP()
412 Value *Conv11 = Builder.CreateZExt(Cmp10, IntTy); in expandIToFP()
413 Value *Or = Builder.CreateOr(Shr6, Conv11); in expandIToFP()
414 Builder.CreateBr(SwEpilog); in expandIToFP()
417 Builder.SetInsertPoint(SwEpilog); in expandIToFP()
418 PHINode *AAddr0 = Builder.CreatePHI(IntTy, 3); in expandIToFP()
422 Value *A0 = Builder.CreateTrunc(AAddr0, Builder.getInt32Ty()); in expandIToFP()
423 Value *A1 = Builder.CreateLShr(A0, Builder.getIntN(32, 2)); in expandIToFP()
424 Value *A2 = Builder.CreateAnd(A1, Builder.getIntN(32, 1)); in expandIToFP()
425 Value *Conv16 = Builder.CreateZExt(A2, IntTy); in expandIToFP()
426 Value *Or17 = Builder.CreateOr(AAddr0, Conv16); in expandIToFP()
427 Value *Inc = Builder.CreateAdd(Or17, Builder.getIntN(BitWidth, 1)); in expandIToFP()
430 Shr18 = Builder.CreateAShr(Inc, Builder.getIntN(BitWidth, 2)); in expandIToFP()
432 Shr18 = Builder.CreateLShr(Inc, Builder.getIntN(BitWidth, 2)); in expandIToFP()
433 Value *A3 = Builder.CreateAnd(Inc, Temp1, "a3"); in expandIToFP()
434 Value *PosOrNeg = Builder.CreateICmpEQ(A3, Builder.getIntN(BitWidth, 0)); in expandIToFP()
435 Value *ExtractT60 = Builder.CreateTrunc(Shr18, Builder.getIntNTy(FloatWidth)); in expandIToFP()
436 Value *Extract63 = Builder.CreateLShr(Shr18, Builder.getIntN(BitWidth, 32)); in expandIToFP()
439 ExtractT64 = Builder.CreateTrunc(Sub2, Builder.getInt64Ty()); in expandIToFP()
441 ExtractT64 = Builder.CreateTrunc(Extract63, Builder.getInt32Ty()); in expandIToFP()
442 Builder.CreateCondBr(PosOrNeg, IfEnd26, IfThen20); in expandIToFP()
445 Builder.SetInsertPoint(IfThen20); in expandIToFP()
448 Shr21 = Builder.CreateAShr(Inc, Builder.getIntN(BitWidth, 3)); in expandIToFP()
450 Shr21 = Builder.CreateLShr(Inc, Builder.getIntN(BitWidth, 3)); in expandIToFP()
451 Value *ExtractT = Builder.CreateTrunc(Shr21, Builder.getIntNTy(FloatWidth)); in expandIToFP()
452 Value *Extract = Builder.CreateLShr(Shr21, Builder.getIntN(BitWidth, 32)); in expandIToFP()
455 ExtractT62 = Builder.CreateTrunc(Sub1, Builder.getIntNTy(64)); in expandIToFP()
457 ExtractT62 = Builder.CreateTrunc(Extract, Builder.getIntNTy(32)); in expandIToFP()
458 Builder.CreateBr(IfEnd26); in expandIToFP()
461 Builder.SetInsertPoint(IfElse); in expandIToFP()
462 Value *Sub24 = Builder.CreateAdd( in expandIToFP()
464 ConstantInt::getSigned(Builder.getIntNTy(BitWidthNew), in expandIToFP()
466 Value *ShProm25 = Builder.CreateZExt(Sub24, IntTy); in expandIToFP()
467 Value *Shl26 = Builder.CreateShl(IsSigned ? Sub : IntVal, in expandIToFP()
469 Value *ExtractT61 = Builder.CreateTrunc(Shl26, Builder.getIntNTy(FloatWidth)); in expandIToFP()
470 Value *Extract65 = Builder.CreateLShr(Shl26, Builder.getIntN(BitWidth, 32)); in expandIToFP()
473 ExtractT66 = Builder.CreateTrunc(Sub2, Builder.getIntNTy(64)); in expandIToFP()
475 ExtractT66 = Builder.CreateTrunc(Extract65, Builder.getInt32Ty()); in expandIToFP()
476 Builder.CreateBr(IfEnd26); in expandIToFP()
479 Builder.SetInsertPoint(IfEnd26); in expandIToFP()
480 PHINode *AAddr1Off0 = Builder.CreatePHI(Builder.getIntNTy(FloatWidth), 3); in expandIToFP()
487 Builder.CreatePHI(Builder.getIntNTy(FloatWidth > 80 ? 64 : 32), 3); in expandIToFP()
494 E0 = Builder.CreatePHI(Builder.getIntNTy(BitWidthNew), 3); in expandIToFP()
501 Value *Temp2 = Builder.CreateShl(Builder.getIntN(BitWidth, 1), in expandIToFP()
502 Builder.getIntN(BitWidth, 63)); in expandIToFP()
503 And29 = Builder.CreateAnd(Shr, Temp2, "and29"); in expandIToFP()
505 Value *Conv28 = Builder.CreateTrunc(Shr, Builder.getIntNTy(32)); in expandIToFP()
506 And29 = Builder.CreateAnd( in expandIToFP()
507 Conv28, ConstantInt::getSigned(Builder.getIntNTy(32), 0x80000000)); in expandIToFP()
514 Value *Add = Builder.CreateShl(AAddr1Off32, Builder.getIntN(64, TempMod)); in expandIToFP()
515 Shl30 = Builder.CreateAdd( in expandIToFP()
517 Builder.getIntN(64, ((1ull << (62ull - TempMod)) - 1ull) << TempMod)); in expandIToFP()
518 And34 = Builder.CreateZExt(Shl30, Builder.getIntNTy(128)); in expandIToFP()
520 Value *Add = Builder.CreateShl(E0, Builder.getIntN(32, TempMod)); in expandIToFP()
521 Shl30 = Builder.CreateAdd( in expandIToFP()
522 Add, Builder.getIntN(32, ((1 << (30 - TempMod)) - 1) << TempMod)); in expandIToFP()
523 And34 = Builder.CreateAnd(FloatWidth > 32 ? AAddr1Off32 : AAddr1Off0, in expandIToFP()
524 Builder.getIntN(32, (1 << TempMod) - 1)); in expandIToFP()
528 Value *And29Trunc = Builder.CreateTrunc(And29, Builder.getIntNTy(128)); in expandIToFP()
529 Value *Or31 = Builder.CreateOr(And29Trunc, And34); in expandIToFP()
530 Value *Or34 = Builder.CreateShl(Or31, Builder.getIntN(128, 64)); in expandIToFP()
531 Value *Temp3 = Builder.CreateShl(Builder.getIntN(128, 1), in expandIToFP()
532 Builder.getIntN(128, FPMantissaWidth)); in expandIToFP()
533 Value *Temp4 = Builder.CreateSub(Temp3, Builder.getIntN(128, 1)); in expandIToFP()
534 Value *A6 = Builder.CreateAnd(AAddr1Off0, Temp4); in expandIToFP()
535 Or35 = Builder.CreateOr(Or34, A6); in expandIToFP()
537 Value *Or31 = Builder.CreateOr(And34, And29); in expandIToFP()
538 Or35 = Builder.CreateOr(IsSigned ? Or31 : And34, Shl30); in expandIToFP()
542 Value *ZExt1 = Builder.CreateZExt(Or35, Builder.getIntNTy(FloatWidth)); in expandIToFP()
543 Value *Shl1 = Builder.CreateShl(ZExt1, Builder.getIntN(FloatWidth, 32)); in expandIToFP()
545 Builder.CreateAnd(AAddr1Off0, Builder.getIntN(FloatWidth, 0xFFFFFFFF)); in expandIToFP()
546 Value *Or1 = Builder.CreateOr(Shl1, And1); in expandIToFP()
547 A4 = Builder.CreateBitCast(Or1, IToFP->getType()); in expandIToFP()
550 Builder.CreateBitCast(Or35, Type::getFP128Ty(Builder.getContext())); in expandIToFP()
551 A4 = Builder.CreateFPTrunc(A40, IToFP->getType()); in expandIToFP()
556 Builder.CreateBitCast(Or35, Type::getFloatTy(Builder.getContext())); in expandIToFP()
557 A4 = Builder.CreateFPTrunc(A40, IToFP->getType()); in expandIToFP()
559 A4 = Builder.CreateBitCast(Or35, IToFP->getType()); in expandIToFP()
560 Builder.CreateBr(End); in expandIToFP()
563 Builder.SetInsertPoint(End, End->begin()); in expandIToFP()
564 PHINode *Retval0 = Builder.CreatePHI(IToFP->getType(), 2); in expandIToFP()
576 IRBuilder<> Builder(I); in scalarize() local
581 Value *Ext = Builder.CreateExtractElement(I->getOperand(0), Idx); in scalarize()
582 Value *Cast = Builder.CreateCast(cast<CastInst>(I)->getOpcode(), Ext, in scalarize()
584 Result = Builder.CreateInsertElement(Result, Cast, Idx); in scalarize()