Eric Christopher [Thu, 8 Sep 2011 22:17:40 +0000 (22:17 +0000)]
Formatting and typo.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@139325
91177308-0d34-0410-b5e6-
96231b3b80d8
Nadav Rotem [Thu, 8 Sep 2011 22:17:35 +0000 (22:17 +0000)]
Dix the 80-columns and remove unsupported v8i16 type from the list of legal vselect types.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@139324
91177308-0d34-0410-b5e6-
96231b3b80d8
Jim Grosbach [Thu, 8 Sep 2011 22:07:06 +0000 (22:07 +0000)]
Thumb2 assembly parsing and encoding for LDRD(immediate).
Refactor operand handling for STRD as well. Tests for that forthcoming.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@139322
91177308-0d34-0410-b5e6-
96231b3b80d8
Bruno Cardoso Lopes [Thu, 8 Sep 2011 21:52:33 +0000 (21:52 +0000)]
Add a AVX version of a simple i64 -> f64 bitcast. This could be
triggered using llc with -O0, which wouldn't let it be folded and
expose the lack of this pattern.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@139320
91177308-0d34-0410-b5e6-
96231b3b80d8
Bruno Cardoso Lopes [Thu, 8 Sep 2011 21:05:43 +0000 (21:05 +0000)]
Reapply testcase from r139309!
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@139318
91177308-0d34-0410-b5e6-
96231b3b80d8
Eli Friedman [Thu, 8 Sep 2011 21:00:31 +0000 (21:00 +0000)]
Make sure to handle the case where emitPredicateMatch returns false. Noticed by inspection.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@139317
91177308-0d34-0410-b5e6-
96231b3b80d8
Kevin Enderby [Thu, 8 Sep 2011 20:53:44 +0000 (20:53 +0000)]
Fix a Darwin x86_64 special case of a jmp to a temporary symbol from an atom
without a base symbol that must not have a relocation entry.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@139316
91177308-0d34-0410-b5e6-
96231b3b80d8
Benjamin Kramer [Thu, 8 Sep 2011 20:52:17 +0000 (20:52 +0000)]
Add support for relocations to ObjectFile.
Patch by Danil Malyshev!
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@139314
91177308-0d34-0410-b5e6-
96231b3b80d8
Bruno Cardoso Lopes [Thu, 8 Sep 2011 18:35:57 +0000 (18:35 +0000)]
* Combines Alignment, AuxInfo, and TB_NOT_REVERSABLE flag into a
single field (Flags), which is a bitwise OR of items from the TB_*
enum. This makes it easier to add new information in the future.
* Gives every static array an equivalent layout: { RegOp, MemOp, Flags }
* Adds a helper function, AddTableEntry, to avoid duplication of the
insertion code.
* Renames TB_NOT_REVERSABLE to TB_NO_REVERSE.
* Adds TB_NO_FORWARD, which is analogous to TB_NO_REVERSE, except that
it prevents addition of the Reg->Mem entry. (This is going to be used
by Native Client, in the next CL).
Patch by David Meyer
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@139311
91177308-0d34-0410-b5e6-
96231b3b80d8
Bruno Cardoso Lopes [Thu, 8 Sep 2011 18:32:36 +0000 (18:32 +0000)]
Remove this crashing test, until I figure out what's going wrong here
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@139309
91177308-0d34-0410-b5e6-
96231b3b80d8
Bruno Cardoso Lopes [Thu, 8 Sep 2011 18:05:08 +0000 (18:05 +0000)]
Add AVX versions of blend vector operations and fix some issues noticed
in Nadav's r139285 and r139287 commits.
1) Rename vsel.ll to a more descriptive name
2) Change the order of BLEND operands to "Op1, Op2, Cond", this is
necessary because PBLENDVB is already used in different places with
this order, and it was being emitted in the wrong way for vselect
3) Add AVX patterns and tests for the same SSE41 instructions
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@139305
91177308-0d34-0410-b5e6-
96231b3b80d8
Bruno Cardoso Lopes [Thu, 8 Sep 2011 18:05:02 +0000 (18:05 +0000)]
Fix PR10844: Add patterns to cover non foldable versions of X86vzmovl.
Triggered using llc -O0. Also fix some SET0PS patterns to their AVX
forms and test it on the testcase.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@139304
91177308-0d34-0410-b5e6-
96231b3b80d8
Caitlin Sadowski [Thu, 8 Sep 2011 17:40:49 +0000 (17:40 +0000)]
Added LateParsed property to TableGen attributes.
This patch was written by DeLesley Hutchins.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@139300
91177308-0d34-0410-b5e6-
96231b3b80d8
Jim Grosbach [Thu, 8 Sep 2011 16:49:36 +0000 (16:49 +0000)]
Add tests for Thumb2 LDRB indexed addressing w/ writeback.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@139292
91177308-0d34-0410-b5e6-
96231b3b80d8
Nadav Rotem [Thu, 8 Sep 2011 08:43:23 +0000 (08:43 +0000)]
This test is already covered by llvm/trunk/test/CodeGen/X86/vsel.ll
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@139288
91177308-0d34-0410-b5e6-
96231b3b80d8
Nadav Rotem [Thu, 8 Sep 2011 08:31:31 +0000 (08:31 +0000)]
add a testcase for the previous patch
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@139287
91177308-0d34-0410-b5e6-
96231b3b80d8
James Molloy [Thu, 8 Sep 2011 08:12:01 +0000 (08:12 +0000)]
Fix warning on windows; use of comparison with bool argument.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@139286
91177308-0d34-0410-b5e6-
96231b3b80d8
Nadav Rotem [Thu, 8 Sep 2011 08:11:19 +0000 (08:11 +0000)]
Add X86-SSE4 codegen support for vector-select.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@139285
91177308-0d34-0410-b5e6-
96231b3b80d8
Ivan Krasin [Thu, 8 Sep 2011 07:38:25 +0000 (07:38 +0000)]
lto/addAsmGlobalSymbols: fast path when no module level asm is present.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@139284
91177308-0d34-0410-b5e6-
96231b3b80d8
Ivan Krasin [Thu, 8 Sep 2011 07:36:39 +0000 (07:36 +0000)]
lto/addAsmGlobalSymbols: fail fracefully when the target does not define AsmParser.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@139283
91177308-0d34-0410-b5e6-
96231b3b80d8
David Blaikie [Thu, 8 Sep 2011 05:32:49 +0000 (05:32 +0000)]
Adding myself to test my new commit powers.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@139280
91177308-0d34-0410-b5e6-
96231b3b80d8
Andrew Trick [Thu, 8 Sep 2011 05:25:49 +0000 (05:25 +0000)]
Fix a use of freed string contents.
Speculatively try to fix our windows testers with a patch I found on the internet.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@139279
91177308-0d34-0410-b5e6-
96231b3b80d8
Andrew Trick [Thu, 8 Sep 2011 05:23:14 +0000 (05:23 +0000)]
whitespace
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@139278
91177308-0d34-0410-b5e6-
96231b3b80d8
Eli Friedman [Thu, 8 Sep 2011 02:37:07 +0000 (02:37 +0000)]
A couple minor corrections to r139276.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@139277
91177308-0d34-0410-b5e6-
96231b3b80d8
Eli Friedman [Thu, 8 Sep 2011 02:23:31 +0000 (02:23 +0000)]
Fix the logic in BasicAliasAnalysis::aliasGEP for comparing GEP's with variable differences so that it actually does something sane. Fixes PR10881.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@139276
91177308-0d34-0410-b5e6-
96231b3b80d8
Jim Grosbach [Thu, 8 Sep 2011 01:01:32 +0000 (01:01 +0000)]
Thumb2 assembly parsing and encoding for LDR post-indexed.
More cleanup of the general indexed addressing T2 instructions. Still more to
do, especially for stores.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@139272
91177308-0d34-0410-b5e6-
96231b3b80d8
Jim Grosbach [Thu, 8 Sep 2011 00:39:19 +0000 (00:39 +0000)]
Thumb2 assembly parsing and encoding for LDR pre-indexed w/ writeback.
Adjust encoding of writeback load/store instructions to better reflect the
way the operand types are represented.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@139270
91177308-0d34-0410-b5e6-
96231b3b80d8
Owen Anderson [Thu, 8 Sep 2011 00:11:18 +0000 (00:11 +0000)]
Remove the "common" set of instructions shared between ARM and Thumb2 modes. This is no longer needed now that Thumb2 has its own copy of the STC/LDC instructions.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@139268
91177308-0d34-0410-b5e6-
96231b3b80d8
Jim Grosbach [Wed, 7 Sep 2011 23:39:14 +0000 (23:39 +0000)]
Thumb2 assembly parsing and encoding for LDRBT.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@139267
91177308-0d34-0410-b5e6-
96231b3b80d8
Jim Grosbach [Wed, 7 Sep 2011 23:17:00 +0000 (23:17 +0000)]
Thumb2 assembly parsing and encoding for LDRB(register).
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@139266
91177308-0d34-0410-b5e6-
96231b3b80d8
Jim Grosbach [Wed, 7 Sep 2011 23:10:15 +0000 (23:10 +0000)]
Thumb2 assembly parsing and encoding for LDR(register).
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@139264
91177308-0d34-0410-b5e6-
96231b3b80d8
Benjamin Kramer [Wed, 7 Sep 2011 22:49:26 +0000 (22:49 +0000)]
Add two notes for correlated-expression optimizations.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@139263
91177308-0d34-0410-b5e6-
96231b3b80d8
Jakob Stoklund Olesen [Wed, 7 Sep 2011 21:43:52 +0000 (21:43 +0000)]
Revert r139247 "Cache intermediate results during traceSiblingValue."
It broke the self host and clang-x86_64-darwin10-RA.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@139259
91177308-0d34-0410-b5e6-
96231b3b80d8
Jim Grosbach [Wed, 7 Sep 2011 21:41:25 +0000 (21:41 +0000)]
Thumb2 assembly parsing and encoding for LDRB(immediate).
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@139258
91177308-0d34-0410-b5e6-
96231b3b80d8
Jim Grosbach [Wed, 7 Sep 2011 21:33:16 +0000 (21:33 +0000)]
Thumb2 assembly parsing and encoding for LDR(literal).
Need branch relocation support to distinguish this encoding from the
16-bit Thumb1 encoding w/o the explicit .w suffix. That comes later, though.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@139257
91177308-0d34-0410-b5e6-
96231b3b80d8
Owen Anderson [Wed, 7 Sep 2011 21:10:42 +0000 (21:10 +0000)]
Create Thumb2 versions of STC/LDC, and reenable the relevant tests.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@139256
91177308-0d34-0410-b5e6-
96231b3b80d8
Jim Grosbach [Wed, 7 Sep 2011 21:06:46 +0000 (21:06 +0000)]
Add tests for Thumb2 LDR(immediate) from r139254.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@139255
91177308-0d34-0410-b5e6-
96231b3b80d8
Jim Grosbach [Wed, 7 Sep 2011 20:58:57 +0000 (20:58 +0000)]
Thumb2 parsing and encoding for LDR(immediate).
The immediate offset of the non-writeback i8 form (encoding T4) allows
negative offsets only. The positive offset form of the encoding is the
LDRT instruction. Immediate offsets in the range [0,255] use encoding T3
instead.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@139254
91177308-0d34-0410-b5e6-
96231b3b80d8
Jim Grosbach [Wed, 7 Sep 2011 19:57:53 +0000 (19:57 +0000)]
Thumb2 parsing and encoding for LDMDB.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@139251
91177308-0d34-0410-b5e6-
96231b3b80d8
James Molloy [Wed, 7 Sep 2011 19:42:28 +0000 (19:42 +0000)]
Second of a three-patch series aiming to fix MSR/MRS on Cortex-M. This adds predicate checking to the Disassembler.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@139250
91177308-0d34-0410-b5e6-
96231b3b80d8
Jakob Stoklund Olesen [Wed, 7 Sep 2011 19:07:31 +0000 (19:07 +0000)]
Cache intermediate results during traceSiblingValue.
In some cases such as interpreters using indirectbr, the CFG can be very
complicated, and live range splitting may be forced to insert a large
number of phi-defs. When that happens, traceSiblingValue can spend a
lot of time zipping around in the CFG looking for defs and reloads.
This patch causes more information to be cached in SibValues, and the
cached values are used to terminate searches early. This speeds up
spilling by 20x in one interpreter test case. For more typical code,
this is just a 10% speedup of spilling.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@139247
91177308-0d34-0410-b5e6-
96231b3b80d8
Eli Friedman [Wed, 7 Sep 2011 18:48:32 +0000 (18:48 +0000)]
Fix atomic load and store on x86 to pass -verify-machineinstrs (and possibly fix some subtle bugs involving passes which check mayStore()).
This isn't exactly ideal, but it is good enough for the moment.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@139245
91177308-0d34-0410-b5e6-
96231b3b80d8
Jim Grosbach [Wed, 7 Sep 2011 18:40:06 +0000 (18:40 +0000)]
Update test for 139243
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@139244
91177308-0d34-0410-b5e6-
96231b3b80d8
Jim Grosbach [Wed, 7 Sep 2011 18:39:47 +0000 (18:39 +0000)]
Thumb2 ldm/stm 'db' mnemonics don't have a '.w' suffix.
There is no 16-bit wide encoding, so the .w suffix isn't needed (indeed, isn't
documented as allowed). Also add the missing '!' token on the _UPD
variant.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@139243
91177308-0d34-0410-b5e6-
96231b3b80d8
Jim Grosbach [Wed, 7 Sep 2011 18:05:34 +0000 (18:05 +0000)]
Thumb2 parsing and encoding for LDMIA.
Choose 32-bit vs. 16-bit encoding when there's no .w suffix in post-processing
as match classes are insufficient to handle the context-sensitiveness of
the writeback operand's legality for the 16-bit encodings.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@139242
91177308-0d34-0410-b5e6-
96231b3b80d8
Owen Anderson [Wed, 7 Sep 2011 17:55:19 +0000 (17:55 +0000)]
Port more assembler tests over to disassembler tests, and fix a minor logic error that exposed.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@139240
91177308-0d34-0410-b5e6-
96231b3b80d8
James Molloy [Wed, 7 Sep 2011 17:24:38 +0000 (17:24 +0000)]
Refactor instprinter and mcdisassembler to take a SubtargetInfo. Add -mattr= handling to llvm-mc. Reviewed by Owen Anderson.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@139237
91177308-0d34-0410-b5e6-
96231b3b80d8
Duncan Sands [Wed, 7 Sep 2011 16:44:14 +0000 (16:44 +0000)]
When inlining exception handling code into another function, ensure that
duplicate tests are eliminated (for example if the two functions both have
a catch clause catching the same type, ensure the redundant one is removed).
Note that it would probably be safe to say that eh.typeid.for is 'const',
but since two calls to it with the same argument can give different results
(but only if the calls are in different functions), it seems more correct to
mark it only 'pure'; this doesn't get in the way of the optimization.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@139236
91177308-0d34-0410-b5e6-
96231b3b80d8
Jim Grosbach [Wed, 7 Sep 2011 16:22:42 +0000 (16:22 +0000)]
Thumb2 use 'ldm' as default mnemonic.
Handle explicit 'ia' suffix via a MnemonicAlias (pre-existing).
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@139234
91177308-0d34-0410-b5e6-
96231b3b80d8
Rafael Espindola [Wed, 7 Sep 2011 16:10:57 +0000 (16:10 +0000)]
Detect attempt to use segmented stacks on non ELF systems and error
(not assert) early.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@139233
91177308-0d34-0410-b5e6-
96231b3b80d8
Jim Grosbach [Wed, 7 Sep 2011 16:06:04 +0000 (16:06 +0000)]
Better diagnostic location information for mnemonic suffices.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@139232
91177308-0d34-0410-b5e6-
96231b3b80d8
Duncan Sands [Wed, 7 Sep 2011 10:05:14 +0000 (10:05 +0000)]
Another forgotten trampoline testcase.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@139230
91177308-0d34-0410-b5e6-
96231b3b80d8
Duncan Sands [Wed, 7 Sep 2011 09:21:38 +0000 (09:21 +0000)]
Forgot to add this trampoline testcase.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@139229
91177308-0d34-0410-b5e6-
96231b3b80d8
Eli Friedman [Wed, 7 Sep 2011 02:23:42 +0000 (02:23 +0000)]
Relax the MemOperands on atomics a bit. Fixes -verify-machineinstrs failures for atomic laod/store on ARM.
(The fix for the related failures on x86 is going to be nastier because we actually need Acquire memoperands attached to the atomic load instrs, etc.)
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@139221
91177308-0d34-0410-b5e6-
96231b3b80d8
Joerg Sonnenberger [Wed, 7 Sep 2011 02:12:03 +0000 (02:12 +0000)]
Dependency should be on the output file name, not the dependency file
name.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@139220
91177308-0d34-0410-b5e6-
96231b3b80d8
Devang Patel [Wed, 7 Sep 2011 00:07:58 +0000 (00:07 +0000)]
While sinking machine instructions, sink matching DBG_VALUEs also otherwise live debug variable pass will drop DBG_VALUEs on the floor.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@139208
91177308-0d34-0410-b5e6-
96231b3b80d8
Bill Wendling [Tue, 6 Sep 2011 23:47:14 +0000 (23:47 +0000)]
Reenable compact unwind by default. However, also emit the old version of unwind
information for older linkers.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@139206
91177308-0d34-0410-b5e6-
96231b3b80d8
Owen Anderson [Tue, 6 Sep 2011 23:43:26 +0000 (23:43 +0000)]
memset_pattern16 uses a 16 BYTE pattern, not a 16 BIT pattern. Add comments to that effect.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@139205
91177308-0d34-0410-b5e6-
96231b3b80d8
Owen Anderson [Tue, 6 Sep 2011 23:33:25 +0000 (23:33 +0000)]
Teach BasicAA about the aliasing properties of memset_pattern16.
Fixes PR10872 and <rdar://problem/
10065079>.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@139204
91177308-0d34-0410-b5e6-
96231b3b80d8
Jim Grosbach [Tue, 6 Sep 2011 23:09:19 +0000 (23:09 +0000)]
ISB is HasDB, not just HasV7.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@139202
91177308-0d34-0410-b5e6-
96231b3b80d8
Jim Grosbach [Tue, 6 Sep 2011 22:53:27 +0000 (22:53 +0000)]
Thumb2 parsing and encoding for ISB.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@139200
91177308-0d34-0410-b5e6-
96231b3b80d8
Jim Grosbach [Tue, 6 Sep 2011 22:44:50 +0000 (22:44 +0000)]
Thumb2 parsing and encoding for EOR.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@139199
91177308-0d34-0410-b5e6-
96231b3b80d8
Jim Grosbach [Tue, 6 Sep 2011 22:19:40 +0000 (22:19 +0000)]
Thumb2 parsing and encoding for DSB.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@139194
91177308-0d34-0410-b5e6-
96231b3b80d8
Jim Grosbach [Tue, 6 Sep 2011 22:14:58 +0000 (22:14 +0000)]
Thumb2 parsing and encoding for DMB.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@139193
91177308-0d34-0410-b5e6-
96231b3b80d8
Nick Lewycky [Tue, 6 Sep 2011 22:08:18 +0000 (22:08 +0000)]
Disable these tests harder. They're XFAIL'd, but that means they still run, and
these tests all infinitely recurse, bringing my system down into swapping hell.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@139192
91177308-0d34-0410-b5e6-
96231b3b80d8
Jim Grosbach [Tue, 6 Sep 2011 22:06:40 +0000 (22:06 +0000)]
Thumb2 parsing and encoding for DBG.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@139191
91177308-0d34-0410-b5e6-
96231b3b80d8
Jim Grosbach [Tue, 6 Sep 2011 21:44:58 +0000 (21:44 +0000)]
Thumb2 parsing and encoding for CMN and CMP.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@139188
91177308-0d34-0410-b5e6-
96231b3b80d8
Nick Lewycky [Tue, 6 Sep 2011 21:42:18 +0000 (21:42 +0000)]
This transform only handles two-operand AddRec's. Prevent it from trying to
handle anything more complex. Fixes PR10383 again!
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@139186
91177308-0d34-0410-b5e6-
96231b3b80d8
Eli Friedman [Tue, 6 Sep 2011 20:53:37 +0000 (20:53 +0000)]
Add mayLoad/mayStore markings to ARM 64-bit atomic pseudo-instructions.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@139179
91177308-0d34-0410-b5e6-
96231b3b80d8
Jim Grosbach [Tue, 6 Sep 2011 20:44:17 +0000 (20:44 +0000)]
Thumb2 parsing and encoding for CLZ.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@139177
91177308-0d34-0410-b5e6-
96231b3b80d8
Jim Grosbach [Tue, 6 Sep 2011 20:27:04 +0000 (20:27 +0000)]
Thumb2 parsing and encoding for CLREX.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@139172
91177308-0d34-0410-b5e6-
96231b3b80d8
Owen Anderson [Tue, 6 Sep 2011 20:26:34 +0000 (20:26 +0000)]
Port more encoding tests over to Thumb2 decoding tests.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@139171
91177308-0d34-0410-b5e6-
96231b3b80d8
Andrew Trick [Tue, 6 Sep 2011 20:20:38 +0000 (20:20 +0000)]
Add -verify-indvars for imperfect SCEV trip count verification after indvars.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@139169
91177308-0d34-0410-b5e6-
96231b3b80d8
Jim Grosbach [Tue, 6 Sep 2011 20:12:23 +0000 (20:12 +0000)]
Thumb2 parsing and encoding for CDP/CDP2.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@139168
91177308-0d34-0410-b5e6-
96231b3b80d8
Rafael Espindola [Tue, 6 Sep 2011 19:29:31 +0000 (19:29 +0000)]
Fix comment. Noticed by Duncan.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@139161
91177308-0d34-0410-b5e6-
96231b3b80d8
Duncan Sands [Tue, 6 Sep 2011 19:07:46 +0000 (19:07 +0000)]
Add codegen support for vector select (in the IR this means a select
with a vector condition); such selects become VSELECT codegen nodes.
This patch also removes VSETCC codegen nodes, unifying them with SETCC
nodes (codegen was actually often using SETCC for vector SETCC already).
This ensures that various DAG combiner optimizations kick in for vector
comparisons. Passes dragonegg bootstrap with no testsuite regressions
(nightly testsuite as well as "make check-all"). Patch mostly by
Nadav Rotem.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@139159
91177308-0d34-0410-b5e6-
96231b3b80d8
Evan Cheng [Tue, 6 Sep 2011 18:52:20 +0000 (18:52 +0000)]
Fix fall outs from my recent change on how carry bit is modeled during isel.
Now the 'S' instructions, e.g. ADDS, treat S bit as optional operand as well.
Also fix isel hook to correctly set the optional operand.
rdar://
10073745
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@139157
91177308-0d34-0410-b5e6-
96231b3b80d8
Devang Patel [Tue, 6 Sep 2011 18:49:53 +0000 (18:49 +0000)]
Use IRBuilder.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@139156
91177308-0d34-0410-b5e6-
96231b3b80d8
Jim Grosbach [Tue, 6 Sep 2011 18:46:23 +0000 (18:46 +0000)]
ARM .code directive should always go to the streamer.
Even if there's no mode switch performed, the .code directive should still
be sent to the output streamer. Otherwise, for example, an output asm stream
is not equivalent to the input stream which generated it (a dependency on
the input target triple arm vs. thumb is introduced which was not originally
there).
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@139155
91177308-0d34-0410-b5e6-
96231b3b80d8
Rafael Espindola [Tue, 6 Sep 2011 18:43:08 +0000 (18:43 +0000)]
Fix style issues and typos found by Duncan.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@139154
91177308-0d34-0410-b5e6-
96231b3b80d8
Bill Wendling [Tue, 6 Sep 2011 18:37:11 +0000 (18:37 +0000)]
As a first step, emit both the compact unwind and CIE/FDEs for a function.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@139152
91177308-0d34-0410-b5e6-
96231b3b80d8
Owen Anderson [Tue, 6 Sep 2011 18:14:09 +0000 (18:14 +0000)]
Try again at r138809 (make DSE more aggressive in removing dead stores at the end of a function), now with less deleting stores before memcpy's.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@139150
91177308-0d34-0410-b5e6-
96231b3b80d8
Jakob Stoklund Olesen [Tue, 6 Sep 2011 17:40:35 +0000 (17:40 +0000)]
Atomic pseudos don't use (as in read) CPSR. They clobber it.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@139148
91177308-0d34-0410-b5e6-
96231b3b80d8
Devang Patel [Tue, 6 Sep 2011 17:40:08 +0000 (17:40 +0000)]
Now, named mdnode llvm.dbg.cu keeps track of all compile units in a module. Update DebugInfoFinder to collect compile units from llvm.dbg.cu.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@139147
91177308-0d34-0410-b5e6-
96231b3b80d8
Duncan Sands [Tue, 6 Sep 2011 13:37:06 +0000 (13:37 +0000)]
Split the init.trampoline intrinsic, which currently combines GCC's
init.trampoline and adjust.trampoline intrinsics, into two intrinsics
like in GCC. While having one combined intrinsic is tempting, it is
not natural because typically the trampoline initialization needs to
be done in one function, and the result of adjust trampoline is needed
in a different (nested) function. To get around this llvm-gcc hacks the
nested function lowering code to insert an additional parent variable
holding the adjust.trampoline result that can be accessed from the child
function. Dragonegg doesn't have the luxury of tweaking GCC code, so it
stored the result of adjust.trampoline in the memory GCC set aside for
the trampoline itself (this is always available in the child function),
and set up some new memory (using an alloca) to hold the trampoline.
Unfortunately this breaks Go which allocates trampoline memory on the
heap and wants to use it even after the parent has exited (!). Rather
than doing even more hacks to get Go working, it seemed best to just use
two intrinsics like in GCC. Patch mostly by Sanjoy Das.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@139140
91177308-0d34-0410-b5e6-
96231b3b80d8
Nick Lewycky [Tue, 6 Sep 2011 07:02:40 +0000 (07:02 +0000)]
Fix typo in comment again.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@139139
91177308-0d34-0410-b5e6-
96231b3b80d8
Nick Lewycky [Tue, 6 Sep 2011 06:56:00 +0000 (06:56 +0000)]
Apparently we compile the code, not the comments. Thanks Eli!
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@139138
91177308-0d34-0410-b5e6-
96231b3b80d8
Nick Lewycky [Tue, 6 Sep 2011 06:46:01 +0000 (06:46 +0000)]
Fix typo in comment.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@139137
91177308-0d34-0410-b5e6-
96231b3b80d8
Nick Lewycky [Tue, 6 Sep 2011 06:39:54 +0000 (06:39 +0000)]
Nope! I had it right the first time. Revert the operative part of r139135 and
add more showing of my work.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@139136
91177308-0d34-0410-b5e6-
96231b3b80d8
Nick Lewycky [Tue, 6 Sep 2011 05:33:18 +0000 (05:33 +0000)]
Fix flipped sign. While there, show my math.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@139135
91177308-0d34-0410-b5e6-
96231b3b80d8
Nick Lewycky [Tue, 6 Sep 2011 05:08:09 +0000 (05:08 +0000)]
No no no, fix typo properly!
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@139134
91177308-0d34-0410-b5e6-
96231b3b80d8
Nick Lewycky [Tue, 6 Sep 2011 05:05:14 +0000 (05:05 +0000)]
The logic inside getMulExpr to simplify {a,+,b}*{c,+,d} was wrong, which was
visible given a=b=c=d=1, on iteration #1 (the second iteration). Replace it with
correct math. Fixes PR10383!
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@139133
91177308-0d34-0410-b5e6-
96231b3b80d8
Nick Lewycky [Tue, 6 Sep 2011 02:43:13 +0000 (02:43 +0000)]
Revert r139126 due to selfhost failures reported by buildbots.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@139130
91177308-0d34-0410-b5e6-
96231b3b80d8
Nick Lewycky [Mon, 5 Sep 2011 23:25:16 +0000 (23:25 +0000)]
Teach SCEV to report a max backedge count in one interesting case in
HowFarToZero; the case for a canonical loop.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@139126
91177308-0d34-0410-b5e6-
96231b3b80d8
Nick Lewycky [Mon, 5 Sep 2011 21:51:43 +0000 (21:51 +0000)]
Add a new MC bit for NaCl (Native Client) mode. NaCl requires that certain
instructions are more aligned than the CPU requires, and adds some additional
directives, to follow in future patches. Patch by David Meyer!
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@139125
91177308-0d34-0410-b5e6-
96231b3b80d8
Nick Lewycky [Mon, 5 Sep 2011 18:50:59 +0000 (18:50 +0000)]
Update the C++ backend to use the new ArrayRef'ified APIs. Patch by arrowdodger!
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@139124
91177308-0d34-0410-b5e6-
96231b3b80d8
Nick Lewycky [Mon, 5 Sep 2011 18:35:03 +0000 (18:35 +0000)]
Fix typo in comment.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@139122
91177308-0d34-0410-b5e6-
96231b3b80d8
Benjamin Kramer [Mon, 5 Sep 2011 18:16:19 +0000 (18:16 +0000)]
InstSimplify: Don't try to replace an extractvalue/insertvalue pair with the original value if types don't match.
Fixes clang selfhost.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@139120
91177308-0d34-0410-b5e6-
96231b3b80d8
Duncan Sands [Mon, 5 Sep 2011 12:57:57 +0000 (12:57 +0000)]
Delete trivial landing pads that just continue unwinding the caught
exception.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@139117
91177308-0d34-0410-b5e6-
96231b3b80d8
Duncan Sands [Mon, 5 Sep 2011 06:52:48 +0000 (06:52 +0000)]
Add some simple insertvalue simplifications, for the purpose of cleaning
up do-nothing exception handling code produced by dragonegg.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@139113
91177308-0d34-0410-b5e6-
96231b3b80d8