[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