Commit Graph

75846 Commits

Author SHA1 Message Date
Jim Grosbach 0be3ede9e1 Thumb2 assembly parsing and encoding for SBFX.
llvm-svn: 139858
2011-09-15 21:58:42 +00:00
Bruno Cardoso Lopes 6b302955b1 Factor out partial register update checks for some SSE instructions.
Also add the AVX versions and add comments!

llvm-svn: 139854
2011-09-15 21:42:23 +00:00
Eli Friedman ee8f14a799 Some legalization fixes for atomic load and store.
llvm-svn: 139851
2011-09-15 21:20:49 +00:00
Benjamin Kramer 4d9924f950 llvm-dwarfdump: Add an option to print out line info for a specific address
Usage:
$ llvm-dwarfdump -address=0x0000000100000ed4 a.out.dSYM/Contents/Resources/DWARF/a.out 
xxx.c:6:0

llvm-svn: 139850
2011-09-15 21:17:40 +00:00
Jim Grosbach d2868cf016 Add some missing 'CHECK' lines and tidy up others.
llvm-svn: 139849
2011-09-15 21:17:38 +00:00
Benjamin Kramer 49fc9ddae6 CommandLine: Add support for 64 bit unsigned integer options.
llvm-svn: 139848
2011-09-15 21:17:37 +00:00
Benjamin Kramer 901339d070 DWARF: Don't crash when looking up an invalid address.
llvm-svn: 139846
2011-09-15 21:08:54 +00:00
Jakob Stoklund Olesen bceb9e5c05 Add an option to disable spill hoisting.
When -split-spill-mode is enabled, spill hoisting is performed by
SplitKit instead of by InlineSpiller.  This hidden command line option
is for testing the splitter spill mode.

llvm-svn: 139845
2011-09-15 21:06:00 +00:00
Jim Grosbach 8620d97ad9 Thumb2 assembly parsing and encoding for SBC.
llvm-svn: 139844
2011-09-15 21:04:10 +00:00
Jim Grosbach 10725a202b Thumb2 assembly parsing and encoding for SASX.
llvm-svn: 139843
2011-09-15 21:01:23 +00:00
Andrew Trick 74111ee07f Reapply r139759. Disable IV rewriting by default. See PR10916.
llvm-svn: 139842
2011-09-15 20:58:37 +00:00
Jim Grosbach 4e91164049 Thumb2 assembly parsing and encoding for SADD16/SADD8.
llvm-svn: 139841
2011-09-15 20:57:39 +00:00
Jim Grosbach eaa5265285 Thumb2 assembly parsing and encoding for RSB.
llvm-svn: 139839
2011-09-15 20:54:14 +00:00
Benjamin Kramer 2602ca67e8 DWARF: Put all the pieces we have together and provide a single accessor to DIContext that provides line information when given an address.
llvm-svn: 139836
2011-09-15 20:43:22 +00:00
Benjamin Kramer 679e1752f8 DWARF: Remove accessors that parse the whole line table section in one go, this can't possibly work.
The address size is specified by the compile unit associated with a line table, there is no global address size.

llvm-svn: 139835
2011-09-15 20:43:18 +00:00
Jim Grosbach 82dd698575 Thumb2 assembly parsing and encoding for RRX.
llvm-svn: 139831
2011-09-15 19:52:43 +00:00
Jim Grosbach 8082169d7c Thumb2 assembly parsing and encoding for ROR.
llvm-svn: 139830
2011-09-15 19:50:04 +00:00
Jim Grosbach 4cbe06e7f8 Thumb2 assembly parsing and encoding for REV16/REVSH.
llvm-svn: 139828
2011-09-15 19:46:13 +00:00
Owen Anderson 233f130101 The the MC disassembler C API to print in verbose mode. Perhaps there should be a parameter to request verbose mode?
llvm-svn: 139821
2011-09-15 18:37:20 +00:00
Owen Anderson d1814791ad Add support for stored annotations to MCInst, and provide facilities for MC-based InstPrinters to print them out. Enhance the ARM and X86 InstPrinter's to do so in verbose mode.
llvm-svn: 139820
2011-09-15 18:36:29 +00:00
Jakob Stoklund Olesen 53e2e48de7 VirtRegMap is counting spill slots, not register spills.
Fix the stats counters to reflect that.

llvm-svn: 139819
2011-09-15 18:31:13 +00:00
Bruno Cardoso Lopes fa1ca3070b Change all checks regarding the presence of any SSE level to always
take into consideration the presence of AVX. This change, together with
the SSEDomainFix enabled for AVX, makes AVX codegen to always (hopefully)
emit the same code as SSE for 128-bit vector ops. I don't
have a testcase for this, but AVX now beats SSE in performance for
128-bit ops in the majority of programas in the llvm testsuite

llvm-svn: 139817
2011-09-15 18:27:36 +00:00
Bruno Cardoso Lopes 62d79875d3 Enable SSEDomainFix pass for AVX mode.
llvm-svn: 139816
2011-09-15 18:27:32 +00:00
Jakob Stoklund Olesen c94c967656 Count correctly when a COPY turns into a spill or reload.
The number of spills could go negative since a folded COPY is just a
spill, and it may be eliminated.

llvm-svn: 139815
2011-09-15 18:22:52 +00:00
Jim Grosbach ab154f0b65 Thumb2 assembly parsing and encoding for REV.
llvm-svn: 139813
2011-09-15 18:13:30 +00:00
Jim Grosbach 5c5c42bf76 Thumb2 assembly parsing and encoding for RBIT.
llvm-svn: 139811
2011-09-15 18:07:14 +00:00
Jim Grosbach 5e18a31da4 Thumb2 assembly parsing and encoding for signed saturating arithmetic insns.
llvm-svn: 139810
2011-09-15 18:06:15 +00:00
Benjamin Kramer 6dda032003 DWARF: Print line tables per compile unit, so they get the right address size.
llvm-svn: 139808
2011-09-15 18:02:20 +00:00
Jim Grosbach ebdf32f907 Assmebler symbol attribute directives don't work on temporary symbols.
Assembler private local symbols aren't legal targets of symbol attributes,
so issue a diagnostic for them.

Based on patch by Stepan Dyatkovskiy.

llvm-svn: 139807
2011-09-15 17:56:49 +00:00
Jakob Stoklund Olesen 37eb6962c6 Count inserted spills and reloads more accurately.
Adjust counters when removing spill and reload instructions.

We still don't account for reloads being removed by eliminateDeadDefs().

llvm-svn: 139806
2011-09-15 17:54:28 +00:00
Benjamin Kramer 07d4b1c455 DWARF: wire up .debug_str dumping.
llvm-svn: 139799
2011-09-15 16:57:13 +00:00
Jim Grosbach a9aa3c18e3 Handle missing newline at EOF more gracefully in MC AsmLexer.
If we see an EOF w/o a preceding end-of-line, return an EndOfStatement
token before returning the Eof token.

Based on patch by Stepan Dyatkovskiy.

llvm-svn: 139798
2011-09-15 16:52:06 +00:00
Jakob Stoklund Olesen 07b3503f8b Trace through sibling PHIs in bulk.
When traceSiblingValue() encounters a PHI-def value created by live
range splitting, don't look at all the predecessor blocks.  That can be
very expensive in a complicated CFG.

Instead, consider that all the non-PHI defs jointly dominate all the
PHI-defs.  Tracing directly to all the non-PHI defs is much faster that
zipping around in the CFG when there are many PHIs with many
predecessors.

This significantly improves compile time for indirectbr interpreters.

llvm-svn: 139797
2011-09-15 16:41:12 +00:00
Jim Grosbach d93c4ece15 ARM support the pre-UAL mnemonic 'qsubaddx' for 'qsax.'
llvm-svn: 139796
2011-09-15 16:16:50 +00:00
Jim Grosbach 3661859214 Re-order test.
llvm-svn: 139795
2011-09-15 16:04:13 +00:00
Jim Grosbach 22f76390a6 Thumb2 push/pop mnemonic recognition.
llvm-svn: 139794
2011-09-15 15:55:04 +00:00
Jakob Stoklund Olesen ae4471af1b Use getPrevSlot() instead of getPrevIndex().
The getPrevIndex() function moves to the same slot in the previous
instruction.  For getVNInfoBefore(), we just need the previous slot in
the same instruction.

llvm-svn: 139793
2011-09-15 15:31:49 +00:00
Jakob Stoklund Olesen b8b1d4c435 Speed up LiveIntervals::shrinkToUse with some caching.
Blocks with multiple PHI successors only need to go on the worklist
once.  Use a SmallPtrSet to track the live-out blocks that have already
been handled.  This is a lot faster than the two live range check we
would otherwise do.

Also stop recomputing hasPHIKill flags.  Like RenumberValues(), it is
conservatively correct to leave them in, and they are not used for
anything important.

llvm-svn: 139792
2011-09-15 15:24:16 +00:00
Jakob Stoklund Olesen fb75d78d33 Revert r139782, "RemoveCopyByCommutingDef doesn't need hasPHIKill()."
It does, after all.

RemoveCopyByCommutingDef rewrites the uses of one particular value
number in A. It doesn't know how to rewrite phi uses, so there can't be
any.

llvm-svn: 139787
2011-09-15 06:27:32 +00:00
Benjamin Kramer 9bca64ff2a DWARF: Make DIE printing more bulletproof.
llvm-svn: 139786
2011-09-15 05:43:00 +00:00
Nick Lewycky e8cdaddcf8 Despite what the GCC wiki says, a quick search shows that
DW_AT_GNU_template_name = 0x2110, not 0x2108. That would explain those 
attr #0x2110 under the DW_TAG_GNU_template_template_param I'm seeing. Migrate
from documented values to reality.

llvm-svn: 139785
2011-09-15 05:30:55 +00:00
Nick Lewycky ee674b3e3b Add some more DWARF extensions from:
1. http://gcc.gnu.org/wiki/TemplateParmsDwarf
2. ftp://ftp.software.ibm.com/software/os390/czos/dwarf/mips_extensions.pdf

llvm-svn: 139784
2011-09-15 05:21:03 +00:00
Jakob Stoklund Olesen 4c099551f9 Stop verifying hasPHIKill() flags.
There is only one legitimate use remaining, in addIntervalsForSpills().
All other calls to hasPHIKill() are only used to update PHIKill flags.

The addIntervalsForSpills() function is part of the old spilling
framework, only used by linearscan.

llvm-svn: 139783
2011-09-15 05:16:30 +00:00
Jakob Stoklund Olesen 0499e7bbd0 RemoveCopyByCommutingDef doesn't need hasPHIKill().
Instead, let HasOtherReachingDefs() test for defs in B that overlap any
phi-defs in A as well.  This test is slightly different, but almost
identical.

A perfectly precise test would only check those phi-defs in A that are
reachable from AValNo.

llvm-svn: 139782
2011-09-15 05:03:50 +00:00
Jakob Stoklund Olesen dca022e377 It is safe to remat a value killed by phis.
The source live range is recomputed using shrinkToUses() which does
handle phis correctly.  The hasPHIKill() condition was relevant in the
old days when ReMaterializeTrivialDef() tried to recompute the live
range itself.

The shrinkToUses() function will mark the original def as dead when no
more uses and phi kills remain.  It is then removed by
runOnMachineFunction().

llvm-svn: 139781
2011-09-15 04:52:06 +00:00
Jakob Stoklund Olesen e7ca8ecd92 Leave hasPHIKill flags alone in LiveInterval::RenumberValues.
It is conservatively correct to keep the hasPHIKill flags, even after
deleting PHI-defs.

The calculation can be very expensive after taildup has created a
quadratic number of indirectbr edges in the CFG, and the hasPHIKill flag
isn't used for anything after RenumberValues().

llvm-svn: 139780
2011-09-15 04:37:18 +00:00
Nick Lewycky 34368124aa Update Dwarf enums list for DWARF 4.
Note that DW_TAG_rvalue_reference_type is officially 0x42, not 0x41.

llvm-svn: 139779
2011-09-15 04:23:44 +00:00
Benjamin Kramer 21a5092830 DWARF: Print the number for unknown abbrev fields.
Thanks Nick!

llvm-svn: 139778
2011-09-15 04:15:59 +00:00
Benjamin Kramer 4137b6a2b6 DWARF: Fail gracefully when encountering unknown values in an abbrev.
llvm-svn: 139777
2011-09-15 04:00:58 +00:00
Nick Lewycky 4d0449204e Give structs with virtual methods a virtual destructor.
llvm-svn: 139776
2011-09-15 03:41:51 +00:00