[llvm-commits] CVS: llvm/lib/Target/ARM/ARMInstrInfo.td
Changes in directory llvm/lib/Target/ARM: ARMInstrInfo.td updated: 1.21 - 1.22 --- Log message: add the orr instruction --- Diffs of the changes: (+4 -0) ARMInstrInfo.td |4 1 files changed, 4 insertions(+) Index: llvm/lib/Target/ARM/ARMInstrInfo.td diff -u llvm/lib/Target/ARM/ARMInstrInfo.td:1.21 llvm/lib/Target/ARM/ARMInstrInfo.td:1.22 --- llvm/lib/Target/ARM/ARMInstrInfo.td:1.21Thu Aug 24 12:19:08 2006 +++ llvm/lib/Target/ARM/ARMInstrInfo.td Wed Sep 6 13:03:12 2006 @@ -113,6 +113,10 @@ and $dst, $a, $b, [(set IntRegs:$dst, (and IntRegs:$a, IntRegs:$b))]; +def orr_rr: InstARM(ops IntRegs:$dst, IntRegs:$a, IntRegs:$b), + orr $dst, $a, $b, + [(set IntRegs:$dst, (or IntRegs:$a, IntRegs:$b))]; + let isTwoAddress = 1 in { def movcond : InstARM(ops IntRegs:$dst, IntRegs:$false, IntRegs:$true, CCOp:$cc), mov$cc $dst, $true, ___ llvm-commits mailing list llvm-commits@cs.uiuc.edu http://lists.cs.uiuc.edu/mailman/listinfo/llvm-commits
[llvm-commits] CVS: llvm/lib/Target/IA64/IA64AsmPrinter.cpp
Changes in directory llvm/lib/Target/IA64: IA64AsmPrinter.cpp updated: 1.33 - 1.34 --- Log message: Separate target specific asm properties from the asm printers. --- Diffs of the changes: (+15 -6) IA64AsmPrinter.cpp | 21 +++-- 1 files changed, 15 insertions(+), 6 deletions(-) Index: llvm/lib/Target/IA64/IA64AsmPrinter.cpp diff -u llvm/lib/Target/IA64/IA64AsmPrinter.cpp:1.33 llvm/lib/Target/IA64/IA64AsmPrinter.cpp:1.34 --- llvm/lib/Target/IA64/IA64AsmPrinter.cpp:1.33Mon May 8 23:59:56 2006 +++ llvm/lib/Target/IA64/IA64AsmPrinter.cpp Wed Sep 6 13:34:40 2006 @@ -24,6 +24,7 @@ #include llvm/CodeGen/AsmPrinter.h #include llvm/CodeGen/MachineFunctionPass.h #include llvm/Target/TargetMachine.h +#include llvm/Target/TargetAsmInfo.h #include llvm/Support/Mangler.h #include llvm/ADT/Statistic.h #include iostream @@ -32,10 +33,8 @@ namespace { Statistic EmittedInsts(asm-printer, Number of machine instrs printed); - struct IA64AsmPrinter : public AsmPrinter { -std::setstd::string ExternalFunctionNames, ExternalObjectNames; - -IA64AsmPrinter(std::ostream O, TargetMachine TM) : AsmPrinter(O, TM) { + struct VISIBILITY_HIDDEN IA64TargetAsmInfo : public TargetAsmInfo { +IA64TargetAsmInfo() { CommentString = //; Data8bitsDirective = \tdata1\t; // FIXME: check that we are Data16bitsDirective = \tdata2.ua\t; // disabling auto-alignment @@ -52,6 +51,14 @@ // FIXME: would be nice to have rodata (no 'w') when appropriate? ConstantPoolSection = \n\t.section .data, \aw\, \progbits\\n; } + }; + + struct IA64AsmPrinter : public AsmPrinter { +std::setstd::string ExternalFunctionNames, ExternalObjectNames; + +IA64AsmPrinter(std::ostream O, TargetMachine TM, TargetAsmInfo *T) + : AsmPrinter(O, TM, T) { +} virtual const char *getPassName() const { return IA64 Assembly Printer; @@ -185,7 +192,8 @@ printBasicBlockLabel(MO.getMachineBasicBlock()); return; case MachineOperand::MO_ConstantPoolIndex: { -O @gprel( PrivateGlobalPrefix CPI getFunctionNumber() _ +O @gprel( TAI-getPrivateGlobalPrefix() + CPI getFunctionNumber() _ MO.getConstantPoolIndex() ); return; } @@ -358,7 +366,8 @@ /// FunctionPass *llvm::createIA64CodePrinterPass(std::ostream o, IA64TargetMachine tm) { - return new IA64AsmPrinter(o, tm); + IA64TargetAsmInfo *TAI = new IA64TargetAsmInfo(); + return new IA64AsmPrinter(o, tm, TAI); } ___ llvm-commits mailing list llvm-commits@cs.uiuc.edu http://lists.cs.uiuc.edu/mailman/listinfo/llvm-commits
[llvm-commits] CVS: llvm/include/llvm/Target/TargetAsmInfo.h
Changes in directory llvm/include/llvm/Target: TargetAsmInfo.h added (r1.1) --- Log message: Separate target specifc asm properties from asm printers. --- Diffs of the changes: (+427 -0) TargetAsmInfo.h | 427 1 files changed, 427 insertions(+) Index: llvm/include/llvm/Target/TargetAsmInfo.h diff -c /dev/null llvm/include/llvm/Target/TargetAsmInfo.h:1.1 *** /dev/null Wed Sep 6 13:35:43 2006 --- llvm/include/llvm/Target/TargetAsmInfo.hWed Sep 6 13:35:33 2006 *** *** 0 --- 1,427 + //===-- llvm/Target/TargetAsmInfo.h - Asm info --*- C++ -*-===// + // + // The LLVM Compiler Infrastructure + // + // This file was developed by James M. Laskey and is distributed under + // the University of Illinois Open Source License. See LICENSE.TXT for details. + // + //===--===// + // + // This file contains a class to be used as the basis for target specific + // asm writers. This class primarily takes care of global printing constants, + // which are used in very similar ways across all targets. + // + //===--===// + + #ifndef LLVM_TARGET_ASM_INFO_H + #define LLVM_TARGET_ASM_INFO_H + + #include llvm/CodeGen/MachineFunctionPass.h + #include llvm/Support/DataTypes.h + + namespace llvm { + + /// TargetAsmInfo - This class is intended to be used as a base class for asm + /// properties and features specific to the target. + class TargetAsmInfo { + + protected: + //===--===// + // Properties to be set by the target writer, used to configure asm printer. + // + + /// TextSection - Section directive for standard text. + /// + const char *TextSection; // Defaults to .text. + + /// DataSection - Section directive for standard data. + /// + const char *DataSection; // Defaults to .data. + + /// AddressSize - Size of addresses used in file. + /// + unsigned AddressSize; // Defaults to 4. + + /// NeedsSet - True if target asm can't compute addresses on data + /// directives. + bool NeedsSet;// Defaults to false. + + /// CommentString - This indicates the comment character used by the + /// assembler. + const char *CommentString;// Defaults to # + + /// GlobalPrefix - If this is set to a non-empty string, it is prepended + /// onto all global symbols. This is often used for _ or .. + const char *GlobalPrefix; // Defaults to + + /// PrivateGlobalPrefix - This prefix is used for globals like constant + /// pool entries that are completely private to the .o file and should not + /// have names in the .o file. This is often . or L. + const char *PrivateGlobalPrefix; // Defaults to . + + /// GlobalVarAddrPrefix/Suffix - If these are nonempty, these strings + /// will enclose any GlobalVariable (that isn't a function) + /// + const char *GlobalVarAddrPrefix; // Defaults to + const char *GlobalVarAddrSuffix; // Defaults to + + /// FunctionAddrPrefix/Suffix - If these are nonempty, these strings + /// will enclose any GlobalVariable that points to a function. + /// For example, this is used by the IA64 backend to materialize + /// function descriptors, by decorating the .data8 object with the + /// \literal @fptr( ) \endliteral + /// link-relocation operator. + /// + const char *FunctionAddrPrefix; // Defaults to + const char *FunctionAddrSuffix; // Defaults to + + /// InlineAsmStart/End - If these are nonempty, they contain a directive to + /// emit before and after an inline assembly statement. + const char *InlineAsmStart; // Defaults to #APP\n + const char *InlineAsmEnd; // Defaults to #NO_APP\n + + //===--- Data Emission Directives -===// + + /// ZeroDirective - this should be set to the directive used to get some + /// number of zero bytes emitted to the current section. Common cases are + /// \t.zero\t and \t.space\t. If this is set to null, the + /// Data*bitsDirective's will be used to emit zero bytes. + const char *ZeroDirective;// Defaults to \t.zero\t + const char *ZeroDirectiveSuffix; // Defaults to + + /// AsciiDirective - This directive allows emission of an ascii string with + /// the standard C escape characters embedded into it. + const char *AsciiDirective; // Defaults to \t.ascii\t + + /// AscizDirective - If not null, this allows for special handling of + /// zero terminated strings on this target. This
[llvm-commits] CVS: llvm/lib/Target/Sparc/SparcAsmPrinter.cpp
Changes in directory llvm/lib/Target/Sparc: SparcAsmPrinter.cpp updated: 1.66 - 1.67 --- Log message: Separate target specific asm properties from the asm printers. --- Diffs of the changes: (+12 -4) SparcAsmPrinter.cpp | 16 1 files changed, 12 insertions(+), 4 deletions(-) Index: llvm/lib/Target/Sparc/SparcAsmPrinter.cpp diff -u llvm/lib/Target/Sparc/SparcAsmPrinter.cpp:1.66 llvm/lib/Target/Sparc/SparcAsmPrinter.cpp:1.67 --- llvm/lib/Target/Sparc/SparcAsmPrinter.cpp:1.66 Fri May 12 01:33:48 2006 +++ llvm/lib/Target/Sparc/SparcAsmPrinter.cpp Wed Sep 6 13:34:40 2006 @@ -22,6 +22,7 @@ #include llvm/CodeGen/MachineFunctionPass.h #include llvm/CodeGen/MachineConstantPool.h #include llvm/CodeGen/MachineInstr.h +#include llvm/Target/TargetAsmInfo.h #include llvm/Target/TargetData.h #include llvm/Target/TargetMachine.h #include llvm/Support/Mangler.h @@ -36,8 +37,8 @@ namespace { Statistic EmittedInsts(asm-printer, Number of machine instrs printed); - struct SparcAsmPrinter : public AsmPrinter { -SparcAsmPrinter(std::ostream O, TargetMachine TM) : AsmPrinter(O, TM) { + struct VISIBILITY_HIDDEN SparcTargetAsmInfo : public TargetAsmInfo { +SparcTargetAsmInfo() { Data16bitsDirective = \t.half\t; Data32bitsDirective = \t.word\t; Data64bitsDirective = 0; // .xword is only supported by V9. @@ -45,6 +46,12 @@ CommentString = !; ConstantPoolSection = \t.section \.rodata\,#alloc\n; } + }; + + struct VISIBILITY_HIDDEN SparcAsmPrinter : public AsmPrinter { +SparcAsmPrinter(std::ostream O, TargetMachine TM, TargetAsmInfo *T) + : AsmPrinter(O, TM, T) { +} /// We name each basic block in a Function with a unique number, so /// that we can consistently refer to them later. This is cleared @@ -78,7 +85,8 @@ /// FunctionPass *llvm::createSparcCodePrinterPass(std::ostream o, TargetMachine tm) { - return new SparcAsmPrinter(o, tm); + SparcTargetAsmInfo *TAI = new SparcTargetAsmInfo(); + return new SparcAsmPrinter(o, tm, TAI); } /// runOnMachineFunction - This uses the printMachineInstruction() @@ -167,7 +175,7 @@ O MO.getSymbolName(); break; case MachineOperand::MO_ConstantPoolIndex: -O PrivateGlobalPrefix CPI getFunctionNumber() _ +O TAI-getPrivateGlobalPrefix() CPI getFunctionNumber() _ MO.getConstantPoolIndex(); break; default: ___ llvm-commits mailing list llvm-commits@cs.uiuc.edu http://lists.cs.uiuc.edu/mailman/listinfo/llvm-commits
[llvm-commits] CVS: llvm/lib/Target/Alpha/AlphaAsmPrinter.cpp
Changes in directory llvm/lib/Target/Alpha: AlphaAsmPrinter.cpp updated: 1.46 - 1.47 --- Log message: Separate target specific asm properties from the asm printers. --- Diffs of the changes: (+14 -7) AlphaAsmPrinter.cpp | 21 ++--- 1 files changed, 14 insertions(+), 7 deletions(-) Index: llvm/lib/Target/Alpha/AlphaAsmPrinter.cpp diff -u llvm/lib/Target/Alpha/AlphaAsmPrinter.cpp:1.46 llvm/lib/Target/Alpha/AlphaAsmPrinter.cpp:1.47 --- llvm/lib/Target/Alpha/AlphaAsmPrinter.cpp:1.46 Mon Jul 3 12:57:34 2006 +++ llvm/lib/Target/Alpha/AlphaAsmPrinter.cpp Wed Sep 6 13:34:40 2006 @@ -19,6 +19,7 @@ #include llvm/Type.h #include llvm/Assembly/Writer.h #include llvm/CodeGen/AsmPrinter.h +#include llvm/Target/TargetAsmInfo.h #include llvm/Target/TargetMachine.h #include llvm/Support/Mangler.h #include llvm/ADT/Statistic.h @@ -27,17 +28,22 @@ namespace { Statistic EmittedInsts(asm-printer, Number of machine instrs printed); + + struct VISIBILITY_HIDDEN AlphaTargetAsmInfo : public TargetAsmInfo { +AlphaTargetAsmInfo() { + AlignmentIsInBytes = false; + PrivateGlobalPrefix = $; +} + }; - struct AlphaAsmPrinter : public AsmPrinter { + struct VISIBILITY_HIDDEN AlphaAsmPrinter : public AsmPrinter { /// Unique incrementer for label values for referencing Global values. /// unsigned LabelNumber; - AlphaAsmPrinter(std::ostream o, TargetMachine tm) - : AsmPrinter(o, tm), LabelNumber(0) { - AlignmentIsInBytes = false; - PrivateGlobalPrefix = $; +AlphaAsmPrinter(std::ostream o, TargetMachine tm, TargetAsmInfo *T) + : AsmPrinter(o, tm, T), LabelNumber(0) { } /// We name each basic block in a Function with a unique number, so @@ -76,7 +82,8 @@ /// FunctionPass *llvm::createAlphaCodePrinterPass (std::ostream o, TargetMachine tm) { - return new AlphaAsmPrinter(o, tm); + AlphaTargetAsmInfo *TAI = new AlphaTargetAsmInfo(); + return new AlphaAsmPrinter(o, tm, TAI); } #include AlphaGenAsmWriter.inc @@ -115,7 +122,7 @@ return; case MachineOperand::MO_ConstantPoolIndex: -O PrivateGlobalPrefix CPI getFunctionNumber() _ +O TAI-getPrivateGlobalPrefix() CPI getFunctionNumber() _ MO.getConstantPoolIndex(); return; ___ llvm-commits mailing list llvm-commits@cs.uiuc.edu http://lists.cs.uiuc.edu/mailman/listinfo/llvm-commits
[llvm-commits] CVS: llvm/Xcode/LLVM.xcodeproj/project.pbxproj
Changes in directory llvm/Xcode/LLVM.xcodeproj: project.pbxproj updated: 1.22 - 1.23 --- Log message: Update project with new files. --- Diffs of the changes: (+5 -3) project.pbxproj |8 +--- 1 files changed, 5 insertions(+), 3 deletions(-) Index: llvm/Xcode/LLVM.xcodeproj/project.pbxproj diff -u llvm/Xcode/LLVM.xcodeproj/project.pbxproj:1.22 llvm/Xcode/LLVM.xcodeproj/project.pbxproj:1.23 --- llvm/Xcode/LLVM.xcodeproj/project.pbxproj:1.22 Fri Aug 25 09:16:49 2006 +++ llvm/Xcode/LLVM.xcodeproj/project.pbxproj Wed Sep 6 13:38:54 2006 @@ -41,6 +41,8 @@ /* Begin PBXFileReference section */ CF1ACC9709C9DE4400D3C5EB /* IntrinsicInst.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; name = IntrinsicInst.cpp; path = ../lib/VMCore/IntrinsicInst.cpp; sourceTree = group; }; CF26835B09178F5500C5F253 /* TargetInstrItineraries.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = TargetInstrItineraries.h; sourceTree = group; }; + CF47BD380AAF40BC00A8B13E /* TargetAsmInfo.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = TargetAsmInfo.h; sourceTree = group; }; + CF47BD860AAF487E00A8B13E /* TargetAsmInfo.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = TargetAsmInfo.cpp; sourceTree = group; }; CF490D14090541D30072DB1C /* TargetSchedule.td */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text; path = TargetSchedule.td; sourceTree = group; }; CF490D15090541D30072DB1C /* TargetSelectionDAG.td */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text; path = TargetSelectionDAG.td; sourceTree = group; }; CF490E2F0907BBF80072DB1C /* SubtargetEmitter.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = SubtargetEmitter.h; sourceTree = group; }; @@ -893,7 +895,6 @@ DE8170AA08CFB44D0093BDEF /* TableGen.cpp */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.cpp.cpp; path = TableGen.cpp; sourceTree = group; }; DE8170AB08CFB44D0093BDEF /* TableGenBackend.cpp */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.cpp.cpp; path = TableGenBackend.cpp; sourceTree = group; }; DE8170AC08CFB44D0093BDEF /* TableGenBackend.h */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.c.h; path = TableGenBackend.h; sourceTree = group; }; - DEFAB19C0959E97F00E0AB42 /* DwarfWriter.cpp */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.cpp.cpp; name = DwarfWriter.cpp; path = ../lib/CodeGen/DwarfWriter.cpp; sourceTree = SOURCE_ROOT; }; DEFAB19D0959E9A100E0AB42 /* DwarfWriter.h */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.c.h; name = DwarfWriter.h; path = ../include/llvm/CodeGen/DwarfWriter.h; sourceTree = SOURCE_ROOT; }; /* End PBXFileReference section */ @@ -1113,7 +1114,6 @@ DE66ED3F08ABEC2A00323D32 /* AsmPrinter.cpp */, DE66ED4008ABEC2A00323D32 /* BranchFolding.cpp */, CFC244570959DEF2009F8C47 /* DwarfWriter.cpp */, - DEFAB19C0959E97F00E0AB42 /* DwarfWriter.cpp */, DE66ED6F08ABEC2B00323D32 /* ELFWriter.cpp */, DE66ED7008ABEC2B00323D32 /* IntrinsicLowering.cpp */, DE66ED7108ABEC2B00323D32 /* LiveInterval.cpp */, @@ -1338,6 +1338,7 @@ DE66EE9608ABEE5D00323D32 /* lib/Target */ = { isa = PBXGroup; children = ( + CF47BD860AAF487E00A8B13E /* TargetAsmInfo.cpp */, DE66EE9708ABEE5D00323D32 /* Alpha */, CF9720380A9F3BBC002CEEDD /* ARM */, DE66EEC908ABEE5E00323D32 /* CBackend */, @@ -1999,6 +2000,7 @@ children = ( DE66F2A008ABF03200323D32 /* MRegisterInfo.h */, CF9BCD0808C74DE0001E7011 /* SubtargetFeature.h */, + CF47BD380AAF40BC00A8B13E /* TargetAsmInfo.h */, DE66F2A108ABF03200323D32 /* TargetData.h */, DE66F2A208ABF03200323D32 /* TargetFrameInfo.h */, DE66F2A308ABF03200323D32 /* TargetInstrInfo.h */, @@ -2287,7 +2289,7 @@ /* Begin PBXLegacyTarget section */ CF0329B608D1BE110030FD33 /* LLVM lib */ = { isa = PBXLegacyTarget; - buildArgumentsString =
[llvm-commits] CVS: llvm/lib/CodeGen/AsmPrinter.cpp DwarfWriter.cpp
Changes in directory llvm/lib/CodeGen: AsmPrinter.cpp updated: 1.90 - 1.91 DwarfWriter.cpp updated: 1.73 - 1.74 --- Log message: Separate target specific asm properties from the asm printers. --- Diffs of the changes: (+169 -212) AsmPrinter.cpp | 237 DwarfWriter.cpp | 144 +++--- 2 files changed, 169 insertions(+), 212 deletions(-) Index: llvm/lib/CodeGen/AsmPrinter.cpp diff -u llvm/lib/CodeGen/AsmPrinter.cpp:1.90 llvm/lib/CodeGen/AsmPrinter.cpp:1.91 --- llvm/lib/CodeGen/AsmPrinter.cpp:1.90Tue Sep 5 15:02:51 2006 +++ llvm/lib/CodeGen/AsmPrinter.cpp Wed Sep 6 13:34:40 2006 @@ -20,51 +20,16 @@ #include llvm/CodeGen/MachineJumpTableInfo.h #include llvm/Support/Mangler.h #include llvm/Support/MathExtras.h +#include llvm/Target/TargetAsmInfo.h #include llvm/Target/TargetData.h #include llvm/Target/TargetMachine.h #include iostream #include cerrno using namespace llvm; -AsmPrinter::AsmPrinter(std::ostream o, TargetMachine tm) -: FunctionNumber(0), O(o), TM(tm), - CommentString(#), - GlobalPrefix(), - PrivateGlobalPrefix(.), - GlobalVarAddrPrefix(), - GlobalVarAddrSuffix(), - FunctionAddrPrefix(), - FunctionAddrSuffix(), - InlineAsmStart(#APP), - InlineAsmEnd(#NO_APP), - ZeroDirective(\t.zero\t), - ZeroDirectiveSuffix(0), - AsciiDirective(\t.ascii\t), - AscizDirective(\t.asciz\t), - Data8bitsDirective(\t.byte\t), - Data16bitsDirective(\t.short\t), - Data32bitsDirective(\t.long\t), - Data64bitsDirective(\t.quad\t), - AlignDirective(\t.align\t), - AlignmentIsInBytes(true), - SwitchToSectionDirective(\t.section\t), - TextSectionStartSuffix(), - DataSectionStartSuffix(), - SectionEndDirectiveSuffix(0), - ConstantPoolSection(\t.section .rodata\n), - JumpTableDataSection(\t.section .rodata\n), - JumpTableTextSection(\t.text\n), - StaticCtorsSection(\t.section .ctors,\aw\,@progbits), - StaticDtorsSection(\t.section .dtors,\aw\,@progbits), - FourByteConstantSection(0), - EightByteConstantSection(0), - SixteenByteConstantSection(0), - SetDirective(0), - LCOMMDirective(0), - COMMDirective(\t.comm\t), - COMMDirectiveTakesAlignment(true), - HasDotTypeDotSizeDirective(true) { -} +AsmPrinter::AsmPrinter(std::ostream o, TargetMachine tm, TargetAsmInfo *T) +: FunctionNumber(0), O(o), TM(tm), TAI(T) +{} /// SwitchToTextSection - Switch to the specified text section of the executable @@ -74,7 +39,7 @@ const GlobalValue *GV) { std::string NS; if (GV GV-hasSection()) -NS = SwitchToSectionDirective + GV-getSection(); +NS = TAI-getSwitchToSectionDirective() + GV-getSection(); else NS = NewSection; @@ -82,13 +47,13 @@ if (CurrentSection == NS) return; // Close the current section, if applicable. - if (SectionEndDirectiveSuffix !CurrentSection.empty()) -O CurrentSection SectionEndDirectiveSuffix \n; + if (TAI-getSectionEndDirectiveSuffix() !CurrentSection.empty()) +O CurrentSection TAI-getSectionEndDirectiveSuffix() \n; CurrentSection = NS; if (!CurrentSection.empty()) -O CurrentSection TextSectionStartSuffix '\n'; +O CurrentSection TAI-getTextSectionStartSuffix() '\n'; } /// SwitchToDataSection - Switch to the specified data section of the executable @@ -98,7 +63,7 @@ const GlobalValue *GV) { std::string NS; if (GV GV-hasSection()) -NS = SwitchToSectionDirective + GV-getSection(); +NS = TAI-getSwitchToSectionDirective() + GV-getSection(); else NS = NewSection; @@ -106,23 +71,24 @@ if (CurrentSection == NS) return; // Close the current section, if applicable. - if (SectionEndDirectiveSuffix !CurrentSection.empty()) -O CurrentSection SectionEndDirectiveSuffix \n; + if (TAI-getSectionEndDirectiveSuffix() !CurrentSection.empty()) +O CurrentSection TAI-getSectionEndDirectiveSuffix() \n; CurrentSection = NS; if (!CurrentSection.empty()) -O CurrentSection DataSectionStartSuffix '\n'; +O CurrentSection TAI-getDataSectionStartSuffix() '\n'; } bool AsmPrinter::doInitialization(Module M) { - Mang = new Mangler(M, GlobalPrefix); + Mang = new Mangler(M, TAI-getGlobalPrefix()); if (!M.getModuleInlineAsm().empty()) -O CommentString Start of file scope inline assembly\n +O TAI-getCommentString() Start of file scope inline assembly\n M.getModuleInlineAsm() - \n CommentString End of file scope inline assembly\n; + \n TAI-getCommentString() +End of file scope inline assembly\n; SwitchToDataSection(, 0); // Reset back to no section. @@ -163,13 +129,13 @@ MachineConstantPoolEntry CPE = CP[i]; const Constant *CV = CPE.Val; const Type *Ty = CV-getType(); -if (FourByteConstantSection +if (TAI-getFourByteConstantSection() TM.getTargetData()-getTypeSize(Ty) ==
[llvm-commits] CVS: llvm/lib/Target/X86/X86ATTAsmPrinter.cpp X86ATTAsmPrinter.h X86AsmPrinter.cpp X86AsmPrinter.h X86IntelAsmPrinter.cpp X86IntelAsmPrinter.h
Changes in directory llvm/lib/Target/X86: X86ATTAsmPrinter.cpp updated: 1.58 - 1.59 X86ATTAsmPrinter.h updated: 1.13 - 1.14 X86AsmPrinter.cpp updated: 1.192 - 1.193 X86AsmPrinter.h updated: 1.27 - 1.28 X86IntelAsmPrinter.cpp updated: 1.52 - 1.53 X86IntelAsmPrinter.h updated: 1.21 - 1.22 --- Log message: Separate target specific asm properties from the asm printers. --- Diffs of the changes: (+92 -96) X86ATTAsmPrinter.cpp | 16 X86ATTAsmPrinter.h |4 +- X86AsmPrinter.cpp | 90 ++--- X86AsmPrinter.h| 34 -- X86IntelAsmPrinter.cpp | 40 - X86IntelAsmPrinter.h |4 +- 6 files changed, 92 insertions(+), 96 deletions(-) Index: llvm/lib/Target/X86/X86ATTAsmPrinter.cpp diff -u llvm/lib/Target/X86/X86ATTAsmPrinter.cpp:1.58 llvm/lib/Target/X86/X86ATTAsmPrinter.cpp:1.59 --- llvm/lib/Target/X86/X86ATTAsmPrinter.cpp:1.58 Tue Aug 29 17:13:10 2006 +++ llvm/lib/Target/X86/X86ATTAsmPrinter.cppWed Sep 6 13:34:40 2006 @@ -43,11 +43,11 @@ switch (F-getLinkage()) { default: assert(0 Unknown linkage type!); case Function::InternalLinkage: // Symbols default to internal. -SwitchToTextSection(DefaultTextSection, F); +SwitchToTextSection(TAI-getTextSection(), F); EmitAlignment(4, F); // FIXME: This should be parameterized somewhere. break; case Function::ExternalLinkage: -SwitchToTextSection(DefaultTextSection, F); +SwitchToTextSection(TAI-getTextSection(), F); EmitAlignment(4, F); // FIXME: This should be parameterized somewhere. O \t.globl\t CurrentFnName \n; break; @@ -101,7 +101,7 @@ // lables that are used in jump table expressions (e.g. LBB1_1-LJT1_0). EmitJumpTableInfo(MF.getJumpTableInfo()); - if (HasDotTypeDotSizeDirective) + if (TAI-hasDotTypeDotSizeDirective()) O \t.size CurrentFnName , .- CurrentFnName \n; if (Subtarget-isTargetDarwin()) { @@ -144,7 +144,7 @@ case MachineOperand::MO_JumpTableIndex: { bool isMemOp = Modifier !strcmp(Modifier, mem); if (!isMemOp) O '$'; -O PrivateGlobalPrefix JTI getFunctionNumber() _ +O TAI-getPrivateGlobalPrefix() JTI getFunctionNumber() _ MO.getJumpTableIndex(); if (Subtarget-isTargetDarwin() TM.getRelocationModel() == Reloc::PIC_) @@ -154,7 +154,7 @@ case MachineOperand::MO_ConstantPoolIndex: { bool isMemOp = Modifier !strcmp(Modifier, mem); if (!isMemOp) O '$'; -O PrivateGlobalPrefix CPI getFunctionNumber() _ +O TAI-getPrivateGlobalPrefix() CPI getFunctionNumber() _ MO.getConstantPoolIndex(); if (Subtarget-isTargetDarwin() TM.getRelocationModel() == Reloc::PIC_) @@ -206,14 +206,14 @@ if (isCallOp Subtarget-isTargetDarwin() TM.getRelocationModel() != Reloc::Static) { - std::string Name(GlobalPrefix); + std::string Name(TAI-getGlobalPrefix()); Name += MO.getSymbolName(); FnStubs.insert(Name); O L Name $stub; return; } if (!isCallOp) O '$'; -O GlobalPrefix MO.getSymbolName(); +O TAI-getGlobalPrefix() MO.getSymbolName(); return; } default: @@ -388,7 +388,7 @@ Reg1 = getX86SubSuperRegister(Reg1, MVT::i16); else Reg1 = getX86SubSuperRegister(Reg1, MVT::i8); -O CommentString TRUNCATE ; +O TAI-getCommentString() TRUNCATE ; if (Reg0 != Reg1) O \n\t; break; Index: llvm/lib/Target/X86/X86ATTAsmPrinter.h diff -u llvm/lib/Target/X86/X86ATTAsmPrinter.h:1.13 llvm/lib/Target/X86/X86ATTAsmPrinter.h:1.14 --- llvm/lib/Target/X86/X86ATTAsmPrinter.h:1.13 Fri Apr 28 18:19:39 2006 +++ llvm/lib/Target/X86/X86ATTAsmPrinter.h Wed Sep 6 13:34:40 2006 @@ -20,8 +20,8 @@ namespace llvm { struct X86ATTAsmPrinter : public X86SharedAsmPrinter { - X86ATTAsmPrinter(std::ostream O, X86TargetMachine TM) -: X86SharedAsmPrinter(O, TM) { } + X86ATTAsmPrinter(std::ostream O, X86TargetMachine TM, TargetAsmInfo *T) +: X86SharedAsmPrinter(O, TM, T) { } virtual const char *getPassName() const { return X86 ATT-Style Assembly Printer; Index: llvm/lib/Target/X86/X86AsmPrinter.cpp diff -u llvm/lib/Target/X86/X86AsmPrinter.cpp:1.192 llvm/lib/Target/X86/X86AsmPrinter.cpp:1.193 --- llvm/lib/Target/X86/X86AsmPrinter.cpp:1.192 Sat Aug 12 16:29:52 2006 +++ llvm/lib/Target/X86/X86AsmPrinter.cpp Wed Sep 6 13:34:40 2006 @@ -26,10 +26,11 @@ #include llvm/Support/CommandLine.h using namespace llvm; +enum AsmWriterFlavorTy { att, intel }; + Statistic llvm::EmittedInsts(asm-printer, Number of machine instrs printed); -enum AsmWriterFlavorTy { att, intel }; cl::optAsmWriterFlavorTy AsmWriterFlavor(x86-asm-syntax, cl::desc(Choose style of code to emit from X86 backend:), @@ -44,16 +45,11 @@ #endif ); -// Out of line virtual
[llvm-commits] CVS: llvm/lib/Target/ARM/ARMAsmPrinter.cpp
Changes in directory llvm/lib/Target/ARM: ARMAsmPrinter.cpp updated: 1.14 - 1.15 --- Log message: Separate target specific asm properties from the asm printers. --- Diffs of the changes: (+12 -4) ARMAsmPrinter.cpp | 16 1 files changed, 12 insertions(+), 4 deletions(-) Index: llvm/lib/Target/ARM/ARMAsmPrinter.cpp diff -u llvm/lib/Target/ARM/ARMAsmPrinter.cpp:1.14 llvm/lib/Target/ARM/ARMAsmPrinter.cpp:1.15 --- llvm/lib/Target/ARM/ARMAsmPrinter.cpp:1.14 Fri Aug 25 12:55:16 2006 +++ llvm/lib/Target/ARM/ARMAsmPrinter.cpp Wed Sep 6 13:34:40 2006 @@ -23,6 +23,7 @@ #include llvm/CodeGen/MachineFunctionPass.h #include llvm/CodeGen/MachineConstantPool.h #include llvm/CodeGen/MachineInstr.h +#include llvm/Target/TargetAsmInfo.h #include llvm/Target/TargetData.h #include llvm/Target/TargetMachine.h #include llvm/Support/Mangler.h @@ -37,8 +38,8 @@ namespace { Statistic EmittedInsts(asm-printer, Number of machine instrs printed); - struct ARMAsmPrinter : public AsmPrinter { -ARMAsmPrinter(std::ostream O, TargetMachine TM) : AsmPrinter(O, TM) { + struct VISIBILITY_HIDDEN ARMTargetAsmInfo : public TargetAsmInfo { +ARMTargetAsmInfo() { Data16bitsDirective = \t.half\t; Data32bitsDirective = \t.word\t; Data64bitsDirective = 0; @@ -47,6 +48,12 @@ ConstantPoolSection = \t.text\n; AlignmentIsInBytes = false; } + }; + + struct VISIBILITY_HIDDEN ARMAsmPrinter : public AsmPrinter { +ARMAsmPrinter(std::ostream O, TargetMachine TM, TargetAsmInfo *T) + : AsmPrinter(O, TM, T) { +} /// We name each basic block in a Function with a unique number, so /// that we can consistently refer to them later. This is cleared @@ -106,7 +113,8 @@ /// FunctionPass *llvm::createARMCodePrinterPass(std::ostream o, TargetMachine tm) { - return new ARMAsmPrinter(o, tm); + ARMTargetAsmInfo *TAI = new ARMTargetAsmInfo(); + return new ARMAsmPrinter(o, tm, TAI); } /// runOnMachineFunction - This uses the printMachineInstruction() @@ -187,7 +195,7 @@ abort(); break; case MachineOperand::MO_ConstantPoolIndex: -O PrivateGlobalPrefix CPI getFunctionNumber() +O TAI-getPrivateGlobalPrefix() CPI getFunctionNumber() '_' MO.getConstantPoolIndex(); break; default: ___ llvm-commits mailing list llvm-commits@cs.uiuc.edu http://lists.cs.uiuc.edu/mailman/listinfo/llvm-commits
[llvm-commits] CVS: llvm/docs/CodeGenerator.html
Changes in directory llvm/docs: CodeGenerator.html updated: 1.36 - 1.37 --- Log message: Cleaned up some of the grammar in the Live Intervals section. Removed the huge honking FIXME comment. I'll address the Live Intervals Analysis section soon. --- Diffs of the changes: (+36 -146) CodeGenerator.html | 182 ++--- 1 files changed, 36 insertions(+), 146 deletions(-) Index: llvm/docs/CodeGenerator.html diff -u llvm/docs/CodeGenerator.html:1.36 llvm/docs/CodeGenerator.html:1.37 --- llvm/docs/CodeGenerator.html:1.36 Mon Sep 4 18:35:52 2006 +++ llvm/docs/CodeGenerator.htmlWed Sep 6 13:42:41 2006 @@ -58,9 +58,10 @@ lia href=#selectiondag_futureFuture directions for the SelectionDAG/a/li /ul/li - lia href=#liveinterval_analysisLive Interval Analysis/a + lia href=#liveintervalsLive Intervals/a ul lia href=#livevariable_analysisLive Variable Analysis/a/li + lia href=#liveintervals_analysisLive Intervals Analysis/a/li /ul/li lia href=#regallocRegister Allocation/a ul @@ -1160,16 +1161,16 @@ !-- === -- div class=doc_subsection - a name=liveinterval_analysisLive Interval Analysis/a + a name=liveintervalsLive Intervals/a /div div class=doc_text -pLive Interval Analysis identifies the ranges where a variable is ilive/i. -It's used by the a href=#regallocregister allocator pass/a to determine -if two or more virtual registers which require the same register are live at -the same point in the program (conflict). When this situation occurs, one -virtual register must be ispilt/i./p +pLive Intervals are the ranges (intervals) where a variable is ilive/i. +They are used by some a href=#regallocregister allocator/a passes to +determine if two or more virtual registers which require the same register are +live at the same point in the program (conflict). When this situation occurs, +one virtual register must be ispilled/i./p /div @@ -1180,30 +1181,35 @@ div class=doc_text -pThe first step to determining the live intervals of variables is to +pThe first step in determining the live intervals of variables is to calculate the set of registers that are immediately dead after the -instruction (i.e., the instruction calculates the value, but it is never -used) and the set of registers that are used by the instruction, but are -never used after the instruction (i.e., they are killed). Live variable -information is computed for each ivirtual/i and iregister -allocatable/i physical register in the function. LLVM assumes that -physical registers are only live within a single basic block. This allows -it to do a single, local analysis to resolve physical register lifetimes in -each basic block. If a physical register is not register allocatable (e.g., +instruction (i.e., the instruction calculates the value, but it is +never used) and the set of registers that are used by the instruction, +but are never used after the instruction (i.e., they are killed). Live +variable information is computed for each ivirtual/i and +iregister allocatable/i physical register in the function. This +is done in a very efficient manner because it uses SSA to sparsely +computer lifetime information for virtual registers (which are in SSA +form) and only has to track physical registers within a block. Before +register allocation, LLVM can assume that physical registers are only +live within a single basic block. This allows it to do a single, +local analysis to resolve physical register lifetimes within each +basic block. If a physical register is not register allocatable (e.g., a stack pointer or condition codes), it is not tracked./p pPhysical registers may be live in to or out of a function. Live in values -are typically arguments in register. Live out values are typically return +are typically arguments in registers. Live out values are typically return values in registers. Live in values are marked as such, and are given a dummy defining instruction during live interval analysis. If the last basic block -of a function is a ttreturn/tt, then it's marked as using all live-out +of a function is a ttreturn/tt, then it's marked as using all live out values in the function./p pttPHI/tt nodes need to be handled specially, because the calculation of the live variable information from a depth first traversal of the CFG of -the function won't guarantee that a virtual register is defined before it's -used. When a ttPHI/tt node is encounted, only the definition is -handled, because the uses will be handled in other basic blocks./p +the function won't guarantee that a virtual register used by the ttPHI/tt +node is defined before it's used. When a ttPHI/tt node is encounted, only +the definition is handled, because the uses will be handled in other basic +blocks./p pFor each ttPHI/tt
[llvm-commits] CVS: llvm/tools/lto/lto.cpp
Changes in directory llvm/tools/lto: lto.cpp updated: 1.10 - 1.11 --- Log message: Keep track of all modules crated using a name to module map. Add private member function getMoudle(). --- Diffs of the changes: (+18 -1) lto.cpp | 19 ++- 1 files changed, 18 insertions(+), 1 deletion(-) Index: llvm/tools/lto/lto.cpp diff -u llvm/tools/lto/lto.cpp:1.10 llvm/tools/lto/lto.cpp:1.11 --- llvm/tools/lto/lto.cpp:1.10 Tue Sep 5 19:45:52 2006 +++ llvm/tools/lto/lto.cpp Wed Sep 6 13:50:26 2006 @@ -99,6 +99,23 @@ findExternalRefs(c-getOperand(i), references, mangler); } +/// InputFilename is a LLVM bytecode file. If Module with InputFilename is +/// available then return it. Otherwise parseInputFilename. +Module * +LinkTimeOptimizer::getModule(const std::string InputFilename) +{ + Module *m = NULL; + + NameToModuleMap::iterator pos = allModules.find(InputFilename.c_str()); + if (pos != allModules.end()) +m = allModules[InputFilename.c_str()]; + else { +m = ParseBytecodeFile(InputFilename); +allModules[InputFilename.c_str()] = m; + } + return m; +} + /// InputFilename is a LLVM bytecode file. Read it using bytecode reader. /// Collect global functions and symbol names in symbols vector. /// Collect external references in references vector. @@ -108,7 +125,7 @@ NameToSymbolMap symbols, std::setstd::string references) { - Module *m = ParseBytecodeFile(InputFilename); + Module *m = getModule(InputFilename); if (!m) return LTO_READ_FAILURE; ___ llvm-commits mailing list llvm-commits@cs.uiuc.edu http://lists.cs.uiuc.edu/mailman/listinfo/llvm-commits
[llvm-commits] CVS: llvm/include/llvm/LinkTimeOptimizer.h
Changes in directory llvm/include/llvm: LinkTimeOptimizer.h updated: 1.5 - 1.6 --- Log message: Keep track of all modules crated using a name to module map. Add private member function getMoudle(). --- Diffs of the changes: (+6 -0) LinkTimeOptimizer.h |6 ++ 1 files changed, 6 insertions(+) Index: llvm/include/llvm/LinkTimeOptimizer.h diff -u llvm/include/llvm/LinkTimeOptimizer.h:1.5 llvm/include/llvm/LinkTimeOptimizer.h:1.6 --- llvm/include/llvm/LinkTimeOptimizer.h:1.5 Tue Sep 5 19:28:22 2006 +++ llvm/include/llvm/LinkTimeOptimizer.h Wed Sep 6 13:50:26 2006 @@ -83,6 +83,8 @@ public: typedef hash_mapconst char*, LLVMSymbol*, hashconst char*, string_compare NameToSymbolMap; +typedef hash_mapconst char*, Module*, hashconst char*, + string_compare NameToModuleMap; enum LTOStatus readLLVMObjectFile(const std::string InputFilename, NameToSymbolMap symbols, @@ -92,8 +94,12 @@ std::string targetTriple); private: +Module *getModule (const std::string InputFilename); + + private: std::vectorModule * modules; NameToSymbolMap allSymbols; +NameToModuleMap allModules; }; } // End llvm namespace ___ llvm-commits mailing list llvm-commits@cs.uiuc.edu http://lists.cs.uiuc.edu/mailman/listinfo/llvm-commits
[llvm-commits] CVS: llvm/lib/Target/TargetAsmInfo.cpp
Changes in directory llvm/lib/Target: TargetAsmInfo.cpp updated: 1.1 - 1.2 --- Log message: Oops - forgot to update banner. --- Diffs of the changes: (+1 -1) TargetAsmInfo.cpp |2 +- 1 files changed, 1 insertion(+), 1 deletion(-) Index: llvm/lib/Target/TargetAsmInfo.cpp diff -u llvm/lib/Target/TargetAsmInfo.cpp:1.1 llvm/lib/Target/TargetAsmInfo.cpp:1.2 --- llvm/lib/Target/TargetAsmInfo.cpp:1.1 Wed Sep 6 13:35:33 2006 +++ llvm/lib/Target/TargetAsmInfo.cpp Wed Sep 6 14:21:41 2006 @@ -1,4 +1,4 @@ -//===-- TargetData.cpp - Data size alignment routines ==// +//===-- TargetAsmInfo.cpp - Asm Info ---==// // // The LLVM Compiler Infrastructure // ___ llvm-commits mailing list llvm-commits@cs.uiuc.edu http://lists.cs.uiuc.edu/mailman/listinfo/llvm-commits
[llvm-commits] CVS: llvm/tools/lto/lto.cpp
Changes in directory llvm/tools/lto: lto.cpp updated: 1.11 - 1.12 --- Log message: Add getTargetTriple() that linker can use to query target architecture. --- Diffs of the changes: (+11 -0) lto.cpp | 11 +++ 1 files changed, 11 insertions(+) Index: llvm/tools/lto/lto.cpp diff -u llvm/tools/lto/lto.cpp:1.11 llvm/tools/lto/lto.cpp:1.12 --- llvm/tools/lto/lto.cpp:1.11 Wed Sep 6 13:50:26 2006 +++ llvm/tools/lto/lto.cpp Wed Sep 6 15:16:28 2006 @@ -116,6 +116,17 @@ return m; } +/// InputFilename is a LLVM bytecode file. Reade this bytecode file and +/// set corresponding target triplet string. +void +LinkTimeOptimizer::getTargetTriple(const std::string InputFilename, + std::string targetTriple) +{ + Module *m = getModule(InputFilename); + if (m) +targetTriple = m-getTargetTriple(); +} + /// InputFilename is a LLVM bytecode file. Read it using bytecode reader. /// Collect global functions and symbol names in symbols vector. /// Collect external references in references vector. ___ llvm-commits mailing list llvm-commits@cs.uiuc.edu http://lists.cs.uiuc.edu/mailman/listinfo/llvm-commits
[llvm-commits] CVS: llvm/docs/LinkTimeOptimization.html
Changes in directory llvm/docs: LinkTimeOptimization.html updated: 1.6 - 1.7 --- Log message: Document getTargetTriple(). --- Diffs of the changes: (+12 -1) LinkTimeOptimization.html | 13 - 1 files changed, 12 insertions(+), 1 deletion(-) Index: llvm/docs/LinkTimeOptimization.html diff -u llvm/docs/LinkTimeOptimization.html:1.6 llvm/docs/LinkTimeOptimization.html:1.7 --- llvm/docs/LinkTimeOptimization.html:1.6 Mon Aug 14 15:07:50 2006 +++ llvm/docs/LinkTimeOptimization.html Wed Sep 6 15:22:55 2006 @@ -29,6 +29,7 @@ lia href=#llvmsymbolLLVMSymbol/a/li lia href=#readllvmobjectfilereadLLVMObjectFile()/a/li lia href=#optimizemodulesoptimizeModules()/a/li +lia href=#gettargettriplegetTargetTriple()/a/li /ul/li lia href=#debugDebugging Information/a/li /ul @@ -326,6 +327,16 @@ linker./p /div +!-- === -- +div class=doc_subsection + a name=gettargettriplegetTargetTriple()/a +/div + +div class=doc_text + pThe linker may use ttgetTargetTriple()/tt to query target architecture + while validating LLVM bytecode file./p +/div + !-- *** -- div class=doc_section a name=debugDebugging Information/a @@ -349,7 +360,7 @@ Devang Patelbr a href=http://llvm.org;LLVM Compiler Infrastructure/abr - Last modified: $Date: 2006/08/14 20:07:50 $ + Last modified: $Date: 2006/09/06 20:22:55 $ /address /body ___ 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/X86CodeEmitter.cpp
Changes in directory llvm/lib/Target/X86: X86CodeEmitter.cpp updated: 1.115 - 1.116 --- Log message: Variable ops instructions may ignore the last few operands for code emission. --- Diffs of the changes: (+3 -1) X86CodeEmitter.cpp |4 +++- 1 files changed, 3 insertions(+), 1 deletion(-) Index: llvm/lib/Target/X86/X86CodeEmitter.cpp diff -u llvm/lib/Target/X86/X86CodeEmitter.cpp:1.115 llvm/lib/Target/X86/X86CodeEmitter.cpp:1.116 --- llvm/lib/Target/X86/X86CodeEmitter.cpp:1.115Mon Sep 4 21:52:35 2006 +++ llvm/lib/Target/X86/X86CodeEmitter.cpp Wed Sep 6 15:24:14 2006 @@ -526,5 +526,7 @@ ++CurOp; break; } - assert(CurOp == MI.getNumOperands() Unknown encoding!); + + if ((Desc.Flags M_VARIABLE_OPS) == 0) +assert(CurOp == MI.getNumOperands() Unknown encoding!); } ___ 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/X86CodeEmitter.cpp
Changes in directory llvm/lib/Target/X86: X86CodeEmitter.cpp updated: 1.116 - 1.117 --- Log message: Watch out for variable_ops instructions. --- Diffs of the changes: (+1 -1) X86CodeEmitter.cpp |2 +- 1 files changed, 1 insertion(+), 1 deletion(-) Index: llvm/lib/Target/X86/X86CodeEmitter.cpp diff -u llvm/lib/Target/X86/X86CodeEmitter.cpp:1.116 llvm/lib/Target/X86/X86CodeEmitter.cpp:1.117 --- llvm/lib/Target/X86/X86CodeEmitter.cpp:1.116Wed Sep 6 15:24:14 2006 +++ llvm/lib/Target/X86/X86CodeEmitter.cpp Wed Sep 6 15:32:45 2006 @@ -493,7 +493,7 @@ emitRegModRMByte(MI.getOperand(CurOp++).getReg(), (Desc.TSFlags X86II::FormMask)-X86II::MRM0r); -if (CurOp != MI.getNumOperands()) +if (CurOp != MI.getNumOperands() MI.getOperand(CurOp).isImmediate()) emitConstant(MI.getOperand(CurOp++).getImm(), sizeOfImm(Desc)); break; ___ llvm-commits mailing list llvm-commits@cs.uiuc.edu http://lists.cs.uiuc.edu/mailman/listinfo/llvm-commits
[llvm-commits] CVS: llvm-test/External/SPEC/CFP2006/465.tonto/Makefile
Changes in directory llvm-test/External/SPEC/CFP2006/465.tonto: Makefile updated: 1.1 - 1.2 --- Log message: Modified Makefiles to handle multiple directories. --- Diffs of the changes: (+2 -2) Makefile |4 ++-- 1 files changed, 2 insertions(+), 2 deletions(-) Index: llvm-test/External/SPEC/CFP2006/465.tonto/Makefile diff -u llvm-test/External/SPEC/CFP2006/465.tonto/Makefile:1.1 llvm-test/External/SPEC/CFP2006/465.tonto/Makefile:1.2 --- llvm-test/External/SPEC/CFP2006/465.tonto/Makefile:1.1 Fri Sep 1 18:27:13 2006 +++ llvm-test/External/SPEC/CFP2006/465.tonto/Makefile Wed Sep 6 15:41:12 2006 @@ -14,10 +14,10 @@ FPPFLAGS += -w -DUSE_PRE_AND_POST_CONDITIONS -DUSE_ERROR_MANAGEMENT \ -m literal.pm -m tonto.pm +STDIN_FILENAME := stdin + ifeq ($(RUN_TYPE),test) - RUN_OPTIONS := stdin STDOUT_FILENAME := test.out else - RUN_OPTIONS := stdin STDOUT_FILENAME := train.out endif ___ llvm-commits mailing list llvm-commits@cs.uiuc.edu http://lists.cs.uiuc.edu/mailman/listinfo/llvm-commits
[llvm-commits] CVS: llvm-test/External/SPEC/CFP2006/470.lbm/Makefile
Changes in directory llvm-test/External/SPEC/CFP2006/470.lbm: Makefile updated: 1.1 - 1.2 --- Log message: Modified Makefiles to handle multiple directories. --- Diffs of the changes: (+1 -1) Makefile |2 +- 1 files changed, 1 insertion(+), 1 deletion(-) Index: llvm-test/External/SPEC/CFP2006/470.lbm/Makefile diff -u llvm-test/External/SPEC/CFP2006/470.lbm/Makefile:1.1 llvm-test/External/SPEC/CFP2006/470.lbm/Makefile:1.2 --- llvm-test/External/SPEC/CFP2006/470.lbm/Makefile:1.1Fri Sep 1 18:27:13 2006 +++ llvm-test/External/SPEC/CFP2006/470.lbm/MakefileWed Sep 6 15:41:12 2006 @@ -10,5 +10,5 @@ include ../../Makefile.spec2006 -RUN_OPTIONS := `cat $(REF_IN_DIR)lbm.in` +RUN_OPTIONS = `cat $(REF_IN_DIR)lbm.in` STDOUT_FILENAME := lbm.out ___ llvm-commits mailing list llvm-commits@cs.uiuc.edu http://lists.cs.uiuc.edu/mailman/listinfo/llvm-commits
[llvm-commits] CVS: llvm-test/External/SPEC/CFP2006/444.namd/Makefile
Changes in directory llvm-test/External/SPEC/CFP2006/444.namd: Makefile updated: 1.1 - 1.2 --- Log message: Modified Makefiles to handle multiple directories. --- Diffs of the changes: (+2 -7) Makefile |9 ++--- 1 files changed, 2 insertions(+), 7 deletions(-) Index: llvm-test/External/SPEC/CFP2006/444.namd/Makefile diff -u llvm-test/External/SPEC/CFP2006/444.namd/Makefile:1.1 llvm-test/External/SPEC/CFP2006/444.namd/Makefile:1.2 --- llvm-test/External/SPEC/CFP2006/444.namd/Makefile:1.1 Fri Sep 1 18:27:13 2006 +++ llvm-test/External/SPEC/CFP2006/444.namd/Makefile Wed Sep 6 15:41:12 2006 @@ -10,13 +10,8 @@ include ../../Makefile.spec2006 -ifeq ($(RUN_TYPE),test) - RUN_OPTIONS := --input namd.input --iterations 1 --output namd.out - STDOUT_FILENAME := namd.stdout -else - RUN_OPTIONS := --input namd.input --iterations 1 --output namd.out - STDOUT_FILENAME := namd.stdout -endif +RUN_OPTIONS = --input namd.input --iterations 1 --output namd.out +STDOUT_FILENAME := namd.out LDFLAGS = -lstdc++ -lm LIBS= -lstdc++ -lm ___ llvm-commits mailing list llvm-commits@cs.uiuc.edu http://lists.cs.uiuc.edu/mailman/listinfo/llvm-commits
[llvm-commits] CVS: llvm-test/External/SPEC/CINT2006/471.omnetpp/Makefile
Changes in directory llvm-test/External/SPEC/CINT2006/471.omnetpp: Makefile updated: 1.2 - 1.3 --- Log message: Modified Makefiles to handle multiple directories. --- Diffs of the changes: (+3 -0) Makefile |3 +++ 1 files changed, 3 insertions(+) Index: llvm-test/External/SPEC/CINT2006/471.omnetpp/Makefile diff -u llvm-test/External/SPEC/CINT2006/471.omnetpp/Makefile:1.2 llvm-test/External/SPEC/CINT2006/471.omnetpp/Makefile:1.3 --- llvm-test/External/SPEC/CINT2006/471.omnetpp/Makefile:1.2 Fri Sep 1 20:31:50 2006 +++ llvm-test/External/SPEC/CINT2006/471.omnetpp/Makefile Wed Sep 6 15:41:12 2006 @@ -41,3 +41,6 @@ RUN_OPTIONS = omnetpp.ini STDOUT_FILENAME := omnetpp.log + +LDFLAGS = -lstdc++ -lm +LIBS= -lstdc++ -lm ___ llvm-commits mailing list llvm-commits@cs.uiuc.edu http://lists.cs.uiuc.edu/mailman/listinfo/llvm-commits
[llvm-commits] CVS: llvm-test/External/SPEC/CFP2006/Makefile
Changes in directory llvm-test/External/SPEC/CFP2006: Makefile updated: 1.1 - 1.2 --- Log message: Modified Makefiles to handle multiple directories. --- Diffs of the changes: (+1 -1) Makefile |2 +- 1 files changed, 1 insertion(+), 1 deletion(-) Index: llvm-test/External/SPEC/CFP2006/Makefile diff -u llvm-test/External/SPEC/CFP2006/Makefile:1.1 llvm-test/External/SPEC/CFP2006/Makefile:1.2 --- llvm-test/External/SPEC/CFP2006/Makefile:1.1Fri Sep 1 18:27:13 2006 +++ llvm-test/External/SPEC/CFP2006/MakefileWed Sep 6 15:41:12 2006 @@ -14,6 +14,7 @@ 435.gromacs \ 437.leslie3d \ 444.namd \ +447.dealII \ 459.GemsFDTD \ 470.lbm @@ -24,7 +25,6 @@ # 482.sphinx3 - generates control file at run time # These don't compile # 436.cactusADM - multiple dirs -# 447.dealII- multiple dirs # 454.calculix - multiple dirs # 481.wrf - multiple dirs ___ llvm-commits mailing list llvm-commits@cs.uiuc.edu http://lists.cs.uiuc.edu/mailman/listinfo/llvm-commits
[llvm-commits] CVS: llvm-test/External/SPEC/CFP2006/450.soplex/Makefile
Changes in directory llvm-test/External/SPEC/CFP2006/450.soplex: Makefile updated: 1.1 - 1.2 --- Log message: Modified Makefiles to handle multiple directories. --- Diffs of the changes: (+4 -3) Makefile |7 --- 1 files changed, 4 insertions(+), 3 deletions(-) Index: llvm-test/External/SPEC/CFP2006/450.soplex/Makefile diff -u llvm-test/External/SPEC/CFP2006/450.soplex/Makefile:1.1 llvm-test/External/SPEC/CFP2006/450.soplex/Makefile:1.2 --- llvm-test/External/SPEC/CFP2006/450.soplex/Makefile:1.1 Fri Sep 1 18:27:13 2006 +++ llvm-test/External/SPEC/CFP2006/450.soplex/Makefile Wed Sep 6 15:41:12 2006 @@ -6,7 +6,6 @@ LEVEL = ../../../.. -FP_TOLERANCE= 0.0001 FP_ABSTOLERANCE = 1.0e-5 include ../../Makefile.spec2006 @@ -14,10 +13,12 @@ CPPFLAGS += -DNDEBUG ifeq ($(RUN_TYPE),test) - RUN_OPTIONS := -s1 -e -m1 test.mps + FP_TOLERANCE = 0.0001 + RUN_OPTIONS = -s1 -e -m1 test.mps STDOUT_FILENAME := test.out else - RUN_OPTIONS := -s1 -e -m1200 train.mps + FP_TOLERANCE = 20 + RUN_OPTIONS = -s1 -e -m1200 train.mps STDOUT_FILENAME := train.out endif ___ llvm-commits mailing list llvm-commits@cs.uiuc.edu http://lists.cs.uiuc.edu/mailman/listinfo/llvm-commits
[llvm-commits] CVS: llvm-test/External/SPEC/CFP2006/453.povray/Makefile
Changes in directory llvm-test/External/SPEC/CFP2006/453.povray: Makefile updated: 1.1 - 1.2 --- Log message: Modified Makefiles to handle multiple directories. --- Diffs of the changes: (+4 -2) Makefile |6 -- 1 files changed, 4 insertions(+), 2 deletions(-) Index: llvm-test/External/SPEC/CFP2006/453.povray/Makefile diff -u llvm-test/External/SPEC/CFP2006/453.povray/Makefile:1.1 llvm-test/External/SPEC/CFP2006/453.povray/Makefile:1.2 --- llvm-test/External/SPEC/CFP2006/453.povray/Makefile:1.1 Fri Sep 1 18:27:13 2006 +++ llvm-test/External/SPEC/CFP2006/453.povray/Makefile Wed Sep 6 15:41:12 2006 @@ -6,15 +6,17 @@ LEVEL = ../../../.. +FP_ABSTOLERANCE = 0 + include ../../Makefile.spec2006 ifeq ($(RUN_TYPE),test) FP_TOLERANCE = 0.0002 - RUN_OPTIONS := SPEC-benchmark-test + RUN_OPTIONS = SPEC-benchmark-test STDOUT_FILENAME := test.out else FP_TOLERANCE = 0.5 - RUN_OPTIONS := SPEC-benchmark-train + RUN_OPTIONS = SPEC-benchmark-train STDOUT_FILENAME := train.out endif ___ llvm-commits mailing list llvm-commits@cs.uiuc.edu http://lists.cs.uiuc.edu/mailman/listinfo/llvm-commits
[llvm-commits] CVS: llvm-test/External/SPEC/CFP2006/482.sphinx3/Makefile
Changes in directory llvm-test/External/SPEC/CFP2006/482.sphinx3: Makefile updated: 1.1 - 1.2 --- Log message: Modified Makefiles to handle multiple directories. --- Diffs of the changes: (+2 -2) Makefile |4 ++-- 1 files changed, 2 insertions(+), 2 deletions(-) Index: llvm-test/External/SPEC/CFP2006/482.sphinx3/Makefile diff -u llvm-test/External/SPEC/CFP2006/482.sphinx3/Makefile:1.1 llvm-test/External/SPEC/CFP2006/482.sphinx3/Makefile:1.2 --- llvm-test/External/SPEC/CFP2006/482.sphinx3/Makefile:1.1Fri Sep 1 18:27:13 2006 +++ llvm-test/External/SPEC/CFP2006/482.sphinx3/MakefileWed Sep 6 15:41:12 2006 @@ -13,12 +13,12 @@ CPPFLAGS += -I$(SPEC_BENCH_DIR)/src/libutil -DHAVE_CONFIG_H -DSPEC_CPU ifeq ($(RUN_TYPE),test) - RUN_OPTIONS := `cp an406-fcaw-b.be.raw an406-fcaw-b.raw` \ + RUN_OPTIONS = `cp an406-fcaw-b.be.raw an406-fcaw-b.raw` \ `cp an407-fcaw-b.be.raw an407-fcaw-b.raw` \ `echo an406-fcaw-b 128000 ctlfile`\ `echo an407-fcaw-b 131200 ctlfile` ctlfile . args.an4 STDOUT_FILENAME := an4.log else - RUN_OPTIONS := leng100.hmm + RUN_OPTIONS = leng100.hmm STDOUT_FILENAME := leng100.out endif ___ llvm-commits mailing list llvm-commits@cs.uiuc.edu http://lists.cs.uiuc.edu/mailman/listinfo/llvm-commits
[llvm-commits] CVS: llvm-test/External/SPEC/CFP2006/481.wrf/Makefile
Changes in directory llvm-test/External/SPEC/CFP2006/481.wrf: Makefile updated: 1.1 - 1.2 --- Log message: Modified Makefiles to handle multiple directories. --- Diffs of the changes: (+56 -7) Makefile | 63 --- 1 files changed, 56 insertions(+), 7 deletions(-) Index: llvm-test/External/SPEC/CFP2006/481.wrf/Makefile diff -u llvm-test/External/SPEC/CFP2006/481.wrf/Makefile:1.1 llvm-test/External/SPEC/CFP2006/481.wrf/Makefile:1.2 --- llvm-test/External/SPEC/CFP2006/481.wrf/Makefile:1.1Fri Sep 1 18:27:13 2006 +++ llvm-test/External/SPEC/CFP2006/481.wrf/MakefileWed Sep 6 15:41:12 2006 @@ -9,16 +9,65 @@ FP_TOLERANCE= 5e-2 FP_ABSTOLERANCE = 1.0e-2 +Source = wrf_num_bytes_between.c pack_utils.c module_driver_constants.F90 \ + module_domain.F90 module_integrate.F90 module_timing.F90 \ + module_configure.F90 module_tiles.F90 module_machine.F90 \ + module_nesting.F90 module_wrf_error.F90 module_state_description.F90 \ + module_sm.F90 module_io.F90 module_dm_stubs.F90 \ + module_quilt_outbuf_ops.F90 module_io_quilt.F90 module_bc.F90\ + module_io_wrf.F90 module_date_time.F90 module_io_domain.F90 \ + module_bc_time_utilities.F90 module_model_constants.F90 \ + module_soil_pre.F90 module_bl_mrf.F90 module_sf_myjsfc.F90 \ + module_bl_myjpbl.F90 module_bl_ysu.F90 module_cu_bmj.F90 \ + module_mp_kessler.F90 module_mp_ncloud5.F90 module_ra_sw.F90 \ + module_sf_sfclay.F90 module_cu_kf.F90 module_cu_kfeta.F90 \ + module_mp_lin.F90 module_mp_wsm3.F90 module_mp_wsm5.F90 \ + module_mp_wsm6.F90 module_surface_driver.F90 module_cu_gd.F90 \ + module_sf_sfcdiags.F90 module_ra_gsfcsw.F90 module_sf_slab.F90 \ + module_sf_noahlsm.F90 module_sf_ruclsm.F90 module_mp_ncloud3.F90 \ + module_mp_etanew.F90 module_ra_rrtm.F90 module_ra_gfdleta.F90 \ + module_physics_init.F90 module_physics_addtendc.F90 \ + module_solvedebug_em.F90 module_bc_em.F90 module_advect_em.F90 \ + module_diffusion_em.F90 module_small_step_em.F90 \ + module_big_step_utilities_em.F90 module_em.F90 \ + module_init_utilities.F90 module_optional_si_input.F90 \ + ESMF_Alarm.F90 ESMF_Base.F90 ESMF_BaseTime.F90 ESMF_Calendar.F90 \ + ESMF_Clock.F90 ESMF_Fraction.F90 ESMF_Mod.F90 ESMF_Time.F90 \ + ESMF_TimeInterval.F90 Meat.F90 wrf_shutdown.F90 collect_on_comm.c \ + mediation_integrate.F90 mediation_feedback_domain.F90 \ + mediation_force_domain.F90 mediation_interp_domain.F90 \ + mediation_wrfmain.F90 wrf_auxhist1in.F90 wrf_auxhist1out.F90 \ + wrf_auxhist2in.F90 wrf_auxhist2out.F90 wrf_auxhist3in.F90 \ + wrf_auxhist3out.F90 wrf_auxhist4in.F90 wrf_auxhist4out.F90 \ + wrf_auxhist5in.F90 wrf_auxhist5out.F90 wrf_auxinput1in.F90 \ + wrf_auxinput1out.F90 wrf_auxinput2in.F90 wrf_auxinput2out.F90 \ + wrf_auxinput3in.F90 wrf_auxinput3out.F90 wrf_auxinput4in.F90 \ + wrf_auxinput4out.F90 wrf_auxinput5in.F90 wrf_auxinput5out.F90 \ + wrf_bdyin.F90 wrf_bdyout.F90 wrf_histin.F90 wrf_histout.F90 \ + wrf_inputin.F90 wrf_inputout.F90 wrf_restartin.F90 wrf_restartout.F90 \ + couple_or_uncouple_em.F90 interp_domain_em.F90 interp_fcn.F90 \ + nest_init_utils.F90 set_timekeeping.F90 sint.F90 solve_interface.F90 \ + start_domain.F90 module_pbl_driver.F90 module_radiation_driver.F90 \ + module_cumulus_driver.F90 module_microphysics_driver.F90 \ + solve_em.F90 start_em.F90 internal_header_util.F90 io_int.F90 \ + init_modules_em.F90 init_modules.F90 wrf_io.f90 field_routines.f90 \ + wrf.F90 \ + $(addprefix $(SPEC_BENCH_DIR)/src/netcdf/, \ + attr.c dim.c error.c fort-attio.c fort-control.c fort-dim.c \ + fort-genatt.c fort-geninq.c fort-genvar.c fort-lib.c fort-misc.c \ + fort-v2compat.c fort-var1io.c fort-varaio.c fort-vario.c \ + fort-varmio.c fort-varsio.c libvers.c nc.c ncx.c posixio.c putget.c \ + string.c v1hpg.c v2i.c var.c typeSizes.f90 netcdf.f90) + include ../../Makefile.spec2006 include $(PROJ_SRC_ROOT)/Makefile.FORTRAN -FPPFLAGS += -w -m literal.pm \ --DINTIO -DIWORDSIZE=4 -DDWORDSIZE=8 -DRWORDSIZE=4 -DLWORDSIZE=4 \ -
[llvm-commits] CVS: llvm/test/Regression/CodeGen/X86/test-load-fold.ll
Changes in directory llvm/test/Regression/CodeGen/X86: test-load-fold.ll added (r1.1) --- Log message: testcase, ensure this never breaks. --- Diffs of the changes: (+29 -0) test-load-fold.ll | 29 + 1 files changed, 29 insertions(+) Index: llvm/test/Regression/CodeGen/X86/test-load-fold.ll diff -c /dev/null llvm/test/Regression/CodeGen/X86/test-load-fold.ll:1.1 *** /dev/null Wed Sep 6 16:55:09 2006 --- llvm/test/Regression/CodeGen/X86/test-load-fold.ll Wed Sep 6 16:54:59 2006 *** *** 0 --- 1,29 + ; RUN: llvm-as %s | llc + %struct._obstack_chunk = type { sbyte*, %struct._obstack_chunk*, [4 x sbyte] } + %struct.obstack = type { int, %struct._obstack_chunk*, sbyte*, sbyte*, sbyte*, int, int, %struct._obstack_chunk* (...)*, void (...)*, sbyte*, ubyte } + %stmt_obstack = external global %struct.obstack ; %struct.obstack* [#uses=1] + + implementation ; Functions: + + void %expand_start_bindings() { + entry: + br bool false, label %cond_true, label %cond_next + + cond_true:; preds = %entry + %new_size.0.i = select bool false, int 0, int 0 ; int [#uses=1] + %tmp.i = load uint* cast (ubyte* getelementptr (%struct.obstack* %stmt_obstack, int 0, uint 10) to uint*) ; uint [#uses=1] + %tmp.i = cast uint %tmp.i to ubyte ; ubyte [#uses=1] + %tmp21.i = and ubyte %tmp.i, 1 ; ubyte [#uses=1] + %tmp22.i = seteq ubyte %tmp21.i, 0 ; bool [#uses=1] + br bool %tmp22.i, label %cond_false30.i, label %cond_true23.i + + cond_true23.i:; preds = %cond_true + ret void + + cond_false30.i: ; preds = %cond_true + %tmp35.i = tail call %struct._obstack_chunk* null( int %new_size.0.i ) ; %struct._obstack_chunk* [#uses=0] + ret void + + cond_next:; preds = %entry + ret void + } ___ llvm-commits mailing list llvm-commits@cs.uiuc.edu http://lists.cs.uiuc.edu/mailman/listinfo/llvm-commits
[llvm-commits] CVS: llvm-test/External/SPEC/CINT2006/400.perlbench/Makefile
Changes in directory llvm-test/External/SPEC/CINT2006/400.perlbench: Makefile updated: 1.2 - 1.3 --- Log message: Add the perlbench benchmark test to the SPEC2006 testing thingy. --- Diffs of the changes: (+13 -8) Makefile | 21 + 1 files changed, 13 insertions(+), 8 deletions(-) Index: llvm-test/External/SPEC/CINT2006/400.perlbench/Makefile diff -u llvm-test/External/SPEC/CINT2006/400.perlbench/Makefile:1.2 llvm-test/External/SPEC/CINT2006/400.perlbench/Makefile:1.3 --- llvm-test/External/SPEC/CINT2006/400.perlbench/Makefile:1.2 Fri Sep 1 20:29:28 2006 +++ llvm-test/External/SPEC/CINT2006/400.perlbench/Makefile Wed Sep 6 16:55:34 2006 @@ -7,19 +7,14 @@ LEVEL = ../../../.. -include ../../Makefile.spec2006 - CPPFLAGS += -DPERL_CORE -ifeq ($(OS),Darwin) ifeq ($(ARCH),PowerPC) CPPFLAGS += -DSPEC_CPU_MACOSX_PPC -else +endif ifeq ($(ARCH),x86) CPPFLAGS += -DSPEC_CPU_MACOSX_IA32 endif -endif -endif ifeq ($(ENDIAN),little) CPPFLAGS += -D__LITTLE_ENDIAN__ @@ -27,11 +22,21 @@ CPPFLAGS += -D__BIG_ENDIAN__ endif +Source = av.c deb.c doio.c doop.c dump.c globals.c gv.c hv.c locale.c mg.c \ + numeric.c op.c pad.c perl.c perlapi.c perlio.c perlmain.c perly.c \ + pp.c pp_ctl.c pp_hot.c pp_pack.c pp_sort.c pp_sys.c regcomp.c \ + regexec.c run.c scope.c sv.c taint.c toke.c universal.c utf8.c util.c \ + xsutils.c Base64.c Cwd.c Dumper.c HiRes.c IO.c Peek.c attrs.c poll.c \ + stdio.c DynaLoader.c MD5.c Storable.c Parser.c specrand.c Hostname.c \ + Opcode.c + +include ../../Makefile.spec2006 + ifeq ($(RUN_TYPE),test) - RUN_OPTIONS = test.pl + RUN_OPTIONS = -I./lib test.pl STDOUT_FILENAME := test.out else - RUN_OPTIONS = scrabbl.pl + RUN_OPTIONS = -I./lib scrabbl.pl STDIN_FILENAME := scrabbl.in STDOUT_FILENAME := scrabbl.out endif ___ llvm-commits mailing list llvm-commits@cs.uiuc.edu http://lists.cs.uiuc.edu/mailman/listinfo/llvm-commits
[llvm-commits] CVS: llvm-test/External/SPEC/CINT2006/Makefile
Changes in directory llvm-test/External/SPEC/CINT2006: Makefile updated: 1.1 - 1.2 --- Log message: Add the perlbench benchmark test to the SPEC2006 testing thingy. --- Diffs of the changes: (+1 -1) Makefile |2 +- 1 files changed, 1 insertion(+), 1 deletion(-) Index: llvm-test/External/SPEC/CINT2006/Makefile diff -u llvm-test/External/SPEC/CINT2006/Makefile:1.1 llvm-test/External/SPEC/CINT2006/Makefile:1.2 --- llvm-test/External/SPEC/CINT2006/Makefile:1.1 Thu Aug 31 14:26:35 2006 +++ llvm-test/External/SPEC/CINT2006/Makefile Wed Sep 6 16:55:34 2006 @@ -6,6 +6,7 @@ LEVEL = ../../.. PARALLEL_DIRS := \ +400.perlbench \ 401.bzip2 \ 403.gcc\ 429.mcf\ @@ -15,7 +16,6 @@ 464.h264ref\ 473.astar -# 400.perlbench -- Need Makefile Help # 445.gobmk -- Multiple Dirs # 471.omnetpp -- Multiple Dirs # 483.xalancbmk -- Needs C++ Exceptions ___ llvm-commits mailing list llvm-commits@cs.uiuc.edu http://lists.cs.uiuc.edu/mailman/listinfo/llvm-commits
[llvm-commits] CVS: llvm-test/External/SPEC/CINT2006/400.perlbench/Makefile
Changes in directory llvm-test/External/SPEC/CINT2006/400.perlbench: Makefile updated: 1.3 - 1.4 --- Log message: Change STDOUT_FILENAME to one which exists in the data/test/output directory so that we don't get an error during testing. --- Diffs of the changes: (+5 -1) Makefile |6 +- 1 files changed, 5 insertions(+), 1 deletion(-) Index: llvm-test/External/SPEC/CINT2006/400.perlbench/Makefile diff -u llvm-test/External/SPEC/CINT2006/400.perlbench/Makefile:1.3 llvm-test/External/SPEC/CINT2006/400.perlbench/Makefile:1.4 --- llvm-test/External/SPEC/CINT2006/400.perlbench/Makefile:1.3 Wed Sep 6 16:55:34 2006 +++ llvm-test/External/SPEC/CINT2006/400.perlbench/Makefile Wed Sep 6 19:08:49 2006 @@ -33,10 +33,14 @@ include ../../Makefile.spec2006 ifeq ($(RUN_TYPE),test) + # test.out isn't specified in the REF_IN_DIR/test/data/output directory, so + # use one of the .out files that does exist in that directory. RUN_OPTIONS = -I./lib test.pl - STDOUT_FILENAME := test.out + STDOUT_FILENAME := append.out + STDERR_FILENAME := append.err else RUN_OPTIONS = -I./lib scrabbl.pl STDIN_FILENAME := scrabbl.in STDOUT_FILENAME := scrabbl.out + STDERR_FILENAME := scrabbl.err endif ___ 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/X86CodeEmitter.cpp
Changes in directory llvm/lib/Target/X86: X86CodeEmitter.cpp updated: 1.117 - 1.118 --- Log message: Clean up. --- Diffs of the changes: (+2 -2) X86CodeEmitter.cpp |4 ++-- 1 files changed, 2 insertions(+), 2 deletions(-) Index: llvm/lib/Target/X86/X86CodeEmitter.cpp diff -u llvm/lib/Target/X86/X86CodeEmitter.cpp:1.117 llvm/lib/Target/X86/X86CodeEmitter.cpp:1.118 --- llvm/lib/Target/X86/X86CodeEmitter.cpp:1.117Wed Sep 6 15:32:45 2006 +++ llvm/lib/Target/X86/X86CodeEmitter.cpp Wed Sep 6 20:17:57 2006 @@ -527,6 +527,6 @@ break; } - if ((Desc.Flags M_VARIABLE_OPS) == 0) -assert(CurOp == MI.getNumOperands() Unknown encoding!); + assert((Desc.Flags M_VARIABLE_OPS) != 0 || + CurOp == MI.getNumOperands() Unknown encoding!); } ___ 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/Generic/2006-09-06-SwitchLowering.ll
Changes in directory llvm/test/Regression/CodeGen/Generic: 2006-09-06-SwitchLowering.ll added (r1.1) --- Log message: New testcase for a switch lowering bug. --- Diffs of the changes: (+96 -0) 2006-09-06-SwitchLowering.ll | 96 +++ 1 files changed, 96 insertions(+) Index: llvm/test/Regression/CodeGen/Generic/2006-09-06-SwitchLowering.ll diff -c /dev/null llvm/test/Regression/CodeGen/Generic/2006-09-06-SwitchLowering.ll:1.1 *** /dev/null Wed Sep 6 20:59:15 2006 --- llvm/test/Regression/CodeGen/Generic/2006-09-06-SwitchLowering.ll Wed Sep 6 20:59:05 2006 *** *** 0 --- 1,96 + ; RUN: llvm-as %s | llc + + void %foo() { + br label %cond_true813.i + + cond_true813.i: ; preds = %0 + br bool false, label %cond_true818.i, label %cond_next1146.i + + cond_true818.i: ; preds = %cond_true813.i + br bool false, label %recog_memoized.exit52, label %cond_next1146.i + + recog_memoized.exit52:; preds = %cond_true818.i + switch int 0, label %bb886.i.preheader [ +int 0, label %bb907.i +int 44, label %bb866.i +int 103, label %bb874.i +int 114, label %bb874.i + ] + + bb857.i: ; preds = %bb886.i, %bb866.i + %tmp862.i494.24 = phi sbyte* [ null, %bb866.i ], [ %tmp862.i494.26, %bb886.i ] ; sbyte* [#uses=4] + switch int 0, label %bb886.i.preheader [ +int 0, label %bb907.i +int 44, label %bb866.i +int 103, label %bb874.i +int 114, label %bb874.i + ] + + bb866.i.loopexit: ; preds = %bb874.i + br label %bb866.i + + bb866.i.loopexit31: ; preds = %cond_true903.i + br label %bb866.i + + bb866.i: ; preds = %bb866.i.loopexit31, %bb866.i.loopexit, %bb857.i, %recog_memoized.exit52 + br bool false, label %bb907.i, label %bb857.i + + bb874.i.preheader.loopexit: ; preds = %cond_true903.i, %cond_true903.i + ret void + + bb874.i: ; preds = %bb857.i, %bb857.i, %recog_memoized.exit52, %recog_memoized.exit52 + %tmp862.i494.25 = phi sbyte* [ %tmp862.i494.24, %bb857.i ], [ %tmp862.i494.24, %bb857.i ], [ undef, %recog_memoized.exit52 ], [ undef, %recog_memoized.exit52 ] ; sbyte* [#uses=1] + switch int 0, label %bb886.i.preheader.loopexit [ +int 0, label %bb907.i +int 44, label %bb866.i.loopexit +int 103, label %bb874.i.backedge +int 114, label %bb874.i.backedge + ] + + bb874.i.backedge: ; preds = %bb874.i, %bb874.i + ret void + + bb886.i.preheader.loopexit: ; preds = %bb874.i + ret void + + bb886.i.preheader:; preds = %bb857.i, %recog_memoized.exit52 + %tmp862.i494.26 = phi sbyte* [ undef, %recog_memoized.exit52 ], [ %tmp862.i494.24, %bb857.i ] ; sbyte* [#uses=1] + br label %bb886.i + + bb886.i: ; preds = %cond_true903.i, %bb886.i.preheader + br bool false, label %bb857.i, label %cond_true903.i + + cond_true903.i: ; preds = %bb886.i + switch int 0, label %bb886.i [ +int 0, label %bb907.i +int 44, label %bb866.i.loopexit31 +int 103, label %bb874.i.preheader.loopexit +int 114, label %bb874.i.preheader.loopexit + ] + + bb907.i: ; preds = %cond_true903.i, %bb874.i, %bb866.i, %bb857.i, %recog_memoized.exit52 + %tmp862.i494.0 = phi sbyte* [ %tmp862.i494.24, %bb857.i ], [ null, %bb866.i ], [ undef, %recog_memoized.exit52 ], [ %tmp862.i494.25, %bb874.i ], [ null, %cond_true903.i ] ; sbyte* [#uses=1] + br bool false, label %cond_next1146.i, label %cond_true910.i + + cond_true910.i: ; preds = %bb907.i + ret void + + cond_next1146.i: ; preds = %bb907.i, %cond_true818.i, %cond_true813.i + %tmp862.i494.1 = phi sbyte* [ %tmp862.i494.0, %bb907.i ], [ undef, %cond_true818.i ], [ undef, %cond_true813.i ]; sbyte* [#uses=0] + ret void + + bb2060.i: ; No predecessors! + br bool false, label %cond_true2064.i, label %bb2067.i + + cond_true2064.i: ; preds = %bb2060.i + unreachable + + bb2067.i: ; preds = %bb2060.i + ret void + + cond_next3473:; No predecessors! + ret void + + cond_next3521:; No predecessors! + ret void + } ___ llvm-commits mailing list llvm-commits@cs.uiuc.edu http://lists.cs.uiuc.edu/mailman/listinfo/llvm-commits
[llvm-commits] CVS: llvm/lib/CodeGen/SelectionDAG/SelectionDAGISel.cpp
Changes in directory llvm/lib/CodeGen/SelectionDAG: SelectionDAGISel.cpp updated: 1.272 - 1.273 --- Log message: Fix CodeGen/Generic/2006-09-06-SwitchLowering.ll, a bug where SDIsel inserted too many phi operands when lowering a switch to branches in some cases. --- Diffs of the changes: (+32 -15) SelectionDAGISel.cpp | 47 --- 1 files changed, 32 insertions(+), 15 deletions(-) Index: llvm/lib/CodeGen/SelectionDAG/SelectionDAGISel.cpp diff -u llvm/lib/CodeGen/SelectionDAG/SelectionDAGISel.cpp:1.272 llvm/lib/CodeGen/SelectionDAG/SelectionDAGISel.cpp:1.273 --- llvm/lib/CodeGen/SelectionDAG/SelectionDAGISel.cpp:1.272Mon Sep 4 21:31:13 2006 +++ llvm/lib/CodeGen/SelectionDAG/SelectionDAGISel.cpp Wed Sep 6 20:59:34 2006 @@ -922,7 +922,6 @@ // If the switch has more than 5 blocks, and at least 31.25% dense, and the // target supports indirect branches, then emit a jump table rather than // lowering the switch to a binary tree of conditional branches. - // FIXME: Make this work with PIC code if (TLI.isOperationLegal(ISD::BRIND, TLI.getPointerTy()) Cases.size() 5) { uint64_t First = castConstantIntegral(Cases.front().first)-getRawValue(); @@ -3412,12 +3411,14 @@ // Emit constants only once even if used by multiple PHI nodes. std::mapConstant*, unsigned ConstantsOut; - + // Check successor nodes PHI nodes that expect a constant to be available from // this block. TerminatorInst *TI = LLVMBB-getTerminator(); for (unsigned succ = 0, e = TI-getNumSuccessors(); succ != e; ++succ) { BasicBlock *SuccBB = TI-getSuccessor(succ); +if (!isaPHINode(SuccBB-begin())) continue; + MachineBasicBlock::iterator MBBI = FuncInfo.MBBMap[SuccBB]-begin(); PHINode *PN; @@ -3589,31 +3590,47 @@ // If we generated any switch lowering information, build and codegen any // additional DAGs necessary. - for(unsigned i = 0, e = SwitchCases.size(); i != e; ++i) { + for (unsigned i = 0, e = SwitchCases.size(); i != e; ++i) { SelectionDAG SDAG(TLI, MF, getAnalysisToUpdateMachineDebugInfo()); CurDAG = SDAG; SelectionDAGLowering SDL(SDAG, TLI, FuncInfo); + // Set the current basic block to the mbb we wish to insert the code into BB = SwitchCases[i].ThisBB; SDL.setCurrentBasicBlock(BB); + // Emit the code SDL.visitSwitchCase(SwitchCases[i]); SDAG.setRoot(SDL.getRoot()); CodeGenAndEmitDAG(SDAG); -// Iterate over the phi nodes, if there is a phi node in a successor of this -// block (for instance, the default block), then add a pair of operands to -// the phi node for this block, as if we were coming from the original -// BB before switch expansion. -for (unsigned pi = 0, pe = PHINodesToUpdate.size(); pi != pe; ++pi) { - MachineInstr *PHI = PHINodesToUpdate[pi].first; - MachineBasicBlock *PHIBB = PHI-getParent(); - assert(PHI-getOpcode() == TargetInstrInfo::PHI - This is not a machine PHI node that we are updating!); - if (PHIBB == SwitchCases[i].LHSBB || PHIBB == SwitchCases[i].RHSBB) { -PHI-addRegOperand(PHINodesToUpdate[pi].second, false); -PHI-addMachineBasicBlockOperand(BB); + +// Handle any PHI nodes in successors of this chunk, as if we were coming +// from the original BB before switch expansion. Note that PHI nodes can +// occur multiple times in PHINodesToUpdate. We have to be very careful to +// handle them the right number of times. +while ((BB = SwitchCases[i].LHSBB)) { // Handle LHS and RHS. + for (MachineBasicBlock::iterator Phi = BB-begin(); + Phi != BB-end() Phi-getOpcode() == TargetInstrInfo::PHI; ++Phi){ +// This value for this PHI node is recorded in PHINodesToUpdate, get it. +for (unsigned pn = 0; ; ++pn) { + assert(pn != PHINodesToUpdate.size() Didn't find PHI entry!); + if (PHINodesToUpdate[pn].first == Phi) { +Phi-addRegOperand(PHINodesToUpdate[pn].second, false); +Phi-addMachineBasicBlockOperand(SwitchCases[i].ThisBB); +break; + } +} } + + // Don't process RHS if same block as LHS. + if (BB == SwitchCases[i].RHSBB) +SwitchCases[i].RHSBB = 0; + + // If we haven't handled the RHS, do so now. Otherwise, we're done. + SwitchCases[i].LHSBB = SwitchCases[i].RHSBB; + SwitchCases[i].RHSBB = 0; } +assert(SwitchCases[i].LHSBB == 0 SwitchCases[i].RHSBB == 0); } } ___ llvm-commits mailing list llvm-commits@cs.uiuc.edu http://lists.cs.uiuc.edu/mailman/listinfo/llvm-commits
[llvm-commits] CVS: llvm/docs/GettingStarted.html
Changes in directory llvm/docs: GettingStarted.html updated: 1.144 - 1.145 --- Log message: cleanups and updates to the GSG, patch by B Scott Michel, thanks! This is PR899: http://llvm.org/PR899 --- Diffs of the changes: (+53 -42) GettingStarted.html | 95 +--- 1 files changed, 53 insertions(+), 42 deletions(-) Index: llvm/docs/GettingStarted.html diff -u llvm/docs/GettingStarted.html:1.144 llvm/docs/GettingStarted.html:1.145 --- llvm/docs/GettingStarted.html:1.144 Sun Aug 27 19:34:18 2006 +++ llvm/docs/GettingStarted.html Wed Sep 6 23:19:09 2006 @@ -52,6 +52,10 @@ /ol/li lia href=#tutorialAn Example Using the LLVM Tool Chain/a + ol + lia href=#tutorial4Example with llvm-gcc4/a/li + lia href=#tutorial3Example with llvm-gcc3/a/li + /ol lia href=#problemsCommon Problems/a lia href=#linksLinks/a /ul @@ -206,7 +210,7 @@ pLLVM is known to work on the following platforms:/p -table cellpadding=3 +table cellpadding=3 summary=Known LLVM platforms tr thOS/th thArch/th @@ -257,7 +261,7 @@ pLLVM has partial support for the following platforms:/p -table +table summary=LLVM partial platform support tr thOS/th thArch/th @@ -347,7 +351,7 @@ is the usual name for the software package that LLVM depends on. The Version column provides known to work versions of the package. The Notes column describes how LLVM uses the package and provides other details./p - table + table summary=Packages required to compile LLVM trthPackage/ththVersion/ththNotes/th/tr tr @@ -439,7 +443,7 @@ pbNotes:/b/p div class=doc_notes ol -lia name=sf3Only the C and C++ languages are needed so there's no +lia name=sf1Only the C and C++ languages are needed so there's no need to build the other languages for LLVM's purposes./a See a href=#brokengccbelow/a for specific version info./li lia name=sf2You only need CVS if you intend to build from the @@ -566,14 +570,14 @@ dtSRC_ROOT dd This is the top level directory of the LLVM source tree. -p +brbr dtOBJ_ROOT dd This is the top level directory of the LLVM object tree (i.e. the tree where object files and compiled programs will be placed. It can be the same as SRC_ROOT). -p +brbr dtLLVMGCCDIR dd @@ -765,7 +769,7 @@ pThe following environment variables are used by the ttconfigure/tt script to configure the build system:/p -table +table summary=LLVM configure script environment variables trthVariable/ththPurpose/th/tr tr tdCC/td @@ -807,14 +811,14 @@ dejagnu based test suite in ttllvm/test/tt. If you don't specify this option, the LLVM configure script will search for the tcl 8.4 and 8.3 releases. - p/p + brbr /dd dti--enable-optimized/i/dt dd Enables optimized compilation by default (debugging symbols are removed and GCC optimization flags are enabled). The default is to use an unoptimized build (also known as a debug build). -p/p +brbr /dd dti--enable-debug-runtime/i/dt dd @@ -827,7 +831,7 @@ available on all platforms. The default is dependent on platform, so it is best to explicitly enable it if you want it. -p/p +brbr /dd dti--enable-targets=/itttarget-option/tt/dt ddControls which targets will be built and linked into llc. The default @@ -838,7 +842,7 @@ separated list of target names that you want available in llc. The target names use all lower case. The current set of targets is: br/ ttalpha, ia64, powerpc, skeleton, sparc, x86/tt. - p/p/dd + brbr/dd dti--enable-doxygen/i/dt ddLook for the doxygen program and enable construction of doxygen based documentation from the source code. This is disabled by default because @@ -852,12 +856,12 @@ liChange directory into the object root directory: br ttcd iOBJ_ROOT/i/tt -p +brbr liRun the ttconfigure/tt script located in the LLVM source tree: br ttiSRC_ROOT/i/configure --prefix=/install/path [other options]/tt -p +brbr /ol /div @@ -879,7 +883,7 @@ tt--enable-optimized/tt option was used during configuration). The build system will compile the tools and libraries with debugging information. -p +brbr dtRelease (Optimized) Builds dd @@ -888,7 +892,7 @@ ttgmake/tt command line. For these builds, the build system will compile the tools and libraries with GCC optimizations enabled and strip debugging information from the libraries and executables it generates. -p +brbr dtProfile Builds dd @@ -921,14 +925,14 @@ dd Removes all files generated by the build. This includes object files, generated C/C++ files, libraries, and executables. - p + brbr dtttgmake dist-clean/tt dd Removes everything that ttgmake clean/tt does, but also removes files
[llvm-commits] CVS: llvm/lib/Assembly/Parser/
Changes in directory llvm/lib/Assembly/Parser: --- Log message: Directory /var/cvs/llvm/llvm/lib/Assembly/Parser added to the repository --- Diffs of the changes: (+0 -0) 0 files changed ___ llvm-commits mailing list llvm-commits@cs.uiuc.edu http://lists.cs.uiuc.edu/mailman/listinfo/llvm-commits