Home | History | Annotate | Download | only in CodeGen

Lines Matching refs:CGF

55 static Value *EmitToInt(CodeGenFunction &CGF, llvm::Value *V,
57 V = CGF.EmitToMemory(V, T);
60 return CGF.Builder.CreatePtrToInt(V, IntType);
66 static Value *EmitFromInt(CodeGenFunction &CGF, llvm::Value *V,
68 V = CGF.EmitFromMemory(V, T);
71 return CGF.Builder.CreateIntToPtr(V, ResultType);
79 static RValue EmitBinaryAtomic(CodeGenFunction &CGF,
84 assert(CGF.getContext().hasSameUnqualifiedType(T,
86 assert(CGF.getContext().hasSameUnqualifiedType(T, E->getArg(1)->getType()));
88 llvm::Value *DestPtr = CGF.EmitScalarExpr(E->getArg(0));
92 llvm::IntegerType::get(CGF.getLLVMContext(),
93 CGF.getContext().getTypeSize(T));
97 Args[0] = CGF.Builder.CreateBitCast(DestPtr, IntPtrType);
98 Args[1] = CGF.EmitScalarExpr(E->getArg(1));
100 Args[1] = EmitToInt(CGF, Args[1], T, IntType);
103 CGF.Builder.CreateAtomicRMW(Kind, Args[0], Args[1],
105 Result = EmitFromInt(CGF, Result, T, ValueType);
112 static RValue EmitBinaryAtomicPost(CodeGenFunction &CGF,
118 assert(CGF.getContext().hasSameUnqualifiedType(T,
120 assert(CGF.getContext().hasSameUnqualifiedType(T, E->getArg(1)->getType()));
122 llvm::Value *DestPtr = CGF.EmitScalarExpr(E->getArg(0));
126 llvm::IntegerType::get(CGF.getLLVMContext(),
127 CGF.getContext().getTypeSize(T));
131 Args[1] = CGF.EmitScalarExpr(E->getArg(1));
133 Args[1] = EmitToInt(CGF, Args[1], T, IntType);
134 Args[0] = CGF.Builder.CreateBitCast(DestPtr, IntPtrType);
137 CGF.Builder.CreateAtomicRMW(Kind, Args[0], Args[1],
139 Result = CGF.Builder.CreateBinOp(Op, Result, Args[1]);
140 Result = EmitFromInt(CGF, Result, T, ValueType);
146 static Value *EmitFAbs(CodeGenFunction &CGF, Value *V, QualType ValTy) {
161 llvm::Value *Fn = CGF.CGM.CreateRuntimeFunction(FT, FnName);
163 return CGF.EmitNounwindRuntimeCall(Fn, V, "abs");
166 static RValue emitLibraryCall(CodeGenFunction &CGF, const FunctionDecl *Fn,
168 return CGF.EmitCall(E->getCallee()->getType(), calleeValue,
175 /// \arg CGF The current codegen function.
181 static llvm::Value *EmitOverflowIntrinsic(CodeGenFunction &CGF,
190 llvm::Value *Callee = CGF.CGM.getIntrinsic(IntrinsicID, X->getType());
191 llvm::Value *Tmp = CGF.Builder.CreateCall2(Callee, X, Y);
192 Carry = CGF.Builder.CreateExtractValue(Tmp, 1);
193 return CGF.Builder.CreateExtractValue(Tmp, 0);
1519 static llvm::VectorType *GetNeonType(CodeGenFunction *CGF,
1525 return llvm::VectorType::get(CGF->Int8Ty, 8 << IsQuad);
1529 return llvm::VectorType::get(CGF->Int16Ty, 4 << IsQuad);
1531 return llvm::VectorType::get(CGF->Int32Ty, 2 << IsQuad);
1533 return llvm::VectorType::get(CGF->Int64Ty, 1 << IsQuad);
1535 return llvm::VectorType::get(CGF->FloatTy, 2 << IsQuad);