- Jul 01, 2011
-
-
Dan Gohman authored
llvm-svn: 134223
-
Eric Christopher authored
supporting the instruction that the constraint is for 'movw'. Part of rdar://9119939 llvm-svn: 134222
-
Dan Gohman authored
llvm-svn: 134221
-
Eric Christopher authored
for the 'x' register constraint. Part of rdar://9119939 llvm-svn: 134220
-
Evan Cheng authored
llvm-svn: 134219
-
Eric Christopher authored
Part of rdar://9119939 llvm-svn: 134217
-
Rafael Espindola authored
llvm-svn: 134216
-
Eric Christopher authored
Part of rdar://9307836 and rdar://9119939 llvm-svn: 134215
-
Bill Wendling authored
llvm-svn: 134212
-
Eric Christopher authored
llvm-svn: 134211
-
Eric Christopher authored
llvm-svn: 134210
-
Bill Wendling authored
llvm-svn: 134209
-
Bill Wendling authored
llvm-svn: 134208
-
Jakob Stoklund Olesen authored
We would put the return value from long double functions in the wrong register. This fixes gcc.c-torture/execute/conversion.c llvm-svn: 134205
-
Jim Grosbach authored
Merge the tMOVr, tMOVgpr2tgpr, tMOVtgpr2gpr, and tMOVgpr2gpr instructions into tMOVr. There's no need to keep them separate. Giving the tMOVr instruction the proper GPR register class for its operands is sufficient to give the register allocator enough information to do the right thing directly. llvm-svn: 134204
-
Eric Christopher authored
Part of rdar://9119939 llvm-svn: 134203
-
Bill Wendling authored
encoding for the registers it knows about. Return -1 if it can't handle that register. llvm-svn: 134202
-
Rafael Espindola authored
llvm-svn: 134201
-
Bill Wendling authored
llvm-svn: 134200
-
Rafael Espindola authored
A = X B = X Instead, proceed as if we had found A = X B = A llvm-svn: 134199
-
Eric Christopher authored
No functional change. Part of rdar://9119939 llvm-svn: 134198
-
Jim Grosbach authored
Fix a FIXME and allow predication (in Thumb2) for the T1 register to register MOV instructions. This allows some better codegen with if-conversion (as seen in the test updates), plus it lays the groundwork for pseudo-izing the tMOVCC instructions. llvm-svn: 134197
-
Bill Wendling authored
llvm-svn: 134196
-
- Jun 30, 2011
-
-
Bill Wendling authored
llvm-svn: 134194
-
Jakob Stoklund Olesen authored
llvm-svn: 134193
-
Bill Wendling authored
llvm-svn: 134191
-
Rafael Espindola authored
llvm-svn: 134189
-
Rafael Espindola authored
nodes. Original message: Let simplify cfg simplify bb with only debug and lifetime intrinsics. llvm-svn: 134182
-
Jim Grosbach authored
It's just a call to a special helper function. Get rid of the T2 variant entirely, as it's identical to the Thumb1 version. llvm-svn: 134178
-
Andrew Trick authored
llvm-svn: 134177
-
Jim Grosbach authored
It's just a t2LDMIA_UPD instruction with extra codegen properties, so it doesn't need the encoding information. As a side-benefit, we now correctly recognize for instruction printing as a 'pop' instruction. llvm-svn: 134173
-
Jim Grosbach authored
It's just a tPOP instruction with additional code-gen properties, so it doesn't need encoding information. llvm-svn: 134172
-
Rafael Espindola authored
llvm-svn: 134148
-
Duncan Sands authored
llvm-svn: 134134
-
Jim Grosbach authored
llvm-svn: 134131
-
Jim Grosbach authored
tADDrSPi is not predicable, so we can't size-reduce a t2ADDri to it if the predicate is anything other than "always." llvm-svn: 134130
-
Evan Cheng authored
llvm-svn: 134129
-
Evan Cheng authored
be the first encoded as the first feature. It then uses the CPU name to look up features / scheduling itineray even though clients know full well the CPU name being used to query these properties. The fix is to just have the clients explictly pass the CPU name! llvm-svn: 134127
-
Joerg Sonnenberger authored
llvm-svn: 134126
-
Jakob Stoklund Olesen authored
This patch will sometimes choose live range split points next to interference instead of always splitting next to a register point. That means spill code can now appear almost anywhere, and it was necessary to fix code that didn't expect that. The difficult places were: - Between a CALL returning a value on the x87 stack and the corresponding FpPOP_RETVAL (was FpGET_ST0). Probably also near x87 inline assembly, but that didn't actually show up in testing. - Between a CALL popping arguments off the stack and the corresponding ADJCALLSTACKUP. Both are fixed now. The only place spill code can't appear is after terminators, see SplitAnalysis::getLastSplitPoint. Original commit message: Rewrite RAGreedy::splitAroundRegion, now with cool ASCII art. This function has to deal with a lot of special cases, and the old version got it wrong sometimes. In particular, it would sometimes leave multiple uses in the stack interval in a single block. That causes bad code with multiple reloads in the same basic block. The new version handles block entry and exit in a single pass. It first eliminates all the easy cases, and then goes on to create a local interval for the blocks with difficult interference. Previously, we would only create the local interval for completely isolated blocks. It can happen that the stack interval becomes completely empty because we could allocate a register in all edge bundles, and the new local intervals deal with the interference. The empty stack interval is harmless, but we need to remove a SplitKit assertion that checks for empty intervals. llvm-svn: 134125
-