Re: [llvm-commits] [llvm] r46556 - in /llvm/trunk: include/llvm/CodeGen/PseudoSourceValue.h include/llvm/Value.h lib/CodeGen/PseudoSourceValue.cpp

2008-02-05 Thread Dan Gohman
  Some comments on the patch:
   +  + // Save loads/stores matched by a pattern.
  + if (!N-isLeaf()  N-getName().empty() 
  + ((N-getOperator()-getName() == ld) ||
  + (N-getOperator()-getName() == st) ||
   + (N-getOperator()-getName() == ist))) {
  + LSI.push_back(RootName);  + }
  +
 
  I am not sure about this. Perhaps it should be similar to
  what
  InstrInfoEmitter.cpp is doing?

The MayStore and MayLoad properties are per-instruction; the code  
above needs to know which specific SDNodes in the pattern will be  
represented with StoreSDNode or LoadSDNode.
An alternative to checking for st and friends would be to check if  
the node's Opcode field is one of the strings ISD::STORE or  
ISD::LOAD; I guess that's a little more flexible.
  + static const char *PSVNames[] = {
  + FPRel,  + SPRel,  + GPRel,
  + TPRel,
  + CPRel,
  + JTRel
  + };
  
   I am taking exception to the names. FPRel looks too much like it has
  something to do with FP register, GPRel looks like it is referring to
  general purpose register. How about just spill it out? e.g.
  StackObjRel, FixedStackObjRel, GOTRel, ThreadPtrRel,
  ConstPoolRel, JumpTabRel?

Sounds reasonable to me. I'll update this before committing.

Dan

___
llvm-commits mailing list
llvm-commits@cs.uiuc.edu
http://lists.cs.uiuc.edu/mailman/listinfo/llvm-commits


Re: [llvm-commits] [llvm] r46556 - in /llvm/trunk: include/llvm/CodeGen/PseudoSourceValue.h include/llvm/Value.h lib/CodeGen/PseudoSourceValue.cpp

2008-02-01 Thread Evan Cheng
Sorry, I forgot to reply last night. The patch tested out ok.

Thanks!

Evan
On Jan 31, 2008, at 6:08 PM, Dan Gohman wrote:

 Attached is an updated version of this change (46556 and 46585)
 with what I believe is a fix for the static initializer problem,
 but I don't have access to a system where this problem causes
 failures. Could I ask someone who does to try it out?

 Thanks,

 Dan

 -- 
 Dan Gohman, Cray Inc.
 new.patch___
 llvm-commits mailing list
 llvm-commits@cs.uiuc.edu
 http://lists.cs.uiuc.edu/mailman/listinfo/llvm-commits

___
llvm-commits mailing list
llvm-commits@cs.uiuc.edu
http://lists.cs.uiuc.edu/mailman/listinfo/llvm-commits


Re: [llvm-commits] [llvm] r46556 - in /llvm/trunk: include/llvm/CodeGen/PseudoSourceValue.h include/llvm/Value.h lib/CodeGen/PseudoSourceValue.cpp

2008-02-01 Thread Evan Cheng
Some comments on the patch:

+
+// Save loads/stores matched by a pattern.
+if (!N-isLeaf()  N-getName().empty() 
+((N-getOperator()-getName() == ld) ||
+  (N-getOperator()-getName() == st) ||
+  (N-getOperator()-getName() == ist))) {
+  LSI.push_back(RootName);
+}
+

I am not sure about this. Perhaps it should be similar to what  
InstrInfoEmitter.cpp is doing?

// Get information about the SDNode for the operator.
 const SDNodeInfo OpInfo = CDP.getSDNodeInfo(N-getOperator());

 // Notice properties of the node.
 if (OpInfo.hasProperty(SDNPMayStore)) mayStore = true;
 if (OpInfo.hasProperty(SDNPMayLoad)) mayLoad = true;


+  static const char *PSVNames[] = {
+FPRel,
+SPRel,
+GPRel,
+TPRel,
+CPRel,
+JTRel
+  };

I am taking exception to the names. FPRel looks too much like it has  
something to do with FP register, GPRel looks like it is referring to  
general purpose register. How about just spill it out? e.g.  
StackObjRel, FixedStackObjRel, GOTRel, ThreadPtrRel, ConstPoolRel,  
JumpTabRel?

Thanks,

Evan

On Jan 31, 2008, at 6:08 PM, Dan Gohman wrote:

 Attached is an updated version of this change (46556 and 46585)
 with what I believe is a fix for the static initializer problem,
 but I don't have access to a system where this problem causes
 failures. Could I ask someone who does to try it out?

 Thanks,

 Dan

 -- 
 Dan Gohman, Cray Inc.
 new.patch___
 llvm-commits mailing list
 llvm-commits@cs.uiuc.edu
 http://lists.cs.uiuc.edu/mailman/listinfo/llvm-commits

___
llvm-commits mailing list
llvm-commits@cs.uiuc.edu
http://lists.cs.uiuc.edu/mailman/listinfo/llvm-commits


Re: [llvm-commits] [llvm] r46556 - in /llvm/trunk: include/llvm/CodeGen/PseudoSourceValue.h include/llvm/Value.h lib/CodeGen/PseudoSourceValue.cpp

2008-01-31 Thread Chris Lattner

On Jan 31, 2008, at 11:44 AM, Evan Cheng wrote:
 This  is a static initializer, so it can't assume Type::Int8Ty has
 been initialized at this point.

 Can you take a look? Thanks.

A good way to fix this is to replace direct use of the objects with  
simple accessors.  This is how ConstantInt::getTrue() handle's the 'i1  
1' singleton for example.

-Chris

___
llvm-commits mailing list
llvm-commits@cs.uiuc.edu
http://lists.cs.uiuc.edu/mailman/listinfo/llvm-commits


Re: [llvm-commits] [llvm] r46556 - in /llvm/trunk: include/llvm/CodeGen/PseudoSourceValue.h include/llvm/Value.h lib/CodeGen/PseudoSourceValue.cpp

2008-01-31 Thread Dan Gohman
  This  is a static initializer, so it can't assume Type::Int8Ty has
  been initialized at this point.
 
  Can you take a look? Thanks.
 
 A good way to fix this is to replace direct use of the objects with  
 simple accessors.  This is how ConstantInt::getTrue() handle's the 'i1  
 1' singleton for example.

Thanks. I'll take a look at it.

Dan

-- 
Dan Gohman, Cray Inc.
___
llvm-commits mailing list
llvm-commits@cs.uiuc.edu
http://lists.cs.uiuc.edu/mailman/listinfo/llvm-commits


[llvm-commits] [llvm] r46556 - in /llvm/trunk: include/llvm/CodeGen/PseudoSourceValue.h include/llvm/Value.h lib/CodeGen/PseudoSourceValue.cpp

2008-01-30 Thread Dan Gohman
Author: djg
Date: Wed Jan 30 10:35:31 2008
New Revision: 46556

URL: http://llvm.org/viewvc/llvm-project?rev=46556view=rev
Log:
Add a new PseudoSourceValue class, which will be used to help track
memory reference information in the backend. Most of this was written by
Florian Brander, cleanup and updating to TOT by me.

Added:
llvm/trunk/include/llvm/CodeGen/PseudoSourceValue.h
llvm/trunk/lib/CodeGen/PseudoSourceValue.cpp
Modified:
llvm/trunk/include/llvm/Value.h

Added: llvm/trunk/include/llvm/CodeGen/PseudoSourceValue.h
URL: 
http://llvm.org/viewvc/llvm-project/llvm/trunk/include/llvm/CodeGen/PseudoSourceValue.h?rev=46556view=auto

==
--- llvm/trunk/include/llvm/CodeGen/PseudoSourceValue.h (added)
+++ llvm/trunk/include/llvm/CodeGen/PseudoSourceValue.h Wed Jan 30 10:35:31 2008
@@ -0,0 +1,62 @@
+//===-- llvm/CodeGen/PseudoSourceValue.h *- C++ 
-*-===//
+//
+// The LLVM Compiler Infrastructure
+//
+// This file is distributed under the University of Illinois Open Source
+// License. See LICENSE.TXT for details.
+//
+//===--===//
+//
+// This file contains the declaration of the PseudoSourceValue class.
+//
+//===--===//
+
+#ifndef LLVM_CODEGEN_PSEUDOSOURCEVALUE_H
+#define LLVM_CODEGEN_PSEUDOSOURCEVALUE_H
+
+#include llvm/Value.h
+
+namespace llvm {
+  /// PseudoSourceValue - Special value supplied for machine level alias
+  /// analysis. It indicates that the a memory access references the functions
+  /// stack frame (e.g., a spill slot), below the stack frame (e.g., argument
+  /// space), or constant pool.
+  class PseudoSourceValue : public Value {
+const char *name;
+  public:
+explicit PseudoSourceValue(const char *_name);
+
+virtual void print(std::ostream OS) const;
+
+/// classof - Methods for support type inquiry through isa, cast, and
+/// dyn_cast:
+///
+static inline bool classof(const PseudoSourceValue *) { return true; }
+static inline bool classof(const Value *V) {
+  return V-getValueID() == PseudoSourceValueVal;
+}
+
+/// A pseudo source value referencing to the stack frame of a function,
+/// e.g., a spill slot.
+static const PseudoSourceValue FPRel;
+
+/// A source value referencing the area below the stack frame of a 
function,
+/// e.g., the argument space.
+static const PseudoSourceValue SPRel;
+
+/// A source value referencing the global offset table (or something the
+/// like).
+static const PseudoSourceValue GPRel;
+
+/// A source value relative to some kind of thread id/pointer.
+static const PseudoSourceValue TPRel;
+
+/// A SV referencing the constant pool
+static const PseudoSourceValue CPRel;
+
+/// A SV referencing the jump table
+static const PseudoSourceValue JTRel;
+  };
+} // End llvm namespace
+
+#endif

Modified: llvm/trunk/include/llvm/Value.h
URL: 
http://llvm.org/viewvc/llvm-project/llvm/trunk/include/llvm/Value.h?rev=46556r1=46555r2=46556view=diff

==
--- llvm/trunk/include/llvm/Value.h (original)
+++ llvm/trunk/include/llvm/Value.h Wed Jan 30 10:35:31 2008
@@ -188,6 +188,7 @@
 ConstantPointerNullVal,   // This is an instance of ConstantPointerNull
 InlineAsmVal, // This is an instance of InlineAsm
 InstructionVal,   // This is an instance of Instruction
+PseudoSourceValueVal, // This is an instance of PseudoSourceValue
 
 // Markers:
 ConstantFirstVal = FunctionVal,

Added: llvm/trunk/lib/CodeGen/PseudoSourceValue.cpp
URL: 
http://llvm.org/viewvc/llvm-project/llvm/trunk/lib/CodeGen/PseudoSourceValue.cpp?rev=46556view=auto

==
--- llvm/trunk/lib/CodeGen/PseudoSourceValue.cpp (added)
+++ llvm/trunk/lib/CodeGen/PseudoSourceValue.cpp Wed Jan 30 10:35:31 2008
@@ -0,0 +1,33 @@
+//===-- llvm/CodeGen/PseudoSourceValue.cpp --*- C++ 
-*-===//
+//
+// The LLVM Compiler Infrastructure
+//
+// This file is distributed under the University of Illinois Open Source
+// License. See LICENSE.TXT for details.
+//
+//===--===//
+//
+// This file implements the PseudoSourceValue class.
+//
+//===--===//
+
+#include llvm/CodeGen/PseudoSourceValue.h
+#include llvm/DerivedTypes.h
+
+namespace llvm {
+  const PseudoSourceValue PseudoSourceValue::FPRel(FPRel);
+  const PseudoSourceValue PseudoSourceValue::SPRel(SPRel);
+  const PseudoSourceValue PseudoSourceValue::GPRel(GPRel);
+  const PseudoSourceValue PseudoSourceValue::TPRel(TPRel);
+  const