1 /*========================== begin_copyright_notice ============================
2
3 Copyright (C) 2018-2021 Intel Corporation
4
5 SPDX-License-Identifier: MIT
6
7 ============================= end_copyright_notice ===========================*/
8
9 //
10 // @file gen_builder.hpp
11 //
12 // @brief auto-generated file
13 //
14 // DO NOT EDIT
15 //
16 // Generation Command Line:
17 // gen_llvm_ir_macros.py
18 // --input
19 // /cygdrive/d/cm-llvm/llvm/include/llvm/IR/IRBuilder.h
20 // --output-dir
21 // .
22 // --gen_h
23 // --gen_meta_h
24 // --gen_intrin_h
25 //
26 //============================================================================
27 // clang-format off
28 #pragma once
29
30 //============================================================================
31 // Auto-generated Builder IR Wrappers
32 //============================================================================
GLOBAL_STRING(StringRef Str,const Twine & Name="",unsigned AddressSpace=0)33 GlobalVariable* GLOBAL_STRING(StringRef Str, const Twine &Name = "", unsigned AddressSpace = 0)
34 {
35 return IRB()->CreateGlobalString(Str, Name, AddressSpace);
36 }
37
MEMSET(Value * Ptr,Value * Val,uint64_t Size,unsigned Align,bool isVolatile=false,MDNode * TBAATag=nullptr,MDNode * ScopeTag=nullptr,MDNode * NoAliasTag=nullptr)38 CallInst* MEMSET(Value *Ptr, Value *Val, uint64_t Size, unsigned Align, bool isVolatile = false, MDNode *TBAATag = nullptr, MDNode *ScopeTag = nullptr, MDNode *NoAliasTag = nullptr)
39 {
40 return IRB()->CreateMemSet(Ptr, Val, Size, IGCLLVM::getCorrectAlign(Align), isVolatile, TBAATag, ScopeTag, NoAliasTag);
41 }
42
MEMSET(Value * Ptr,Value * Val,Value * Size,unsigned Align,bool isVolatile=false,MDNode * TBAATag=nullptr,MDNode * ScopeTag=nullptr,MDNode * NoAliasTag=nullptr)43 CallInst* MEMSET(Value *Ptr, Value *Val, Value *Size, unsigned Align, bool isVolatile = false, MDNode *TBAATag = nullptr, MDNode *ScopeTag = nullptr, MDNode *NoAliasTag = nullptr)
44 {
45 return IRB()->CreateMemSet(Ptr, Val, Size, IGCLLVM::getCorrectAlign(Align), isVolatile, TBAATag, ScopeTag, NoAliasTag);
46 }
47
MEMCOPY(Value * Dst,Value * Src,uint64_t Size,unsigned Align,bool isVolatile=false,MDNode * TBAATag=nullptr,MDNode * TBAAStructTag=nullptr,MDNode * ScopeTag=nullptr,MDNode * NoAliasTag=nullptr)48 CallInst* MEMCOPY(Value *Dst, Value *Src, uint64_t Size, unsigned Align, bool isVolatile = false, MDNode *TBAATag = nullptr, MDNode *TBAAStructTag = nullptr, MDNode *ScopeTag = nullptr, MDNode *NoAliasTag = nullptr)
49 {
50 return IRB()->CreateMemCpy(Dst, IGCLLVM::getCorrectAlign(Align), Src, IGCLLVM::getCorrectAlign(Align), Size, isVolatile, TBAATag, TBAAStructTag, ScopeTag, NoAliasTag);
51 }
52
MEMCOPY(Value * Dst,Value * Src,Value * Size,unsigned Align,bool isVolatile=false,MDNode * TBAATag=nullptr,MDNode * TBAAStructTag=nullptr,MDNode * ScopeTag=nullptr,MDNode * NoAliasTag=nullptr)53 CallInst* MEMCOPY(Value *Dst, Value *Src, Value *Size, unsigned Align, bool isVolatile = false, MDNode *TBAATag = nullptr, MDNode *TBAAStructTag = nullptr, MDNode *ScopeTag = nullptr, MDNode *NoAliasTag = nullptr)
54 {
55 return IRB()->CreateMemCpy(Dst, IGCLLVM::getCorrectAlign(Align), Src, IGCLLVM::getCorrectAlign(Align), Size, isVolatile, TBAATag, TBAAStructTag, ScopeTag, NoAliasTag);
56 }
57
ELEMENT_UNORDERED_ATOMIC_MEM_CPY(Value * Dst,unsigned DstAlign,Value * Src,unsigned SrcAlign,uint64_t Size,uint32_t ElementSize,MDNode * TBAATag=nullptr,MDNode * TBAAStructTag=nullptr,MDNode * ScopeTag=nullptr,MDNode * NoAliasTag=nullptr)58 CallInst* ELEMENT_UNORDERED_ATOMIC_MEM_CPY(Value *Dst, unsigned DstAlign, Value *Src, unsigned SrcAlign, uint64_t Size, uint32_t ElementSize, MDNode *TBAATag = nullptr, MDNode *TBAAStructTag = nullptr, MDNode *ScopeTag = nullptr, MDNode *NoAliasTag = nullptr)
59 {
60 return IRB()->CreateElementUnorderedAtomicMemCpy(Dst, IGCLLVM::getAlignmentValueIfNeeded(IGCLLVM::getAlign(DstAlign)), Src, IGCLLVM::getAlignmentValueIfNeeded(IGCLLVM::getAlign(SrcAlign)), IRB()->getInt64(Size), ElementSize, TBAATag, TBAAStructTag, ScopeTag, NoAliasTag);
61 }
62
ELEMENT_UNORDERED_ATOMIC_MEM_CPY(Value * Dst,unsigned DstAlign,Value * Src,unsigned SrcAlign,Value * Size,uint32_t ElementSize,MDNode * TBAATag=nullptr,MDNode * TBAAStructTag=nullptr,MDNode * ScopeTag=nullptr,MDNode * NoAliasTag=nullptr)63 CallInst* ELEMENT_UNORDERED_ATOMIC_MEM_CPY(Value *Dst, unsigned DstAlign, Value *Src, unsigned SrcAlign, Value *Size, uint32_t ElementSize, MDNode *TBAATag = nullptr, MDNode *TBAAStructTag = nullptr, MDNode *ScopeTag = nullptr, MDNode *NoAliasTag = nullptr)
64 {
65 return IRB()->CreateElementUnorderedAtomicMemCpy(Dst, IGCLLVM::getAlignmentValueIfNeeded(IGCLLVM::getAlign(DstAlign)), Src, IGCLLVM::getAlignmentValueIfNeeded(IGCLLVM::getAlign(SrcAlign)), Size, ElementSize, TBAATag, TBAAStructTag, ScopeTag, NoAliasTag);
66 }
67
MEMMOVE(Value * Dst,Value * Src,uint64_t Size,unsigned Align,bool isVolatile=false,MDNode * TBAATag=nullptr,MDNode * ScopeTag=nullptr,MDNode * NoAliasTag=nullptr)68 CallInst* MEMMOVE(Value *Dst, Value *Src, uint64_t Size, unsigned Align, bool isVolatile = false, MDNode *TBAATag = nullptr, MDNode *ScopeTag = nullptr, MDNode *NoAliasTag = nullptr)
69 {
70 return IRB()->CreateMemMove(Dst, IGCLLVM::getCorrectAlign(Align), Src, IGCLLVM::getCorrectAlign(Align), Size, isVolatile, TBAATag, ScopeTag, NoAliasTag);
71 }
72
MEMMOVE(Value * Dst,Value * Src,Value * Size,unsigned Align,bool isVolatile=false,MDNode * TBAATag=nullptr,MDNode * ScopeTag=nullptr,MDNode * NoAliasTag=nullptr)73 CallInst* MEMMOVE(Value *Dst, Value *Src, Value *Size, unsigned Align, bool isVolatile = false, MDNode *TBAATag = nullptr, MDNode *ScopeTag = nullptr, MDNode *NoAliasTag = nullptr)
74 {
75 return IRB()->CreateMemMove(Dst, IGCLLVM::getCorrectAlign(Align), Src, IGCLLVM::getCorrectAlign(Align), Size, isVolatile, TBAATag, ScopeTag, NoAliasTag);
76 }
77
FADD_REDUCE(Value * Acc,Value * Src)78 CallInst* FADD_REDUCE(Value *Acc, Value *Src)
79 {
80 return IRB()->CreateFAddReduce(Acc, Src);
81 }
82
FMUL_REDUCE(Value * Acc,Value * Src)83 CallInst* FMUL_REDUCE(Value *Acc, Value *Src)
84 {
85 return IRB()->CreateFMulReduce(Acc, Src);
86 }
87
ADD_REDUCE(Value * Src)88 CallInst* ADD_REDUCE(Value *Src)
89 {
90 return IRB()->CreateAddReduce(Src);
91 }
92
MUL_REDUCE(Value * Src)93 CallInst* MUL_REDUCE(Value *Src)
94 {
95 return IRB()->CreateMulReduce(Src);
96 }
97
AND_REDUCE(Value * Src)98 CallInst* AND_REDUCE(Value *Src)
99 {
100 return IRB()->CreateAndReduce(Src);
101 }
102
OR_REDUCE(Value * Src)103 CallInst* OR_REDUCE(Value *Src)
104 {
105 return IRB()->CreateOrReduce(Src);
106 }
107
XOR_REDUCE(Value * Src)108 CallInst* XOR_REDUCE(Value *Src)
109 {
110 return IRB()->CreateXorReduce(Src);
111 }
112
INT_MAX_REDUCE(Value * Src,bool IsSigned=false)113 CallInst* INT_MAX_REDUCE(Value *Src, bool IsSigned = false)
114 {
115 return IRB()->CreateIntMaxReduce(Src, IsSigned);
116 }
117
INT_MIN_REDUCE(Value * Src,bool IsSigned=false)118 CallInst* INT_MIN_REDUCE(Value *Src, bool IsSigned = false)
119 {
120 return IRB()->CreateIntMinReduce(Src, IsSigned);
121 }
122
FP_MAX_REDUCE(Value * Src)123 CallInst* FP_MAX_REDUCE(Value *Src)
124 {
125 return IRB()->CreateFPMaxReduce(Src);
126 }
127
FP_MIN_REDUCE(Value * Src)128 CallInst* FP_MIN_REDUCE(Value *Src)
129 {
130 return IRB()->CreateFPMinReduce(Src);
131 }
132
LIFETIME_START(Value * Ptr,ConstantInt * Size=nullptr)133 CallInst* LIFETIME_START(Value *Ptr, ConstantInt *Size = nullptr)
134 {
135 return IRB()->CreateLifetimeStart(Ptr, Size);
136 }
137
LIFETIME_END(Value * Ptr,ConstantInt * Size=nullptr)138 CallInst* LIFETIME_END(Value *Ptr, ConstantInt *Size = nullptr)
139 {
140 return IRB()->CreateLifetimeEnd(Ptr, Size);
141 }
142
INVARIANT_START(Value * Ptr,ConstantInt * Size=nullptr)143 CallInst* INVARIANT_START(Value *Ptr, ConstantInt *Size = nullptr)
144 {
145 return IRB()->CreateInvariantStart(Ptr, Size);
146 }
147
MASKED_STORE(Value * Val,Value * Ptr,unsigned Align,Value * Mask)148 CallInst* MASKED_STORE(Value *Val, Value *Ptr, unsigned Align, Value *Mask)
149 {
150 return IRB()->CreateMaskedStore(Val, Ptr, IGCLLVM::getAlignmentValueIfNeeded(IGCLLVM::getAlign(Align)), Mask);
151 }
152
MASKED_GATHER(Value * Ptrs,unsigned Align,Value * Mask=nullptr,Value * PassThru=nullptr,const Twine & Name="")153 CallInst* MASKED_GATHER(Value *Ptrs, unsigned Align, Value *Mask = nullptr, Value *PassThru = nullptr, const Twine& Name = "")
154 {
155 return IRB()->CreateMaskedGather(Ptrs, IGCLLVM::getAlignmentValueIfNeeded(IGCLLVM::getAlign(Align)), Mask, PassThru, Name);
156 }
157
MASKED_SCATTER(Value * Val,Value * Ptrs,unsigned Align,Value * Mask=nullptr)158 CallInst* MASKED_SCATTER(Value *Val, Value *Ptrs, unsigned Align, Value *Mask = nullptr)
159 {
160 return IRB()->CreateMaskedScatter(Val, Ptrs, IGCLLVM::getAlignmentValueIfNeeded(IGCLLVM::getAlign(Align)), Mask);
161 }
162
ASSUMPTION(Value * Cond)163 CallInst* ASSUMPTION(Value *Cond)
164 {
165 return IRB()->CreateAssumption(Cond);
166 }
167
BINARY_INTRINSIC(Intrinsic::ID ID,Value * LHS,Value * RHS,const Twine & Name="")168 CallInst* BINARY_INTRINSIC(Intrinsic::ID ID, Value *LHS, Value *RHS, const Twine &Name = "")
169 {
170 return IRB()->CreateBinaryIntrinsic(ID, LHS, RHS, nullptr, Name);
171 }
172
MIN_NUM(Value * LHS,Value * RHS,const Twine & Name="")173 CallInst* MIN_NUM(Value *LHS, Value *RHS, const Twine &Name = "")
174 {
175 return IRB()->CreateMinNum(LHS, RHS, Name);
176 }
177
MAX_NUM(Value * LHS,Value * RHS,const Twine & Name="")178 CallInst* MAX_NUM(Value *LHS, Value *RHS, const Twine &Name = "")
179 {
180 return IRB()->CreateMaxNum(LHS, RHS, Name);
181 }
182
RET_VOID()183 ReturnInst* RET_VOID()
184 {
185 return IRB()->CreateRetVoid();
186 }
187
RET(Value * V)188 ReturnInst* RET(Value *V)
189 {
190 return IRB()->CreateRet(V);
191 }
192
AGGREGATE_RET(Value * const * retVals,unsigned N)193 ReturnInst* AGGREGATE_RET(Value *const *retVals, unsigned N)
194 {
195 return IRB()->CreateAggregateRet(retVals, N);
196 }
197
BR(BasicBlock * Dest)198 BranchInst* BR(BasicBlock *Dest)
199 {
200 return IRB()->CreateBr(Dest);
201 }
202
COND_BR(Value * Cond,BasicBlock * True,BasicBlock * False,MDNode * BranchWeights=nullptr,MDNode * Unpredictable=nullptr)203 BranchInst* COND_BR(Value *Cond, BasicBlock *True, BasicBlock *False, MDNode *BranchWeights = nullptr, MDNode *Unpredictable = nullptr)
204 {
205 return IRB()->CreateCondBr(Cond, True, False, BranchWeights, Unpredictable);
206 }
207
COND_BR(Value * Cond,BasicBlock * True,BasicBlock * False,Instruction * MDSrc)208 BranchInst* COND_BR(Value *Cond, BasicBlock *True, BasicBlock *False, Instruction *MDSrc)
209 {
210 return IRB()->CreateCondBr(Cond, True, False, MDSrc);
211 }
212
SWITCH(Value * V,BasicBlock * Dest,unsigned NumCases=10,MDNode * BranchWeights=nullptr,MDNode * Unpredictable=nullptr)213 SwitchInst* SWITCH(Value *V, BasicBlock *Dest, unsigned NumCases = 10, MDNode *BranchWeights = nullptr, MDNode *Unpredictable = nullptr)
214 {
215 return IRB()->CreateSwitch(V, Dest, NumCases, BranchWeights, Unpredictable);
216 }
217
INDIRECT_BR(Value * Addr,unsigned NumDests=10)218 IndirectBrInst* INDIRECT_BR(Value *Addr, unsigned NumDests = 10)
219 {
220 return IRB()->CreateIndirectBr(Addr, NumDests);
221 }
222
INVOKE(Value * Callee,BasicBlock * NormalDest,BasicBlock * UnwindDest,ArrayRef<Value * > Args=None,const Twine & Name="")223 InvokeInst* INVOKE(Value *Callee, BasicBlock *NormalDest, BasicBlock *UnwindDest, ArrayRef<Value *> Args = None, const Twine &Name = "")
224 {
225 #if LLVM_VERSION_MAJOR >= 11
226 auto *PTy = cast<PointerType>(Callee->getType());
227 auto *FTy = cast<FunctionType>(PTy->getElementType());
228 #endif
229 return IRB()->CreateInvoke(
230 #if LLVM_VERSION_MAJOR >= 11
231 FTy,
232 #endif
233 Callee, NormalDest, UnwindDest, Args, Name);
234 }
235
INVOKE(Value * Callee,BasicBlock * NormalDest,BasicBlock * UnwindDest,ArrayRef<Value * > Args,ArrayRef<OperandBundleDef> OpBundles,const Twine & Name="")236 InvokeInst* INVOKE(Value *Callee, BasicBlock *NormalDest, BasicBlock *UnwindDest, ArrayRef<Value *> Args, ArrayRef<OperandBundleDef> OpBundles, const Twine &Name = "")
237 {
238 #if LLVM_VERSION_MAJOR >= 11
239 auto *PTy = cast<PointerType>(Callee->getType());
240 auto *FTy = cast<FunctionType>(PTy->getElementType());
241 #endif
242 return IRB()->CreateInvoke(
243 #if LLVM_VERSION_MAJOR >= 11
244 FTy,
245 #endif
246 Callee, NormalDest, UnwindDest, Args, OpBundles, Name);
247 }
248
RESUME(Value * Exn)249 ResumeInst* RESUME(Value *Exn)
250 {
251 return IRB()->CreateResume(Exn);
252 }
253
CLEANUP_RET(CleanupPadInst * CleanupPad,BasicBlock * UnwindBB=nullptr)254 CleanupReturnInst* CLEANUP_RET(CleanupPadInst *CleanupPad, BasicBlock *UnwindBB = nullptr)
255 {
256 return IRB()->CreateCleanupRet(CleanupPad, UnwindBB);
257 }
258
CATCH_SWITCH(Value * ParentPad,BasicBlock * UnwindBB,unsigned NumHandlers,const Twine & Name="")259 CatchSwitchInst* CATCH_SWITCH(Value *ParentPad, BasicBlock *UnwindBB, unsigned NumHandlers, const Twine &Name = "")
260 {
261 return IRB()->CreateCatchSwitch(ParentPad, UnwindBB, NumHandlers, Name);
262 }
263
CATCH_PAD(Value * ParentPad,ArrayRef<Value * > Args,const Twine & Name="")264 CatchPadInst* CATCH_PAD(Value *ParentPad, ArrayRef<Value *> Args, const Twine &Name = "")
265 {
266 return IRB()->CreateCatchPad(ParentPad, Args, Name);
267 }
268
CLEANUP_PAD(Value * ParentPad,ArrayRef<Value * > Args=None,const Twine & Name="")269 CleanupPadInst* CLEANUP_PAD(Value *ParentPad, ArrayRef<Value *> Args = None, const Twine &Name = "")
270 {
271 return IRB()->CreateCleanupPad(ParentPad, Args, Name);
272 }
273
CATCH_RET(CatchPadInst * CatchPad,BasicBlock * BB)274 CatchReturnInst* CATCH_RET(CatchPadInst *CatchPad, BasicBlock *BB)
275 {
276 return IRB()->CreateCatchRet(CatchPad, BB);
277 }
278
UNREACHABLE()279 UnreachableInst* UNREACHABLE()
280 {
281 return IRB()->CreateUnreachable();
282 }
283
ADD(Value * LHS,Value * RHS,const Twine & Name="",bool HasNUW=false,bool HasNSW=false)284 Value* ADD(Value *LHS, Value *RHS, const Twine &Name = "", bool HasNUW = false, bool HasNSW = false)
285 {
286 return IRB()->CreateAdd(LHS, RHS, Name, HasNUW, HasNSW);
287 }
288
NSW_ADD(Value * LHS,Value * RHS,const Twine & Name="")289 Value* NSW_ADD(Value *LHS, Value *RHS, const Twine &Name = "")
290 {
291 return IRB()->CreateNSWAdd(LHS, RHS, Name);
292 }
293
NUW_ADD(Value * LHS,Value * RHS,const Twine & Name="")294 Value* NUW_ADD(Value *LHS, Value *RHS, const Twine &Name = "")
295 {
296 return IRB()->CreateNUWAdd(LHS, RHS, Name);
297 }
298
FADD(Value * LHS,Value * RHS,const Twine & Name="",MDNode * FPMathTag=nullptr)299 Value* FADD(Value *LHS, Value *RHS, const Twine &Name = "", MDNode *FPMathTag = nullptr)
300 {
301 return IRB()->CreateFAdd(LHS, RHS, Name, FPMathTag);
302 }
303
SUB(Value * LHS,Value * RHS,const Twine & Name="",bool HasNUW=false,bool HasNSW=false)304 Value* SUB(Value *LHS, Value *RHS, const Twine &Name = "", bool HasNUW = false, bool HasNSW = false)
305 {
306 return IRB()->CreateSub(LHS, RHS, Name, HasNUW, HasNSW);
307 }
308
NSW_SUB(Value * LHS,Value * RHS,const Twine & Name="")309 Value* NSW_SUB(Value *LHS, Value *RHS, const Twine &Name = "")
310 {
311 return IRB()->CreateNSWSub(LHS, RHS, Name);
312 }
313
NUW_SUB(Value * LHS,Value * RHS,const Twine & Name="")314 Value* NUW_SUB(Value *LHS, Value *RHS, const Twine &Name = "")
315 {
316 return IRB()->CreateNUWSub(LHS, RHS, Name);
317 }
318
FSUB(Value * LHS,Value * RHS,const Twine & Name="",MDNode * FPMathTag=nullptr)319 Value* FSUB(Value *LHS, Value *RHS, const Twine &Name = "", MDNode *FPMathTag = nullptr)
320 {
321 return IRB()->CreateFSub(LHS, RHS, Name, FPMathTag);
322 }
323
MUL(Value * LHS,Value * RHS,const Twine & Name="",bool HasNUW=false,bool HasNSW=false)324 Value* MUL(Value *LHS, Value *RHS, const Twine &Name = "", bool HasNUW = false, bool HasNSW = false)
325 {
326 return IRB()->CreateMul(LHS, RHS, Name, HasNUW, HasNSW);
327 }
328
NSW_MUL(Value * LHS,Value * RHS,const Twine & Name="")329 Value* NSW_MUL(Value *LHS, Value *RHS, const Twine &Name = "")
330 {
331 return IRB()->CreateNSWMul(LHS, RHS, Name);
332 }
333
NUW_MUL(Value * LHS,Value * RHS,const Twine & Name="")334 Value* NUW_MUL(Value *LHS, Value *RHS, const Twine &Name = "")
335 {
336 return IRB()->CreateNUWMul(LHS, RHS, Name);
337 }
338
FMUL(Value * LHS,Value * RHS,const Twine & Name="",MDNode * FPMathTag=nullptr)339 Value* FMUL(Value *LHS, Value *RHS, const Twine &Name = "", MDNode *FPMathTag = nullptr)
340 {
341 return IRB()->CreateFMul(LHS, RHS, Name, FPMathTag);
342 }
343
UDIV(Value * LHS,Value * RHS,const Twine & Name="",bool isExact=false)344 Value* UDIV(Value *LHS, Value *RHS, const Twine &Name = "", bool isExact = false)
345 {
346 return IRB()->CreateUDiv(LHS, RHS, Name, isExact);
347 }
348
EXACT_U_DIV(Value * LHS,Value * RHS,const Twine & Name="")349 Value* EXACT_U_DIV(Value *LHS, Value *RHS, const Twine &Name = "")
350 {
351 return IRB()->CreateExactUDiv(LHS, RHS, Name);
352 }
353
SDIV(Value * LHS,Value * RHS,const Twine & Name="",bool isExact=false)354 Value* SDIV(Value *LHS, Value *RHS, const Twine &Name = "", bool isExact = false)
355 {
356 return IRB()->CreateSDiv(LHS, RHS, Name, isExact);
357 }
358
EXACT_S_DIV(Value * LHS,Value * RHS,const Twine & Name="")359 Value* EXACT_S_DIV(Value *LHS, Value *RHS, const Twine &Name = "")
360 {
361 return IRB()->CreateExactSDiv(LHS, RHS, Name);
362 }
363
FDIV(Value * LHS,Value * RHS,const Twine & Name="",MDNode * FPMathTag=nullptr)364 Value* FDIV(Value *LHS, Value *RHS, const Twine &Name = "", MDNode *FPMathTag = nullptr)
365 {
366 return IRB()->CreateFDiv(LHS, RHS, Name, FPMathTag);
367 }
368
UREM(Value * LHS,Value * RHS,const Twine & Name="")369 Value* UREM(Value *LHS, Value *RHS, const Twine &Name = "")
370 {
371 return IRB()->CreateURem(LHS, RHS, Name);
372 }
373
SREM(Value * LHS,Value * RHS,const Twine & Name="")374 Value* SREM(Value *LHS, Value *RHS, const Twine &Name = "")
375 {
376 return IRB()->CreateSRem(LHS, RHS, Name);
377 }
378
FREM(Value * LHS,Value * RHS,const Twine & Name="",MDNode * FPMathTag=nullptr)379 Value* FREM(Value *LHS, Value *RHS, const Twine &Name = "", MDNode *FPMathTag = nullptr)
380 {
381 return IRB()->CreateFRem(LHS, RHS, Name, FPMathTag);
382 }
383
SHL(Value * LHS,Value * RHS,const Twine & Name="",bool HasNUW=false,bool HasNSW=false)384 Value* SHL(Value *LHS, Value *RHS, const Twine &Name = "", bool HasNUW = false, bool HasNSW = false)
385 {
386 return IRB()->CreateShl(LHS, RHS, Name, HasNUW, HasNSW);
387 }
388
SHL(Value * LHS,const APInt & RHS,const Twine & Name="",bool HasNUW=false,bool HasNSW=false)389 Value* SHL(Value *LHS, const APInt &RHS, const Twine &Name = "", bool HasNUW = false, bool HasNSW = false)
390 {
391 return IRB()->CreateShl(LHS, RHS, Name, HasNUW, HasNSW);
392 }
393
SHL(Value * LHS,uint64_t RHS,const Twine & Name="",bool HasNUW=false,bool HasNSW=false)394 Value* SHL(Value *LHS, uint64_t RHS, const Twine &Name = "", bool HasNUW = false, bool HasNSW = false)
395 {
396 return IRB()->CreateShl(LHS, RHS, Name, HasNUW, HasNSW);
397 }
398
LSHR(Value * LHS,Value * RHS,const Twine & Name="",bool isExact=false)399 Value* LSHR(Value *LHS, Value *RHS, const Twine &Name = "", bool isExact = false)
400 {
401 return IRB()->CreateLShr(LHS, RHS, Name, isExact);
402 }
403
LSHR(Value * LHS,const APInt & RHS,const Twine & Name="",bool isExact=false)404 Value* LSHR(Value *LHS, const APInt &RHS, const Twine &Name = "", bool isExact = false)
405 {
406 return IRB()->CreateLShr(LHS, RHS, Name, isExact);
407 }
408
LSHR(Value * LHS,uint64_t RHS,const Twine & Name="",bool isExact=false)409 Value* LSHR(Value *LHS, uint64_t RHS, const Twine &Name = "", bool isExact = false)
410 {
411 return IRB()->CreateLShr(LHS, RHS, Name, isExact);
412 }
413
ASHR(Value * LHS,Value * RHS,const Twine & Name="",bool isExact=false)414 Value* ASHR(Value *LHS, Value *RHS, const Twine &Name = "", bool isExact = false)
415 {
416 return IRB()->CreateAShr(LHS, RHS, Name, isExact);
417 }
418
ASHR(Value * LHS,const APInt & RHS,const Twine & Name="",bool isExact=false)419 Value* ASHR(Value *LHS, const APInt &RHS, const Twine &Name = "", bool isExact = false)
420 {
421 return IRB()->CreateAShr(LHS, RHS, Name, isExact);
422 }
423
ASHR(Value * LHS,uint64_t RHS,const Twine & Name="",bool isExact=false)424 Value* ASHR(Value *LHS, uint64_t RHS, const Twine &Name = "", bool isExact = false)
425 {
426 return IRB()->CreateAShr(LHS, RHS, Name, isExact);
427 }
428
AND(Value * LHS,Value * RHS,const Twine & Name="")429 Value* AND(Value *LHS, Value *RHS, const Twine &Name = "")
430 {
431 return IRB()->CreateAnd(LHS, RHS, Name);
432 }
433
AND(Value * LHS,const APInt & RHS,const Twine & Name="")434 Value* AND(Value *LHS, const APInt &RHS, const Twine &Name = "")
435 {
436 return IRB()->CreateAnd(LHS, RHS, Name);
437 }
438
AND(Value * LHS,uint64_t RHS,const Twine & Name="")439 Value* AND(Value *LHS, uint64_t RHS, const Twine &Name = "")
440 {
441 return IRB()->CreateAnd(LHS, RHS, Name);
442 }
443
OR(Value * LHS,Value * RHS,const Twine & Name="")444 Value* OR(Value *LHS, Value *RHS, const Twine &Name = "")
445 {
446 return IRB()->CreateOr(LHS, RHS, Name);
447 }
448
OR(Value * LHS,const APInt & RHS,const Twine & Name="")449 Value* OR(Value *LHS, const APInt &RHS, const Twine &Name = "")
450 {
451 return IRB()->CreateOr(LHS, RHS, Name);
452 }
453
OR(Value * LHS,uint64_t RHS,const Twine & Name="")454 Value* OR(Value *LHS, uint64_t RHS, const Twine &Name = "")
455 {
456 return IRB()->CreateOr(LHS, RHS, Name);
457 }
458
XOR(Value * LHS,Value * RHS,const Twine & Name="")459 Value* XOR(Value *LHS, Value *RHS, const Twine &Name = "")
460 {
461 return IRB()->CreateXor(LHS, RHS, Name);
462 }
463
XOR(Value * LHS,const APInt & RHS,const Twine & Name="")464 Value* XOR(Value *LHS, const APInt &RHS, const Twine &Name = "")
465 {
466 return IRB()->CreateXor(LHS, RHS, Name);
467 }
468
XOR(Value * LHS,uint64_t RHS,const Twine & Name="")469 Value* XOR(Value *LHS, uint64_t RHS, const Twine &Name = "")
470 {
471 return IRB()->CreateXor(LHS, RHS, Name);
472 }
473
BINOP(Instruction::BinaryOps Opc,Value * LHS,Value * RHS,const Twine & Name="",MDNode * FPMathTag=nullptr)474 Value* BINOP(Instruction::BinaryOps Opc, Value *LHS, Value *RHS, const Twine &Name = "", MDNode *FPMathTag = nullptr)
475 {
476 return IRB()->CreateBinOp(Opc, LHS, RHS, Name, FPMathTag);
477 }
478
NEG(Value * V,const Twine & Name="",bool HasNUW=false,bool HasNSW=false)479 Value* NEG(Value *V, const Twine &Name = "", bool HasNUW = false, bool HasNSW = false)
480 {
481 return IRB()->CreateNeg(V, Name, HasNUW, HasNSW);
482 }
483
NSW_NEG(Value * V,const Twine & Name="")484 Value* NSW_NEG(Value *V, const Twine &Name = "")
485 {
486 return IRB()->CreateNSWNeg(V, Name);
487 }
488
NUW_NEG(Value * V,const Twine & Name="")489 Value* NUW_NEG(Value *V, const Twine &Name = "")
490 {
491 return IRB()->CreateNUWNeg(V, Name);
492 }
493
FNEG(Value * V,const Twine & Name="",MDNode * FPMathTag=nullptr)494 Value* FNEG(Value *V, const Twine &Name = "", MDNode *FPMathTag = nullptr)
495 {
496 return IRB()->CreateFNeg(V, Name, FPMathTag);
497 }
498
NOT(Value * V,const Twine & Name="")499 Value* NOT(Value *V, const Twine &Name = "")
500 {
501 return IRB()->CreateNot(V, Name);
502 }
503
ALLOCA(Type * Ty,unsigned AddrSpace,Value * ArraySize=nullptr,const Twine & Name="")504 AllocaInst* ALLOCA(Type *Ty, unsigned AddrSpace, Value *ArraySize = nullptr, const Twine &Name = "")
505 {
506 return IRB()->CreateAlloca(Ty, ArraySize, Name, AddrSpace /* IGCLLVM wrapper interface */);
507 }
508
ALLOCA(Type * Ty,Value * ArraySize=nullptr,const Twine & Name="")509 AllocaInst* ALLOCA(Type *Ty, Value *ArraySize = nullptr, const Twine &Name = "")
510 {
511 return IRB()->CreateAlloca(Ty, ArraySize, Name);
512 }
513
STORE(Value * Val,Value * Ptr,bool isVolatile=false)514 StoreInst* STORE(Value *Val, Value *Ptr, bool isVolatile = false)
515 {
516 return IRB()->CreateStore(Val, Ptr, isVolatile);
517 }
518
ALIGNED_LOAD(Value * Ptr,IGCLLVM::Align Align,const char * Name)519 inline LoadInst* ALIGNED_LOAD(Value *Ptr, IGCLLVM::Align Align, const char *Name)
520 {
521 return IRB()->CreateAlignedLoad(Ptr, Align, Name);
522 }
523
ALIGNED_LOAD(Value * Ptr,IGCLLVM::Align Align,const Twine & Name="")524 inline LoadInst* ALIGNED_LOAD(Value *Ptr, IGCLLVM::Align Align, const Twine &Name = "")
525 {
526 return IRB()->CreateAlignedLoad(Ptr, Align, Name);
527 }
528
ALIGNED_LOAD(Value * Ptr,IGCLLVM::Align Align,bool isVolatile,const Twine & Name="")529 inline LoadInst* ALIGNED_LOAD(Value *Ptr, IGCLLVM::Align Align, bool isVolatile, const Twine &Name = "")
530 {
531 return IRB()->CreateAlignedLoad(Ptr, Align, isVolatile, Name);
532 }
533
ALIGNED_STORE(Value * Val,Value * Ptr,IGCLLVM::Align Align,bool isVolatile=false)534 inline StoreInst* ALIGNED_STORE(Value *Val, Value *Ptr, IGCLLVM::Align Align, bool isVolatile = false)
535 {
536 return IRB()->CreateAlignedStore(Val, Ptr, Align, isVolatile);
537 }
538
FENCE(AtomicOrdering Ordering,SyncScope::ID SSID=SyncScope::System,const Twine & Name="")539 FenceInst* FENCE(AtomicOrdering Ordering, SyncScope::ID SSID = SyncScope::System, const Twine &Name = "")
540 {
541 return IRB()->CreateFence(Ordering, SSID, Name);
542 }
543
ATOMIC_CMP_XCHG(Value * Ptr,Value * Cmp,Value * New,AtomicOrdering SuccessOrdering,AtomicOrdering FailureOrdering,SyncScope::ID SSID=SyncScope::System)544 AtomicCmpXchgInst* ATOMIC_CMP_XCHG(Value *Ptr, Value *Cmp, Value *New, AtomicOrdering SuccessOrdering, AtomicOrdering FailureOrdering, SyncScope::ID SSID = SyncScope::System)
545 {
546 return IRB()->CreateAtomicCmpXchg(Ptr, Cmp, New, SuccessOrdering, FailureOrdering, SSID);
547 }
548
ATOMIC_RMW(AtomicRMWInst::BinOp Op,Value * Ptr,Value * Val,AtomicOrdering Ordering,SyncScope::ID SSID=SyncScope::System)549 AtomicRMWInst* ATOMIC_RMW(AtomicRMWInst::BinOp Op, Value *Ptr, Value *Val, AtomicOrdering Ordering, SyncScope::ID SSID = SyncScope::System)
550 {
551 return IRB()->CreateAtomicRMW(Op, Ptr, Val, Ordering, SSID);
552 }
553
IN_BOUNDS_GEP(Value * Ptr,ArrayRef<Value * > IdxList,const Twine & Name="")554 Value* IN_BOUNDS_GEP(Value *Ptr, ArrayRef<Value *> IdxList, const Twine &Name = "")
555 {
556 return IRB()->CreateInBoundsGEP(Ptr, IdxList, Name);
557 }
558
IN_BOUNDS_GEP(Type * Ty,Value * Ptr,ArrayRef<Value * > IdxList,const Twine & Name="")559 Value* IN_BOUNDS_GEP(Type *Ty, Value *Ptr, ArrayRef<Value *> IdxList, const Twine &Name = "")
560 {
561 return IRB()->CreateInBoundsGEP(Ty, Ptr, IdxList, Name);
562 }
563
IN_BOUNDS_GEP(Type * Ty,Value * Ptr,Value * Idx,const Twine & Name="")564 Value* IN_BOUNDS_GEP(Type *Ty, Value *Ptr, Value *Idx, const Twine &Name = "")
565 {
566 return IRB()->CreateInBoundsGEP(Ty, Ptr, Idx, Name);
567 }
568
CONST_GEP1_32(Type * Ty,Value * Ptr,unsigned Idx0,const Twine & Name="")569 Value* CONST_GEP1_32(Type *Ty, Value *Ptr, unsigned Idx0, const Twine &Name = "")
570 {
571 return IRB()->CreateConstGEP1_32(Ty, Ptr, Idx0, Name);
572 }
573
CONST_IN_BOUNDS_GEP1_32(Type * Ty,Value * Ptr,unsigned Idx0,const Twine & Name="")574 Value* CONST_IN_BOUNDS_GEP1_32(Type *Ty, Value *Ptr, unsigned Idx0, const Twine &Name = "")
575 {
576 return IRB()->CreateConstInBoundsGEP1_32(Ty, Ptr, Idx0, Name);
577 }
578
CONST_GEP2_32(Type * Ty,Value * Ptr,unsigned Idx0,unsigned Idx1,const Twine & Name="")579 Value* CONST_GEP2_32(Type *Ty, Value *Ptr, unsigned Idx0, unsigned Idx1, const Twine &Name = "")
580 {
581 return IRB()->CreateConstGEP2_32(Ty, Ptr, Idx0, Idx1, Name);
582 }
583
CONST_IN_BOUNDS_GEP2_32(Type * Ty,Value * Ptr,unsigned Idx0,unsigned Idx1,const Twine & Name="")584 Value* CONST_IN_BOUNDS_GEP2_32(Type *Ty, Value *Ptr, unsigned Idx0, unsigned Idx1, const Twine &Name = "")
585 {
586 return IRB()->CreateConstInBoundsGEP2_32(Ty, Ptr, Idx0, Idx1, Name);
587 }
588
CONST_GEP1_64(Type * Ty,Value * Ptr,uint64_t Idx0,const Twine & Name="")589 Value* CONST_GEP1_64(Type *Ty, Value *Ptr, uint64_t Idx0, const Twine &Name = "")
590 {
591 return IRB()->CreateConstGEP1_64(Ty, Ptr, Idx0, Name);
592 }
593
CONST_IN_BOUNDS_GEP1_64(Type * Ty,Value * Ptr,uint64_t Idx0,const Twine & Name="")594 Value* CONST_IN_BOUNDS_GEP1_64(Type *Ty, Value *Ptr, uint64_t Idx0, const Twine &Name = "")
595 {
596 return IRB()->CreateConstInBoundsGEP1_64(Ty, Ptr, Idx0, Name);
597 }
598
CONST_GEP2_64(Type * Ty,Value * Ptr,uint64_t Idx0,uint64_t Idx1,const Twine & Name="")599 Value* CONST_GEP2_64(Type *Ty, Value *Ptr, uint64_t Idx0, uint64_t Idx1, const Twine &Name = "")
600 {
601 return IRB()->CreateConstGEP2_64(Ty, Ptr, Idx0, Idx1, Name);
602 }
603
CONST_IN_BOUNDS_GEP2_64(Type * Ty,Value * Ptr,uint64_t Idx0,uint64_t Idx1,const Twine & Name="")604 Value* CONST_IN_BOUNDS_GEP2_64(Type *Ty, Value *Ptr, uint64_t Idx0, uint64_t Idx1, const Twine &Name = "")
605 {
606 return IRB()->CreateConstInBoundsGEP2_64(Ty, Ptr, Idx0, Idx1, Name);
607 }
608
STRUCT_GEP(Type * Ty,Value * Ptr,unsigned Idx,const Twine & Name="")609 Value* STRUCT_GEP(Type *Ty, Value *Ptr, unsigned Idx, const Twine &Name = "")
610 {
611 return IRB()->CreateStructGEP(Ty, Ptr, Idx, Name);
612 }
613
GLOBAL_STRING_PTR(StringRef Str,const Twine & Name="",unsigned AddressSpace=0)614 Value* GLOBAL_STRING_PTR(StringRef Str, const Twine &Name = "", unsigned AddressSpace = 0)
615 {
616 return IRB()->CreateGlobalStringPtr(Str, Name, AddressSpace);
617 }
618
TRUNC(Value * V,Type * DestTy,const Twine & Name="")619 Value* TRUNC(Value *V, Type *DestTy, const Twine &Name = "")
620 {
621 return IRB()->CreateTrunc(V, DestTy, Name);
622 }
623
Z_EXT(Value * V,Type * DestTy,const Twine & Name="")624 Value* Z_EXT(Value *V, Type *DestTy, const Twine &Name = "")
625 {
626 return IRB()->CreateZExt(V, DestTy, Name);
627 }
628
S_EXT(Value * V,Type * DestTy,const Twine & Name="")629 Value* S_EXT(Value *V, Type *DestTy, const Twine &Name = "")
630 {
631 return IRB()->CreateSExt(V, DestTy, Name);
632 }
633
Z_EXT_OR_TRUNC(Value * V,Type * DestTy,const Twine & Name="")634 Value* Z_EXT_OR_TRUNC(Value *V, Type *DestTy, const Twine &Name = "")
635 {
636 return IRB()->CreateZExtOrTrunc(V, DestTy, Name);
637 }
638
S_EXT_OR_TRUNC(Value * V,Type * DestTy,const Twine & Name="")639 Value* S_EXT_OR_TRUNC(Value *V, Type *DestTy, const Twine &Name = "")
640 {
641 return IRB()->CreateSExtOrTrunc(V, DestTy, Name);
642 }
643
FP_TO_UI(Value * V,Type * DestTy,const Twine & Name="")644 Value* FP_TO_UI(Value *V, Type *DestTy, const Twine &Name = "")
645 {
646 return IRB()->CreateFPToUI(V, DestTy, Name);
647 }
648
FP_TO_SI(Value * V,Type * DestTy,const Twine & Name="")649 Value* FP_TO_SI(Value *V, Type *DestTy, const Twine &Name = "")
650 {
651 return IRB()->CreateFPToSI(V, DestTy, Name);
652 }
653
UI_TO_FP(Value * V,Type * DestTy,const Twine & Name="")654 Value* UI_TO_FP(Value *V, Type *DestTy, const Twine &Name = "")
655 {
656 return IRB()->CreateUIToFP(V, DestTy, Name);
657 }
658
SI_TO_FP(Value * V,Type * DestTy,const Twine & Name="")659 Value* SI_TO_FP(Value *V, Type *DestTy, const Twine &Name = "")
660 {
661 return IRB()->CreateSIToFP(V, DestTy, Name);
662 }
663
FP_TRUNC(Value * V,Type * DestTy,const Twine & Name="")664 Value* FP_TRUNC(Value *V, Type *DestTy, const Twine &Name = "")
665 {
666 return IRB()->CreateFPTrunc(V, DestTy, Name);
667 }
668
FP_EXT(Value * V,Type * DestTy,const Twine & Name="")669 Value* FP_EXT(Value *V, Type *DestTy, const Twine &Name = "")
670 {
671 return IRB()->CreateFPExt(V, DestTy, Name);
672 }
673
PTR_TO_INT(Value * V,Type * DestTy,const Twine & Name="")674 Value* PTR_TO_INT(Value *V, Type *DestTy, const Twine &Name = "")
675 {
676 return IRB()->CreatePtrToInt(V, DestTy, Name);
677 }
678
INT_TO_PTR(Value * V,Type * DestTy,const Twine & Name="")679 Value* INT_TO_PTR(Value *V, Type *DestTy, const Twine &Name = "")
680 {
681 return IRB()->CreateIntToPtr(V, DestTy, Name);
682 }
683
BITCAST(Value * V,Type * DestTy,const Twine & Name="")684 Value* BITCAST(Value *V, Type *DestTy, const Twine &Name = "")
685 {
686 return IRB()->CreateBitCast(V, DestTy, Name);
687 }
688
ADDR_SPACE_CAST(Value * V,Type * DestTy,const Twine & Name="")689 Value* ADDR_SPACE_CAST(Value *V, Type *DestTy, const Twine &Name = "")
690 {
691 return IRB()->CreateAddrSpaceCast(V, DestTy, Name);
692 }
693
Z_EXT_OR_BIT_CAST(Value * V,Type * DestTy,const Twine & Name="")694 Value* Z_EXT_OR_BIT_CAST(Value *V, Type *DestTy, const Twine &Name = "")
695 {
696 return IRB()->CreateZExtOrBitCast(V, DestTy, Name);
697 }
698
S_EXT_OR_BIT_CAST(Value * V,Type * DestTy,const Twine & Name="")699 Value* S_EXT_OR_BIT_CAST(Value *V, Type *DestTy, const Twine &Name = "")
700 {
701 return IRB()->CreateSExtOrBitCast(V, DestTy, Name);
702 }
703
TRUNC_OR_BIT_CAST(Value * V,Type * DestTy,const Twine & Name="")704 Value* TRUNC_OR_BIT_CAST(Value *V, Type *DestTy, const Twine &Name = "")
705 {
706 return IRB()->CreateTruncOrBitCast(V, DestTy, Name);
707 }
708
CAST(Instruction::CastOps Op,Value * V,Type * DestTy,const Twine & Name="")709 Value* CAST(Instruction::CastOps Op, Value *V, Type *DestTy, const Twine &Name = "")
710 {
711 return IRB()->CreateCast(Op, V, DestTy, Name);
712 }
713
POINTER_CAST(Value * V,Type * DestTy,const Twine & Name="")714 Value* POINTER_CAST(Value *V, Type *DestTy, const Twine &Name = "")
715 {
716 return IRB()->CreatePointerCast(V, DestTy, Name);
717 }
718
POINTER_BIT_CAST_OR_ADDR_SPACE_CAST(Value * V,Type * DestTy,const Twine & Name="")719 Value* POINTER_BIT_CAST_OR_ADDR_SPACE_CAST(Value *V, Type *DestTy, const Twine &Name = "")
720 {
721 return IRB()->CreatePointerBitCastOrAddrSpaceCast(V, DestTy, Name);
722 }
723
INT_CAST(Value * V,Type * DestTy,bool isSigned,const Twine & Name="")724 Value* INT_CAST(Value *V, Type *DestTy, bool isSigned, const Twine &Name = "")
725 {
726 return IRB()->CreateIntCast(V, DestTy, isSigned, Name);
727 }
728
BIT_OR_POINTER_CAST(Value * V,Type * DestTy,const Twine & Name="")729 Value* BIT_OR_POINTER_CAST(Value *V, Type *DestTy, const Twine &Name = "")
730 {
731 return IRB()->CreateBitOrPointerCast(V, DestTy, Name);
732 }
733
FP_CAST(Value * V,Type * DestTy,const Twine & Name="")734 Value* FP_CAST(Value *V, Type *DestTy, const Twine &Name = "")
735 {
736 return IRB()->CreateFPCast(V, DestTy, Name);
737 }
738
ICMP_EQ(Value * LHS,Value * RHS,const Twine & Name="")739 Value* ICMP_EQ(Value *LHS, Value *RHS, const Twine &Name = "")
740 {
741 return IRB()->CreateICmpEQ(LHS, RHS, Name);
742 }
743
ICMP_NE(Value * LHS,Value * RHS,const Twine & Name="")744 Value* ICMP_NE(Value *LHS, Value *RHS, const Twine &Name = "")
745 {
746 return IRB()->CreateICmpNE(LHS, RHS, Name);
747 }
748
ICMP_UGT(Value * LHS,Value * RHS,const Twine & Name="")749 Value* ICMP_UGT(Value *LHS, Value *RHS, const Twine &Name = "")
750 {
751 return IRB()->CreateICmpUGT(LHS, RHS, Name);
752 }
753
ICMP_UGE(Value * LHS,Value * RHS,const Twine & Name="")754 Value* ICMP_UGE(Value *LHS, Value *RHS, const Twine &Name = "")
755 {
756 return IRB()->CreateICmpUGE(LHS, RHS, Name);
757 }
758
ICMP_ULT(Value * LHS,Value * RHS,const Twine & Name="")759 Value* ICMP_ULT(Value *LHS, Value *RHS, const Twine &Name = "")
760 {
761 return IRB()->CreateICmpULT(LHS, RHS, Name);
762 }
763
ICMP_ULE(Value * LHS,Value * RHS,const Twine & Name="")764 Value* ICMP_ULE(Value *LHS, Value *RHS, const Twine &Name = "")
765 {
766 return IRB()->CreateICmpULE(LHS, RHS, Name);
767 }
768
ICMP_SGT(Value * LHS,Value * RHS,const Twine & Name="")769 Value* ICMP_SGT(Value *LHS, Value *RHS, const Twine &Name = "")
770 {
771 return IRB()->CreateICmpSGT(LHS, RHS, Name);
772 }
773
ICMP_SGE(Value * LHS,Value * RHS,const Twine & Name="")774 Value* ICMP_SGE(Value *LHS, Value *RHS, const Twine &Name = "")
775 {
776 return IRB()->CreateICmpSGE(LHS, RHS, Name);
777 }
778
ICMP_SLT(Value * LHS,Value * RHS,const Twine & Name="")779 Value* ICMP_SLT(Value *LHS, Value *RHS, const Twine &Name = "")
780 {
781 return IRB()->CreateICmpSLT(LHS, RHS, Name);
782 }
783
ICMP_SLE(Value * LHS,Value * RHS,const Twine & Name="")784 Value* ICMP_SLE(Value *LHS, Value *RHS, const Twine &Name = "")
785 {
786 return IRB()->CreateICmpSLE(LHS, RHS, Name);
787 }
788
FCMP_OEQ(Value * LHS,Value * RHS,const Twine & Name="",MDNode * FPMathTag=nullptr)789 Value* FCMP_OEQ(Value *LHS, Value *RHS, const Twine &Name = "", MDNode *FPMathTag = nullptr)
790 {
791 return IRB()->CreateFCmpOEQ(LHS, RHS, Name, FPMathTag);
792 }
793
FCMP_OGT(Value * LHS,Value * RHS,const Twine & Name="",MDNode * FPMathTag=nullptr)794 Value* FCMP_OGT(Value *LHS, Value *RHS, const Twine &Name = "", MDNode *FPMathTag = nullptr)
795 {
796 return IRB()->CreateFCmpOGT(LHS, RHS, Name, FPMathTag);
797 }
798
FCMP_OGE(Value * LHS,Value * RHS,const Twine & Name="",MDNode * FPMathTag=nullptr)799 Value* FCMP_OGE(Value *LHS, Value *RHS, const Twine &Name = "", MDNode *FPMathTag = nullptr)
800 {
801 return IRB()->CreateFCmpOGE(LHS, RHS, Name, FPMathTag);
802 }
803
FCMP_OLT(Value * LHS,Value * RHS,const Twine & Name="",MDNode * FPMathTag=nullptr)804 Value* FCMP_OLT(Value *LHS, Value *RHS, const Twine &Name = "", MDNode *FPMathTag = nullptr)
805 {
806 return IRB()->CreateFCmpOLT(LHS, RHS, Name, FPMathTag);
807 }
808
FCMP_OLE(Value * LHS,Value * RHS,const Twine & Name="",MDNode * FPMathTag=nullptr)809 Value* FCMP_OLE(Value *LHS, Value *RHS, const Twine &Name = "", MDNode *FPMathTag = nullptr)
810 {
811 return IRB()->CreateFCmpOLE(LHS, RHS, Name, FPMathTag);
812 }
813
FCMP_ONE(Value * LHS,Value * RHS,const Twine & Name="",MDNode * FPMathTag=nullptr)814 Value* FCMP_ONE(Value *LHS, Value *RHS, const Twine &Name = "", MDNode *FPMathTag = nullptr)
815 {
816 return IRB()->CreateFCmpONE(LHS, RHS, Name, FPMathTag);
817 }
818
FCMP_ORD(Value * LHS,Value * RHS,const Twine & Name="",MDNode * FPMathTag=nullptr)819 Value* FCMP_ORD(Value *LHS, Value *RHS, const Twine &Name = "", MDNode *FPMathTag = nullptr)
820 {
821 return IRB()->CreateFCmpORD(LHS, RHS, Name, FPMathTag);
822 }
823
FCMP_UNO(Value * LHS,Value * RHS,const Twine & Name="",MDNode * FPMathTag=nullptr)824 Value* FCMP_UNO(Value *LHS, Value *RHS, const Twine &Name = "", MDNode *FPMathTag = nullptr)
825 {
826 return IRB()->CreateFCmpUNO(LHS, RHS, Name, FPMathTag);
827 }
828
FCMP_UEQ(Value * LHS,Value * RHS,const Twine & Name="",MDNode * FPMathTag=nullptr)829 Value* FCMP_UEQ(Value *LHS, Value *RHS, const Twine &Name = "", MDNode *FPMathTag = nullptr)
830 {
831 return IRB()->CreateFCmpUEQ(LHS, RHS, Name, FPMathTag);
832 }
833
FCMP_UGT(Value * LHS,Value * RHS,const Twine & Name="",MDNode * FPMathTag=nullptr)834 Value* FCMP_UGT(Value *LHS, Value *RHS, const Twine &Name = "", MDNode *FPMathTag = nullptr)
835 {
836 return IRB()->CreateFCmpUGT(LHS, RHS, Name, FPMathTag);
837 }
838
FCMP_UGE(Value * LHS,Value * RHS,const Twine & Name="",MDNode * FPMathTag=nullptr)839 Value* FCMP_UGE(Value *LHS, Value *RHS, const Twine &Name = "", MDNode *FPMathTag = nullptr)
840 {
841 return IRB()->CreateFCmpUGE(LHS, RHS, Name, FPMathTag);
842 }
843
FCMP_ULT(Value * LHS,Value * RHS,const Twine & Name="",MDNode * FPMathTag=nullptr)844 Value* FCMP_ULT(Value *LHS, Value *RHS, const Twine &Name = "", MDNode *FPMathTag = nullptr)
845 {
846 return IRB()->CreateFCmpULT(LHS, RHS, Name, FPMathTag);
847 }
848
FCMP_ULE(Value * LHS,Value * RHS,const Twine & Name="",MDNode * FPMathTag=nullptr)849 Value* FCMP_ULE(Value *LHS, Value *RHS, const Twine &Name = "", MDNode *FPMathTag = nullptr)
850 {
851 return IRB()->CreateFCmpULE(LHS, RHS, Name, FPMathTag);
852 }
853
FCMP_UNE(Value * LHS,Value * RHS,const Twine & Name="",MDNode * FPMathTag=nullptr)854 Value* FCMP_UNE(Value *LHS, Value *RHS, const Twine &Name = "", MDNode *FPMathTag = nullptr)
855 {
856 return IRB()->CreateFCmpUNE(LHS, RHS, Name, FPMathTag);
857 }
858
ICMP(CmpInst::Predicate P,Value * LHS,Value * RHS,const Twine & Name="")859 Value* ICMP(CmpInst::Predicate P, Value *LHS, Value *RHS, const Twine &Name = "")
860 {
861 return IRB()->CreateICmp(P, LHS, RHS, Name);
862 }
863
FCMP(CmpInst::Predicate P,Value * LHS,Value * RHS,const Twine & Name="",MDNode * FPMathTag=nullptr)864 Value* FCMP(CmpInst::Predicate P, Value *LHS, Value *RHS, const Twine &Name = "", MDNode *FPMathTag = nullptr)
865 {
866 return IRB()->CreateFCmp(P, LHS, RHS, Name, FPMathTag);
867 }
868
PHI(Type * Ty,unsigned NumReservedValues,const Twine & Name="")869 PHINode* PHI(Type *Ty, unsigned NumReservedValues, const Twine &Name = "")
870 {
871 return IRB()->CreatePHI(Ty, NumReservedValues, Name);
872 }
873
CALLA(Value * Callee,ArrayRef<Value * > Args=None,const Twine & Name="",MDNode * FPMathTag=nullptr)874 CallInst* CALLA(Value *Callee, ArrayRef<Value *> Args = None, const Twine &Name = "", MDNode *FPMathTag = nullptr)
875 {
876 return IRB()->CreateCall(Callee, Args, Name, FPMathTag);
877 }
878
CALLA(FunctionType * FTy,Value * Callee,ArrayRef<Value * > Args,const Twine & Name="",MDNode * FPMathTag=nullptr)879 CallInst* CALLA(FunctionType *FTy, Value *Callee, ArrayRef<Value *> Args, const Twine &Name = "", MDNode *FPMathTag = nullptr)
880 {
881 return IRB()->CreateCall(FTy, Callee, Args, Name, FPMathTag);
882 }
883
CALLA(Value * Callee,ArrayRef<Value * > Args,ArrayRef<OperandBundleDef> OpBundles,const Twine & Name="",MDNode * FPMathTag=nullptr)884 CallInst* CALLA(Value *Callee, ArrayRef<Value *> Args, ArrayRef<OperandBundleDef> OpBundles, const Twine &Name = "", MDNode *FPMathTag = nullptr)
885 {
886 return IRB()->CreateCall(Callee, Args, OpBundles, Name, FPMathTag);
887 }
888
CALLA(Function * Callee,ArrayRef<Value * > Args,const Twine & Name="",MDNode * FPMathTag=nullptr)889 CallInst* CALLA(Function *Callee, ArrayRef<Value *> Args, const Twine &Name = "", MDNode *FPMathTag = nullptr)
890 {
891 return IRB()->CreateCall(Callee, Args, Name, FPMathTag);
892 }
893
SELECT(Value * C,Value * True,Value * False,const Twine & Name="",Instruction * MDFrom=nullptr)894 Value* SELECT(Value *C, Value *True, Value *False, const Twine &Name = "", Instruction *MDFrom = nullptr)
895 {
896 return IRB()->CreateSelect(C, True, False, Name, MDFrom);
897 }
898
VA_ARG(Value * List,Type * Ty,const Twine & Name="")899 VAArgInst* VA_ARG(Value *List, Type *Ty, const Twine &Name = "")
900 {
901 return IRB()->CreateVAArg(List, Ty, Name);
902 }
903
VEXTRACT(Value * Vec,Value * Idx,const Twine & Name="")904 Value* VEXTRACT(Value *Vec, Value *Idx, const Twine &Name = "")
905 {
906 return IRB()->CreateExtractElement(Vec, Idx, Name);
907 }
908
VEXTRACT(Value * Vec,uint64_t Idx,const Twine & Name="")909 Value* VEXTRACT(Value *Vec, uint64_t Idx, const Twine &Name = "")
910 {
911 return IRB()->CreateExtractElement(Vec, Idx, Name);
912 }
913
VINSERT(Value * Vec,Value * NewElt,Value * Idx,const Twine & Name="")914 Value* VINSERT(Value *Vec, Value *NewElt, Value *Idx, const Twine &Name = "")
915 {
916 return IRB()->CreateInsertElement(Vec, NewElt, Idx, Name);
917 }
918
VINSERT(Value * Vec,Value * NewElt,uint64_t Idx,const Twine & Name="")919 Value* VINSERT(Value *Vec, Value *NewElt, uint64_t Idx, const Twine &Name = "")
920 {
921 return IRB()->CreateInsertElement(Vec, NewElt, Idx, Name);
922 }
923
VSHUFFLE(Value * V1,Value * V2,Value * Mask,const Twine & Name="")924 Value* VSHUFFLE(Value *V1, Value *V2, Value *Mask, const Twine &Name = "")
925 {
926 return IRB()->CreateShuffleVector(V1, V2, Mask, Name);
927 }
928
VSHUFFLE(Value * V1,Value * V2,ArrayRef<uint32_t> IntMask,const Twine & Name="")929 Value* VSHUFFLE(Value *V1, Value *V2, ArrayRef<uint32_t> IntMask, const Twine &Name = "")
930 {
931 Value *Mask = ConstantDataVector::get(getContext(), IntMask);
932 return IRB()->CreateShuffleVector(V1, V2, Mask, Name);
933 }
934
EXTRACT_VALUE(Value * Agg,ArrayRef<unsigned> Idxs,const Twine & Name="")935 Value* EXTRACT_VALUE(Value *Agg, ArrayRef<unsigned> Idxs, const Twine &Name = "")
936 {
937 return IRB()->CreateExtractValue(Agg, Idxs, Name);
938 }
939
INSERT_VALUE(Value * Agg,Value * Val,ArrayRef<unsigned> Idxs,const Twine & Name="")940 Value* INSERT_VALUE(Value *Agg, Value *Val, ArrayRef<unsigned> Idxs, const Twine &Name = "")
941 {
942 return IRB()->CreateInsertValue(Agg, Val, Idxs, Name);
943 }
944
LANDING_PAD(Type * Ty,unsigned NumClauses,const Twine & Name="")945 LandingPadInst* LANDING_PAD(Type *Ty, unsigned NumClauses, const Twine &Name = "")
946 {
947 return IRB()->CreateLandingPad(Ty, NumClauses, Name);
948 }
949
IS_NULL(Value * Arg,const Twine & Name="")950 Value* IS_NULL(Value *Arg, const Twine &Name = "")
951 {
952 return IRB()->CreateIsNull(Arg, Name);
953 }
954
IS_NOT_NULL(Value * Arg,const Twine & Name="")955 Value* IS_NOT_NULL(Value *Arg, const Twine &Name = "")
956 {
957 return IRB()->CreateIsNotNull(Arg, Name);
958 }
959
PTR_DIFF(Value * LHS,Value * RHS,const Twine & Name="")960 Value* PTR_DIFF(Value *LHS, Value *RHS, const Twine &Name = "")
961 {
962 return IRB()->CreatePtrDiff(LHS, RHS, Name);
963 }
964
INVARIANT_GROUP_BARRIER(Value * Ptr)965 Value* INVARIANT_GROUP_BARRIER(Value *Ptr)
966 {
967 return IRB()->CreateLaunderInvariantGroup(Ptr);
968 }
969
VECTOR_SPLAT(unsigned NumElts,Value * V,const Twine & Name="")970 Value* VECTOR_SPLAT(unsigned NumElts, Value *V, const Twine &Name = "")
971 {
972 return IRB()->CreateVectorSplat(NumElts, V, Name);
973 }
974
EXTRACT_INTEGER(const DataLayout & DL,Value * From,IntegerType * ExtractedTy,uint64_t Offset,const Twine & Name)975 Value* EXTRACT_INTEGER(const DataLayout &DL, Value *From, IntegerType *ExtractedTy, uint64_t Offset, const Twine &Name)
976 {
977 return IRB()->CreateExtractInteger(DL, From, ExtractedTy, Offset, Name);
978 }
979
ALIGNMENT_ASSUMPTION(const DataLayout & DL,Value * PtrValue,unsigned Alignment,Value * OffsetValue=nullptr)980 CallInst* ALIGNMENT_ASSUMPTION(const DataLayout &DL, Value *PtrValue, unsigned Alignment, Value *OffsetValue = nullptr)
981 {
982 return IRB()->CreateAlignmentAssumption(DL, PtrValue, Alignment, OffsetValue);
983 }
984
ALIGNMENT_ASSUMPTION(const DataLayout & DL,Value * PtrValue,Value * Alignment,Value * OffsetValue=nullptr)985 CallInst* ALIGNMENT_ASSUMPTION(const DataLayout &DL, Value *PtrValue, Value *Alignment, Value *OffsetValue = nullptr)
986 {
987 return IRB()->CreateAlignmentAssumption(DL, PtrValue, Alignment, OffsetValue);
988 }
989
990 // clang-format on
991