[llvm-commits] CVS: llvm/include/llvm/Support/DataTypes.h.in
Changes in directory llvm/include/llvm/Support: DataTypes.h.in updated: 1.21 -> 1.22 --- Log message: Eliminate use of sed in Visual Studio builds. --- Diffs of the changes: (+1 -0) DataTypes.h.in |1 + 1 files changed, 1 insertion(+) Index: llvm/include/llvm/Support/DataTypes.h.in diff -u llvm/include/llvm/Support/DataTypes.h.in:1.21 llvm/include/llvm/Support/DataTypes.h.in:1.22 --- llvm/include/llvm/Support/DataTypes.h.in:1.21 Sat Oct 22 23:37:19 2005 +++ llvm/include/llvm/Support/DataTypes.h.inWed Oct 26 09:48:53 2005 @@ -67,6 +67,7 @@ // Visual C++ doesn't provide standard integer headers, but it does provide // built-in data types. #include +#include typedef __int64 int64_t; typedef unsigned __int64 uint64_t; typedef signed int int32_t; ___ llvm-commits mailing list llvm-commits@cs.uiuc.edu http://lists.cs.uiuc.edu/mailman/listinfo/llvm-commits
[llvm-commits] CVS: llvm/include/llvm/ADT/hash_map.in hash_set.in iterator.in
Changes in directory llvm/include/llvm/ADT: hash_map.in updated: 1.9 -> 1.10 hash_set.in updated: 1.6 -> 1.7 iterator.in updated: 1.3 -> 1.4 --- Log message: Eliminate use of sed in Visual Studio builds. --- Diffs of the changes: (+27 -7) hash_map.in | 18 +- hash_set.in | 10 -- iterator.in |6 ++ 3 files changed, 27 insertions(+), 7 deletions(-) Index: llvm/include/llvm/ADT/hash_map.in diff -u llvm/include/llvm/ADT/hash_map.in:1.9 llvm/include/llvm/ADT/hash_map.in:1.10 --- llvm/include/llvm/ADT/hash_map.in:1.9 Wed Aug 24 09:03:07 2005 +++ llvm/include/llvm/ADT/hash_map.in Wed Oct 26 09:48:53 2005 @@ -24,7 +24,7 @@ // 3.0.4 std ext/hash_map // 3.1 __gnu_cxx ext/hash_map // HP aCC6 std stdex/rw/hashm*ap.h -// +// MS VC++stdext hash_map #undef HAVE_GNU_EXT_HASH_MAP #undef HAVE_STD_EXT_HASH_MAP @@ -63,6 +63,14 @@ # define HASH_NAMESPACE std # endif +// Support Microsoft VC++. +#elif defined(_MSC_VER) +# include +# ifndef HASH_NAMESPACE +# define HASH_NAMESPACE stdext + using std::_Distance; +# endif + // Give a warning if we couldn't find it, instead of (or in addition to) // randomly doing something dumb. #else @@ -100,10 +108,6 @@ } // end HASH_NAMESPACE; #endif -using HASH_NAMESPACE::hash_map; -using HASH_NAMESPACE::hash_multimap; -using HASH_NAMESPACE::hash; - // Include vector because ext/hash_map includes stl_vector.h and leaves // out specializations like stl_bvector.h, causing link conflicts. #include @@ -137,6 +141,10 @@ #endif +using HASH_NAMESPACE::hash_map; +using HASH_NAMESPACE::hash_multimap; +using HASH_NAMESPACE::hash; + #include "llvm/ADT/HashExtras.h" #endif Index: llvm/include/llvm/ADT/hash_set.in diff -u llvm/include/llvm/ADT/hash_set.in:1.6 llvm/include/llvm/ADT/hash_set.in:1.7 --- llvm/include/llvm/ADT/hash_set.in:1.6 Wed Aug 24 05:57:30 2005 +++ llvm/include/llvm/ADT/hash_set.in Wed Oct 26 09:48:53 2005 @@ -25,7 +25,7 @@ // 3.0.4 std ext/hash_set // 3.1 __gnu_cxx ext/hash_set // HP aCC6 std stdex/rw/hashset.h -// +// MS VC++stdext hash_map #undef HAVE_GNU_EXT_HASH_SET #undef HAVE_STD_EXT_HASH_SET @@ -64,6 +64,13 @@ # define HASH_NAMESPACE std # endif +// Support Microsoft VC++. +#elif defined(_MSC_VER) +# include +# ifndef HASH_NAMESPACE +# define HASH_NAMESPACE stdext +# endif + // Give a warning if we couldn't find it, instead of (or in addition to) // randomly doing something dumb. #else @@ -94,7 +101,6 @@ #endif using HASH_NAMESPACE::hash_set; -using HASH_NAMESPACE::hash; // Include vector because ext/hash_set includes stl_vector.h and leaves // out specializations like stl_bvector.h, causing link conflicts. Index: llvm/include/llvm/ADT/iterator.in diff -u llvm/include/llvm/ADT/iterator.in:1.3 llvm/include/llvm/ADT/iterator.in:1.4 --- llvm/include/llvm/ADT/iterator.in:1.3 Fri Sep 24 16:19:05 2004 +++ llvm/include/llvm/ADT/iterator.in Wed Oct 26 09:48:53 2005 @@ -34,6 +34,12 @@ #undef HAVE_STD_ITERATOR #undef HAVE_FWD_ITERATOR +#ifdef _MSC_VER +# define HAVE_BI_ITERATOR 0 +# define HAVE_STD_ITERATOR 1 +# define HAVE_FWD_ITERATOR 0 +#endif + #if !HAVE_BI_ITERATOR # if HAVE_STD_ITERATOR /// If the bidirectional iterator is not defined, we attempt to define it in ___ llvm-commits mailing list llvm-commits@cs.uiuc.edu http://lists.cs.uiuc.edu/mailman/listinfo/llvm-commits
[llvm-commits] CVS: llvm/win32/Configure/Configure.vcproj
Changes in directory llvm/win32/Configure: Configure.vcproj updated: 1.8 -> 1.9 --- Log message: Eliminate use of sed in Visual Studio builds. --- Diffs of the changes: (+22 -10) Configure.vcproj | 32 ++-- 1 files changed, 22 insertions(+), 10 deletions(-) Index: llvm/win32/Configure/Configure.vcproj diff -u llvm/win32/Configure/Configure.vcproj:1.8 llvm/win32/Configure/Configure.vcproj:1.9 --- llvm/win32/Configure/Configure.vcproj:1.8 Tue Mar 15 23:49:58 2005 +++ llvm/win32/Configure/Configure.vcproj Wed Oct 26 09:48:53 2005 @@ -74,8 +74,24 @@ @@ -86,8 +102,7 @@ @@ -98,8 +113,7 @@ @@ -110,8 +124,7 @@ @@ -122,8 +135,7 @@ ___ llvm-commits mailing list llvm-commits@cs.uiuc.edu http://lists.cs.uiuc.edu/mailman/listinfo/llvm-commits
[llvm-commits] CVS: llvm/include/llvm/ADT/hash_set.in
Changes in directory llvm/include/llvm/ADT: hash_set.in updated: 1.7 -> 1.8 --- Log message: Fix comment. --- Diffs of the changes: (+1 -1) hash_set.in |2 +- 1 files changed, 1 insertion(+), 1 deletion(-) Index: llvm/include/llvm/ADT/hash_set.in diff -u llvm/include/llvm/ADT/hash_set.in:1.7 llvm/include/llvm/ADT/hash_set.in:1.8 --- llvm/include/llvm/ADT/hash_set.in:1.7 Wed Oct 26 09:48:53 2005 +++ llvm/include/llvm/ADT/hash_set.in Wed Oct 26 10:02:21 2005 @@ -25,7 +25,7 @@ // 3.0.4 std ext/hash_set // 3.1 __gnu_cxx ext/hash_set // HP aCC6 std stdex/rw/hashset.h -// MS VC++stdext hash_map +// MS VC++stdext hash_set #undef HAVE_GNU_EXT_HASH_SET #undef HAVE_STD_EXT_HASH_SET ___ llvm-commits mailing list llvm-commits@cs.uiuc.edu http://lists.cs.uiuc.edu/mailman/listinfo/llvm-commits
[llvm-commits] CVS: llvm-test/MultiSource/Applications/hexxagon/bitboard64.h
Changes in directory llvm-test/MultiSource/Applications/hexxagon: bitboard64.h updated: 1.2 -> 1.3 --- Log message: Add sys/types.h, which seems to fix a silly bug in Apple's netinet/in.h header file where they don't define in_addr_t. --- Diffs of the changes: (+1 -0) bitboard64.h |1 + 1 files changed, 1 insertion(+) Index: llvm-test/MultiSource/Applications/hexxagon/bitboard64.h diff -u llvm-test/MultiSource/Applications/hexxagon/bitboard64.h:1.2 llvm-test/MultiSource/Applications/hexxagon/bitboard64.h:1.3 --- llvm-test/MultiSource/Applications/hexxagon/bitboard64.h:1.2Thu Aug 4 15:05:30 2005 +++ llvm-test/MultiSource/Applications/hexxagon/bitboard64.hWed Oct 26 10:06:47 2005 @@ -23,6 +23,7 @@ #ifndef _BITBOARD64_H #define _BITBOARD64_H +#include #include #include #include ___ llvm-commits mailing list llvm-commits@cs.uiuc.edu http://lists.cs.uiuc.edu/mailman/listinfo/llvm-commits
[llvm-commits] CVS: llvm-test/MultiSource/Applications/hexxagon/hexxagonmove.cpp
Changes in directory llvm-test/MultiSource/Applications/hexxagon: hexxagonmove.cpp updated: 1.2 -> 1.3 --- Log message: Darwin (__APPLE__) uses gettimeofday. This fixes compilation on MacOS X. --- Diffs of the changes: (+2 -2) hexxagonmove.cpp |4 ++-- 1 files changed, 2 insertions(+), 2 deletions(-) Index: llvm-test/MultiSource/Applications/hexxagon/hexxagonmove.cpp diff -u llvm-test/MultiSource/Applications/hexxagon/hexxagonmove.cpp:1.2 llvm-test/MultiSource/Applications/hexxagon/hexxagonmove.cpp:1.3 --- llvm-test/MultiSource/Applications/hexxagon/hexxagonmove.cpp:1.2Mon Mar 7 10:41:13 2005 +++ llvm-test/MultiSource/Applications/hexxagon/hexxagonmove.cppWed Oct 26 10:34:35 2005 @@ -25,7 +25,7 @@ #include #include -#ifdef __FreeBSD__ +#if defined(__FreeBSD__) || defined(__APPLE__) #include #else #include @@ -87,7 +87,7 @@ int getTime() { -#ifdef __FreeBSD__ +#if defined(__FreeBSD__) || defined(__APPLE__) struct timeval tv; gettimeofday(&tv, NULL); ___ llvm-commits mailing list llvm-commits@cs.uiuc.edu http://lists.cs.uiuc.edu/mailman/listinfo/llvm-commits
[llvm-commits] CVS: llvm-test/TEST.nightly.Makefile TEST.nightly.report
Changes in directory llvm-test: TEST.nightly.Makefile updated: 1.41 -> 1.42 TEST.nightly.report updated: 1.36 -> 1.37 --- Log message: remove a column from the nightly tester that isn't what it claims to be --- Diffs of the changes: (+0 -4) TEST.nightly.Makefile |3 --- TEST.nightly.report |1 - 2 files changed, 4 deletions(-) Index: llvm-test/TEST.nightly.Makefile diff -u llvm-test/TEST.nightly.Makefile:1.41 llvm-test/TEST.nightly.Makefile:1.42 --- llvm-test/TEST.nightly.Makefile:1.41Tue Feb 8 13:35:21 2005 +++ llvm-test/TEST.nightly.Makefile Wed Oct 26 11:45:24 2005 @@ -117,9 +117,6 @@ printf "TEST-RESULT-jit-comptime: " >> $@;\ grep "Total Execution Time" Output/$*.out-jit.info >> $@;\ echo >> $@;\ - printf "TEST-RESULT-jit-machcode: " >> $@;\ - grep "bytes of machine code compiled" Output/$*.out-jit.info >> $@;\ - echo >> $@;\ else \ echo "TEST-FAIL: jit $(RELDIR)/$*" >> $@;\ fi Index: llvm-test/TEST.nightly.report diff -u llvm-test/TEST.nightly.report:1.36 llvm-test/TEST.nightly.report:1.37 --- llvm-test/TEST.nightly.report:1.36 Tue Apr 5 13:51:46 2005 +++ llvm-test/TEST.nightly.report Wed Oct 26 11:45:24 2005 @@ -60,7 +60,6 @@ ["LLCcompile" , "TEST-RESULT-llc: .*$WallTimeRE"], ["LLC-BETAcompile" , "TEST-RESULT-llc-beta: .*$WallTimeRE"], ["JITcodegen" , "TEST-RESULT-jit-comptime: .*$WallTimeRE"], - ["Machinecode", 'TEST-RESULT-jit-machcode: *([0-9]+).*bytes of machine code'], [], ["GCC" , 'TEST-RESULT-nat-time: program\s*([.0-9m:]+)', \&FormatTime], ["CBE" , 'TEST-RESULT-cbe-time: program\s*([.0-9m:]+)', \&FormatTime], ___ llvm-commits mailing list llvm-commits@cs.uiuc.edu http://lists.cs.uiuc.edu/mailman/listinfo/llvm-commits
[llvm-commits] CVS: llvm/lib/Target/TargetSelectionDAG.td
Changes in directory llvm/lib/Target: TargetSelectionDAG.td updated: 1.6 -> 1.7 --- Log message: Add nodes for CondCodeSDNode and setcc, and add a bunch of pattern fragments to make it easy to use them. This lets you write patterns like: (set PRRC:$rd, (setne GPRC:$rS, imm:$SH)) and stuff. --- Diffs of the changes: (+64 -0) TargetSelectionDAG.td | 64 ++ 1 files changed, 64 insertions(+) Index: llvm/lib/Target/TargetSelectionDAG.td diff -u llvm/lib/Target/TargetSelectionDAG.td:1.6 llvm/lib/Target/TargetSelectionDAG.td:1.7 --- llvm/lib/Target/TargetSelectionDAG.td:1.6 Tue Oct 25 16:03:14 2005 +++ llvm/lib/Target/TargetSelectionDAG.td Wed Oct 26 12:00:25 2005 @@ -99,6 +99,10 @@ SDTCisVTSmallerThanOp<2, 1> ]>; +def SDTSetCC : SDTypeProfile<1, 3, [ // setcc + SDTCisInt<0>, SDTCisSameAs<1, 2>, SDTCisVT<3, OtherVT> +]>; + //===--===// // Selection DAG Node Properties. // @@ -124,6 +128,7 @@ def imm: SDNode<"ISD::Constant" , SDTImm , [], "ConstantSDNode">; def vt : SDNode<"ISD::VALUETYPE" , SDTVT , [], "VTSDNode">; +def cond : SDNode<"ISD::CONDCODE" , SDTVT , [], "CondCodeSDNode">; def undef : SDNode<"ISD::UNDEF" , SDTUNDEF , []>; def add: SDNode<"ISD::ADD" , SDTIntBinOp , [SDNPCommutative, SDNPAssociative]>; @@ -167,6 +172,22 @@ def fround : SDNode<"ISD::FP_ROUND" , SDTFPRoundOp>; def fextend: SDNode<"ISD::FP_EXTEND" , SDTFPExtendOp>; +def setcc : SDNode<"ISD::SETCC" , SDTSetCC>; + +//===--===// +// Selection DAG Condition Codes + +class CondCode; // ISD::CondCode enums +def SETOEQ : CondCode; def SETOGT : CondCode; +def SETOGE : CondCode; def SETOLT : CondCode; def SETOLE : CondCode; +def SETONE : CondCode; def SETO : CondCode; def SETUO : CondCode; +def SETUEQ : CondCode; def SETUGT : CondCode; def SETUGE : CondCode; +def SETULT : CondCode; def SETULE : CondCode; def SETUNE : CondCode; + +def SETEQ : CondCode; def SETGT : CondCode; def SETGE : CondCode; +def SETLT : CondCode; def SETLE : CondCode; def SETNE : CondCode; + + //===--===// // Selection DAG Node Transformation Functions. // @@ -219,6 +240,49 @@ def not : PatFrag<(ops node:$in), (xor node:$in, immAllOnes)>; def ineg : PatFrag<(ops node:$in), (sub 0, node:$in)>; + +// setcc convenience fragments. +def setoeq : PatFrag<(ops node:$lhs, node:$rhs), + (setcc node:$lhs, node:$rhs, SETOEQ)>; +def setogt : PatFrag<(ops node:$lhs, node:$rhs), + (setcc node:$lhs, node:$rhs, SETOGT)>; +def setoge : PatFrag<(ops node:$lhs, node:$rhs), + (setcc node:$lhs, node:$rhs, SETOGE)>; +def setolt : PatFrag<(ops node:$lhs, node:$rhs), + (setcc node:$lhs, node:$rhs, SETOLT)>; +def setole : PatFrag<(ops node:$lhs, node:$rhs), + (setcc node:$lhs, node:$rhs, SETOLE)>; +def setone : PatFrag<(ops node:$lhs, node:$rhs), + (setcc node:$lhs, node:$rhs, SETONE)>; +def seto : PatFrag<(ops node:$lhs, node:$rhs), + (setcc node:$lhs, node:$rhs, SETO)>; +def setuo : PatFrag<(ops node:$lhs, node:$rhs), + (setcc node:$lhs, node:$rhs, SETUO)>; +def setueq : PatFrag<(ops node:$lhs, node:$rhs), + (setcc node:$lhs, node:$rhs, SETUEQ)>; +def setugt : PatFrag<(ops node:$lhs, node:$rhs), + (setcc node:$lhs, node:$rhs, SETUGT)>; +def setuge : PatFrag<(ops node:$lhs, node:$rhs), + (setcc node:$lhs, node:$rhs, SETUGE)>; +def setult : PatFrag<(ops node:$lhs, node:$rhs), + (setcc node:$lhs, node:$rhs, SETULT)>; +def setule : PatFrag<(ops node:$lhs, node:$rhs), + (setcc node:$lhs, node:$rhs, SETULE)>; +def setune : PatFrag<(ops node:$lhs, node:$rhs), + (setcc node:$lhs, node:$rhs, SETUNE)>; +def seteq : PatFrag<(ops node:$lhs, node:$rhs), + (setcc node:$lhs, node:$rhs, SETEQ)>; +def setgt : PatFrag<(ops node:$lhs, node:$rhs), + (setcc node:$lhs, node:$rhs, SETGT)>; +def setge : PatFrag<(ops node:$lhs, node:$rhs), + (setcc node:$lhs, node:$rhs, SETGE)>; +def setlt : PatFrag<(ops node:$lhs, node:$rhs), + (setcc node:$lhs, node:$rhs, SETLT)>; +def setle : PatFrag<(ops node:$lhs, node:$rhs), + (setcc node:$lhs, node:$rhs, SETLE)>; +def setne : PatFrag<(ops node:$lhs, node:$rhs), + (setcc node:$lhs, node:$rhs, SETNE)>; + //===--===// // Selection DAG Pattern Support. // ___
[llvm-commits] CVS: llvm/utils/TableGen/DAGISelEmitter.cpp
Changes in directory llvm/utils/TableGen: DAGISelEmitter.cpp updated: 1.67 -> 1.68 --- Log message: Condcodes are in the ISD namespace --- Diffs of the changes: (+1 -1) DAGISelEmitter.cpp |2 +- 1 files changed, 1 insertion(+), 1 deletion(-) Index: llvm/utils/TableGen/DAGISelEmitter.cpp diff -u llvm/utils/TableGen/DAGISelEmitter.cpp:1.67 llvm/utils/TableGen/DAGISelEmitter.cpp:1.68 --- llvm/utils/TableGen/DAGISelEmitter.cpp:1.67 Wed Oct 26 11:59:37 2005 +++ llvm/utils/TableGen/DAGISelEmitter.cpp Wed Oct 26 12:02:02 2005 @@ -1590,7 +1590,7 @@ } else if (LeafRec->isSubClassOf("CondCode")) { // Make sure this is the specified cond code. OS << " if (cast(" << RootName << i - << ")->get() != " << "MVT::" << LeafRec->getName() + << ")->get() != " << "ISD::" << LeafRec->getName() << ") goto P" << PatternNo << "Fail;\n"; } else { Child->dump(); ___ llvm-commits mailing list llvm-commits@cs.uiuc.edu http://lists.cs.uiuc.edu/mailman/listinfo/llvm-commits
[llvm-commits] CVS: llvm/utils/TableGen/DAGISelEmitter.cpp
Changes in directory llvm/utils/TableGen: DAGISelEmitter.cpp updated: 1.66 -> 1.67 --- Log message: Add support for CondCode's --- Diffs of the changes: (+14 -4) DAGISelEmitter.cpp | 18 ++ 1 files changed, 14 insertions(+), 4 deletions(-) Index: llvm/utils/TableGen/DAGISelEmitter.cpp diff -u llvm/utils/TableGen/DAGISelEmitter.cpp:1.66 llvm/utils/TableGen/DAGISelEmitter.cpp:1.67 --- llvm/utils/TableGen/DAGISelEmitter.cpp:1.66 Tue Oct 25 15:35:14 2005 +++ llvm/utils/TableGen/DAGISelEmitter.cpp Wed Oct 26 11:59:37 2005 @@ -291,8 +291,13 @@ return true; } - TP.error("Type inference contradiction found in node " + - getOperator()->getName() + "!"); + if (isLeaf()) { +dump(); +TP.error("Type inference contradiction found in node!"); + } else { +TP.error("Type inference contradiction found in node " + + getOperator()->getName() + "!"); + } return true; // unreachable } @@ -466,8 +471,8 @@ // TODO: if a register appears in exactly one regclass, we could use that // type info. return MVT::isUnknown; - } else if (R->isSubClassOf("ValueType")) { -// Using a VTSDNode. + } else if (R->isSubClassOf("ValueType") || R->isSubClassOf("CondCode")) { +// Using a VTSDNode or CondCodeSDNode. return MVT::Other; } else if (R->getName() == "node") { // Placeholder. @@ -1582,6 +1587,11 @@ OS << " if (cast(" << RootName << i << ")->getVT() != " << "MVT::" << LeafRec->getName() << ") goto P" << PatternNo << "Fail;\n"; +} else if (LeafRec->isSubClassOf("CondCode")) { + // Make sure this is the specified cond code. + OS << " if (cast(" << RootName << i + << ")->get() != " << "MVT::" << LeafRec->getName() + << ") goto P" << PatternNo << "Fail;\n"; } else { Child->dump(); assert(0 && "Unknown leaf type!"); ___ llvm-commits mailing list llvm-commits@cs.uiuc.edu http://lists.cs.uiuc.edu/mailman/listinfo/llvm-commits
[llvm-commits] CVS: llvm/lib/Transforms/Scalar/InstructionCombining.cpp
Changes in directory llvm/lib/Transforms/Scalar: InstructionCombining.cpp updated: 1.392 -> 1.393 --- Log message: fold nested and's early to avoid inefficiencies in MaskedValueIsZero. This fixes a very slow compile in PR639: http://llvm.cs.uiuc.edu/PR639 . --- Diffs of the changes: (+9 -0) InstructionCombining.cpp |9 + 1 files changed, 9 insertions(+) Index: llvm/lib/Transforms/Scalar/InstructionCombining.cpp diff -u llvm/lib/Transforms/Scalar/InstructionCombining.cpp:1.392 llvm/lib/Transforms/Scalar/InstructionCombining.cpp:1.393 --- llvm/lib/Transforms/Scalar/InstructionCombining.cpp:1.392 Mon Oct 24 01:35:18 2005 +++ llvm/lib/Transforms/Scalar/InstructionCombining.cpp Wed Oct 26 12:18:16 2005 @@ -1725,6 +1725,15 @@ // and X, -1 == X if (AndRHS->isAllOnesValue()) return ReplaceInstUsesWith(I, Op0); + +// and (and X, c1), c2 -> and (x, c1&c2). Handle this case here, before +// calling MaskedValueIsZero, to avoid inefficient cases where we traipse +// through many levels of ands. +{ + Value *X; ConstantInt *C1; + if (match(Op0, m_And(m_Value(X), m_ConstantInt(C1 +return BinaryOperator::createAnd(X, ConstantExpr::getAnd(C1, AndRHS)); +} if (MaskedValueIsZero(Op0, AndRHS))// LHS & RHS == 0 return ReplaceInstUsesWith(I, Constant::getNullValue(I.getType())); ___ llvm-commits mailing list llvm-commits@cs.uiuc.edu http://lists.cs.uiuc.edu/mailman/listinfo/llvm-commits
[llvm-commits] CVS: llvm/lib/Target/Target.td
Changes in directory llvm/lib/Target: Target.td updated: 1.55 -> 1.56 --- Log message: Add attribute name and type to SubtargetFeatures. --- Diffs of the changes: (+9 -1) Target.td | 10 +- 1 files changed, 9 insertions(+), 1 deletion(-) Index: llvm/lib/Target/Target.td diff -u llvm/lib/Target/Target.td:1.55 llvm/lib/Target/Target.td:1.56 --- llvm/lib/Target/Target.td:1.55 Fri Oct 21 14:05:19 2005 +++ llvm/lib/Target/Target.td Wed Oct 26 12:28:23 2005 @@ -252,12 +252,20 @@ //===--===// // SubtargetFeature - A characteristic of the chip set. // -class SubtargetFeature { +class SubtargetFeature { // Name - Feature name. Used by command line (-mattr=) to determine the // appropriate target chip. // string Name = n; + // Type - Type of attribute to be set by feature. + // + string Type = t; + + // Attribute - Attribute to be set by feature. + // + string Attribute = a; + // Desc - Feature description. Used by command line (-mattr=) to display help // information. // ___ 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/PPC.td
Changes in directory llvm/lib/Target/PowerPC: PPC.td updated: 1.9 -> 1.10 --- Log message: Add attribute name and type to SubtargetFeatures. --- Diffs of the changes: (+5 -5) PPC.td | 10 +- 1 files changed, 5 insertions(+), 5 deletions(-) Index: llvm/lib/Target/PowerPC/PPC.td diff -u llvm/lib/Target/PowerPC/PPC.td:1.9 llvm/lib/Target/PowerPC/PPC.td:1.10 --- llvm/lib/Target/PowerPC/PPC.td:1.9 Sun Oct 23 17:23:45 2005 +++ llvm/lib/Target/PowerPC/PPC.td Wed Oct 26 12:28:23 2005 @@ -19,15 +19,15 @@ // PowerPC Subtarget features. // -def Feature64Bit : SubtargetFeature<"64bit", +def Feature64Bit : SubtargetFeature<"64bit", "bool", "Is64Bit", "Enable 64-bit instructions">; -def Feature64BitRegs : SubtargetFeature<"64bitregs", +def Feature64BitRegs : SubtargetFeature<"64bitregs", "bool", "Has64BitRegs", "Enable 64-bit registers [beta]">; -def FeatureAltivec : SubtargetFeature<"altivec", +def FeatureAltivec : SubtargetFeature<"altivec", "bool", "HasAltivec", "Enable Altivec instructions">; -def FeatureGPUL : SubtargetFeature<"gpul", +def FeatureGPUL : SubtargetFeature<"gpul", "bool", "IsGigaProcessor", "Enable GPUL instructions">; -def FeatureFSqrt : SubtargetFeature<"fsqrt", +def FeatureFSqrt : SubtargetFeature<"fsqrt", "bool", "HasFSQRT", "Enable the fsqrt instruction">; //===--===// ___ 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/Alpha.td
Changes in directory llvm/lib/Target/Alpha: Alpha.td updated: 1.5 -> 1.6 --- Log message: Add attribute name and type to SubtargetFeatures. --- Diffs of the changes: (+4 -2) Alpha.td |6 -- 1 files changed, 4 insertions(+), 2 deletions(-) Index: llvm/lib/Target/Alpha/Alpha.td diff -u llvm/lib/Target/Alpha/Alpha.td:1.5 llvm/lib/Target/Alpha/Alpha.td:1.6 --- llvm/lib/Target/Alpha/Alpha.td:1.5 Sun Oct 23 17:08:45 2005 +++ llvm/lib/Target/Alpha/Alpha.td Wed Oct 26 12:28:23 2005 @@ -20,8 +20,10 @@ // Subtarget Features //===--===// -def FeatureCIX : SubtargetFeature<"CIX", "Enable CIX extentions">; -def FeatureFIX : SubtargetFeature<"FIX", "Enable FIX extentions">; +def FeatureCIX : SubtargetFeature<"CIX", "bool", "HasCT", + "Enable CIX extentions">; +def FeatureFIX : SubtargetFeature<"FIX", "bool", "HasF2I", + "Enable FIX extentions">; //===--===// // Register File Description ___ 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/AlphaSubtarget.cpp AlphaSubtarget.h
Changes in directory llvm/lib/Target/Alpha: AlphaSubtarget.cpp updated: 1.6 -> 1.7 AlphaSubtarget.h updated: 1.1 -> 1.2 --- Log message: Give full control of subtarget features over to table generated code. --- Diffs of the changes: (+7 -6) AlphaSubtarget.cpp |9 +++-- AlphaSubtarget.h |4 2 files changed, 7 insertions(+), 6 deletions(-) Index: llvm/lib/Target/Alpha/AlphaSubtarget.cpp diff -u llvm/lib/Target/Alpha/AlphaSubtarget.cpp:1.6 llvm/lib/Target/Alpha/AlphaSubtarget.cpp:1.7 --- llvm/lib/Target/Alpha/AlphaSubtarget.cpp:1.6Tue Oct 25 10:15:28 2005 +++ llvm/lib/Target/Alpha/AlphaSubtarget.cppWed Oct 26 12:30:34 2005 @@ -19,10 +19,7 @@ AlphaSubtarget::AlphaSubtarget(const Module &M, const std::string &FS) : HasF2I(false), HasCT(false) { std::string CPU = "generic"; - SubtargetFeatures Features(FS); - Features.setCPUIfNone(CPU); - uint32_t Bits =Features.getBits(SubTypeKV, SubTypeKVSize, - FeatureKV, FeatureKVSize); - HasF2I = (Bits & FeatureFIX) != 0; - HasCT = (Bits & FeatureCIX) != 0; + + // Parse features string. + ParseSubtargetFeatures(FS, CPU); } Index: llvm/lib/Target/Alpha/AlphaSubtarget.h diff -u llvm/lib/Target/Alpha/AlphaSubtarget.h:1.1 llvm/lib/Target/Alpha/AlphaSubtarget.h:1.2 --- llvm/lib/Target/Alpha/AlphaSubtarget.h:1.1 Thu Sep 29 17:54:56 2005 +++ llvm/lib/Target/Alpha/AlphaSubtarget.h Wed Oct 26 12:30:34 2005 @@ -33,6 +33,10 @@ /// of the specified module. /// AlphaSubtarget(const Module &M, const std::string &FS); + + /// ParseSubtargetFeatures - Parses features string setting specified + /// subtarget options. Definition of function is usto generated by tblgen. + void ParseSubtargetFeatures(const std::string &FS, const std::string &CPU); bool hasF2I() const { return HasF2I; } bool hasCT() const { return HasCT; } ___ 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/PPCSubtarget.cpp PPCSubtarget.h
Changes in directory llvm/lib/Target/PowerPC: PPCSubtarget.cpp updated: 1.13 -> 1.14 PPCSubtarget.h updated: 1.8 -> 1.9 --- Log message: Give full control of subtarget features over to table generated code. --- Diffs of the changes: (+19 -10) PPCSubtarget.cpp | 21 - PPCSubtarget.h |8 +++- 2 files changed, 19 insertions(+), 10 deletions(-) Index: llvm/lib/Target/PowerPC/PPCSubtarget.cpp diff -u llvm/lib/Target/PowerPC/PPCSubtarget.cpp:1.13 llvm/lib/Target/PowerPC/PPCSubtarget.cpp:1.14 --- llvm/lib/Target/PowerPC/PPCSubtarget.cpp:1.13 Tue Oct 25 10:15:28 2005 +++ llvm/lib/Target/PowerPC/PPCSubtarget.cppWed Oct 26 12:30:34 2005 @@ -68,22 +68,25 @@ } #endif + PPCSubtarget::PPCSubtarget(const Module &M, const std::string &FS) - : StackAlignment(16), IsGigaProcessor(false), IsAIX(false), IsDarwin(false) { + : StackAlignment(16) + , IsGigaProcessor(false) + , Is64Bit(false) + , Has64BitRegs(false) + , HasAltivec(false) + , HasFSQRT(false) + , IsAIX(false) + , IsDarwin(false) { // Determine default and user specified characteristics std::string CPU = "generic"; #if defined(__APPLE__) CPU = GetCurrentPowerPCCPU(); #endif - SubtargetFeatures Features(FS); - Features.setCPUIfNone(CPU); - uint32_t Bits = Features.getBits(SubTypeKV, SubTypeKVSize, -FeatureKV, FeatureKVSize); - IsGigaProcessor = (Bits & FeatureGPUL ) != 0; - Is64Bit = (Bits & Feature64Bit) != 0; - HasFSQRT= (Bits & FeatureFSqrt) != 0; - Has64BitRegs= (Bits & Feature64BitRegs) != 0; + + // Parse features string. + ParseSubtargetFeatures(FS, CPU); // Set the boolean corresponding to the current target triple, or the default // if one cannot be determined, to true. Index: llvm/lib/Target/PowerPC/PPCSubtarget.h diff -u llvm/lib/Target/PowerPC/PPCSubtarget.h:1.8 llvm/lib/Target/PowerPC/PPCSubtarget.h:1.9 --- llvm/lib/Target/PowerPC/PPCSubtarget.h:1.8 Mon Oct 17 19:56:42 2005 +++ llvm/lib/Target/PowerPC/PPCSubtarget.h Wed Oct 26 12:30:34 2005 @@ -31,6 +31,7 @@ bool IsGigaProcessor; bool Is64Bit; bool Has64BitRegs; + bool HasAltivec; bool HasFSQRT; bool IsAIX; bool IsDarwin; @@ -39,6 +40,10 @@ /// of the specified module. /// PPCSubtarget(const Module &M, const std::string &FS); + + /// ParseSubtargetFeatures - Parses features string setting specified + /// subtarget options. Definition of function is usto generated by tblgen. + void ParseSubtargetFeatures(const std::string &FS, const std::string &CPU); /// getStackAlignment - Returns the minimum alignment known to hold of the /// stack frame on entry to the function and which must be maintained by every @@ -46,11 +51,12 @@ unsigned getStackAlignment() const { return StackAlignment; } bool hasFSQRT() const { return HasFSQRT; } + bool has64BitRegs() const { return Has64BitRegs; } + bool hasAltivec() const { return HasAltivec; } bool isAIX() const { return IsAIX; } bool isDarwin() const { return IsDarwin; } bool is64Bit() const { return Is64Bit; } - bool has64BitRegs() const { return Has64BitRegs; } bool isGigaProcessor() const { return IsGigaProcessor; } }; } // 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/utils/TableGen/SubtargetEmitter.cpp SubtargetEmitter.h
Changes in directory llvm/utils/TableGen: SubtargetEmitter.cpp updated: 1.4 -> 1.5 SubtargetEmitter.h updated: 1.2 -> 1.3 --- Log message: Give full control of subtarget features over to table generated code. --- Diffs of the changes: (+65 -15) SubtargetEmitter.cpp | 76 +-- SubtargetEmitter.h |4 ++ 2 files changed, 65 insertions(+), 15 deletions(-) Index: llvm/utils/TableGen/SubtargetEmitter.cpp diff -u llvm/utils/TableGen/SubtargetEmitter.cpp:1.4 llvm/utils/TableGen/SubtargetEmitter.cpp:1.5 --- llvm/utils/TableGen/SubtargetEmitter.cpp:1.4Tue Oct 25 10:16:36 2005 +++ llvm/utils/TableGen/SubtargetEmitter.cppWed Oct 26 12:30:34 2005 @@ -45,24 +45,28 @@ }; // -// FeatureEnumeration - Emit an enumeration of all the subtarget features. +// Enumeration - Emit the specified class as an enumeration. // -void SubtargetEmitter::FeatureEnumeration(std::ostream &OS) { - RecordList Features = Records.getAllDerivedDefinitions("SubtargetFeature"); - sort(Features.begin(), Features.end(), LessRecord()); +void SubtargetEmitter::Enumeration(std::ostream &OS, + const char *ClassName, + bool isBits) { + RecordList Defs = Records.getAllDerivedDefinitions(ClassName); + sort(Defs.begin(), Defs.end(), LessRecord()); int i = 0; OS << "enum {\n"; - for (RecordListIter RI = Features.begin(), E = Features.end(); RI != E;){ + for (RecordListIter RI = Defs.begin(), E = Defs.end(); RI != E;) { Record *R = *RI++; std::string Instance = R->getName(); OS << " " - << Instance - << " = " - << " 1 << " << i++ - << ((RI != E) ? ",\n" : "\n"); + << Instance; +if (isBits) { + OS << " = " + << " 1 << " << i++; +} +OS << ((RI != E) ? ",\n" : "\n"); } OS << "};\n"; @@ -76,8 +80,7 @@ RecordList Features = Records.getAllDerivedDefinitions("SubtargetFeature"); sort(Features.begin(), Features.end(), LessRecord()); - OS << "\n" - << "// Sorted (by key) array of values for CPU features.\n" + OS << "// Sorted (by key) array of values for CPU features.\n" << "static llvm::SubtargetFeatureKV FeatureKV[] = {\n"; for (RecordListIter RI = Features.begin(), E = Features.end(); RI != E;) { Record *R = *RI++; @@ -105,8 +108,7 @@ RecordList Processors = Records.getAllDerivedDefinitions("Processor"); sort(Processors.begin(), Processors.end(), LessRecordFieldName()); - OS << "\n" - << "// Sorted (by key) array of values for CPU subtype.\n" + OS << "// Sorted (by key) array of values for CPU subtype.\n" << "static const llvm::SubtargetFeatureKV SubTypeKV[] = {\n"; for (RecordListIter RI = Processors.begin(), E = Processors.end(); RI != E;) { @@ -145,15 +147,61 @@ OS<<"};\n"; } +// +// ParseFeaturesFunction - Produces a subtarget specific function for parsing +// the subtarget features string. +// +void SubtargetEmitter::ParseFeaturesFunction(std::ostream &OS) { + RecordList Features = Records.getAllDerivedDefinitions("SubtargetFeature"); + sort(Features.begin(), Features.end(), LessRecord()); + + OS << "// ParseSubtargetFeatures - Parses features string setting specified\n" +"// subtarget options.\n" +"void llvm::"; + OS << Target; + OS << "Subtarget::ParseSubtargetFeatures(const std::string &FS,\n" +" const std::string &CPU) {\n" +" SubtargetFeatures Features(FS);\n" +" Features.setCPUIfNone(CPU);\n" +" uint32_t Bits = Features.getBits(SubTypeKV, SubTypeKVSize,\n" +"FeatureKV, FeatureKVSize);\n"; + + for (RecordListIter RI = Features.begin(), E = Features.end(); RI != E;) { +Record *R = *RI++; +std::string Instance = R->getName(); +std::string Name = R->getValueAsString("Name"); +std::string Type = R->getValueAsString("Type"); +std::string Attribute = R->getValueAsString("Attribute"); + +OS << " " << Attribute << " = (Bits & " << Instance << ") != 0;\n"; + } + OS << "}\n"; +} + // // SubtargetEmitter::run - Main subtarget enumeration emitter. // void SubtargetEmitter::run(std::ostream &OS) { + std::vector Targets = Records.getAllDerivedDefinitions("Target"); + if (Targets.size() == 0) +throw std::string("ERROR: No 'Target' subclasses defined!"); + if (Targets.size() != 1) +throw std::string("ERROR: Multiple subclasses of Target defined!"); + Target = Targets[0]->getName(); + EmitSourceFileHeader("Subtarget Enumeration Source Fragment", OS); OS << "#include \"llvm/Target/SubtargetFeature.h\"\n\n"; - FeatureEnumeration(OS); + Enumeration(OS, "FuncUnit", true); + OS<<"\n"; + Enumeration(OS, "InstrItinClass", false); + OS<<"\n"; + Enumeration(OS, "SubtargetFeature", true); + OS<<"\n"; FeatureKeyValues(OS); + OS<<"\n"; CPUKeyValues(OS); +
[llvm-commits] CVS: llvm/lib/Target/Alpha/AlphaInstrFormats.td AlphaInstrInfo.td
Changes in directory llvm/lib/Target/Alpha: AlphaInstrFormats.td updated: 1.10 -> 1.11 AlphaInstrInfo.td updated: 1.68 -> 1.69 --- Log message: Simplify instinfo, set random bits on more fp insts, and fix 1 opcode --- Diffs of the changes: (+18 -24) AlphaInstrFormats.td |5 +++-- AlphaInstrInfo.td| 37 +++-- 2 files changed, 18 insertions(+), 24 deletions(-) Index: llvm/lib/Target/Alpha/AlphaInstrFormats.td diff -u llvm/lib/Target/Alpha/AlphaInstrFormats.td:1.10 llvm/lib/Target/Alpha/AlphaInstrFormats.td:1.11 --- llvm/lib/Target/Alpha/AlphaInstrFormats.td:1.10 Sat Oct 22 17:06:58 2005 +++ llvm/lib/Target/Alpha/AlphaInstrFormats.td Wed Oct 26 12:41:46 2005 @@ -196,13 +196,14 @@ let Inst{4-0} = Fc; } -class FPFormCM opcode, bits<11> fun, dag OL, string asmstr> -: InstAlpha { +class FPFormCM opcode, bits<11> fun, string asmstr> +: InstAlpha { bits<5> Fc; bits<5> Fa; bits<5> Fb; bits<11> Function = fun; + let isTwoAddress = 1; let Inst{25-21} = Fa; let Inst{20-16} = Fb; let Inst{15-5} = Function; Index: llvm/lib/Target/Alpha/AlphaInstrInfo.td diff -u llvm/lib/Target/Alpha/AlphaInstrInfo.td:1.68 llvm/lib/Target/Alpha/AlphaInstrInfo.td:1.69 --- llvm/lib/Target/Alpha/AlphaInstrInfo.td:1.68Sat Oct 22 22:43:48 2005 +++ llvm/lib/Target/Alpha/AlphaInstrInfo.td Wed Oct 26 12:41:46 2005 @@ -136,21 +136,14 @@ def CMOVNE : OForm4< 0x11, 0x26, "cmovne $RCOND,$RSRC,$RDEST">; //CMOVE if RCOND != zero def CMOVNEi : OForm4L< 0x11, 0x26, "cmovne $RCOND,$L,$RDEST">; //CMOVE if RCOND != zero -let isTwoAddress = 1 in { //conditional moves, fp - def FCMOVEQ : FPFormCM<0x17, 0x02A, (ops FPRC:$RDEST, FPRC:$RSRC2, FPRC:$RSRC, FPRC:$RCOND), -"fcmoveq $RCOND,$RSRC,$RDEST">; //FCMOVE if = zero - def FCMOVGE : FPFormCM<0x17, 0x02D, (ops FPRC:$RDEST, FPRC:$RSRC2, FPRC:$RSRC, FPRC:$RCOND), -"fcmovge $RCOND,$RSRC,$RDEST">; //FCMOVE if >= zero - def FCMOVGT : FPFormCM<0x17, 0x02F, (ops FPRC:$RDEST, FPRC:$RSRC2, FPRC:$RSRC, FPRC:$RCOND), -"fcmovgt $RCOND,$RSRC,$RDEST">; //FCMOVE if > zero - def FCMOVLE : FPFormCM<0x17, 0x02E, (ops FPRC:$RDEST, FPRC:$RSRC2, FPRC:$RSRC, FPRC:$RCOND), -"fcmovle $RCOND,$RSRC,$RDEST">; //FCMOVE if <= zero - def FCMOVLT : FPFormCM<0x17, 0x02, (ops FPRC:$RDEST, FPRC:$RSRC2, FPRC:$RSRC, FPRC:$RCOND), -"fcmovlt $RCOND,$RSRC,$RDEST">; // FCMOVE if < zero - def FCMOVNE : FPFormCM<0x17, 0x02B, (ops FPRC:$RDEST, FPRC:$RSRC2, FPRC:$RSRC, FPRC:$RCOND), -"fcmovne $RCOND,$RSRC,$RDEST">; //FCMOVE if != zero -} +def FCMOVEQ : FPFormCM<0x17, 0x02A, "fcmoveq $RCOND,$RSRC,$RDEST">; //FCMOVE if = zero +def FCMOVGE : FPFormCM<0x17, 0x02D, "fcmovge $RCOND,$RSRC,$RDEST">; //FCMOVE if >= zero +def FCMOVGT : FPFormCM<0x17, 0x02F, "fcmovgt $RCOND,$RSRC,$RDEST">; //FCMOVE if > zero +def FCMOVLE : FPFormCM<0x17, 0x02E, "fcmovle $RCOND,$RSRC,$RDEST">; //FCMOVE if <= zero +def FCMOVLT : FPFormCM<0x17, 0x02C, "fcmovlt $RCOND,$RSRC,$RDEST">; // FCMOVE if < zero +def FCMOVNE : FPFormCM<0x17, 0x02B, "fcmovne $RCOND,$RSRC,$RDEST">; //FCMOVE if != zero + def ADDL : OForm< 0x10, 0x00, "addl $RA,$RB,$RC", [(set GPRC:$RC, (intop (add GPRC:$RA, GPRC:$RB)))]>; @@ -329,10 +322,10 @@ def CMPULTi : OFormL<0x10, 0x1D, "cmpult $RA,$L,$RC", []>; //Compare unsigned quadword less than //Comparison, FP -def CMPTEQ : FPForm<0x16, 0x0A5, "cmpteq/su $RA,$RB,$RC">; //Compare T_floating equal -def CMPTLE : FPForm<0x16, 0x0A7, "cmptle/su $RA,$RB,$RC">; //Compare T_floating less than or equal -def CMPTLT : FPForm<0x16, 0x0A6, "cmptlt/su $RA,$RB,$RC">; //Compare T_floating less than -def CMPTUN : FPForm<0x16, 0x0A4, "cmptun/su $RA,$RB,$RC">; //Compare T_floating unordered +def CMPTEQ : FPForm<0x16, 0x5A5, "cmpteq/su $RA,$RB,$RC">; //Compare T_floating equal +def CMPTLE : FPForm<0x16, 0x5A7, "cmptle/su $RA,$RB,$RC">; //Compare T_floating less than or equal +def CMPTLT : FPForm<0x16, 0x5A6, "cmptlt/su $RA,$RB,$RC">; //Compare T_floating less than +def CMPTUN : FPForm<0x16, 0x5A4, "cmptun/su $RA,$RB,$RC">; //Compare T_floating unordered //There are in the Multimedia extentions, so let's not use them yet //def MAXSB8 : OForm<0x1C, 0x3E, "MAXSB8 $RA,$RB,$RC">; //Vector signed byte maximum @@ -486,11 +479,11 @@ //CVTLQ F-P 17.010 Convert longword to quadword //CVTQL F-P 17.030 Convert quadword to longword //These use SW completion, may not have function code for that set right (matters for JIT) -def CVTQS : FPForm<0x16, 0x0BC, "cvtqs $RB,$RC">; //Convert quadword to S_floating -def CVTQT : FPForm<0x16, 0x0BE, "cvtqt $RB,$RC">; //Convert quadword to T_floating -def CVTST : FPForm<0x16, 0x2AC, "cvtsts $RB,$RC">; //Convert S_floating to T_floating +def CVTQS : FPForm<0x16, 0x7BC, "cvtqs/sui $RB,$RC">; //Convert quadword to S_floating +def CVTQT : FPForm<0x16, 0x7BE, "cvtqt/sui $RB,$RC">; //Convert quadword to T_floating +de
[llvm-commits] CVS: llvm/utils/TableGen/SubtargetEmitter.cpp
Changes in directory llvm/utils/TableGen: SubtargetEmitter.cpp updated: 1.5 -> 1.6 --- Log message: Simplify. --- Diffs of the changes: (+1 -6) SubtargetEmitter.cpp |7 +-- 1 files changed, 1 insertion(+), 6 deletions(-) Index: llvm/utils/TableGen/SubtargetEmitter.cpp diff -u llvm/utils/TableGen/SubtargetEmitter.cpp:1.5 llvm/utils/TableGen/SubtargetEmitter.cpp:1.6 --- llvm/utils/TableGen/SubtargetEmitter.cpp:1.5Wed Oct 26 12:30:34 2005 +++ llvm/utils/TableGen/SubtargetEmitter.cppWed Oct 26 12:49:21 2005 @@ -182,12 +182,7 @@ // SubtargetEmitter::run - Main subtarget enumeration emitter. // void SubtargetEmitter::run(std::ostream &OS) { - std::vector Targets = Records.getAllDerivedDefinitions("Target"); - if (Targets.size() == 0) -throw std::string("ERROR: No 'Target' subclasses defined!"); - if (Targets.size() != 1) -throw std::string("ERROR: Multiple subclasses of Target defined!"); - Target = Targets[0]->getName(); + Target = CodeGenTarget().getName(); EmitSourceFileHeader("Subtarget Enumeration Source Fragment", OS); ___ 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/PPCSubtarget.h
Changes in directory llvm/lib/Target/PowerPC: PPCSubtarget.h updated: 1.9 -> 1.10 --- Log message: Typo x 2 --- Diffs of the changes: (+1 -1) PPCSubtarget.h |2 +- 1 files changed, 1 insertion(+), 1 deletion(-) Index: llvm/lib/Target/PowerPC/PPCSubtarget.h diff -u llvm/lib/Target/PowerPC/PPCSubtarget.h:1.9 llvm/lib/Target/PowerPC/PPCSubtarget.h:1.10 --- llvm/lib/Target/PowerPC/PPCSubtarget.h:1.9 Wed Oct 26 12:30:34 2005 +++ llvm/lib/Target/PowerPC/PPCSubtarget.h Wed Oct 26 12:50:22 2005 @@ -42,7 +42,7 @@ PPCSubtarget(const Module &M, const std::string &FS); /// ParseSubtargetFeatures - Parses features string setting specified - /// subtarget options. Definition of function is usto generated by tblgen. + /// subtarget options. Definition of function is into generated by tblgen. void ParseSubtargetFeatures(const std::string &FS, const std::string &CPU); /// getStackAlignment - Returns the minimum alignment known to hold of the ___ 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/AlphaSubtarget.h
Changes in directory llvm/lib/Target/Alpha: AlphaSubtarget.h updated: 1.2 -> 1.3 --- Log message: Typo x 2 --- Diffs of the changes: (+1 -1) AlphaSubtarget.h |2 +- 1 files changed, 1 insertion(+), 1 deletion(-) Index: llvm/lib/Target/Alpha/AlphaSubtarget.h diff -u llvm/lib/Target/Alpha/AlphaSubtarget.h:1.2 llvm/lib/Target/Alpha/AlphaSubtarget.h:1.3 --- llvm/lib/Target/Alpha/AlphaSubtarget.h:1.2 Wed Oct 26 12:30:34 2005 +++ llvm/lib/Target/Alpha/AlphaSubtarget.h Wed Oct 26 12:50:22 2005 @@ -35,7 +35,7 @@ AlphaSubtarget(const Module &M, const std::string &FS); /// ParseSubtargetFeatures - Parses features string setting specified - /// subtarget options. Definition of function is usto generated by tblgen. + /// subtarget options. Definition of function is into generated by tblgen. void ParseSubtargetFeatures(const std::string &FS, const std::string &CPU); bool hasF2I() const { return HasF2I; } ___ 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/PPCISelLowering.cpp
Changes in directory llvm/lib/Target/PowerPC: PPCISelLowering.cpp updated: 1.38 -> 1.39 --- Log message: Fix an assert compiling MallocBench/gs --- Diffs of the changes: (+1 -1) PPCISelLowering.cpp |2 +- 1 files changed, 1 insertion(+), 1 deletion(-) Index: llvm/lib/Target/PowerPC/PPCISelLowering.cpp diff -u llvm/lib/Target/PowerPC/PPCISelLowering.cpp:1.38 llvm/lib/Target/PowerPC/PPCISelLowering.cpp:1.39 --- llvm/lib/Target/PowerPC/PPCISelLowering.cpp:1.38Tue Oct 25 18:48:36 2005 +++ llvm/lib/Target/PowerPC/PPCISelLowering.cpp Wed Oct 26 13:01:11 2005 @@ -217,7 +217,7 @@ if (LHS.getValueType() == MVT::f32) // Comparison is always 64-bits LHS = DAG.getNode(ISD::FP_EXTEND, MVT::f64, LHS); return DAG.getNode(PPCISD::FSEL, ResVT, - DAG.getNode(ISD::FNEG, ResVT, LHS), TV, FV); + DAG.getNode(ISD::FNEG, MVT::f64, LHS), TV, FV); } SDOperand Cmp; ___ 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/AlphaSubtarget.h
Changes in directory llvm/lib/Target/Alpha: AlphaSubtarget.h updated: 1.3 -> 1.4 --- Log message: Typo made worse x 2 - take 2. --- Diffs of the changes: (+1 -1) AlphaSubtarget.h |2 +- 1 files changed, 1 insertion(+), 1 deletion(-) Index: llvm/lib/Target/Alpha/AlphaSubtarget.h diff -u llvm/lib/Target/Alpha/AlphaSubtarget.h:1.3 llvm/lib/Target/Alpha/AlphaSubtarget.h:1.4 --- llvm/lib/Target/Alpha/AlphaSubtarget.h:1.3 Wed Oct 26 12:50:22 2005 +++ llvm/lib/Target/Alpha/AlphaSubtarget.h Wed Oct 26 13:07:50 2005 @@ -35,7 +35,7 @@ AlphaSubtarget(const Module &M, const std::string &FS); /// ParseSubtargetFeatures - Parses features string setting specified - /// subtarget options. Definition of function is into generated by tblgen. + /// subtarget options. Definition of function is auto generated by tblgen. void ParseSubtargetFeatures(const std::string &FS, const std::string &CPU); bool hasF2I() const { return HasF2I; } ___ 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/PPCSubtarget.h
Changes in directory llvm/lib/Target/PowerPC: PPCSubtarget.h updated: 1.10 -> 1.11 --- Log message: Typo made worse x 2 - take 2. --- Diffs of the changes: (+1 -1) PPCSubtarget.h |2 +- 1 files changed, 1 insertion(+), 1 deletion(-) Index: llvm/lib/Target/PowerPC/PPCSubtarget.h diff -u llvm/lib/Target/PowerPC/PPCSubtarget.h:1.10 llvm/lib/Target/PowerPC/PPCSubtarget.h:1.11 --- llvm/lib/Target/PowerPC/PPCSubtarget.h:1.10 Wed Oct 26 12:50:22 2005 +++ llvm/lib/Target/PowerPC/PPCSubtarget.h Wed Oct 26 13:07:50 2005 @@ -42,7 +42,7 @@ PPCSubtarget(const Module &M, const std::string &FS); /// ParseSubtargetFeatures - Parses features string setting specified - /// subtarget options. Definition of function is into generated by tblgen. + /// subtarget options. Definition of function is auto generated by tblgen. void ParseSubtargetFeatures(const std::string &FS, const std::string &CPU); /// getStackAlignment - Returns the minimum alignment known to hold of the ___ llvm-commits mailing list llvm-commits@cs.uiuc.edu http://lists.cs.uiuc.edu/mailman/listinfo/llvm-commits
[llvm-commits] CVS: llvm/lib/CodeGen/LiveIntervalAnalysis.cpp TwoAddressInstructionPass.cpp
Changes in directory llvm/lib/CodeGen: LiveIntervalAnalysis.cpp updated: 1.150 -> 1.151 TwoAddressInstructionPass.cpp updated: 1.30 -> 1.31 --- Log message: Fix some spello's pointed out by Gabor Greif --- Diffs of the changes: (+4 -4) LiveIntervalAnalysis.cpp |4 ++-- TwoAddressInstructionPass.cpp |4 ++-- 2 files changed, 4 insertions(+), 4 deletions(-) Index: llvm/lib/CodeGen/LiveIntervalAnalysis.cpp diff -u llvm/lib/CodeGen/LiveIntervalAnalysis.cpp:1.150 llvm/lib/CodeGen/LiveIntervalAnalysis.cpp:1.151 --- llvm/lib/CodeGen/LiveIntervalAnalysis.cpp:1.150 Fri Oct 21 01:49:50 2005 +++ llvm/lib/CodeGen/LiveIntervalAnalysis.cpp Wed Oct 26 13:41:41 2005 @@ -637,7 +637,7 @@ /// number. If all of the places that IntA and IntB overlap are defined by /// copies from IntA to IntB, we know that these two ranges can really be /// merged if we adjust the value numbers. If it is safe, adjust the value -/// numbers and return true, allowing coallescing to occur. +/// numbers and return true, allowing coalescing to occur. bool LiveIntervals:: AdjustIfAllOverlappingRangesAreCopiesFrom(LiveInterval &IntA, LiveInterval &IntB, @@ -729,7 +729,7 @@ // If DestInt is actually a copy from SrcInt (which we know) that is used // to define another value of SrcInt, we can change the other range of // SrcInt to be the value of the range that defines DestInt, allowing a - // coallesce. + // coalesce. if (!Joinable && DestInt.containsOneValue() && AdjustIfAllOverlappingRangesAreCopiesFrom(SrcInt, DestInt, MIDefIdx)) Joinable = true; Index: llvm/lib/CodeGen/TwoAddressInstructionPass.cpp diff -u llvm/lib/CodeGen/TwoAddressInstructionPass.cpp:1.30 llvm/lib/CodeGen/TwoAddressInstructionPass.cpp:1.31 --- llvm/lib/CodeGen/TwoAddressInstructionPass.cpp:1.30 Thu Apr 21 17:33:33 2005 +++ llvm/lib/CodeGen/TwoAddressInstructionPass.cpp Wed Oct 26 13:41:41 2005 @@ -46,7 +46,7 @@ Statistic<> NumTwoAddressInstrs("twoaddressinstruction", "Number of two-address instructions"); Statistic<> NumCommuted("twoaddressinstruction", - "Number of instructions commuted to coallesce"); + "Number of instructions commuted to coalesce"); Statistic<> NumConvertedTo3Addr("twoaddressinstruction", "Number of instructions promoted to 3-address"); @@ -127,7 +127,7 @@ // If this instruction is not the killing user of B, see if we can // rearrange the code to make it so. Making it the killing user will -// allow us to coallesce A and B together, eliminating the copy we are +// allow us to coalesce A and B together, eliminating the copy we are // about to insert. if (!LV.KillsRegister(mi, regB)) { const TargetInstrDescriptor &TID = TII.get(opcode); ___ 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/AlphaISelDAGToDAG.cpp AlphaInstrInfo.td
Changes in directory llvm/lib/Target/Alpha: AlphaISelDAGToDAG.cpp updated: 1.4 -> 1.5 AlphaInstrInfo.td updated: 1.69 -> 1.70 --- Log message: int comparison patterns --- Diffs of the changes: (+48 -40) AlphaISelDAGToDAG.cpp | 28 --- AlphaInstrInfo.td | 60 -- 2 files changed, 48 insertions(+), 40 deletions(-) Index: llvm/lib/Target/Alpha/AlphaISelDAGToDAG.cpp diff -u llvm/lib/Target/Alpha/AlphaISelDAGToDAG.cpp:1.4 llvm/lib/Target/Alpha/AlphaISelDAGToDAG.cpp:1.5 --- llvm/lib/Target/Alpha/AlphaISelDAGToDAG.cpp:1.4 Tue Oct 25 15:36:10 2005 +++ llvm/lib/Target/Alpha/AlphaISelDAGToDAG.cpp Wed Oct 26 13:44:46 2005 @@ -111,34 +111,6 @@ case ISD::DYNAMIC_STACKALLOC: assert(0 && "You want these too?"); - case ISD::SETCC: { -ISD::CondCode CC = cast(N->getOperand(2))->get(); -assert(MVT::isInteger(N->getOperand(0).getValueType()) && "FP numbers are unnecessary"); -SDOperand Op1 = Select(N->getOperand(0)); -SDOperand Op2 = Select(N->getOperand(1)); -unsigned Opc = Alpha::WTF; -int dir; -switch (CC) { -default: N->dump(); assert(0 && "Unknown integer comparison!"); -case ISD::SETEQ: Opc = Alpha::CMPEQ; dir=1; break; -case ISD::SETLT: Opc = Alpha::CMPLT; dir = 1; break; -case ISD::SETLE: Opc = Alpha::CMPLE; dir = 1; break; -case ISD::SETGT: Opc = Alpha::CMPLT; dir = 0; break; -case ISD::SETGE: Opc = Alpha::CMPLE; dir = 0; break; -case ISD::SETULT: Opc = Alpha::CMPULT; dir = 1; break; -case ISD::SETUGT: Opc = Alpha::CMPULT; dir = 0; break; -case ISD::SETULE: Opc = Alpha::CMPULE; dir = 1; break; -case ISD::SETUGE: Opc = Alpha::CMPULE; dir = 0; break; -case ISD::SETNE: {//Handle this one special - SDOperand Tmp = CurDAG->getTargetNode(Alpha::CMPEQ, MVT::i64, Op1, Op2); - CurDAG->SelectNodeTo(N, Alpha::CMPEQ, MVT::i64, CurDAG->getRegister(Alpha::R31, MVT::i64), Tmp); - return SDOperand(N, 0); -} -} -CurDAG->SelectNodeTo(N, Opc, MVT::i64, dir ? Op1 : Op2, dir ? Op2 : Op1); -return SDOperand(N, 0); - } - case ISD::BRCOND: { SDOperand Chain = Select(N->getOperand(0)); SDOperand CC = Select(N->getOperand(1)); Index: llvm/lib/Target/Alpha/AlphaInstrInfo.td diff -u llvm/lib/Target/Alpha/AlphaInstrInfo.td:1.69 llvm/lib/Target/Alpha/AlphaInstrInfo.td:1.70 --- llvm/lib/Target/Alpha/AlphaInstrInfo.td:1.69Wed Oct 26 12:41:46 2005 +++ llvm/lib/Target/Alpha/AlphaInstrInfo.td Wed Oct 26 13:44:46 2005 @@ -308,18 +308,54 @@ [(set GPRC:$RC, (and GPRC:$RA, immZAP:$L))]>; //Comparison, int -def CMPBGE : OForm< 0x10, 0x0F, "cmpbge $RA,$RB,$RC", []>; //Compare byte -def CMPBGEi : OFormL<0x10, 0x0F, "cmpbge $RA,$L,$RC", []>; //Compare byte -def CMPEQ: OForm< 0x10, 0x2D, "cmpeq $RA,$RB,$RC", []>; //Compare signed quadword equal -def CMPEQi : OFormL<0x10, 0x2D, "cmpeq $RA,$L,$RC", []>; //Compare signed quadword equal -def CMPLE: OForm< 0x10, 0x6D, "cmple $RA,$RB,$RC", []>; //Compare signed quadword less than or equal -def CMPLEi : OFormL<0x10, 0x6D, "cmple $RA,$L,$RC", []>; //Compare signed quadword less than or equal -def CMPLT: OForm< 0x10, 0x4D, "cmplt $RA,$RB,$RC", []>; //Compare signed quadword less than -def CMPLTi : OFormL<0x10, 0x4D, "cmplt $RA,$L,$RC", []>; //Compare signed quadword less than -def CMPULE : OForm< 0x10, 0x3D, "cmpule $RA,$RB,$RC", []>; //Compare unsigned quadword less than or equal -def CMPULEi : OFormL<0x10, 0x3D, "cmpule $RA,$L,$RC", []>; //Compare unsigned quadword less than or equal -def CMPULT : OForm< 0x10, 0x1D, "cmpult $RA,$RB,$RC", []>; //Compare unsigned quadword less than -def CMPULTi : OFormL<0x10, 0x1D, "cmpult $RA,$L,$RC", []>; //Compare unsigned quadword less than +//So this is a waste of what this instruction can do, but it still saves something +def CMPBGE : OForm< 0x10, 0x0F, "cmpbge $RA,$RB,$RC", + [(set GPRC:$RC, (setuge (and GPRC:$RA, 255), (and GPRC:$RB, 255)))]>; +def CMPBGEi : OFormL<0x10, 0x0F, "cmpbge $RA,$L,$RC", + [(set GPRC:$RC, (setuge (and GPRC:$RA, 255), immUExt8:$L))]>; +def CMPEQ : OForm< 0x10, 0x2D, "cmpeq $RA,$RB,$RC", + [(set GPRC:$RC, (seteq GPRC:$RA, GPRC:$RB))]>; +def CMPEQi : OFormL<0x10, 0x2D, "cmpeq $RA,$L,$RC", + [(set GPRC:$RC, (seteq GPRC:$RA, immUExt8:$L))]>; +def CMPLE : OForm< 0x10, 0x6D, "cmple $RA,$RB,$RC", + [(set GPRC:$RC, (setle GPRC:$RA, GPRC:$RB))]>; +def CMPLEi : OFormL<0x10, 0x6D, "cmple $RA,$L,$RC", + [(set GPRC:$RC, (setle GPRC:$RA, immUExt8:$L))]>; +def CMPLT : OForm< 0x10, 0x4D, "cmplt $RA,$RB,$RC", + [(set GPRC:$RC, (setlt GPRC:$RA, GPRC:$RB))]>; +def CMPLTi : OFormL<0x10, 0x4D, "cmplt $RA,$L,$RC", + [(set GPRC:$RC, (setlt GPRC:$RA, immUExt8:$L))]>; +def CMPULE : OForm< 0x10, 0x3D, "c
[llvm-commits] CVS: llvm-www/developers.cgi
Changes in directory llvm-www: developers.cgi updated: 1.3 -> 1.4 --- Log message: Finally figured out the correct syntax. --- Diffs of the changes: (+8 -7) developers.cgi | 15 --- 1 files changed, 8 insertions(+), 7 deletions(-) Index: llvm-www/developers.cgi diff -u llvm-www/developers.cgi:1.3 llvm-www/developers.cgi:1.4 --- llvm-www/developers.cgi:1.3 Mon Oct 24 20:11:35 2005 +++ llvm-www/developers.cgi Wed Oct 26 14:06:13 2005 @@ -132,13 +132,14 @@ # For each developer in sorted order for my $Fullname (@Fullnames) { # Extract fields - my $Name = $Developers{$Fullname}{name}; - my $Surname = $Developers{$Fullname}{surname}; - my $HRef = $Developers{$Fullname}{href}; - my $Image = $Developers{$Fullname}{img}; - my $Width = $Developers{$Fullname}{width}; - my $Height = $Developers{$Fullname}{height}; - my $Alt = $Developers{$Fullname}{alt}; + my $thisDeveloper = $Developers{$Fullname}; + my $Name = $thisDeveloper->{name}; + my $Surname = $thisDeveloper->{surname}; + my $HRef = $thisDeveloper->{href}; + my $Image = $thisDeveloper->{img}; + my $Width = $thisDeveloper->{width}; + my $Height = $thisDeveloper->{height}; + my $Alt = $thisDeveloper->{alt}; print " \n" if $Column == 0; print "\n"; ___ llvm-commits mailing list llvm-commits@cs.uiuc.edu http://lists.cs.uiuc.edu/mailman/listinfo/llvm-commits
[llvm-commits] CVS: llvm-www/developers.cgi
Changes in directory llvm-www: developers.cgi updated: 1.4 -> 1.5 --- Log message: Consistency --- Diffs of the changes: (+8 -8) developers.cgi | 16 1 files changed, 8 insertions(+), 8 deletions(-) Index: llvm-www/developers.cgi diff -u llvm-www/developers.cgi:1.4 llvm-www/developers.cgi:1.5 --- llvm-www/developers.cgi:1.4 Wed Oct 26 14:06:13 2005 +++ llvm-www/developers.cgi Wed Oct 26 14:10:54 2005 @@ -132,14 +132,14 @@ # For each developer in sorted order for my $Fullname (@Fullnames) { # Extract fields - my $thisDeveloper = $Developers{$Fullname}; - my $Name = $thisDeveloper->{name}; - my $Surname = $thisDeveloper->{surname}; - my $HRef = $thisDeveloper->{href}; - my $Image = $thisDeveloper->{img}; - my $Width = $thisDeveloper->{width}; - my $Height = $thisDeveloper->{height}; - my $Alt = $thisDeveloper->{alt}; + my $Person = $Developers{$Fullname}; + my $Name = $Person->{name}; + my $Surname = $Person->{surname}; + my $HRef = $Person->{href}; + my $Image = $Person->{img}; + my $Width = $Person->{width}; + my $Height = $Person->{height}; + my $Alt = $Person->{alt}; print " \n" if $Column == 0; print "\n"; ___ llvm-commits mailing list llvm-commits@cs.uiuc.edu http://lists.cs.uiuc.edu/mailman/listinfo/llvm-commits
[llvm-commits] CVS: llvm/tools/llc/Makefile
Changes in directory llvm/tools/llc: Makefile updated: 1.75 -> 1.76 --- Log message: 1. Remove libraries no longer created from the list of libraries linked into the SparcV9 JIT. 2. Make LLVMTransformUtils a relinked object file and always link it before LLVMAnalysis.a. These two libraries have circular dependencies on each other which creates problem when building the SparcV9 JIT. This change fixes the dependency on all platforms problems with a minimum of fuss. --- Diffs of the changes: (+1 -1) Makefile |2 +- 1 files changed, 1 insertion(+), 1 deletion(-) Index: llvm/tools/llc/Makefile diff -u llvm/tools/llc/Makefile:1.75 llvm/tools/llc/Makefile:1.76 --- llvm/tools/llc/Makefile:1.75Tue Oct 25 12:10:30 2005 +++ llvm/tools/llc/Makefile Wed Oct 26 15:35:12 2005 @@ -70,7 +70,7 @@ LLVMipa.a \ LLVMTransforms.a \ LLVMScalarOpts.a \ - LLVMTransformUtils.a \ + LLVMTransformUtils \ LLVMAnalysis.a \ LLVMBCReader \ LLVMBCWriter \ ___ llvm-commits mailing list llvm-commits@cs.uiuc.edu http://lists.cs.uiuc.edu/mailman/listinfo/llvm-commits
[llvm-commits] CVS: llvm/tools/llvm-extract/Makefile
Changes in directory llvm/tools/llvm-extract: Makefile updated: 1.1 -> 1.2 --- Log message: 1. Remove libraries no longer created from the list of libraries linked into the SparcV9 JIT. 2. Make LLVMTransformUtils a relinked object file and always link it before LLVMAnalysis.a. These two libraries have circular dependencies on each other which creates problem when building the SparcV9 JIT. This change fixes the dependency on all platforms problems with a minimum of fuss. --- Diffs of the changes: (+1 -1) Makefile |2 +- 1 files changed, 1 insertion(+), 1 deletion(-) Index: llvm/tools/llvm-extract/Makefile diff -u llvm/tools/llvm-extract/Makefile:1.1 llvm/tools/llvm-extract/Makefile:1.2 --- llvm/tools/llvm-extract/Makefile:1.1Sun Apr 24 12:35:15 2005 +++ llvm/tools/llvm-extract/MakefileWed Oct 26 15:35:12 2005 @@ -10,7 +10,7 @@ TOOLNAME = llvm-extract USEDLIBS = LLVMBCReader LLVMBCWriter LLVMTransforms.a LLVMipo.a LLVMTarget.a \ - LLVMAnalysis.a LLVMTransformUtils.a LLVMipa.a \ + LLVMAnalysis.a LLVMTransformUtils LLVMipa.a \ LLVMCore LLVMSupport.a LLVMbzip2 LLVMSystem.a include $(LEVEL)/Makefile.common ___ llvm-commits mailing list llvm-commits@cs.uiuc.edu http://lists.cs.uiuc.edu/mailman/listinfo/llvm-commits
[llvm-commits] CVS: llvm/tools/opt/Makefile
Changes in directory llvm/tools/opt: Makefile updated: 1.51 -> 1.52 --- Log message: 1. Remove libraries no longer created from the list of libraries linked into the SparcV9 JIT. 2. Make LLVMTransformUtils a relinked object file and always link it before LLVMAnalysis.a. These two libraries have circular dependencies on each other which creates problem when building the SparcV9 JIT. This change fixes the dependency on all platforms problems with a minimum of fuss. --- Diffs of the changes: (+1 -1) Makefile |2 +- 1 files changed, 1 insertion(+), 1 deletion(-) Index: llvm/tools/opt/Makefile diff -u llvm/tools/opt/Makefile:1.51 llvm/tools/opt/Makefile:1.52 --- llvm/tools/opt/Makefile:1.51Sun Oct 23 21:31:05 2005 +++ llvm/tools/opt/Makefile Wed Oct 26 15:35:13 2005 @@ -11,7 +11,7 @@ USEDLIBS = LLVMBCReader LLVMBCWriter LLVMInstrumentation.a \ LLVMScalarOpts.a LLVMipo.a LLVMipa.a LLVMDataStructure LLVMTransforms.a \ - LLVMTarget.a LLVMAnalysis.a LLVMTransformUtils.a LLVMCore LLVMSupport.a \ + LLVMTarget.a LLVMAnalysis.a LLVMTransformUtils LLVMCore LLVMSupport.a \ LLVMbzip2 LLVMSystem.a include $(LEVEL)/Makefile.common ___ llvm-commits mailing list llvm-commits@cs.uiuc.edu http://lists.cs.uiuc.edu/mailman/listinfo/llvm-commits
[llvm-commits] CVS: llvm/lib/Transforms/Utils/Makefile
Changes in directory llvm/lib/Transforms/Utils: Makefile updated: 1.6 -> 1.7 --- Log message: 1. Remove libraries no longer created from the list of libraries linked into the SparcV9 JIT. 2. Make LLVMTransformUtils a relinked object file and always link it before LLVMAnalysis.a. These two libraries have circular dependencies on each other which creates problem when building the SparcV9 JIT. This change fixes the dependency on all platforms problems with a minimum of fuss. --- Diffs of the changes: (+0 -1) Makefile |1 - 1 files changed, 1 deletion(-) Index: llvm/lib/Transforms/Utils/Makefile diff -u llvm/lib/Transforms/Utils/Makefile:1.6 llvm/lib/Transforms/Utils/Makefile:1.7 --- llvm/lib/Transforms/Utils/Makefile:1.6 Sun Oct 23 21:26:13 2005 +++ llvm/lib/Transforms/Utils/Makefile Wed Oct 26 15:35:12 2005 @@ -9,7 +9,6 @@ LEVEL = ../../.. LIBRARYNAME = LLVMTransformUtils -BUILD_ARCHIVE = 1 include $(LEVEL)/Makefile.common ___ llvm-commits mailing list llvm-commits@cs.uiuc.edu http://lists.cs.uiuc.edu/mailman/listinfo/llvm-commits
[llvm-commits] CVS: llvm/tools/analyze/Makefile
Changes in directory llvm/tools/analyze: Makefile updated: 1.28 -> 1.29 --- Log message: 1. Remove libraries no longer created from the list of libraries linked into the SparcV9 JIT. 2. Make LLVMTransformUtils a relinked object file and always link it before LLVMAnalysis.a. These two libraries have circular dependencies on each other which creates problem when building the SparcV9 JIT. This change fixes the dependency on all platforms problems with a minimum of fuss. --- Diffs of the changes: (+1 -1) Makefile |2 +- 1 files changed, 1 insertion(+), 1 deletion(-) Index: llvm/tools/analyze/Makefile diff -u llvm/tools/analyze/Makefile:1.28 llvm/tools/analyze/Makefile:1.29 --- llvm/tools/analyze/Makefile:1.28Sun Oct 23 20:07:56 2005 +++ llvm/tools/analyze/Makefile Wed Oct 26 15:35:12 2005 @@ -11,6 +11,6 @@ USEDLIBS = LLVMAsmParser LLVMBCReader LLVMAnalysis.a LLVMipa.a \ LLVMDataStructure \ LLVMScalarOpts.a LLVMTransforms.a LLVMTarget.a LLVMScalarOpts.a \ - LLVMTransformUtils.a LLVMCore LLVMSupport.a LLVMbzip2 LLVMSystem.a + LLVMTransformUtils LLVMCore LLVMSupport.a LLVMbzip2 LLVMSystem.a include $(LEVEL)/Makefile.common ___ llvm-commits mailing list llvm-commits@cs.uiuc.edu http://lists.cs.uiuc.edu/mailman/listinfo/llvm-commits
[llvm-commits] CVS: llvm/tools/llvm-ld/Makefile
Changes in directory llvm/tools/llvm-ld: Makefile updated: 1.5 -> 1.6 --- Log message: 1. Remove libraries no longer created from the list of libraries linked into the SparcV9 JIT. 2. Make LLVMTransformUtils a relinked object file and always link it before LLVMAnalysis.a. These two libraries have circular dependencies on each other which creates problem when building the SparcV9 JIT. This change fixes the dependency on all platforms problems with a minimum of fuss. --- Diffs of the changes: (+1 -1) Makefile |2 +- 1 files changed, 1 insertion(+), 1 deletion(-) Index: llvm/tools/llvm-ld/Makefile diff -u llvm/tools/llvm-ld/Makefile:1.5 llvm/tools/llvm-ld/Makefile:1.6 --- llvm/tools/llvm-ld/Makefile:1.5 Thu Nov 25 14:22:07 2004 +++ llvm/tools/llvm-ld/Makefile Wed Oct 26 15:35:13 2005 @@ -11,7 +11,7 @@ TOOLNAME = llvm-ld USEDLIBS = LLVMipo.a LLVMTransforms.a LLVMScalarOpts.a LLVMAnalysis.a \ - LLVMipa.a LLVMTransformUtils.a LLVMTarget.a LLVMLinker.a \ + LLVMipa.a LLVMTransformUtils LLVMTarget.a LLVMLinker.a \ LLVMArchive.a LLVMBCReader LLVMBCWriter \ LLVMCore LLVMSupport.a LLVMbzip2 LLVMSystem.a ___ llvm-commits mailing list llvm-commits@cs.uiuc.edu http://lists.cs.uiuc.edu/mailman/listinfo/llvm-commits
[llvm-commits] CVS: llvm/tools/gccas/Makefile
Changes in directory llvm/tools/gccas: Makefile updated: 1.22 -> 1.23 --- Log message: 1. Remove libraries no longer created from the list of libraries linked into the SparcV9 JIT. 2. Make LLVMTransformUtils a relinked object file and always link it before LLVMAnalysis.a. These two libraries have circular dependencies on each other which creates problem when building the SparcV9 JIT. This change fixes the dependency on all platforms problems with a minimum of fuss. --- Diffs of the changes: (+1 -1) Makefile |2 +- 1 files changed, 1 insertion(+), 1 deletion(-) Index: llvm/tools/gccas/Makefile diff -u llvm/tools/gccas/Makefile:1.22 llvm/tools/gccas/Makefile:1.23 --- llvm/tools/gccas/Makefile:1.22 Sun Oct 23 20:12:14 2005 +++ llvm/tools/gccas/Makefile Wed Oct 26 15:35:12 2005 @@ -10,7 +10,7 @@ TOOLNAME = gccas USEDLIBS = LLVMAsmParser LLVMBCWriter LLVMTransforms.a LLVMipo.a LLVMipa.a \ - LLVMScalarOpts.a LLVMAnalysis.a LLVMTarget.a LLVMTransformUtils.a \ + LLVMScalarOpts.a LLVMAnalysis.a LLVMTarget.a LLVMTransformUtils \ LLVMCore LLVMSupport.a LLVMbzip2 LLVMSystem.a include $(LEVEL)/Makefile.common ___ llvm-commits mailing list llvm-commits@cs.uiuc.edu http://lists.cs.uiuc.edu/mailman/listinfo/llvm-commits
[llvm-commits] CVS: llvm/tools/bugpoint/Makefile
Changes in directory llvm/tools/bugpoint: Makefile updated: 1.14 -> 1.15 --- Log message: 1. Remove libraries no longer created from the list of libraries linked into the SparcV9 JIT. 2. Make LLVMTransformUtils a relinked object file and always link it before LLVMAnalysis.a. These two libraries have circular dependencies on each other which creates problem when building the SparcV9 JIT. This change fixes the dependency on all platforms problems with a minimum of fuss. --- Diffs of the changes: (+1 -1) Makefile |2 +- 1 files changed, 1 insertion(+), 1 deletion(-) Index: llvm/tools/bugpoint/Makefile diff -u llvm/tools/bugpoint/Makefile:1.14 llvm/tools/bugpoint/Makefile:1.15 --- llvm/tools/bugpoint/Makefile:1.14 Sun Oct 23 21:31:05 2005 +++ llvm/tools/bugpoint/MakefileWed Oct 26 15:35:12 2005 @@ -14,7 +14,7 @@ ANALIBS = LLVMDataStructure LLVMipa.a LLVMTarget.a USEDLIBS = LLVMipo.a LLVMScalarOpts.a $(OPTLIBS) $(ANALIBS) LLVMAnalysis.a \ - LLVMTransformUtils.a \ + LLVMTransformUtils \ LLVMAsmParser LLVMLinker.a LLVMBCReader LLVMBCWriter \ LLVMCore LLVMSupport.a LLVMbzip2 LLVMSystem.a ___ llvm-commits mailing list llvm-commits@cs.uiuc.edu http://lists.cs.uiuc.edu/mailman/listinfo/llvm-commits
[llvm-commits] CVS: llvm/tools/gccld/Makefile
Changes in directory llvm/tools/gccld: Makefile updated: 1.12 -> 1.13 --- Log message: 1. Remove libraries no longer created from the list of libraries linked into the SparcV9 JIT. 2. Make LLVMTransformUtils a relinked object file and always link it before LLVMAnalysis.a. These two libraries have circular dependencies on each other which creates problem when building the SparcV9 JIT. This change fixes the dependency on all platforms problems with a minimum of fuss. --- Diffs of the changes: (+1 -1) Makefile |2 +- 1 files changed, 1 insertion(+), 1 deletion(-) Index: llvm/tools/gccld/Makefile diff -u llvm/tools/gccld/Makefile:1.12 llvm/tools/gccld/Makefile:1.13 --- llvm/tools/gccld/Makefile:1.12 Sun Apr 24 12:43:38 2005 +++ llvm/tools/gccld/Makefile Wed Oct 26 15:35:12 2005 @@ -11,7 +11,7 @@ TOOLNAME = gccld USEDLIBS = LLVMipo.a LLVMTransforms.a LLVMScalarOpts.a LLVMAnalysis.a \ - LLVMipa.a LLVMTransformUtils.a LLVMTarget.a LLVMLinker.a \ + LLVMipa.a LLVMTransformUtils LLVMTarget.a LLVMLinker.a \ LLVMArchive.a LLVMBCReader LLVMBCWriter \ LLVMCore LLVMSupport.a LLVMbzip2 LLVMSystem.a ___ llvm-commits mailing list llvm-commits@cs.uiuc.edu http://lists.cs.uiuc.edu/mailman/listinfo/llvm-commits
[llvm-commits] CVS: llvm/Makefile.rules
Changes in directory llvm: Makefile.rules updated: 1.333 -> 1.334 --- Log message: 1. Remove libraries no longer created from the list of libraries linked into the SparcV9 JIT. 2. Make LLVMTransformUtils a relinked object file and always link it before LLVMAnalysis.a. These two libraries have circular dependencies on each other which creates problem when building the SparcV9 JIT. This change fixes the dependency on all platforms problems with a minimum of fuss. --- Diffs of the changes: (+3 -3) Makefile.rules |6 +++--- 1 files changed, 3 insertions(+), 3 deletions(-) Index: llvm/Makefile.rules diff -u llvm/Makefile.rules:1.333 llvm/Makefile.rules:1.334 --- llvm/Makefile.rules:1.333 Tue Oct 25 12:54:19 2005 +++ llvm/Makefile.rules Wed Oct 26 15:35:01 2005 @@ -588,9 +588,9 @@ # What the Sparc JIT requires ifdef ENABLE_SPARCV9_JIT JIT_LIBS += LLVMSparcV9 LLVMSparcV9ModuloSched LLVMSparcV9InstrSched \ - LLVMSparcV9LiveVar LLVMInstrumentation.a LLVMProfilePaths \ + LLVMSparcV9LiveVar LLVMInstrumentation.a \ LLVMBCWriter LLVMTransforms.a LLVMipo.a LLVMipa.a \ - LLVMDataStructure.a LLVMSparcV9RegAlloc + LLVMDataStructure LLVMSparcV9RegAlloc endif # You can enable the PowerPC JIT on a non-PowerPC host by setting the flag @@ -617,7 +617,7 @@ JIT_LIBS += LLVMAlpha LLVMSelectionDAG endif -LLVMLIBS := $(JIT_LIBS) LLVMScalarOpts.a LLVMTransformUtils.a LLVMAnalysis.a \ +LLVMLIBS := $(JIT_LIBS) LLVMScalarOpts.a LLVMTransformUtils LLVMAnalysis.a \ LLVMBCReader LLVMCore LLVMSupport.a LLVMTarget.a LLVMbzip2 \ LLVMSystem.a $(PLATFORMLIBDL) endif ___ llvm-commits mailing list llvm-commits@cs.uiuc.edu http://lists.cs.uiuc.edu/mailman/listinfo/llvm-commits
[llvm-commits] CVS: llvm/projects/Stacker/tools/stkrc/Makefile
Changes in directory llvm/projects/Stacker/tools/stkrc: Makefile updated: 1.8 -> 1.9 --- Log message: Make sure to build things in the right order, build with the .o file, not the .a file to unbreak the build after john's change --- Diffs of the changes: (+2 -2) Makefile |4 ++-- 1 files changed, 2 insertions(+), 2 deletions(-) Index: llvm/projects/Stacker/tools/stkrc/Makefile diff -u llvm/projects/Stacker/tools/stkrc/Makefile:1.8 llvm/projects/Stacker/tools/stkrc/Makefile:1.9 --- llvm/projects/Stacker/tools/stkrc/Makefile:1.8 Sun Oct 23 20:52:15 2005 +++ llvm/projects/Stacker/tools/stkrc/Makefile Wed Oct 26 19:53:16 2005 @@ -9,8 +9,8 @@ # Give the name of a library. This will build a dynamic version. # TOOLNAME = stkrc -LLVMLIBS = LLVMAsmParser LLVMBCWriter LLVMTransforms.a LLVMipo.a LLVMipa.a \ - LLVMScalarOpts.a LLVMAnalysis.a LLVMTarget.a LLVMTransformUtils.a \ +LLVMLIBS = LLVMAsmParser LLVMBCWriter LLVMipo.a \ + LLVMScalarOpts.a LLVMTransforms.a LLVMTransformUtils LLVMipa.a LLVMAnalysis.a LLVMTarget.a \ LLVMCore LLVMSupport.a LLVMbzip2 LLVMSystem.a CONFIG_FILES = st EXTRA_DIST = st ___ llvm-commits mailing list llvm-commits@cs.uiuc.edu http://lists.cs.uiuc.edu/mailman/listinfo/llvm-commits
[llvm-commits] CVS: llvm/win32/dobison.cmd doflex.cmd
Changes in directory llvm/win32: dobison.cmd updated: 1.1 -> 1.2 doflex.cmd updated: 1.1 -> 1.2 --- Log message: Fine tune Visual Studio's use of bison/flex. --- Diffs of the changes: (+19 -18) dobison.cmd | 20 ++-- doflex.cmd | 17 + 2 files changed, 19 insertions(+), 18 deletions(-) Index: llvm/win32/dobison.cmd diff -u llvm/win32/dobison.cmd:1.1 llvm/win32/dobison.cmd:1.2 --- llvm/win32/dobison.cmd:1.1 Wed Oct 26 00:37:35 2005 +++ llvm/win32/dobison.cmd Wed Oct 26 20:10:37 2005 @@ -7,16 +7,16 @@ if "%2"=="debug" (set flags=-tvdo) else (set flags=-vdo) -rem Try and run bison. If it is present, great. -bison -p%1 %flags%%3.cpp %4 -if errorlevel 1 goto error -move %3.hpp %3.h -goto done +rem Test for presence of bison. +bison --help >NUL +if errorlevel 1 goto nobison -:error -echo Bison could not run. Using pre-generated files. +rem Run bison. +bison -p%1 %flags%%3.cpp %4 && move %3.hpp %3.h +exit + +:nobison +echo Bison not found. Using pre-generated files. copy %~pn4.cpp %3.cpp copy %~pn4.h %3.h - -:done -exit 0 +exit Index: llvm/win32/doflex.cmd diff -u llvm/win32/doflex.cmd:1.1 llvm/win32/doflex.cmd:1.2 --- llvm/win32/doflex.cmd:1.1 Wed Oct 26 00:37:35 2005 +++ llvm/win32/doflex.cmd Wed Oct 26 20:10:37 2005 @@ -6,14 +6,15 @@ if "%1"=="debug" (set flags=-t) else (set flags=-t) -rem Try and run flex. If it is present, great. +rem Test for presence of flex. +flex --help >NUL +if errorlevel 1 goto noflex + +rem Run flex. flex %flags% >%2.cpp %3 -if errorlevel 1 goto error -goto done +exit -:error -echo Flex could not run. Using pre-generated files. +:noflex +echo Flex not found. Using pre-generated files. copy %~pn3.cpp %2.cpp - -:done -exit 0 +exit ___ llvm-commits mailing list llvm-commits@cs.uiuc.edu http://lists.cs.uiuc.edu/mailman/listinfo/llvm-commits
[llvm-commits] CVS: llvm/win32/Configure/Configure.vcproj
Changes in directory llvm/win32/Configure: Configure.vcproj updated: 1.9 -> 1.10 --- Log message: Fine tune Visual Studio's use of bison/flex. --- Diffs of the changes: (+4 -4) Configure.vcproj |8 1 files changed, 4 insertions(+), 4 deletions(-) Index: llvm/win32/Configure/Configure.vcproj diff -u llvm/win32/Configure/Configure.vcproj:1.9 llvm/win32/Configure/Configure.vcproj:1.10 --- llvm/win32/Configure/Configure.vcproj:1.9 Wed Oct 26 09:48:53 2005 +++ llvm/win32/Configure/Configure.vcproj Wed Oct 26 20:10:37 2005 @@ -102,7 +102,7 @@ @@ -113,7 +113,7 @@ @@ -124,7 +124,7 @@ @@ -135,7 +135,7 @@ ___ llvm-commits mailing list llvm-commits@cs.uiuc.edu http://lists.cs.uiuc.edu/mailman/listinfo/llvm-commits
[llvm-commits] CVS: llvm/win32/TableGen/TableGen.vcproj
Changes in directory llvm/win32/TableGen: TableGen.vcproj updated: 1.17 -> 1.18 --- Log message: Fine tune Visual Studio's use of bison/flex. --- Diffs of the changes: (+4 -6) TableGen.vcproj | 10 -- 1 files changed, 4 insertions(+), 6 deletions(-) Index: llvm/win32/TableGen/TableGen.vcproj diff -u llvm/win32/TableGen/TableGen.vcproj:1.17 llvm/win32/TableGen/TableGen.vcproj:1.18 --- llvm/win32/TableGen/TableGen.vcproj:1.17Wed Oct 26 00:37:35 2005 +++ llvm/win32/TableGen/TableGen.vcproj Wed Oct 26 20:10:37 2005 @@ -161,18 +161,16 @@ + CommandLine="..\dobison.cmd File debug $(InputName) $(InputPath)" + Outputs="$(InputName).cpp;$(InputName).h;$(InputName).output"/> + CommandLine="..\dobison.cmd File release $(InputName) $(InputPath)" + Outputs="$(InputName).cpp;$(InputName).h;$(InputName).output"/> http://lists.cs.uiuc.edu/mailman/listinfo/llvm-commits
[llvm-commits] CVS: llvm/win32/AsmParser/AsmParser.vcproj
Changes in directory llvm/win32/AsmParser: AsmParser.vcproj updated: 1.6 -> 1.7 --- Log message: Fine tune Visual Studio's use of bison/flex. --- Diffs of the changes: (+4 -6) AsmParser.vcproj | 10 -- 1 files changed, 4 insertions(+), 6 deletions(-) Index: llvm/win32/AsmParser/AsmParser.vcproj diff -u llvm/win32/AsmParser/AsmParser.vcproj:1.6 llvm/win32/AsmParser/AsmParser.vcproj:1.7 --- llvm/win32/AsmParser/AsmParser.vcproj:1.6 Wed Oct 26 00:37:35 2005 +++ llvm/win32/AsmParser/AsmParser.vcproj Wed Oct 26 20:10:37 2005 @@ -133,18 +133,16 @@ + CommandLine="..\dobison.cmd llvmAsm debug $(InputName) $(InputPath)" + Outputs="$(InputName).cpp;$(InputName).h;$(InputName).output"/> + CommandLine="..\dobison.cmd llvmAsm release $(InputName) $(InputPath)" + Outputs="$(InputName).cpp;$(InputName).h;$(InputName).output"/> http://lists.cs.uiuc.edu/mailman/listinfo/llvm-commits
[llvm-commits] CVS: llvm/lib/CodeGen/SelectionDAG/DAGCombiner.cpp
Changes in directory llvm/lib/CodeGen/SelectionDAG: DAGCombiner.cpp updated: 1.55 -> 1.56 --- Log message: Add a simple xform that is useful for bitfield operations. --- Diffs of the changes: (+9 -0) DAGCombiner.cpp |9 + 1 files changed, 9 insertions(+) Index: llvm/lib/CodeGen/SelectionDAG/DAGCombiner.cpp diff -u llvm/lib/CodeGen/SelectionDAG/DAGCombiner.cpp:1.55 llvm/lib/CodeGen/SelectionDAG/DAGCombiner.cpp:1.56 --- llvm/lib/CodeGen/SelectionDAG/DAGCombiner.cpp:1.55 Tue Oct 25 13:57:30 2005 +++ llvm/lib/CodeGen/SelectionDAG/DAGCombiner.cpp Thu Oct 27 00:06:38 2005 @@ -1103,7 +1103,16 @@ if (N01C) return DAG.getNode(ISD::OR, VT, N0.getOperand(0), DAG.getConstant(N1C->getValue()|N01C->getValue(), VT)); + } else if (N1C && N0.getOpcode() == ISD::AND && N0.Val->hasOneUse() && + isa(N0.getOperand(1))) { +// Canonicalize (or (and X, c1), c2) -> (and (or X, c2), c1|c2) +ConstantSDNode *C1 = cast(N0.getOperand(1)); +return DAG.getNode(ISD::AND, VT, DAG.getNode(ISD::OR, VT, N0.getOperand(0), + N1), + DAG.getConstant(N1C->getValue() | C1->getValue(), VT)); } + + // fold (or (setcc x), (setcc y)) -> (setcc (or x, y)) if (isSetCCEquivalent(N0, LL, LR, CC0) && isSetCCEquivalent(N1, RL, RR, CC1)){ ISD::CondCode Op0 = cast(CC0)->get(); ___ llvm-commits mailing list llvm-commits@cs.uiuc.edu http://lists.cs.uiuc.edu/mailman/listinfo/llvm-commits
[llvm-commits] CVS: llvm/lib/Transforms/Scalar/InstructionCombining.cpp
Changes in directory llvm/lib/Transforms/Scalar: InstructionCombining.cpp updated: 1.393 -> 1.394 --- Log message: Minor change to this file to support obscure cases with constant array amounts --- Diffs of the changes: (+16 -5) InstructionCombining.cpp | 21 - 1 files changed, 16 insertions(+), 5 deletions(-) Index: llvm/lib/Transforms/Scalar/InstructionCombining.cpp diff -u llvm/lib/Transforms/Scalar/InstructionCombining.cpp:1.393 llvm/lib/Transforms/Scalar/InstructionCombining.cpp:1.394 --- llvm/lib/Transforms/Scalar/InstructionCombining.cpp:1.393 Wed Oct 26 12:18:16 2005 +++ llvm/lib/Transforms/Scalar/InstructionCombining.cpp Thu Oct 27 00:53:56 2005 @@ -1709,7 +1709,6 @@ return InsertNewInstBefore(New, I); } - Instruction *InstCombiner::visitAnd(BinaryOperator &I) { bool Changed = SimplifyCommutative(I); Value *Op0 = I.getOperand(0), *Op1 = I.getOperand(1); @@ -3776,7 +3775,7 @@ Instruction *InstCombiner::PromoteCastOfAllocation(CastInst &CI, AllocationInst &AI) { const PointerType *PTy = dyn_cast(CI.getType()); - if (AI.isArrayAllocation() || !PTy) return 0; + if (!PTy) return 0; // Not casting the allocation to a pointer type. // Remove any uses of AI that are dead. assert(!CI.use_empty() && "Dead instructions should be removed earlier!"); @@ -3813,12 +3812,23 @@ uint64_t AllocElTySize = TD->getTypeSize(AllocElTy); uint64_t CastElTySize = TD->getTypeSize(CastElTy); + if (CastElTySize == 0 || AllocElTySize == 0) return 0; // If the allocation is for an even multiple of the cast type size - if (CastElTySize == 0 || AllocElTySize % CastElTySize != 0) + Value *Amt = 0; + if (AllocElTySize % CastElTySize == 0) { +Amt = ConstantUInt::get(Type::UIntTy, AllocElTySize/CastElTySize); +if (ConstantUInt *CI = dyn_cast(AI.getOperand(0))) + Amt = ConstantExpr::getMul(CI, cast(Amt)); +else { + // Perform an explicit scale. + Instruction *Tmp = BinaryOperator::createMul(Amt, AI.getOperand(0),"tmp"); + Amt = InsertNewInstBefore(Tmp, AI); +} + } else { return 0; - Value *Amt = ConstantUInt::get(Type::UIntTy, - AllocElTySize/CastElTySize); + } + std::string Name = AI.getName(); AI.setName(""); AllocationInst *New; if (isa(AI)) @@ -4061,6 +4071,7 @@ break; } } + return 0; } ___ llvm-commits mailing list llvm-commits@cs.uiuc.edu http://lists.cs.uiuc.edu/mailman/listinfo/llvm-commits
[llvm-commits] CVS: llvm/lib/Transforms/Scalar/InstructionCombining.cpp
Changes in directory llvm/lib/Transforms/Scalar: InstructionCombining.cpp updated: 1.394 -> 1.395 --- Log message: Promote cases like cast (malloc sbyte, 100) to int* into (malloc [25 x int]) directly without having to convert to (malloc [100 x sbyte]) first. --- Diffs of the changes: (+22 -1) InstructionCombining.cpp | 23 ++- 1 files changed, 22 insertions(+), 1 deletion(-) Index: llvm/lib/Transforms/Scalar/InstructionCombining.cpp diff -u llvm/lib/Transforms/Scalar/InstructionCombining.cpp:1.394 llvm/lib/Transforms/Scalar/InstructionCombining.cpp:1.395 --- llvm/lib/Transforms/Scalar/InstructionCombining.cpp:1.394 Thu Oct 27 00:53:56 2005 +++ llvm/lib/Transforms/Scalar/InstructionCombining.cpp Thu Oct 27 01:12:00 2005 @@ -3826,7 +3826,28 @@ Amt = InsertNewInstBefore(Tmp, AI); } } else { -return 0; +// See if we can satisfy the modulus by pulling a scale out of the array +// size argument. +unsigned ArraySizeScale = 1; +Value *NumElements = AI.getOperand(0); + +if (ConstantUInt *CI = dyn_cast(NumElements)) { + ArraySizeScale = CI->getValue(); + NumElements = ConstantUInt::get(Type::UIntTy, 1); +} + +// If we can now satisfy the modulus, by using a non-1 scale, we really can +// do the xform. +if ((AllocElTySize*ArraySizeScale) % CastElTySize != 0) return 0; + +Amt = ConstantUInt::get(Type::UIntTy, +(AllocElTySize*ArraySizeScale)/CastElTySize); +if (ConstantUInt *CI = dyn_cast(NumElements)) + Amt = ConstantExpr::getMul(CI, cast(Amt)); +else { + Instruction *Tmp = BinaryOperator::createMul(Amt, NumElements, "tmp"); + Amt = InsertNewInstBefore(Tmp, AI); +} } std::string Name = AI.getName(); AI.setName(""); ___ llvm-commits mailing list llvm-commits@cs.uiuc.edu http://lists.cs.uiuc.edu/mailman/listinfo/llvm-commits
[llvm-commits] CVS: llvm/lib/Transforms/Scalar/InstructionCombining.cpp
Changes in directory llvm/lib/Transforms/Scalar: InstructionCombining.cpp updated: 1.395 -> 1.396 --- Log message: Teach instcombine to promote stuff like (cast (malloc sbyte, 8*X) to int*) into: malloc int, (2*X) --- Diffs of the changes: (+26 -7) InstructionCombining.cpp | 33 ++--- 1 files changed, 26 insertions(+), 7 deletions(-) Index: llvm/lib/Transforms/Scalar/InstructionCombining.cpp diff -u llvm/lib/Transforms/Scalar/InstructionCombining.cpp:1.395 llvm/lib/Transforms/Scalar/InstructionCombining.cpp:1.396 --- llvm/lib/Transforms/Scalar/InstructionCombining.cpp:1.395 Thu Oct 27 01:12:00 2005 +++ llvm/lib/Transforms/Scalar/InstructionCombining.cpp Thu Oct 27 01:24:46 2005 @@ -3834,19 +3834,38 @@ if (ConstantUInt *CI = dyn_cast(NumElements)) { ArraySizeScale = CI->getValue(); NumElements = ConstantUInt::get(Type::UIntTy, 1); +} else if (ShiftInst *SI = dyn_cast(NumElements)) { + if (SI->getOpcode() == Instruction::Shl) +if (ConstantUInt *CUI = dyn_cast(SI->getOperand(1))) { + // This is a value scaled by '1 << the shift amt'. + NumElements = SI->getOperand(0); + ArraySizeScale = 1U << CUI->getValue(); +} +} else if (isa(NumElements) && + cast(NumElements)->getOpcode() == Instruction::Mul){ + BinaryOperator *BO = cast(NumElements); + if (ConstantUInt *Scale = cast(BO->getOperand(1))) { +// This value is scaled by 'Scale'. +NumElements = BO->getOperand(0); +ArraySizeScale = Scale->getValue(); + } } // If we can now satisfy the modulus, by using a non-1 scale, we really can // do the xform. if ((AllocElTySize*ArraySizeScale) % CastElTySize != 0) return 0; -Amt = ConstantUInt::get(Type::UIntTy, -(AllocElTySize*ArraySizeScale)/CastElTySize); -if (ConstantUInt *CI = dyn_cast(NumElements)) - Amt = ConstantExpr::getMul(CI, cast(Amt)); -else { - Instruction *Tmp = BinaryOperator::createMul(Amt, NumElements, "tmp"); - Amt = InsertNewInstBefore(Tmp, AI); +unsigned Scale = (AllocElTySize*ArraySizeScale)/CastElTySize; +if (Scale == 1) { + Amt = NumElements; +} else { + Amt = ConstantUInt::get(Type::UIntTy, Scale); + if (ConstantUInt *CI = dyn_cast(NumElements)) +Amt = ConstantExpr::getMul(CI, cast(Amt)); + else if (cast(Amt)->getValue() == 1) { +Instruction *Tmp = BinaryOperator::createMul(Amt, NumElements, "tmp"); +Amt = InsertNewInstBefore(Tmp, AI); + } } } ___ llvm-commits mailing list llvm-commits@cs.uiuc.edu http://lists.cs.uiuc.edu/mailman/listinfo/llvm-commits
[llvm-commits] CVS: llvm/lib/Transforms/Scalar/InstructionCombining.cpp
Changes in directory llvm/lib/Transforms/Scalar: InstructionCombining.cpp updated: 1.396 -> 1.397 --- Log message: Fix typo --- Diffs of the changes: (+1 -1) InstructionCombining.cpp |2 +- 1 files changed, 1 insertion(+), 1 deletion(-) Index: llvm/lib/Transforms/Scalar/InstructionCombining.cpp diff -u llvm/lib/Transforms/Scalar/InstructionCombining.cpp:1.396 llvm/lib/Transforms/Scalar/InstructionCombining.cpp:1.397 --- llvm/lib/Transforms/Scalar/InstructionCombining.cpp:1.396 Thu Oct 27 01:24:46 2005 +++ llvm/lib/Transforms/Scalar/InstructionCombining.cpp Thu Oct 27 01:26:26 2005 @@ -3844,7 +3844,7 @@ } else if (isa(NumElements) && cast(NumElements)->getOpcode() == Instruction::Mul){ BinaryOperator *BO = cast(NumElements); - if (ConstantUInt *Scale = cast(BO->getOperand(1))) { + if (ConstantUInt *Scale = dyn_cast(BO->getOperand(1))) { // This value is scaled by 'Scale'. NumElements = BO->getOperand(0); ArraySizeScale = Scale->getValue(); ___ llvm-commits mailing list llvm-commits@cs.uiuc.edu http://lists.cs.uiuc.edu/mailman/listinfo/llvm-commits