[llvm-commits] [llvm] r41953 - in /llvm/trunk: lib/Target/X86/X86ISelLowering.cpp lib/Target/X86/X86ISelLowering.h test/CodeGen/X86/byval.ll

2007-09-14 Thread Rafael Espindola
Author: rafael
Date: Fri Sep 14 10:48:13 2007
New Revision: 41953

URL: http://llvm.org/viewvc/llvm-project?rev=41953view=rev
Log:
Add support for functions with byval arguments on x86

Modified:
llvm/trunk/lib/Target/X86/X86ISelLowering.cpp
llvm/trunk/lib/Target/X86/X86ISelLowering.h
llvm/trunk/test/CodeGen/X86/byval.ll

Modified: llvm/trunk/lib/Target/X86/X86ISelLowering.cpp
URL: 
http://llvm.org/viewvc/llvm-project/llvm/trunk/lib/Target/X86/X86ISelLowering.cpp?rev=41953r1=41952r2=41953view=diff

==
--- llvm/trunk/lib/Target/X86/X86ISelLowering.cpp (original)
+++ llvm/trunk/lib/Target/X86/X86ISelLowering.cpp Fri Sep 14 10:48:13 2007
@@ -694,6 +694,23 @@
   return VReg;
 }
 
+SDOperand X86TargetLowering::LowerMemArgument(SDOperand Op, SelectionDAG DAG,
+  const CCValAssign VA,
+  MachineFrameInfo *MFI,
+  SDOperand Root, unsigned i) {
+  // Create the nodes corresponding to a load from this parameter slot.
+  int FI = MFI-CreateFixedObject(MVT::getSizeInBits(VA.getValVT())/8,
+  VA.getLocMemOffset());
+  SDOperand FIN = DAG.getFrameIndex(FI, getPointerTy());
+
+  unsigned Flags =  castConstantSDNode(Op.getOperand(3 + i))-getValue();
+
+  if (Flags  ISD::ParamFlags::ByVal)
+return FIN;
+  else
+return DAG.getLoad(VA.getValVT(), Root, FIN, NULL, 0);
+}
+
 SDOperand X86TargetLowering::LowerCCCArguments(SDOperand Op, SelectionDAG DAG,
bool isStdCall) {
   unsigned NumArgs = Op.Val-getNumValues() - 1;
@@ -747,12 +764,7 @@
   ArgValues.push_back(ArgValue);
 } else {
   assert(VA.isMemLoc());
-  
-  // Create the nodes corresponding to a load from this parameter slot.
-  int FI = MFI-CreateFixedObject(MVT::getSizeInBits(VA.getValVT())/8,
-  VA.getLocMemOffset());
-  SDOperand FIN = DAG.getFrameIndex(FI, getPointerTy());
-  ArgValues.push_back(DAG.getLoad(VA.getValVT(), Root, FIN, NULL, 0));
+  ArgValues.push_back(LowerMemArgument(Op, DAG, VA, MFI, Root, i));
 }
   }
   
@@ -1279,17 +1291,7 @@
   ArgValues.push_back(ArgValue);
 } else {
   assert(VA.isMemLoc());
-
-  // Create the nodes corresponding to a load from this parameter slot.
-  int FI = MFI-CreateFixedObject(MVT::getSizeInBits(VA.getValVT())/8,
-  VA.getLocMemOffset());
-  SDOperand FIN = DAG.getFrameIndex(FI, getPointerTy());
-
-  unsigned Flags =  castConstantSDNode(Op.getOperand(3 + i))-getValue();
-  if (Flags  ISD::ParamFlags::ByVal)
-ArgValues.push_back(FIN);
-  else
-ArgValues.push_back(DAG.getLoad(VA.getValVT(), Root, FIN, NULL, 0));
+  ArgValues.push_back(LowerMemArgument(Op, DAG, VA, MFI, Root, i));
 }
   }
   

Modified: llvm/trunk/lib/Target/X86/X86ISelLowering.h
URL: 
http://llvm.org/viewvc/llvm-project/llvm/trunk/lib/Target/X86/X86ISelLowering.h?rev=41953r1=41952r2=41953view=diff

==
--- llvm/trunk/lib/Target/X86/X86ISelLowering.h (original)
+++ llvm/trunk/lib/Target/X86/X86ISelLowering.h Fri Sep 14 10:48:13 2007
@@ -380,6 +380,10 @@
 unsigned CallingConv, SelectionDAG DAG);
 
 
+SDOperand LowerMemArgument(SDOperand Op, SelectionDAG DAG,
+   const CCValAssign VA,  MachineFrameInfo *MFI,
+   SDOperand Root, unsigned i);
+
 SDOperand LowerMemOpCallTo(SDOperand Op, SelectionDAG DAG,
const SDOperand StackPtr,
const CCValAssign VA, SDOperand Chain,

Modified: llvm/trunk/test/CodeGen/X86/byval.ll
URL: 
http://llvm.org/viewvc/llvm-project/llvm/trunk/test/CodeGen/X86/byval.ll?rev=41953r1=41952r2=41953view=diff

==
--- llvm/trunk/test/CodeGen/X86/byval.ll (original)
+++ llvm/trunk/test/CodeGen/X86/byval.ll Fri Sep 14 10:48:13 2007
@@ -1,4 +1,7 @@
-; RUN: llvm-as  %s | llc -march=x86-64 | grep movq.*8.*rsp.*rax
+; RUN: llvm-as  %s | llc -march=x86-64 | grep {movq   8(%rsp), %rax}
+; RUN: llvm-as  %s | llc -march=x86  %t
+; RUN: grep {movl  8(%esp), %edx} %t
+; RUN: grep {movl  4(%esp), %eax} %t
 
 %struct.s = type { i64, i64, i64 }
 


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


Re: [llvm-commits] [llvm] r41775 - in /llvm/trunk: lib/Target/X86/X86InstrInfo.td lib/Target/X86/X86InstrSSE.td lib/Target/X86/X86InstrX86-64.td test/CodeGen/X86/zero-remat.ll

2007-09-14 Thread Evan Cheng

On Sep 10, 2007, at 1:48 PM, Dan Gohman wrote:

 Hi Dan,

 This is not safe because xor will clobber flags. It's a  
 miscompilation
 if the user of the rematerialized value is a conditional move (e.g.
 cmovne).

 Thanks for spotting that!

 The current fix is to X86RegisterInfo::reMaterialize() should
 rematerialize it as a move instruction.

 Are you saying such a fix exists already, or that this is how a fix
 should work? If the latter, I'd prefer to just revert the change to
 the instructions that use xor so that they are not marked
 rematerializable for now (though the ones that use pxor/xorps/xorpd
 are ok).

s/current/correct :-) I've already implemented it though.

Why do you prefer to revert the change?

Evan



 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 mailing list
llvm-commits@cs.uiuc.edu
http://lists.cs.uiuc.edu/mailman/listinfo/llvm-commits


[llvm-commits] CVS: llvm-www/pubs/2007-SOSP-SVA.pdf

2007-09-14 Thread John Criswell


Changes in directory llvm-www/pubs:

2007-SOSP-SVA.pdf added (r1.1)
---
Log message:

SOSP 2007 paper.


---
Diffs of the changes:  (+0 -0)

 2007-SOSP-SVA.pdf |0 
 1 files changed


Index: llvm-www/pubs/2007-SOSP-SVA.pdf



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


[llvm-commits] [llvm-gcc-4.0] r41955 - in /llvm-gcc-4.0/trunk/gcc: llvm-convert.cpp llvm-types.cpp

2007-09-14 Thread Dale Johannesen
Author: johannes
Date: Fri Sep 14 13:51:50 2007
New Revision: 41955

URL: http://llvm.org/viewvc/llvm-project?rev=41955view=rev
Log:
Handle x86 long double in conversions.


Modified:
llvm-gcc-4.0/trunk/gcc/llvm-convert.cpp
llvm-gcc-4.0/trunk/gcc/llvm-types.cpp

Modified: llvm-gcc-4.0/trunk/gcc/llvm-convert.cpp
URL: 
http://llvm.org/viewvc/llvm-project/llvm-gcc-4.0/trunk/gcc/llvm-convert.cpp?rev=41955r1=41954r2=41955view=diff

==
--- llvm-gcc-4.0/trunk/gcc/llvm-convert.cpp (original)
+++ llvm-gcc-4.0/trunk/gcc/llvm-convert.cpp Fri Sep 14 13:51:50 2007
@@ -5569,31 +5569,55 @@
 int UArr[2];
 double V;
   };
-  REAL_VALUE_TO_TARGET_DOUBLE(TREE_REAL_CST(exp), RealArr);
-  
-  // Here's how this works:
-  // REAL_VALUE_TO_TARGET_DOUBLE() will generate the floating point number
-  //  as an array of integers in the hosts's representation.  Each integer
-  // in the array will hold 32 bits of the result REGARDLESS OF THE HOST'S
-  //  INTEGER SIZE.
-  //
-  // This, then, makes the conversion pretty simple.  The tricky part is
-  // getting the byte ordering correct and make sure you don't print any
-  // more than 32 bits per integer on platforms with ints  32 bits.
-  //
-  bool HostBigEndian = false;
+  if (Ty==Type::FloatTy || Ty==Type::DoubleTy) {
+REAL_VALUE_TO_TARGET_DOUBLE(TREE_REAL_CST(exp), RealArr);
+
+// Here's how this works:
+// REAL_VALUE_TO_TARGET_DOUBLE() will generate the floating point number
+//  as an array of integers in the hosts's representation.  Each integer
+// in the array will hold 32 bits of the result REGARDLESS OF THE HOST'S
+//  INTEGER SIZE.
+//
+// This, then, makes the conversion pretty simple.  The tricky part is
+// getting the byte ordering correct and make sure you don't print any
+// more than 32 bits per integer on platforms with ints  32 bits.
+//
+bool HostBigEndian = false;
 #ifdef HOST_WORDS_BIG_ENDIAN
-  HostBigEndian = true;
+HostBigEndian = true;
 #endif
-  
-  UArr[0] = RealArr[0];   // Long - int convert
-  UArr[1] = RealArr[1];
 
-  if (WORDS_BIG_ENDIAN != HostBigEndian)
-std::swap(UArr[0], UArr[1]);
-  
-  return ConstantFP::get(Ty, Ty==Type::FloatTy ? APFloat((float)V)
-   : APFloat(V));
+UArr[0] = RealArr[0];   // Long - int convert
+UArr[1] = RealArr[1];
+
+if (WORDS_BIG_ENDIAN != HostBigEndian)
+  std::swap(UArr[0], UArr[1]);
+
+return ConstantFP::get(Ty, Ty==Type::FloatTy ? APFloat((float)V)
+ : APFloat(V));
+  } else if (Ty==Type::X86_FP80Ty) {
+ long RealArr[4];
+ uint64_t UArr[2];
+ REAL_VALUE_TO_TARGET_LONG_DOUBLE(TREE_REAL_CST(exp), RealArr);
+
+bool HostBigEndian = false;
+#ifdef HOST_WORDS_BIG_ENDIAN
+HostBigEndian = true;
+#endif
+
+if (WORDS_BIG_ENDIAN != HostBigEndian) {
+// FIXME
+} else {
+  UArr[0] = ((uint64_t)((uint16_t)RealArr[2])  48) |
+((uint64_t)((uint32_t)RealArr[1])  16) |
+((uint64_t)((uint16_t)(RealArr[0]  16)));
+  UArr[1] = (uint16_t)RealArr[0];
+
+return ConstantFP::get(Ty, APFloat(APInt(80, 2, UArr)));
+}
+  }
+  assert(0  Floating point type not handled yet);
+  return 0;   // outwit compiler warning
 }
 
 Constant *TreeConstantToLLVM::ConvertVECTOR_CST(tree exp) {

Modified: llvm-gcc-4.0/trunk/gcc/llvm-types.cpp
URL: 
http://llvm.org/viewvc/llvm-project/llvm-gcc-4.0/trunk/gcc/llvm-types.cpp?rev=41955r1=41954r2=41955view=diff

==
--- llvm-gcc-4.0/trunk/gcc/llvm-types.cpp (original)
+++ llvm-gcc-4.0/trunk/gcc/llvm-types.cpp Fri Sep 14 13:51:50 2007
@@ -698,6 +698,7 @@
   abort();
 case 32: return SET_TYPE_LLVM(type, Type::FloatTy);
 case 64: return SET_TYPE_LLVM(type, Type::DoubleTy);
+case 80: return SET_TYPE_LLVM(type, Type::X86_FP80Ty);
 case 128:
   // 128-bit long doubles map onto { double, double }.
   const Type *Ty = Type::DoubleTy;


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


[llvm-commits] [llvm] r41775 - in /llvm/trunk: lib/Target/X86/X86InstrInfo.td lib/Target/X86/X86InstrSSE.td lib/Target/X86/X86InstrX86-64.td test/CodeGen/X86/zero-remat.ll

2007-09-14 Thread Dan Gohman
 Are you saying such a fix exists already, or that this is how a fix
 should work? If the latter, I'd prefer to just revert the change to
 the instructions that use xor so that they are not marked
 rematerializable for now (though the ones that use pxor/xorps/xorpd
 are ok).

 s/current/correct :-) I've already implemented it though.

Ok, thanks!

 Why do you prefer to revert the change?

I don't, now that the fix is in.

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] r41956 - in /llvm/trunk: include/llvm/CodeGen/MachineInstr.h lib/CodeGen/MachineInstr.cpp lib/Support/APFloat.cpp lib/System/Unix/Program.inc utils/TableGen/CodeGenRegisters.h

2007-09-14 Thread Dan Gohman
Author: djg
Date: Fri Sep 14 15:08:19 2007
New Revision: 41956

URL: http://llvm.org/viewvc/llvm-project?rev=41956view=rev
Log:
Remove spurious consts. This fixes warnings with compilers that
are strict about such things.

Modified:
llvm/trunk/include/llvm/CodeGen/MachineInstr.h
llvm/trunk/lib/CodeGen/MachineInstr.cpp
llvm/trunk/lib/Support/APFloat.cpp
llvm/trunk/lib/System/Unix/Program.inc
llvm/trunk/utils/TableGen/CodeGenRegisters.h

Modified: llvm/trunk/include/llvm/CodeGen/MachineInstr.h
URL: 
http://llvm.org/viewvc/llvm-project/llvm/trunk/include/llvm/CodeGen/MachineInstr.h?rev=41956r1=41955r2=41956view=diff

==
--- llvm/trunk/include/llvm/CodeGen/MachineInstr.h (original)
+++ llvm/trunk/include/llvm/CodeGen/MachineInstr.h Fri Sep 14 15:08:19 2007
@@ -363,7 +363,7 @@
 
   /// getOpcode - Returns the opcode of this MachineInstr.
   ///
-  const int getOpcode() const;
+  int getOpcode() const;
 
   /// Access to explicit operands of the instruction.
   ///

Modified: llvm/trunk/lib/CodeGen/MachineInstr.cpp
URL: 
http://llvm.org/viewvc/llvm-project/llvm/trunk/lib/CodeGen/MachineInstr.cpp?rev=41956r1=41955r2=41956view=diff

==
--- llvm/trunk/lib/CodeGen/MachineInstr.cpp (original)
+++ llvm/trunk/lib/CodeGen/MachineInstr.cpp Fri Sep 14 15:08:19 2007
@@ -116,7 +116,7 @@
 
 /// getOpcode - Returns the opcode of this MachineInstr.
 ///
-const int MachineInstr::getOpcode() const {
+int MachineInstr::getOpcode() const {
   return TID-Opcode;
 }
 

Modified: llvm/trunk/lib/Support/APFloat.cpp
URL: 
http://llvm.org/viewvc/llvm-project/llvm/trunk/lib/Support/APFloat.cpp?rev=41956r1=41955r2=41956view=diff

==
--- llvm/trunk/lib/Support/APFloat.cpp (original)
+++ llvm/trunk/lib/Support/APFloat.cpp Fri Sep 14 15:08:19 2007
@@ -1629,7 +1629,7 @@
 
 APInt
 APFloat::convertDoubleAPFloatToAPInt() const {
-  assert(semantics == (const llvm::fltSemantics* const)IEEEdouble);
+  assert(semantics == (const llvm::fltSemantics*)IEEEdouble);
   assert (partCount()==1);
 
   uint64_t myexponent, mysignificand;
@@ -1659,7 +1659,7 @@
 
 APInt
 APFloat::convertFloatAPFloatToAPInt() const {
-  assert(semantics == (const llvm::fltSemantics* const)IEEEsingle);
+  assert(semantics == (const llvm::fltSemantics*)IEEEsingle);
   assert (partCount()==1);
   
   uint32_t myexponent, mysignificand;

Modified: llvm/trunk/lib/System/Unix/Program.inc
URL: 
http://llvm.org/viewvc/llvm-project/llvm/trunk/lib/System/Unix/Program.inc?rev=41956r1=41955r2=41956view=diff

==
--- llvm/trunk/lib/System/Unix/Program.inc (original)
+++ llvm/trunk/lib/System/Unix/Program.inc Fri Sep 14 15:08:19 2007
@@ -196,9 +196,9 @@
   
   // Execute!
   if (envp != 0)
-execve (path.c_str(), (char** const)args, (char**)envp);
+execve (path.c_str(), (char**)args, (char**)envp);
   else
-execv (path.c_str(), (char** const)args);
+execv (path.c_str(), (char**)args);
   // If the execve() failed, we should exit and let the parent pick up
   // our non-zero exit status.
   exit (errno);

Modified: llvm/trunk/utils/TableGen/CodeGenRegisters.h
URL: 
http://llvm.org/viewvc/llvm-project/llvm/trunk/utils/TableGen/CodeGenRegisters.h?rev=41956r1=41955r2=41956view=diff

==
--- llvm/trunk/utils/TableGen/CodeGenRegisters.h (original)
+++ llvm/trunk/utils/TableGen/CodeGenRegisters.h Fri Sep 14 15:08:19 2007
@@ -45,7 +45,7 @@
 const std::vectorMVT::ValueType getValueTypes() const { return VTs; }
 unsigned getNumValueTypes() const { return VTs.size(); }
 
-const MVT::ValueType getValueTypeNum(unsigned VTNum) const {
+MVT::ValueType getValueTypeNum(unsigned VTNum) const {
   if (VTNum  VTs.size())
 return VTs[VTNum];
   assert(0  VTNum greater than number of ValueTypes in RegClass!);


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


[llvm-commits] [llvm] r41957 - /llvm/trunk/lib/Analysis/ScalarEvolutionExpander.cpp

2007-09-14 Thread Dan Gohman
Author: djg
Date: Fri Sep 14 15:11:40 2007
New Revision: 41957

URL: http://llvm.org/viewvc/llvm-project?rev=41957view=rev
Log:
Change tmp. to tmp for temporaries created by ScalarEvolutionExpander
for consistency with many other transforms.

Modified:
llvm/trunk/lib/Analysis/ScalarEvolutionExpander.cpp

Modified: llvm/trunk/lib/Analysis/ScalarEvolutionExpander.cpp
URL: 
http://llvm.org/viewvc/llvm-project/llvm/trunk/lib/Analysis/ScalarEvolutionExpander.cpp?rev=41957r1=41956r2=41957view=diff

==
--- llvm/trunk/lib/Analysis/ScalarEvolutionExpander.cpp (original)
+++ llvm/trunk/lib/Analysis/ScalarEvolutionExpander.cpp Fri Sep 14 15:11:40 2007
@@ -94,7 +94,7 @@
   }
 
   // If we don't have 
-  return BinaryOperator::create(Opcode, LHS, RHS, tmp., InsertPt);
+  return BinaryOperator::create(Opcode, LHS, RHS, tmp, InsertPt);
 }
 
 Value *SCEVExpander::visitMulExpr(SCEVMulExpr *S) {


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


[llvm-commits] [llvm] r41958 - in /llvm/trunk: include/llvm/CodeGen/ lib/CodeGen/ lib/Target/ lib/Target/ARM/ lib/Target/PowerPC/ lib/Target/X86/

2007-09-14 Thread Dan Gohman
Author: djg
Date: Fri Sep 14 15:33:02 2007
New Revision: 41958

URL: http://llvm.org/viewvc/llvm-project?rev=41958view=rev
Log:
Remove isReg, isImm, and isMBB, and change all their users to use 
isRegister, isImmediate, and isMachineBasicBlock, which are equivalent,
and more popular.

Modified:
llvm/trunk/include/llvm/CodeGen/LiveVariables.h
llvm/trunk/include/llvm/CodeGen/MachineInstr.h
llvm/trunk/lib/CodeGen/AsmPrinter.cpp
llvm/trunk/lib/CodeGen/LiveIntervalAnalysis.cpp
llvm/trunk/lib/CodeGen/LiveVariables.cpp
llvm/trunk/lib/CodeGen/LowerSubregs.cpp
llvm/trunk/lib/CodeGen/MachineInstr.cpp
llvm/trunk/lib/CodeGen/RegisterScavenging.cpp
llvm/trunk/lib/CodeGen/SimpleRegisterCoalescing.cpp
llvm/trunk/lib/CodeGen/VirtRegMap.cpp
llvm/trunk/lib/Target/ARM/ARMInstrInfo.cpp
llvm/trunk/lib/Target/PowerPC/PPCAsmPrinter.cpp
llvm/trunk/lib/Target/PowerPC/PPCBranchSelector.cpp
llvm/trunk/lib/Target/TargetInstrInfo.cpp
llvm/trunk/lib/Target/X86/X86ATTAsmPrinter.cpp
llvm/trunk/lib/Target/X86/X86FloatingPoint.cpp
llvm/trunk/lib/Target/X86/X86RegisterInfo.cpp

Modified: llvm/trunk/include/llvm/CodeGen/LiveVariables.h
URL: 
http://llvm.org/viewvc/llvm-project/llvm/trunk/include/llvm/CodeGen/LiveVariables.h?rev=41958r1=41957r2=41958view=diff

==
--- llvm/trunk/include/llvm/CodeGen/LiveVariables.h (original)
+++ llvm/trunk/include/llvm/CodeGen/LiveVariables.h Fri Sep 14 15:33:02 2007
@@ -229,7 +229,7 @@
 bool Removed = false;
 for (unsigned i = 0, e = MI-getNumOperands(); i != e; ++i) {
   MachineOperand MO = MI-getOperand(i);
-  if (MO.isReg()  MO.isKill()  MO.getReg() == reg) {
+  if (MO.isRegister()  MO.isKill()  MO.getReg() == reg) {
 MO.unsetIsKill();
 Removed = true;
 break;
@@ -266,7 +266,7 @@
 bool Removed = false;
 for (unsigned i = 0, e = MI-getNumOperands(); i != e; ++i) {
   MachineOperand MO = MI-getOperand(i);
-  if (MO.isReg()  MO.isDef()  MO.getReg() == reg) {
+  if (MO.isRegister()  MO.isDef()  MO.getReg() == reg) {
 MO.unsetIsDead();
 Removed = true;
 break;

Modified: llvm/trunk/include/llvm/CodeGen/MachineInstr.h
URL: 
http://llvm.org/viewvc/llvm-project/llvm/trunk/include/llvm/CodeGen/MachineInstr.h?rev=41958r1=41957r2=41958view=diff

==
--- llvm/trunk/include/llvm/CodeGen/MachineInstr.h (original)
+++ llvm/trunk/include/llvm/CodeGen/MachineInstr.h Fri Sep 14 15:33:02 2007
@@ -131,10 +131,6 @@
 
   /// Accessors that tell you what kind of MachineOperand you're looking at.
   ///
-  bool isReg() const { return opType == MO_Register; }
-  bool isImm() const { return opType == MO_Immediate; }
-  bool isMBB() const { return opType == MO_MachineBasicBlock; }
-  
   bool isRegister() const { return opType == MO_Register; }
   bool isImmediate() const { return opType == MO_Immediate; }
   bool isMachineBasicBlock() const { return opType == MO_MachineBasicBlock; }
@@ -145,12 +141,12 @@
   bool isExternalSymbol() const { return opType == MO_ExternalSymbol; }
 
   int64_t getImm() const {
-assert(isImm()  Wrong MachineOperand accessor);
+assert(isImmediate()  Wrong MachineOperand accessor);
 return contents.immedVal;
   }
   
   int64_t getImmedValue() const {
-assert(isImm()  Wrong MachineOperand accessor);
+assert(isImmediate()  Wrong MachineOperand accessor);
 return contents.immedVal;
   }
   MachineBasicBlock *getMBB() const {
@@ -257,11 +253,11 @@
   }
 
   void setImmedValue(int64_t immVal) {
-assert(isImm()  Wrong MachineOperand mutator);
+assert(isImmediate()  Wrong MachineOperand mutator);
 contents.immedVal = immVal;
   }
   void setImm(int64_t immVal) {
-assert(isImm()  Wrong MachineOperand mutator);
+assert(isImmediate()  Wrong MachineOperand mutator);
 contents.immedVal = immVal;
   }
 

Modified: llvm/trunk/lib/CodeGen/AsmPrinter.cpp
URL: 
http://llvm.org/viewvc/llvm-project/llvm/trunk/lib/CodeGen/AsmPrinter.cpp?rev=41958r1=41957r2=41958view=diff

==
--- llvm/trunk/lib/CodeGen/AsmPrinter.cpp (original)
+++ llvm/trunk/lib/CodeGen/AsmPrinter.cpp Fri Sep 14 15:33:02 2007
@@ -982,7 +982,7 @@
   
   // Count the number of register definitions.
   unsigned NumDefs = 0;
-  for (; MI-getOperand(NumDefs).isReg()  MI-getOperand(NumDefs).isDef();
+  for (; MI-getOperand(NumDefs).isRegister()  
MI-getOperand(NumDefs).isDef();
++NumDefs)
 assert(NumDefs != NumOperands-1  No asm string?);
   

Modified: llvm/trunk/lib/CodeGen/LiveIntervalAnalysis.cpp
URL: 
http://llvm.org/viewvc/llvm-project/llvm/trunk/lib/CodeGen/LiveIntervalAnalysis.cpp?rev=41958r1=41957r2=41958view=diff

==
--- 

[llvm-commits] [llvm] r41960 - in /llvm/trunk: include/llvm/ADT/FoldingSet.h lib/Support/FoldingSet.cpp

2007-09-14 Thread Dan Gohman
Author: djg
Date: Fri Sep 14 15:48:42 2007
New Revision: 41960

URL: http://llvm.org/viewvc/llvm-project?rev=41960view=rev
Log:
And an FoldingSetImpl::NodeID::AddInteger overload for int64_t, to avoid
ambiguity.

Modified:
llvm/trunk/include/llvm/ADT/FoldingSet.h
llvm/trunk/lib/Support/FoldingSet.cpp

Modified: llvm/trunk/include/llvm/ADT/FoldingSet.h
URL: 
http://llvm.org/viewvc/llvm-project/llvm/trunk/include/llvm/ADT/FoldingSet.h?rev=41960r1=41959r2=41960view=diff

==
--- llvm/trunk/include/llvm/ADT/FoldingSet.h (original)
+++ llvm/trunk/include/llvm/ADT/FoldingSet.h Fri Sep 14 15:48:42 2007
@@ -149,6 +149,7 @@
 void AddPointer(const void *Ptr);
 void AddInteger(signed I);
 void AddInteger(unsigned I);
+void AddInteger(int64_t I);
 void AddInteger(uint64_t I);
 void AddFloat(float F);
 void AddDouble(double D);

Modified: llvm/trunk/lib/Support/FoldingSet.cpp
URL: 
http://llvm.org/viewvc/llvm-project/llvm/trunk/lib/Support/FoldingSet.cpp?rev=41960r1=41959r2=41960view=diff

==
--- llvm/trunk/lib/Support/FoldingSet.cpp (original)
+++ llvm/trunk/lib/Support/FoldingSet.cpp Fri Sep 14 15:48:42 2007
@@ -40,6 +40,9 @@
 void FoldingSetImpl::NodeID::AddInteger(unsigned I) {
   Bits.push_back(I);
 }
+void FoldingSetImpl::NodeID::AddInteger(int64_t I) {
+  AddInteger((uint64_t)I);
+}
 void FoldingSetImpl::NodeID::AddInteger(uint64_t I) {
   Bits.push_back(unsigned(I));
   


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


[llvm-commits] [llvm] r41959 - /llvm/trunk/test/CodeGen/PowerPC/fabs.ll

2007-09-14 Thread Dan Gohman
Author: djg
Date: Fri Sep 14 15:37:18 2007
New Revision: 41959

URL: http://llvm.org/viewvc/llvm-project?rev=41959view=rev
Log:
Add explicit triples to avoid default behavior that varies by host.

Modified:
llvm/trunk/test/CodeGen/PowerPC/fabs.ll

Modified: llvm/trunk/test/CodeGen/PowerPC/fabs.ll
URL: 
http://llvm.org/viewvc/llvm-project/llvm/trunk/test/CodeGen/PowerPC/fabs.ll?rev=41959r1=41958r2=41959view=diff

==
--- llvm/trunk/test/CodeGen/PowerPC/fabs.ll (original)
+++ llvm/trunk/test/CodeGen/PowerPC/fabs.ll Fri Sep 14 15:37:18 2007
@@ -1,4 +1,4 @@
-; RUN: llvm-as  %s | llc -march=ppc32 | grep {fabs f1, f1}
+; RUN: llvm-as  %s | llc -march=ppc32 -mtriple=powerpc-apple-darwin | grep 
{fabs f1, f1}
 
 define double @fabs(double %f) {
 entry:


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


[llvm-commits] [llvm] r41962 - in /llvm/trunk/lib/Target/X86: X86InstrFPStack.td X86InstrInfo.cpp X86InstrInfo.td X86InstrSSE.td X86InstrX86-64.td

2007-09-14 Thread Evan Cheng
Author: evancheng
Date: Fri Sep 14 16:48:26 2007
New Revision: 41962

URL: http://llvm.org/viewvc/llvm-project?rev=41962view=rev
Log:
Add implicit def of EFLAGS on those instructions that may modify flags.

Modified:
llvm/trunk/lib/Target/X86/X86InstrFPStack.td
llvm/trunk/lib/Target/X86/X86InstrInfo.cpp
llvm/trunk/lib/Target/X86/X86InstrInfo.td
llvm/trunk/lib/Target/X86/X86InstrSSE.td
llvm/trunk/lib/Target/X86/X86InstrX86-64.td

Modified: llvm/trunk/lib/Target/X86/X86InstrFPStack.td
URL: 
http://llvm.org/viewvc/llvm-project/llvm/trunk/lib/Target/X86/X86InstrFPStack.td?rev=41962r1=41961r2=41962view=diff

==
--- llvm/trunk/lib/Target/X86/X86InstrFPStack.td (original)
+++ llvm/trunk/lib/Target/X86/X86InstrFPStack.td Fri Sep 14 16:48:26 2007
@@ -488,7 +488,7 @@
 def UCOM_FpIr80: FpI_(outs), (ins RFP80:$lhs, RFP80:$rhs), CompareFP,
   [(X86cmp RFP80:$lhs, RFP80:$rhs)]; // CC = ST(0) cmp ST(i)
 
-let Uses = [ST0] in {
+let Defs = [EFLAGS], Uses = [ST0] in {
 def UCOM_Fr: FPI0xE0, AddRegFrm,// FPSW = cmp ST(0) with ST(i)
 (outs), (ins RST:$reg),
 fucom\t$reg, DD;

Modified: llvm/trunk/lib/Target/X86/X86InstrInfo.cpp
URL: 
http://llvm.org/viewvc/llvm-project/llvm/trunk/lib/Target/X86/X86InstrInfo.cpp?rev=41962r1=41961r2=41962view=diff

==
--- llvm/trunk/lib/Target/X86/X86InstrInfo.cpp (original)
+++ llvm/trunk/lib/Target/X86/X86InstrInfo.cpp Fri Sep 14 16:48:26 2007
@@ -182,7 +182,7 @@
 break;
   }
   case X86::SHL64ri: {
-assert(MI-getNumOperands() == 3  Unknown shift instruction!);
+assert(MI-getNumOperands() = 3  Unknown shift instruction!);
 // NOTE: LEA doesn't produce flags like shift does, but LLVM never uses
 // the flags produced by a shift yet, so this is safe.
 unsigned Dest = MI-getOperand(0).getReg();
@@ -195,7 +195,7 @@
 break;
   }
   case X86::SHL32ri: {
-assert(MI-getNumOperands() == 3  Unknown shift instruction!);
+assert(MI-getNumOperands() = 3  Unknown shift instruction!);
 // NOTE: LEA doesn't produce flags like shift does, but LLVM never uses
 // the flags produced by a shift yet, so this is safe.
 unsigned Dest = MI-getOperand(0).getReg();
@@ -210,7 +210,7 @@
 break;
   }
   case X86::SHL16ri: {
-assert(MI-getNumOperands() == 3  Unknown shift instruction!);
+assert(MI-getNumOperands() = 3  Unknown shift instruction!);
 // NOTE: LEA doesn't produce flags like shift does, but LLVM never uses
 // the flags produced by a shift yet, so this is safe.
 unsigned Dest = MI-getOperand(0).getReg();
@@ -259,40 +259,40 @@
   switch (MI-getOpcode()) {
   case X86::INC32r:
   case X86::INC64_32r:
-assert(MI-getNumOperands() == 2  Unknown inc instruction!);
+assert(MI-getNumOperands() = 2  Unknown inc instruction!);
 NewMI = addRegOffset(BuildMI(get(X86::LEA32r), Dest), Src, 1);
 break;
   case X86::INC16r:
   case X86::INC64_16r:
 if (DisableLEA16) return 0;
-assert(MI-getNumOperands() == 2  Unknown inc instruction!);
+assert(MI-getNumOperands() = 2  Unknown inc instruction!);
 NewMI = addRegOffset(BuildMI(get(X86::LEA16r), Dest), Src, 1);
 break;
   case X86::DEC32r:
   case X86::DEC64_32r:
-assert(MI-getNumOperands() == 2  Unknown dec instruction!);
+assert(MI-getNumOperands() = 2  Unknown dec instruction!);
 NewMI = addRegOffset(BuildMI(get(X86::LEA32r), Dest), Src, -1);
 break;
   case X86::DEC16r:
   case X86::DEC64_16r:
 if (DisableLEA16) return 0;
-assert(MI-getNumOperands() == 2  Unknown dec instruction!);
+assert(MI-getNumOperands() = 2  Unknown dec instruction!);
 NewMI = addRegOffset(BuildMI(get(X86::LEA16r), Dest), Src, -1);
 break;
   case X86::ADD32rr:
-assert(MI-getNumOperands() == 3  Unknown add instruction!);
+assert(MI-getNumOperands() = 3  Unknown add instruction!);
 NewMI = addRegReg(BuildMI(get(X86::LEA32r), Dest), Src,
  MI-getOperand(2).getReg());
 break;
   case X86::ADD16rr:
 if (DisableLEA16) return 0;
-assert(MI-getNumOperands() == 3  Unknown add instruction!);
+assert(MI-getNumOperands() = 3  Unknown add instruction!);
 NewMI = addRegReg(BuildMI(get(X86::LEA16r), Dest), Src,
  MI-getOperand(2).getReg());
 break;
   case X86::ADD32ri:
   case X86::ADD32ri8:
-assert(MI-getNumOperands() == 3  Unknown add instruction!);
+assert(MI-getNumOperands() = 3  Unknown add instruction!);
 if (MI-getOperand(2).isImmediate())
   NewMI = addRegOffset(BuildMI(get(X86::LEA32r), Dest), Src,
   MI-getOperand(2).getImmedValue());
@@ -300,7 +300,7 @@
   case X86::ADD16ri:
   case X86::ADD16ri8:
 if (DisableLEA16) return 0;
-assert(MI-getNumOperands() == 3  Unknown add instruction!);
+

[llvm-commits] [llvm-gcc-4.2] r41963 - in /llvm-gcc-4.2/trunk/gcc: llvm-convert.cpp llvm-types.cpp

2007-09-14 Thread Dale Johannesen
Author: johannes
Date: Fri Sep 14 16:53:34 2007
New Revision: 41963

URL: http://llvm.org/viewvc/llvm-project?rev=41963view=rev
Log:
Support x86 long double in conversions.


Modified:
llvm-gcc-4.2/trunk/gcc/llvm-convert.cpp
llvm-gcc-4.2/trunk/gcc/llvm-types.cpp

Modified: llvm-gcc-4.2/trunk/gcc/llvm-convert.cpp
URL: 
http://llvm.org/viewvc/llvm-project/llvm-gcc-4.2/trunk/gcc/llvm-convert.cpp?rev=41963r1=41962r2=41963view=diff

==
--- llvm-gcc-4.2/trunk/gcc/llvm-convert.cpp (original)
+++ llvm-gcc-4.2/trunk/gcc/llvm-convert.cpp Fri Sep 14 16:53:34 2007
@@ -5164,28 +5164,47 @@
 int UArr[2];
 double V;
   };
-  REAL_VALUE_TO_TARGET_DOUBLE(TREE_REAL_CST(exp), RealArr);
-  
-  // Here's how this works:
-  // REAL_VALUE_TO_TARGET_DOUBLE() will generate the floating point number
-  // as an array of integers in the target's representation.  Each integer
-  // in the array will hold 32 bits of the result REGARDLESS OF THE HOST'S
-  // INTEGER SIZE.
-  //
-  // This, then, makes the conversion pretty simple.  The tricky part is
-  // getting the byte ordering correct and make sure you don't print any
-  // more than 32 bits per integer on platforms with ints  32 bits.
-
-  UArr[0] = RealArr[0];   // Long - int convert
-  UArr[1] = RealArr[1];
-
-  // FIXME: verify on big-endian targets and cross from big- to little- endian
-  // targets
-  if (FLOAT_WORDS_BIG_ENDIAN)
-std::swap(UArr[0], UArr[1]);
+  if (Ty==Type::FloatTy || Ty==Type::DoubleTy) {
+REAL_VALUE_TO_TARGET_DOUBLE(TREE_REAL_CST(exp), RealArr);
+
+// Here's how this works:
+// REAL_VALUE_TO_TARGET_DOUBLE() will generate the floating point number
+// as an array of integers in the target's representation.  Each integer
+// in the array will hold 32 bits of the result REGARDLESS OF THE HOST'S
+// INTEGER SIZE.
+//
+// This, then, makes the conversion pretty simple.  The tricky part is
+// getting the byte ordering correct and make sure you don't print any
+// more than 32 bits per integer on platforms with ints  32 bits.
+
+UArr[0] = RealArr[0];   // Long - int convert
+UArr[1] = RealArr[1];
+
+// FIXME: verify on big-endian targets and cross from big- to little- 
endian
+// targets
+if (FLOAT_WORDS_BIG_ENDIAN)
+  std::swap(UArr[0], UArr[1]);
+
+return ConstantFP::get(Ty, Ty==Type::FloatTy ? APFloat((float)V)
+ : APFloat(V));
+  } else if (Ty==Type::X86_FP80Ty) {
+ long RealArr[4];
+ uint64_t UArr[2];
+ REAL_VALUE_TO_TARGET_LONG_DOUBLE(TREE_REAL_CST(exp), RealArr);
+
+if (FLOAT_WORDS_BIG_ENDIAN) {
+// FIXME
+} else {
+  UArr[0] = ((uint64_t)((uint16_t)RealArr[2])  48) |
+((uint64_t)((uint32_t)RealArr[1])  16) |
+((uint64_t)((uint16_t)(RealArr[0]  16)));
+  UArr[1] = (uint16_t)RealArr[0];
 
-  return ConstantFP::get(Ty, Ty==Type::FloatTy ? APFloat((float)V)
-   : APFloat(V));
+return ConstantFP::get(Ty, APFloat(APInt(80, 2, UArr)));
+}
+  }
+  assert(0  Floating point type not handled yet);
+  return 0;   // outwit compiler warning
 }
 
 Constant *TreeConstantToLLVM::ConvertVECTOR_CST(tree exp) {

Modified: llvm-gcc-4.2/trunk/gcc/llvm-types.cpp
URL: 
http://llvm.org/viewvc/llvm-project/llvm-gcc-4.2/trunk/gcc/llvm-types.cpp?rev=41963r1=41962r2=41963view=diff

==
--- llvm-gcc-4.2/trunk/gcc/llvm-types.cpp (original)
+++ llvm-gcc-4.2/trunk/gcc/llvm-types.cpp Fri Sep 14 16:53:34 2007
@@ -730,6 +730,7 @@
   abort();
 case 32: return SET_TYPE_LLVM(type, Type::FloatTy);
 case 64: return SET_TYPE_LLVM(type, Type::DoubleTy);
+case 80: return SET_TYPE_LLVM(type, Type::X86_FP80Ty);
 case 128:
   // 128-bit long doubles map onto { double, double }.
   const Type *Ty = Type::DoubleTy;


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


[llvm-commits] remove libstdc++ from llvm-gcc configure targets

2007-09-14 Thread Eric Christopher

As it says. Tested on x86-darwin.

-eric

2007-09-14  Eric Christopher  [EMAIL PROTECTED]

	* configure.in (powerpc*-*-darwin*): Add target-libstdc++-v3 to  
noconfidirs.

(*-*-darwin*): Ditto.
* configure: Regenerate.

Index: configure.in
===
--- configure.in(revision 41963)
+++ configure.in(working copy)
@@ -371,12 +371,12 @@ case ${target} in
   powerpc-*-darwin*)
 noconfigdirs=$noconfigdirs bfd binutils ld gas opcodes gdb gprof
 # APPLE LOCAL 64-bit bringup
-noconfigdirs=$noconfigdirs target-libobjc
+noconfigdirs=$noconfigdirs target-libobjc target-libstdc++-v3
 ;;
   *-*-darwin*)
 noconfigdirs=$noconfigdirs bfd binutils ld gas opcodes gdb gprof
 # APPLE LOCAL 64-bit bringup
-noconfigdirs=$noconfigdirs target-libobjc ${libgcj}
+noconfigdirs=$noconfigdirs target-libobjc ${libgcj} target-libstdc++-v3
 ;;
   *-*-freebsd[[12]] | *-*-freebsd[[12]].* | *-*-freebsd*aout*)
 noconfigdirs=$noconfigdirs target-newlib target-libgloss ${libgcj}


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


[llvm-commits] [llvm-gcc-4.0] r41965 - /llvm-gcc-4.0/trunk/configure.in

2007-09-14 Thread Chris Lattner
Author: lattner
Date: Fri Sep 14 17:25:06 2007
New Revision: 41965

URL: http://llvm.org/viewvc/llvm-project?rev=41965view=rev
Log:
When building on darwin, automatically disable building libstdc++.  Patch by
Eric Christopher!

Modified:
llvm-gcc-4.0/trunk/configure.in

Modified: llvm-gcc-4.0/trunk/configure.in
URL: 
http://llvm.org/viewvc/llvm-project/llvm-gcc-4.0/trunk/configure.in?rev=41965r1=41964r2=41965view=diff

==
--- llvm-gcc-4.0/trunk/configure.in (original)
+++ llvm-gcc-4.0/trunk/configure.in Fri Sep 14 17:25:06 2007
@@ -371,12 +371,12 @@
   powerpc-*-darwin*)
 noconfigdirs=$noconfigdirs bfd binutils ld gas opcodes gdb gprof
 # APPLE LOCAL 64-bit bringup
-noconfigdirs=$noconfigdirs target-libobjc
+noconfigdirs=$noconfigdirs target-libobjc target-libstdc++-v3
 ;;
   *-*-darwin*)
 noconfigdirs=$noconfigdirs bfd binutils ld gas opcodes gdb gprof
 # APPLE LOCAL 64-bit bringup
-noconfigdirs=$noconfigdirs target-libobjc ${libgcj}
+noconfigdirs=$noconfigdirs target-libobjc ${libgcj} target-libstdc++-v3
 ;;
   *-*-freebsd[[12]] | *-*-freebsd[[12]].* | *-*-freebsd*aout*)
 noconfigdirs=$noconfigdirs target-newlib target-libgloss ${libgcj}


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


[llvm-commits] [llvm-gcc-4.0] r41966 - /llvm-gcc-4.0/trunk/configure

2007-09-14 Thread Chris Lattner
Author: lattner
Date: Fri Sep 14 17:25:19 2007
New Revision: 41966

URL: http://llvm.org/viewvc/llvm-project?rev=41966view=rev
Log:
regenerate.

Modified:
llvm-gcc-4.0/trunk/configure

Modified: llvm-gcc-4.0/trunk/configure
URL: 
http://llvm.org/viewvc/llvm-project/llvm-gcc-4.0/trunk/configure?rev=41966r1=41965r2=41966view=diff

==
--- llvm-gcc-4.0/trunk/configure (original)
+++ llvm-gcc-4.0/trunk/configure Fri Sep 14 17:25:19 2007
@@ -1162,12 +1162,12 @@
   powerpc-*-darwin*)
 noconfigdirs=$noconfigdirs bfd binutils ld gas opcodes gdb gprof
 # APPLE LOCAL 64-bit bringup
-noconfigdirs=$noconfigdirs target-libobjc
+noconfigdirs=$noconfigdirs target-libobjc target-libstdc++-v3
 ;;
   *-*-darwin*)
 noconfigdirs=$noconfigdirs bfd binutils ld gas opcodes gdb gprof
 # APPLE LOCAL 64-bit bringup
-noconfigdirs=$noconfigdirs target-libobjc ${libgcj}
+noconfigdirs=$noconfigdirs target-libobjc ${libgcj} target-libstdc++-v3
 ;;
   *-*-freebsd[12] | *-*-freebsd[12].* | *-*-freebsd*aout*)
 noconfigdirs=$noconfigdirs target-newlib target-libgloss ${libgcj}
@@ -1269,10 +1269,6 @@
   arm-*-elf* | strongarm-*-elf* | xscale-*-elf* | arm*-*-eabi* )
 noconfigdirs=$noconfigdirs target-libffi target-qthreads
 ;;
-   arm*-*-linux-gnueabi)
-noconfigdirs=$noconfigdirs target-libffi target-qthreads
-noconfigdirs=$noconfigdirs target-libjava target-libobjc
-;;
   arm*-*-symbianelf*)
 noconfigdirs=$noconfigdirs ${libgcj} target-libiberty
 ;;
@@ -1816,7 +1812,7 @@
   # Extract the first word of gcc, so it can be a program name with args.
 set dummy gcc; ac_word=$2
 echo $ac_n checking for $ac_word... $ac_c 16
-echo configure:1820: checking for $ac_word 5
+echo configure:1816: checking for $ac_word 5
 if eval test \`echo '$''{'ac_cv_prog_CC'+set}'`\ = set; then
   echo $ac_n (cached) $ac_c 16
 else
@@ -1846,7 +1842,7 @@
   # Extract the first word of cc, so it can be a program name with args.
 set dummy cc; ac_word=$2
 echo $ac_n checking for $ac_word... $ac_c 16
-echo configure:1850: checking for $ac_word 5
+echo configure:1846: checking for $ac_word 5
 if eval test \`echo '$''{'ac_cv_prog_CC'+set}'`\ = set; then
   echo $ac_n (cached) $ac_c 16
 else
@@ -1897,7 +1893,7 @@
   # Extract the first word of cl, so it can be a program name with args.
 set dummy cl; ac_word=$2
 echo $ac_n checking for $ac_word... $ac_c 16
-echo configure:1901: checking for $ac_word 5
+echo configure:1897: checking for $ac_word 5
 if eval test \`echo '$''{'ac_cv_prog_CC'+set}'`\ = set; then
   echo $ac_n (cached) $ac_c 16
 else
@@ -1929,7 +1925,7 @@
 fi
 
 echo $ac_n checking whether the C compiler ($CC $CFLAGS $LDFLAGS) works... 
$ac_c 16
-echo configure:1933: checking whether the C compiler ($CC $CFLAGS $LDFLAGS) 
works 5
+echo configure:1929: checking whether the C compiler ($CC $CFLAGS $LDFLAGS) 
works 5
 
 ac_ext=c
 # CFLAGS is not in ac_cpp because -g, -O, etc. are not valid cpp options.
@@ -1940,12 +1936,12 @@
 
 cat  conftest.$ac_ext  EOF
 
-#line 1944 configure
+#line 1940 configure
 #include confdefs.h
 
 main(){return(0);}
 EOF
-if { (eval echo configure:1949: \$ac_link\) 15; (eval $ac_link) 25; }  
test -s conftest${ac_exeext}; then
+if { (eval echo configure:1945: \$ac_link\) 15; (eval $ac_link) 25; }  
test -s conftest${ac_exeext}; then
   ac_cv_prog_cc_works=yes
   # If we can't run a trivial program, we are probably using a cross compiler.
   if (./conftest; exit) 2/dev/null; then
@@ -1971,12 +1967,12 @@
   { echo configure: error: installation or configuration problem: C compiler 
cannot create executables. 12; exit 1; }
 fi
 echo $ac_n checking whether the C compiler ($CC $CFLAGS $LDFLAGS) is a 
cross-compiler... $ac_c 16
-echo configure:1975: checking whether the C compiler ($CC $CFLAGS $LDFLAGS) 
is a cross-compiler 5
+echo configure:1971: checking whether the C compiler ($CC $CFLAGS $LDFLAGS) 
is a cross-compiler 5
 echo $ac_t$ac_cv_prog_cc_cross 16
 cross_compiling=$ac_cv_prog_cc_cross
 
 echo $ac_n checking whether we are using GNU C... $ac_c 16
-echo configure:1980: checking whether we are using GNU C 5
+echo configure:1976: checking whether we are using GNU C 5
 if eval test \`echo '$''{'ac_cv_prog_gcc'+set}'`\ = set; then
   echo $ac_n (cached) $ac_c 16
 else
@@ -1985,7 +1981,7 @@
   yes;
 #endif
 EOF
-if { ac_try='${CC-cc} -E conftest.c'; { (eval echo configure:1989: 
\$ac_try\) 15; (eval $ac_try) 25; }; } | egrep yes /dev/null 21; then
+if { ac_try='${CC-cc} -E conftest.c'; { (eval echo configure:1985: 
\$ac_try\) 15; (eval $ac_try) 25; }; } | egrep yes /dev/null 21; then
   ac_cv_prog_gcc=yes
 else
   ac_cv_prog_gcc=no
@@ -2004,7 +2000,7 @@
 ac_save_CFLAGS=$CFLAGS
 CFLAGS=
 echo $ac_n checking whether ${CC-cc} accepts -g... $ac_c 16
-echo configure:2008: checking whether ${CC-cc} accepts -g 5
+echo configure:2004: checking whether ${CC-cc} accepts -g 5
 if eval test \`echo 

[llvm-commits] [llvm] r41967 - in /llvm/trunk: include/llvm/ADT/APInt.h include/llvm/ADT/FoldingSet.h include/llvm/Constants.h lib/CodeGen/SelectionDAG/LegalizeDAG.cpp lib/CodeGen/SelectionDAG/Selecti

2007-09-14 Thread Dale Johannesen
Author: johannes
Date: Fri Sep 14 17:26:36 2007
New Revision: 41967

URL: http://llvm.org/viewvc/llvm-project?rev=41967view=rev
Log:
Remove the assumption that FP's are either float or
double from some of the many places in the optimizers
it appears, and do something reasonable with x86
long double.
Make APInt::dump() public, remove newline, use it to
dump ConstantSDNode's.
Allow APFloats in FoldingSet.
Expand X86 backend handling of long doubles (conversions
to/from int, mostly).


Modified:
llvm/trunk/include/llvm/ADT/APInt.h
llvm/trunk/include/llvm/ADT/FoldingSet.h
llvm/trunk/include/llvm/Constants.h
llvm/trunk/lib/CodeGen/SelectionDAG/LegalizeDAG.cpp
llvm/trunk/lib/CodeGen/SelectionDAG/SelectionDAG.cpp
llvm/trunk/lib/CodeGen/SelectionDAG/SelectionDAGISel.cpp
llvm/trunk/lib/Support/APInt.cpp
llvm/trunk/lib/Support/FoldingSet.cpp
llvm/trunk/lib/Target/CBackend/CBackend.cpp
llvm/trunk/lib/Target/X86/X86ISelLowering.cpp
llvm/trunk/lib/Target/X86/X86RegisterInfo.cpp
llvm/trunk/lib/Transforms/Scalar/InstructionCombining.cpp
llvm/trunk/lib/VMCore/Constants.cpp

Modified: llvm/trunk/include/llvm/ADT/APInt.h
URL: 
http://llvm.org/viewvc/llvm-project/llvm/trunk/include/llvm/ADT/APInt.h?rev=41967r1=41966r2=41967view=diff

==
--- llvm/trunk/include/llvm/ADT/APInt.h (original)
+++ llvm/trunk/include/llvm/ADT/APInt.h Fri Sep 14 17:26:36 2007
@@ -153,11 +153,6 @@
  const APInt RHS, uint32_t rhsWords,
  APInt *Quotient, APInt *Remainder);
 
-#ifndef NDEBUG
-  /// @brief debug method
-  void dump() const;
-#endif
-
 public:
   /// @name Constructors
   /// @{
@@ -1165,6 +1160,11 @@
   static void tcSetLeastSignificantBits(integerPart *, unsigned int,
unsigned int bits);
 
+#ifndef NDEBUG
+  /// @brief debug method
+  void dump() const;
+#endif
+
   /// @}
 };
 

Modified: llvm/trunk/include/llvm/ADT/FoldingSet.h
URL: 
http://llvm.org/viewvc/llvm-project/llvm/trunk/include/llvm/ADT/FoldingSet.h?rev=41967r1=41966r2=41967view=diff

==
--- llvm/trunk/include/llvm/ADT/FoldingSet.h (original)
+++ llvm/trunk/include/llvm/ADT/FoldingSet.h Fri Sep 14 17:26:36 2007
@@ -18,6 +18,7 @@
 
 #include llvm/Support/DataTypes.h
 #include llvm/ADT/SmallVector.h
+#include llvm/ADT/APFloat.h
 #include string
 
 namespace llvm {
@@ -153,6 +154,7 @@
 void AddInteger(uint64_t I);
 void AddFloat(float F);
 void AddDouble(double D);
+void AddAPFloat(const APFloat apf);
 void AddString(const std::string String);
 
 /// ComputeHash - Compute a strong hash value for this NodeID, used to 

Modified: llvm/trunk/include/llvm/Constants.h
URL: 
http://llvm.org/viewvc/llvm-project/llvm/trunk/include/llvm/Constants.h?rev=41967r1=41966r2=41967view=diff

==
--- llvm/trunk/include/llvm/Constants.h (original)
+++ llvm/trunk/include/llvm/Constants.h Fri Sep 14 17:26:36 2007
@@ -231,6 +231,9 @@
   /// considers -0.0 to be null as well as 0.0.  :(
   virtual bool isNullValue() const;
 
+  // Get a negative zero.
+  static ConstantFP *getNegativeZero(const Type* Ty);
+
   /// isExactlyValue - We don't rely on operator== working on double values, as
   /// it returns true for things that are clearly not equal, like -0.0 and 0.0.
   /// As such, this method can be used to do an exact bit-for-bit comparison of

Modified: llvm/trunk/lib/CodeGen/SelectionDAG/LegalizeDAG.cpp
URL: 
http://llvm.org/viewvc/llvm-project/llvm/trunk/lib/CodeGen/SelectionDAG/LegalizeDAG.cpp?rev=41967r1=41966r2=41967view=diff

==
--- llvm/trunk/lib/CodeGen/SelectionDAG/LegalizeDAG.cpp (original)
+++ llvm/trunk/lib/CodeGen/SelectionDAG/LegalizeDAG.cpp Fri Sep 14 17:26:36 2007
@@ -486,15 +486,23 @@
   // double.
   MVT::ValueType VT = CFP-getValueType(0);
   bool isDouble = VT == MVT::f64;
-  ConstantFP *LLVMC = ConstantFP::get(isDouble ? Type::DoubleTy :
-  Type::FloatTy, CFP-getValueAPF());
+  ConstantFP *LLVMC = ConstantFP::get(VT==MVT::f64 ? Type::DoubleTy :
+  VT==MVT::f32 ? Type::FloatTy :
+  VT==MVT::f80 ? Type::X86_FP80Ty :
+  VT==MVT::f128 ? Type::FP128Ty :
+  VT==MVT::ppcf128 ? Type::PPC_FP128Ty :
+  Type::VoidTy,   // error
+  CFP-getValueAPF());
   if (!UseCP) {
+if (VT!=MVT::f64  VT!=MVT::f32)
+  assert(0  Invalid type expansion);
 return 
DAG.getConstant(LLVMC-getValueAPF().convertToAPInt().getZExtValue(),
isDouble ? MVT::i64 : MVT::i32);
 

Re: [llvm-commits] remove libstdc++ from llvm-gcc configure targets

2007-09-14 Thread Chris Lattner

On Sep 14, 2007, at 3:16 PM, Eric Christopher wrote:

 As it says. Tested on x86-darwin.

 -eric

 2007-09-14  Eric Christopher  [EMAIL PROTECTED]

   * configure.in (powerpc*-*-darwin*): Add target-libstdc++-v3 to  
 noconfidirs.
   (*-*-darwin*): Ditto.
   * configure: Regenerate.

Thanks! I applied your patch:

http://lists.cs.uiuc.edu/pipermail/llvm-commits/Week-of- 
Mon-20070910/053528.html
http://lists.cs.uiuc.edu/pipermail/llvm-commits/Week-of- 
Mon-20070910/053529.html

FYI, you don't need to produce a formal change log for LLVM, a  
description of what changed is sufficient.  Thanks again!

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


Re: [llvm-commits] [llvm-gcc-4.0] r41966 - /llvm-gcc-4.0/trunk/configure

2007-09-14 Thread Chris Lattner
 @@ -1269,10 +1269,6 @@
arm-*-elf* | strongarm-*-elf* | xscale-*-elf* | arm*-*-eabi* )
  noconfigdirs=$noconfigdirs target-libffi target-qthreads
  ;;
 -   arm*-*-linux-gnueabi)
 -noconfigdirs=$noconfigdirs target-libffi target-qthreads
 -noconfigdirs=$noconfigdirs target-libjava target-libobjc
 -;;

FYI, Lauro, it looks like the linux-gnueabi portion here isn't in  
configure.in, only in configure.  If it is important, please add it  
to both again, thanks!

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


[llvm-commits] [llvm] r41968 - /llvm/trunk/lib/Transforms/Scalar/RedundantLoadElimination.cpp

2007-09-14 Thread Owen Anderson
Author: resistor
Date: Fri Sep 14 17:33:52 2007
New Revision: 41968

URL: http://llvm.org/viewvc/llvm-project?rev=41968view=rev
Log:
Remove RLE.  It is subsumed by GVN.

Removed:
llvm/trunk/lib/Transforms/Scalar/RedundantLoadElimination.cpp

Removed: llvm/trunk/lib/Transforms/Scalar/RedundantLoadElimination.cpp
URL: 
http://llvm.org/viewvc/llvm-project/llvm/trunk/lib/Transforms/Scalar/RedundantLoadElimination.cpp?rev=41967view=auto

==
--- llvm/trunk/lib/Transforms/Scalar/RedundantLoadElimination.cpp (original)
+++ llvm/trunk/lib/Transforms/Scalar/RedundantLoadElimination.cpp (removed)
@@ -1,135 +0,0 @@
-//===- FastDLE.cpp - Fast Dead Load Elimination 
---===//
-//
-// The LLVM Compiler Infrastructure
-//
-// This file was developed by Owen Anderson and is distributed under
-// the University of Illinois Open Source License. See LICENSE.TXT for details.
-//
-//===--===//
-//
-// This file implements a trivial dead load elimination that only considers
-// basic-block local redundant load.
-//
-// FIXME: This should eventually be extended to be a post-dominator tree
-// traversal.  Doing so would be pretty trivial.
-//
-//===--===//
-
-#define DEBUG_TYPE rle
-#include llvm/Transforms/Scalar.h
-#include llvm/Function.h
-#include llvm/Instructions.h
-#include llvm/Pass.h
-#include llvm/ADT/SmallPtrSet.h
-#include llvm/ADT/Statistic.h
-#include llvm/Analysis/MemoryDependenceAnalysis.h
-#include llvm/Transforms/Utils/Local.h
-#include llvm/Support/Compiler.h
-using namespace llvm;
-
-STATISTIC(NumFastLoads, Number of loads deleted);
-
-namespace {
-  struct VISIBILITY_HIDDEN RLE : public FunctionPass {
-static char ID; // Pass identification, replacement for typeid
-RLE() : FunctionPass((intptr_t)ID) {}
-
-virtual bool runOnFunction(Function F) {
-  bool Changed = false;
-  for (Function::iterator I = F.begin(), E = F.end(); I != E; ++I)
-Changed |= runOnBasicBlock(*I);
-  return Changed;
-}
-
-bool runOnBasicBlock(BasicBlock BB);
-
-// getAnalysisUsage - We require post dominance frontiers (aka Control
-// Dependence Graph)
-virtual void getAnalysisUsage(AnalysisUsage AU) const {
-  AU.setPreservesCFG();
-  AU.addRequiredMemoryDependenceAnalysis();
-  AU.addPreservedMemoryDependenceAnalysis();
-}
-  };
-  char RLE::ID = 0;
-  RegisterPassRLE X(rle, Redundant Load Elimination);
-}
-
-FunctionPass *llvm::createRedundantLoadEliminationPass() { return new RLE(); }
-
-bool RLE::runOnBasicBlock(BasicBlock BB) {
-  MemoryDependenceAnalysis MD = getAnalysisMemoryDependenceAnalysis();
-  
-  // Record the last-seen load from this pointer
-  DenseMapValue*, LoadInst* lastLoad;
-  
-  bool MadeChange = false;
-  
-  // Do a top-down walk on the BB
-  for (BasicBlock::iterator BBI = BB.begin(), BBE = BB.end(); 
-   BBI != BBE; ++BBI) {
-// If we find a store or a free...
-if (LoadInst* L = dyn_castLoadInst(BBI)) {
-  // We can't delete volatile loads
-  if (L-isVolatile()) {
-lastLoad[L-getPointerOperand()] = L;
-continue;
-  }
-  
-  Value* pointer = L-getPointerOperand();
-  LoadInst* last = lastLoad[pointer];
-  
-  // ... to a pointer that has been loaded from before...
-  Instruction* dep = MD.getDependency(BBI);
-  bool deletedLoad = false;
-  
-  while (dep != MemoryDependenceAnalysis::None 
- dep != MemoryDependenceAnalysis::NonLocal 
- (isaLoadInst(dep) || isaStoreInst(dep))) {
-// ... that depends on a store ...
-if (StoreInst* S = dyn_castStoreInst(dep)) {
-  if (S-getPointerOperand() == pointer) {
-// Remove it!
-MD.removeInstruction(BBI);
-
-BBI--;
-L-replaceAllUsesWith(S-getOperand(0));
-L-eraseFromParent();
-NumFastLoads++;
-deletedLoad = true;
-MadeChange = true;
-  }
-  
-  // Whether we removed it or not, we can't
-  // go any further
-  break;
-} else if (!last) {
-  // If we don't depend on a store, and we haven't
-  // been loaded before, bail.
-  break;
-} else if (dep == last) {
-  // Remove it!
-  MD.removeInstruction(BBI);
-  
-  BBI--;
-  L-replaceAllUsesWith(last);
-  L-eraseFromParent();
-  deletedLoad = true;
-  NumFastLoads++;
-  MadeChange = true;
-
-  break;
-} else {
-  dep = MD.getDependency(BBI, dep);
-}
-  }
-  
-  if (!deletedLoad)
-last = L;
-}
-  }
-  
-  return MadeChange;
-}
-
-



[llvm-commits] [llvm-gcc-4.2] r41969 - in /llvm-gcc-4.2/trunk: configure configure.in

2007-09-14 Thread Anton Korobeynikov
Author: asl
Date: Fri Sep 14 17:35:36 2007
New Revision: 41969

URL: http://llvm.org/viewvc/llvm-project?rev=41969view=rev
Log:
Forward of r41965: 
When building on darwin, automatically disable building libstdc++.  Patch by
Eric Christopher!

Modified:
llvm-gcc-4.2/trunk/configure
llvm-gcc-4.2/trunk/configure.in

Modified: llvm-gcc-4.2/trunk/configure
URL: 
http://llvm.org/viewvc/llvm-project/llvm-gcc-4.2/trunk/configure?rev=41969r1=41968r2=41969view=diff

==
--- llvm-gcc-4.2/trunk/configure (original)
+++ llvm-gcc-4.2/trunk/configure Fri Sep 14 17:35:36 2007
@@ -1210,12 +1210,12 @@
 ;;
   powerpc-*-darwin* | i[3456789]86-*-darwin*)
 noconfigdirs=$noconfigdirs bfd binutils ld gas opcodes gdb gprof
-noconfigdirs=$noconfigdirs sim target-rda
+noconfigdirs=$noconfigdirs sim target-rda target-libstdc++-v3
 ;;
   *-*-darwin*)
 noconfigdirs=$noconfigdirs ld gas gdb gprof
 noconfigdirs=$noconfigdirs sim target-rda
-noconfigdirs=$noconfigdirs ${libgcj}
+noconfigdirs=$noconfigdirs ${libgcj} target-libstdc++-v3
 ;;
   *-*-freebsd[12] | *-*-freebsd[12].* | *-*-freebsd*aout*)
 noconfigdirs=$noconfigdirs target-newlib target-libgloss ${libgcj}

Modified: llvm-gcc-4.2/trunk/configure.in
URL: 
http://llvm.org/viewvc/llvm-project/llvm-gcc-4.2/trunk/configure.in?rev=41969r1=41968r2=41969view=diff

==
--- llvm-gcc-4.2/trunk/configure.in (original)
+++ llvm-gcc-4.2/trunk/configure.in Fri Sep 14 17:35:36 2007
@@ -370,12 +370,12 @@
 ;;
   powerpc-*-darwin* | i[[3456789]]86-*-darwin*)
 noconfigdirs=$noconfigdirs bfd binutils ld gas opcodes gdb gprof
-noconfigdirs=$noconfigdirs sim target-rda
+noconfigdirs=$noconfigdirs sim target-rda target-libstdc++-v3
 ;;
   *-*-darwin*)
 noconfigdirs=$noconfigdirs ld gas gdb gprof
 noconfigdirs=$noconfigdirs sim target-rda
-noconfigdirs=$noconfigdirs ${libgcj}
+noconfigdirs=$noconfigdirs ${libgcj} target-libstdc++-v3
 ;;
   *-*-freebsd[[12]] | *-*-freebsd[[12]].* | *-*-freebsd*aout*)
 noconfigdirs=$noconfigdirs target-newlib target-libgloss ${libgcj}


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


[llvm-commits] [llvm] r41971 - in /llvm/trunk/include/llvm: LinkAllPasses.h Transforms/Scalar.h

2007-09-14 Thread Owen Anderson
Author: resistor
Date: Fri Sep 14 17:54:46 2007
New Revision: 41971

URL: http://llvm.org/viewvc/llvm-project?rev=41971view=rev
Log:
Remove RLE from the headers, since the pass itself is gone now.

Modified:
llvm/trunk/include/llvm/LinkAllPasses.h
llvm/trunk/include/llvm/Transforms/Scalar.h

Modified: llvm/trunk/include/llvm/LinkAllPasses.h
URL: 
http://llvm.org/viewvc/llvm-project/llvm/trunk/include/llvm/LinkAllPasses.h?rev=41971r1=41970r2=41971view=diff

==
--- llvm/trunk/include/llvm/LinkAllPasses.h (original)
+++ llvm/trunk/include/llvm/LinkAllPasses.h Fri Sep 14 17:54:46 2007
@@ -61,7 +61,6 @@
   (void) llvm::createDeadStoreEliminationPass();
   (void) llvm::createDeadTypeEliminationPass();
   (void) llvm::createEdgeProfilerPass();
-  (void) llvm::createRedundantLoadEliminationPass();
   (void) llvm::createFunctionInliningPass();
   (void) llvm::createFunctionProfilerPass();
   (void) llvm::createGCSEPass();

Modified: llvm/trunk/include/llvm/Transforms/Scalar.h
URL: 
http://llvm.org/viewvc/llvm-project/llvm/trunk/include/llvm/Transforms/Scalar.h?rev=41971r1=41970r2=41971view=diff

==
--- llvm/trunk/include/llvm/Transforms/Scalar.h (original)
+++ llvm/trunk/include/llvm/Transforms/Scalar.h Fri Sep 14 17:54:46 2007
@@ -332,13 +332,6 @@
 
 
//===--===//
 //
-// RedundantLoadElimination - This pass deletes loads that are dominated by
-// must-aliased loads and are not stored to between the loads.
-//
-FunctionPass *createRedundantLoadEliminationPass();
-
-//===--===//
-//
 // GVN - This pass performs global value numbering and redundant load 
 // elimination cotemporaneously.
 //


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


[llvm-commits] [llvm] r41972 - /llvm/trunk/lib/Support/FoldingSet.cpp

2007-09-14 Thread Chris Lattner
Author: lattner
Date: Fri Sep 14 17:57:00 2007
New Revision: 41972

URL: http://llvm.org/viewvc/llvm-project?rev=41972view=rev
Log:
fix a gcc warning: comparison between signed and unsigned integer expressions

Modified:
llvm/trunk/lib/Support/FoldingSet.cpp

Modified: llvm/trunk/lib/Support/FoldingSet.cpp
URL: 
http://llvm.org/viewvc/llvm-project/llvm/trunk/lib/Support/FoldingSet.cpp?rev=41972r1=41971r2=41972view=diff

==
--- llvm/trunk/lib/Support/FoldingSet.cpp (original)
+++ llvm/trunk/lib/Support/FoldingSet.cpp Fri Sep 14 17:57:00 2007
@@ -59,7 +59,7 @@
 void FoldingSetImpl::NodeID::AddAPFloat(const APFloat apf) {
   APInt api = apf.convertToAPInt();
   const uint64_t *p = api.getRawData();
-  for (int i=0; iapi.getNumWords(); i++)
+  for (unsigned i=0; iapi.getNumWords(); i++)
 AddInteger(*p++);
 }
 void FoldingSetImpl::NodeID::AddString(const std::string String) {


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


[llvm-commits] [llvm] r41975 - in /llvm/trunk/lib/Target/X86: X86InstrInfo.cpp X86InstrX86-64.td

2007-09-14 Thread Dan Gohman
Author: djg
Date: Fri Sep 14 18:17:45 2007
New Revision: 41975

URL: http://llvm.org/viewvc/llvm-project?rev=41975view=rev
Log:
Add patterns for SHLD64* and SHRD64*.

Modified:
llvm/trunk/lib/Target/X86/X86InstrInfo.cpp
llvm/trunk/lib/Target/X86/X86InstrX86-64.td

Modified: llvm/trunk/lib/Target/X86/X86InstrInfo.cpp
URL: 
http://llvm.org/viewvc/llvm-project/llvm/trunk/lib/Target/X86/X86InstrInfo.cpp?rev=41975r1=41974r2=41975view=diff

==
--- llvm/trunk/lib/Target/X86/X86InstrInfo.cpp (original)
+++ llvm/trunk/lib/Target/X86/X86InstrInfo.cpp Fri Sep 14 18:17:45 2007
@@ -338,7 +338,9 @@
   case X86::SHRD16rri8: // A = SHRD16rri8 B, C, I - A = SHLD16rri8 C, B, 
(16-I)
   case X86::SHLD16rri8: // A = SHLD16rri8 B, C, I - A = SHRD16rri8 C, B, 
(16-I)
   case X86::SHRD32rri8: // A = SHRD32rri8 B, C, I - A = SHLD32rri8 C, B, 
(32-I)
-  case X86::SHLD32rri8:{// A = SHLD32rri8 B, C, I - A = SHRD32rri8 C, B, 
(32-I)
+  case X86::SHLD32rri8: // A = SHLD32rri8 B, C, I - A = SHRD32rri8 C, B, 
(32-I)
+  case X86::SHRD64rri8: // A = SHRD64rri8 B, C, I - A = SHLD64rri8 C, B, 
(64-I)
+  case X86::SHLD64rri8:{// A = SHLD64rri8 B, C, I - A = SHRD64rri8 C, B, 
(64-I)
 unsigned Opc;
 unsigned Size;
 switch (MI-getOpcode()) {
@@ -347,6 +349,8 @@
 case X86::SHLD16rri8: Size = 16; Opc = X86::SHRD16rri8; break;
 case X86::SHRD32rri8: Size = 32; Opc = X86::SHLD32rri8; break;
 case X86::SHLD32rri8: Size = 32; Opc = X86::SHRD32rri8; break;
+case X86::SHRD64rri8: Size = 64; Opc = X86::SHLD64rri8; break;
+case X86::SHLD64rri8: Size = 64; Opc = X86::SHRD64rri8; break;
 }
 unsigned Amt = MI-getOperand(3).getImmedValue();
 unsigned A = MI-getOperand(0).getReg();

Modified: llvm/trunk/lib/Target/X86/X86InstrX86-64.td
URL: 
http://llvm.org/viewvc/llvm-project/llvm/trunk/lib/Target/X86/X86InstrX86-64.td?rev=41975r1=41974r2=41975view=diff

==
--- llvm/trunk/lib/Target/X86/X86InstrX86-64.td (original)
+++ llvm/trunk/lib/Target/X86/X86InstrX86-64.td Fri Sep 14 18:17:45 2007
@@ -564,38 +564,50 @@
 let isTwoAddress = 1 in {
 let Uses = [CL] in {
 def SHLD64rrCL : RI0xA5, MRMDestReg, (outs GR64:$dst), (ins GR64:$src1, 
GR64:$src2),
-shld{q}\t{%cl, $src2, $dst|$dst, $src2, %CL}, [], TB;
+shld{q}\t{%cl, $src2, $dst|$dst, $src2, %CL},
+[(set GR64:$dst, (X86shld GR64:$src1, GR64:$src2, CL))], 
TB;
 def SHRD64rrCL : RI0xAD, MRMDestReg, (outs GR64:$dst), (ins GR64:$src1, 
GR64:$src2),
-shrd{q}\t{%cl, $src2, $dst|$dst, $src2, %CL}, [], TB;
+shrd{q}\t{%cl, $src2, $dst|$dst, $src2, %CL},
+[(set GR64:$dst, (X86shrd GR64:$src1, GR64:$src2, CL))], 
TB;
 }
 
 let isCommutable = 1 in {  // FIXME: Update X86InstrInfo::commuteInstruction
 def SHLD64rri8 : RIi80xA4, MRMDestReg,
   (outs GR64:$dst), (ins GR64:$src1, GR64:$src2, 
i8imm:$src3),
-  shld{q}\t{$src3, $src2, $dst|$dst, $src2, $src3}, [],
-  TB;
+  shld{q}\t{$src3, $src2, $dst|$dst, $src2, $src3},
+  [(set GR64:$dst, (X86shld GR64:$src1, GR64:$src2,
+   (i8 imm:$src3)))],
+ TB;
 def SHRD64rri8 : RIi80xAC, MRMDestReg,
   (outs GR64:$dst), (ins GR64:$src1, GR64:$src2, 
i8imm:$src3),
-  shrd{q}\t{$src3, $src2, $dst|$dst, $src2, $src3}, [],
+  shrd{q}\t{$src3, $src2, $dst|$dst, $src2, $src3},
+  [(set GR64:$dst, (X86shrd GR64:$src1, GR64:$src2,
+   (i8 imm:$src3)))],
  TB;
 } // isCommutable
 } // isTwoAddress
 
-// Temporary hack: there is no patterns associated with these instructions
-// so we have to tell tblgen that these do not produce results.
 let Uses = [CL] in {
 def SHLD64mrCL : RI0xA5, MRMDestMem, (outs), (ins i64mem:$dst, GR64:$src2),
-shld{q}\t{%cl, $src2, $dst|$dst, $src2, %CL}, [], TB;
+shld{q}\t{%cl, $src2, $dst|$dst, $src2, %CL},
+[(store (X86shld (loadi64 addr:$dst), GR64:$src2, CL),
+  addr:$dst)], TB;
 def SHRD64mrCL : RI0xAD, MRMDestMem, (outs), (ins i64mem:$dst, GR64:$src2),
-shrd{q}\t{%cl, $src2, $dst|$dst, $src2, %CL}, [], TB;
+shrd{q}\t{%cl, $src2, $dst|$dst, $src2, %CL},
+[(store (X86shrd (loadi64 addr:$dst), GR64:$src2, CL),
+  addr:$dst)], TB;
 }
 def SHLD64mri8 : RIi80xA4, MRMDestMem,
   (outs), (ins i64mem:$dst, GR64:$src2, i8imm:$src3),
-  shld{q}\t{$src3, $src2, $dst|$dst, $src2, $src3}, [],
+  shld{q}\t{$src3, $src2, $dst|$dst, $src2, $src3},
+

[llvm-commits] [llvm-gcc-4.0] r41976 - /llvm-gcc-4.0/trunk/README.LLVM

2007-09-14 Thread Tanya Lattner
Author: tbrethou
Date: Fri Sep 14 18:22:06 2007
New Revision: 41976

URL: http://llvm.org/viewvc/llvm-project?rev=41976view=rev
Log:
Suggest program prefix.

Modified:
llvm-gcc-4.0/trunk/README.LLVM

Modified: llvm-gcc-4.0/trunk/README.LLVM
URL: 
http://llvm.org/viewvc/llvm-project/llvm-gcc-4.0/trunk/README.LLVM?rev=41976r1=41975r2=41976view=diff

==
--- llvm-gcc-4.0/trunk/README.LLVM (original)
+++ llvm-gcc-4.0/trunk/README.LLVM Fri Sep 14 18:22:06 2007
@@ -119,7 +119,7 @@
 $ mkdir obj
 $ mkdir install
 $ cd obj
-$ ../llvm-gcc4-x.y.source/configure --prefix=`pwd`/../install \
+$ ../llvm-gcc4-x.y.source/configure --prefix=`pwd`/../install 
--program-prefix=llvm- \
 --enable-llvm=$LLVMOBJDIR --enable-languages=c,c++$EXTRALANGS 
$TARGETOPTIONS
 $ make $BUILDOPTIONS
 $ make install


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


[llvm-commits] [test-suite] r41977 - in /test-suite/trunk/SingleSource/UnitTests/Vector/Altivec: Makefile alti.isamax.c

2007-09-14 Thread Chris Lattner
Author: lattner
Date: Fri Sep 14 23:43:12 2007
New Revision: 41977

URL: http://llvm.org/viewvc/llvm-project?rev=41977view=rev
Log:
some portability fixes


Modified:
test-suite/trunk/SingleSource/UnitTests/Vector/Altivec/Makefile
test-suite/trunk/SingleSource/UnitTests/Vector/Altivec/alti.isamax.c

Modified: test-suite/trunk/SingleSource/UnitTests/Vector/Altivec/Makefile
URL: 
http://llvm.org/viewvc/llvm-project/test-suite/trunk/SingleSource/UnitTests/Vector/Altivec/Makefile?rev=41977r1=41976r2=41977view=diff

==
--- test-suite/trunk/SingleSource/UnitTests/Vector/Altivec/Makefile (original)
+++ test-suite/trunk/SingleSource/UnitTests/Vector/Altivec/Makefile Fri Sep 14 
23:43:12 2007
@@ -7,5 +7,5 @@
 # FIXME: CBE doesn't support vectors: PR1126
 DISABLE_CBE=1
 
-TARGET_FLAGS += -maltivec
-LCCFLAGS += -maltivec
+TARGET_FLAGS += -maltivec -faltivec
+LCCFLAGS += -maltivec -faltivec

Modified: test-suite/trunk/SingleSource/UnitTests/Vector/Altivec/alti.isamax.c
URL: 
http://llvm.org/viewvc/llvm-project/test-suite/trunk/SingleSource/UnitTests/Vector/Altivec/alti.isamax.c?rev=41977r1=41976r2=41977view=diff

==
--- test-suite/trunk/SingleSource/UnitTests/Vector/Altivec/alti.isamax.c 
(original)
+++ test-suite/trunk/SingleSource/UnitTests/Vector/Altivec/alti.isamax.c Fri 
Sep 14 23:43:12 2007
@@ -2,7 +2,7 @@
 #include math.h
 #include float.h
 #include altivec.h
-#define N 1027
+#define N 1028
 main()
 {
 /* 
@@ -12,7 +12,7 @@
   Oxford Univ. Press, 2004
wpp 5/8/2002 
 */
-  float x[N];
+  float x[N] __attribute__((aligned(16)));
   float xb;
   int err,flag,i,im,k,ki,kl,ib,n0,n;
   int isamax(int,float *);
@@ -43,6 +43,7 @@
  kl   = 4;// for n  1, 3 steps of increase in n
   }
   if(flag==0) printf( All n tests pass\n);
+  return 0;
 }
 #define NS 12
 int isamax(int n, float *x)
@@ -55,7 +56,9 @@
   vector float V7 = (vector float) (0.0,1.0,2.0,3.0);
   const vector float incr_4 = (vector float) (4.0,4.0,4.0,4.0);
   const vector float minus0 = (vector float) (-0.0,-0.0,-0.0,-0.0);
-  float big,xbig[4],indx[4];
+  float big;
+  float xbig[4]  __attribute__((aligned(16)));
+  float indx[4]  __attribute__((aligned(16)));
 // n  NS done in scalar mode
   if(n  NS){
  ibig = 0;


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


[llvm-commits] [llvm] r41978 - /llvm/branches/release_21/test/CodeGen/PowerPC/fabs.ll

2007-09-14 Thread Tanya Lattner
Author: tbrethou
Date: Fri Sep 14 23:47:06 2007
New Revision: 41978

URL: http://llvm.org/viewvc/llvm-project?rev=41978view=rev
Log:
Merge from mainline to fix make check error on x86.

Modified:
llvm/branches/release_21/test/CodeGen/PowerPC/fabs.ll

Modified: llvm/branches/release_21/test/CodeGen/PowerPC/fabs.ll
URL: 
http://llvm.org/viewvc/llvm-project/llvm/branches/release_21/test/CodeGen/PowerPC/fabs.ll?rev=41978r1=41977r2=41978view=diff

==
--- llvm/branches/release_21/test/CodeGen/PowerPC/fabs.ll (original)
+++ llvm/branches/release_21/test/CodeGen/PowerPC/fabs.ll Fri Sep 14 23:47:06 
2007
@@ -1,4 +1,4 @@
-; RUN: llvm-as  %s | llc -march=ppc32 | grep {fabs f1, f1}
+; RUN: llvm-as  %s | llc -march=ppc32 -mtriple=powerpc-apple-darwin | grep 
{fabs f1, f1}
 
 define double @fabs(double %f) {
 entry:


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


[llvm-commits] [llvm] r41979 - /llvm/trunk/test/CFrontend/2007-09-14-NegatePointer.c

2007-09-14 Thread Chris Lattner
Author: lattner
Date: Sat Sep 15 00:46:41 2007
New Revision: 41979

URL: http://llvm.org/viewvc/llvm-project?rev=41979view=rev
Log:
New testcase for PR1662.  GCC trees are horrible :(

Added:
llvm/trunk/test/CFrontend/2007-09-14-NegatePointer.c

Added: llvm/trunk/test/CFrontend/2007-09-14-NegatePointer.c
URL: 
http://llvm.org/viewvc/llvm-project/llvm/trunk/test/CFrontend/2007-09-14-NegatePointer.c?rev=41979view=auto

==
--- llvm/trunk/test/CFrontend/2007-09-14-NegatePointer.c (added)
+++ llvm/trunk/test/CFrontend/2007-09-14-NegatePointer.c Sat Sep 15 00:46:41 
2007
@@ -0,0 +1,7 @@
+// RUN: %llvmgcc -S %s -o - 
+// PR1662
+
+int foo(unsigned char *test) {
+  return 0U - (unsigned int )test;
+}
+


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


[llvm-commits] [llvm-gcc-4.0] r41980 - /llvm-gcc-4.0/trunk/gcc/llvm-convert.cpp

2007-09-14 Thread Chris Lattner
Author: lattner
Date: Sat Sep 15 00:47:04 2007
New Revision: 41980

URL: http://llvm.org/viewvc/llvm-project?rev=41980view=rev
Log:
Fix PR1662 by handling pointer NEGATE_EXPR.

Modified:
llvm-gcc-4.0/trunk/gcc/llvm-convert.cpp

Modified: llvm-gcc-4.0/trunk/gcc/llvm-convert.cpp
URL: 
http://llvm.org/viewvc/llvm-project/llvm-gcc-4.0/trunk/gcc/llvm-convert.cpp?rev=41980r1=41979r2=41980view=diff

==
--- llvm-gcc-4.0/trunk/gcc/llvm-convert.cpp (original)
+++ llvm-gcc-4.0/trunk/gcc/llvm-convert.cpp Sat Sep 15 00:47:04 2007
@@ -3156,8 +3156,17 @@
 }
 
 Value *TreeToLLVM::EmitNEGATE_EXPR(tree exp, Value *DestLoc) {
-  if (!DestLoc)
-return Builder.CreateNeg(Emit(TREE_OPERAND(exp, 0), 0), tmp);
+  if (!DestLoc) {
+Value *V = Emit(TREE_OPERAND(exp, 0), 0);
+if (!isaPointerType(V-getType()))
+  return Builder.CreateNeg(V, tmp);
+
+// GCC allows NEGATE_EXPR on pointers as well.  Cast to int, negate, cast
+// back.
+V = CastToAnyType(V, false, TD.getIntPtrType(), false);
+V = Builder.CreateNeg(V, tmp);
+return CastToType(Instruction::IntToPtr, V, ConvertType(TREE_TYPE(exp)));
+  }
   
   // Emit the operand to a temporary.
   const Type 
*ComplexTy=castPointerType(DestLoc-getType())-getElementType();


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


[llvm-commits] [llvm-gcc-4.2] r41981 - /llvm-gcc-4.2/trunk/gcc/llvm-convert.cpp

2007-09-14 Thread Chris Lattner
Author: lattner
Date: Sat Sep 15 00:47:38 2007
New Revision: 41981

URL: http://llvm.org/viewvc/llvm-project?rev=41981view=rev
Log:
Fix PR1662 by handling pointer negate_expr.

Modified:
llvm-gcc-4.2/trunk/gcc/llvm-convert.cpp

Modified: llvm-gcc-4.2/trunk/gcc/llvm-convert.cpp
URL: 
http://llvm.org/viewvc/llvm-project/llvm-gcc-4.2/trunk/gcc/llvm-convert.cpp?rev=41981r1=41980r2=41981view=diff

==
--- llvm-gcc-4.2/trunk/gcc/llvm-convert.cpp (original)
+++ llvm-gcc-4.2/trunk/gcc/llvm-convert.cpp Sat Sep 15 00:47:38 2007
@@ -2683,8 +2683,17 @@
 }
 
 Value *TreeToLLVM::EmitNEGATE_EXPR(tree exp, Value *DestLoc) {
-  if (!DestLoc)
-return Builder.CreateNeg(Emit(TREE_OPERAND(exp, 0), 0), tmp);
+  if (!DestLoc) {
+Value *V = Emit(TREE_OPERAND(exp, 0), 0);
+if (!isaPointerType(V-getType()))
+  return Builder.CreateNeg(V, tmp);
+
+// GCC allows NEGATE_EXPR on pointers as well.  Cast to int, negate, cast
+// back.
+V = CastToAnyType(V, false, TD.getIntPtrType(), false);
+V = Builder.CreateNeg(V, tmp);
+return CastToType(Instruction::IntToPtr, V, ConvertType(TREE_TYPE(exp)));
+  }
   
   // Emit the operand to a temporary.
   const Type 
*ComplexTy=castPointerType(DestLoc-getType())-getElementType();


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