61851 Commits

Author SHA1 Message Date
Bruno Cardoso Lopes
7ae1ebd3b4 Move MOVD/MODQ code around, creating sections for each of them
llvm-svn: 107308
2010-06-30 18:49:10 +00:00
Jakob Stoklund Olesen
0abff9e23e Some fool committed without testing (or even building) first.
llvm-svn: 107307
2010-06-30 18:41:20 +00:00
Bruno Cardoso Lopes
f8855c22be Add AVX SSE2 mask creation and conditional store instructions
llvm-svn: 107306
2010-06-30 18:38:10 +00:00
Jakob Stoklund Olesen
38c76cc88a Remember to track spill slot uses in VirtRegMap when inserting loads and stores.
LocalRewriter::runOnMachineFunction uses this information to mark dead spill
slots.

This means that InlineSpiller now also works for functions that spill.

llvm-svn: 107302
2010-06-30 18:19:08 +00:00
Bruno Cardoso Lopes
6c468039a2 Fix a bug introduced in r107211 where instructions with memory operands are declared as commutable
llvm-svn: 107300
2010-06-30 18:06:01 +00:00
Dan Gohman
683a9e2498 Revert the part of r107257 which introduced new logic for using
nsw and nuw flags from IR Instructions. On further consideration,
this isn't valid.

llvm-svn: 107298
2010-06-30 17:27:11 +00:00
Duncan Sands
b79597c3e9 Rename NextPowerOfTwo to RoundUpToPowerOfTwo.
llvm-svn: 107297
2010-06-30 17:24:28 +00:00
Duncan Sands
78ad152ca0 Remove an unused variable. The call to getRoot has side-effects, so
this could break something (but doesn't seem to).

llvm-svn: 107295
2010-06-30 17:22:28 +00:00
Bruno Cardoso Lopes
3c02702830 Add AVX SSE2 packed integer extract/insert instructions
llvm-svn: 107293
2010-06-30 17:03:03 +00:00
Duncan Sands
8ffa4b43c8 Clarify that the NextPowerOfTwo template is idempotent.
llvm-svn: 107286
2010-06-30 15:29:46 +00:00
Duncan Sands
de6d3111d0 Rather than giving SmallPtrSetImpl a member field SmallArray which is magically
replaced by a bigger array in SmallPtrSet (by overridding it), instead just use a
pointer to the start of the storage, and have SmallPtrSet pass in the value to use.
This has the disadvantage that SmallPtrSet becomes bigger by one pointer.  It has
the advantage that it no longer uses tricky C++ rules, and is clearly correct while
I'm not sure the previous version was.  This was inspired by g++-4.6 pointing out
that SmallPtrSetImpl was writing off the end of SmallArray, which it was.  Since
SmallArray is replaced with a bigger array in SmallPtrSet, the write was still to
valid memory.  But it was writing off the end of the declared array type - sounds
kind of dubious to me, like it sounded dubious to g++-4.6.  Maybe g++-4.6 is wrong
and this construct is perfectly valid and correctly compiled by all compilers, but
I think it is better to avoid the whole can of worms by avoiding this construct.

llvm-svn: 107285
2010-06-30 15:02:37 +00:00
Gabor Greif
551de3f490 use ArgOperand API
llvm-svn: 107282
2010-06-30 13:45:50 +00:00
Gabor Greif
fdaf0459be use ArgOperand API
llvm-svn: 107280
2010-06-30 13:03:37 +00:00
Gabor Greif
398d23a2de use ArgOperand API
llvm-svn: 107279
2010-06-30 12:55:46 +00:00
Gabor Greif
016e24ce4c use ArgOperand API
llvm-svn: 107278
2010-06-30 12:42:43 +00:00
Gabor Greif
c0b5e221cb use ArgOperand API
llvm-svn: 107277
2010-06-30 12:40:35 +00:00
Gabor Greif
bc12c24662 use CallSite::arg_end instead of CallInst::op_end
llvm-svn: 107276
2010-06-30 12:39:23 +00:00
Gabor Greif
e315b7db00 use getArgOperand (corrected by CallInst::ArgOffset) instead of getOperand
llvm-svn: 107275
2010-06-30 12:38:26 +00:00
Gabor Greif
ed5dd5198a use getArgOperand (corrected by CallInst::ArgOffset) instead of getOperand
llvm-svn: 107273
2010-06-30 09:19:23 +00:00
Gabor Greif
8719d680ef use getNumArgOperands instead of getNumOperands
llvm-svn: 107272
2010-06-30 09:17:53 +00:00
Gabor Greif
b6e59f4a82 use getArgOperand instead of getOperand
llvm-svn: 107271
2010-06-30 09:16:16 +00:00
Gabor Greif
abeab11279 use getArgOperand instead of getOperand
llvm-svn: 107270
2010-06-30 09:15:28 +00:00
Gabor Greif
a77e545e60 use getArgOperand instead of getOperand
llvm-svn: 107269
2010-06-30 09:14:26 +00:00
Dan Gohman
6e7eecf743 Add a testcase for scev-aa's new capability.
llvm-svn: 107258
2010-06-30 07:17:47 +00:00
Dan Gohman
b7fc09a156 Improve ScalarEvolution's nsw and nuw preservation.
llvm-svn: 107257
2010-06-30 07:16:37 +00:00
Dan Gohman
7446416058 When computing a new ConservativeResult, intersect it with
the old one instead of replacing it, to be more precise.

llvm-svn: 107256
2010-06-30 06:58:35 +00:00
Dan Gohman
2112bbf184 Rework scev-aa's basic computation so that it doesn't depend
on ScalarEvolution successfully folding and preserving
range information for both A-B and B-A. Now, if it gets
either one, it's sufficient.

llvm-svn: 107249
2010-06-30 06:12:16 +00:00
Dan Gohman
01304ebfad Simplify.
llvm-svn: 107248
2010-06-30 06:09:46 +00:00
Bruno Cardoso Lopes
39594cc5d0 Add AVX SSE2 integer unpack instructions
llvm-svn: 107246
2010-06-30 04:06:39 +00:00
Bruno Cardoso Lopes
419f8f29c3 Add AVX SSE2 packed integer shuffle instructions
llvm-svn: 107245
2010-06-30 03:47:56 +00:00
John Mosby
1e4673d2d7 Remove trailing whitespace, no functionality changes.
llvm-svn: 107244
2010-06-30 03:40:54 +00:00
Bruno Cardoso Lopes
c2f5cd2389 Small refactoring of SSE2 packed integer shuffle instructions
llvm-svn: 107243
2010-06-30 03:29:36 +00:00
Bruno Cardoso Lopes
d9acb34aa2 Add AVX SSE2 pack with saturation integer instructions
llvm-svn: 107241
2010-06-30 02:30:25 +00:00
Bruno Cardoso Lopes
c470ba9937 Add AVX SSE2 integer packed compare instructions
llvm-svn: 107240
2010-06-30 02:21:09 +00:00
Bruno Cardoso Lopes
cfbebb3921 - Add AVX form of all SSE2 logical instructions
- Add VEX encoding bits to x86 MRM0r-MRM7r

llvm-svn: 107238
2010-06-30 01:58:37 +00:00
Devang Patel
00ee7ba38c Do not construct DIE for already processed MDNode.
llvm-svn: 107237
2010-06-30 01:40:11 +00:00
Jakob Stoklund Olesen
89ffbab6ef Use skipInstruction() as a simpler way of iterating over instructions using SrcReg
llvm-svn: 107234
2010-06-30 00:30:36 +00:00
Jakob Stoklund Olesen
d5d744567a Use clEnumValN macro to work around keyword clash
llvm-svn: 107233
2010-06-30 00:24:51 +00:00
Devang Patel
93e5e9bd19 Add variables into a scope before constructing scope DIE otherwise variables won't be included DIE tree.
llvm-svn: 107228
2010-06-30 00:11:08 +00:00
Jakob Stoklund Olesen
8918e475af Begin implementation of an inline spiller.
InlineSpiller inserts loads and spills immediately instead of deferring to
VirtRegMap. This is possible now because SlotIndexes allows instructions to be
inserted and renumbered.

This is work in progress, and is mostly a copy of TrivialSpiller so far. It
works very well for functions that don't require spilling.

llvm-svn: 107227
2010-06-29 23:58:39 +00:00
Bruno Cardoso Lopes
2439877e05 Add *several* AVX integer packed binop instructions
llvm-svn: 107225
2010-06-29 23:47:49 +00:00
Dan Gohman
32534063c7 Fix ScalarEvolution's tripcount computation for chains of loops
where each loop's induction variable's start value is the exit
value of a preceding loop.

llvm-svn: 107224
2010-06-29 23:43:06 +00:00
Bill Wendling
59ef9bcc6d Revert r107205 and r107207.
llvm-svn: 107215
2010-06-29 22:34:52 +00:00
Devang Patel
6d7cc07644 Print InlinedAt location.
llvm-svn: 107214
2010-06-29 22:29:15 +00:00
Eric Christopher
4c54014a1e Add another bswap idiom that isn't matched.
llvm-svn: 107213
2010-06-29 22:22:22 +00:00
Bill Wendling
9dd05b0bf0 Use -l option to remove symbols from i386.
llvm-svn: 107212
2010-06-29 22:17:37 +00:00
Bruno Cardoso Lopes
b80121d316 Move SSE2 Packed Integer instructions around, and create specific sections for each of them
llvm-svn: 107211
2010-06-29 22:12:16 +00:00
Devang Patel
1fbf5e861e Print InlinedAt location.
llvm-svn: 107208
2010-06-29 21:51:32 +00:00
Bill Wendling
462de20dd8 Improve explanation.
llvm-svn: 107207
2010-06-29 21:41:58 +00:00
Bruno Cardoso Lopes
45e0ab4762 Add AVX Move Aligned/Unaligned packed integers
llvm-svn: 107206
2010-06-29 21:25:12 +00:00