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