diff options
author | Anders Carlsson <andersca@mac.com> | 2007-12-09 23:17:02 +0000 |
---|---|---|
committer | Anders Carlsson <andersca@mac.com> | 2007-12-09 23:17:02 +0000 |
commit | 564f1de67d7ba43646b8740db86d6269e3dfbe0b (patch) | |
tree | d68f3f7d0941c3b9c171cc743552beec49699a17 | |
parent | 6e4ab61300e77f3cc303046c0107b8a961d7dc66 (diff) |
Move target specific builtin IDs to TargetBuiltins.h so that they can be used by CGBuiltin.cpp
git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@44748 91177308-0d34-0410-b5e6-96231b3b80d8
-rw-r--r-- | CodeGen/CGBuiltin.cpp | 43 | ||||
-rw-r--r-- | CodeGen/CodeGenFunction.h | 3 | ||||
-rw-r--r-- | Driver/Targets.cpp | 20 | ||||
-rw-r--r-- | clang.xcodeproj/project.pbxproj | 16 | ||||
-rw-r--r-- | include/clang/AST/PPCBuiltins.def (renamed from Driver/PPCBuiltins.def) | 0 | ||||
-rw-r--r-- | include/clang/AST/X86Builtins.def (renamed from Driver/X86Builtins.def) | 0 |
6 files changed, 46 insertions, 36 deletions
diff --git a/CodeGen/CGBuiltin.cpp b/CodeGen/CGBuiltin.cpp index 7f3bd0ad31..bb32b9a2cd 100644 --- a/CodeGen/CGBuiltin.cpp +++ b/CodeGen/CGBuiltin.cpp @@ -17,6 +17,7 @@ #include "clang/AST/ASTContext.h" #include "clang/AST/Builtins.h" #include "clang/AST/Expr.h" +#include "clang/AST/TargetBuiltins.h" #include "llvm/Constants.h" #include "llvm/Function.h" #include "llvm/Intrinsics.h" @@ -79,16 +80,18 @@ RValue CodeGenFunction::EmitBuiltinExpr(unsigned BuiltinID, const CallExpr *E) { return RValue::get(V); } + + // See if we have a target specific builtin that needs to be lowered. + llvm::Value *V = 0; + + if (strcmp(TargetPrefix, "x86") == 0) + V = EmitX86BuiltinExpr(BuiltinID, E); + else if (strcmp(TargetPrefix, "ppc") == 0) + V = EmitPPCBuiltinExpr(BuiltinID, E); + + if (V) + return RValue::get(V); - if (strcmp(TargetPrefix, "x86") == 0) { - if (strcmp(BuiltinName, "__builtin_ia32_mulps") == 0) { - llvm::Value *V = Builder.CreateMul(EmitScalarExpr(E->getArg(0)), - EmitScalarExpr(E->getArg(1)), - "result"); - return RValue::get(V); - } - } - WarnUnsupported(E, "builtin function"); // Unknown builtin, for now just dump it out and return undef. @@ -188,8 +191,26 @@ RValue CodeGenFunction::EmitBuiltinExpr(unsigned BuiltinID, const CallExpr *E) { llvm::Value *V = llvm::ConstantFP::get(llvm::Type::DoubleTy, f); return RValue::get(V); } - } - return RValue::get(0); } + +llvm::Value *CodeGenFunction::EmitX86BuiltinExpr(unsigned BuiltinID, + const CallExpr *E) +{ + switch (BuiltinID) { + default: return 0; + case X86::BI__builtin_ia32_mulps: + return Builder.CreateMul(EmitScalarExpr(E->getArg(0)), + EmitScalarExpr(E->getArg(1)), + "result"); + } +} + +llvm::Value *CodeGenFunction::EmitPPCBuiltinExpr(unsigned BuiltinID, + const CallExpr *E) +{ + switch (BuiltinID) { + default: return 0; + } +} diff --git a/CodeGen/CodeGenFunction.h b/CodeGen/CodeGenFunction.h index 0c66b50ada..6ae256d438 100644 --- a/CodeGen/CodeGenFunction.h +++ b/CodeGen/CodeGenFunction.h @@ -388,6 +388,9 @@ public: RValue EmitCallExpr(llvm::Value *Callee, const CallExpr *E); RValue EmitBuiltinExpr(unsigned BuiltinID, const CallExpr *E); + llvm::Value *EmitX86BuiltinExpr(unsigned BuiltinID, const CallExpr *E); + llvm::Value *EmitPPCBuiltinExpr(unsigned BuiltinID, const CallExpr *E); + llvm::Value *EmitObjCStringLiteral(const ObjCStringLiteral *E); //===--------------------------------------------------------------------===// diff --git a/Driver/Targets.cpp b/Driver/Targets.cpp index 400090871c..a809b94a06 100644 --- a/Driver/Targets.cpp +++ b/Driver/Targets.cpp @@ -14,8 +14,10 @@ #include "clang.h" #include "clang/AST/Builtins.h" +#include "clang/AST/TargetBuiltins.h" #include "clang/Basic/Diagnostic.h" #include "clang/Basic/TargetInfo.h" + #include "llvm/ADT/STLExtras.h" #include "llvm/Support/CommandLine.h" @@ -298,16 +300,10 @@ static const char* getPPCVAListDeclaration() { /// PPC builtin info. namespace PPC { - enum { - LastTIBuiltin = Builtin::FirstTSBuiltin-1, -#define BUILTIN(ID, TYPE, ATTRS) BI##ID, -#include "PPCBuiltins.def" - LastTSBuiltin - }; static const Builtin::Info BuiltinInfo[] = { #define BUILTIN(ID, TYPE, ATTRS) { #ID, TYPE, ATTRS }, -#include "PPCBuiltins.def" +#include "clang/AST/PPCBuiltins.def" }; static void getBuiltins(const Builtin::Info *&Records, unsigned &NumRecords) { @@ -411,18 +407,10 @@ namespace PPC { /// X86 builtin info. namespace X86 { - enum { - LastTIBuiltin = Builtin::FirstTSBuiltin-1, -#define BUILTIN(ID, TYPE, ATTRS) BI##ID, -#include "X86Builtins.def" - LastTSBuiltin - }; - static const Builtin::Info BuiltinInfo[] = { #define BUILTIN(ID, TYPE, ATTRS) { #ID, TYPE, ATTRS }, -#include "X86Builtins.def" +#include "clang/AST/X86Builtins.def" }; - static void getBuiltins(const Builtin::Info *&Records, unsigned &NumRecords) { Records = BuiltinInfo; diff --git a/clang.xcodeproj/project.pbxproj b/clang.xcodeproj/project.pbxproj index f6f4b68f70..ed2ec876d3 100644 --- a/clang.xcodeproj/project.pbxproj +++ b/clang.xcodeproj/project.pbxproj @@ -106,8 +106,6 @@ DED676D10B6C786700AAD4A3 /* Builtins.def in CopyFiles */ = {isa = PBXBuildFile; fileRef = DED676D00B6C786700AAD4A3 /* Builtins.def */; }; DED676FA0B6C797B00AAD4A3 /* Builtins.h in CopyFiles */ = {isa = PBXBuildFile; fileRef = DED676F90B6C797B00AAD4A3 /* Builtins.h */; }; DED677C90B6C854100AAD4A3 /* Builtins.cpp in Sources */ = {isa = PBXBuildFile; fileRef = DED677C80B6C854100AAD4A3 /* Builtins.cpp */; }; - DED67AEE0B6DB92A00AAD4A3 /* X86Builtins.def in CopyFiles */ = {isa = PBXBuildFile; fileRef = DED67AED0B6DB92A00AAD4A3 /* X86Builtins.def */; }; - DED67AF00B6DB92F00AAD4A3 /* PPCBuiltins.def in CopyFiles */ = {isa = PBXBuildFile; fileRef = DED67AEF0B6DB92F00AAD4A3 /* PPCBuiltins.def */; }; DED7D7410A524295003AD0FB /* Diagnostic.h in CopyFiles */ = {isa = PBXBuildFile; fileRef = DED7D7310A524295003AD0FB /* Diagnostic.h */; }; DED7D7420A524295003AD0FB /* DiagnosticKinds.def in CopyFiles */ = {isa = PBXBuildFile; fileRef = DED7D7320A524295003AD0FB /* DiagnosticKinds.def */; }; DED7D7430A524295003AD0FB /* FileManager.h in CopyFiles */ = {isa = PBXBuildFile; fileRef = DED7D7330A524295003AD0FB /* FileManager.h */; }; @@ -190,8 +188,6 @@ DE01DA490B12ADA300AC22CE /* PPCallbacks.h in CopyFiles */, DED676D10B6C786700AAD4A3 /* Builtins.def in CopyFiles */, DED676FA0B6C797B00AAD4A3 /* Builtins.h in CopyFiles */, - DED67AEE0B6DB92A00AAD4A3 /* X86Builtins.def in CopyFiles */, - DED67AF00B6DB92F00AAD4A3 /* PPCBuiltins.def in CopyFiles */, 1A30A9E90B93A4C800201A91 /* ExprCXX.h in CopyFiles */, 1A869A700BA2164C008DA07A /* LiteralSupport.h in CopyFiles */, DE67E7150C020EDF00F66BC5 /* Sema.h in CopyFiles */, @@ -220,6 +216,9 @@ /* Begin PBXFileReference section */ 1A30A9E80B93A4C800201A91 /* ExprCXX.h */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.c.h; name = ExprCXX.h; path = clang/AST/ExprCXX.h; sourceTree = "<group>"; }; + 1A68BC110D0CADDD001A28C8 /* PPCBuiltins.def */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text; name = PPCBuiltins.def; path = clang/AST/PPCBuiltins.def; sourceTree = "<group>"; }; + 1A68BC120D0CADDD001A28C8 /* TargetBuiltins.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = TargetBuiltins.h; path = clang/AST/TargetBuiltins.h; sourceTree = "<group>"; }; + 1A68BC130D0CADDD001A28C8 /* X86Builtins.def */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text; name = X86Builtins.def; path = clang/AST/X86Builtins.def; sourceTree = "<group>"; }; 1A7342470C7B57D500122F56 /* CGObjC.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; name = CGObjC.cpp; path = CodeGen/CGObjC.cpp; sourceTree = "<group>"; }; 1A869A6E0BA2164C008DA07A /* LiteralSupport.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = LiteralSupport.h; sourceTree = "<group>"; }; 1A869AA70BA21ABA008DA07A /* LiteralSupport.cpp */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.cpp.cpp; path = LiteralSupport.cpp; sourceTree = "<group>"; }; @@ -337,8 +336,6 @@ DED676D00B6C786700AAD4A3 /* Builtins.def */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = text; name = Builtins.def; path = clang/AST/Builtins.def; sourceTree = "<group>"; }; DED676F90B6C797B00AAD4A3 /* Builtins.h */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.c.h; name = Builtins.h; path = clang/AST/Builtins.h; sourceTree = "<group>"; }; DED677C80B6C854100AAD4A3 /* Builtins.cpp */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.cpp.cpp; name = Builtins.cpp; path = AST/Builtins.cpp; sourceTree = "<group>"; }; - DED67AED0B6DB92A00AAD4A3 /* X86Builtins.def */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = text; name = X86Builtins.def; path = Driver/X86Builtins.def; sourceTree = "<group>"; }; - DED67AEF0B6DB92F00AAD4A3 /* PPCBuiltins.def */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = text; name = PPCBuiltins.def; path = Driver/PPCBuiltins.def; sourceTree = "<group>"; }; DED7D7310A524295003AD0FB /* Diagnostic.h */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.c.h; path = Diagnostic.h; sourceTree = "<group>"; }; DED7D7320A524295003AD0FB /* DiagnosticKinds.def */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = text; path = DiagnosticKinds.def; sourceTree = "<group>"; }; DED7D7330A524295003AD0FB /* FileManager.h */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.c.h; path = FileManager.h; sourceTree = "<group>"; }; @@ -581,8 +578,6 @@ DE5932CE0AD60FF400BC794C /* clang.h */, DE3985780CB8ADC800223765 /* ASTConsumers.h */, DE39857A0CB8ADCB00223765 /* ASTConsumers.cpp */, - DED67AEF0B6DB92F00AAD4A3 /* PPCBuiltins.def */, - DED67AED0B6DB92A00AAD4A3 /* X86Builtins.def */, DEC82DC30C32D50A00BAC245 /* DiagChecker.cpp */, DE5932CF0AD60FF400BC794C /* PrintParserCallbacks.cpp */, DE5932D00AD60FF400BC794C /* PrintPreprocessedOutput.cpp */, @@ -612,14 +607,17 @@ 84AF36A00CB17A3B00C820A5 /* DeclObjC.h */, DE0FCA620A95859D00248FD5 /* Expr.h */, 1A30A9E80B93A4C800201A91 /* ExprCXX.h */, - DE6951C60C4D1F5D00A5826B /* RecordLayout.h */, + 1A68BC110D0CADDD001A28C8 /* PPCBuiltins.def */, 3547129D0C88881300B3E1D5 /* PrettyPrinter.h */, + DE6951C60C4D1F5D00A5826B /* RecordLayout.h */, DE3452800AEF1B1800DBC861 /* Stmt.h */, DE345F210AFD347900DBC861 /* StmtNodes.def */, DE345C190AFC658B00DBC861 /* StmtVisitor.h */, 35847BE30CC7DB9000C40FFF /* StmtIterator.h */, 35CFFE010CA1CBDD00E6F2BE /* StmtGraphTraits.h */, + 1A68BC120D0CADDD001A28C8 /* TargetBuiltins.h */, DE3464210B03040900DBC861 /* Type.h */, + 1A68BC130D0CADDD001A28C8 /* X86Builtins.def */, ); name = AST; sourceTree = "<group>"; diff --git a/Driver/PPCBuiltins.def b/include/clang/AST/PPCBuiltins.def index 6aed2caa4d..6aed2caa4d 100644 --- a/Driver/PPCBuiltins.def +++ b/include/clang/AST/PPCBuiltins.def diff --git a/Driver/X86Builtins.def b/include/clang/AST/X86Builtins.def index 18ba684fee..18ba684fee 100644 --- a/Driver/X86Builtins.def +++ b/include/clang/AST/X86Builtins.def |