Skip site navigation (1)Skip section navigation (2)
Date:      Sat, 11 Jun 2011 17:23:51 +0000 (UTC)
From:      Marcel Moolenaar <marcel@FreeBSD.org>
To:        src-committers@freebsd.org, svn-src-projects@freebsd.org
Subject:   svn commit: r222989 - projects/llvm-ia64/contrib/llvm/lib/Target/IA64
Message-ID:  <201106111723.p5BHNpIU084453@svn.freebsd.org>

next in thread | raw e-mail | index | archive | help
Author: marcel
Date: Sat Jun 11 17:23:51 2011
New Revision: 222989
URL: http://svn.freebsd.org/changeset/base/222989

Log:
  Implement IA64RegisterInfo::getReservedRegs()

Modified:
  projects/llvm-ia64/contrib/llvm/lib/Target/IA64/IA64.td
  projects/llvm-ia64/contrib/llvm/lib/Target/IA64/IA64RegisterInfo.cpp

Modified: projects/llvm-ia64/contrib/llvm/lib/Target/IA64/IA64.td
==============================================================================
--- projects/llvm-ia64/contrib/llvm/lib/Target/IA64/IA64.td	Sat Jun 11 16:44:30 2011	(r222988)
+++ projects/llvm-ia64/contrib/llvm/lib/Target/IA64/IA64.td	Sat Jun 11 17:23:51 2011	(r222989)
@@ -34,6 +34,9 @@ def F1 : IA64Register<"f1">;
 def P0 : IA64Register<"p0">;
 
 def R0 : IA64Register<"r0">;
+def R1 : IA64Register<"r1">;
+def R12 : IA64Register<"r12">;
+def R13 : IA64Register<"r13">;
 
 //
 // Register classes
@@ -43,7 +46,7 @@ class IA64RegisterClass<list<ValueType> 
 }
 
 def FloatingPoint : IA64RegisterClass<[f128], 128, [F0, F1]>;
-def General : IA64RegisterClass<[i64], 64, [R0]>;
+def General : IA64RegisterClass<[i64], 64, [R0, R1, R12, R13]>;
 def Predicate : IA64RegisterClass<[i1], 0, [P0]>;
 
 //

Modified: projects/llvm-ia64/contrib/llvm/lib/Target/IA64/IA64RegisterInfo.cpp
==============================================================================
--- projects/llvm-ia64/contrib/llvm/lib/Target/IA64/IA64RegisterInfo.cpp	Sat Jun 11 16:44:30 2011	(r222988)
+++ projects/llvm-ia64/contrib/llvm/lib/Target/IA64/IA64RegisterInfo.cpp	Sat Jun 11 17:23:51 2011	(r222989)
@@ -32,7 +32,19 @@ IA64RegisterInfo::getCalleeSavedRegs(con
 BitVector
 IA64RegisterInfo::getReservedRegs(const MachineFunction &MF) const
 {
-  llvm_unreachable(__func__);
+  BitVector rsvd(getNumRegs());
+
+  rsvd.set(IA64::R0); // constant, hardwired 0
+  rsvd.set(IA64::R1); // global data pointer (aka gp)
+  rsvd.set(IA64::R12); // (memory) stack pointer (aka sp)
+  rsvd.set(IA64::R13); // thread pointer (aka tp)
+
+  rsvd.set(IA64::F0); // constant, hardwired 0.0
+  rsvd.set(IA64::F1); // constant, hardwired 1.0
+
+  rsvd.set(IA64::P0); // constant, hardwired 1 (true)
+
+  return rsvd;
 }
 
 void



Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?201106111723.p5BHNpIU084453>