- Apr 30, 2009
-
-
Nate Begeman authored
llvm-svn: 70425
-
- Apr 29, 2009
-
-
Jakob Stoklund Olesen authored
llvm-svn: 70408
-
Nate Begeman authored
llvm-svn: 70391
-
Evan Cheng authored
spillPhysRegAroundRegDefsUses() may have invalidated iterators stored in fixed_ IntervalPtrs. Reset them. llvm-svn: 70378
-
Nate Begeman authored
llvm-svn: 70372
-
Sanjiv Gupta authored
llvm-svn: 70366
-
Chris Lattner authored
anything larger than 64-bits, avoiding a crash. This should really be fixed to use APInts, though type legalization happens to help us out and we get good code on the attached testcase at least. This fixes rdar://6836460 llvm-svn: 70360
-
Evan Cheng authored
Determine allocation 'preference' with right register class. I haven't seen this changing codegen so no test case. llvm-svn: 70351
-
Bill Wendling authored
Massive check in. This changes the "-fast" flag to "-O#" in llc. If you want to use the old behavior, the flag is -O0. This change allows for finer-grained control over which optimizations are run at different -O levels. Most of this work was pretty mechanical. The majority of the fixes came from verifying that a "fast" variable wasn't used anymore. The JIT still uses a "Fast" flag. I'll change the JIT with a follow-up patch. llvm-svn: 70343
-
- Apr 28, 2009
-
-
Evan Cheng authored
llvm-svn: 70309
-
Jakob Stoklund Olesen authored
If the physical register does not belong to the virtual register's regclass, don't coalesce. The physical register could be an invalid operand for an instruction using the vreg. The regclass matching is done after determining the actual subregisters being copied. llvm-svn: 70298
-
Sanjiv Gupta authored
llvm-svn: 70297
-
Jakob Stoklund Olesen authored
Also make the method non-asserting. It will return NULL when given an invalid subreg index. The method is needed by an upcoming patch. llvm-svn: 70296
-
Evan Cheng authored
llvm-svn: 70291
-
Evan Cheng authored
llvm-svn: 70279
-
Bill Wendling authored
llvm-svn: 70275
-
Bill Wendling authored
use the old behavior, the flag is -O0. This change allows for finer-grained control over which optimizations are run at different -O levels. Most of this work was pretty mechanical. The majority of the fixes came from verifying that a "fast" variable wasn't used anymore. The JIT still uses a "Fast" flag. I'm not 100% sure if it's necessary to change it there... llvm-svn: 70270
-
- Apr 27, 2009
-
-
Evan Cheng authored
llvm-svn: 70245
-
Owen Anderson authored
This should have no effect on generated code, but makes the intermediate state of the coalescer more sane. llvm-svn: 70238
-
Duncan Sands authored
no-longer needed workarounds. llvm-svn: 70234
-
Nate Begeman authored
PR2957 ISD::VECTOR_SHUFFLE now stores an array of integers representing the shuffle mask internal to the node, rather than taking a BUILD_VECTOR of ConstantSDNodes as the shuffle mask. A value of -1 represents UNDEF. In addition to eliminating the creation of illegal BUILD_VECTORS just to represent shuffle masks, we are better about canonicalizing the shuffle mask, resulting in substantially better code for some classes of shuffles. llvm-svn: 70225
-
Evan Cheng authored
Fix PR4056. It's possible a physical register def is dead if its implicit use is deleted by two-address pass. llvm-svn: 70213
-
Evan Cheng authored
llvm-svn: 70212
-
Dan Gohman authored
the trunc is directly replaced with the smaller load, so don't try to create a new sext node. This fixes PR4050. llvm-svn: 70179
-
- Apr 25, 2009
-
-
Evan Cheng authored
llvm-svn: 70069
-
Dan Gohman authored
using EXTRACT_ELEMENT into a utility function. llvm-svn: 70056
-
Dan Gohman authored
llvm-svn: 70052
-
Evan Cheng authored
Do not share a single unknown val# for all the live ranges merged into a physical sub-register live interval. When coalescer is merging in clobbered virtaul register live interval into a physical register live interval, give each virtual register val# a separate val# in the physical register live interval. Otherwise, the coalescer would have lost track of the definitions information it needs to make correct coalescing decisions. llvm-svn: 70026
-
- Apr 24, 2009
-
-
Dale Johannesen authored
This particular one is undefined behavior (although this isn't related to the crash), so it will no longer do it at compile time, which seems better. llvm-svn: 69990
-
Rafael Espindola authored
llvm-svn: 69967
-
Nate Begeman authored
ISD::VECTOR_SHUFFLE now stores an array of integers representing the shuffle mask internal to the node, rather than taking a BUILD_VECTOR of ConstantSDNodes as the shuffle mask. A value of -1 represents UNDEF. In addition to eliminating the creation of illegal BUILD_VECTORS just to represent shuffle masks, we are better about canonicalizing the shuffle mask, resulting in substantially better code for some classes of shuffles. A clean up of x86 shuffle code, and some canonicalizing in DAGCombiner is next. llvm-svn: 69952
-
Dan Gohman authored
use ISD::EXTRACT_ELEMENT. SelectionDAG has a special fast-path for the cast of an EXTRACT_ELEMENT with a BUILD_PAIR operand, for the common case. llvm-svn: 69948
-
Dan Gohman authored
utility function. llvm-svn: 69937
-
Dan Gohman authored
but this change makes the code more general and easier to adapt for new purposes. llvm-svn: 69935
-
- Apr 23, 2009
-
-
Evan Cheng authored
llvm-svn: 69919
-
Evan Cheng authored
llvm-svn: 69918
-
- Apr 22, 2009
-
-
Evan Cheng authored
This fixes a very subtle bug. vr defined by an implicit_def is allowed overlap with any register since it doesn't actually modify anything. However, if it's used as a two-address use, its live range can be extended and it can be spilled. The spiller must take care not to emit a reload for the vn number that's defined by the implicit_def. This is both a correctness and performance issue. llvm-svn: 69743
-
- Apr 21, 2009
-
-
Devang Patel authored
Patch by Marius Wachtler llvm-svn: 69637
-
Dan Gohman authored
This makes the extra copyRegToReg calls in ScheduleDAGSDNodesEmit.cpp unnecessary. Derived from a patch by Jakob Stoklund Olesen. llvm-svn: 69635
-
Dan Gohman authored
broadcasted vector constants. llvm-svn: 69634
-