Lines Matching full:builder
30 static Value *fitArgInto64Bits(IRBuilder<> &Builder, Value *Arg) { in fitArgInto64Bits() argument
31 auto Int64Ty = Builder.getInt64Ty(); in fitArgInto64Bits()
37 return Builder.CreateZExt(Arg, Int64Ty); in fitArgInto64Bits()
44 return Builder.CreateBitCast(Arg, Int64Ty); in fitArgInto64Bits()
48 return Builder.CreatePtrToInt(Arg, Int64Ty); in fitArgInto64Bits()
54 static Value *callPrintfBegin(IRBuilder<> &Builder, Value *Version) { in callPrintfBegin() argument
55 auto Int64Ty = Builder.getInt64Ty(); in callPrintfBegin()
56 auto M = Builder.GetInsertBlock()->getModule(); in callPrintfBegin()
58 return Builder.CreateCall(Fn, Version); in callPrintfBegin()
61 static Value *callAppendArgs(IRBuilder<> &Builder, Value *Desc, int NumArgs, in callAppendArgs() argument
65 auto Int64Ty = Builder.getInt64Ty(); in callAppendArgs()
66 auto Int32Ty = Builder.getInt32Ty(); in callAppendArgs()
67 auto M = Builder.GetInsertBlock()->getModule(); in callAppendArgs()
71 auto IsLastValue = Builder.getInt32(IsLast); in callAppendArgs()
72 auto NumArgsValue = Builder.getInt32(NumArgs); in callAppendArgs()
73 return Builder.CreateCall(Fn, {Desc, NumArgsValue, Arg0, Arg1, Arg2, Arg3, in callAppendArgs()
77 static Value *appendArg(IRBuilder<> &Builder, Value *Desc, Value *Arg, in appendArg() argument
79 auto Arg0 = fitArgInto64Bits(Builder, Arg); in appendArg()
80 auto Zero = Builder.getInt64(0); in appendArg()
81 return callAppendArgs(Builder, Desc, 1, Arg0, Zero, Zero, Zero, Zero, Zero, in appendArg()
87 static Value *getStrlenWithNull(IRBuilder<> &Builder, Value *Str) { in getStrlenWithNull() argument
88 auto *Prev = Builder.GetInsertBlock(); in getStrlenWithNull()
91 auto CharZero = Builder.getInt8(0); in getStrlenWithNull()
92 auto One = Builder.getInt64(1); in getStrlenWithNull()
93 auto Zero = Builder.getInt64(0); in getStrlenWithNull()
94 auto Int64Ty = Builder.getInt64Ty(); in getStrlenWithNull()
104 Join = Prev->splitBasicBlock(Builder.GetInsertPoint(), in getStrlenWithNull()
119 Builder.SetInsertPoint(Prev); in getStrlenWithNull()
121 Builder.CreateICmpEQ(Str, Constant::getNullValue(Str->getType())); in getStrlenWithNull()
125 Builder.SetInsertPoint(While); in getStrlenWithNull()
127 auto PtrPhi = Builder.CreatePHI(Str->getType(), 2); in getStrlenWithNull()
129 auto PtrNext = Builder.CreateGEP(Builder.getInt8Ty(), PtrPhi, One); in getStrlenWithNull()
133 auto Data = Builder.CreateLoad(Builder.getInt8Ty(), PtrPhi); in getStrlenWithNull()
134 auto Cmp = Builder.CreateICmpEQ(Data, CharZero); in getStrlenWithNull()
135 Builder.CreateCondBr(Cmp, WhileDone, While); in getStrlenWithNull()
138 Builder.SetInsertPoint(WhileDone, WhileDone->begin()); in getStrlenWithNull()
139 auto Begin = Builder.CreatePtrToInt(Str, Int64Ty); in getStrlenWithNull()
140 auto End = Builder.CreatePtrToInt(PtrPhi, Int64Ty); in getStrlenWithNull()
141 auto Len = Builder.CreateSub(End, Begin); in getStrlenWithNull()
142 Len = Builder.CreateAdd(Len, One); in getStrlenWithNull()
146 Builder.SetInsertPoint(Join, Join->begin()); in getStrlenWithNull()
147 auto LenPhi = Builder.CreatePHI(Len->getType(), 2); in getStrlenWithNull()
154 static Value *callAppendStringN(IRBuilder<> &Builder, Value *Desc, Value *Str, in callAppendStringN() argument
156 auto Int64Ty = Builder.getInt64Ty(); in callAppendStringN()
157 auto IsLastInt32 = Builder.getInt32(isLast); in callAppendStringN()
158 auto M = Builder.GetInsertBlock()->getModule(); in callAppendStringN()
162 return Builder.CreateCall(Fn, {Desc, Str, Length, IsLastInt32}); in callAppendStringN()
165 static Value *appendString(IRBuilder<> &Builder, Value *Desc, Value *Arg, in appendString() argument
167 auto Length = getStrlenWithNull(Builder, Arg); in appendString()
168 return callAppendStringN(Builder, Desc, Arg, Length, IsLast); in appendString()
171 static Value *processArg(IRBuilder<> &Builder, Value *Desc, Value *Arg, in processArg() argument
174 return appendString(Builder, Desc, Arg, IsLast); in processArg()
179 return appendArg(Builder, Desc, Arg, IsLast); in processArg()
223 IRBuilder<> &Builder, ArrayRef<Value *> Args, Value *Fmt, in callBufferedPrintfStart() argument
226 Module *M = Builder.GetInsertBlock()->getModule(); in callBufferedPrintfStart()
238 LenWithNull = getStrlenWithNull(Builder, Fmt); in callBufferedPrintfStart()
241 TempAdd = Builder.CreateAdd(LenWithNull, in callBufferedPrintfStart()
243 NonConstStrLen = Builder.CreateAnd( in callBufferedPrintfStart()
260 LenWithNull = getStrlenWithNull(Builder, Args[i]); in callBufferedPrintfStart()
263 TempAdd = Builder.CreateAdd( in callBufferedPrintfStart()
265 LenWithNullAligned = Builder.CreateAnd( in callBufferedPrintfStart()
269 auto Val = Builder.CreateAdd(LenWithNullAligned, NonConstStrLen, in callBufferedPrintfStart()
287 Value *SizeToReserve = ConstantInt::get(Builder.getInt64Ty(), BufSize, false); in callBufferedPrintfStart()
290 SizeToReserve = Builder.CreateAdd(NonConstStrLen, SizeToReserve); in callBufferedPrintfStart()
292 ArgSize = Builder.CreateTrunc(SizeToReserve, Builder.getInt32Ty()); in callBufferedPrintfStart()
297 Builder.getContext(), AttributeList::FunctionIndex, Attribute::NoUnwind); in callBufferedPrintfStart()
299 Type *Tys_alloc[1] = {Builder.getInt32Ty()}; in callBufferedPrintfStart()
301 Builder.getPtrTy(M->getDataLayout().getDefaultGlobalsAddressSpace()); in callBufferedPrintfStart()
306 return Builder.CreateCall(PrintfAllocFn, Alloc_args, "printf_alloc_fn"); in callBufferedPrintfStart()
310 static void processConstantStringArg(StringData *SD, IRBuilder<> &Builder, in processConstantStringArg() argument
344 Type *IntTy = Type::getIntNTy(Builder.getContext(), IntVal.getBitWidth()); in processConstantStringArg()
350 WhatToStore.push_back(ConstantInt::get(Builder.getInt32Ty(), 0)); in processConstantStringArg()
353 static Value *processNonStringArg(Value *Arg, IRBuilder<> &Builder) { in processNonStringArg() argument
354 const DataLayout &DL = Builder.GetInsertBlock()->getDataLayout(); in processNonStringArg()
359 return Builder.CreateZExt(Arg, Builder.getInt64Ty()); in processNonStringArg()
365 return Builder.CreateFPExt(Arg, Builder.getDoubleTy()); in processNonStringArg()
373 callBufferedPrintfArgPush(IRBuilder<> &Builder, ArrayRef<Value *> Args, in callBufferedPrintfArgPush() argument
377 Module *M = Builder.GetInsertBlock()->getModule(); in callBufferedPrintfArgPush()
385 processConstantStringArg(StrIt, Builder, WhatToStore); in callBufferedPrintfArgPush()
393 Builder.CreateMemCpy(PtrToStore, /*DstAlign*/ Align(1), Args[i], in callBufferedPrintfArgPush()
398 Builder.CreateInBoundsGEP(Builder.getInt8Ty(), PtrToStore, in callBufferedPrintfArgPush()
408 WhatToStore.push_back(processNonStringArg(Args[i], Builder)); in callBufferedPrintfArgPush()
412 StoreInst *StBuff = Builder.CreateStore(toStore, PtrToStore); in callBufferedPrintfArgPush()
416 PtrToStore = Builder.CreateConstInBoundsGEP1_32( in callBufferedPrintfArgPush()
417 Builder.getInt8Ty(), PtrToStore, in callBufferedPrintfArgPush()
426 Value *llvm::emitAMDGPUPrintfCall(IRBuilder<> &Builder, ArrayRef<Value *> Args, in emitAMDGPUPrintfCall() argument
440 Module *M = Builder.GetInsertBlock()->getModule(); in emitAMDGPUPrintfCall()
441 LLVMContext &Ctx = Builder.getContext(); in emitAMDGPUPrintfCall()
442 auto Int8Ty = Builder.getInt8Ty(); in emitAMDGPUPrintfCall()
443 auto Int32Ty = Builder.getInt32Ty(); in emitAMDGPUPrintfCall()
448 callBufferedPrintfStart(Builder, Args, Fmt, IsConstFmtStr, in emitAMDGPUPrintfCall()
456 auto *Cmp = cast<ICmpInst>(Builder.CreateICmpNE(Ptr, zeroIntPtr, "")); in emitAMDGPUPrintfCall()
459 Builder.GetInsertBlock()->getParent()); in emitAMDGPUPrintfCall()
461 Ctx, "argpush.block", Builder.GetInsertBlock()->getParent()); in emitAMDGPUPrintfCall()
463 BranchInst::Create(ArgPush, End, Cmp, Builder.GetInsertBlock()); in emitAMDGPUPrintfCall()
464 Builder.SetInsertPoint(ArgPush); in emitAMDGPUPrintfCall()
470 auto ConstantTwo = Builder.getInt32(2); in emitAMDGPUPrintfCall()
471 auto ControlDWord = Builder.CreateShl(ArgSize, ConstantTwo); in emitAMDGPUPrintfCall()
473 ControlDWord = Builder.CreateOr(ControlDWord, ConstantTwo); in emitAMDGPUPrintfCall()
475 Builder.CreateStore(ControlDWord, Ptr); in emitAMDGPUPrintfCall()
477 Ptr = Builder.CreateConstInBoundsGEP1_32(Int8Ty, Ptr, 4); in emitAMDGPUPrintfCall()
497 Builder.CreateStore(Builder.getInt64(Hash.low()), Ptr); in emitAMDGPUPrintfCall()
498 Ptr = Builder.CreateConstInBoundsGEP1_32(Int8Ty, Ptr, 8); in emitAMDGPUPrintfCall()
512 callBufferedPrintfArgPush(Builder, Args, Ptr, SpecIsCString, StringContents, in emitAMDGPUPrintfCall()
517 Builder.SetInsertPoint(End); in emitAMDGPUPrintfCall()
518 return Builder.CreateSExt(Builder.CreateNot(Cmp), Int32Ty, "printf_result"); in emitAMDGPUPrintfCall()
521 auto Desc = callPrintfBegin(Builder, Builder.getIntN(64, 0)); in emitAMDGPUPrintfCall()
522 Desc = appendString(Builder, Desc, Fmt, NumOps == 1); in emitAMDGPUPrintfCall()
530 Desc = processArg(Builder, Desc, Args[i], IsCString, IsLast); in emitAMDGPUPrintfCall()
533 return Builder.CreateTrunc(Desc, Builder.getInt32Ty()); in emitAMDGPUPrintfCall()