1
0
mirror of https://github.com/RPCS3/llvm-mirror.git synced 2024-10-22 12:33:33 +02:00
Commit Graph

14391 Commits

Author SHA1 Message Date
Devang Patel
0c927a80fe Use ValueMap instead of DenseMap.
The ValueMapper used by various cloning utility maps MDNodes also.

llvm-svn: 106706
2010-06-24 00:33:28 +00:00
Bruno Cardoso Lopes
633f345ba9 Add AVX CMP{SS,SD}{rr,rm} instructions and encoding testcases
llvm-svn: 106705
2010-06-24 00:32:06 +00:00
Bruno Cardoso Lopes
5aea735b46 Move SSE and AVX shuffle, unpack and compare code to more appropriate places
llvm-svn: 106702
2010-06-24 00:15:50 +00:00
Bill Wendling
777c025ad8 We are missing opportunites to use ldm. Take code like this:
void t(int *cp0, int *cp1, int *dp, int fmd) {
  int c0, c1, d0, d1, d2, d3;
  c0 = (*cp0++ & 0xffff) | ((*cp1++ << 16) & 0xffff0000);
  c1 = (*cp0++ & 0xffff) | ((*cp1++ << 16) & 0xffff0000);
  /* ... */
}

It code gens into something pretty bad. But with this change (analogous to the
X86 back-end), it will use ldm and generate few instructions.

llvm-svn: 106693
2010-06-23 23:00:16 +00:00
Bruno Cardoso Lopes
b1bfbacead Add AVX MOVMSK{PS,PD}rr instructions
llvm-svn: 106683
2010-06-23 21:30:27 +00:00
Bruno Cardoso Lopes
c6ac26123d Add tests for different AVX cmp opcodes, also teach the x86 asm parser to understand the vcmp instruction
llvm-svn: 106678
2010-06-23 21:10:57 +00:00
Eric Christopher
436ff8863f Update according to feedback.
llvm-svn: 106677
2010-06-23 20:49:35 +00:00
Bruno Cardoso Lopes
8cfdcf7691 Add AVX SHUF{PS,PD}{rr,rm} instructions
llvm-svn: 106672
2010-06-23 20:07:15 +00:00
Nico Weber
04606293a5 Add support for the x86 instructions "pusha" and "popa".
llvm-svn: 106671
2010-06-23 20:00:58 +00:00
Dale Johannesen
e618e80a13 Do not do tail calls to external symbols. If the
branch turns out to be ARM-to-Thumb or vice versa
the linker cannot resolve this.  8120438.

If this optimization is going to be useful we probably
need a compiler flag "assume callees are same architecture"
or something like that.

llvm-svn: 106662
2010-06-23 18:52:34 +00:00
Daniel Dunbar
be50ef88bd Revert r106263, "Fold the ShrinkDemandedOps pass into the regular DAGCombiner pass,"... it was causing both 'file' (with clang) and 176.gcc (with llvm-gcc) to be miscompiled.
llvm-svn: 106634
2010-06-23 17:09:26 +00:00
Jim Grosbach
ef4e0249a0 The generic DAG combiner can now fold atomic fences when needed, so switch
to using that.

llvm-svn: 106633
2010-06-23 16:25:07 +00:00
Jim Grosbach
414eb48a14 When using libcall expansions for the atomic intrinsics, the explicit
MEMBARRIER fences aren't necessary for ARM. Tell the combiner to fold them
away.

llvm-svn: 106631
2010-06-23 16:08:49 +00:00
Eric Christopher
c6382036ef Update uses, defs, and comments for darwin tls patterns.
llvm-svn: 106621
2010-06-23 08:01:49 +00:00
Daniel Dunbar
e6ee7409b9 Revert r106066, "Create a more targeted fix for not sinking instructions into a range where it"... it causes bzip2 to be miscompiled by Clang.
Conflicts:

	lib/CodeGen/MachineSink.cpp

llvm-svn: 106614
2010-06-23 00:48:25 +00:00
Bruno Cardoso Lopes
db9027d95d Add AVX compare packed instructions
llvm-svn: 106600
2010-06-22 23:37:59 +00:00
Bruno Cardoso Lopes
424b206ad4 Reapply support for AVX unpack and interleave instructions, with
testcases this time.

llvm-svn: 106593
2010-06-22 23:02:38 +00:00
Bruno Cardoso Lopes
93ec8dcd01 Add AVX MOV{SS,SD}{rr,rm} instructions
llvm-svn: 106588
2010-06-22 22:38:56 +00:00
Bill Wendling
c29fd1120a Fix the formatting of the switch statement and add a missing break.
llvm-svn: 106586
2010-06-22 22:16:17 +00:00
Bob Wilson
cb414cca8d Thumb1 functions using @llvm.returnaddress were not saving the incoming LR.
Radar 8031193.

llvm-svn: 106582
2010-06-22 22:04:24 +00:00
Jim Grosbach
69e4d59ce5 fix typo
llvm-svn: 106574
2010-06-22 20:52:02 +00:00
Bruno Cardoso Lopes
2cf78d18d5 Reorganize logical and arithmetic SSE 1 & 2 instructions
llvm-svn: 106557
2010-06-22 18:17:40 +00:00
Bruno Cardoso Lopes
22aca94946 Reorganize SSE instructions, making easier to see oportunities for refactoring
llvm-svn: 106556
2010-06-22 18:09:32 +00:00
Dan Gohman
74d5144414 Use pre-increment instead of post-increment when the result is not used.
llvm-svn: 106542
2010-06-22 15:08:57 +00:00
Evan Cheng
a1ebf91a39 Tail merging pass shall not break up IT blocks. rdar://8115404
llvm-svn: 106517
2010-06-22 01:18:16 +00:00
Chris Lattner
3de7445da3 make sure to initialize indent_level
llvm-svn: 106513
2010-06-22 00:40:26 +00:00
Chris Lattner
6be03758e4 add some support for blockaddress. This isn't really enough to be useful,
but it will cover uses of blockaddress that are actually in a function.

llvm-svn: 106502
2010-06-21 23:19:36 +00:00
Chris Lattner
1d76d7e9b2 eliminate a mutable global variable, use raw_ostream::indent instead of
rolling our own.

llvm-svn: 106501
2010-06-21 23:14:47 +00:00
Chris Lattner
580470b914 un-indent a huge amount of code out of an anonymous namespace.
llvm-svn: 106500
2010-06-21 23:12:56 +00:00
Bruno Cardoso Lopes
d4d53fdb7f revert r106482
llvm-svn: 106499
2010-06-21 22:59:03 +00:00
Bruno Cardoso Lopes
33256723a7 change parameter name to avoid confusion with global definition
llvm-svn: 106486
2010-06-21 21:28:07 +00:00
Bob Wilson
ef565a2ffd sign_extend_inreg needs to be expanded for pre-v6 Thumb as well as ARM.
Radar 8104310.

llvm-svn: 106484
2010-06-21 21:27:34 +00:00
Jim Grosbach
bc31f7a24b LEApcrelJT shouldn't be marked as neverHasSideEffects, as we don't want it
being moved around away from the jump table it references. rdar://8104340

llvm-svn: 106483
2010-06-21 21:27:27 +00:00
Bruno Cardoso Lopes
40debaf4b8 Add unpack and interleave AVX instructions, encoding tests cooming soon
llvm-svn: 106482
2010-06-21 21:21:48 +00:00
Evan Cheng
167a8655c7 Fix PR7421: bug in kill transferring logic. It was ignoring loads / stores which have already been processed.
llvm-svn: 106481
2010-06-21 21:21:14 +00:00
Eric Christopher
318243d2c6 Remove isTwoAddress from SystemZ.
llvm-svn: 106467
2010-06-21 20:25:57 +00:00
Eric Christopher
5b757ab002 Remove isTwoAddress from Sparc.
llvm-svn: 106466
2010-06-21 20:22:35 +00:00
Eric Christopher
caf8285bff Remove isTwoAddress from Mips.
llvm-svn: 106465
2010-06-21 20:19:21 +00:00
Eric Christopher
109380247d Remove isTwoAddress from Blackfin.
llvm-svn: 106457
2010-06-21 20:13:37 +00:00
Eric Christopher
4173fa9514 Remove isTwoAddress from MSP430.
llvm-svn: 106455
2010-06-21 20:07:30 +00:00
Eric Christopher
27afc6b948 Make 80-column.
llvm-svn: 106448
2010-06-21 18:56:55 +00:00
Eric Christopher
22c623f01c Remove isTwoAddress from PIC16.
llvm-svn: 106447
2010-06-21 18:55:01 +00:00
Eric Christopher
2dae43dbe4 Remove isTwoAddress from XCore.
llvm-svn: 106446
2010-06-21 18:51:38 +00:00
Eric Christopher
f0e2a62b21 Remove isTwoAddress from Alpha.
llvm-svn: 106445
2010-06-21 18:48:55 +00:00
Bruno Cardoso Lopes
24af70c17f Move part of SSE 1 & 2 compare, shuffle and unpack instructions closely. Preparing them for refactoring and to the addition of their AVX forms
llvm-svn: 106437
2010-06-21 18:36:04 +00:00
Bruno Cardoso Lopes
aff9b1c52f Add AVX regular (non-aliased ones) and,or,xor,andn packed instructions. They are already tested in the MC framework, no test needed
llvm-svn: 106436
2010-06-21 18:22:54 +00:00
Dale Johannesen
ef3db5dea3 Fix PR 7433. Silly typo in non-Darwin ARM tail call
handling, plus correct R9 handling in that mode.

llvm-svn: 106434
2010-06-21 18:21:49 +00:00
Eric Christopher
8909d46ea2 Add some codegen patterns for x86_64-linux-gnu tls codegen matching.
Based on a patch by Patrick Marlier!

llvm-svn: 106433
2010-06-21 18:21:27 +00:00
Jim Grosbach
e35d35fd0a early exit for dbg_value instructions
llvm-svn: 106430
2010-06-21 17:49:23 +00:00
Chris Lattner
02b23bfd33 remove some dead variables reported by clang++
llvm-svn: 106428
2010-06-21 17:20:18 +00:00