]> granicus.if.org Git - clang/commitdiff
Move target specific builtin IDs to TargetBuiltins.h so that they can be used by...
authorAnders Carlsson <andersca@mac.com>
Sun, 9 Dec 2007 23:17:02 +0000 (23:17 +0000)
committerAnders Carlsson <andersca@mac.com>
Sun, 9 Dec 2007 23:17:02 +0000 (23:17 +0000)
git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@44748 91177308-0d34-0410-b5e6-96231b3b80d8

CodeGen/CGBuiltin.cpp
CodeGen/CodeGenFunction.h
Driver/Targets.cpp
clang.xcodeproj/project.pbxproj
include/clang/AST/PPCBuiltins.def [moved from Driver/PPCBuiltins.def with 100% similarity]
include/clang/AST/X86Builtins.def [moved from Driver/X86Builtins.def with 100% similarity]

index 7f3bd0ad319907719a5cdc2b567ecd1a6bb6386f..bb32b9a2cd6c7789320a26f62ba4a7c6b9b3a68e 100644 (file)
@@ -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;
+  }
+}  
index 0c66b50adae1674e585a85ca29d81a83d9bb1c4d..6ae256d4380762e2faa9e1fd1f50976a066f0a1d 100644 (file)
@@ -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);
 
   //===--------------------------------------------------------------------===//
index 400090871c84e4f5d224afea432b074469ee8cfb..a809b94a062646fe2a49b9f691a7476f35edc1db 100644 (file)
 
 #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;
index f6f4b68f702e9928dd7f829f0a00fcc191f78270..ed2ec876d39cd42735bd374a8a8af302ba9c30a4 100644 (file)
                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 */; };
                                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 */,
 
 /* 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>"; };
                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>"; };
                                DE5932CE0AD60FF400BC794C /* clang.h */,
                                DE3985780CB8ADC800223765 /* ASTConsumers.h */,
                                DE39857A0CB8ADCB00223765 /* ASTConsumers.cpp */,
-                               DED67AEF0B6DB92F00AAD4A3 /* PPCBuiltins.def */,
-                               DED67AED0B6DB92A00AAD4A3 /* X86Builtins.def */,
                                DEC82DC30C32D50A00BAC245 /* DiagChecker.cpp */,
                                DE5932CF0AD60FF400BC794C /* PrintParserCallbacks.cpp */,
                                DE5932D00AD60FF400BC794C /* PrintPreprocessedOutput.cpp */,
                                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>";