[llvm-commits] CVS: llvm/lib/Target/SparcV8/SparcV8Subtarget.cpp SparcV8Subtarget.h Makefile SparcV8.td SparcV8TargetMachine.cpp SparcV8TargetMachine.h

Chris Lattner lattner at cs.uiuc.edu
Wed Jan 25 22:51:33 PST 2006



Changes in directory llvm/lib/Target/SparcV8:

SparcV8Subtarget.cpp added (r1.1)
SparcV8Subtarget.h added (r1.1)
Makefile updated: 1.12 -> 1.13
SparcV8.td updated: 1.6 -> 1.7
SparcV8TargetMachine.cpp updated: 1.37 -> 1.38
SparcV8TargetMachine.h updated: 1.9 -> 1.10
---
Log message:

Add trivial subtarget support


---
Diffs of the changes:  (+86 -1)

 Makefile                 |    2 +-
 SparcV8.td               |   16 ++++++++++++++++
 SparcV8Subtarget.cpp     |   27 +++++++++++++++++++++++++++
 SparcV8Subtarget.h       |   38 ++++++++++++++++++++++++++++++++++++++
 SparcV8TargetMachine.cpp |    1 +
 SparcV8TargetMachine.h   |    3 +++
 6 files changed, 86 insertions(+), 1 deletion(-)


Index: llvm/lib/Target/SparcV8/SparcV8Subtarget.cpp
diff -c /dev/null llvm/lib/Target/SparcV8/SparcV8Subtarget.cpp:1.1
*** /dev/null	Thu Jan 26 00:51:31 2006
--- llvm/lib/Target/SparcV8/SparcV8Subtarget.cpp	Thu Jan 26 00:51:21 2006
***************
*** 0 ****
--- 1,27 ----
+ //===- SparcV8Subtarget.cpp - SPARC Subtarget Information -----------------===//
+ //
+ //                     The LLVM Compiler Infrastructure
+ //
+ // This file was developed by Chris Lattner and is distributed under the
+ // University of Illinois Open Source License. See LICENSE.TXT for details.
+ //
+ //===----------------------------------------------------------------------===//
+ //
+ // This file implements the SPARC specific subclass of TargetSubtarget.
+ //
+ //===----------------------------------------------------------------------===//
+ 
+ #include "SparcV8Subtarget.h"
+ #include "SparcV8GenSubtarget.inc"
+ using namespace llvm;
+ 
+ SparcV8Subtarget::SparcV8Subtarget(const Module &M, const std::string &FS) {
+   // Determine default and user specified characteristics
+   std::string CPU = "generic";
+ 
+   // FIXME: autodetect host here!
+   
+   // Parse features string.
+   ParseSubtargetFeatures(FS, CPU);
+ 
+ };
\ No newline at end of file


Index: llvm/lib/Target/SparcV8/SparcV8Subtarget.h
diff -c /dev/null llvm/lib/Target/SparcV8/SparcV8Subtarget.h:1.1
*** /dev/null	Thu Jan 26 00:51:33 2006
--- llvm/lib/Target/SparcV8/SparcV8Subtarget.h	Thu Jan 26 00:51:21 2006
***************
*** 0 ****
--- 1,38 ----
+ //=====-- SparcV8Subtarget.h - Define Subtarget for the SPARC -*- C++ -*--====//
+ //
+ //                     The LLVM Compiler Infrastructure
+ //
+ // This file was developed by Chris Lattner and is distributed under the
+ // University of Illinois Open Source License. See LICENSE.TXT for details.
+ //
+ //===----------------------------------------------------------------------===//
+ //
+ // This file declares the SPARC specific subclass of TargetSubtarget.
+ //
+ //===----------------------------------------------------------------------===//
+ 
+ #ifndef SPARC_SUBTARGET_H
+ #define SPARC_SUBTARGET_H
+ 
+ #include "llvm/Target/TargetSubtarget.h"
+ #include <string>
+ 
+ namespace llvm {
+   class Module;
+   
+ class SparcV8Subtarget : public TargetSubtarget {
+   bool Is64Bit;
+ public:
+   SparcV8Subtarget(const Module &M, const std::string &FS);
+ 
+   bool is64Bit() const { return Is64Bit; }
+   
+   /// ParseSubtargetFeatures - Parses features string setting specified 
+   /// subtarget options.  Definition of function is auto generated by tblgen.
+   void ParseSubtargetFeatures(const std::string &FS, const std::string &CPU);
+   
+ };
+ 
+ } // end namespace llvm
+ 
+ #endif


Index: llvm/lib/Target/SparcV8/Makefile
diff -u llvm/lib/Target/SparcV8/Makefile:1.12 llvm/lib/Target/SparcV8/Makefile:1.13
--- llvm/lib/Target/SparcV8/Makefile:1.12	Sat Dec 17 01:47:01 2005
+++ llvm/lib/Target/SparcV8/Makefile	Thu Jan 26 00:51:21 2006
@@ -14,7 +14,7 @@
 BUILT_SOURCES = SparcV8GenRegisterInfo.h.inc SparcV8GenRegisterNames.inc \
                 SparcV8GenRegisterInfo.inc SparcV8GenInstrNames.inc \
                 SparcV8GenInstrInfo.inc SparcV8GenAsmWriter.inc \
-                SparcV8GenDAGISel.inc
+                SparcV8GenDAGISel.inc SparcV8GenSubtarget.inc
 
 include $(LEVEL)/Makefile.common
 


Index: llvm/lib/Target/SparcV8/SparcV8.td
diff -u llvm/lib/Target/SparcV8/SparcV8.td:1.6 llvm/lib/Target/SparcV8/SparcV8.td:1.7
--- llvm/lib/Target/SparcV8/SparcV8.td:1.6	Thu Dec  9 22:48:57 2004
+++ llvm/lib/Target/SparcV8/SparcV8.td	Thu Jan 26 00:51:21 2006
@@ -17,6 +17,14 @@
 include "../Target.td"
 
 //===----------------------------------------------------------------------===//
+// PowerPC Subtarget features.
+//
+ 
+def Feature64Bit     : SubtargetFeature<"64bit", "bool", "Is64Bit",
+                                        "Enable 64-bit instructions">;
+
+
+//===----------------------------------------------------------------------===//
 // Register File Description
 //===----------------------------------------------------------------------===//
 
@@ -37,6 +45,14 @@
 }
 
 //===----------------------------------------------------------------------===//
+// SPARC processors supported.
+//===----------------------------------------------------------------------===//
+
+def : Processor<"generic", NoItineraries, []>;
+def : Processor<"v8", NoItineraries, []>;
+def : Processor<"v9", NoItineraries, [Feature64Bit]>;
+
+//===----------------------------------------------------------------------===//
 // Declare the target which we are implementing
 //===----------------------------------------------------------------------===//
 


Index: llvm/lib/Target/SparcV8/SparcV8TargetMachine.cpp
diff -u llvm/lib/Target/SparcV8/SparcV8TargetMachine.cpp:1.37 llvm/lib/Target/SparcV8/SparcV8TargetMachine.cpp:1.38
--- llvm/lib/Target/SparcV8/SparcV8TargetMachine.cpp:1.37	Mon Jan 23 01:20:15 2006
+++ llvm/lib/Target/SparcV8/SparcV8TargetMachine.cpp	Thu Jan 26 00:51:21 2006
@@ -35,6 +35,7 @@
                                            IntrinsicLowering *IL,
                                            const std::string &FS)
   : TargetMachine("SparcV8", IL, false, 4, 4),
+    Subtarget(M, FS),
     FrameInfo(TargetFrameInfo::StackGrowsDown, 8, 0) {
 }
 


Index: llvm/lib/Target/SparcV8/SparcV8TargetMachine.h
diff -u llvm/lib/Target/SparcV8/SparcV8TargetMachine.h:1.9 llvm/lib/Target/SparcV8/SparcV8TargetMachine.h:1.10
--- llvm/lib/Target/SparcV8/SparcV8TargetMachine.h:1.9	Fri Dec 16 00:06:07 2005
+++ llvm/lib/Target/SparcV8/SparcV8TargetMachine.h	Thu Jan 26 00:51:21 2006
@@ -18,6 +18,7 @@
 #include "llvm/Target/TargetFrameInfo.h"
 #include "llvm/PassManager.h"
 #include "SparcV8InstrInfo.h"
+#include "SparcV8Subtarget.h"
 
 namespace llvm {
 
@@ -25,6 +26,7 @@
 class Module;
 
 class SparcV8TargetMachine : public TargetMachine {
+  SparcV8Subtarget Subtarget;
   SparcV8InstrInfo InstrInfo;
   TargetFrameInfo FrameInfo;
 public:
@@ -33,6 +35,7 @@
 
   virtual const SparcV8InstrInfo *getInstrInfo() const { return &InstrInfo; }
   virtual const TargetFrameInfo  *getFrameInfo() const { return &FrameInfo; }
+  virtual const TargetSubtarget  *getSubtargetImpl() const{ return &Subtarget; }
   virtual const MRegisterInfo *getRegisterInfo() const {
     return &InstrInfo.getRegisterInfo();
   }






More information about the llvm-commits mailing list