Jim Grosbach
095a0ae3f3
Remove unused forward declaration.
...
llvm-svn: 137734
2011-08-16 18:31:36 +00:00
Bruno Cardoso Lopes
d64294fb0a
Instead of always leaving the work to the generic legalizer when
...
there is no support for native 256-bit shuffles, be more smart in some
cases, for example, when you can extract specific 128-bit parts and use
regular 128-bit shuffles for them. Example:
For this shuffle:
shufflevector <4 x i64> %a, <4 x i64> %b, <4 x i32>
<i32 1, i32 0, i32 7, i32 6>
This was expanded to:
vextractf128 $1, %ymm1, %xmm2
vpextrq $0, %xmm2, %rax
vmovd %rax, %xmm1
vpextrq $1, %xmm2, %rax
vmovd %rax, %xmm2
vpunpcklqdq %xmm1, %xmm2, %xmm1
vpextrq $0, %xmm0, %rax
vmovd %rax, %xmm2
vpextrq $1, %xmm0, %rax
vmovd %rax, %xmm0
vpunpcklqdq %xmm2, %xmm0, %xmm0
vinsertf128 $1, %xmm1, %ymm0, %ymm0
ret
Now we get:
vshufpd $1, %xmm0, %xmm0, %xmm0
vextractf128 $1, %ymm1, %xmm1
vshufpd $1, %xmm1, %xmm1, %xmm1
vinsertf128 $1, %xmm1, %ymm0, %ymm0
llvm-svn: 137733
2011-08-16 18:21:54 +00:00
Devang Patel
28ad105008
Remove unnecessary version check.
...
llvm-svn: 137728
2011-08-16 17:41:41 +00:00
Akira Hatanaka
dcbf455b98
Add test case for r137711.
...
llvm-svn: 137725
2011-08-16 17:32:01 +00:00
Jim Grosbach
90387c44f4
ARM .align NOP padding uses different encoding pre-ARMv6.
...
Patch by Kristof Beyls and James Malloy.
llvm-svn: 137723
2011-08-16 17:06:20 +00:00
Jim Grosbach
445c83b31e
Tidy up. Trailing whitespace.
...
llvm-svn: 137721
2011-08-16 16:38:17 +00:00
Nadav Rotem
7b211baed3
Revert r137562 because it caused PR10674
...
llvm-svn: 137719
2011-08-16 14:34:29 +00:00
David Chisnall
cfbcd5cf21
Add a mechanism for optimisation plugins to register passes that all front ends can use without needing to be aware of the plugin (or the plugin be aware of the front end).
...
Before 3.0, I'd like to add a mechanism for automatically loading a set of plugins from a config file. API suggestions welcome...
llvm-svn: 137717
2011-08-16 13:58:41 +00:00
Rafael Espindola
697b91ccef
Remove unimplemented method. Fixes PR10658.
...
Thanks to Jonas Gafele for noticing.
llvm-svn: 137716
2011-08-16 13:53:50 +00:00
NAKAMURA Takumi
83bca4179b
cmake/modules/FindBison.cmake: It must be unneeded any more.
...
llvm-svn: 137715
2011-08-16 11:10:54 +00:00
Bill Wendling
3e159bd43d
A few places where we want to skip the landingpad instruction for insertion.
...
llvm-svn: 137712
2011-08-16 04:52:55 +00:00
Akira Hatanaka
12df91513e
Fix handling of double precision loads and stores when Mips1 is targeted.
...
Mips1 does not support double precision loads or stores, therefore two single
precision loads or stores must be used in place of these instructions. This
patch treats double precision loads and stores as if they are legal
instructions until MCInstLowering, instead of generating the single precision
instructions during instruction selection or Prolog/Epilog code insertion.
Without the changes made in this patch, llc produces code that has the same
problem described in r137484 or bails out when
MipsInstrInfo::storeRegToStackSlot or loadRegFromStackSlot is called before
register allocation.
llvm-svn: 137711
2011-08-16 03:51:51 +00:00
Akira Hatanaka
d8865ea155
Define function MipsMCInstLower::LowerOperand.
...
llvm-svn: 137707
2011-08-16 02:21:03 +00:00
Akira Hatanaka
1e1909b7c8
Add parameter Offset to MipsMCInstLower::LowerSymbolOperand.
...
llvm-svn: 137706
2011-08-16 02:15:03 +00:00
Eli Friedman
6e402678c8
Fix test.
...
llvm-svn: 137703
2011-08-16 01:42:56 +00:00
Eli Friedman
66e399697a
Revert a bit of r137667; the logic in question can safely handle atomic load/store.
...
llvm-svn: 137702
2011-08-16 01:28:22 +00:00
Eric Christopher
a1ecf16bfd
Migrate this test from llvm/test/FrontendC++/ptr-to-method-devirt.cpp and
...
FileCheckize. It is more properly an optimizer test.
llvm-svn: 137700
2011-08-16 01:17:17 +00:00
Eli Friedman
f969dabf83
After talking with Bill, it seems like the LandingPad handling here is likely
...
to be wrong (or at least somewhat suspect). Leave a FIXME for Bill.
llvm-svn: 137694
2011-08-16 00:41:37 +00:00
Eli Friedman
eb7e5209e5
Minor comment fixes.
...
llvm-svn: 137693
2011-08-16 00:20:11 +00:00
Eli Friedman
6a475e691d
Update SimplifyCFG for atomic operations.
...
This commit includes a mention of the landingpad instruction, but it's not
changing the behavior around it. I think the current behavior is correct,
though. Bill, can you double-check that?
llvm-svn: 137691
2011-08-15 23:59:28 +00:00
Eli Friedman
f0e7c084ea
Add comments and test for atomic load/store and mem2reg.
...
llvm-svn: 137690
2011-08-15 23:55:52 +00:00
Devang Patel
00c82827ab
Refactor.
...
llvm-svn: 137689
2011-08-15 23:47:24 +00:00
Owen Anderson
6549866051
Add a test file for Thumb2 NEON.
...
llvm-svn: 137687
2011-08-15 23:42:20 +00:00
Owen Anderson
2e722e7cd4
Specify a necessary fixed bit for VLD3DUP, and otherwise rearrange the Thumb2 NEON decoding hooks to bring us closer to correctness.
...
llvm-svn: 137686
2011-08-15 23:38:54 +00:00
Bruno Cardoso Lopes
f026c60f3d
While I'm here, remove the "_alt" hacks to a series of INSERT_SUBREG and
...
also add the AVX versions of the 128-bit patterns
llvm-svn: 137685
2011-08-15 23:36:51 +00:00
Bruno Cardoso Lopes
1e817d1451
Reorder declarations of vmovmskp* and also put the necessary AVX
...
predicate and TB encoding fields. This fix the encoding for the
attached testcase. This fixes PR10625.
llvm-svn: 137684
2011-08-15 23:36:45 +00:00
Devang Patel
822410da56
Continue to hoist uses of getCompileUnit() up. The goal is to get rid of uses of getCompileUnit().
...
llvm-svn: 137683
2011-08-15 23:36:40 +00:00
Bob Wilson
b9df018555
Avoid evaluating Neon macro arguments more than once by disabling type checks.
...
It turns out that the use of "__extension__" in these macros was disabling
the expected "incompatible pointer" warnings, so these type checks were not
doing anything anyway. They introduced a serious bug by evaluating some
macro arguments twice, which is a big problem for arguments with side effects.
I'll have to find another way to get the right type checking. Radar 9947657.
llvm-svn: 137680
2011-08-15 23:22:56 +00:00
Bill Wendling
3a5b0249c3
In places where it's using "getFirstNonPHI", skip the landingpad instruction if necessary.
...
llvm-svn: 137679
2011-08-15 23:19:54 +00:00
Jim Grosbach
31c0c9a1f6
MCTargetAsmParser target match predicate support.
...
Allow a target assembly parser to do context sensitive constraint checking
on a potential instruction match. This will be used, for example, to handle
Thumb2 IT block parsing.
llvm-svn: 137675
2011-08-15 23:03:29 +00:00
Devang Patel
f1b61abc8c
Add a finalize() hook, that'll let DIBuilder construct compile unit lazily.
...
llvm-svn: 137673
2011-08-15 23:00:00 +00:00
Bill Wendling
3016a47ed2
Don't sink the instruction to before a landingpad instruction.
...
llvm-svn: 137672
2011-08-15 22:53:05 +00:00
Devang Patel
e0aa92d509
This is somewhat déjà-vu, but avoid using getCompileUnit() as much as possible.
...
llvm-svn: 137668
2011-08-15 22:24:32 +00:00
Eli Friedman
fdd5480178
Update inter-procedural optimizations for atomic load/store.
...
llvm-svn: 137667
2011-08-15 22:16:46 +00:00
Eli Friedman
36ef5fd140
Update instcombine for atomic load/store.
...
llvm-svn: 137664
2011-08-15 22:09:40 +00:00
Devang Patel
8fe83ecaf3
Refactor. Variables are part of compile unit so let CompileUnit create new variable.
...
llvm-svn: 137663
2011-08-15 22:04:40 +00:00
Eli Friedman
a88908f4e7
Add some comments here because the lack of a check for volatile/atomic here is a bit unusual.
...
llvm-svn: 137662
2011-08-15 21:56:39 +00:00
Bruno Cardoso Lopes
b81c3ed76d
Fix PR10656. It's only profitable to use 128-bit inserts and extracts
...
when AVX mode is one. Otherwise is just more work for the type
legalizer.
llvm-svn: 137661
2011-08-15 21:45:54 +00:00
Devang Patel
f5e3a86ea0
There is no need to maintain a set to keep track of variables that use location expressions. In such cases, AT_location attribute's value will be a label.
...
llvm-svn: 137659
2011-08-15 21:43:21 +00:00
Devang Patel
9ea2ce9b7b
Fix warning.
...
llvm-svn: 137658
2011-08-15 21:35:16 +00:00
Owen Anderson
54ded8463c
Add some more comprehensive VFP decoding tests.
...
llvm-svn: 137657
2011-08-15 21:29:01 +00:00
Devang Patel
1113107823
Simplify. Let DbgVariable keep track of variable's DBG_VALUE machine instruction.
...
llvm-svn: 137656
2011-08-15 21:24:36 +00:00
Bill Wendling
a75d2d0416
Duncan pointed out that the LandingPadInst might read memory. (It might also
...
write to memory.) Marking it as such makes some checks for immobility go away.
llvm-svn: 137655
2011-08-15 21:14:31 +00:00
Eli Friedman
b25f5aeda5
Fix llvm::CloneModule to correctly clone globals. Patch per bug report by Simon Moll on llvmdev.
...
llvm-svn: 137654
2011-08-15 21:05:06 +00:00
Eli Friedman
bfebfae6f6
Fix predicates methods on Instruction to handle atomic load/store correctly.
...
llvm-svn: 137652
2011-08-15 21:00:18 +00:00
Eric Christopher
1bb5eaa978
Fix this test to avoid leaving a temporary file behind.
...
llvm-svn: 137651
2011-08-15 20:55:03 +00:00
Eli Friedman
5acfaeab2d
Misc analysis passes that need to be aware of atomic load/store.
...
llvm-svn: 137650
2011-08-15 20:54:19 +00:00
Jim Grosbach
bc7725aa09
Move MatchResultTy enum into base class definition.
...
No need for it to be redefined as part of every derived target asm parser
class.
llvm-svn: 137649
2011-08-15 20:53:08 +00:00
Eli Friedman
e18709e5b2
Atomic load/store support in LICM.
...
llvm-svn: 137648
2011-08-15 20:52:09 +00:00
Owen Anderson
42946000dd
Enforce the constraint that Rt must be even on LDRD/STRD instructions in ARM mode. Update tests to reflect this fact.
...
Patch by James Molloy.
llvm-svn: 137647
2011-08-15 20:51:32 +00:00