[llvm-commits] CVS: llvm/lib/Target/TargetMachine.cpp

2006-08-29 Thread Jim Laskey


Changes in directory llvm/lib/Target:

TargetMachine.cpp updated: 1.50 -> 1.51
---
Log message:

Tidy up options.


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

 TargetMachine.cpp |   18 +-
 1 files changed, 9 insertions(+), 9 deletions(-)


Index: llvm/lib/Target/TargetMachine.cpp
diff -u llvm/lib/Target/TargetMachine.cpp:1.50 
llvm/lib/Target/TargetMachine.cpp:1.51
--- llvm/lib/Target/TargetMachine.cpp:1.50  Wed Jul 26 16:12:04 2006
+++ llvm/lib/Target/TargetMachine.cpp   Tue Aug 29 10:13:10 2006
@@ -63,13 +63,13 @@
 cl::init(Reloc::Default),
 cl::values(
   clEnumValN(Reloc::Default, "default",
- "Target default relocation model"),
+ "  Target default relocation model"),
   clEnumValN(Reloc::Static, "static",
- "Non-relocatable code"),
+ "  Non-relocatable code"),
   clEnumValN(Reloc::PIC_, "pic",
- "Fully relocatable, position independent code"),
+ "  Fully relocatable, position independent code"),
   clEnumValN(Reloc::DynamicNoPIC, "dynamic-no-pic",
- "Relocatable external references, non-relocatable code"),
+ "  Relocatable external references, non-relocatable code"),
   clEnumValEnd));
   cl::opt
   DefCodeModel(
@@ -79,15 +79,15 @@
 cl::init(CodeModel::Default),
 cl::values(
   clEnumValN(CodeModel::Default, "default",
- "Target default code model"),
+ "  Target default code model"),
   clEnumValN(CodeModel::Small, "small",
- "Small code model"),
+ "  Small code model"),
   clEnumValN(CodeModel::Kernel, "kernel",
- "Kernel code model"),
+ "  Kernel code model"),
   clEnumValN(CodeModel::Medium, "medium",
- "Medium code model"),
+ "  Medium code model"),
   clEnumValN(CodeModel::Large, "large",
- "Large code model"),
+ "  Large code model"),
   clEnumValEnd));
 }
 



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


[llvm-commits] CVS: llvm/lib/CodeGen/DwarfWriter.cpp

2006-08-29 Thread Jim Laskey


Changes in directory llvm/lib/CodeGen:

DwarfWriter.cpp updated: 1.71 -> 1.72
---
Log message:

Handle callee saved registers in dwarf frame info (lead up to exception
handling.)


---
Diffs of the changes:  (+35 -9)

 DwarfWriter.cpp |   44 +++-
 1 files changed, 35 insertions(+), 9 deletions(-)


Index: llvm/lib/CodeGen/DwarfWriter.cpp
diff -u llvm/lib/CodeGen/DwarfWriter.cpp:1.71 
llvm/lib/CodeGen/DwarfWriter.cpp:1.72
--- llvm/lib/CodeGen/DwarfWriter.cpp:1.71   Fri Aug 25 14:39:52 2006
+++ llvm/lib/CodeGen/DwarfWriter.cppTue Aug 29 11:24:26 2006
@@ -35,7 +35,7 @@
 
 static cl::opt
 DwarfVerbose("dwarf-verbose", cl::Hidden,
-cl::desc("Add comments to Dwarf directives."));
+  cl::desc("Add comments to Dwarf directives."));
 
 namespace llvm {
 
@@ -1946,7 +1946,7 @@
 
 // Advance row if new location.
 if (BaseLabel && LabelID && BaseLabelID != LabelID) {
-  EmitULEB128Bytes(DW_CFA_advance_loc4);
+  EmitInt8(DW_CFA_advance_loc4);
   EOL("DW_CFA_advance_loc4");
   EmitDifference("loc", LabelID, BaseLabel, BaseLabelID);
   EOL("");
@@ -1955,30 +1955,56 @@
   BaseLabel = "loc";
 }
 
+int stackGrowth =
+Asm->TM.getFrameInfo()->getStackGrowthDirection() ==
+  TargetFrameInfo::StackGrowsUp ?
+AddressSize : -AddressSize;
+
 // If advancing cfa.
 if (Dst.isRegister() && Dst.getRegister() == MachineLocation::VirtualFP) {
   if (!Src.isRegister()) {
 if (Src.getRegister() == MachineLocation::VirtualFP) {
-  EmitULEB128Bytes(DW_CFA_def_cfa_offset);
+  EmitInt8(DW_CFA_def_cfa_offset);
   EOL("DW_CFA_def_cfa_offset");
 } else {
-  EmitULEB128Bytes(DW_CFA_def_cfa);
+  EmitInt8(DW_CFA_def_cfa);
   EOL("DW_CFA_def_cfa");
   
   EmitULEB128Bytes(RI->getDwarfRegNum(Src.getRegister()));
   EOL("Register");
 }
 
-int stackGrowth =
-Asm->TM.getFrameInfo()->getStackGrowthDirection() ==
-  TargetFrameInfo::StackGrowsUp ?
-AddressSize : -AddressSize;
+int Offset = Src.getOffset() / stackGrowth;
 
-EmitULEB128Bytes(Src.getOffset() / stackGrowth);
+EmitULEB128Bytes(Offset);
 EOL("Offset");
   } else {
+assert(0 && "Machine move no supported yet.");
   }
 } else {
+  unsigned Reg = RI->getDwarfRegNum(Src.getRegister());
+  int Offset = Dst.getOffset() / stackGrowth;
+  
+  if (Offset < 0) {
+EmitInt8(DW_CFA_offset_extended_sf);
+EOL("DW_CFA_offset_extended_sf");
+EmitULEB128Bytes(Reg);
+EOL("Reg");
+EmitSLEB128Bytes(Offset);
+EOL("Offset");
+  } else if (Reg < 64) {
+EmitInt8(DW_CFA_offset + Reg);
+EOL("DW_CFA_offset + Reg");
+EmitULEB128Bytes(Offset);
+EOL("Offset");
+  } else {
+EmitInt8(DW_CFA_offset_extended);
+EOL("DW_CFA_offset_extended");
+EmitULEB128Bytes(Reg);
+EOL("Reg");
+EmitULEB128Bytes(Offset);
+EOL("Offset");
+  }
 }
   }
 }



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


[llvm-commits] CVS: llvm/lib/Target/PowerPC/PPCRegisterInfo.cpp

2006-08-29 Thread Jim Laskey


Changes in directory llvm/lib/Target/PowerPC:

PPCRegisterInfo.cpp updated: 1.74 -> 1.75
---
Log message:

Handle callee saved registers in dwarf frame info (lead up to exception
handling.)


---
Diffs of the changes:  (+13 -6)

 PPCRegisterInfo.cpp |   19 +--
 1 files changed, 13 insertions(+), 6 deletions(-)


Index: llvm/lib/Target/PowerPC/PPCRegisterInfo.cpp
diff -u llvm/lib/Target/PowerPC/PPCRegisterInfo.cpp:1.74 
llvm/lib/Target/PowerPC/PPCRegisterInfo.cpp:1.75
--- llvm/lib/Target/PowerPC/PPCRegisterInfo.cpp:1.74Fri Aug 25 14:40:59 2006
+++ llvm/lib/Target/PowerPC/PPCRegisterInfo.cpp Tue Aug 29 11:24:26 2006
@@ -668,15 +668,22 @@
 std::vector &Moves = DebugInfo->getFrameMoves();
 unsigned LabelID = DebugInfo->NextLabelID();
 
-// Show update of SP.
-MachineLocation Dst(MachineLocation::VirtualFP);
-MachineLocation Src(MachineLocation::VirtualFP, NegNumbytes);
-Moves.push_back(new MachineMove(LabelID, Dst, Src));
-
 // Mark effective beginning of when frame pointer becomes valid.
 BuildMI(MBB, MBBI, PPC::DWARF_LABEL, 1).addImm(LabelID);
 
-
+// Show update of SP.
+MachineLocation SPDst(MachineLocation::VirtualFP);
+MachineLocation SPSrc(MachineLocation::VirtualFP, NegNumbytes);
+Moves.push_back(new MachineMove(LabelID, SPDst, SPSrc));
+
+// Add callee saved registers to move list.
+const std::vector &CSI = MFI->getCalleeSavedInfo();
+for (unsigned I = 0, E = CSI.size(); I != E; ++I) {
+  MachineLocation CSDst(MachineLocation::VirtualFP,
+MFI->getObjectOffset(CSI[I].getFrameIdx()));
+  MachineLocation CSSrc(CSI[I].getReg());
+  Moves.push_back(new MachineMove(LabelID, CSDst, CSSrc));
+}
   }
   
   // If there is a frame pointer, copy R1 (SP) into R31 (FP)



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


[llvm-commits] CVS: llvm/utils/NewNightlyTest.pl NightlyTest.pl

2006-08-29 Thread Evan Cheng


Changes in directory llvm/utils:

NewNightlyTest.pl updated: 1.57 -> 1.58
NightlyTest.pl updated: 1.112 -> 1.113
---
Log message:

Issue cvs co with -P option to prune empty directories. Remove the unnecessary
update stage.


---
Diffs of the changes:  (+2 -11)

 NewNightlyTest.pl |6 +-
 NightlyTest.pl|7 +--
 2 files changed, 2 insertions(+), 11 deletions(-)


Index: llvm/utils/NewNightlyTest.pl
diff -u llvm/utils/NewNightlyTest.pl:1.57 llvm/utils/NewNightlyTest.pl:1.58
--- llvm/utils/NewNightlyTest.pl:1.57   Tue Aug 22 13:11:19 2006
+++ llvm/utils/NewNightlyTest.plTue Aug 29 13:01:18 2006
@@ -488,7 +488,7 @@
 # Use compression if going over ssh.
 $CVSOPT = "-z3" 
   if $CVSRootDir =~ /^:ext:/;
-my $CVSCMD = "$NICE cvs $CVSOPT -d $CVSRootDir co $CVSCOOPT";
+my $CVSCMD = "$NICE cvs $CVSOPT -d $CVSRootDir co -P $CVSCOOPT";
 if (!$NOCHECKOUT) {
   if ( $VERBOSE ) { 
 print "CHECKOUT STAGE:\n"; 
@@ -500,10 +500,6 @@
   ChangeDir( $BuildDir , "CVS Checkout directory") ;
 }
 ChangeDir( "llvm" , "llvm source directory") ;
-if (!$NOCHECKOUT) {
-  if ( $VERBOSE ) { print "UPDATE STAGE\n"; }
-  system "$NICE cvs update -PdRA >> $CVSLog 2>&1" ;
-}
 
 ##
 #


Index: llvm/utils/NightlyTest.pl
diff -u llvm/utils/NightlyTest.pl:1.112 llvm/utils/NightlyTest.pl:1.113
--- llvm/utils/NightlyTest.pl:1.112 Wed Jun 28 19:54:37 2006
+++ llvm/utils/NightlyTest.pl   Tue Aug 29 13:01:18 2006
@@ -409,7 +409,7 @@
 my $CVSOPT = "";
 # Use compression if going over ssh.
 $CVSOPT = "-z3" if $CVSRootDir =~ /^:ext:/;
-my $CVSCMD = "$NICE cvs $CVSOPT -d $CVSRootDir co $CVSCOOPT";
+my $CVSCMD = "$NICE cvs $CVSOPT -d $CVSRootDir co -P $CVSCOOPT";
 if (!$NOCHECKOUT) {
   if ( $VERBOSE ) { print "CHECKOUT STAGE\n"; }
   system "( time -p $CVSCMD llvm; cd llvm/projects ; " .
@@ -419,11 +419,6 @@
 
 ChangeDir( "llvm" , "llvm source directory") ;
 
-if (!$NOCHECKOUT) {
-  if ( $VERBOSE ) { print "UPDATE STAGE\n"; }
-  system "$NICE cvs update -PdRA >> $CVSLog 2>&1" ;
-}
-
 if ( $Template eq "" ) {
   $Template = "$BuildDir/llvm/utils/NightlyTestTemplate.html";
 }



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


[llvm-commits] CVS: llvm/lib/Target/X86/X86.h X86ISelDAGToDAG.cpp X86TargetMachine.cpp

2006-08-29 Thread Evan Cheng


Changes in directory llvm/lib/Target/X86:

X86.h updated: 1.46 -> 1.47
X86ISelDAGToDAG.cpp updated: 1.100 -> 1.101
X86TargetMachine.cpp updated: 1.121 -> 1.122
---
Log message:

- Enable x86 isel preprocessing by default unless -fast is specified.
- Also disable isel load folding if -fast.


---
Diffs of the changes:  (+13 -8)

 X86.h|2 +-
 X86ISelDAGToDAG.cpp  |   15 ++-
 X86TargetMachine.cpp |4 ++--
 3 files changed, 13 insertions(+), 8 deletions(-)


Index: llvm/lib/Target/X86/X86.h
diff -u llvm/lib/Target/X86/X86.h:1.46 llvm/lib/Target/X86/X86.h:1.47
--- llvm/lib/Target/X86/X86.h:1.46  Tue Jul 25 15:40:54 2006
+++ llvm/lib/Target/X86/X86.h   Tue Aug 29 13:28:33 2006
@@ -28,7 +28,7 @@
 /// createX86ISelDag - This pass converts a legalized DAG into a 
 /// X86-specific DAG, ready for instruction scheduling.
 ///
-FunctionPass *createX86ISelDag(X86TargetMachine &TM);
+FunctionPass *createX86ISelDag(X86TargetMachine &TM, bool Fast);
 
 /// createX86FloatingPointStackifierPass - This function returns a pass which
 /// converts floating point register references and pseudo instructions into


Index: llvm/lib/Target/X86/X86ISelDAGToDAG.cpp
diff -u llvm/lib/Target/X86/X86ISelDAGToDAG.cpp:1.100 
llvm/lib/Target/X86/X86ISelDAGToDAG.cpp:1.101
--- llvm/lib/Target/X86/X86ISelDAGToDAG.cpp:1.100   Tue Aug 29 01:44:17 2006
+++ llvm/lib/Target/X86/X86ISelDAGToDAG.cpp Tue Aug 29 13:28:33 2006
@@ -92,6 +92,10 @@
 /// register should set this to true.
 bool ContainsFPCode;
 
+/// FastISel - Enable fast(er) instruction selection.
+///
+bool FastISel;
+
 /// X86Lowering - This object fully describes how to lower LLVM code to an
 /// X86-specific SelectionDAG.
 X86TargetLowering X86Lowering;
@@ -103,8 +107,9 @@
 unsigned GlobalBaseReg;
 
   public:
-X86DAGToDAGISel(X86TargetMachine &TM)
+X86DAGToDAGISel(X86TargetMachine &TM, bool fast)
   : SelectionDAGISel(X86Lowering),
+ContainsFPCode(false), FastISel(fast), 
 X86Lowering(*TM.getTargetLowering()),
 Subtarget(&TM.getSubtarget()) {}
 
@@ -237,7 +242,7 @@
   //  /[X]
   //  | ^
   // [U]|
-  return !isNonImmUse(U, N);
+  return !FastISel && !isNonImmUse(U, N);
 }
 
 /// MoveBelowTokenFactor - Replace TokenFactor operand with load's chain 
operand
@@ -370,7 +375,7 @@
   DEBUG(BB->dump());
   MachineFunction::iterator FirstMBB = BB;
 
-  if (X86ISelPreproc)
+  if (!FastISel)
 InstructionSelectPreprocess(DAG);
 
   // Codegen the basic block.
@@ -1071,6 +1076,6 @@
 /// createX86ISelDag - This pass converts a legalized DAG into a 
 /// X86-specific DAG, ready for instruction scheduling.
 ///
-FunctionPass *llvm::createX86ISelDag(X86TargetMachine &TM) {
-  return new X86DAGToDAGISel(TM);
+FunctionPass *llvm::createX86ISelDag(X86TargetMachine &TM, bool Fast) {
+  return new X86DAGToDAGISel(TM, Fast);
 }


Index: llvm/lib/Target/X86/X86TargetMachine.cpp
diff -u llvm/lib/Target/X86/X86TargetMachine.cpp:1.121 
llvm/lib/Target/X86/X86TargetMachine.cpp:1.122
--- llvm/lib/Target/X86/X86TargetMachine.cpp:1.121  Wed Aug 23 16:08:52 2006
+++ llvm/lib/Target/X86/X86TargetMachine.cppTue Aug 29 13:28:33 2006
@@ -103,7 +103,7 @@
   PM.add(createUnreachableBlockEliminationPass());
 
   // Install an instruction selector.
-  PM.add(createX86ISelDag(*this));
+  PM.add(createX86ISelDag(*this, Fast));
 
   // Print the instruction selected machine code...
   if (PrintMachineCode)
@@ -168,7 +168,7 @@
   PM.add(createUnreachableBlockEliminationPass());
 
   // Install an instruction selector.
-  PM.add(createX86ISelDag(TM));
+  PM.add(createX86ISelDag(TM, false));
 
   // Print the instruction selected machine code...
   if (PrintMachineCode)



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


[llvm-commits] CVS: llvm/lib/Target/X86/X86ISelDAGToDAG.cpp

2006-08-29 Thread Evan Cheng


Changes in directory llvm/lib/Target/X86:

X86ISelDAGToDAG.cpp updated: 1.101 -> 1.102
---
Log message:

Don't performance load/op/store transformation if op produces a floating point
or vector result. X86 does not have load/mod/store variants of those
instructions.


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

 X86ISelDAGToDAG.cpp |4 +++-
 1 files changed, 3 insertions(+), 1 deletion(-)


Index: llvm/lib/Target/X86/X86ISelDAGToDAG.cpp
diff -u llvm/lib/Target/X86/X86ISelDAGToDAG.cpp:1.101 
llvm/lib/Target/X86/X86ISelDAGToDAG.cpp:1.102
--- llvm/lib/Target/X86/X86ISelDAGToDAG.cpp:1.101   Tue Aug 29 13:28:33 2006
+++ llvm/lib/Target/X86/X86ISelDAGToDAG.cpp Tue Aug 29 13:37:37 2006
@@ -312,7 +312,9 @@
 
 SDOperand N1 = I->getOperand(1);
 SDOperand N2 = I->getOperand(2);
-if (!N1.hasOneUse())
+if (MVT::isFloatingPoint(N1.getValueType()) &&
+MVT::isVector(N1.getValueType()) &&
+!N1.hasOneUse())
   continue;
 
 bool RModW = false;



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


[llvm-commits] CVS: llvm/test/Regression/CodeGen/X86/store_op_load_fold2.ll

2006-08-29 Thread Evan Cheng


Changes in directory llvm/test/Regression/CodeGen/X86:

store_op_load_fold2.ll updated: 1.2 -> 1.3
---
Log message:

Undo xfail.


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

 store_op_load_fold2.ll |6 +-
 1 files changed, 1 insertion(+), 5 deletions(-)


Index: llvm/test/Regression/CodeGen/X86/store_op_load_fold2.ll
diff -u llvm/test/Regression/CodeGen/X86/store_op_load_fold2.ll:1.2 
llvm/test/Regression/CodeGen/X86/store_op_load_fold2.ll:1.3
--- llvm/test/Regression/CodeGen/X86/store_op_load_fold2.ll:1.2 Mon Jul 24 
02:37:33 2006
+++ llvm/test/Regression/CodeGen/X86/store_op_load_fold2.ll Tue Aug 29 
13:49:41 2006
@@ -1,8 +1,4 @@
-; RUN: llvm-as < %s | llc -march=x86 -x86-asm-syntax=intel | grep 'and DWORD 
PTR' | wc -l | grep 1
-;
-; FIXME: The number of (store (and (load ..) ..) ..) really should be 2. But 
the current hack
-; only allow one of the folding to happen.
-; XFAIL: *
+; RUN: llvm-as < %s | llc -march=x86 -x86-asm-syntax=intel | grep 'and DWORD 
PTR' | wc -l | grep 2
 
%struct.Macroblock = type { int, int, int, int, int, [8 x int], 
%struct.Macroblock*, %struct.Macroblock*, int, [2 x [4 x [4 x [2 x int, [16 
x sbyte], [16 x sbyte], int, long, [4 x int], [4 x int], long, int, int, int, 
int, int, int, int, int, int, int, int, int, int, int, int, short, double, int, 
int, int, int, int, int, int, int, int }
 



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