diff options
| author | Erich Keane <erich.keane@intel.com> | 2017-10-06 16:40:45 +0000 |
|---|---|---|
| committer | Erich Keane <erich.keane@intel.com> | 2017-10-06 16:40:45 +0000 |
| commit | 1fe643a6d766ee85e528681d42d5341859712a3e (patch) | |
| tree | cd5eb691f55559195e65652a9954cdd9f54962b5 /clang | |
| parent | cab496d3a9a9f934823960134e5cbbf1db22088a (diff) | |
| download | bcm5719-llvm-1fe643a6d766ee85e528681d42d5341859712a3e.tar.gz bcm5719-llvm-1fe643a6d766ee85e528681d42d5341859712a3e.zip | |
Split X86::BI__builtin_cpu_init handling into own function[NFC]
The Cpu Init functionality is required for the target
attribute, so this patch simply splits it out into its own
function, exactly like CpuIs and CpuSupports.
llvm-svn: 315075
Diffstat (limited to 'clang')
| -rw-r--r-- | clang/lib/CodeGen/CGBuiltin.cpp | 16 | ||||
| -rw-r--r-- | clang/lib/CodeGen/CodeGenFunction.h | 1 |
2 files changed, 10 insertions, 7 deletions
diff --git a/clang/lib/CodeGen/CGBuiltin.cpp b/clang/lib/CodeGen/CGBuiltin.cpp index 113089b4352..7ae558f9ae9 100644 --- a/clang/lib/CodeGen/CGBuiltin.cpp +++ b/clang/lib/CodeGen/CGBuiltin.cpp @@ -7708,12 +7708,21 @@ Value *CodeGenFunction::EmitX86CpuSupports(ArrayRef<StringRef> FeatureStrs) { return Builder.CreateICmpNE(Bitset, llvm::ConstantInt::get(Int32Ty, 0)); } +Value *CodeGenFunction::EmitX86CpuInit() { + llvm::FunctionType *FTy = llvm::FunctionType::get(VoidTy, + /*Variadic*/ false); + llvm::Constant *Func = CGM.CreateRuntimeFunction(FTy, "__cpu_indicator_init"); + return Builder.CreateCall(Func); +} + Value *CodeGenFunction::EmitX86BuiltinExpr(unsigned BuiltinID, const CallExpr *E) { if (BuiltinID == X86::BI__builtin_cpu_is) return EmitX86CpuIs(E); if (BuiltinID == X86::BI__builtin_cpu_supports) return EmitX86CpuSupports(E); + if (BuiltinID == X86::BI__builtin_cpu_init) + return EmitX86CpuInit(); SmallVector<Value*, 4> Ops; @@ -7765,13 +7774,6 @@ Value *CodeGenFunction::EmitX86BuiltinExpr(unsigned BuiltinID, switch (BuiltinID) { default: return nullptr; - case X86::BI__builtin_cpu_init: { - llvm::FunctionType *FTy = llvm::FunctionType::get(VoidTy, - /*Variadic*/false); - llvm::Constant *Func = CGM.CreateRuntimeFunction(FTy, - "__cpu_indicator_init"); - return Builder.CreateCall(Func); - } case X86::BI_mm_prefetch: { Value *Address = Ops[0]; Value *RW = ConstantInt::get(Int32Ty, 0); diff --git a/clang/lib/CodeGen/CodeGenFunction.h b/clang/lib/CodeGen/CodeGenFunction.h index 68be87fc5f0..3ec3466a48b 100644 --- a/clang/lib/CodeGen/CodeGenFunction.h +++ b/clang/lib/CodeGen/CodeGenFunction.h @@ -3901,6 +3901,7 @@ private: llvm::Value *EmitX86CpuIs(StringRef CPUStr); llvm::Value *EmitX86CpuSupports(const CallExpr *E); llvm::Value *EmitX86CpuSupports(ArrayRef<StringRef> FeatureStrs); + llvm::Value *EmitX86CpuInit(); }; /// Helper class with most of the code for saving a value for a |

