History log of /external/llvm/lib/Target/ARM/ARMInstrThumb2.td
Revision Date Author Comments (<<< Hide modified files) (Show modified files >>>)
cddc3e03e4ec99c0268c03a126195173e519ed58 04-Mar-2016 Pirama Arumuga Nainar <pirama@google.com> Update aosp/master LLVM for rebase to r256229

http://b/26987366

(cherry picked from commit f3ef5332fa3f4d5ec72c178a2b19dac363a19383)

Change-Id: Ic75dcb63191d65df1b69724576392c0aaeb47728
/external/llvm/lib/Target/ARM/ARMInstrThumb2.td
6948897e478cbd66626159776a8017b3c18579b9 01-Jul-2015 Pirama Arumuga Nainar <pirama@google.com> Update aosp/master LLVM for rebase to r239765

Bug: 20140355: This rebase pulls the upstream fix for the spurious
warnings mentioned in the bug.

Change-Id: I7fd24253c50f4d48d900875dcf43ce3f1721a3da
/external/llvm/lib/Target/ARM/ARMInstrThumb2.td
0c7f116bb6950ef819323d855415b2f2b0aad987 06-May-2015 Pirama Arumuga Nainar <pirama@google.com> Update aosp/master LLVM for rebase to r235153

Change-Id: I9bf53792f9fc30570e81a8d80d296c681d005ea7
/external/llvm/lib/Target/ARM/ARMInstrThumb2.td
ebe69fe11e48d322045d5949c83283927a0d790b 23-Mar-2015 Stephen Hines <srhines@google.com> Update aosp/master LLVM for rebase to r230699.

Change-Id: I2b5be30509658cb8266be782de0ab24f9099f9b9
/external/llvm/lib/Target/ARM/ARMInstrThumb2.td
37ed9c199ca639565f6ce88105f9e39e898d82d0 01-Dec-2014 Stephen Hines <srhines@google.com> Update aosp/master LLVM for rebase to r222494.

Change-Id: Ic787f5e0124df789bd26f3f24680f45e678eef2d
/external/llvm/lib/Target/ARM/ARMInstrThumb2.td
c6a4f5e819217e1e12c458aed8e7b122e23a3a58 21-Jul-2014 Stephen Hines <srhines@google.com> Update LLVM for rebase to r212749.

Includes a cherry-pick of:
r212948 - fixes a small issue with atomic calls

Change-Id: Ib97bd980b59f18142a69506400911a6009d9df18
/external/llvm/lib/Target/ARM/ARMInstrThumb2.td
dce4a407a24b04eebc6a376f8e62b41aaa7b071f 29-May-2014 Stephen Hines <srhines@google.com> Update LLVM for 3.5 rebase (r209712).

Change-Id: I149556c940fb7dc92d075273c87ff584f400941f
/external/llvm/lib/Target/ARM/ARMInstrThumb2.td
36b56886974eae4f9c5ebc96befd3e7bfe5de338 24-Apr-2014 Stephen Hines <srhines@google.com> Update to LLVM 3.5a.

Change-Id: Ifadecab779f128e62e430c2b4f6ddd84953ed617
/external/llvm/lib/Target/ARM/ARMInstrThumb2.td
2b01682aa7b9509e9fa1865ebed3d0a7928f5b7a 08-Nov-2013 Artyom Skrobov <Artyom.Skrobov@arm.com> [ARM] Handling for coprocessor instructions that are undefined starting from ARMv8 (Thumb encodings)

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@194263 91177308-0d34-0410-b5e6-96231b3b80d8
/external/llvm/lib/Target/ARM/ARMInstrThumb2.td
f635ab8eabb06a41fa791d897ebf32eb338688a0 05-Nov-2013 Tim Northover <tnorthover@apple.com> ARM: permit bare dmb/dsb/isb aliases on Cortex-M0

Cortex-M0 supports these 32-bit instructions despite being Thumb1 only
(mostly). We knew about that but not that the aliases without the default "sy"
operand were also permitted.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@194094 91177308-0d34-0410-b5e6-96231b3b80d8
/external/llvm/lib/Target/ARM/ARMInstrThumb2.td
47c6d17b1cce85ba30471b2270419e35ba3d5653 29-Oct-2013 Bernard Ogden <bogden@arm.com> ARM: Add subtarget feature for CRC

Adds a subtarget feature for the CRC instructions (optional in v8-A) to the ARM (32-bit) backend.

Differential Revision: http://llvm-reviews.chandlerc.com/D2036

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@193599 91177308-0d34-0410-b5e6-96231b3b80d8
/external/llvm/lib/Target/ARM/ARMInstrThumb2.td
b161955ffbda5ccb5293e0c76ef982acb6ec6661 23-Oct-2013 Artyom Skrobov <Artyom.Skrobov@arm.com> Make ARM hint ranges consistent, and add tests for these ranges

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@193238 91177308-0d34-0410-b5e6-96231b3b80d8
/external/llvm/lib/Target/ARM/ARMInstrThumb2.td
485333df7157d6e8681d910d85b271b0bc96b48e 18-Oct-2013 Richard Barton <richard.barton@arm.com> Add hint disassembly syntax for 16-bit Thumb hint instructions.

Patch by Artyom Skrobov



git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@192972 91177308-0d34-0410-b5e6-96231b3b80d8
/external/llvm/lib/Target/ARM/ARMInstrThumb2.td
6eef361b73b457896b310d411251aedd5e72476a 03-Oct-2013 Amara Emerson <amara.emerson@arm.com> [ARM] Warn on deprecated IT blocks in v8 AArch32 assembly.

Patch by Artyom Skrobov.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@191885 91177308-0d34-0410-b5e6-96231b3b80d8
/external/llvm/lib/Target/ARM/ARMInstrThumb2.td
bba9390fc6c0d536172c6bb4a9c93db557c1aff4 01-Oct-2013 Tim Northover <tnorthover@apple.com> ARM: support interrupt attribute

This function-attribute modifies the callee-saved register list and function
epilogue (specifically the return instruction) so that a routine is suitable
for use as an interrupt-handler of the specified type without disrupting
user-mode applications.

rdar://problem/14207019

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@191766 91177308-0d34-0410-b5e6-96231b3b80d8
/external/llvm/lib/Target/ARM/ARMInstrThumb2.td
d1311ac171f9cb90cab4906a6c0e091b6b65b862 01-Oct-2013 Joey Gouly <joey.gouly@arm.com> [ARM] Introduce the 'sevl' instruction in ARMv8.

This also removes the restriction on the immediate field of the 'hint'
instruction.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@191744 91177308-0d34-0410-b5e6-96231b3b80d8
/external/llvm/lib/Target/ARM/ARMInstrThumb2.td
268c743a3ba44ada364938bc5ff9b1be219df54f 26-Sep-2013 Amara Emerson <amara.emerson@arm.com> [ARM] Use the load-acquire/store-release instructions optimally in AArch32.

Patch by Artyom Skrobov.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@191428 91177308-0d34-0410-b5e6-96231b3b80d8
/external/llvm/lib/Target/ARM/ARMInstrThumb2.td
0f22c134be40a337b30e30bdafb9e8b6880dea1e 23-Sep-2013 Amara Emerson <amara.emerson@arm.com> [ARM] Split A/R class into separate subtarget features.

Patch by Bradley Smith.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@191202 91177308-0d34-0410-b5e6-96231b3b80d8
/external/llvm/lib/Target/ARM/ARMInstrThumb2.td
a4d46d7fc6431ec3576839f11cb61862b784cb3e 18-Sep-2013 Joey Gouly <joey.gouly@arm.com> [ARMv8] Add CRC instructions.

Patch by Bradley Smith!


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@190928 91177308-0d34-0410-b5e6-96231b3b80d8
/external/llvm/lib/Target/ARM/ARMInstrThumb2.td
dc0de80f24a83336cb26dcb9ed1fa030142a504d 17-Sep-2013 Joey Gouly <joey.gouly@arm.com> [ARM] Fix the deprecation of MCR encodings that map to CP15{ISB,DSB,DMB}.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@190862 91177308-0d34-0410-b5e6-96231b3b80d8
/external/llvm/lib/Target/ARM/ARMInstrThumb2.td
4897151df698197f0eb5c4085545312dbb20c94d 05-Sep-2013 Joey Gouly <joey.gouly@arm.com> [ARMv8] Implement the new DMB/DSB operands.

This removes the custom ISD Node: MEMBARRIER and replaces it
with an intrinsic.



git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@190055 91177308-0d34-0410-b5e6-96231b3b80d8
/external/llvm/lib/Target/ARM/ARMInstrThumb2.td
b5523ce1bb50e86942ad5273e3a89872c4d26b73 05-Sep-2013 Richard Barton <richard.barton@arm.com> Add AArch32 DCPS{1,2,3} and HLT instructions.


These were pretty straightforward instructions, with some assembly support
required for HLT.

The ARM assembler is keen to split the instruction mnemonic into a
(non-existent) 'H' instruction with the LT condition code. An exception for
HLT is needed.

HLT follows the same rules as BKPT when in IT blocks, so the special BKPT
hadling code has been adapted to handle HLT also.

Regression tests added including diagnostic tests for out of range immediates
and illegal condition codes, as well as negative tests for pre-ARMv8.



git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@190053 91177308-0d34-0410-b5e6-96231b3b80d8
/external/llvm/lib/Target/ARM/ARMInstrThumb2.td
8f3d54d057007552d0abc37c87a50ef34a7ab9ef 05-Sep-2013 Tilmann Scheller <tilmann.scheller@googlemail.com> Reverting 190043 for now.

Solution is not sufficient to prevent 'mov pc, lr' being emitted for jump table code.
Test case doesn't trigger the added functionality.



git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@190047 91177308-0d34-0410-b5e6-96231b3b80d8
/external/llvm/lib/Target/ARM/ARMInstrThumb2.td
10b5086e6e945b830ff909821240eff5c4a42bfc 05-Sep-2013 Tilmann Scheller <tilmann.scheller@googlemail.com> ARM: Add GPR register class excluding LR for use with the ADR instruction.

This improves code generation for jump tables by avoiding the emission of "mov pc, lr" which could fool the processor into believing this is a return from a function causing mispredicts. The code generation logic for jump tables uses ADR to materialize the address of the jump target.

Patch by Daniel Stewart!



git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@190043 91177308-0d34-0410-b5e6-96231b3b80d8
/external/llvm/lib/Target/ARM/ARMInstrThumb2.td
b2e5453821ef27306036a9961818cf530a3ca8cb 28-Aug-2013 Joey Gouly <joey.gouly@arm.com> [ARMv8]
Fix a few things in one swoop.

# Add some negative tests.
# Fix some formatting issues.
# Add some missing IsThumb / ARMv8
# Fix some outs / ins mistakes.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@189490 91177308-0d34-0410-b5e6-96231b3b80d8
/external/llvm/lib/Target/ARM/ARMInstrThumb2.td
bafb5f8d9f415340d9035ee9430f9480da9a50fb 28-Aug-2013 Joey Gouly <joey.gouly@arm.com> [ARMv8] Add a missing IsThumb to t2LDAEXD.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@189482 91177308-0d34-0410-b5e6-96231b3b80d8
/external/llvm/lib/Target/ARM/ARMInstrThumb2.td
0b90c6223d9c49b5e0dc4bf4e53796b0714d7b80 27-Aug-2013 Joey Gouly <joey.gouly@arm.com> [ARMv8] Add MC support for the new load/store acquire/release instructions.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@189388 91177308-0d34-0410-b5e6-96231b3b80d8
/external/llvm/lib/Target/ARM/ARMInstrThumb2.td
f7ab3a84b3e1b5a647ae9456a5edb99d86b35329 22-Aug-2013 Tim Northover <tnorthover@apple.com> ARM: use TableGen patterns to select CMOV operations.

Back in the mists of time (2008), it seems TableGen couldn't handle the
patterns necessary to match ARM's CMOV node that we convert select operations
to, so we wrote a lot of fairly hairy C++ to do it for us.

TableGen can deal with it now: there were a few minor differences to CodeGen
(see tests), but nothing obviously worse that I could see, so we should
probably address anything that *does* come up in a localised manner.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@188995 91177308-0d34-0410-b5e6-96231b3b80d8
/external/llvm/lib/Target/ARM/ARMInstrThumb2.td
1a9f21abac47dcea0c62341b0ee4fd35481350b8 21-Aug-2013 Mihai Popa <mihail.popa@gmail.com> Make "mov" work for all Thumb2 MOV encodings

According to the ARM specification, "mov" is a valid mnemonic for all Thumb2 MOV encodings.
To achieve this, the patch adds one instruction alias with a special range condition to avoid collision with the Thumb1 MOV.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@188901 91177308-0d34-0410-b5e6-96231b3b80d8
/external/llvm/lib/Target/ARM/ARMInstrThumb2.td
756e89c8c2a3c30ce3a73ed13724aad1b41a5608 19-Aug-2013 Mihai Popa <mihail.popa@gmail.com> Thumb2 add immediate alias for SP

The Thumb2 add immediate is in fact defined for SP. The manual is misleading as it points to a different section for add immediate with SP, however the encoding is the same as for add immediate with register only with the SP operand hard coded. As such add immediate with SP and add immediate with register can safely be treated as the same instruction.

All the patch does is adjust a register constraint on an instruction alias.



git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@188676 91177308-0d34-0410-b5e6-96231b3b80d8
/external/llvm/lib/Target/ARM/ARMInstrThumb2.td
8b36f9e4314ac4d786d2d4fd5fa9e7858487ee9e 16-Aug-2013 Mihai Popa <mihail.popa@gmail.com> Fix Thumb2 aliasing complementary instructions taking modified immediates

There are many Thumb instructions which take 12-bit immediates encoded in a special
8-byte value + 4-byte rotator form. Not all numbers are represented, and it's legal
to transform an assembly instruction to be able to encode the immediate.

For example: AND and BIC are complementary instructions; one can switch the AND
to a BIC as long as the immediate is complemented.

The intent is to switch one instruction into its complementary one when the immediate
cannot be encoded in the form requested in the original assembly and when the
complementary immediate is encodable.

The patch addresses two issues:
1. definition of t2SOImmNot immediate - it has to check that the orignal value is
not encoded naturally
2. t2AND and t2BIC instruction aliases which should use the Thumb2 SOImm operand
rather than the ARM one.



git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@188548 91177308-0d34-0410-b5e6-96231b3b80d8
/external/llvm/lib/Target/ARM/ARMInstrThumb2.td
428715d4e120e6ef6fc898665607a92f3dd02709 15-Aug-2013 Mihai Popa <mihail.popa@gmail.com> This fixes three issues related to Thumb literal loads:

1. The offset range for Thumb1 PC relative loads is [0..1020] and not [-1024..1020]
2. Thumb2 PC relative loads may define the PC, so the restriction placed on target register is removed
3. Removes unneeded alias between "ldr.n" and t1LDRpci. ".n" is actually stripped by both tablegen
and the ASM parser, so this alias rule really does nothing


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@188466 91177308-0d34-0410-b5e6-96231b3b80d8
/external/llvm/lib/Target/ARM/ARMInstrThumb2.td
04b03fac11f10c92cf7ce63ba2f548a42ee2c448 09-Aug-2013 Mihai Popa <mihail.popa@gmail.com> This fixes the Thumb2 CPS assembly syntax.
In Thumb1, only one variant is supported: CPS{effect} {flags}

Thumb2 supports three:
CPS{effect}.W {flags}
CPS{effect} {flags} {mode}
CPS {mode}

Canonically, .W should be used only when ambiguity is present between encodings of different width.
The wide suffix is still accepted for the latter two forms via aliases.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@188071 91177308-0d34-0410-b5e6-96231b3b80d8
/external/llvm/lib/Target/ARM/ARMInstrThumb2.td
e921f323533ee751b3fa34bd00d10fa72096ffd3 09-Aug-2013 Mihai Popa <mihail.popa@gmail.com> Fix assembling of Thumb2 branch instructions.

The long encoding for Thumb2 unconditional branches is broken.
Additionally, there is no range checking for target operands; as such
for instructions originating in assembly code, only short Thumb encodings
are generated, regardless of the bitsize needed for the offset.

Adding range checking is non trivial due to the representation of Thumb
branch instructions. There is no true difference between conditional and
unconditional branches in terms of operands and syntax - even unconditional
branches have a predicate which is expected to match that of the IT block
they are in. Yet, the encodings and the permitted size of the offset differ.

Due to this, for any mnemonic there are really 4 encodings to choose for.

The problem cannot be handled in the parser alone or by manipulating td files.
Because the parser builds first a set of match candidates and then checks them
one by one, whatever tablegen-only solution might be found will ultimately be
dependent of the parser's evaluation order. What's worse is that due to the fact
that all branches have the same syntax and the same kinds of operands, that
order is governed by the lexicographical ordering of the names of operand
classes...

To circumvent all this, any necessary disambiguation is added to the instruction
validation pass.




git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@188067 91177308-0d34-0410-b5e6-96231b3b80d8
/external/llvm/lib/Target/ARM/ARMInstrThumb2.td
868bed99674cf19e5cb475945f3067f0f4cc421e 08-Aug-2013 Mihai Popa <mihail.popa@gmail.com> The name "tCDP" isn't used anywhere else in the source code, so renaming it for consistency doesn't cause any problems.
This is the only Thumb2 instruction defined with "t" prefix; all other Thumb2 instructions have "t2" prefix (e.g. "t2CDP2" which is defined immediately afterwards).

Patch by Artyom Skrobov.



git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@187973 91177308-0d34-0410-b5e6-96231b3b80d8
/external/llvm/lib/Target/ARM/ARMInstrThumb2.td
4f7092176c3d3eaae0ea7af26aec2d77b3e4035f 06-Aug-2013 Mihai Popa <mihail.popa@gmail.com> This corrects creation of operands for t2PLDW. It also removes the definition of t2PLDWpci,
as pldw does not have a literal variant (i.e. pc relative version)


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@187804 91177308-0d34-0410-b5e6-96231b3b80d8
/external/llvm/lib/Target/ARM/ARMInstrThumb2.td
4a378b95aa0f24ba461e512608b8aaeaa803996f 06-Aug-2013 Mihai Popa <mihail.popa@gmail.com> Support APSR_nzcv as operand for Thumb2 mrc. Deprecate pre-UAL syntax (pc instead of apsr_nzcv)


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@187803 91177308-0d34-0410-b5e6-96231b3b80d8
/external/llvm/lib/Target/ARM/ARMInstrThumb2.td
e38070fc32818a6e412dafbb8b3807b413d0819e 31-Jul-2013 Kevin Enderby <enderby@apple.com> Added the B9.3.19 SUBS PC, LR, #imm (Thumb2) system instruction.
While the .td entry is nice and all, it takes a pretty gross hack in
ARMAsmParser::ParseInstruction() because of handling of other "subs"
instructions to get it to match. Ran it by Jim Grosbach and he said it was
about what he expected to make this work given the existing code.

rdar://14214063


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@187530 91177308-0d34-0410-b5e6-96231b3b80d8
/external/llvm/lib/Target/ARM/ARMInstrThumb2.td
02265382929b0275d7b7b334eab5e2fd34e1b9fe 22-Jul-2013 Mihai Popa <mihail.popa@gmail.com> This adds range checking for "ldr Rn, [pc, #imm]" Thumb
instructions. With this patch:

1. ldr.n is recognized as mnemonic for the short encoding
2. ldr.w is recognized as menmonic for the long encoding
3. ldr will map to either short or long encodings depending on the size of the offset

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@186831 91177308-0d34-0410-b5e6-96231b3b80d8
/external/llvm/lib/Target/ARM/ARMInstrThumb2.td
1c6e6ce10c61f8db656a04af36e2b374c0fe9566 22-Jul-2013 Tim Northover <tnorthover@apple.com> ARM: remove now unneeded custom Asm converters

After Ulrich's r180677 (thanks!) TableGen is intelligent enough to
handle tied constraints involving complex operands properly, so
virtually all of the ARM custom converters are now unnecessary.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@186810 91177308-0d34-0410-b5e6-96231b3b80d8
/external/llvm/lib/Target/ARM/ARMInstrThumb2.td
cae5d5ea658e05091e66b742b5834f1896ff2f5d 19-Jul-2013 Tilmann Scheller <tilmann.scheller@googlemail.com> ARM: Add instruction aliases for the Thumb2 PLD/PLDW (literal) alternate form.

See A8.8.127 in ARM DDI 0406C.b.

Related to <rdar://problem/14403733>.



git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@186682 91177308-0d34-0410-b5e6-96231b3b80d8
/external/llvm/lib/Target/ARM/ARMInstrThumb2.td
bbcea55b68fad8116c29b3e831c5df398d558569 19-Jul-2013 Tilmann Scheller <tilmann.scheller@googlemail.com> ARM: Make sure the instruction alias for PLI uses the right subtarget features.

PLI requires both the Thumb2 and the ARMv7 feature.

Related to <rdar://problem/14403733>.



git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@186620 91177308-0d34-0410-b5e6-96231b3b80d8
/external/llvm/lib/Target/ARM/ARMInstrThumb2.td
898788c6bcc2abfe0e1c7b21c14394352963acd6 16-Jul-2013 Tilmann Scheller <tilmann.scheller@googlemail.com> ARM: Add support for the Thumb2 PLI alternate literal form.

This adds an instruction alias to make the assembler recognize the alternate literal form: pli [PC, #+/-<imm>]

See A8.8.129 in the ARM ARM (DDI 0406C.b).

Fixes <rdar://problem/14403733>.



git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@186459 91177308-0d34-0410-b5e6-96231b3b80d8
/external/llvm/lib/Target/ARM/ARMInstrThumb2.td
2f438131f115a3860ee344a827a091790d6dc13d 16-Jul-2013 Tim Northover <tnorthover@apple.com> ARM: implement ldrex, strex and clrex intrinsics

Intrinsics already existed for the 64-bit variants, so these support operations
of size at most 32-bits.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@186392 91177308-0d34-0410-b5e6-96231b3b80d8
/external/llvm/lib/Target/ARM/ARMInstrThumb2.td
97c37bb4d4ae5e505350091e520a1354069941e0 10-Jul-2013 Jim Grosbach <grosbach@apple.com> ARM: Fix incorrect pack pattern for thumb2

Propagate the fix from r185712 to Thumb2 codegen as well. Original
commit message applies here as well:

A "pkhtb x, x, y asr #num" uses the lower 16 bits of "y asr #num" and
packs them in the bottom half of "x". An arithmetic and logic shift are
only equivalent in this context if the shift amount is 16. We would be
shifting in ones into the bottom 16bits instead of zeros if "y" is
negative.

rdar://14338767

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@185982 91177308-0d34-0410-b5e6-96231b3b80d8
/external/llvm/lib/Target/ARM/ARMInstrThumb2.td
b81b477cd4392a51112c3af0659ea9fc176e74f1 03-Jul-2013 Mihai Popa <mihail.popa@gmail.com> This corrects the implementation of Thumb ADR instruction. There are three issues:
1. it should accept only 4-byte aligned addresses
2. the maximum offset should be 1020
3. it should be encoded with the offset scaled by two bits


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@185528 91177308-0d34-0410-b5e6-96231b3b80d8
/external/llvm/lib/Target/ARM/ARMInstrThumb2.td
c19bd321362166805194cbaf170e06a4790d2da9 26-Jun-2013 Tim Northover <tnorthover@apple.com> ARM: fix more cases where predication may or may not be allowed

Unfortunately this addresses two issues (by the time I'd disentangled the logic
it wasn't worth putting it back to half-broken):

+ Coprocessor instructions should all be predicable in Thumb mode.
+ BKPT should never be predicable.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@184965 91177308-0d34-0410-b5e6-96231b3b80d8
/external/llvm/lib/Target/ARM/ARMInstrThumb2.td
c1a91dd97b000128189421eda6c5bb7905b1f467 26-Jun-2013 Tim Northover <tnorthover@apple.com> ARM: allow predicated barriers in Thumb mode

The barrier instructions are only "always-execute" in ARM mode, they can quite
happily sit inside an IT block in Thumb.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@184964 91177308-0d34-0410-b5e6-96231b3b80d8
/external/llvm/lib/Target/ARM/ARMInstrThumb2.td
0c9f0c047dfba91bc7c0fb66f7e868e917d37c4c 24-Jun-2013 Amaury de la Vieuville <amaury.dlv@gmail.com> ARM: enable decoding of pc-relative PLD/PLI

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@184701 91177308-0d34-0410-b5e6-96231b3b80d8
/external/llvm/lib/Target/ARM/ARMInstrThumb2.td
beb920fce6ccc89b4735f280f94cb8c227f4ef5e 18-Jun-2013 Amaury de la Vieuville <amaury.dlv@gmail.com> ARM: fix literal load with positive offset encoding

When using a positive offset, literal loads where encoded
as if it was negative, because:
- The sign bit was not assigned to an operand
- The addrmode_imm12 operand was not encoding the sign bit correctly

This patch also makes the assembler look at the .w/.n specifier for
loads.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@184182 91177308-0d34-0410-b5e6-96231b3b80d8
/external/llvm/lib/Target/ARM/ARMInstrThumb2.td
f8b60d6f30a8f25c84a71d36ff3a86fe1f52f671 18-Jun-2013 Amaury de la Vieuville <amaury.dlv@gmail.com> ARM: add operands pre-writeback variants when needed

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@184181 91177308-0d34-0410-b5e6-96231b3b80d8
/external/llvm/lib/Target/ARM/ARMInstrThumb2.td
ce046b98ed6c351779fc43599a80d588752bc1ca 18-Jun-2013 Amaury de la Vieuville <amaury.dlv@gmail.com> ARM: fix thumb literal loads decoding

This fixes two previous issues:
- Negative offsets were not correctly disassembled
- The decoded opcodes were not the right one

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@184180 91177308-0d34-0410-b5e6-96231b3b80d8
/external/llvm/lib/Target/ARM/ARMInstrThumb2.td
a768a4954818456fa6fe2077a3cbe75979025c15 14-Jun-2013 Amaury de la Vieuville <amaury.dlv@gmail.com> ARM: fix thumb coprocessor instruction with pre-writeback disassembly

was stc2 p0, c0, [r0]!
instead of stc2 p0, c0, [r0,#0]!

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@183975 91177308-0d34-0410-b5e6-96231b3b80d8
/external/llvm/lib/Target/ARM/ARMInstrThumb2.td
4e9a96d810eb0cc126ebe6f18e536b474c84940c 10-Jun-2013 Amaury de la Vieuville <amaury.dlv@gmail.com> ARM: ISB cannot be passed the same options as DMB

ISB should only accepts full system sync, other options are reserved

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@183656 91177308-0d34-0410-b5e6-96231b3b80d8
/external/llvm/lib/Target/ARM/ARMInstrThumb2.td
a6db67719754168c7e491bb814264a3bddbd8534 06-Jun-2013 Arnold Schwaighofer <aschwaighofer@apple.com> ARM sched model: Add branch thumb2 instructions

Reapply 183264.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@183430 91177308-0d34-0410-b5e6-96231b3b80d8
/external/llvm/lib/Target/ARM/ARMInstrThumb2.td
3ba4778c9579739748810d78befd1752dc71acb6 06-Jun-2013 Arnold Schwaighofer <aschwaighofer@apple.com> ARM sched model: Add preload thumb2 instructions

Reapply 183262.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@183427 91177308-0d34-0410-b5e6-96231b3b80d8
/external/llvm/lib/Target/ARM/ARMInstrThumb2.td
826de688b06552125b94a3d1e038f5326d53435f 06-Jun-2013 Arnold Schwaighofer <aschwaighofer@apple.com> ARM sched model: Add more ALU and CMP thumb2 instructions

Reapply of 183259.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@183421 91177308-0d34-0410-b5e6-96231b3b80d8
/external/llvm/lib/Target/ARM/ARMInstrThumb2.td
8a227084a5b07fa289c34f2b36e12f75b47473d6 05-Jun-2013 Arnold Schwaighofer <aschwaighofer@apple.com> Revert series of sched model patches until I figure out what is going on.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@183273 91177308-0d34-0410-b5e6-96231b3b80d8
/external/llvm/lib/Target/ARM/ARMInstrThumb2.td
16d915018b303e69c409bed15e29ac6906b1fe92 05-Jun-2013 Arnold Schwaighofer <aschwaighofer@apple.com> ARM sched model: Add branch thumb2 instructions

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@183264 91177308-0d34-0410-b5e6-96231b3b80d8
/external/llvm/lib/Target/ARM/ARMInstrThumb2.td
fdbca2faac8ebc3fa5c17ffae5e6a0e5d38a4cb8 05-Jun-2013 Arnold Schwaighofer <aschwaighofer@apple.com> ARM sched model: Add preload thumb2 instructions

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@183262 91177308-0d34-0410-b5e6-96231b3b80d8
/external/llvm/lib/Target/ARM/ARMInstrThumb2.td
1942e3254d2d50ccad3dce247fde4ec1e974a857 05-Jun-2013 Arnold Schwaighofer <aschwaighofer@apple.com> ARM sched model: Add more ALU and CMP thumb2 instructions

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@183259 91177308-0d34-0410-b5e6-96231b3b80d8
/external/llvm/lib/Target/ARM/ARMInstrThumb2.td
a9a8a128f807d46ce46971abf65578996c50cf2e 29-May-2013 JF Bastien <jfb@google.com> Tidy some register classes for ARM and Thumb

Tidy up three places where the register class for ARM and Thumb wasn't
restrictive enough:
- No PC dest for reg-reg add/orr/sub.
- No PC dest for shifts.
- No PC or SP for Thumb2 reg-imm add.

I encountered this while combining FastISel with
-verify-machineinstrs. These instructions defined registers whose
classes weren't restrictive enough, and the uses failed
verification. They're also undefined in the ISA, or would produce code
that FastISel wouldn't want. This doesn't fix the register class
narrowing issue (where uses should restrict definitions), and isn't
thorough, but it's a small step in the right direction.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@182863 91177308-0d34-0410-b5e6-96231b3b80d8
/external/llvm/lib/Target/ARM/ARMInstrThumb2.td
1ad3a410beff11913db0573942fb51b651d01a13 26-Apr-2013 Quentin Colombet <qcolombet@apple.com> ARM: Fix encoding of hint instruction for Thumb.
"hint" space for Thumb actually overlaps the encoding space of the CPS
instruction. In actuality, hints can be defined as CPS instructions where imod
and M bits are all nil.

Handle decoding of permitted nop-compatible hints (i.e. nop, yield, wfi, wfe,
sev) in DecodeT2CPSInstruction.

This commit adds a proper diagnostic message for Imm0_4 and updates all tests.

Patch by Mihail Popa <Mihail.Popa@arm.com>.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@180617 91177308-0d34-0410-b5e6-96231b3b80d8
/external/llvm/lib/Target/ARM/ARMInstrThumb2.td
d64ee4455a9d2fcec7e001c7f4c02d490bed5158 12-Apr-2013 Quentin Colombet <qcolombet@apple.com> ARM: Correct printing of pre-indexed operands.
According to the ARM reference manual, constant offsets are mandatory for pre-indexed addressing modes.
The MC disassembler was not obeying this when the offset is 0.
It was producing instructions like: str r0, [r1]!.
Correct syntax is: str r0, [r1, #0]!.

This change modifies the dumping of operands so that the offset is always printed, regardless of its value, when pre-indexed addressing mode is used.

Patch by Mihail Popa <Mihail.Popa@arm.com>


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@179398 91177308-0d34-0410-b5e6-96231b3b80d8
/external/llvm/lib/Target/ARM/ARMInstrThumb2.td
8c9e52a9fc1f99cf80c499ef10e6c8a54ef899d4 10-Apr-2013 Tim Northover <Tim.Northover@arm.com> ARM: Make "SMC" instructions conditional on new TrustZone architecture feature.

These instructions aren't universally available, but depend on a specific
extension to the normal ARM architecture (rather than, say, v6/v7/...) so a new
feature is appropriate.

This also enables the feature by default on A-class cores which usually have
these extensions, to avoid breaking existing code and act as a sensible
default.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@179171 91177308-0d34-0410-b5e6-96231b3b80d8
/external/llvm/lib/Target/ARM/ARMInstrThumb2.td
1e8ed2537b3e4b2175cd9e62626f07606c62cfa0 23-Feb-2013 Jim Grosbach <grosbach@apple.com> ARM: Convenience aliases for 'srs*' instructions.

Handle an implied 'sp' operand.

rdar://11466783

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@175940 91177308-0d34-0410-b5e6-96231b3b80d8
/external/llvm/lib/Target/ARM/ARMInstrThumb2.td
376642ed620ecae05b68c7bc81f79aeb2065abe0 11-Dec-2012 Evan Cheng <evan.cheng@apple.com> Some enhancements for memcpy / memset inline expansion.
1. Teach it to use overlapping unaligned load / store to copy / set the trailing
bytes. e.g. On 86, use two pairs of movups / movaps for 17 - 31 byte copies.
2. Use f64 for memcpy / memset on targets where i64 is not legal but f64 is. e.g.
x86 and ARM.
3. When memcpy from a constant string, do *not* replace the load with a constant
if it's not possible to materialize an integer immediate with a single
instruction (required a new target hook: TLI.isIntImmLegal()).
4. Use unaligned load / stores more aggressively if target hooks indicates they
are "fast".
5. Update ARM target hooks to use unaligned load / stores. e.g. vld1.8 / vst1.8.
Also increase the threshold to something reasonable (8 for memset, 4 pairs
for memcpy).

This significantly improves Dhrystone, up to 50% on ARM iOS devices.

rdar://12760078


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@169791 91177308-0d34-0410-b5e6-96231b3b80d8
/external/llvm/lib/Target/ARM/ARMInstrThumb2.td
50b66387e3eda89ba0097fedc237e41eac5d6808 14-Nov-2012 Nadav Rotem <nrotem@apple.com> The code pattern "imm0_255_neg" is used for checking if an immediate value is a small negative number.
This patch changes the definition of negative from -0..-255 to -1..-255. I am changing this because of
a bug that we had in some of the patterns that assumed that "subs" of zero does not set the carry flag.

rdar://12028498



git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@167963 91177308-0d34-0410-b5e6-96231b3b80d8
/external/llvm/lib/Target/ARM/ARMInstrThumb2.td
b341fac05a890272024dcc5c7e47d10b22d62b92 10-Nov-2012 Evan Cheng <evan.cheng@apple.com> Disable the Thumb no-return call optimization:
mov lr, pc
b.w _foo

The "mov" instruction doesn't set bit zero to one, it's putting incorrect
value in lr. It messes up backtraces.

rdar://12663632


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@167657 91177308-0d34-0410-b5e6-96231b3b80d8
/external/llvm/lib/Target/ARM/ARMInstrThumb2.td
8ba1474181fc3997cc8449d75065e1021c72d49b 30-Oct-2012 Jim Grosbach <grosbach@apple.com> ARM: Better disassembly for pc-relative LDR.

When the operand is a plain immediate rather than a label, print it
as [pc, #imm] like we do for the Thumb2 wide encoding variant.

rdar://12154503

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@166991 91177308-0d34-0410-b5e6-96231b3b80d8
/external/llvm/lib/Target/ARM/ARMInstrThumb2.td
445ba85b8d7bc8fb4689ca22131cadc80a034705 30-Oct-2012 Kevin Enderby <enderby@apple.com> Fix ARM's b.w instruction for thumb 2 and the encoding T4. The branch target
is 24 bits not 20 and the decoding needed to correctly handle converting the
J1 and J2 bits to their I1 and I2 values to reconstruct the displacement.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@166982 91177308-0d34-0410-b5e6-96231b3b80d8
/external/llvm/lib/Target/ARM/ARMInstrThumb2.td
d258eb3ec5cc5c9a28d3a8cd80241c9df24ce3a1 24-Oct-2012 Evan Cheng <evan.cheng@apple.com> Fix a miscompilation caused by a typo. When turning a adde with negative value
into a sbc with a positive number, the immediate should be complemented, not
negated. Also added a missing pattern for ARM codegen.

rdar://12559385


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@166613 91177308-0d34-0410-b5e6-96231b3b80d8
/external/llvm/lib/Target/ARM/ARMInstrThumb2.td
eb1641d54a7eda7717304bc4d55d059208d8ebed 29-Sep-2012 Bob Wilson <bob.wilson@apple.com> Add LLVM support for Swift.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@164899 91177308-0d34-0410-b5e6-96231b3b80d8
/external/llvm/lib/Target/ARM/ARMInstrThumb2.td
f632d80e0c83248909b2dbbe2decef7de84718f9 06-Sep-2012 Jakob Stoklund Olesen <stoklund@2pi.dk> Remove predicated pseudo-instructions.

These pseudos are no longer needed now that it is possible to represent
predicated instructions in SSA form.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@163275 91177308-0d34-0410-b5e6-96231b3b80d8
/external/llvm/lib/Target/ARM/ARMInstrThumb2.td
67514e90669ec9ffd954c1fcb6f8979bafcabe8a 04-Sep-2012 Arnold Schwaighofer <arnolds@codeaurora.org> Patch to implement UMLAL/SMLAL instructions for the ARM architecture

This patch corrects the definition of umlal/smlal instructions and adds support
for matching them to the ARM dag combiner.

Bug 12213

Patch by Yin Ma!


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@163136 91177308-0d34-0410-b5e6-96231b3b80d8
/external/llvm/lib/Target/ARM/ARMInstrThumb2.td
cff9baa95273bc279bf5fadb9e27afbd25cca20b 28-Aug-2012 Jakob Stoklund Olesen <stoklund@2pi.dk> Revert r162713: "Add ATOMIC_LDR* pseudo-instructions to model atomic_load on ARM."

This wasn't the right way to enforce ordering of atomics.

We are already setting the isVolatile bit on memory operands of atomic
operations which is good enough to enforce the correct ordering.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@162732 91177308-0d34-0410-b5e6-96231b3b80d8
/external/llvm/lib/Target/ARM/ARMInstrThumb2.td
dd364419ee64cd5bb234af006ce0cb285e4a84ca 28-Aug-2012 Jakob Stoklund Olesen <stoklund@2pi.dk> Add ATOMIC_LDR* pseudo-instructions to model atomic_load on ARM.

It is not safe to use normal LDR instructions because they may be
reordered by the scheduler. The ATOMIC_LDR pseudos have a mayStore flag
that prevents reordering.

Atomic loads are also prevented from participating in rematerialization
and load folding.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@162713 91177308-0d34-0410-b5e6-96231b3b80d8
/external/llvm/lib/Target/ARM/ARMInstrThumb2.td
7778ee1ed9f9e8a3aa4911ff4adcf15e46588e03 24-Aug-2012 Jakob Stoklund Olesen <stoklund@2pi.dk> Explicitly mark LEApcrel pseudos with hasSideEffects.

It's not clear that they should be marked as such, but tbb formation
fails if t2LEApcrelJT is hoisted of of a loop.

This doesn't change the flags on these instructions,
UnmodeledSideEffects was already inferred from the missing pattern.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@162603 91177308-0d34-0410-b5e6-96231b3b80d8
/external/llvm/lib/Target/ARM/ARMInstrThumb2.td
083b48af14c8bfa0e96f63ebc889704d09655fd4 17-Aug-2012 Jakob Stoklund Olesen <stoklund@2pi.dk> Add ADD and SUB to the predicable ARM instructions.

It is not my plan to duplicate the entire ARM instruction set with
predicated versions. We need a way of representing predicated
instructions in SSA form without requiring a separate opcode.

Then the pseudo-instructions can go away.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@162061 91177308-0d34-0410-b5e6-96231b3b80d8
/external/llvm/lib/Target/ARM/ARMInstrThumb2.td
053b5b0b3c34d4763511b6dcd8e0150f8e9dd083 17-Aug-2012 Jakob Stoklund Olesen <stoklund@2pi.dk> Handle ARM MOVCC optimization in PeepholeOptimizer.

Use the target independent select analysis hooks.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@162060 91177308-0d34-0410-b5e6-96231b3b80d8
/external/llvm/lib/Target/ARM/ARMInstrThumb2.td
2860b7ea3a1d60213ee7228bd274bc4f8b170772 16-Aug-2012 Jakob Stoklund Olesen <stoklund@2pi.dk> Fold predicable instructions into MOVCC / t2MOVCC.

The ARM select instructions are just predicated moves. If the select is
the only use of an operand, the instruction defining the operand can be
predicated instead, saving one instruction and decreasing register
pressure.

This implementation can turn AND/ORR/EOR instructions into their
corresponding ANDCC/ORRCC/EORCC variants. Ideally, we should be able to
predicate any instruction, but we don't yet support predicated
instructions in SSA form.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@161994 91177308-0d34-0410-b5e6-96231b3b80d8
/external/llvm/lib/Target/ARM/ARMInstrThumb2.td
65bf80e2b7d3c839331be63cdd28a8d101936bca 15-Aug-2012 Jakob Stoklund Olesen <stoklund@2pi.dk> Add missing Rfalse operand to the predicated pseudo-instructions.

When predicating this instruction:

Rd = ADD Rn, Rm

We need an extra operand to represent the value given to Rd when the
predicate is false:

Rd = ADDCC Rfalse, Rn, Rm, pred

The Rd and Rfalse operands are different registers while in SSA form.
Rfalse is tied to Rd to make sure they get the same register during
register allocation.

Previously, Rd and Rn were tied, but that is not required.

Compare to MOVCC:

Rd = MOVCC Rfalse, Rtrue, pred

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@161955 91177308-0d34-0410-b5e6-96231b3b80d8
/external/llvm/lib/Target/ARM/ARMInstrThumb2.td
a7016d6fc1c9935ede7b3dc2f39c8cdab14e40e0 12-Aug-2012 Arnold Schwaighofer <arnolds@codeaurora.org> Revert 161581: Patch to implement UMLAL/SMLAL instructions for the ARM
architecture

It broke MultiSource/Applications/JM/ldecod/ldecod on armv7 thumb O0 g and armv7
thumb O3.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@161736 91177308-0d34-0410-b5e6-96231b3b80d8
/external/llvm/lib/Target/ARM/ARMInstrThumb2.td
bcc4c1d2d1b6877418de92835c537d79d44363a6 09-Aug-2012 Arnold Schwaighofer <arnolds@codeaurora.org> Patch to implement UMLAL/SMLAL instructions for the ARM architecture

This patch corrects the definition of umlal/smlal instructions and adds support
for matching them to the ARM dag combiner.

Bug 12213

Patch by Yin Ma!


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@161581 91177308-0d34-0410-b5e6-96231b3b80d8
/external/llvm/lib/Target/ARM/ARMInstrThumb2.td
9249ef3b994ec94b1a70c0c1f8e60115ec70144b 02-Aug-2012 Jim Grosbach <grosbach@apple.com> ARM: More InstAlias refactors to use #NAME#.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@161220 91177308-0d34-0410-b5e6-96231b3b80d8
/external/llvm/lib/Target/ARM/ARMInstrThumb2.td
5c6c128b8162ab23f6330f8b8b5e66494458ec65 02-Aug-2012 Jim Grosbach <grosbach@apple.com> ARM: Refactor instaliases using TableGen support for #NAME#.

Now that TableGen supports references to NAME w/o it being explicitly
referenced in the definition's own name, use that to simplify
assembly InstAlias definitions in multiclasses.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@161218 91177308-0d34-0410-b5e6-96231b3b80d8
/external/llvm/lib/Target/ARM/ARMInstrThumb2.td
1fb27eccf5b7eabde9678d84411eb1df8a693683 02-Aug-2012 Jiangning Liu <jiangning.liu@arm.com> Fix #13241, a bug around shift immediate operand for ARM instruction ADR.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@161159 91177308-0d34-0410-b5e6-96231b3b80d8
/external/llvm/lib/Target/ARM/ARMInstrThumb2.td
135fb455b72b1db12d93aa13b13872780db6315b 13-Jul-2012 Jakob Stoklund Olesen <stoklund@2pi.dk> Remove variable_ops from ARM call instructions.

Function argument registers are added to the call SDNode, but
InstrEmitter now knows how to make those operands implicit, and the call
instruction doesn't have to be variadic.

Explicit register operands should only be those that are encoded in the
instruction, implicit register operands are for extra dependencies like
call argument and return values.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@160188 91177308-0d34-0410-b5e6-96231b3b80d8
/external/llvm/lib/Target/ARM/ARMInstrThumb2.td
ac03af4ea9f6a33164dbb5a0bc59ccc738939a4c 02-Jul-2012 Bob Wilson <bob.wilson@apple.com> Do not attempt to use ROR for Thumb1.
Patch by Matt Fischer!

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@159538 91177308-0d34-0410-b5e6-96231b3b80d8
/external/llvm/lib/Target/ARM/ARMInstrThumb2.td
fc47253294047a62b30a2347a0bf421d934fb69c 23-Jun-2012 Evan Cheng <evan.cheng@apple.com> (sub X, imm) gets canonicalized to (add X, -imm)

There are patterns to handle immediates when they fit in the immediate field.
e.g. %sub = add i32 %x, -123
=> sub r0, r0, #123
Add patterns to catch immediates that do not fit but should be materialized
with a single movw instruction rather than movw + movt pair.
e.g. %sub = add i32 %x, -65535
=> movw r1, #65535
sub r0, r0, r1

rdar://11726136


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@159057 91177308-0d34-0410-b5e6-96231b3b80d8
/external/llvm/lib/Target/ARM/ARMInstrThumb2.td
7e99a60857532ca2973cf9dabc790d84a2e15a8a 18-Jun-2012 Jim Grosbach <grosbach@apple.com> ARM: Define generic HINT instruction.

The NOP, WFE, WFI, SEV and YIELD instructions are all hints w/
a different immediate value in bits [7,0]. Define a generic HINT
instruction and refactor NOP, WFI, WFI, SEV and YIELD to be
assembly aliases of that.

rdar://11600518

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@158674 91177308-0d34-0410-b5e6-96231b3b80d8
/external/llvm/lib/Target/ARM/ARMInstrThumb2.td
96ef284da415cccd60cf5066929a4683dec5dd79 18-Jun-2012 Joel Jones <joel_k_jones@apple.com> This change handles a another case for generating the bic instruction
when a compile time constant is known. This occurs when implicitly zero
extending function arguments from 16 bits to 32 bits. The 8 bit case doesn't
need to be handled, as the 8 bit constants are encoded directly, thereby
not needing a separate load instruction to form the constant into a register.

<rdar://problem/11481151>


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@158659 91177308-0d34-0410-b5e6-96231b3b80d8
/external/llvm/lib/Target/ARM/ARMInstrThumb2.td
ad5c8808923ed5b24b586cec544e45cee539e529 11-Jun-2012 Bill Wendling <isanbard@gmail.com> Re-enable the CMN instruction.

We turned off the CMN instruction because it had semantics which we weren't
getting correct. If we are comparing with an immediate, then it's okay to use
the CMN instruction.
<rdar://problem/7569620>


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@158302 91177308-0d34-0410-b5e6-96231b3b80d8
/external/llvm/lib/Target/ARM/ARMInstrThumb2.td
e061053051a8eaafe020b2d0a81f9e4ee910c1d0 05-Jun-2012 Joel Jones <joel_k_jones@apple.com> Revert commit r157966

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@157972 91177308-0d34-0410-b5e6-96231b3b80d8
/external/llvm/lib/Target/ARM/ARMInstrThumb2.td
dd52bf2ed806229732115400b2a060204f24dea3 05-Jun-2012 Joel Jones <joel_k_jones@apple.com> This change handles a another case for generating the bic instruction
when a compile time constant is known. This occurs when implicitly zero
extending function arguments from 16 bits to 32 bits.

<rdar://problem/11481151>


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@157966 91177308-0d34-0410-b5e6-96231b3b80d8
/external/llvm/lib/Target/ARM/ARMInstrThumb2.td
b551f0cc7882cd9cc9c3a3b2e4d35bc942a9cb44 21-May-2012 Jim Grosbach <grosbach@apple.com> Thumb2: RSB source register should be rGRP not GPRnopc.

t2RSB defined the operand correctly, but tRSBS didn't.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@157200 91177308-0d34-0410-b5e6-96231b3b80d8
/external/llvm/lib/Target/ARM/ARMInstrThumb2.td
0fd4f3c8de07e9cfe2a86093ccada82d64f38bfe 18-May-2012 Kevin Enderby <enderby@apple.com> Fix the encoding of the armv7m (MClass) for MSR APSR writes which was missing
the 0b10 mask encoding bits. Make MSR APSR writes without a _<bits> qualifier
an alias for MSR APSR_nzcvq even though ARM as deprecated it use. Also add
support for suffixes (_nzcvq, _g, _nzcvqg) for APSR versions. Some FIXMEs in
the code for better error checking when versions shouldn't be used.
rdar://11457025


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@157019 91177308-0d34-0410-b5e6-96231b3b80d8
/external/llvm/lib/Target/ARM/ARMInstrThumb2.td
54319e2a8c22e7ee7044e398fbd8d4287e2b7c4f 01-May-2012 Jim Grosbach <grosbach@apple.com> ARM: Add a few missing add->sub aliases w/ 'w' suffix.

Aliases for adding a negative immediate when using an explicit 'w'
suffix. E.g.,
adds.w r2, #-16
adds.w r2, r2, #-16
addw r2, #-16
addw r2, #-16
addw r2, r2, #-16

rdar://11330769

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@155946 91177308-0d34-0410-b5e6-96231b3b80d8
/external/llvm/lib/Target/ARM/ARMInstrThumb2.td
97a454317af1903b269d42d368d2263ab79b6ed1 27-Apr-2012 Evan Cheng <evan.cheng@apple.com> - thumbv6 shouldn't imply +thumb2. Cortex-M0 doesn't suppport 32-bit Thumb2
instructions.
- However, it does support dmb, dsb, isb, mrs, and msr.
rdar://11331541


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@155685 91177308-0d34-0410-b5e6-96231b3b80d8
/external/llvm/lib/Target/ARM/ARMInstrThumb2.td
c92ba4e90501e407c8f71a18e62b8858513085ed 24-Apr-2012 Jim Grosbach <grosbach@apple.com> Tidy up. 80 columns, whitespace, et. al.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@155399 91177308-0d34-0410-b5e6-96231b3b80d8
/external/llvm/lib/Target/ARM/ARMInstrThumb2.td
2a7d3a93735f97c2a4cabcc08a88d702c28cb0d4 13-Apr-2012 Kevin Enderby <enderby@apple.com> Fix a few more places in the ARM disassembler so that branches get
symbolic operands added when using the C disassembler API.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@154628 91177308-0d34-0410-b5e6-96231b3b80d8
/external/llvm/lib/Target/ARM/ARMInstrThumb2.td
a23ecc2ba945c9685a76552276e5f6f41859b4ab 10-Apr-2012 Jim Grosbach <grosbach@apple.com> ARM fix cc_out operand handling for t2SUBrr instructions.

We were incorrectly conflating some add variants which don't have a
cc_out operand with the mirroring sub encodings, which do. Part of the
awesome non-orthogonality legacy of thumb1. Similarly, handling of
add/sub of an immediate was sometimes incorrectly removing the cc_out
operand for add/sub register variants.

rdar://11216577

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@154411 91177308-0d34-0410-b5e6-96231b3b80d8
/external/llvm/lib/Target/ARM/ARMInstrThumb2.td
f16936e5923156863906c915de657b134db4fb16 06-Apr-2012 Jakob Stoklund Olesen <stoklund@2pi.dk> Deduplicate ARM call-related instructions.

We had special instructions for iOS because r9 is call-clobbered, but
that is represented dynamically by the register mask operands now, so
there is no need for the pseudo-instructions.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@154144 91177308-0d34-0410-b5e6-96231b3b80d8
/external/llvm/lib/Target/ARM/ARMInstrThumb2.td
4e53fe8dc61ad48650ac6fe30d7268ec92b7fc1a 05-Apr-2012 Jim Grosbach <grosbach@apple.com> ARM assembly aliases for add negative immediates using sub.

'add r2, #-1024' should just use 'sub r2, #1024' rather than erroring out.
Thumb1 aliases for adding a negative immediate to the stack pointer,
also.

rdar://11192734

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@154123 91177308-0d34-0410-b5e6-96231b3b80d8
/external/llvm/lib/Target/ARM/ARMInstrThumb2.td
c5041cac7d3aeaa7350abadf2a7ada92e8da27dc 04-Apr-2012 Jakob Stoklund Olesen <stoklund@2pi.dk> Implement ARMBaseInstrInfo::commuteInstruction() for MOVCCr.

A MOVCCr instruction can be commuted by inverting the condition. This
can help reduce register pressure and remove unnecessary copies in some
cases.

<rdar://problem/11182914>

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@154033 91177308-0d34-0410-b5e6-96231b3b80d8
/external/llvm/lib/Target/ARM/ARMInstrThumb2.td
b22e70d835a88753d3ec6d5ee5e85b23fa6834b1 29-Mar-2012 Jim Grosbach <grosbach@apple.com> ARM assembly 'cmp lr, #0' should not encode using 'cmn'.

The CMP->CMN alias was matching for an immediate of zero when it
should only match for negative values.

rdar://11129224

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@153689 91177308-0d34-0410-b5e6-96231b3b80d8
/external/llvm/lib/Target/ARM/ARMInstrThumb2.td
03a18525385bafdb6763629aed144b6b8063290d 20-Mar-2012 Evan Cheng <evan.cheng@apple.com> Change conditional instructions definitions, e.g. ANDCC, ARMPseudoExpand and t2PseudoExpand.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@153135 91177308-0d34-0410-b5e6-96231b3b80d8
/external/llvm/lib/Target/ARM/ARMInstrThumb2.td
11d5dc3d50217711462b453ca9592e39d0c879e7 16-Mar-2012 Jim Grosbach <grosbach@apple.com> ARM fix silly typo in optional operand alias.

rdar://11065671

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@152954 91177308-0d34-0410-b5e6-96231b3b80d8
/external/llvm/lib/Target/ARM/ARMInstrThumb2.td
213d2e7dc31bef3ceeef0cefa703cb4ce52de51a 16-Mar-2012 Jim Grosbach <grosbach@apple.com> ARM optional operand on MRC/MCR assembly instructions.

rdar://11058464

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@152883 91177308-0d34-0410-b5e6-96231b3b80d8
/external/llvm/lib/Target/ARM/ARMInstrThumb2.td
4bfcd4acbc7d12aa55f8de9af84a38422f0f6d83 28-Feb-2012 Evan Cheng <evan.cheng@apple.com> Re-commit r151623 with fix. Only issue special no-return calls if it's a direct call.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@151645 91177308-0d34-0410-b5e6-96231b3b80d8
/external/llvm/lib/Target/ARM/ARMInstrThumb2.td
20bd5296cec8d8d597ab9db2aca7346a88e580c8 28-Feb-2012 Daniel Dunbar <daniel@zuster.org> Revert r151623 "Some ARM implementaions, e.g. A-series, does return stack prediction. ...", it is breaking the Clang build during the Compiler-RT part.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@151630 91177308-0d34-0410-b5e6-96231b3b80d8
/external/llvm/lib/Target/ARM/ARMInstrThumb2.td
ec52aaa12f57896fc806e849fa21a61603050ac4 28-Feb-2012 Evan Cheng <evan.cheng@apple.com> Some ARM implementaions, e.g. A-series, does return stack prediction. That is,
the processor keeps a return addresses stack (RAS) which stores the address
and the instruction execution state of the instruction after a function-call
type branch instruction.

Calling a "noreturn" function with normal call instructions (e.g. bl) can
corrupt RAS and causes 100% return misprediction so LLVM should use a
unconditional branch instead. i.e.
mov lr, pc
b _foo
The "mov lr, pc" is issued in order to get proper backtrace.

rdar://8979299


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@151623 91177308-0d34-0410-b5e6-96231b3b80d8
/external/llvm/lib/Target/ARM/ARMInstrThumb2.td
9e931f6a64d329276d6253ec1baec9df96f4bbd6 24-Feb-2012 Jim Grosbach <grosbach@apple.com> Thumb2 asm aliases for wide bitwise w/ immediate instructions.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@151384 91177308-0d34-0410-b5e6-96231b3b80d8
/external/llvm/lib/Target/ARM/ARMInstrThumb2.td
c54f6348861517398f17e85f41b30c4dd079fc3d 24-Feb-2012 Jakob Stoklund Olesen <stoklund@2pi.dk> Switch ARM target to register masks.

I'll let the buildbots determine the compile time improvements from this
change, but 464.h264ref has 5% faster codegen at -O2.

This patch does cause some assembly changes. Branch folding can make
different decisions about calls with dead return values.
CriticalAntiDepBreaker may choose different registers because its
liveness tracking is affected. MachineCopyPropagation may sometimes
leave a dead copy behind.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@151331 91177308-0d34-0410-b5e6-96231b3b80d8
/external/llvm/lib/Target/ARM/ARMInstrThumb2.td
c892aeb26601cc5109490d30c7e170cb07f84428 23-Feb-2012 Evan Cheng <evan.cheng@apple.com> Optimize a couple of common patterns involving conditional moves where the false
value is zero. Instead of a cmov + op, issue an conditional op instead. e.g.
cmp r9, r4
mov r4, #0
moveq r4, #1
orr lr, lr, r4

should be:
cmp r9, r4
orreq lr, lr, #1

That is, optimize (or x, (cmov 0, y, cond)) to (or.cond x, y). Similarly extend
this to xor as well as (and x, (cmov -1, y, cond)) => (and.cond x, y).

It's possible to extend this to ADD and SUB but I don't think they are common.

rdar://8659097


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@151224 91177308-0d34-0410-b5e6-96231b3b80d8
/external/llvm/lib/Target/ARM/ARMInstrThumb2.td
31d157ae1ac2cd9c787dc3c1d28e64c682803844 18-Feb-2012 Jia Liu <proljc@gmail.com> Emacs-tag and some comment fix for all ARM, CellSPU, Hexagon, MBlaze, MSP430, PPC, PTX, Sparc, X86, XCore.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@150878 91177308-0d34-0410-b5e6-96231b3b80d8
/external/llvm/lib/Target/ARM/ARMInstrThumb2.td
2c6d0f2625b4509d50006b931d053bed08e19fc2 23-Jan-2012 Anton Korobeynikov <asl@math.spbu.ru> Add missed mayStore flag to STREXD / t2STREXD


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@148742 91177308-0d34-0410-b5e6-96231b3b80d8
/external/llvm/lib/Target/ARM/ARMInstrThumb2.td
12a8863828879168ffd634df09f3aa91b0b256ee 21-Jan-2012 Jim Grosbach <grosbach@apple.com> Thumb2 'add rd, pc, imm' alternate form for 'adr' instruction.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@148601 91177308-0d34-0410-b5e6-96231b3b80d8
/external/llvm/lib/Target/ARM/ARMInstrThumb2.td
0b4c6738868e11ba06047a406f79489cb1db8c5a 18-Jan-2012 Jim Grosbach <grosbach@apple.com> Thumb2 alternate syntax for LDR(literal) and friends.

Explicit pc-relative syntax. For example, "ldrb r2, [pc, #-22]".

rdar://10250964

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@148432 91177308-0d34-0410-b5e6-96231b3b80d8
/external/llvm/lib/Target/ARM/ARMInstrThumb2.td
5aa5368ccd6b4711d67e00a190e1da1f41b713a0 18-Jan-2012 Jim Grosbach <grosbach@apple.com> Replace FIXME with explanatory comment.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@148427 91177308-0d34-0410-b5e6-96231b3b80d8
/external/llvm/lib/Target/ARM/ARMInstrThumb2.td
ece8b73eb28426b7cec82b1a91e83155a8343ad0 13-Jan-2012 Jakob Stoklund Olesen <stoklund@2pi.dk> Use RegisterTuples to generate pseudo-registers.

The QQ and QQQQ registers are not 'real', they are pseudo-registers used
to model some vld and vst instructions.

This makes the call clobber lists longer, but I intend to get rid of
those soon.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@148151 91177308-0d34-0410-b5e6-96231b3b80d8
/external/llvm/lib/Target/ARM/ARMInstrThumb2.td
2cc5cda464e7c936215281934193658cb799c603 21-Dec-2011 Jim Grosbach <grosbach@apple.com> Thumb2 assembly parsing of 'mov(register shifted register)' aliases.

These map to the ASR, LSR, LSL, ROR instruction definitions.

rdar://10615373

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@147094 91177308-0d34-0410-b5e6-96231b3b80d8
/external/llvm/lib/Target/ARM/ARMInstrThumb2.td
afff941211526a31f931aa9fcac84ae42ff60ef0 20-Dec-2011 Evan Cheng <evan.cheng@apple.com> ARM target code clean up. Check for iOS, not Darwin where it makes sense.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@146981 91177308-0d34-0410-b5e6-96231b3b80d8
/external/llvm/lib/Target/ARM/ARMInstrThumb2.td
b6744db06f088e1c8a8563c0cb6c202de9ef8aaa 16-Dec-2011 Jim Grosbach <grosbach@apple.com> Thumb2 ADR assembly parsing w/o the .w suffix.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@146710 91177308-0d34-0410-b5e6-96231b3b80d8
/external/llvm/lib/Target/ARM/ARMInstrThumb2.td
4677708d4f3a9f2fd76d589a604936b294da309f 14-Dec-2011 Jim Grosbach <grosbach@apple.com> ARM/Thumb2 mov vs. mvn alias goes both ways.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@146570 91177308-0d34-0410-b5e6-96231b3b80d8
/external/llvm/lib/Target/ARM/ARMInstrThumb2.td
8d11c6349f9bf276534907245946518042c1bb60 14-Dec-2011 Jim Grosbach <grosbach@apple.com> ARM/Thumb2 'cmp rn, #imm' alias to cmn.

When 'cmp rn #imm' doesn't match due to the immediate not being representable,
but 'cmn rn, #-imm' does match, use the latter in place of the former, as
it's equivalent.

rdar://10552389

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@146567 91177308-0d34-0410-b5e6-96231b3b80d8
/external/llvm/lib/Target/ARM/ARMInstrThumb2.td
863d2af9477e331955a9bee8be1969ce658b59b5 13-Dec-2011 Jim Grosbach <grosbach@apple.com> Thumb2 assembler aliases for "mov(shifted register)"

rdar://10549767


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@146520 91177308-0d34-0410-b5e6-96231b3b80d8
/external/llvm/lib/Target/ARM/ARMInstrThumb2.td
b0659873e6d983eae1e29ecddedcfabb9cdc1eea 13-Dec-2011 Jim Grosbach <grosbach@apple.com> Thumb2 pre/post indexed stores can be from any non-PC GPR.

rdar://10549786

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@146518 91177308-0d34-0410-b5e6-96231b3b80d8
/external/llvm/lib/Target/ARM/ARMInstrThumb2.td
e91e7bcadc445381adef5c5154e8e2cba074505f 13-Dec-2011 Jim Grosbach <grosbach@apple.com> ARM pre-UAL NEG mnemonic for convenience when porting old code.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@146511 91177308-0d34-0410-b5e6-96231b3b80d8
/external/llvm/lib/Target/ARM/ARMInstrThumb2.td
840bf7eda7c81059a0aae9abd51262147c60d814 09-Dec-2011 Jim Grosbach <grosbach@apple.com> ARM assembly aliases for BIC<-->AND (immediate).

When the immediate operand of an AND or BIC instruction isn't representable
in the immediate field of the instruction, but the bitwise negation of the
immediate is, assemble the instruction as the inverse operation instead
with the inverted immediate as the operand.

rdar://10550057


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@146283 91177308-0d34-0410-b5e6-96231b3b80d8
/external/llvm/lib/Target/ARM/ARMInstrThumb2.td
3bc8a3d3afe3ddda884a681002e24850099b719e 08-Dec-2011 Jim Grosbach <grosbach@apple.com> ARM assembler aliases for "add Rd, #-imm" to "sub Rd, #imm".


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@146111 91177308-0d34-0410-b5e6-96231b3b80d8
/external/llvm/lib/Target/ARM/ARMInstrThumb2.td
8524bca75076a5e94ba3263968fa4b9e4fc6234f 07-Dec-2011 Jim Grosbach <grosbach@apple.com> Thumb2 alias for long-form pop and friends.
rdar://10542474

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@146046 91177308-0d34-0410-b5e6-96231b3b80d8
/external/llvm/lib/Target/ARM/ARMInstrThumb2.td
cf9814ddd277dfcbb4ec5727e2cb510b8a451e04 06-Dec-2011 Jim Grosbach <grosbach@apple.com> Thumb2: MUL two-operand form encoding operand order fix.

Fix the alias to encode 'mul r5, r6' as if it were 'mul r5, r6, r5' so we
match gas.

rdar://10532439

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@145922 91177308-0d34-0410-b5e6-96231b3b80d8
/external/llvm/lib/Target/ARM/ARMInstrThumb2.td
7f1ec9570d673aedd13c5621407085400bab8299 15-Nov-2011 Jim Grosbach <grosbach@apple.com> Thumb2 two-operand 'mul' instruction wide encoding parsing.

rdar://10449724

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@144684 91177308-0d34-0410-b5e6-96231b3b80d8
/external/llvm/lib/Target/ARM/ARMInstrThumb2.td
9588c10b69121d9746b09e868fcc8879cbd98e3a 12-Nov-2011 Jim Grosbach <grosbach@apple.com> ARM refactor simple immediate asm operand render methods.

These immediate operands all use the same simple logic for rendering to
MCInst, so have them share the method for doing so.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@144439 91177308-0d34-0410-b5e6-96231b3b80d8
/external/llvm/lib/Target/ARM/ARMInstrThumb2.td
3c5d6e4df495316c0d2e0a7bca5ec7a88aa400a5 10-Nov-2011 Jim Grosbach <grosbach@apple.com> Thumb2 assembly parsing STMDB w/ optional .w suffix.

rdar://10422955


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@144242 91177308-0d34-0410-b5e6-96231b3b80d8
/external/llvm/lib/Target/ARM/ARMInstrThumb2.td
89a633708542de5847e807f98f86edfefc9fc019 29-Oct-2011 Jim Grosbach <grosbach@apple.com> Add Thumb2 alias for "mov Rd, #imm" to "mvn Rd, #~imm".

When '~imm' is encodable as a t2_so_imm but plain 'imm' is not. For example,
mov r2, #-3
becomes
mvn r2, #2

rdar://10349224


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@143235 91177308-0d34-0410-b5e6-96231b3b80d8
/external/llvm/lib/Target/ARM/ARMInstrThumb2.td
5d0492cfc4521ccb13b4961227b279991a17c393 28-Oct-2011 Jim Grosbach <grosbach@apple.com> Thumb2 ADD/SUB instructions encoding selection outside IT block.

Outside an IT block, "add r3, #2" should select a 32-bit wide encoding
rather than generating an error indicating the 16-bit encoding is only
legal in an IT block (outside, the 'S' suffic is required for the 16-bit
encoding).

rdar://10348481


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@143201 91177308-0d34-0410-b5e6-96231b3b80d8
/external/llvm/lib/Target/ARM/ARMInstrThumb2.td
88484c00307274568ab068909cb38ecaedd41cbf 27-Oct-2011 Jim Grosbach <grosbach@apple.com> Thumb2 t2LDMDB[_UPD] assembly parsing to recognize .w suffix.

rdar://10348844

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@143110 91177308-0d34-0410-b5e6-96231b3b80d8
/external/llvm/lib/Target/ARM/ARMInstrThumb2.td
036a67d670413f8116415b87457f22d256f314ae 27-Oct-2011 Jim Grosbach <grosbach@apple.com> Thumb2 t2MVNi assembly parsing to recognize ".w" suffix.

rdar://10348584


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@143108 91177308-0d34-0410-b5e6-96231b3b80d8
/external/llvm/lib/Target/ARM/ARMInstrThumb2.td
a581328ceb4c9db165d79a4dabd6b28db799d70f 27-Oct-2011 Jim Grosbach <grosbach@apple.com> Thumb2 ldr pc-relative encoding fixes.

We were parsing label references to the i12 encoding, which isn't right.
They need to go to the pci variant instead.

More of rdar://10348687

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@143068 91177308-0d34-0410-b5e6-96231b3b80d8
/external/llvm/lib/Target/ARM/ARMInstrThumb2.td
9c5edc00c41c29be5b088710a4a7ae8507179b64 26-Oct-2011 Jim Grosbach <grosbach@apple.com> Thumb2 remove redundant ".w" suffix from t2MVNCCi pattern.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@143034 91177308-0d34-0410-b5e6-96231b3b80d8
/external/llvm/lib/Target/ARM/ARMInstrThumb2.td
f8e74f816df2d0b83e3fe08da3dff4e8c2421e5e 24-Oct-2011 Jim Grosbach <grosbach@apple.com> Thumb2 LDM instructions can target PC. Make sure to encode it.

PR11220


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@142801 91177308-0d34-0410-b5e6-96231b3b80d8
/external/llvm/lib/Target/ARM/ARMInstrThumb2.td
90b7b12f012d9234488277a323231e0b7a8d12ac 18-Oct-2011 Andrew Trick <atrick@apple.com> Use ARM/t2PseudoInst class from ARM/Thumb2 special adds/subs patterns.

Clean up the patterns, fix comments, and avoid confusing both tools
and coders. Note that the special adds/subs SelectionDAG nodes no
longer have the dummy cc_out operand.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@142397 91177308-0d34-0410-b5e6-96231b3b80d8
/external/llvm/lib/Target/ARM/ARMInstrThumb2.td
7f5f0dae33c8a105b51532d5ceb3339ac2ce0cbc 18-Oct-2011 Andrew Trick <atrick@apple.com> whitespace


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@142394 91177308-0d34-0410-b5e6-96231b3b80d8
/external/llvm/lib/Target/ARM/ARMInstrThumb2.td
9858a48afcd39d41ad7d424b159422370cffca84 18-Oct-2011 Jim Grosbach <grosbach@apple.com> Thumb2 parsing of 'mov.w' gets the cc_out operand wrong. Add an alias for it.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@142363 91177308-0d34-0410-b5e6-96231b3b80d8
/external/llvm/lib/Target/ARM/ARMInstrThumb2.td
0851a29b6d592f6510b5ff17e7607bb3f492fca1 18-Oct-2011 Eli Friedman <eli.friedman@gmail.com> Fix misc warnings. Patch by Joe Abbey.



git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@142332 91177308-0d34-0410-b5e6-96231b3b80d8
/external/llvm/lib/Target/ARM/ARMInstrThumb2.td
13a7121858238bc3490b27206a609bf8a2ce1f21 18-Oct-2011 Bill Wendling <isanbard@gmail.com> Now Igor, throw the switch...give my creation life!

Use the custom inserter for the ARM setjmp intrinsics. Instead of creating the
SjLj dispatch table in IR, where it frequently violates serveral assumptions --
in particular assumptions made by the landingpad instruction about what can
branch to a landing pad and what cannot. Performing this in the back-end allows
us to violate these assumptions without the IR getting angry at us.

It also allows us to perform a small optimization. We can shove the address of
the dispatch's basic block into the function context and not have to add code
around the setjmp to check for the return value and jump to the dispatch.

Neat, huh?
<rdar://problem/10116753>


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@142294 91177308-0d34-0410-b5e6-96231b3b80d8
/external/llvm/lib/Target/ARM/ARMInstrThumb2.td
6f9c28060f3630a1838ca5b0b3cee87d184937cf 17-Oct-2011 Cameron Zwarich <zwarich@apple.com> Pseudoinstructions should not be less constrained than the instruction they are
lowered to. This fixes a lot of verifier failures on the test suite.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@142254 91177308-0d34-0410-b5e6-96231b3b80d8
/external/llvm/lib/Target/ARM/ARMInstrThumb2.td
daada347b550353acbd94fa863bb810854ab6b7b 16-Oct-2011 Cameron Zwarich <zwarich@apple.com> Add flags on Thumb2 indexed stores paralleling the flags on the indexed loads.
These missing flags show up as errors when running -verify-coalescing on
test-suite.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@142111 91177308-0d34-0410-b5e6-96231b3b80d8
/external/llvm/lib/Target/ARM/ARMInstrThumb2.td
d575137634377b0aa9f59d3ecb7c82eb2088033c 16-Oct-2011 Cameron Zwarich <zwarich@apple.com> Fix an obvious typo found when looking at nearby code.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@142110 91177308-0d34-0410-b5e6-96231b3b80d8
/external/llvm/lib/Target/ARM/ARMInstrThumb2.td
c66e7afcf2810a2c1ebf08514eaf45c478e5ff67 12-Oct-2011 Jim Grosbach <grosbach@apple.com> Thumb2 assembly parsing and encoding for LDC/STC.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@141811 91177308-0d34-0410-b5e6-96231b3b80d8
/external/llvm/lib/Target/ARM/ARMInstrThumb2.td
ef2c86f8760f717882821987664bf5e7604ffe20 11-Oct-2011 Bill Wendling <isanbard@gmail.com> Reapply r141365 now that PR11107 is fixed.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@141591 91177308-0d34-0410-b5e6-96231b3b80d8
/external/llvm/lib/Target/ARM/ARMInstrThumb2.td
eba564ceace5861a321c230acf5df32e55ed9be5 10-Oct-2011 Bill Wendling <isanbard@gmail.com> Revert r141365. It was causing MultiSource/Benchmarks/MiBench/consumer-lame to
hang, and possibly SPEC/CINT2006/464_h264ref.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@141560 91177308-0d34-0410-b5e6-96231b3b80d8
/external/llvm/lib/Target/ARM/ARMInstrThumb2.td
244455e6d6bb95c5e556ace66adb148dbcd16a27 07-Oct-2011 Anton Korobeynikov <asl@math.spbu.ru> Peephole optimization for ABS on ARM.
Patch by Ana Pazos!


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@141365 91177308-0d34-0410-b5e6-96231b3b80d8
/external/llvm/lib/Target/ARM/ARMInstrThumb2.td
9e5887b17e634b98f7c1cf0ee4f25c218097d08e 05-Oct-2011 Kevin Enderby <enderby@apple.com> Adding back support for printing operands symbolically to ARM's new disassembler
using llvm's public 'C' disassembler API now including annotations.

Hooked this up to Darwin's otool(1) so it can again print things like branch
targets for example this:
blx _puts
instead of this:
blx #-36
and includes support for annotations for branches to symbol stubs like:
bl 0x40 @ symbol stub for: _puts
and annotations for pc relative loads like this:
ldr r3, #8 @ literal pool for: Hello, world!
Also again can print the expression encoded in the Mach-O relocation entries for
things like this:
movt r0, :upper16:((_foo-_bar)+1234)


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@141129 91177308-0d34-0410-b5e6-96231b3b80d8
/external/llvm/lib/Target/ARM/ARMInstrThumb2.td
b95ed6ec464c7c675ac71a57dfd9cc8041533a1c 03-Oct-2011 Jim Grosbach <grosbach@apple.com> Thumb2 ADD/SUB can take SP as a destination register.

It's documented as a separate instruction to line up with the Thumb1
encodings, for which it really is a distinct instruction encoding.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@141020 91177308-0d34-0410-b5e6-96231b3b80d8
/external/llvm/lib/Target/ARM/ARMInstrThumb2.td
acad68da50581de905a994ed3c6b9c197bcea687 28-Sep-2011 James Molloy <james.molloy@arm.com> Check in a patch that has already been code reviewed by Owen that I'd forgotten to commit.

Build on previous patches to successfully distinguish between an M-series and A/R-series MSR and MRS instruction. These take different mask names and have a *slightly* different opcode format.

Add decoder and disassembler tests.

Improvement on the previous patch - successfully distinguish between valid v6m and v7m masks (one is a subset of the other). The patch had to be edited slightly to apply to ToT.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@140696 91177308-0d34-0410-b5e6-96231b3b80d8
/external/llvm/lib/Target/ARM/ARMInstrThumb2.td
25ddc2bf7ed69f500dd4d3e003004bda28c3dd95 28-Sep-2011 Jim Grosbach <grosbach@apple.com> ARM Thumb2 asm parsing [SU]XT[BH] without rotate but with .w.

Add inst alias to handle these assembly forms. Add tests, too.

rdar://10178799


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@140647 91177308-0d34-0410-b5e6-96231b3b80d8
/external/llvm/lib/Target/ARM/ARMInstrThumb2.td
2dafe200ca2708ec08656e51a52ce4d718e8a1d6 27-Sep-2011 Owen Anderson <resistor@mac.com> Remove extraneous commit garbage.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@140581 91177308-0d34-0410-b5e6-96231b3b80d8
/external/llvm/lib/Target/ARM/ARMInstrThumb2.td
0afa0094afdfe589f407feb76948f273b414b278 26-Sep-2011 Owen Anderson <resistor@mac.com> ASR #32 is not allowed on Thumb2 USAT and SSAT instructions.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@140560 91177308-0d34-0410-b5e6-96231b3b80d8
/external/llvm/lib/Target/ARM/ARMInstrThumb2.td
4a713570b60eb5c849d988d68057f6df4d1f3999 23-Sep-2011 Owen Anderson <resistor@mac.com> Add more fixed bits to USAT16 encoding to filter out incorrect decodings.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@140422 91177308-0d34-0410-b5e6-96231b3b80d8
/external/llvm/lib/Target/ARM/ARMInstrThumb2.td
0781c1f700886f94f5430380a5e82d7ccf6bbdc0 23-Sep-2011 Owen Anderson <resistor@mac.com> Post-index loads/stores in still need to print the post-indexed immediate, even if it's zero, to distinguish them from non-post-indexed instructions.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@140420 91177308-0d34-0410-b5e6-96231b3b80d8
/external/llvm/lib/Target/ARM/ARMInstrThumb2.td
61268701931d747fa95e0be8a368101e7f97b83c 22-Sep-2011 Owen Anderson <resistor@mac.com> Turns out that Thumb2 ADR doesn't need special printing like LDR does. Fix other test failures I caused.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@140284 91177308-0d34-0410-b5e6-96231b3b80d8
/external/llvm/lib/Target/ARM/ARMInstrThumb2.td
e1368729700f1a51ee5cf33431df985e232bcc68 22-Sep-2011 Owen Anderson <resistor@mac.com> Print out immediate offset versions of PC-relative load/store instructions as [pc, #123] rather than simply #123.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@140283 91177308-0d34-0410-b5e6-96231b3b80d8
/external/llvm/lib/Target/ARM/ARMInstrThumb2.td
3be654f8082dcbdff011a6716a7c90486e28fc9e 21-Sep-2011 Andrew Trick <atrick@apple.com> Lower ARM adds/subs to add/sub after adding optional CPSR operand.

This is still a hack until we can teach tblgen to generate the
optional CPSR operand rather than an implicit CPSR def. But the
strangeness is now limited to the selection DAG. ADD/SUB MI's no
longer have implicit CPSR defs, nor do we allow flag setting variants
of these opcodes in machine code. There are several corner cases to
consider, and getting one wrong would previously lead to nasty
miscompilation. It's not the first time I've debugged one, so this
time I added enough verification to ensure it won't happen again.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@140228 91177308-0d34-0410-b5e6-96231b3b80d8
/external/llvm/lib/Target/ARM/ARMInstrThumb2.td
83a8031336a1155e6b0c3e9a84164324e08d1c8b 20-Sep-2011 Andrew Trick <atrick@apple.com> Restore hasPostISelHook tblgen flag.

No functionality change. The hook makes it explicit which patterns
require "special" handling. i.e. it self-documents tblgen
deficiencies. I plan to add verification in ExpandISelPseudos and
Thumb2SizeReduce to catch any missing hasPostISelHooks. Otherwise it's
too fragile.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@140160 91177308-0d34-0410-b5e6-96231b3b80d8
/external/llvm/lib/Target/ARM/ARMInstrThumb2.td
4815d56bb2c356a610f46753c5f1cefafa113b21 20-Sep-2011 Andrew Trick <atrick@apple.com> ARM isel bug fix for adds/subs operands.

Modified ARMISelLowering::AdjustInstrPostInstrSelection to handle the
full gamut of CPSR defs/uses including instructins whose "optional"
cc_out operand is not really optional. This allowed removal of the
hasPostISelHook to simplify the .td files and make the implementation
more robust.
Fixes rdar://10137436: sqlite3 miscompile


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@140134 91177308-0d34-0410-b5e6-96231b3b80d8
/external/llvm/lib/Target/ARM/ARMInstrThumb2.td
50f1c37123968b7f57068280483ec78f6ff7973e 20-Sep-2011 Jim Grosbach <grosbach@apple.com> Thumb2 assembly parsing and encoding for UXTAB/UXTAB16/UXTH/UXTB/UXTB16/UXTH.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@140125 91177308-0d34-0410-b5e6-96231b3b80d8
/external/llvm/lib/Target/ARM/ARMInstrThumb2.td
8c9898454c1006e6d502e67f22f186f2de88b922 20-Sep-2011 Jim Grosbach <grosbach@apple.com> Remove incorrect comments. These are not disassmebly only patterns.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@140116 91177308-0d34-0410-b5e6-96231b3b80d8
/external/llvm/lib/Target/ARM/ARMInstrThumb2.td
0efe213ed5a2c1d2647dc1306e684da6147a611e 20-Sep-2011 Jim Grosbach <grosbach@apple.com> Thumb2 range check on CPS mode immediate.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@140105 91177308-0d34-0410-b5e6-96231b3b80d8
/external/llvm/lib/Target/ARM/ARMInstrThumb2.td
32f36899e942a4bd7e25f61bf3d49a737699c481 20-Sep-2011 Jim Grosbach <grosbach@apple.com> Tidy up comments.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@140099 91177308-0d34-0410-b5e6-96231b3b80d8
/external/llvm/lib/Target/ARM/ARMInstrThumb2.td
7f739bee261debdf56bd89ac922b57eca53e91dc 20-Sep-2011 Jim Grosbach <grosbach@apple.com> Thumb2 assembly parsing and encoding for TBB/TBH.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@140078 91177308-0d34-0410-b5e6-96231b3b80d8
/external/llvm/lib/Target/ARM/ARMInstrThumb2.td
bc80e94865d139a60534ac40cbf12f2d214dad56 19-Sep-2011 Jim Grosbach <grosbach@apple.com> Tidy up a bit.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@140050 91177308-0d34-0410-b5e6-96231b3b80d8
/external/llvm/lib/Target/ARM/ARMInstrThumb2.td
326efe58918d3f0a431d07938054870fcd0e240f 19-Sep-2011 Jim Grosbach <grosbach@apple.com> Thumb2 assembly parsing and encoding for SXTB/SXTB16/SXTH.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@140047 91177308-0d34-0410-b5e6-96231b3b80d8
/external/llvm/lib/Target/ARM/ARMInstrThumb2.td
061c3c450660976411ee7ff02774ae491ab3ee79 19-Sep-2011 Owen Anderson <resistor@mac.com> Specify an additional fixed bit in the Thumb2 SSAT encoding to prevent the decoder from emitting gibberish for this invalid encoding.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@140041 91177308-0d34-0410-b5e6-96231b3b80d8
/external/llvm/lib/Target/ARM/ARMInstrThumb2.td
8a8d28b0392a27ff8e0c60c04561671023a08dc2 19-Sep-2011 Jim Grosbach <grosbach@apple.com> Thumb2 assembly parsing and encoding for SXTAB/SXTAB16/SXTAH.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@140029 91177308-0d34-0410-b5e6-96231b3b80d8
/external/llvm/lib/Target/ARM/ARMInstrThumb2.td
f67e8554bf4808ad447ffb5d2deebbb10b810391 17-Sep-2011 Jim Grosbach <grosbach@apple.com> Thumb2 assembly parsing and encoding for SUB(immediate).

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@139966 91177308-0d34-0410-b5e6-96231b3b80d8
/external/llvm/lib/Target/ARM/ARMInstrThumb2.td
8a28bdcbcca3328364b86c4010fe96590d1952c8 17-Sep-2011 Owen Anderson <resistor@mac.com> Add fixed bits to correctly distinguish Thumb2 SSAT/SSAT16's.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@139958 91177308-0d34-0410-b5e6-96231b3b80d8
/external/llvm/lib/Target/ARM/ARMInstrThumb2.td
ee2c2a4f98c4a6fa575dcdd1bcc3effd1432a7c7 16-Sep-2011 Jim Grosbach <grosbach@apple.com> Thumb2 assembly parsing and encoding for STR.

More addressing mode encoding bits. Handle pre increment for STR/STRB/STRH
and STR(register).

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@139949 91177308-0d34-0410-b5e6-96231b3b80d8
/external/llvm/lib/Target/ARM/ARMInstrThumb2.td
947a24cd64f9471511629e9db84bac2c334c73c2 16-Sep-2011 Jim Grosbach <grosbach@apple.com> Tidy up. 80 columns.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@139944 91177308-0d34-0410-b5e6-96231b3b80d8
/external/llvm/lib/Target/ARM/ARMInstrThumb2.td
642caea2c624aaeb492a112d60f419ee4d1a10c7 16-Sep-2011 Jim Grosbach <grosbach@apple.com> Thumb2 assembly parsing and encoding for STR(immediate).

Add aliases for STRB/STRH while there. Tests forthcoming for those.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@139942 91177308-0d34-0410-b5e6-96231b3b80d8
/external/llvm/lib/Target/ARM/ARMInstrThumb2.td
8213c96655e955a0b63b05580bc2f6a55be26083 16-Sep-2011 Jim Grosbach <grosbach@apple.com> Thumb2 assembly parsing and encoding for STMIA.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@139938 91177308-0d34-0410-b5e6-96231b3b80d8
/external/llvm/lib/Target/ARM/ARMInstrThumb2.td
b105b997a49c809bfd464ae7691d5ee45d34f446 16-Sep-2011 Jim Grosbach <grosbach@apple.com> Thumb2 assembly parsing and encoding for SSAT.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@139926 91177308-0d34-0410-b5e6-96231b3b80d8
/external/llvm/lib/Target/ARM/ARMInstrThumb2.td
05ec8f7ac90179cccb476512c872db95bfec418d 16-Sep-2011 Jim Grosbach <grosbach@apple.com> Thumb2 assembly parsing and encoding for SRS.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@139925 91177308-0d34-0410-b5e6-96231b3b80d8
/external/llvm/lib/Target/ARM/ARMInstrThumb2.td
7ff2472b8235d8702bd04bf297d573d06cf6b40d 16-Sep-2011 Jim Grosbach <grosbach@apple.com> Thumb2 assembly parsing and encoding for SMLSLD/SMLSLDX.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@139909 91177308-0d34-0410-b5e6-96231b3b80d8
/external/llvm/lib/Target/ARM/ARMInstrThumb2.td
231948f860df79b7f0926305caa065a64d758265 16-Sep-2011 Jim Grosbach <grosbach@apple.com> Thumb2 assembly parsing and encoding for SMLALD/SMLALDX.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@139906 91177308-0d34-0410-b5e6-96231b3b80d8
/external/llvm/lib/Target/ARM/ARMInstrThumb2.td
eeca7582faed76deb3a5ac9216dce6275ac99481 16-Sep-2011 Jim Grosbach <grosbach@apple.com> Remove incorrect comments.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@139877 91177308-0d34-0410-b5e6-96231b3b80d8
/external/llvm/lib/Target/ARM/ARMInstrThumb2.td
191d33fd6d0a91e89f2a8f719e5adbdccf9effa9 15-Sep-2011 Jim Grosbach <grosbach@apple.com> Thumb2 assembly parsing and encoding for RSB.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@139839 91177308-0d34-0410-b5e6-96231b3b80d8
/external/llvm/lib/Target/ARM/ARMInstrThumb2.td
689b86ed2e1f1daf9201f0ef83ff3bc1d5167232 15-Sep-2011 Jim Grosbach <grosbach@apple.com> Thumb2 assembly parsing and encoding for REV16/REVSH.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@139828 91177308-0d34-0410-b5e6-96231b3b80d8
/external/llvm/lib/Target/ARM/ARMInstrThumb2.td
1b69a128d6b98456c666b4031cc46c3d0fbe6177 15-Sep-2011 Jim Grosbach <grosbach@apple.com> Thumb2 assembly parsing and encoding for REV.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@139813 91177308-0d34-0410-b5e6-96231b3b80d8
/external/llvm/lib/Target/ARM/ARMInstrThumb2.td
57b21e437a4746e8c3c26531cb233bac953cc5e2 15-Sep-2011 Jim Grosbach <grosbach@apple.com> Thumb2 push/pop mnemonic recognition.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@139794 91177308-0d34-0410-b5e6-96231b3b80d8
/external/llvm/lib/Target/ARM/ARMInstrThumb2.td
0b69247b10ddbce5f0c476c3471918ffc6091ac5 15-Sep-2011 Jim Grosbach <grosbach@apple.com> Thumb2 assembly parsing and encoding for PKH.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@139754 91177308-0d34-0410-b5e6-96231b3b80d8
/external/llvm/lib/Target/ARM/ARMInstrThumb2.td
d32872f9ca446fc48084082fcb88255a55405cc2 14-Sep-2011 Jim Grosbach <grosbach@apple.com> Thumb2 assembly parsing and encoding for MVN.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@139739 91177308-0d34-0410-b5e6-96231b3b80d8
/external/llvm/lib/Target/ARM/ARMInstrThumb2.td
bf841cf3360558d2939c9f1a244a7a7296f846df 14-Sep-2011 Jim Grosbach <grosbach@apple.com> Thumb2 assembly parsing and encoding for MSR/MRS.

Fix a bug in handling default flags for both ARM and Thumb encodings.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@139721 91177308-0d34-0410-b5e6-96231b3b80d8
/external/llvm/lib/Target/ARM/ARMInstrThumb2.td
7782a58b87923cc293d4e4422729ac0a582bb5c1 13-Sep-2011 Owen Anderson <resistor@mac.com> Correct disassembly printing of Thumb2 post-incremented LDRD and STRD.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@139639 91177308-0d34-0410-b5e6-96231b3b80d8
/external/llvm/lib/Target/ARM/ARMInstrThumb2.td
885f1a0c048e07fca56bc256702c58eae50ae71f 13-Sep-2011 Eli Friedman <eli.friedman@gmail.com> Zap some junk from the ARM instruction descriptions.



git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@139575 91177308-0d34-0410-b5e6-96231b3b80d8
/external/llvm/lib/Target/ARM/ARMInstrThumb2.td
cd00dc6852d17aa24f667a1060d2de83cd6423f0 12-Sep-2011 Owen Anderson <resistor@mac.com> Thumb2 POP's don't allow the PC as an operand, and PUSH's don't allow the SP either.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@139542 91177308-0d34-0410-b5e6-96231b3b80d8
/external/llvm/lib/Target/ARM/ARMInstrThumb2.td
1ad60c2adc9ed765a968747d0c548cda53bfd384 10-Sep-2011 Jim Grosbach <grosbach@apple.com> Thumb2 parsing and encoding for MOV(immediate).

Some aliases for MOV(register) also to keep existing T1 tests happy when
run in thumbv7 mode.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@139440 91177308-0d34-0410-b5e6-96231b3b80d8
/external/llvm/lib/Target/ARM/ARMInstrThumb2.td
08fef885eb39339a47e3be7f0842b1db33683003 10-Sep-2011 Owen Anderson <resistor@mac.com> Fix assembly/disassembly of Thumb2 ADR instructions with immediate operands.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@139422 91177308-0d34-0410-b5e6-96231b3b80d8
/external/llvm/lib/Target/ARM/ARMInstrThumb2.td
51f6a7abf27fc92c3d8904c2334feab8b498e8e9 09-Sep-2011 Owen Anderson <resistor@mac.com> Thumb unconditional branches are allowed in IT blocks, and therefore should have a predicate operand, unlike conditional branches.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@139415 91177308-0d34-0410-b5e6-96231b3b80d8
/external/llvm/lib/Target/ARM/ARMInstrThumb2.td
0811fe13d65c67e4c22d9113795deabbd0daa277 09-Sep-2011 Jim Grosbach <grosbach@apple.com> Thumb2 assembly parsing and encoding for LDRSB.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@139389 91177308-0d34-0410-b5e6-96231b3b80d8
/external/llvm/lib/Target/ARM/ARMInstrThumb2.td
b6aed508e310e31dcb080e761ca856127cec0773 09-Sep-2011 Jim Grosbach <grosbach@apple.com> Thumb2 assembly parsing and encoding for LDREX/LDREXB/LDREXD/LDREXH.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@139381 91177308-0d34-0410-b5e6-96231b3b80d8
/external/llvm/lib/Target/ARM/ARMInstrThumb2.td
a77295db19527503d6b290e4f34f273d0a789365 09-Sep-2011 Jim Grosbach <grosbach@apple.com> 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
/external/llvm/lib/Target/ARM/ARMInstrThumb2.td
e64fb28da191bc978ab99ea397e6108a15c364f8 08-Sep-2011 Jim Grosbach <grosbach@apple.com> 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
/external/llvm/lib/Target/ARM/ARMInstrThumb2.td
eeec025cf5a2236ee9527a3312496a6ea42100c6 08-Sep-2011 Jim Grosbach <grosbach@apple.com> 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
/external/llvm/lib/Target/ARM/ARMInstrThumb2.td
f0eee6eca8c39b11b6a41d9b04eba8985655df77 08-Sep-2011 Jim Grosbach <grosbach@apple.com> Thumb2 assembly parsing and encoding for LDRBT.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@139267 91177308-0d34-0410-b5e6-96231b3b80d8
/external/llvm/lib/Target/ARM/ARMInstrThumb2.td
ab899c1bcca7f1cc85342c3a686464ba4af035df 08-Sep-2011 Jim Grosbach <grosbach@apple.com> 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
/external/llvm/lib/Target/ARM/ARMInstrThumb2.td
8bb5a861a0efae6b9c8f07936ad9bb3508ada23e 07-Sep-2011 Jim Grosbach <grosbach@apple.com> 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
/external/llvm/lib/Target/ARM/ARMInstrThumb2.td
8a83f71301fdf0e2cea8ecdf413f192ac48ddc5c 07-Sep-2011 Owen Anderson <resistor@mac.com> 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
/external/llvm/lib/Target/ARM/ARMInstrThumb2.td
a8307dd1c9279cbde1f3497e530d2ed9d014a0c5 07-Sep-2011 Jim Grosbach <grosbach@apple.com> 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
/external/llvm/lib/Target/ARM/ARMInstrThumb2.td
cfbb3a78dbb9f0e5de90ef2032f0ee9a7ceda8f1 07-Sep-2011 Jim Grosbach <grosbach@apple.com> 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
/external/llvm/lib/Target/ARM/ARMInstrThumb2.td
ffa5a763444e456cee17442af603fb4ef0843bb4 07-Sep-2011 Jim Grosbach <grosbach@apple.com> 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
/external/llvm/lib/Target/ARM/ARMInstrThumb2.td
218affc710a0165746ec21a3315c6cc68272cfd5 07-Sep-2011 Jim Grosbach <grosbach@apple.com> ISB is HasDB, not just HasV7.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@139202 91177308-0d34-0410-b5e6-96231b3b80d8
/external/llvm/lib/Target/ARM/ARMInstrThumb2.td
aa833e53dc74db6cb6789ef7f05c620d28980983 07-Sep-2011 Jim Grosbach <grosbach@apple.com> Thumb2 parsing and encoding for ISB.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@139200 91177308-0d34-0410-b5e6-96231b3b80d8
/external/llvm/lib/Target/ARM/ARMInstrThumb2.td
06c1a51241852bd652ae6473afaa71d96d48b0eb 07-Sep-2011 Jim Grosbach <grosbach@apple.com> Thumb2 parsing and encoding for DMB.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@139193 91177308-0d34-0410-b5e6-96231b3b80d8
/external/llvm/lib/Target/ARM/ARMInstrThumb2.td
77951908b76c00315f1a74d09fb45530029638ec 07-Sep-2011 Jim Grosbach <grosbach@apple.com> Thumb2 parsing and encoding for DBG.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@139191 91177308-0d34-0410-b5e6-96231b3b80d8
/external/llvm/lib/Target/ARM/ARMInstrThumb2.td
ef88a926778b15aa4527a148a514ed0585af7cb1 06-Sep-2011 Jim Grosbach <grosbach@apple.com> 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
/external/llvm/lib/Target/ARM/ARMInstrThumb2.td
ad2dad930d450d721209531175b0cbfdc8402558 06-Sep-2011 Jim Grosbach <grosbach@apple.com> Thumb2 parsing and encoding for CLREX.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@139172 91177308-0d34-0410-b5e6-96231b3b80d8
/external/llvm/lib/Target/ARM/ARMInstrThumb2.td
4a51708448e8958d8d1a375c055f1b98c8e20926 06-Sep-2011 Evan Cheng <evan.cheng@apple.com> 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
/external/llvm/lib/Target/ARM/ARMInstrThumb2.td
6c3e11ea55172def6f9829cc24cc5c3b071208ba 03-Sep-2011 Jim Grosbach <grosbach@apple.com> Thumb2 parsing and encoding for BXJ.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@139053 91177308-0d34-0410-b5e6-96231b3b80d8
/external/llvm/lib/Target/ARM/ARMInstrThumb2.td
5f25fb01b4061725124e34a942809e9c0c6f681c 02-Sep-2011 Jim Grosbach <grosbach@apple.com> Thumb2 parsing and encoding for ASR.

For other shift and rotate instructions, too. Tests for those forthcoming
as I work my way through the ISA.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@139040 91177308-0d34-0410-b5e6-96231b3b80d8
/external/llvm/lib/Target/ARM/ARMInstrThumb2.td
d2990107a9c10e41f4e6256147374afb2118b55f 02-Sep-2011 Jim Grosbach <grosbach@apple.com> Tidy up. 80 columns.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@139022 91177308-0d34-0410-b5e6-96231b3b80d8
/external/llvm/lib/Target/ARM/ARMInstrThumb2.td
5c1ac5554229d5481b772cb017139bdd24d5114d 02-Sep-2011 Jim Grosbach <grosbach@apple.com> Thumb2 parsing and encoding for AND (register).

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@139021 91177308-0d34-0410-b5e6-96231b3b80d8
/external/llvm/lib/Target/ARM/ARMInstrThumb2.td
f0851e5d95a1d1f746a3b1e9633af76496e316e7 02-Sep-2011 Jim Grosbach <grosbach@apple.com> Thumb2 parsing and encoding for ADD (register).

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@139017 91177308-0d34-0410-b5e6-96231b3b80d8
/external/llvm/lib/Target/ARM/ARMInstrThumb2.td
20ed2e7939d6a8e804a51897c3af4588deb48be2 01-Sep-2011 Jim Grosbach <grosbach@apple.com> Thumb2 assembly parsing and encoding for ADD(immediate).


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@138922 91177308-0d34-0410-b5e6-96231b3b80d8
/external/llvm/lib/Target/ARM/ARMInstrThumb2.td
b45b11bce1fd79b0973d2df8db295583b5477c62 01-Sep-2011 Owen Anderson <resistor@mac.com> The asm parser currently selects the wrong encoding for non-conditional Thumb2 branches. However, this exposed a number of situations where the decoder was too permissive in allowing invalid instructions to decode successful. Specify additional fixed bits to close those gaps.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@138910 91177308-0d34-0410-b5e6-96231b3b80d8
/external/llvm/lib/Target/ARM/ARMInstrThumb2.td
72335d55d972dd7279fe68ed05fa3c4e7fce9345 31-Aug-2011 Jim Grosbach <grosbach@apple.com> Thumb2 parsing and encoding for ADC(register).

Also add instruction aliases for non-.w versions of SBC since they're the
same.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@138871 91177308-0d34-0410-b5e6-96231b3b80d8
/external/llvm/lib/Target/ARM/ARMInstrThumb2.td
eaca928a3798e1fa7072457b94eccdd5b53b5d5f 31-Aug-2011 Owen Anderson <resistor@mac.com> Fix issues with disassembly of IT instructions involving condition codes other the EQ/NE. Discovered by roundtrip testing.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@138840 91177308-0d34-0410-b5e6-96231b3b80d8
/external/llvm/lib/Target/ARM/ARMInstrThumb2.td
37fefc20d3a1e3934a377567d54a141f67752227 30-Aug-2011 Evan Cheng <evan.cheng@apple.com> Follow up to r138791.

Add a instruction flag: hasPostISelHook which tells the pre-RA scheduler to
call a target hook to adjust the instruction. For ARM, this is used to
adjust instructions which may be setting the 's' flag. ADC, SBC, RSB, and RSC
instructions have implicit def of CPSR (required since it now uses CPSR physical
register dependency rather than "glue"). If the carry flag is used, then the
target hook will *fill in* the optional operand with CPSR. Otherwise, the hook
will remove the CPSR implicit def from the MachineInstr.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@138810 91177308-0d34-0410-b5e6-96231b3b80d8
/external/llvm/lib/Target/ARM/ARMInstrThumb2.td
342e3161d9dd4fa485b47788aa0266f9c91c3832 30-Aug-2011 Evan Cheng <evan.cheng@apple.com> Change ARM / Thumb2 addc / adde and subc / sube modeling to use physical
register dependency (rather than glue them together). This is general
goodness as it gives scheduler more freedom. However it is motivated by
a nasty bug in isel.

When a i64 sub is expanded to subc + sube.
libcall #1
\
\ subc
\ / \
\ / \
\ / libcall #2
sube

If the libcalls are not serialized (i.e. both have chains which are dag
entry), legalizer can serialize them in arbitrary orders. If it's
unlucky, it can force libcall #2 before libcall #1 in the above case.

subc
|
libcall #2
|
libcall #1
|
sube

However since subc and sube are "glued" together, this ends up being a
cycle when the scheduler combine subc and sube as a single scheduling
unit.

The right solution is to fix LegalizeType too chains the libcalls together.
However, LegalizeType is not processing nodes in order so that's harder than
it should be. For now, the move to physical register dependency will do.

rdar://10019576


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@138791 91177308-0d34-0410-b5e6-96231b3b80d8
/external/llvm/lib/Target/ARM/ARMInstrThumb2.td
d3765189bfb8c0dd3aa377aaf2d644f321ea8e5a 30-Aug-2011 Jim Grosbach <grosbach@apple.com> Revert 138781. It's not playing nicely with the immediate forms for ADC.



git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@138782 91177308-0d34-0410-b5e6-96231b3b80d8
/external/llvm/lib/Target/ARM/ARMInstrThumb2.td
e94a5b1218b9b5646da7f41f2020a1f024e2d0be 30-Aug-2011 Jim Grosbach <grosbach@apple.com> Thumb2 assembler aliases for ADC/SBC w/o the .w suffix.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@138781 91177308-0d34-0410-b5e6-96231b3b80d8
/external/llvm/lib/Target/ARM/ARMInstrThumb2.td
89df996ab20609676ecc8823f58414d598b09b46 26-Aug-2011 Jim Grosbach <grosbach@apple.com> Thumb2 assembler parsing and encoding of IT instruction.

This handles only the handling of the IT instruction itself, not the
processing and validation of the instructions in the IT block. That's next,
and will include encoding tests for IT itself.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@138665 91177308-0d34-0410-b5e6-96231b3b80d8
/external/llvm/lib/Target/ARM/ARMInstrThumb2.td
069e2ed794a90cb5108a35627ee148866795f140 26-Aug-2011 Eli Friedman <eli.friedman@gmail.com> Atomic load/store on ARM/Thumb.

I don't really like the patterns, but I'm having trouble coming up with a
better way to handle them.

I plan on making other targets use the same legalization
ARM-without-memory-barriers is using... it's not especially efficient, but
if anyone cares, it's not that hard to fix for a given target if there's
some better lowering.



git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@138621 91177308-0d34-0410-b5e6-96231b3b80d8
/external/llvm/lib/Target/ARM/ARMInstrThumb2.td
f44082091c5517a3275c57a8b58e36987c8227f0 25-Aug-2011 Owen Anderson <resistor@mac.com> Perform more thorough checking of t2IT mask parameters, which fixes all remaining crashers when disassembling the entire 16-bit instruction space.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@138507 91177308-0d34-0410-b5e6-96231b3b80d8
/external/llvm/lib/Target/ARM/ARMInstrThumb2.td
e234d02204e0e546c3555e7e894b8521d22a2121 24-Aug-2011 Owen Anderson <resistor@mac.com> Be stricter in enforcing IT instruction predicate values, so that we don't end up trying to print out an illegal predicate.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@138443 91177308-0d34-0410-b5e6-96231b3b80d8
/external/llvm/lib/Target/ARM/ARMInstrThumb2.td
6153a036f544beb03dfc4d58edc28cf42712743d 23-Aug-2011 Owen Anderson <resistor@mac.com> Fix Thumb2 decoding of CPS instructions to mirror ARM decoding of the same instructions.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@138339 91177308-0d34-0410-b5e6-96231b3b80d8
/external/llvm/lib/Target/ARM/ARMInstrThumb2.td
e732cb004379a75efd6d1fd466dbea4cf249de28 23-Aug-2011 Owen Anderson <resistor@mac.com> Fix two more instances of mis-matched operand names breaking disassembly. Found by randomized testing.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@138337 91177308-0d34-0410-b5e6-96231b3b80d8
/external/llvm/lib/Target/ARM/ARMInstrThumb2.td
c6788c83b491b502482bf7d9a06b403d07f9e77e 23-Aug-2011 Owen Anderson <resistor@mac.com> t2SMLAD is a four-register instruction, not a three-register one.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@138301 91177308-0d34-0410-b5e6-96231b3b80d8
/external/llvm/lib/Target/ARM/ARMInstrThumb2.td
22d35086fec34fa106d844b9b2204d7c3c20d8bc 23-Aug-2011 Owen Anderson <resistor@mac.com> Correct operand naming of t2USAT16 to allow proper decoding.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@138300 91177308-0d34-0410-b5e6-96231b3b80d8
/external/llvm/lib/Target/ARM/ARMInstrThumb2.td
2379fc235f8979f7f1218523672a19af1505e29d 23-Aug-2011 Owen Anderson <resistor@mac.com> Match operand naming to allow correct decoding of t2LDRSH_POST.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@138298 91177308-0d34-0410-b5e6-96231b3b80d8
/external/llvm/lib/Target/ARM/ARMInstrThumb2.td
796c3659c97c22e3cf2e7e331861a3944c5b90d5 23-Aug-2011 Owen Anderson <resistor@mac.com> Match operand names to provide correct decoding for Thumb2 SMULL.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@138294 91177308-0d34-0410-b5e6-96231b3b80d8
/external/llvm/lib/Target/ARM/ARMInstrThumb2.td
2c9f83533baa8802ab1d600fd76854125af53076 23-Aug-2011 Owen Anderson <resistor@mac.com> Provide a correct decoder hook for Thumb2 shifted registers. Found by randomized testing.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@138292 91177308-0d34-0410-b5e6-96231b3b80d8
/external/llvm/lib/Target/ARM/ARMInstrThumb2.td
a33b31be451472e72e6dd88851061e239ad54606 22-Aug-2011 Jim Grosbach <grosbach@apple.com> Clean up predicates on ARM target instruction aliases.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@138249 91177308-0d34-0410-b5e6-96231b3b80d8
/external/llvm/lib/Target/ARM/ARMInstrThumb2.td
11cca7a2ea1ea4d19433bf356b55845637561a39 18-Aug-2011 Jim Grosbach <grosbach@apple.com> Thumb instructions CBZ and CBNZ are Thumb2, not THumb1.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@137956 91177308-0d34-0410-b5e6-96231b3b80d8
/external/llvm/lib/Target/ARM/ARMInstrThumb2.td
70939ee1415722d7f39f13faf9b3644b96007996 17-Aug-2011 Jim Grosbach <grosbach@apple.com> ARM clean up the imm_sr operand class representation.

Represent the operand value as it will be encoded in the instruction. This
allows removing the specialized encoder and decoder methods entirely. Add
an assembler match class while we're at it to lay groundwork for parsing the
thumb shift instructions.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@137879 91177308-0d34-0410-b5e6-96231b3b80d8
/external/llvm/lib/Target/ARM/ARMInstrThumb2.td
9fe72bcd3714d136b371aa85d293e16363c29914 11-Aug-2011 Owen Anderson <resistor@mac.com> Improve operand validation for Thumb2 addressing modes.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@137344 91177308-0d34-0410-b5e6-96231b3b80d8
/external/llvm/lib/Target/ARM/ARMInstrThumb2.td
8d7d2e1238fac58c01ccfb719d0cc5680a079561 09-Aug-2011 Owen Anderson <resistor@mac.com> Replace the existing ARM disassembler with a new one based on the FixedLenDecoderEmitter.
This new disassembler can correctly decode all the testcases that the old one did, though
some "expected failure" testcases are XFAIL'd for now because it is not (yet) as strict in
operand checking as the old one was.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@137144 91177308-0d34-0410-b5e6-96231b3b80d8
/external/llvm/lib/Target/ARM/ARMInstrThumb2.td
6d74631062e4464326eb5c680a4d62d340fa42eb 08-Aug-2011 Owen Anderson <resistor@mac.com> Fix encodings for Thumb ASR and LSR immediate operands. They encode the range 1-32, with 32 encoded as 0.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@137062 91177308-0d34-0410-b5e6-96231b3b80d8
/external/llvm/lib/Target/ARM/ARMInstrThumb2.td
2cb1dfa4464c8dc551d93e0ce34d7a2f797304db 08-Aug-2011 Eli Friedman <eli.friedman@gmail.com> Fix up the patterns for SXTB, SXTH, UXTB, and UXTH so that they are correctly active without HasT2ExtractPack. PR10611.



git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@137061 91177308-0d34-0410-b5e6-96231b3b80d8
/external/llvm/lib/Target/ARM/ARMInstrThumb2.td
14c903a76be7933cea746617d3f787fdf4de8203 05-Aug-2011 Owen Anderson <resistor@mac.com> Fix broken encodings for the Thumb2 LDRD/STRD instructions.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@136942 91177308-0d34-0410-b5e6-96231b3b80d8
/external/llvm/lib/Target/ARM/ARMInstrThumb2.td
7ce057983ea7b8ad42d5cca1bb5d3f6941662269 04-Aug-2011 Jim Grosbach <grosbach@apple.com> ARM refactoring assembly parsing of memory address operands.

Memory operand parsing is a bit haphazzard at the moment, in no small part
due to the even more haphazzard representations of memory operands in the .td
files. Start cleaning that all up, at least a bit.

The addressing modes in the .td files will be being simplified to not be
so monolithic, especially with regards to immediate vs. register offsets
and post-indexed addressing. addrmode3 is on its way with this patch, for
example.

This patch is foundational to enable going back to smaller incremental patches
for the individual memory referencing instructions themselves. It does just
enough to get the basics in place and handle the "make check" regression tests
we already have.

Follow-up work will be fleshing out the details and adding more robust test
cases for the individual instructions, starting with ARM mode and moving from
there into Thumb and Thumb2.



git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@136845 91177308-0d34-0410-b5e6-96231b3b80d8
/external/llvm/lib/Target/ARM/ARMInstrThumb2.td
fb8989e64024547e4ad5ab6fe4d94fe146a7899f 27-Jul-2011 Jim Grosbach <grosbach@apple.com> ARM parsing and encoding of SBFX and UBFX.

Encode the width operand as it encodes in the instruction, which simplifies
the disassembler and the encoder, by using the imm1_32 operand def. Add a
diagnostic for the context-sensitive constraint that the width must be in
the range [1,32-lsb].


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@136264 91177308-0d34-0410-b5e6-96231b3b80d8
/external/llvm/lib/Target/ARM/ARMInstrThumb2.td
7032741e7bf84d144c408a47591add10f0a394ba 27-Jul-2011 Jim Grosbach <grosbach@apple.com> ARM cleanup of remaining extend instructions.

Refactor the rest of the extend instructions to not artificially distinguish
between a rotate of zero and a rotate of any other value. Replace the by-zero
versions with Pat<>'s for ISel.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@136226 91177308-0d34-0410-b5e6-96231b3b80d8
/external/llvm/lib/Target/ARM/ARMInstrThumb2.td
c5a8c861c9f008d777f5da6a77c253fea2bfe2f1 27-Jul-2011 Jim Grosbach <grosbach@apple.com> ARM extend instructions simplification.

Refactor the SXTB, SXTH, SXTB16, UXTB, UXTH, and UXTB16 instructions to not
have an 'r' and an 'r_rot' version, but just a single version with a rotate
that can be zero. Use plain Pat<>'s for the ISel of the non-rotated version.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@136225 91177308-0d34-0410-b5e6-96231b3b80d8
/external/llvm/lib/Target/ARM/ARMInstrThumb2.td
45f3929ef0dcdf281a10f23e031ffaba7664e7c0 26-Jul-2011 Jim Grosbach <grosbach@apple.com> ARM rot_imm printing adjustment.

Allow the rot_imm operand to be optional. This sets the stage for refactoring
away the "rr" versions from the multiclasses and replacing them with Pat<>s.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@136154 91177308-0d34-0410-b5e6-96231b3b80d8
/external/llvm/lib/Target/ARM/ARMInstrThumb2.td
85bfd3b023d4d70936006eadd86588b03e5f40c0 26-Jul-2011 Jim Grosbach <grosbach@apple.com> ARM cleanup of rot_imm encoding.

Start of cleaning this up a bit. First step is to remove the encoder hook by
storing the operand as the bits it'll actually encode to so it can just be
directly used. Map it to the assembly source values 8/16/24 when we print it.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@136152 91177308-0d34-0410-b5e6-96231b3b80d8
/external/llvm/lib/Target/ARM/ARMInstrThumb2.td
f49433523e8a39db6d83503e312ae55160eed90a 26-Jul-2011 Jim Grosbach <grosbach@apple.com> ARM assembly parsing and encoding for SSAT16 instruction.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@136006 91177308-0d34-0410-b5e6-96231b3b80d8
/external/llvm/lib/Target/ARM/ARMInstrThumb2.td
580f4a9c1c2fcbb8877463f873c6e9ca2a5ccf9f 26-Jul-2011 Jim Grosbach <grosbach@apple.com> ARM assembly parsing and encoding for SSAT instruction.

Fix the Rn register encoding for both SSAT and USAT. Update the parsing of the
shift operand to correctly handle the allowed shift types and immediate ranges
and issue meaningful diagnostics when an illegal value or shift type is
specified. Add aliases to parse an ommitted shift operand (default value of
'lsl #0').

Add tests for diagnostics and proper encoding.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@135990 91177308-0d34-0410-b5e6-96231b3b80d8
/external/llvm/lib/Target/ARM/ARMInstrThumb2.td
4a5ffb399f841783c201c599b88d576757f1922e 23-Jul-2011 Jim Grosbach <grosbach@apple.com> ARM SSAT instruction 5-bit immediate handling.

The immediate is in the range 1-32, but is encoded as 0-31 in a 5-bit bitfield.
Update the representation such that we store the operand as 0-31, allowing us
to remove the encoder method and the special case handling in the disassembler.
Update the assembly parser and the instruction printer accordingly.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@135823 91177308-0d34-0410-b5e6-96231b3b80d8
/external/llvm/lib/Target/ARM/ARMInstrThumb2.td
7c9fbc0340aff9e20fd9009be23ffd279c1c0a7d 22-Jul-2011 Jim Grosbach <grosbach@apple.com> ARM assembly parsing and encoding for SMC instruction.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@135782 91177308-0d34-0410-b5e6-96231b3b80d8
/external/llvm/lib/Target/ARM/ARMInstrThumb2.td
1769a3df4a81309ec055a8586c8ac35755fa79a2 20-Jul-2011 Jim Grosbach <grosbach@apple.com> Tidy up a bit.

Move common definitions for ARM and Thumb2 into ARMInstrFormats.td and rename
them to be a bit more descriptive that they're for the PKH instructions.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@135617 91177308-0d34-0410-b5e6-96231b3b80d8
/external/llvm/lib/Target/ARM/ARMInstrThumb2.td
a0472dc4205d5f2cc4e9cc5a08c51625573a26ce 20-Jul-2011 Jim Grosbach <grosbach@apple.com> ARM: Tidy up representation of PKH instruction.

The shift type is implied by the instruction (PKHBT vs. PKHTB) and so shouldn't
be also encoded as part of the shift value immediate. Otherwise we're able to
represent invalid instructions, plus it needlessly complicates the
representation. Preparatory work for asm parsing of these instructions.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@135616 91177308-0d34-0410-b5e6-96231b3b80d8
/external/llvm/lib/Target/ARM/ARMInstrThumb2.td
ccfd9313d11aa29551f93fe99428946837c97729 19-Jul-2011 Jim Grosbach <grosbach@apple.com> ARM assembly parsing for MRC/MRC2/MRRC/MRRC2.

Add range checking to the immediate operands. Update tests accordingly.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@135521 91177308-0d34-0410-b5e6-96231b3b80d8
/external/llvm/lib/Target/ARM/ARMInstrThumb2.td
ffa3225e26cc1977d20f0d9649fcd6f38a3c4815 19-Jul-2011 Jim Grosbach <grosbach@apple.com> ARM assembly parsing for MOV (immediate).

Add range checking for the immediate operand and handle the "mov" mnemonic
choosing between encodings based on the value of the immediate. Add tests
for fixups, encoding choice and values, and diagnostic for out of range values.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@135500 91177308-0d34-0410-b5e6-96231b3b80d8
/external/llvm/lib/Target/ARM/ARMInstrThumb2.td
c8ae39e746a20dc326def0ccfc052df3e21f16d3 14-Jul-2011 Jim Grosbach <grosbach@apple.com> ARM MCRR/MCRR2 immediate operand range checking.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@135192 91177308-0d34-0410-b5e6-96231b3b80d8
/external/llvm/lib/Target/ARM/ARMInstrThumb2.td
e540c7422ca13c950f0e8f6f93af7225bb7742a9 14-Jul-2011 Jim Grosbach <grosbach@apple.com> ARM MCR/MCR2 assembly parsing operand constraints.

The immediate operands are restricted to 0-7. Enforce that when parsing
assembly.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@135189 91177308-0d34-0410-b5e6-96231b3b80d8
/external/llvm/lib/Target/ARM/ARMInstrThumb2.td
16884415db751c75f2133bd04921393c792b1158 14-Jul-2011 Owen Anderson <resistor@mac.com> Add a target-indepedent entry to MCInstrDesc to describe the encoded size of an opcode. Switch ARM over to using that rather than its own special MCInstrDesc bits.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@135106 91177308-0d34-0410-b5e6-96231b3b80d8
/external/llvm/lib/Target/ARM/ARMInstrThumb2.td
6f9f8845028d4d3b96c33417398034a71137d867 14-Jul-2011 Jim Grosbach <grosbach@apple.com> ARM Assembler support for DBG instruction.

Add range checking and testing for parsing and encoding of DBG instruction.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@135102 91177308-0d34-0410-b5e6-96231b3b80d8
/external/llvm/lib/Target/ARM/ARMInstrThumb2.td
1cbb0c16a1f2bb0c6163198f626155640d677411 14-Jul-2011 Jim Grosbach <grosbach@apple.com> Revert 135093. Think-o.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@135094 91177308-0d34-0410-b5e6-96231b3b80d8
/external/llvm/lib/Target/ARM/ARMInstrThumb2.td
91eb0aa5de61c76345bb70506c70732a528df36a 14-Jul-2011 Jim Grosbach <grosbach@apple.com> Correct range for thumb co-processor immediate

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@135093 91177308-0d34-0410-b5e6-96231b3b80d8
/external/llvm/lib/Target/ARM/ARMInstrThumb2.td
83ab070fc1fbb02ca77b0a37e6ae0eacf58001e1 14-Jul-2011 Jim Grosbach <grosbach@apple.com> Range checking for CDP[2] immediates.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@135092 91177308-0d34-0410-b5e6-96231b3b80d8
/external/llvm/lib/Target/ARM/ARMInstrThumb2.td
e35c5e06fe5b1fd6e754773168ad0281ecda7009 13-Jul-2011 Jim Grosbach <grosbach@apple.com> Cleanup Thumb co-processor instructions a bit.

Combine redundant base classes and such. No indended functional change.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@135085 91177308-0d34-0410-b5e6-96231b3b80d8
/external/llvm/lib/Target/ARM/ARMInstrThumb2.td
0d8dae292a088c3a742f655c1787782abfe7e34c 13-Jul-2011 Jim Grosbach <grosbach@apple.com> Parameterize away the ARM T1Cop class.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@135082 91177308-0d34-0410-b5e6-96231b3b80d8
/external/llvm/lib/Target/ARM/ARMInstrThumb2.td
9bb098ad3a3c93aec50a4a63e6894472727f8d88 13-Jul-2011 Jim Grosbach <grosbach@apple.com> Fix predicates for Thumb co-processor instructions.

They're all Thumb2 only, not just some of them. More refactoring cleanup
coming.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@135081 91177308-0d34-0410-b5e6-96231b3b80d8
/external/llvm/lib/Target/ARM/ARMInstrThumb2.td
af7f2d6b67070eae933402c9115514719d1628cf 08-Jul-2011 Jim Grosbach <grosbach@apple.com> Use tPseudoExpand for tTAILJMPd and tTAILJMPdND.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@134732 91177308-0d34-0410-b5e6-96231b3b80d8
/external/llvm/lib/Target/ARM/ARMInstrThumb2.td
53e3fc463e3d9ee840510b08ebd6db17694fa2c5 08-Jul-2011 Jim Grosbach <grosbach@apple.com> Use TableGen'erated pseudo lowering for ARM.

Hook up the TableGen lowering for simple pseudo instructions for ARM and
use it for a subset of the many pseudos the backend has as proof of concept.

More conversions to come.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@134705 91177308-0d34-0410-b5e6-96231b3b80d8
/external/llvm/lib/Target/ARM/ARMInstrThumb2.td
a7603982dbf9e240ecc7ed6eddcd1cdb868107ac 01-Jul-2011 Jim Grosbach <grosbach@apple.com> ARMv7M vs. ARMv7E-M support.

The DSP instructions in the Thumb2 instruction set are an optional extension
in the Cortex-M* archtitecture. When present, the implementation is considered
an "ARMv7E-M implementation," and when not, an "ARMv7-M implementation."

Add a subtarget feature hook for the v7e-m instructions and hook it up. The
cortex-m3 cpu is an example of a v7m implementation, while the cortex-m4 is
a v7e-m implementation.

rdar://9572992



git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@134261 91177308-0d34-0410-b5e6-96231b3b80d8
/external/llvm/lib/Target/ARM/ARMInstrThumb2.td
efeedceb41cc0c5ff7918cad870d5820de84b03d 01-Jul-2011 Jim Grosbach <grosbach@apple.com> Pseudo-ize t2MOVCC[ri].

t2MOVCC[ri] are just t2MOV[ri] instructions, so properly pseudo-ize them.
The Thumb1 versions, tMOVCC[ri] were only present for use by the size-
reduction pass, so they're no longer necessary at all and can be deleted.



git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@134242 91177308-0d34-0410-b5e6-96231b3b80d8
/external/llvm/lib/Target/ARM/ARMInstrThumb2.td
ff97eb0cf4394090570feaa327d1237ba4b935e2 30-Jun-2011 Jim Grosbach <grosbach@apple.com> Pseudo-ize the Thumb tTPsoft instruction.

It's just a call to a special helper function. Get rid of the T2 variant
entirely, as it's identical to the Thumb1 version.



git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@134178 91177308-0d34-0410-b5e6-96231b3b80d8
/external/llvm/lib/Target/ARM/ARMInstrThumb2.td
16f9924000a8d513353cd5c69d1d6307016fe280 30-Jun-2011 Jim Grosbach <grosbach@apple.com> Pseudo-ize the t2LDMIA_RET instruction.

It's just a t2LDMIA_UPD instruction with extra codegen properties, so it
doesn't need the encoding information. As a side-benefit, we now correctly
recognize for instruction printing as a 'pop' instruction.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@134173 91177308-0d34-0410-b5e6-96231b3b80d8
/external/llvm/lib/Target/ARM/ARMInstrThumb2.td
f6fd90910a552ad9883f031350ae517e26dfdb44 30-Jun-2011 Jim Grosbach <grosbach@apple.com> Remove redundant Thumb2 ADD/SUB SP instruction definitions.

Unlike Thumb1, Thumb2 does not have dedicated encodings for adjusting the
stack pointer. It can just use the normal add-register-immediate encoding
since it can use all registers as a source, not just R0-R7. The extra
instruction definitions are just duplicates of the normal instructions with
the (not well enforced) constraint that the source register was SP.



git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@134114 91177308-0d34-0410-b5e6-96231b3b80d8
/external/llvm/lib/Target/ARM/ARMInstrThumb2.td
adf7366771ebc78b3eee3c86b95e255ff5726da7 28-Jun-2011 Jim Grosbach <grosbach@apple.com> ARM Thumb2 asm syntax optional destination operand for binary operators.

When the destination operand is the same as the first source register
operand for arithmetic instructions, the destination operand may be omitted.

For example, the following two instructions are equivalent:
and r1, #ff
and r1, r1, #ff

rdar://9672867



git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@133973 91177308-0d34-0410-b5e6-96231b3b80d8
/external/llvm/lib/Target/ARM/ARMInstrThumb2.td
6b8f1e35eacba34a11e2a7d5f614efc47b43d2e3 28-Jun-2011 Jim Grosbach <grosbach@apple.com> ARM Assembly support for Thumb mov-immediate.

Correctly parse the forms of the Thumb mov-immediate instruction:
1. 8-bit immediate 0-255.
2. 12-bit shifted-immediate.

The 16-bit immediate "movw" form is also legal with just a "mov" mnemonic,
but is not yet supported. More parser logic necessary there due to fixups.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@133966 91177308-0d34-0410-b5e6-96231b3b80d8
/external/llvm/lib/Target/ARM/ARMInstrThumb2.td
734f63bed974a0196e85b0f82c1b6b4e5b891192 21-Jun-2011 Evan Cheng <evan.cheng@apple.com> Reorg. No functionality change.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@133533 91177308-0d34-0410-b5e6-96231b3b80d8
/external/llvm/lib/Target/ARM/ARMInstrThumb2.td
9568e5c3c3f1e25288d2ff375dba0fddbf161fd6 21-Jun-2011 Evan Cheng <evan.cheng@apple.com> Teach dag combine to match halfword byteswap patterns.
1. (((x) & 0xFF00) >> 8) | (((x) & 0x00FF) << 8)
=> (bswap x) >> 16
2. ((x&0xff)<<8)|((x&0xff00)>>8)|((x&0xff000000)>>8)|((x&0x00ff0000)<<8))
=> (rotl (bswap x) 16)

This allows us to eliminate most of the def : Pat patterns for ARM rev16
revsh instructions. It catches many more cases for ARM and x86.

rdar://9609108


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@133503 91177308-0d34-0410-b5e6-96231b3b80d8
/external/llvm/lib/Target/ARM/ARMInstrThumb2.td
6d6c55bc270d1bee8561d3ce00d2ca9ced3bb506 17-Jun-2011 Evan Cheng <evan.cheng@apple.com> Add an alternative rev16 pattern. We should figure out a better way to handle these complex rev patterns. rdar://9609108

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@133289 91177308-0d34-0410-b5e6-96231b3b80d8
/external/llvm/lib/Target/ARM/ARMInstrThumb2.td
f60ceac9cd7230e0d5ff911fced396f6b5d8c815 15-Jun-2011 Evan Cheng <evan.cheng@apple.com> Another revsh pattern. rdar://9609059

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@133064 91177308-0d34-0410-b5e6-96231b3b80d8
/external/llvm/lib/Target/ARM/ARMInstrThumb2.td
f921c0fe3418f96bd1e37beb582a368d3ac24295 14-Jun-2011 Jim Grosbach <grosbach@apple.com> Clean up a few 80 column violations.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@132946 91177308-0d34-0410-b5e6-96231b3b80d8
/external/llvm/lib/Target/ARM/ARMInstrThumb2.td
a1099f184d5d3e88e12957f4ebe1fc4a985dd18d 07-Jun-2011 Andrew Trick <atrick@apple.com> Fix for setjmp/longjmp exception handling on ARM. setjmp clobbers CPSR.
rdar://problem/9556069


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@132699 91177308-0d34-0410-b5e6-96231b3b80d8
/external/llvm/lib/Target/ARM/ARMInstrThumb2.td
895c1e2deea3e6118b159c26b3f86d40a37e8501 31-May-2011 Bruno Cardoso Lopes <bruno.cardoso@gmail.com> Fix ssat and ssat16 encodings for ARM and Thumb. The bit position value
must be encoded decremented by one. Only add encoding tests for ssat16
because ssat can't be parsed yet.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@132324 91177308-0d34-0410-b5e6-96231b3b80d8
/external/llvm/lib/Target/ARM/ARMInstrThumb2.td
a0112d0c39aa31fe555ecf7296923ca30f68f811 28-May-2011 Bruno Cardoso Lopes <bruno.cardoso@gmail.com> Add support for ARM ldrexd/strexd intrinsics. They both use i32 register pairs
to load/store i64 values. Since there's no current support to explicitly
declare such restrictions, implement it by using specific hardcoded register
pairs during isel.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@132248 91177308-0d34-0410-b5e6-96231b3b80d8
/external/llvm/lib/Target/ARM/ARMInstrThumb2.td
d6ffcd88baa95988c0158151ec1d188a8442bff9 18-May-2011 Cameron Zwarich <zwarich@apple.com> Actually, the address operand of the Thumb2 LDREX / STREX instructions *can*
take r13, so we can just make it a GPR. This fixes PR8825.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@131507 91177308-0d34-0410-b5e6-96231b3b80d8
/external/llvm/lib/Target/ARM/ARMInstrThumb2.td
3c60ff4f3da9671597ed8fadd775255902616b71 18-May-2011 Cameron Zwarich <zwarich@apple.com> Correct a minor problem with the Thumb2 LDREX and STREX instruction encodings. They
were marked as taking a tGPR when in reality they take an rGPR.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@131506 91177308-0d34-0410-b5e6-96231b3b80d8
/external/llvm/lib/Target/ARM/ARMInstrThumb2.td
2944b4fe059b727b1cbd2b85013610de137fac02 04-May-2011 Jakob Stoklund Olesen <stoklund@2pi.dk> Mark ultra-super-registers QQQQ as call-clobbered instead of the D sub-registers.

LiveVariables doesn't understand that clobbering D0 and D1 completely overwrites
Q0, so if Q0 is live-in to a function, its live range will extend beyond a
function call that only clobbers D0 and D1. This shows up in the
ARM/2009-11-01-NeonMoves test case.

LiveVariables should probably implement the much stricter rules for physreg
liveness that RAFast imposes - a physreg is killed by the first use of any
alias.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@130801 91177308-0d34-0410-b5e6-96231b3b80d8
/external/llvm/lib/Target/ARM/ARMInstrThumb2.td
0a69ba309f5a30d2dcfa1814eb50635539523304 03-May-2011 Bruno Cardoso Lopes <bruno.cardoso@gmail.com> Fold ARM coprocessor intrinsics patterns into the instructions defs whenever
it's possible.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@130764 91177308-0d34-0410-b5e6-96231b3b80d8
/external/llvm/lib/Target/ARM/ARMInstrThumb2.td
54ad87ab786cae4e5b654f4295e9697f0c72dbb1 03-May-2011 Bruno Cardoso Lopes <bruno.cardoso@gmail.com> Add a few ARM coprocessor intrinsics. Testcases included

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@130763 91177308-0d34-0410-b5e6-96231b3b80d8
/external/llvm/lib/Target/ARM/ARMInstrThumb2.td
c573e2c7ea646d29162a96a0707f4eb0f77f83bc 30-Apr-2011 Eli Friedman <eli.friedman@gmail.com> Switch to ImmLeaf (which can be used by FastISel) for a few more common ARM/Thumb2 patterns.



git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@130552 91177308-0d34-0410-b5e6-96231b3b80d8
/external/llvm/lib/Target/ARM/ARMInstrThumb2.td
d49ffe8284457953db68db063b527ee9c346b67a 29-Apr-2011 Andrew Trick <atrick@apple.com> Teach Thumb2 isel to fold and->rotr ==> ROR.

Generalization of Nate Begeman's patch!


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@130502 91177308-0d34-0410-b5e6-96231b3b80d8
/external/llvm/lib/Target/ARM/ARMInstrThumb2.td
8f232d307ace42180961856f69541b95b3278295 28-Apr-2011 Eric Christopher <echristo@apple.com> Let the immediate leaf pattern take transforms and switch the signed
immediate patterns in arm to using the pattern.

Handles rdar://9299434


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@130386 91177308-0d34-0410-b5e6-96231b3b80d8
/external/llvm/lib/Target/ARM/ARMInstrThumb2.td
1c3af779fc6b184204efd7e98dc16e475c251e7f 23-Apr-2011 Andrew Trick <atrick@apple.com> Thumb2 and ARM add/subtract with carry fixes.

Fixes Thumb2 ADCS and SBCS lowering: <rdar://problem/9275821>.
t2ADCS/t2SBCS are now pseudo instructions, consistent with ARM, so the
assembly printer correctly prints the 's' suffix.

Fixes Thumb2 adde -> SBC matching to check for live/dead carry flags.

Fixes the internal ARM machine opcode mnemonic for ADCS/SBCS.
Fixes ARM SBC lowering to check for live carry (potential bug).


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@130048 91177308-0d34-0410-b5e6-96231b3b80d8
/external/llvm/lib/Target/ARM/ARMInstrThumb2.td
3a96122c4ae4e7727ba976a9f658626c18997689 16-Apr-2011 Johnny Chen <johnny.chen@apple.com> Thumb2 BFC was insufficiently encoded.

rdar://problem/9292717


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@129619 91177308-0d34-0410-b5e6-96231b3b80d8
/external/llvm/lib/Target/ARM/ARMInstrThumb2.td
7a2bdde0a0eebcd2125055e0eacaca040f0b766c 15-Apr-2011 Chris Lattner <sabre@nondot.org> Fix a ton of comment typos found by codespell. Patch by
Luis Felipe Strano Moraes!



git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@129558 91177308-0d34-0410-b5e6-96231b3b80d8
/external/llvm/lib/Target/ARM/ARMInstrThumb2.td
188ce9c78bdd817f5aa84eff6f1929387ca329e6 15-Apr-2011 Johnny Chen <johnny.chen@apple.com> For t2BFI, both Inst{26} and Inst{5} "should" be 0.

Ref: I.1 Instruction encoding diagrams and pseudocode


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@129552 91177308-0d34-0410-b5e6-96231b3b80d8
/external/llvm/lib/Target/ARM/ARMInstrThumb2.td
471d73d5d387d52dc854145caca971dfd9fd506a 13-Apr-2011 Johnny Chen <johnny.chen@apple.com> The LDR*T/STR*T (unpriviledged load/store) operations don't take SP or PC as Rt.

rdar://problem/9279440


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@129469 91177308-0d34-0410-b5e6-96231b3b80d8
/external/llvm/lib/Target/ARM/ARMInstrThumb2.td
6e3ccc3c85b960afd843288b701d08756add8e79 13-Apr-2011 Johnny Chen <johnny.chen@apple.com> Forgot to add this change for http://llvm.org/viewvc/llvm-project?view=rev&revision=129387.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@129451 91177308-0d34-0410-b5e6-96231b3b80d8
/external/llvm/lib/Target/ARM/ARMInstrThumb2.td
836a7de15907e0368f7785684f156764ea6b7069 13-Apr-2011 Jakob Stoklund Olesen <stoklund@2pi.dk> Add @earlyclobber constraints to the writeback register of all ARM store instructions.

The ARMARM specifies these instructions as unpredictable when storing the
writeback register. This shouldn't affect code generation much since storing a
pointer to itself is quite rare.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@129409 91177308-0d34-0410-b5e6-96231b3b80d8
/external/llvm/lib/Target/ARM/ARMInstrThumb2.td
ec51a6225c59fee9021b8b6c7c813228cb27a3fa 12-Apr-2011 Johnny Chen <johnny.chen@apple.com> The Thumb2 RFE instructions need to have their second halfword fully specified.
In addition, the base register is not rGPR, but GPR with th exception that:

if n == 15 then UNPREDICTABLE

rdar://problem/9273836


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@129391 91177308-0d34-0410-b5e6-96231b3b80d8
/external/llvm/lib/Target/ARM/ARMInstrThumb2.td
f9ce2cba42f76ad82bbb17436902f66a9e5f6367 12-Apr-2011 Johnny Chen <johnny.chen@apple.com> The Thumb2 Ld, St, and Preload instructions with the i12 forms should have its Inst{23}
be specified as '1' (add = TRUE).

Also add a utility function for Thumb2.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@129377 91177308-0d34-0410-b5e6-96231b3b80d8
/external/llvm/lib/Target/ARM/ARMInstrThumb2.td
505f3cd2965e65b6b7ad023eaba0e3dc89b67409 24-Mar-2011 Bruno Cardoso Lopes <bruno.cardoso@gmail.com> Add asm parsing support w/ testcases for strex/ldrex family of instructions

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@128236 91177308-0d34-0410-b5e6-96231b3b80d8
/external/llvm/lib/Target/ARM/ARMInstrThumb2.td
026a42b170c7724dceec87b1c570360cde68deda 22-Mar-2011 Bruno Cardoso Lopes <bruno.cardoso@gmail.com> Change MRC and MRC2 instructions to model the output register properly

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@128085 91177308-0d34-0410-b5e6-96231b3b80d8
/external/llvm/lib/Target/ARM/ARMInstrThumb2.td
3f30af3f4563fc6987d123a024f05b3e7769d9a1 18-Mar-2011 Evan Cheng <evan.cheng@apple.com> Match a few more obvious patterns to revsh. rdar://9147637.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@127913 91177308-0d34-0410-b5e6-96231b3b80d8
/external/llvm/lib/Target/ARM/ARMInstrThumb2.td
c9bd496aa206746d0bc114d15781650a5b543296 18-Mar-2011 Owen Anderson <resistor@mac.com> Thumb2 PC-relative loads require a fixup rather than just an immediate.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@127888 91177308-0d34-0410-b5e6-96231b3b80d8
/external/llvm/lib/Target/ARM/ARMInstrThumb2.td
e2189144d45be78a89f0daf3df3cf12e38221d86 14-Mar-2011 Jim Grosbach <grosbach@apple.com> Remove some dead patterns.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@127601 91177308-0d34-0410-b5e6-96231b3b80d8
/external/llvm/lib/Target/ARM/ARMInstrThumb2.td
584bf7bb03e4cf1475b26851edcc1ddb66b85028 18-Feb-2011 Bruno Cardoso Lopes <bruno.cardoso@gmail.com> Add assembly parsing support for "msr" and also fix its encoding. Also add
testcases for the disassembler to make sure it still works for "msr".



git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@125948 91177308-0d34-0410-b5e6-96231b3b80d8
/external/llvm/lib/Target/ARM/ARMInstrThumb2.td
a2b6e4151b75248f9dbf8067186cba673520f8f4 14-Feb-2011 Bruno Cardoso Lopes <bruno.cardoso@gmail.com> Fix encoding and add parsing support for the arm/thumb CPS instruction:
- Add custom operand matching for imod and iflags.
- Rename SplitMnemonicAndCC to SplitMnemonic since it splits more than CC
from mnemonic.
- While adding ".w" as an operand, don't change "Head" to avoid passing the
wrong mnemonic to ParseOperand.
- Add asm parser tests.
- Add disassembler tests just to make sure it can catch all cps versions.



git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@125489 91177308-0d34-0410-b5e6-96231b3b80d8
/external/llvm/lib/Target/ARM/ARMInstrThumb2.td
971b83b67a9812556cdb97bb58aa96fb37af458d 08-Feb-2011 Owen Anderson <resistor@mac.com> Revert both r121082 (which broke a bunch of constant pool stuff) and r125074 (which worked around it). This should get us back to the old, correct behavior, though it will make the integrated assembler unhappy for the time being.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@125127 91177308-0d34-0410-b5e6-96231b3b80d8
/external/llvm/lib/Target/ARM/ARMInstrThumb2.td
09989945e204d3d3434ae9f3392c335b25a1ac84 07-Feb-2011 Bob Wilson <bob.wilson@apple.com> Remove inaccurate comments: so_imm and t2_so_imm operands are not encoded
until the instructions are emitted or printed.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@125010 91177308-0d34-0410-b5e6-96231b3b80d8
/external/llvm/lib/Target/ARM/ARMInstrThumb2.td
1b10d5be40313b4e246e85cf375dfa3452ab306b 26-Jan-2011 Bruno Cardoso Lopes <bruno.cardoso@gmail.com> fix the encoding and add testcases for ARM nop, yield, wfe and wfi instructions

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@124288 91177308-0d34-0410-b5e6-96231b3b80d8
/external/llvm/lib/Target/ARM/ARMInstrThumb2.td
53519f015e3e84e9f57b677cc8724805a6009b73 21-Jan-2011 Evan Cheng <evan.cheng@apple.com> Last round of fixes for movw + movt global address codegen.
1. Fixed ARM pc adjustment.
2. Fixed dynamic-no-pic codegen
3. CSE of pc-relative load of global addresses.

It's now enabled by default for Darwin.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@123991 91177308-0d34-0410-b5e6-96231b3b80d8
/external/llvm/lib/Target/ARM/ARMInstrThumb2.td
030160073d8ec7d5fc1d928d9c8b6173d3a5e0cc 21-Jan-2011 Bruno Cardoso Lopes <bruno.cardoso@gmail.com> Fix the encoding of QADD/SUB, QDADD/SUB. While qadd16, qadd8 use "rd, rn, rm",
qadd and qdadd uses "rd, rm, rn", the same applies to the 'sub' variants. This
is described in ARM manuals and matches the encoding used by the gnu assembler.



git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@123975 91177308-0d34-0410-b5e6-96231b3b80d8
/external/llvm/lib/Target/ARM/ARMInstrThumb2.td
e47f3751d7770916f250a00a84316d412e959c00 20-Jan-2011 Bruno Cardoso Lopes <bruno.cardoso@gmail.com> Fix the encoding and parsing of clrex instruction

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@123936 91177308-0d34-0410-b5e6-96231b3b80d8
/external/llvm/lib/Target/ARM/ARMInstrThumb2.td
6456121d5c40f56d45ff4b8b183d5468e43b9717 20-Jan-2011 Bruno Cardoso Lopes <bruno.cardoso@gmail.com> Change instruction names for consistency

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@123930 91177308-0d34-0410-b5e6-96231b3b80d8
/external/llvm/lib/Target/ARM/ARMInstrThumb2.td
8dd37f7b7dca7907f9f070dc96359f242e102163 20-Jan-2011 Bruno Cardoso Lopes <bruno.cardoso@gmail.com> Add cdp/cdp2 instructions for thumb/thumb2

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@123929 91177308-0d34-0410-b5e6-96231b3b80d8
/external/llvm/lib/Target/ARM/ARMInstrThumb2.td
6b3a999f227139a3be7df6b5aea7a7d01ce94851 20-Jan-2011 Bruno Cardoso Lopes <bruno.cardoso@gmail.com> Add mcr*2 and mr*c2 support to thumb2 targets

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@123919 91177308-0d34-0410-b5e6-96231b3b80d8
/external/llvm/lib/Target/ARM/ARMInstrThumb2.td
907276dc4439c04d675fbcdb121cbede7a99ff9d 20-Jan-2011 Evan Cheng <evan.cheng@apple.com> Correct itinerary entry for t2MOV_pic_ga_add_pc.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@123907 91177308-0d34-0410-b5e6-96231b3b80d8
/external/llvm/lib/Target/ARM/ARMInstrThumb2.td
9fe2009956fc40f3aea46fb3c38dcfb61c4aca46 20-Jan-2011 Evan Cheng <evan.cheng@apple.com> Sorry, several patches in one.

TargetInstrInfo:
Change produceSameValue() to take MachineRegisterInfo as an optional argument.
When in SSA form, targets can use it to make more aggressive equality analysis.

Machine LICM:
1. Eliminate isLoadFromConstantMemory, use MI.isInvariantLoad instead.
2. Fix a bug which prevent CSE of instructions which are not re-materializable.
3. Use improved form of produceSameValue.

ARM:
1. Teach ARM produceSameValue to look pass some PIC labels.
2. Look for operands from different loads of different constant pool entries
which have same values.
3. Re-implement PIC GA materialization using movw + movt. Combine the pair with
a "add pc" or "ldr [pc]" to form pseudo instructions. This makes it possible
to re-materialize the instruction, allow machine LICM to hoist the set of
instructions out of the loop and make it possible to CSE them. It's a bit
hacky, but it significantly improve code quality.
4. Some minor bug fixes as well.

With the fixes, using movw + movt to materialize GAs significantly outperform the
load from constantpool method. 186.crafty and 255.vortex improved > 20%, 254.gap
and 176.gcc ~10%.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@123905 91177308-0d34-0410-b5e6-96231b3b80d8
/external/llvm/lib/Target/ARM/ARMInstrThumb2.td
fc8475bde993cc0fa6101427e73e8a9cf7d1c3a4 19-Jan-2011 Evan Cheng <evan.cheng@apple.com> Don't forget to emit the load from indirect symbol when using movw + movt to materialize GA indirect symbols.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@123809 91177308-0d34-0410-b5e6-96231b3b80d8
/external/llvm/lib/Target/ARM/ARMInstrThumb2.td
e7255a80e308c7f67d25b0b247ed791a99ea3a4e 18-Jan-2011 Bruno Cardoso Lopes <bruno.cardoso@gmail.com> Fix MRS encoding for arm and thumb.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@123778 91177308-0d34-0410-b5e6-96231b3b80d8
/external/llvm/lib/Target/ARM/ARMInstrThumb2.td
892fc6d7b64364b230261daa967518a71748c01b 18-Jan-2011 Bruno Cardoso Lopes <bruno.cardoso@gmail.com> Fix the encoding of t2ISB by using the right class and also parse it correctly

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@123776 91177308-0d34-0410-b5e6-96231b3b80d8
/external/llvm/lib/Target/ARM/ARMInstrThumb2.td
a461d4222877f43588da38c466145f38dd74e229 18-Jan-2011 Bruno Cardoso Lopes <bruno.cardoso@gmail.com> Add support for parsing and encoding ARM's official syntax for the BFI instruction

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@123770 91177308-0d34-0410-b5e6-96231b3b80d8
/external/llvm/lib/Target/ARM/ARMInstrThumb2.td
2e3cea3153ab957af01925580d912be060cb00cf 18-Jan-2011 Daniel Dunbar <daniel@zuster.org> McARM: Start marking T2 address operands as such, for the benefit of the parser.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@123722 91177308-0d34-0410-b5e6-96231b3b80d8
/external/llvm/lib/Target/ARM/ARMInstrThumb2.td
5de5d4b6d0eb3fd379fa571d82f6fa764460b3b8 17-Jan-2011 Evan Cheng <evan.cheng@apple.com> Materialize GA addresses with movw + movt pairs for Darwin in PIC mode. e.g.
movw r0, :lower16:(L_foo$non_lazy_ptr-(LPC0_0+4))
movt r0, :upper16:(L_foo$non_lazy_ptr-(LPC0_0+4))
LPC0_0:
add r0, pc, r0

It's not yet enabled by default as some tests are failing. I suspect bugs in
down stream tools.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@123619 91177308-0d34-0410-b5e6-96231b3b80d8
/external/llvm/lib/Target/ARM/ARMInstrThumb2.td
7597212abced110723f2fee985a7d60557c092ec 13-Jan-2011 Evan Cheng <evan.cheng@apple.com> Model :upper16: and :lower16: as ARM specific MCTargetExpr. This is a step
in the right direction. It eliminated some hacks and will unblock codegen
work. But it's far from being done. It doesn't reject illegal expressions,
e.g. (FOO - :lower16:BAR). It also doesn't work in Thumb2 mode at all.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@123369 91177308-0d34-0410-b5e6-96231b3b80d8
/external/llvm/lib/Target/ARM/ARMInstrThumb2.td
8d66b7852afec301a1a667069f8c497da2eec964 10-Jan-2011 Daniel Dunbar <daniel@zuster.org> McARM: Mark some T2 ...s instructions as codegen only, they aren't real
instructions but are restricted pseudo forms.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@123177 91177308-0d34-0410-b5e6-96231b3b80d8
/external/llvm/lib/Target/ARM/ARMInstrThumb2.td
f0db261e97f9c199e584b2a73095a7e36f4eb3cc 17-Dec-2010 Jim Grosbach <grosbach@apple.com> Add bits 31-28 to the Thumb2 encoding of TBB/TBH.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@122076 91177308-0d34-0410-b5e6-96231b3b80d8
/external/llvm/lib/Target/ARM/ARMInstrThumb2.td
d481110ef753902447d6b42e09d0ad0718e417cc 15-Dec-2010 Jim Grosbach <grosbach@apple.com> Tweak a few pseudo-inst pattern base classes.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@121878 91177308-0d34-0410-b5e6-96231b3b80d8
/external/llvm/lib/Target/ARM/ARMInstrThumb2.td
41b1d4e4725b34ccf646c706757d8a557ab376e7 15-Dec-2010 Jim Grosbach <grosbach@apple.com> The new t2LEApcrel* pseudo instructions need the size specified.
rdar://8768390

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@121876 91177308-0d34-0410-b5e6-96231b3b80d8
/external/llvm/lib/Target/ARM/ARMInstrThumb2.td
00f25fa43e5e36912a3302756a77585b810859bd 14-Dec-2010 Jim Grosbach <grosbach@apple.com> trailing whitespace.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@121789 91177308-0d34-0410-b5e6-96231b3b80d8
/external/llvm/lib/Target/ARM/ARMInstrThumb2.td
a838a25d59838adfa91463f6a918ae3adeb352c1 14-Dec-2010 Owen Anderson <resistor@mac.com> Second attempt at make Thumb2 LEAs pseudos. This time, perform the lowering much later, which makes the entire
process cleaner.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@121735 91177308-0d34-0410-b5e6-96231b3b80d8
/external/llvm/lib/Target/ARM/ARMInstrThumb2.td
6b8719fd7dc527e4c1910ae49ebee61d90907c08 13-Dec-2010 Owen Anderson <resistor@mac.com> Revert r121721, which broke buildbots.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@121726 91177308-0d34-0410-b5e6-96231b3b80d8
/external/llvm/lib/Target/ARM/ARMInstrThumb2.td
e8d02539d7981c07d301d91a6a5b6ad34099b510 13-Dec-2010 Owen Anderson <resistor@mac.com> Make Thumb2 LEA-like instruction into pseudos, which map down to ADR. Provide correct fixups for Thumb2 ADR,
which is _of course_ different from ARM ADR fixups, or any other Thumb2 fixup.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@121721 91177308-0d34-0410-b5e6-96231b3b80d8
/external/llvm/lib/Target/ARM/ARMInstrThumb2.td
c266600bec4b5ba0ee93ffdfeaafcab8f1295145 13-Dec-2010 Owen Anderson <resistor@mac.com> In Thumb2, direct branches can be encoded as either a "short" conditional branch with a null predicate, or
as a "long" direct branch. While the mnemonics are the same, they encode the branch offset differently, and
the Darwin assembler appears to prefer the "long" form for direct branches. Thus, in the name of bitwise
equivalence, provide encoding and fixup support for it.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@121710 91177308-0d34-0410-b5e6-96231b3b80d8
/external/llvm/lib/Target/ARM/ARMInstrThumb2.td
808c7d1482bafdcf1e6b2d759ae98946074b95e2 10-Dec-2010 Owen Anderson <resistor@mac.com> Fix Thumb2 encodings of STREX and LDREX.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@121579 91177308-0d34-0410-b5e6-96231b3b80d8
/external/llvm/lib/Target/ARM/ARMInstrThumb2.td
0be099da7937c13794e148ebcafa7880c01ed11a 10-Dec-2010 Jim Grosbach <grosbach@apple.com> Correct encoding of rotation immediate for Thumb2 instructions. rdar://8755999

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@121525 91177308-0d34-0410-b5e6-96231b3b80d8
/external/llvm/lib/Target/ARM/ARMInstrThumb2.td
683fc3e9afeda5178ab0644f4ba299715f53a7c8 10-Dec-2010 Jim Grosbach <grosbach@apple.com> More trivial cleanup. No need to define the EncoderMethod property type. Can
just assign to it.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@121523 91177308-0d34-0410-b5e6-96231b3b80d8
/external/llvm/lib/Target/ARM/ARMInstrThumb2.td
6b0fa635d5bfd80940e667cec1662e611f5d270f 09-Dec-2010 Owen Anderson <resistor@mac.com> Fix encoding of the immediate operands on post-indexed LDR and friends.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@121354 91177308-0d34-0410-b5e6-96231b3b80d8
/external/llvm/lib/Target/ARM/ARMInstrThumb2.td
a0e23c5e95978565b9e5a0cd38f4a0f26555d9be 09-Dec-2010 Jim Grosbach <grosbach@apple.com> The add/sub SP instructions are really pseudos. The assembler should ignore
them.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@121345 91177308-0d34-0410-b5e6-96231b3b80d8
/external/llvm/lib/Target/ARM/ARMInstrThumb2.td
fb20d890756b75d6ccfa7ab17f170a877d425dc6 09-Dec-2010 Owen Anderson <resistor@mac.com> Fix Thumb2 BCC encoding and fixups.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@121329 91177308-0d34-0410-b5e6-96231b3b80d8
/external/llvm/lib/Target/ARM/ARMInstrThumb2.td
60fc2ed2bb7e031c95fabaae581583110af8b831 09-Dec-2010 Jim Grosbach <grosbach@apple.com> Clean up the add/sub w/ SP source reg instructions in Thumb2 a bit. Add a FIXME
for more thorough cleanup.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@121315 91177308-0d34-0410-b5e6-96231b3b80d8
/external/llvm/lib/Target/ARM/ARMInstrThumb2.td
20e0fa698d734f5c1b2c96ff5b266e393c82c0b9 09-Dec-2010 Jim Grosbach <grosbach@apple.com> Fix T2TwoRegImm and use it for t2ADDrSPi12 and friends.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@121314 91177308-0d34-0410-b5e6-96231b3b80d8
/external/llvm/lib/Target/ARM/ARMInstrThumb2.td
7685ff84ada08d63c8b67618d54ab7eb1fcae365 09-Dec-2010 Jim Grosbach <grosbach@apple.com> T2TwoRegImm isn't right for t2SUBrSPi12. Use T2I instead.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@121311 91177308-0d34-0410-b5e6-96231b3b80d8
/external/llvm/lib/Target/ARM/ARMInstrThumb2.td
37474e6d68b42b0d1f4299c8588893bfaa3d0d09 09-Dec-2010 Jim Grosbach <grosbach@apple.com> Add operand encoding for Thumb2 subw SP + imm. rdar://8745434

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@121310 91177308-0d34-0410-b5e6-96231b3b80d8
/external/llvm/lib/Target/ARM/ARMInstrThumb2.td
07e9b26371c1045a5b1dde55fcaa8e2753eb0377 09-Dec-2010 Jim Grosbach <grosbach@apple.com> Add operand encoding for Thumb2 addw Rn + imm. rdar://8745434

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@121309 91177308-0d34-0410-b5e6-96231b3b80d8
/external/llvm/lib/Target/ARM/ARMInstrThumb2.td
b76dfe06d9eb42a4b7ffbb02997a2a8eead4faa1 08-Dec-2010 Jim Grosbach <grosbach@apple.com> Add operand encoding for Thumb2 addw SP + imm. rdar://8745434

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@121305 91177308-0d34-0410-b5e6-96231b3b80d8
/external/llvm/lib/Target/ARM/ARMInstrThumb2.td
7c6d85a98102add1994b612a707a379b8123c34b 08-Dec-2010 Jim Grosbach <grosbach@apple.com> Parameterize opcode encoding bits for Thumb2 extended precision integer
multiply instructions.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@121301 91177308-0d34-0410-b5e6-96231b3b80d8
/external/llvm/lib/Target/ARM/ARMInstrThumb2.td
520820489905c3c9ed268a1c27416f2a726cb66e 08-Dec-2010 Jim Grosbach <grosbach@apple.com> Fix operand encoding for Thumb2 extended precision multiplies. rdar://8745555

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@121297 91177308-0d34-0410-b5e6-96231b3b80d8
/external/llvm/lib/Target/ARM/ARMInstrThumb2.td
86386923625c7ae59e8e3d6ceaf9fdd3b33f7718 08-Dec-2010 Jim Grosbach <grosbach@apple.com> Simplify T2 operand assignment notation a bit. No need to specify a bit range
for the source field when it's the whole thing that's being referenced.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@121291 91177308-0d34-0410-b5e6-96231b3b80d8
/external/llvm/lib/Target/ARM/ARMInstrThumb2.td
bdf714450b70509538aa5a8a676034418ce827b6 07-Dec-2010 Owen Anderson <resistor@mac.com> Fix Thumb2 encoding of the S bit.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@121182 91177308-0d34-0410-b5e6-96231b3b80d8
/external/llvm/lib/Target/ARM/ARMInstrThumb2.td
97a884d602538705644e296a57a039959cdb6f6e 07-Dec-2010 Jim Grosbach <grosbach@apple.com> Refactor the ARM CMPz* patterns to just use the normal CMP instructions when
possible. They were duplicates for everything exception the source pattern
before.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@121179 91177308-0d34-0410-b5e6-96231b3b80d8
/external/llvm/lib/Target/ARM/ARMInstrThumb2.td
eb6779c5b98383e33542207f062102e79263df16 07-Dec-2010 Owen Anderson <resistor@mac.com> Second attempt at converting Thumb2's LDRpci, including updating the gazillion places that need to know about it.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@121082 91177308-0d34-0410-b5e6-96231b3b80d8
/external/llvm/lib/Target/ARM/ARMInstrThumb2.td
c76c59840b7a4491afdcd2f35483f8d6e5ab533a 06-Dec-2010 Owen Anderson <resistor@mac.com> Revert r121021, which broke the buildbots.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@121026 91177308-0d34-0410-b5e6-96231b3b80d8
/external/llvm/lib/Target/ARM/ARMInstrThumb2.td
4c386fc75488cf8663acf9527e335bbca1fbc0ac 06-Dec-2010 Owen Anderson <resistor@mac.com> Improve handling of Thumb2 PC-relative loads by converting LDRpci (and friends) to Pseudos.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@121021 91177308-0d34-0410-b5e6-96231b3b80d8
/external/llvm/lib/Target/ARM/ARMInstrThumb2.td
7721e7f279c4c01b29583011eaff48250ec6cdd9 03-Dec-2010 Jim Grosbach <grosbach@apple.com> Trailing whitespace.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@120748 91177308-0d34-0410-b5e6-96231b3b80d8
/external/llvm/lib/Target/ARM/ARMInstrThumb2.td
9d63d90de5e57ad96f467b270544443a9284eb2b 01-Dec-2010 Owen Anderson <resistor@mac.com> Add correct encodings for STRD and LDRD, including fixup support. Additionally, update these to unified syntax.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@120589 91177308-0d34-0410-b5e6-96231b3b80d8
/external/llvm/lib/Target/ARM/ARMInstrThumb2.td
80dd3e06129e2b570cbd65cba850571981df693a 30-Nov-2010 Owen Anderson <resistor@mac.com> Simplify the encoding of reg+/-imm12 values that allow PC-relative encoding. This allows the
Thumb2 encoding to share code with the ARM encoding, which gets use fixup support for free.
It also allows us to fold away at least one codegen-only pattern.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@120481 91177308-0d34-0410-b5e6-96231b3b80d8
/external/llvm/lib/Target/ARM/ARMInstrThumb2.td
c7373f8158c162509ce7aef932ccf01aa9419de7 30-Nov-2010 Owen Anderson <resistor@mac.com> Provide Thumb2 encodings for a few miscellaneous instructions.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@120455 91177308-0d34-0410-b5e6-96231b3b80d8
/external/llvm/lib/Target/ARM/ARMInstrThumb2.td
0e1bcdf4f7547bb5f47ed5ff5f2409a8f72f3609 30-Nov-2010 Owen Anderson <resistor@mac.com> Add encoding support for Thumb2 PLD and PLI instructions.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@120449 91177308-0d34-0410-b5e6-96231b3b80d8
/external/llvm/lib/Target/ARM/ARMInstrThumb2.td
eb05a8d250fb4da51279efc59e99a54eaf5b60ed 30-Nov-2010 Owen Anderson <resistor@mac.com> Provide encodings for a few more load/store variants.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@120439 91177308-0d34-0410-b5e6-96231b3b80d8
/external/llvm/lib/Target/ARM/ARMInstrThumb2.td
6af50f7dd12d82f0a80f3158102180eee4c921aa 30-Nov-2010 Owen Anderson <resistor@mac.com> Correct Thumb2 encodings for a much wider range of loads and stores.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@120364 91177308-0d34-0410-b5e6-96231b3b80d8
/external/llvm/lib/Target/ARM/ARMInstrThumb2.td
75579f739fbc99a92a15f3ce75bbd7628ba00f8c 29-Nov-2010 Owen Anderson <resistor@mac.com> Provide Thumb2 encodings for basic loads and stores.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@120340 91177308-0d34-0410-b5e6-96231b3b80d8
/external/llvm/lib/Target/ARM/ARMInstrThumb2.td
1e0eab122b6981d7180337aef2856851616c1183 29-Nov-2010 Evan Cheng <evan.cheng@apple.com> Mark Darwin call instructions as using "r7" to prevent the frame-register
assignment instructions from being moved below / above calls.
rdar://8690640


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@120339 91177308-0d34-0410-b5e6-96231b3b80d8
/external/llvm/lib/Target/ARM/ARMInstrThumb2.td
a0bb25311925079117de74e2e5a5fba8be4e91b4 29-Nov-2010 Jim Grosbach <grosbach@apple.com> Nuke dead isCodeGenOnly annotation and extraneous comment.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@120338 91177308-0d34-0410-b5e6-96231b3b80d8
/external/llvm/lib/Target/ARM/ARMInstrThumb2.td
fbf0cb18cbf74ef551c6e9f1cd8bd2c6541d7171 29-Nov-2010 Jim Grosbach <grosbach@apple.com> tidy up.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@120335 91177308-0d34-0410-b5e6-96231b3b80d8
/external/llvm/lib/Target/ARM/ARMInstrThumb2.td
5ca66696e734f963b613de51e3df3684395daf1c 29-Nov-2010 Jim Grosbach <grosbach@apple.com> Pseudo-ize Thumb2 jump tables with explicit MC lowering to the raw
instructions. This simplifies instruction printing and disassembly.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@120333 91177308-0d34-0410-b5e6-96231b3b80d8
/external/llvm/lib/Target/ARM/ARMInstrThumb2.td
d092a87ba3f905a6801a0bdf816267329cf0391c 29-Nov-2010 Jim Grosbach <grosbach@apple.com> Rename t2 TBB and TBH instructions to reference that they encode the jump table
data. Next up, pseudo-izing them.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@120320 91177308-0d34-0410-b5e6-96231b3b80d8
/external/llvm/lib/Target/ARM/ARMInstrThumb2.td
5404c2b36e7f4451c29d1a070fb090c59aee552a 29-Nov-2010 Owen Anderson <resistor@mac.com> Improving the factoring of several instruction encodings.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@120317 91177308-0d34-0410-b5e6-96231b3b80d8
/external/llvm/lib/Target/ARM/ARMInstrThumb2.td
00a035f74f85e2f05dd641cf7a0eb1d466a270cd 29-Nov-2010 Owen Anderson <resistor@mac.com> Thumb2 encodings for MSR and MRS.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@120309 91177308-0d34-0410-b5e6-96231b3b80d8
/external/llvm/lib/Target/ARM/ARMInstrThumb2.td
d18a9c9b9d7136c50daee7e5b43dd69da1c0aa52 29-Nov-2010 Owen Anderson <resistor@mac.com> Thumb2 encodings for system instructions.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@120307 91177308-0d34-0410-b5e6-96231b3b80d8
/external/llvm/lib/Target/ARM/ARMInstrThumb2.td
05bf595122154b45dfc4e23b459878a4b5224559 29-Nov-2010 Owen Anderson <resistor@mac.com> Thumb2 encodings for branches and IT blocks.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@120306 91177308-0d34-0410-b5e6-96231b3b80d8
/external/llvm/lib/Target/ARM/ARMInstrThumb2.td
7a08864860d68af2fdd70496601378e5e1b1c15d 19-Nov-2010 Jim Grosbach <grosbach@apple.com> Remove trailing whitespace.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@119806 91177308-0d34-0410-b5e6-96231b3b80d8
/external/llvm/lib/Target/ARM/ARMInstrThumb2.td
8b8640a9647ecbd461e20ec8ac823c7e5271835f 19-Nov-2010 Owen Anderson <resistor@mac.com> Fix decoding ambiguities of stdrex and ldrex.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@119801 91177308-0d34-0410-b5e6-96231b3b80d8
/external/llvm/lib/Target/ARM/ARMInstrThumb2.td
e8e67e13d49219bc0acd73961f3b2dd2ccb90cf4 19-Nov-2010 Evan Cheng <evan.cheng@apple.com> Fix an obvious oversight.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@119792 91177308-0d34-0410-b5e6-96231b3b80d8
/external/llvm/lib/Target/ARM/ARMInstrThumb2.td
91a7c59134fa331a8a5560ea0a96dd4ca50fea5b 19-Nov-2010 Owen Anderson <resistor@mac.com> Provide Thumb2 encodings for strex and ldrex.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@119768 91177308-0d34-0410-b5e6-96231b3b80d8
/external/llvm/lib/Target/ARM/ARMInstrThumb2.td
71c11825bf1673baad44274ff71e8df1be938f5e 19-Nov-2010 Owen Anderson <resistor@mac.com> Fix encodings for pkhbt, and fix some tests where I accidentally tested ARM mode instead of Thumb2.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@119755 91177308-0d34-0410-b5e6-96231b3b80d8
/external/llvm/lib/Target/ARM/ARMInstrThumb2.td
8ee9779658d61a426e52a2010522ec8914b8efdd 18-Nov-2010 Owen Anderson <resistor@mac.com> Provide Thumb2 encodings for mov's that come from MOVCC SDNodes.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@119744 91177308-0d34-0410-b5e6-96231b3b80d8
/external/llvm/lib/Target/ARM/ARMInstrThumb2.td
612fb5b9a6472f8e1cea8a4f771238840f4eaa1c 18-Nov-2010 Owen Anderson <resistor@mac.com> More Thumb2 encodings.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@119737 91177308-0d34-0410-b5e6-96231b3b80d8
/external/llvm/lib/Target/ARM/ARMInstrThumb2.td
821752e2e601b2e4c0bb83cb341892c853f16d0a 18-Nov-2010 Owen Anderson <resistor@mac.com> Fill out the set of Thumb2 multiplication operator encodings.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@119733 91177308-0d34-0410-b5e6-96231b3b80d8
/external/llvm/lib/Target/ARM/ARMInstrThumb2.td
99594eb1dec2ddccbfbc995d828ce37ad829ec87 18-Nov-2010 Jim Grosbach <grosbach@apple.com> ARM PseudoInst instructions don't need or use an assembler string. Get rid of
the operand to the pattern.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@119607 91177308-0d34-0410-b5e6-96231b3b80d8
/external/llvm/lib/Target/ARM/ARMInstrThumb2.td
35141a9ba3ce92281cdbe1ccd0f6b5a42398249c 18-Nov-2010 Owen Anderson <resistor@mac.com> Try again at providing Thumb2 encodings for basic multiplication operators.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@119601 91177308-0d34-0410-b5e6-96231b3b80d8
/external/llvm/lib/Target/ARM/ARMInstrThumb2.td
424216453fe2d16379fbb6c3310004b997d3771d 18-Nov-2010 Owen Anderson <resistor@mac.com> Revert r119593 while I figure out my testing disagrees with the buildbot.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@119597 91177308-0d34-0410-b5e6-96231b3b80d8
/external/llvm/lib/Target/ARM/ARMInstrThumb2.td
18333616cd824bee3abecd607d3aa432b5cf507d 18-Nov-2010 Owen Anderson <resistor@mac.com> Provide correct Thumb2 encodings for basic multiplication operators.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@119593 91177308-0d34-0410-b5e6-96231b3b80d8
/external/llvm/lib/Target/ARM/ARMInstrThumb2.td
2f7aed39a3082a3e0bb35475e8ed0cb782fef4b5 17-Nov-2010 Owen Anderson <resistor@mac.com> Second attempt at correct encodings for Thumb2 bitfield instructions.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@119575 91177308-0d34-0410-b5e6-96231b3b80d8
/external/llvm/lib/Target/ARM/ARMInstrThumb2.td
5aba9f694fbfb78df2aa2a228e85ba4c27f3037b 17-Nov-2010 Owen Anderson <resistor@mac.com> Revert r119551, which broke buildbots.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@119555 91177308-0d34-0410-b5e6-96231b3b80d8
/external/llvm/lib/Target/ARM/ARMInstrThumb2.td
23465a06f4f4fa098f99cf91e81ed8f26f962f3f 17-Nov-2010 Owen Anderson <resistor@mac.com> Provide Thumb2 encodings for bitfield instructions.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@119551 91177308-0d34-0410-b5e6-96231b3b80d8
/external/llvm/lib/Target/ARM/ARMInstrThumb2.td
c4af4638dfdab0dc3b6257276cfad2ee45053060 17-Nov-2010 Evan Cheng <evan.cheng@apple.com> Remove ARM isel hacks that fold large immediates into a pair of add, sub, and,
and xor. The 32-bit move immediates can be hoisted out of loops by machine
LICM but the isel hacks were preventing them.

Instead, let peephole optimization pass recognize registers that are defined by
immediates and the ARM target hook will fold the immediates in.

Other changes include 1) do not fold and / xor into cmp to isel TST / TEQ
instructions if there are multiple uses. This happens when the 'and' is live
out, machine sink would have sinked the computation and that ends up pessimizing
code. The peephole pass would recognize situations where the 'and' can be
toggled to define CPSR and eliminate the comparison anyway.

2) Move peephole pass to after machine LICM, sink, and CSE to avoid blocking
important optimizations.

rdar://8663787, rdar://8241368


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@119548 91177308-0d34-0410-b5e6-96231b3b80d8
/external/llvm/lib/Target/ARM/ARMInstrThumb2.td
46c478e80255bb1475e712ebb119808a9d0b9e12 17-Nov-2010 Owen Anderson <resistor@mac.com> More miscellaneous Thumb2 encodings.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@119546 91177308-0d34-0410-b5e6-96231b3b80d8
/external/llvm/lib/Target/ARM/ARMInstrThumb2.td
3380f6a4d0f88fa27ac7112ffe0ad9b55f589828 17-Nov-2010 Bill Wendling <isanbard@gmail.com> Use the correct variable names so that the encodings will be correct.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@119403 91177308-0d34-0410-b5e6-96231b3b80d8
/external/llvm/lib/Target/ARM/ARMInstrThumb2.td
1eeb2806cbfb27db6a842f586d498ef12a933608 16-Nov-2010 Bill Wendling <isanbard@gmail.com> L_bit doesn't work here.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@119325 91177308-0d34-0410-b5e6-96231b3b80d8
/external/llvm/lib/Target/ARM/ARMInstrThumb2.td
7b71878d9f490dbdccd39a7f8e813cab58fe8503 16-Nov-2010 Bill Wendling <isanbard@gmail.com> - Remove dead patterns.
- Add encodings to the *LDMIA_RET instrs. Probably not needed...


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@119323 91177308-0d34-0410-b5e6-96231b3b80d8
/external/llvm/lib/Target/ARM/ARMInstrThumb2.td
73fe34a3ee866867d5028f4a9afa2c3b8efebcba 16-Nov-2010 Bill Wendling <isanbard@gmail.com> Encode the multi-load/store instructions with their respective modes ('ia',
'db', 'ib', 'da') instead of having that mode as a separate field in the
instruction. It's more convenient for the asm parser and much more readable for
humans.
<rdar://problem/8654088>


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@119310 91177308-0d34-0410-b5e6-96231b3b80d8
/external/llvm/lib/Target/ARM/ARMInstrThumb2.td
c56dcbf641f1675579e23064b1c7db1c73ca712b 16-Nov-2010 Owen Anderson <resistor@mac.com> Add Thumb2 encodings for mov and friends.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@119295 91177308-0d34-0410-b5e6-96231b3b80d8
/external/llvm/lib/Target/ARM/ARMInstrThumb2.td
da663f7b51acdc076eb40cbaf197816ca26ff64c 15-Nov-2010 Owen Anderson <resistor@mac.com> Attempt to provide encodings for some miscellaneous Thumb2 encodings.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@119187 91177308-0d34-0410-b5e6-96231b3b80d8
/external/llvm/lib/Target/ARM/ARMInstrThumb2.td
2c4c45deb6a7a8521f6039e3da9688be4cac09d2 15-Nov-2010 Owen Anderson <resistor@mac.com> Provide Thumb2 encodings for sxtb and friends.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@119185 91177308-0d34-0410-b5e6-96231b3b80d8
/external/llvm/lib/Target/ARM/ARMInstrThumb2.td
bb6315d1e48f24e0eefa98b0f572fda8dbb3251f 15-Nov-2010 Owen Anderson <resistor@mac.com> Add Thumb2 encodings for comparison and shift operators.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@119176 91177308-0d34-0410-b5e6-96231b3b80d8
/external/llvm/lib/Target/ARM/ARMInstrThumb2.td
a99e778ed894402a4468ad0b695716226471d726 15-Nov-2010 Owen Anderson <resistor@mac.com> Add correct Thumb2 encodings for mvn and friends.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@119170 91177308-0d34-0410-b5e6-96231b3b80d8
/external/llvm/lib/Target/ARM/ARMInstrThumb2.td
2ac190238e88b21e716e2853900b5076c9013410 15-Nov-2010 Chris Lattner <sabre@nondot.org> add fields to the .td files unconditionally, simplifying tblgen a bit.
Switch the ARM backend to use 'let' instead of 'set' with this change.



git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@119120 91177308-0d34-0410-b5e6-96231b3b80d8
/external/llvm/lib/Target/ARM/ARMInstrThumb2.td
83da6cd5e2d84a7d247f7f8af745763f550c1af5 14-Nov-2010 Owen Anderson <resistor@mac.com> Second attempt at providing correct encodings for Thumb2 binary operators.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@119029 91177308-0d34-0410-b5e6-96231b3b80d8
/external/llvm/lib/Target/ARM/ARMInstrThumb2.td
c93989a0606daff0e96c34790e603b1dd5ca966e 13-Nov-2010 Bill Wendling <isanbard@gmail.com> Comment out the defms until they're activated.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@119000 91177308-0d34-0410-b5e6-96231b3b80d8
/external/llvm/lib/Target/ARM/ARMInstrThumb2.td
ddc918b379d448d8fc8f249459eee5f3772e07e9 13-Nov-2010 Bill Wendling <isanbard@gmail.com> Add uses of the *_ldst_multi multiclasses. These aren't used yet.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@118999 91177308-0d34-0410-b5e6-96231b3b80d8
/external/llvm/lib/Target/ARM/ARMInstrThumb2.td
1f4abcfa5cf2a2d929d95714078ac16ebacba7d8 13-Nov-2010 Bill Wendling <isanbard@gmail.com> Convert the modes to lower case.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@118998 91177308-0d34-0410-b5e6-96231b3b80d8
/external/llvm/lib/Target/ARM/ARMInstrThumb2.td
6c470b806fe8eefae1b7bf180f269a4b120173a4 13-Nov-2010 Bill Wendling <isanbard@gmail.com> Add *_ldst_mult multiclasses to the ARM back-end. These will be used in the
future to separate out the ia, ib, da, db variants of the load/store multiple
instructions.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@118995 91177308-0d34-0410-b5e6-96231b3b80d8
/external/llvm/lib/Target/ARM/ARMInstrThumb2.td
c47f7d643eee54c087bbe4c9964aa4d5afb7f6fe 13-Nov-2010 Evan Cheng <evan.cheng@apple.com> Conditional moves are slightly more expensive than moves.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@118985 91177308-0d34-0410-b5e6-96231b3b80d8
/external/llvm/lib/Target/ARM/ARMInstrThumb2.td
63f3544a7f6ca09e7515d6b0e1bf9e8e884131e2 13-Nov-2010 Evan Cheng <evan.cheng@apple.com> Add conditional move of large immediate.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@118968 91177308-0d34-0410-b5e6-96231b3b80d8
/external/llvm/lib/Target/ARM/ARMInstrThumb2.td
b9a643e2cdfe0ee9f99e1e32ccdbfd3ddf13a46f 13-Nov-2010 Owen Anderson <resistor@mac.com> Revert r118939 while I work out why it broke some buildbots.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@118942 91177308-0d34-0410-b5e6-96231b3b80d8
/external/llvm/lib/Target/ARM/ARMInstrThumb2.td
7a6b810dcb3f25634f46462914b3d22985b8559f 13-Nov-2010 Owen Anderson <resistor@mac.com> Attemt to provide correct encodings for Thumb2 binary operators.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@118939 91177308-0d34-0410-b5e6-96231b3b80d8
/external/llvm/lib/Target/ARM/ARMInstrThumb2.td
875a6ac09a2a4ae2d83dfe262a81d6eb33c24022 12-Nov-2010 Evan Cheng <evan.cheng@apple.com> Add conditional mvn instructions.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@118935 91177308-0d34-0410-b5e6-96231b3b80d8
/external/llvm/lib/Target/ARM/ARMInstrThumb2.td
5de6d841a5116152793dcab35a2e534a6a9aaa7a 12-Nov-2010 Owen Anderson <resistor@mac.com> First stab at providing correct Thumb2 encodings, start with adc.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@118924 91177308-0d34-0410-b5e6-96231b3b80d8
/external/llvm/lib/Target/ARM/ARMInstrThumb2.td
416941d50fec5ebdc4ae3b113a0db1320c3b2a87 04-Nov-2010 Evan Cheng <evan.cheng@apple.com> Fix @llvm.prefetch isel. Selecting between pld / pldw using the first immediate rw. There is currently no intrinsic that matches to pli.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@118237 91177308-0d34-0410-b5e6-96231b3b80d8
/external/llvm/lib/Target/ARM/ARMInstrThumb2.td
dfed19fe2c34c1209108afa58e8ab014ffd894e2 03-Nov-2010 Evan Cheng <evan.cheng@apple.com> Fix preload instruction isel. Only v7 supports pli, and only v7 with mp extension supports pldw. Add subtarget attribute to denote mp extension support and legalize illegal ones to nothing.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@118160 91177308-0d34-0410-b5e6-96231b3b80d8
/external/llvm/lib/Target/ARM/ARMInstrThumb2.td
bc7deb0f758d2544fc4c36433668340cbf4835cf 03-Nov-2010 Evan Cheng <evan.cheng@apple.com> Add support to match @llvm.prefetch to pld / pldw / pli. rdar://8601536.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@118152 91177308-0d34-0410-b5e6-96231b3b80d8
/external/llvm/lib/Target/ARM/ARMInstrThumb2.td
e6913600c723a10ab1f06a43c93d82ee8e26c71c 03-Nov-2010 Jim Grosbach <grosbach@apple.com> Break ARM addrmode4 (load/store multiple base address) into its constituent
parts. Represent the operation mode as an optional operand instead.
rdar://8614429

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@118137 91177308-0d34-0410-b5e6-96231b3b80d8
/external/llvm/lib/Target/ARM/ARMInstrThumb2.td
a1ca91af4e01b413cd1d1b3fa9d8d24fa99d9293 03-Nov-2010 Chris Lattner <sabre@nondot.org> Completely reject instructions that have an operand in their
ins/outs list that isn't specified by their asmstring. Previously
the asmmatcher would just force a 0 register into it, which clearly
isn't right. Mark a bunch of ARM instructions that use this as
isCodeGenOnly. Some of them are clearly pseudo instructions (like
t2TBB) others use a weird hasExtraSrcRegAllocReq thing that will
either need to be removed or the asmmatcher will need to be taught
about it (someday).



git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@118119 91177308-0d34-0410-b5e6-96231b3b80d8
/external/llvm/lib/Target/ARM/ARMInstrThumb2.td
9729d2e9989f970724776c3e947cc7244ae45f90 01-Nov-2010 Jim Grosbach <grosbach@apple.com> The T2 extract/pack instructions are only valid in Thumb2 mode. Mark the
patterns as such

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@117923 91177308-0d34-0410-b5e6-96231b3b80d8
/external/llvm/lib/Target/ARM/ARMInstrThumb2.td
a4a3a5e3c212e7b4ac84fec94c9a140f120f3ff6 31-Oct-2010 Chris Lattner <sabre@nondot.org> two changes: make the asmmatcher generator ignore ARM pseudos properly,
and make it a hard error for instructions to not have an asm string.
These instructions should be marked isCodeGenOnly.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@117861 91177308-0d34-0410-b5e6-96231b3b80d8
/external/llvm/lib/Target/ARM/ARMInstrThumb2.td
39ee036f407bd0c94cb993cf9b97348843cfafa4 31-Oct-2010 Chris Lattner <sabre@nondot.org> reapply r117858 with apparent editor malfunction fixed (somehow I
got a dulicated line).


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@117860 91177308-0d34-0410-b5e6-96231b3b80d8
/external/llvm/lib/Target/ARM/ARMInstrThumb2.td
8b2f0822f3e9e5727b2188872a9db76bc6b87cc6 31-Oct-2010 Chris Lattner <sabre@nondot.org> revert r117858 while I check out a failure I missed.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@117859 91177308-0d34-0410-b5e6-96231b3b80d8
/external/llvm/lib/Target/ARM/ARMInstrThumb2.td
efa53760feb23935c29176a94e937f02c3aa5683 31-Oct-2010 Chris Lattner <sabre@nondot.org> the asm matcher can't handle operands with modifiers (like ${foo:bar}).
Instead of silently ignoring these instructions, emit a hard error and
force the target author to either refactor the target or mark the
instruction 'isCodeGenOnly'.

Mark a few instructions in ARM and MBlaze as isCodeGenOnly the are
doing this.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@117858 91177308-0d34-0410-b5e6-96231b3b80d8
/external/llvm/lib/Target/ARM/ARMInstrThumb2.td
f74a4298163a7d0b500c7f7a818829c153dc942e 30-Oct-2010 Bob Wilson <bob.wilson@apple.com> Overhaul memory barriers in the ARM backend. Radar 8601999.
There were a number of issues to fix up here:
* The "device" argument of the llvm.memory.barrier intrinsic should be
used to distinguish the "Full System" domain from the "Inner Shareable"
domain. It has nothing to do with using DMB vs. DSB instructions.
* The compiler should never need to emit DSB instructions. Remove the
ARMISD::SYNCBARRIER node and also remove the instruction patterns for DSB.
* Merge the separate DMB/DSB instructions for options only used for the
disassembler with the default DMB/DSB instructions. Add the default
"full system" option ARM_MB::SY to the ARM_MB::MemBOpt enum.
* Add a separate ARMISD::MEMBARRIER_MCR node for subtargets that implement
a data memory barrier using the MCR instruction.
* Fix up encodings for these instructions (except MCR).
I also updated the tests and added a few new ones to check for DMB options
that were not currently being exercised.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@117756 91177308-0d34-0410-b5e6-96231b3b80d8
/external/llvm/lib/Target/ARM/ARMInstrThumb2.td
f38bfd1918aa3d9397e501d5f4a5bd0434fa2742 30-Oct-2010 Jim Grosbach <grosbach@apple.com> Remove hard tab characters.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@117742 91177308-0d34-0410-b5e6-96231b3b80d8
/external/llvm/lib/Target/ARM/ARMInstrThumb2.td
7e2fe9150f905167f6685c9730911c2abc08293c 28-Oct-2010 Evan Cheng <evan.cheng@apple.com> Re-commit 117518 and 117519 now that ARM MC test failures are out of the way.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@117531 91177308-0d34-0410-b5e6-96231b3b80d8
/external/llvm/lib/Target/ARM/ARMInstrThumb2.td
9e08ee5d16b596078e20787f0b5f36121f099333 28-Oct-2010 Evan Cheng <evan.cheng@apple.com> Revert 117518 and 117519 for now. They changed scheduling and cause MC tests to fail. Ugh.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@117520 91177308-0d34-0410-b5e6-96231b3b80d8
/external/llvm/lib/Target/ARM/ARMInstrThumb2.td
0104d9de04f5620ad9f837efbd3d82f31c6ff451 28-Oct-2010 Evan Cheng <evan.cheng@apple.com> - Assign load / store with shifter op address modes the right itinerary classes.
- For now, loads of [r, r] addressing mode is the same as the
[r, r lsl/lsr/asr #] variants. ARMBaseInstrInfo::getOperandLatency() should
identify the former case and reduce the output latency by 1.
- Also identify [r, r << 2] case. This special form of shifter addressing mode
is "free".


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@117519 91177308-0d34-0410-b5e6-96231b3b80d8
/external/llvm/lib/Target/ARM/ARMInstrThumb2.td
458f2dc5d1b0120bd5921582eb1149ea770568bd 25-Oct-2010 Jim Grosbach <grosbach@apple.com> imm12 operands aren't Thumb2 only, so rename the printer helper function.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@117291 91177308-0d34-0410-b5e6-96231b3b80d8
/external/llvm/lib/Target/ARM/ARMInstrThumb2.td
1dd5a2f4e127a99914359cf39f19b3a9916d6be1 15-Oct-2010 Bob Wilson <bob.wilson@apple.com> Remove unused ARMISD::AND selection DAG node.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@116566 91177308-0d34-0410-b5e6-96231b3b80d8
/external/llvm/lib/Target/ARM/ARMInstrThumb2.td
792e9796b3dc068d4545e9f5ff927b02731e3836 14-Oct-2010 Jim Grosbach <grosbach@apple.com> Tweak the ARM backend to use the RRX mnemonic instead of the 'mov a, b, rrx'
pseudonym.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@116512 91177308-0d34-0410-b5e6-96231b3b80d8
/external/llvm/lib/Target/ARM/ARMInstrThumb2.td
95369599c61ab1b35ae3afe349763b886225c5be 14-Oct-2010 Jim Grosbach <grosbach@apple.com> A few 80 column fixes.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@116451 91177308-0d34-0410-b5e6-96231b3b80d8
/external/llvm/lib/Target/ARM/ARMInstrThumb2.td
a4257162be84d9d606a42e9db5ce2163426949e3 07-Oct-2010 Jim Grosbach <grosbach@apple.com> Allow use of the 16-bit literal move instruction in CMOVs for Thumb2 mode.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@115890 91177308-0d34-0410-b5e6-96231b3b80d8
/external/llvm/lib/Target/ARM/ARMInstrThumb2.td
3c38f96af2a5443d9f72fd078c2c98dd08746e51 07-Oct-2010 Jim Grosbach <grosbach@apple.com> Clean up MOVi32imm and t2MOVi32imm pseudo instruction definitions.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@115853 91177308-0d34-0410-b5e6-96231b3b80d8
/external/llvm/lib/Target/ARM/ARMInstrThumb2.td
a0792de66c8364d47b0a688c7f408efb7b10f31b 06-Oct-2010 Evan Cheng <evan.cheng@apple.com> - Add TargetInstrInfo::getOperandLatency() to compute operand latencies. This
allow target to correctly compute latency for cases where static scheduling
itineraries isn't sufficient. e.g. variable_ops instructions such as
ARM::ldm.
This also allows target without scheduling itineraries to compute operand
latencies. e.g. X86 can return (approximated) latencies for high latency
instructions such as division.
- Compute operand latencies for those defined by load multiple instructions,
e.g. ldm and those used by store multiple instructions, e.g. stm.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@115755 91177308-0d34-0410-b5e6-96231b3b80d8
/external/llvm/lib/Target/ARM/ARMInstrThumb2.td
78890f41f404fad3663408edd4adf2e13c1e13b5 02-Oct-2010 Jim Grosbach <grosbach@apple.com> Nuke the rest of the :comment references

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@115373 91177308-0d34-0410-b5e6-96231b3b80d8
/external/llvm/lib/Target/ARM/ARMInstrThumb2.td
71d933a49ef10508f8117a58bab63cb1bb7bdc00 30-Sep-2010 Jim Grosbach <grosbach@apple.com> The asm strings are never used at all, so just nuke 'em entirely.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@115160 91177308-0d34-0410-b5e6-96231b3b80d8
/external/llvm/lib/Target/ARM/ARMInstrThumb2.td
7ebc863c156c5ccd127045ddb8d663c3b49ac5f3 30-Sep-2010 Jim Grosbach <grosbach@apple.com> Go ahead and jump!

Now that the MC lowering handles the expansion of the pseudos, kill the horrible
blobs of text.



git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@115130 91177308-0d34-0410-b5e6-96231b3b80d8
/external/llvm/lib/Target/ARM/ARMInstrThumb2.td
0e55fd61ae9ab88cf76b30f7e69d168bd7be87d0 30-Sep-2010 Evan Cheng <evan.cheng@apple.com> ARM instruction itinerary fixes:
1. Cortex-a9 8-bit and 16-bit loads / stores AGU cycles are 1 cycle longer than 32-bit ones.
2. Cortex-a9 is out-of-order so model all read cycles as cycle 1.
3. Lots of other random fixes for A8 and A9.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@115121 91177308-0d34-0410-b5e6-96231b3b80d8
/external/llvm/lib/Target/ARM/ARMInstrThumb2.td
3881cb7a5d54c0011b40997adcd742e1c7b91abd 30-Sep-2010 Evan Cheng <evan.cheng@apple.com> Model Cortex-a9 load to SUB, RSB, ADD, ADC, SBC, RSC, CMN, MVN, or CMP
pipeline forwarding path.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@115098 91177308-0d34-0410-b5e6-96231b3b80d8
/external/llvm/lib/Target/ARM/ARMInstrThumb2.td
5d42c567c901508e80ab10ddba1bb30a5007d742 29-Sep-2010 Evan Cheng <evan.cheng@apple.com> Separate itinerary classes for mvn from mov; for tst / teq from cmp / cmn.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@115010 91177308-0d34-0410-b5e6-96231b3b80d8
/external/llvm/lib/Target/ARM/ARMInstrThumb2.td
7e1bf305cfecbaee859405468b769650efe68f1a 29-Sep-2010 Evan Cheng <evan.cheng@apple.com> Assign bitwise binary instructions different itinerary classes from ALU instructions such as add / sub.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@115008 91177308-0d34-0410-b5e6-96231b3b80d8
/external/llvm/lib/Target/ARM/ARMInstrThumb2.td
bd30ce4311e158f1bfc6c95987ffbbad2193fef3 25-Sep-2010 Evan Cheng <evan.cheng@apple.com> More pseudo instruction scheduling itinerary fixes.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@114768 91177308-0d34-0410-b5e6-96231b3b80d8
/external/llvm/lib/Target/ARM/ARMInstrThumb2.td
5be39223216298009799d4a51ed8669934685d58 25-Sep-2010 Evan Cheng <evan.cheng@apple.com> Fix scheduling itinerary for pseudo mov immediate instructions which expand into two real instructions.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@114766 91177308-0d34-0410-b5e6-96231b3b80d8
/external/llvm/lib/Target/ARM/ARMInstrThumb2.td
f523e476c2e199220306b367b7bd834978fb93d6 24-Sep-2010 Owen Anderson <resistor@mac.com> Revert r114703 and r114702, removing the isConditionalMove flag from instructions. After further
reflection, this isn't going to achieve the purpose I intended it for. Back to the drawing board!


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@114710 91177308-0d34-0410-b5e6-96231b3b80d8
/external/llvm/lib/Target/ARM/ARMInstrThumb2.td
71e416ac3aeccfadec2a57150b4f4a243ed6e461 24-Sep-2010 Owen Anderson <resistor@mac.com> Add isConditionalMove bits to X86 and ARM instructions.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@114703 91177308-0d34-0410-b5e6-96231b3b80d8
/external/llvm/lib/Target/ARM/ARMInstrThumb2.td
52a261b3c1391c5fec399ddeb3fc6ee9541e8790 21-Sep-2010 Chris Lattner <sabre@nondot.org> fix a long standing wart: all the ComplexPattern's were being
passed the root of the match, even though only a few patterns
actually needed this (one in X86, several in ARM [which should
be refactored anyway], and some in CellSPU that I don't feel
like detangling). Instead of requiring all ComplexPatterns to
take the dead root, have targets opt into getting the root by
putting SDNPWantRoot on the ComplexPattern.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@114471 91177308-0d34-0410-b5e6-96231b3b80d8
/external/llvm/lib/Target/ARM/ARMInstrThumb2.td
7602acbf3b90af995606e199d68510b856c8e7e7 09-Sep-2010 Evan Cheng <evan.cheng@apple.com> Fix LDM_RET schedule itinery.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@113435 91177308-0d34-0410-b5e6-96231b3b80d8
/external/llvm/lib/Target/ARM/ARMInstrThumb2.td
979b0618192cd99058a7a21c04341c47801dd688 06-Sep-2010 Chris Lattner <sabre@nondot.org> remove some dead code. t2addrmode_imm8s4 is never used in a
pattern, so there is no need to define a matching function.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@113122 91177308-0d34-0410-b5e6-96231b3b80d8
/external/llvm/lib/Target/ARM/ARMInstrThumb2.td
5bcb8a6112eca5fb72b39b6b4e608ab1b41e94de 01-Sep-2010 Chris Lattner <sabre@nondot.org> temporarily revert r112664, it is causing a decoding conflict, and
the testcases should be merged.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@112711 91177308-0d34-0410-b5e6-96231b3b80d8
/external/llvm/lib/Target/ARM/ARMInstrThumb2.td
43a6c5e2fccadb299c35cb3147d112f706922acd 01-Sep-2010 Bill Wendling <isanbard@gmail.com> We have a chance for an optimization. Consider this code:

int x(int t) {
if (t & 256)
return -26;
return 0;
}

We generate this:

tst.w r0, #256
mvn r0, #25
it eq
moveq r0, #0

while gcc generates this:

ands r0, r0, #256
it ne
mvnne r0, #25
bx lr

Scandalous really!

During ISel time, we can look for this particular pattern. One where we have a
"MOVCC" that uses the flag off of a CMPZ that itself is comparing an AND
instruction to 0. Something like this (greatly simplified):

%r0 = ISD::AND ...
ARMISD::CMPZ %r0, 0 @ sets [CPSR]
%r0 = ARMISD::MOVCC 0, -26 @ reads [CPSR]

All we have to do is convert the "ISD::AND" into an "ARM::ANDS" that sets [CPSR]
when it's zero. The zero value will all ready be in the %r0 register and we only
need to change it if the AND wasn't zero. Easy!


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@112664 91177308-0d34-0410-b5e6-96231b3b80d8
/external/llvm/lib/Target/ARM/ARMInstrThumb2.td
55c134a26188291f60c44d027a837f05d797194f 31-Aug-2010 Bill Wendling <isanbard@gmail.com> Use the existing T2I_bin_s_irs pattern instead of creating T2I_bin_sw_irs, which
is meant to do exactly the same thing. Thanks to Jim Grosbach for pointing this
out! :-)


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@112538 91177308-0d34-0410-b5e6-96231b3b80d8
/external/llvm/lib/Target/ARM/ARMInstrThumb2.td
663e339e208a9d54d3731618cb484e8a07c33335 30-Aug-2010 Jim Grosbach <grosbach@apple.com> Make ARM add rN, sp, #imm instructions rematerializable. That's how the address of locals is calculated, so this should
help relieve register pressure a bit. Recalculating the local address is
almost always going to be better than spilling.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@112503 91177308-0d34-0410-b5e6-96231b3b80d8
/external/llvm/lib/Target/ARM/ARMInstrThumb2.td
4822bce4aa395e3e96215e18f5c926c78d4a0e64 30-Aug-2010 Bill Wendling <isanbard@gmail.com> Create Thumb2sI_cpsr and T2sI_cpsr. These new classes indicate that CPSR is the
optional modified register (instead of reg0). Along with r112461 it will make
sure that the optional define of CPSR is marked as "def" and will thus mark the
instructions using these classes (t2ANDS*) as setting the 's' flag.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@112462 91177308-0d34-0410-b5e6-96231b3b80d8
/external/llvm/lib/Target/ARM/ARMInstrThumb2.td
1f7bf0e1f5748a1f8486ebc62fd556eccbe76e1c 29-Aug-2010 Bill Wendling <isanbard@gmail.com> - Add a parameter to T2I_bin_irs for those patterns which set the S bit.
- Create T2I_bin_sw_irs to be like T2I_bin_w_irs, but that it sets the S bit.



git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@112399 91177308-0d34-0410-b5e6-96231b3b80d8
/external/llvm/lib/Target/ARM/ARMInstrThumb2.td
2c4b30ebca87b4578fcf7a45a0bb9dbe956f1ec0 29-Aug-2010 Bill Wendling <isanbard@gmail.com> Name ANDflag to ANDS, which is less stupid.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@112395 91177308-0d34-0410-b5e6-96231b3b80d8
/external/llvm/lib/Target/ARM/ARMInstrThumb2.td
0b4aa7d11b9a55d602b7398da4495a3b6eba5018 29-Aug-2010 Bill Wendling <isanbard@gmail.com> Create an ARMISD::AND node. This node is exactly like the "ARM::AND" node, but
it sets the CPSR register.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@112393 91177308-0d34-0410-b5e6-96231b3b80d8
/external/llvm/lib/Target/ARM/ARMInstrThumb2.td
9f134b571310f5591015cb85bbe182890191f837 26-Aug-2010 Jim Grosbach <grosbach@apple.com> Restrict the register to tGPR to make sure the str instruction will be
encodable as a 16-bit wide instruction.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@112195 91177308-0d34-0410-b5e6-96231b3b80d8
/external/llvm/lib/Target/ARM/ARMInstrThumb2.td
4b7dff9a793f3258936c990c8f6a991366d4f55b 26-Aug-2010 Dan Gohman <gohman@apple.com> Revert r112176; it broke test/CodeGen/Thumb2/thumb2-cmn.ll.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@112191 91177308-0d34-0410-b5e6-96231b3b80d8
/external/llvm/lib/Target/ARM/ARMInstrThumb2.td
01b1e1c958d50b79acdf90824f36f7cb8a5be884 26-Aug-2010 Bill Wendling <isanbard@gmail.com> There seems to be a (potential) hardware bug with the CMN instruction and
comparison with 0. These two pieces of code should give identical results:

rsbs r1, r1, 0
cmp r0, r1
mov r0, #0
it ls
mov r0, #1

and:

cmn r0, r1
mov r0, #0
it ls
mov r0, #1

However, the CMN gives the *opposite* result when r1 is 0. This is because the
carry flag is set in the CMP case but not in the CMN case. In short, the CMP
instruction doesn't perform a truncate of the (logical) NOT of 0 plus the value
of r0 and the carry bit (because the "carry bit" parameter to AddWithCarry is
defined as 1 in this case, the carry flag will always be set when r0 >= 0). The
CMN instruction doesn't perform a NOT of 0 so there is never a "carry" when this
AddWithCarry is performed (because the "carry bit" parameter to AddWithCarry is
defined as 0).

The AddWithCarry in the CMP case seems to be relying upon the identity:

~x + 1 = -x

However when x is 0 and unsigned, this doesn't hold:

x = 0
~x = 0xFFFF FFFF
~x + 1 = 0x1 0000 0000
(-x = 0) != (0x1 0000 0000 = ~x + 1)

Therefore, we should disable *all* versions of CMN, especially when comparing
against zero, until we can limit when the CMN instruction is used (when we know
that the RHS is not 0) or when we have a hardware fix for this.

(See the ARM docs for the "AddWithCarry" pseudo-code.)

This is related to <rdar://problem/7569620>.



git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@112176 91177308-0d34-0410-b5e6-96231b3b80d8
/external/llvm/lib/Target/ARM/ARMInstrThumb2.td
f0e132c385fa0196e1c9a744ee0aaceec527bc91 19-Aug-2010 Bill Wendling <isanbard@gmail.com> Add the "isCompare" attribute to the defm instead of each individual instr.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@111481 91177308-0d34-0410-b5e6-96231b3b80d8
/external/llvm/lib/Target/ARM/ARMInstrThumb2.td
00d3dda86f825f32277eba8c4206f48fbfc9f584 17-Aug-2010 Jakob Stoklund Olesen <stoklund@2pi.dk> Don't call tablegen'ed Predicate_* functions in the ARM target.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@111277 91177308-0d34-0410-b5e6-96231b3b80d8
/external/llvm/lib/Target/ARM/ARMInstrThumb2.td
c5ed0134a782f16e343892ef7d2faf368fce1ab6 17-Aug-2010 Jim Grosbach <grosbach@apple.com> 80 column cleanup.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@111266 91177308-0d34-0410-b5e6-96231b3b80d8
/external/llvm/lib/Target/ARM/ARMInstrThumb2.td
f955f290c949ff0df7d23cec055efcc4ffeb35d1 17-Aug-2010 Bob Wilson <bob.wilson@apple.com> Change ARM PKHTB and PKHBT instructions to use a shift_imm operand to avoid
printing "lsl #0". This fixes the remaining parts of pr7792. Make
corresponding changes for encoding/decoding these instructions.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@111251 91177308-0d34-0410-b5e6-96231b3b80d8
/external/llvm/lib/Target/ARM/ARMInstrThumb2.td
dc66edaced5dacb56f06f52723dd340d5cfe4eab 17-Aug-2010 Bob Wilson <bob.wilson@apple.com> Generalize a pattern for PKHTB: an SRL of 16-31 bits will guarantee
that the high halfword is zero. The shift need not be exactly 16 bits.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@111196 91177308-0d34-0410-b5e6-96231b3b80d8
/external/llvm/lib/Target/ARM/ARMInstrThumb2.td
22f5dc79c05d69391b17e14ed912aa8e98a63027 16-Aug-2010 Bob Wilson <bob.wilson@apple.com> Rename sat_shift operand to shift_imm, in preparation for using it for other
instructions besides saturate instructions. No functional changes.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@111168 91177308-0d34-0410-b5e6-96231b3b80d8
/external/llvm/lib/Target/ARM/ARMInstrThumb2.td
136e4912806a2182a41e3011e86830a9c77160f0 14-Aug-2010 Bob Wilson <bob.wilson@apple.com> T2I_rbin_irs rr variant is for disassembly only, so don't provide a pattern.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@111068 91177308-0d34-0410-b5e6-96231b3b80d8
/external/llvm/lib/Target/ARM/ARMInstrThumb2.td
20d8e4e7aa5645450f3eaedd9f9dbb70423f8ccc 14-Aug-2010 Bob Wilson <bob.wilson@apple.com> Add a Thumb2 t2RSBrr instruction for disassembly only.
This fixes another part of PR7792.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@111057 91177308-0d34-0410-b5e6-96231b3b80d8
/external/llvm/lib/Target/ARM/ARMInstrThumb2.td
38aa2871fc7a37f7a6854744e71fc366ba12888a 13-Aug-2010 Bob Wilson <bob.wilson@apple.com> Move the Thumb2 SSAT and USAT optional shift operator out of the
instruction opcode. This fixes part of PR7792.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@111047 91177308-0d34-0410-b5e6-96231b3b80d8
/external/llvm/lib/Target/ARM/ARMInstrThumb2.td
ee34987fd58ed98c6987ed46979ccb46e7420919 11-Aug-2010 Evan Cheng <evan.cheng@apple.com> Really control isel of barrier instructions with cpu feature.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@110787 91177308-0d34-0410-b5e6-96231b3b80d8
/external/llvm/lib/Target/ARM/ARMInstrThumb2.td
11db068721d44fd5f9b0c2a3a4c90f813d2eae9c 11-Aug-2010 Evan Cheng <evan.cheng@apple.com> - Add subtarget feature -mattr=+db which determine whether an ARM cpu has the
memory and synchronization barrier dmb and dsb instructions.
- Change instruction names to something more sensible (matching name of actual
instructions).
- Added tests for memory barrier codegen.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@110785 91177308-0d34-0410-b5e6-96231b3b80d8
/external/llvm/lib/Target/ARM/ARMInstrThumb2.td
9db683b06ccdc4e1274257d1458711e0fa2d9b58 11-Aug-2010 Daniel Dunbar <daniel@zuster.org> ARM: Quote $p in an asm string.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@110780 91177308-0d34-0410-b5e6-96231b3b80d8
/external/llvm/lib/Target/ARM/ARMInstrThumb2.td
3611d9e25d8cf79f1d0a608fb5affd6bf2d41598 11-Aug-2010 Evan Cheng <evan.cheng@apple.com> CBZ and CBNZ are implemented.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@110745 91177308-0d34-0410-b5e6-96231b3b80d8
/external/llvm/lib/Target/ARM/ARMInstrThumb2.td
5818032521e9e76873ec82104a7c22ffb9d9b277 10-Aug-2010 Evan Cheng <evan.cheng@apple.com> Delete some unused instructions.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@110710 91177308-0d34-0410-b5e6-96231b3b80d8
/external/llvm/lib/Target/ARM/ARMInstrThumb2.td
c98af3370f899a0d1570b1dff01a2e36632f884f 08-Aug-2010 Bill Wendling <isanbard@gmail.com> Use the "isCompare" machine instruction attribute instead of calling the
relatively expensive comparison analyzer on each instruction. Also rename the
comparison analyzer method to something more in line with what it actually does.

This pass is will eventually be folded into the Machine CSE pass.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@110539 91177308-0d34-0410-b5e6-96231b3b80d8
/external/llvm/lib/Target/ARM/ARMInstrThumb2.td
d4d188e5029801ef2a76ee756dcba49f313004f0 31-Jul-2010 Bob Wilson <bob.wilson@apple.com> Move newlines before inline jumptables from the asm strings in .td files to
the jtblock_operand print methods. This avoids extra newlines in the
disassembler's output. PR7757.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@109948 91177308-0d34-0410-b5e6-96231b3b80d8
/external/llvm/lib/Target/ARM/ARMInstrThumb2.td
6ccfc507dc1f7ad8c8964193a2407264ca644f0d 30-Jul-2010 Jim Grosbach <grosbach@apple.com> Many Thumb2 instructions can reference the full ARM register set (i.e.,
have 4 bits per register in the operand encoding), but have undefined
behavior when the operand value is 13 or 15 (SP and PC, respectively).
The trivial coalescer in linear scan sometimes will merge a copy from
SP into a subsequent instruction which uses the copy, and if that
instruction cannot legally reference SP, we get bad code such as:
mls r0,r9,r0,sp
instead of:
mov r2, sp
mls r0, r9, r0, r2

This patch adds a new register class for use by Thumb2 that excludes
the problematic registers (SP and PC) and is used instead of GPR
for those operands which cannot legally reference PC or SP. The
trivial coalescer explicitly requires that the register class
of the destination for the COPY instruction contain the source
register for the COPY to be considered for coalescing. This prevents
errant instructions like that above.

PR7499




git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@109842 91177308-0d34-0410-b5e6-96231b3b80d8
/external/llvm/lib/Target/ARM/ARMInstrThumb2.td
0e0a20eb3859affe4626ee75bd5cb32c033d73fb 30-Jul-2010 Nate Begeman <natebegeman@mac.com> Add builtins for ssat/usat, similar to RealView's __ssat and __usat intrinsics.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@109813 91177308-0d34-0410-b5e6-96231b3b80d8
/external/llvm/lib/Target/ARM/ARMInstrThumb2.td
692433bc2d3be9c3bb2fd67ab688eda073bafca2 29-Jul-2010 Nate Begeman <natebegeman@mac.com> Add intrinsics __builtin_arm_qadd & __builtin_arm_qsub to allow access to the QADD & QSUB instructions.
Behave identically to __qadd & __qsub RealView instruction intrinsics.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@109770 91177308-0d34-0410-b5e6-96231b3b80d8
/external/llvm/lib/Target/ARM/ARMInstrThumb2.td
7946494ceb506f995f2f11f4ba7390c4481ddeb1 29-Jul-2010 Jim Grosbach <grosbach@apple.com> Remove incorrect substitution pattern for UXTB16. It wrongly assumed the input shift was actually a rotate. rdar://8240138

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@109693 91177308-0d34-0410-b5e6-96231b3b80d8
/external/llvm/lib/Target/ARM/ARMInstrThumb2.td
f084a5e81d7a0552dca2a144624812bb4547efd2 20-Jul-2010 Jim Grosbach <grosbach@apple.com> Using BIC for immediates needs an extra bump for its complexity to get
instruction selection to prefer it when possible. rdar://7903972

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@108844 91177308-0d34-0410-b5e6-96231b3b80d8
/external/llvm/lib/Target/ARM/ARMInstrThumb2.td
469bbdb597f27d6900c95b6d8ae20a45b79ce91b 17-Jul-2010 Jim Grosbach <grosbach@apple.com> Add basic support to code-gen the ARM/Thumb2 bit-field insert (BFI) instruction
and a combine pattern to use it for setting a bit-field to a constant
value. More to come for non-constant stores.



git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@108570 91177308-0d34-0410-b5e6-96231b3b80d8
/external/llvm/lib/Target/ARM/ARMInstrThumb2.td
502e0aa62833a1648d66c8f7edf5d21cf96c2f56 14-Jul-2010 Jim Grosbach <grosbach@apple.com> Improve 64-subtraction of immediates when parts of the immediate can fit
in the literal field of an instruction. E.g.,
long long foo(long long a) {
return a - 734439407618LL;
}

rdar://7038284



git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@108339 91177308-0d34-0410-b5e6-96231b3b80d8
/external/llvm/lib/Target/ARM/ARMInstrThumb2.td
fed76ffa569444596b4e15e2681298c8d7b6be83 14-Jul-2010 Bob Wilson <bob.wilson@apple.com> Add missing address register update to t2LDM_RET instruction.
Patch by Brian Lucas. PR7636.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@108332 91177308-0d34-0410-b5e6-96231b3b80d8
/external/llvm/lib/Target/ARM/ARMInstrThumb2.td
c36b5b97308f098beb6c0bdd754bceb39675b049 29-Jun-2010 Evan Cheng <evan.cheng@apple.com> PR7503: uxtb16 is not available for ARMv7-M. Patch by Brian G. Lucas.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@107122 91177308-0d34-0410-b5e6-96231b3b80d8
/external/llvm/lib/Target/ARM/ARMInstrThumb2.td
761fa7af9e883c81da52b27abd0d6971dadbc923 24-Jun-2010 Eli Friedman <eli.friedman@gmail.com> Always allow Thumb-2 SXTB, SXTH, UXTB, and UXTH. Fixes PR7324.



git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@106770 91177308-0d34-0410-b5e6-96231b3b80d8
/external/llvm/lib/Target/ARM/ARMInstrThumb2.td
a967d1121a87dfb6b65eb7e3433c041efd881483 21-Jun-2010 Jim Grosbach <grosbach@apple.com> 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

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@106483 91177308-0d34-0410-b5e6-96231b3b80d8
/external/llvm/lib/Target/ARM/ARMInstrThumb2.td
86050dc8cc0aaea8c9dfeb89de02cafbd7f48d92 19-Jun-2010 Evan Cheng <evan.cheng@apple.com> Allow ARM if-converter to be run after post allocation scheduling.
- This fixed a number of bugs in if-converter, tail merging, and post-allocation
scheduler. If-converter now runs branch folding / tail merging first to
maximize if-conversion opportunities.
- Also changed the t2IT instruction slightly. It now defines the ITSTATE
register which is read by instructions in the IT block.
- Added Thumb2 specific hazard recognizer to ensure the scheduler doesn't
change the instruction ordering in the IT block (since IT mask has been
finalized). It also ensures no other instructions can be scheduled between
instructions in the IT block.

This is not yet enabled.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@106344 91177308-0d34-0410-b5e6-96231b3b80d8
/external/llvm/lib/Target/ARM/ARMInstrThumb2.td
18f30e6f5e80787808fe1455742452a5210afe07 02-Jun-2010 Jim Grosbach <grosbach@apple.com> Clean up 80 column violations. No functional change.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@105350 91177308-0d34-0410-b5e6-96231b3b80d8
/external/llvm/lib/Target/ARM/ARMInstrThumb2.td
c9792a3c1ffe9656db85e6a042a6205f27d48793 28-May-2010 Jim Grosbach <grosbach@apple.com> Cosmetic cleanup. No functional change.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@104974 91177308-0d34-0410-b5e6-96231b3b80d8
/external/llvm/lib/Target/ARM/ARMInstrThumb2.td
5caeff5c011d9cff5255748b5a0082bca8426554 28-May-2010 Jim Grosbach <grosbach@apple.com> make sure accesses to set up the jmpbuf don't get moved after it by the scheduler. Add a missing \n.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@104967 91177308-0d34-0410-b5e6-96231b3b80d8
/external/llvm/lib/Target/ARM/ARMInstrThumb2.td
0798eddd07b8dc827a4e6e9028c4c3a8d9444286 28-May-2010 Jim Grosbach <grosbach@apple.com> Update the saved stack pointer in the sjlj function context following either
an alloca() or an llvm.stackrestore(). rdar://8031573



git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@104900 91177308-0d34-0410-b5e6-96231b3b80d8
/external/llvm/lib/Target/ARM/ARMInstrThumb2.td
54e13eceff09ee79dc6408be990aabdee1a561dc 26-May-2010 Jim Grosbach <grosbach@apple.com> fix off by 1 (insn) error in eh.sjlj.setjmp thumb code sequence.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@104661 91177308-0d34-0410-b5e6-96231b3b80d8
/external/llvm/lib/Target/ARM/ARMInstrThumb2.td
a85df80ed7ff55595ab7982dd1c0543a8dc56efe 25-May-2010 Bob Wilson <bob.wilson@apple.com> Allow t2MOVsrl_flag and t2MOVsra_flag instructions to be predicated.
I don't know of any particular reason why that would be important, but
neither can I see any reason to disallow it.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@104583 91177308-0d34-0410-b5e6-96231b3b80d8
/external/llvm/lib/Target/ARM/ARMInstrThumb2.td
4876bdb69e3d857df0647b0e16883f55bebafd9f 25-May-2010 Bob Wilson <bob.wilson@apple.com> Fix up instruction classes for Thumb2 RSB instructions to be consistent with
Thumb2 ADD and SUB instructions: allow RSB instructions be changed to set the
condition codes, and allow RSBS instructions to be predicated.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@104582 91177308-0d34-0410-b5e6-96231b3b80d8
/external/llvm/lib/Target/ARM/ARMInstrThumb2.td
c21763fd993f37d02c7a495e96c3e8eb4c0b4015 25-May-2010 Bob Wilson <bob.wilson@apple.com> Allow Thumb2 MVN instructions to set condition codes. The immediate operand
version of t2MVN already allowed that, but not the register versions.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@104570 91177308-0d34-0410-b5e6-96231b3b80d8
/external/llvm/lib/Target/ARM/ARMInstrThumb2.td
bb7ecb2bf514e48b3c37afdc43afc8a8fe3a5011 24-May-2010 Bob Wilson <bob.wilson@apple.com> Thumb2 RSBS instructions were being printed without the 'S' suffix.
Fix it by changing the T2I_rbin_s_is multiclass to handle the CPSR
output and 'S' suffix in the same way as T2I_bin_s_irs.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@104531 91177308-0d34-0410-b5e6-96231b3b80d8
/external/llvm/lib/Target/ARM/ARMInstrThumb2.td
9085f98b32775aa0190eac221a58350d837ae2c3 19-May-2010 Evan Cheng <evan.cheng@apple.com> t2LEApcrel and tLEApcrel are re-materializable. This makes it possible to hoist more loads during machine LICM.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@104115 91177308-0d34-0410-b5e6-96231b3b80d8
/external/llvm/lib/Target/ARM/ARMInstrThumb2.td
5fd1c9be2d6ade68a8cf7b38041ebf79624d315c 19-May-2010 Evan Cheng <evan.cheng@apple.com> Mark pattern-less mayLoad / mayStore instructions neverHasSideEffects. These do not have other un-modeled side effects.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@104111 91177308-0d34-0410-b5e6-96231b3b80d8
/external/llvm/lib/Target/ARM/ARMInstrThumb2.td
ea420b20d4e75af21cfcc1b380a7536c239fb99d 19-May-2010 Evan Cheng <evan.cheng@apple.com> Mark a few more pattern-less instructions with neverHasSideEffects. This is especially important on instructions like t2LEApcreal which are prime candidate for machine LICM.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@104102 91177308-0d34-0410-b5e6-96231b3b80d8
/external/llvm/lib/Target/ARM/ARMInstrThumb2.td
bd91ea53f823fe71c0b67b9a4552984a8b361820 16-May-2010 Anton Korobeynikov <asl@math.spbu.ru> Chris said that the comment char should be escaped. Fix all the occurences of "@" in *.td

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@103903 91177308-0d34-0410-b5e6-96231b3b80d8
/external/llvm/lib/Target/ARM/ARMInstrThumb2.td
29402132f3e890a2771818f44987ede213297431 06-May-2010 Jim Grosbach <grosbach@apple.com> Cleanup of ARMv7M support. Move hardware divide and Thumb2 extract/pack
instructions to subtarget features and update tests to reflect.
PR5717.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@103136 91177308-0d34-0410-b5e6-96231b3b80d8
/external/llvm/lib/Target/ARM/ARMInstrThumb2.td
b1dc393bd56365ad8fabb51f22c2f3ace707c39a 05-May-2010 Jim Grosbach <grosbach@apple.com> Add initial support for ARMv7M subtarget and cortex-m3 cpu. Patch by
Jordy <snhjordy@gmail.com>.

Followup patches will add some tests and adjust to use Subtarget features
for the instructions.



git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@103119 91177308-0d34-0410-b5e6-96231b3b80d8
/external/llvm/lib/Target/ARM/ARMInstrThumb2.td
ec80e2693ad01262592096d061861e7f1755482e 09-Apr-2010 Bob Wilson <bob.wilson@apple.com> Provide versions of the ARM eh_sjlj_setjmp instructions for non-VFP subtargets
such that the non-VFP versions have no implicit defs of VFP registers.
If any callee-saved VFP registers are marked as having been defined, the
prologue/epilogue code will try to save and restore them.
Radar 7770432.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@100892 91177308-0d34-0410-b5e6-96231b3b80d8
/external/llvm/lib/Target/ARM/ARMInstrThumb2.td
ab3460519e8013cdba33a416cefd55dfb418999c 16-Mar-2010 Bob Wilson <bob.wilson@apple.com> Remove the writeback flag from ARM's address mode 4. Now that we have separate
instructions for ld/st with writeback, the flag is completely redundant.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@98643 91177308-0d34-0410-b5e6-96231b3b80d8
/external/llvm/lib/Target/ARM/ARMInstrThumb2.td
815baebe1c8dc02accf128ae10dff9a1742d3244 13-Mar-2010 Bob Wilson <bob.wilson@apple.com> Change ARM ld/st multiple instructions to have variant instructions for
writebacks to the address register. This gets rid of the hack that the
first register on the list was the magic writeback register operand. There
was an implicit constraint that if that operand was not reg0 it had to match
the base register operand. The post-RA scheduler's antidependency breaker
did not understand that constraint and sometimes changed one without the
other. This also fixes Radar 7495976 and should help the verifier work
better for ARM code.

There are now new ld/st instructions explicit writeback operands and explicit
constraints that tie those registers together.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@98409 91177308-0d34-0410-b5e6-96231b3b80d8
/external/llvm/lib/Target/ARM/ARMInstrThumb2.td
c0b5dce3fa24202d842cdcd1eff9e02b33e22309 11-Mar-2010 Johnny Chen <johnny.chen@apple.com> Set the (Format)F filed of t2Int_MemBarrierV7 & t2Int_SyncBarrierV7 to ThumbFrm,
instead of Pseudo, which helps Thumb decoder to recognize them as Thumb instr.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@98285 91177308-0d34-0410-b5e6-96231b3b80d8
/external/llvm/lib/Target/ARM/ARMInstrThumb2.td
ae1757b4527715564c8db95049286cc2c3cdece4 11-Mar-2010 Johnny Chen <johnny.chen@apple.com> Added Thumb2 LDRD/STRD pre/post variants for disassembly only.
Plus fixed the encoding of t2LDRDpci such that P = 1 and W = 0 (offset mode).

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@98217 91177308-0d34-0410-b5e6-96231b3b80d8
/external/llvm/lib/Target/ARM/ARMInstrThumb2.td
dd0f3cf189c34542901178bfca0a319b74d69a05 10-Mar-2010 Johnny Chen <johnny.chen@apple.com> Factored out the disassembly printing of CPS option, MSR mask, and Negative Zero
operands into their own PrintMethod, in order not to pollute the printOperand()
impl with disassembly only Imm modifiers.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@98172 91177308-0d34-0410-b5e6-96231b3b80d8
/external/llvm/lib/Target/ARM/ARMInstrThumb2.td
a2c618a0f08a331e3f45bd5108423b084c2986ed 09-Mar-2010 Johnny Chen <johnny.chen@apple.com> MSR (Move to Special Register from ARM core register) requires a mask to specify
what fields of the CPSR or SPSR are affected.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@98085 91177308-0d34-0410-b5e6-96231b3b80d8
/external/llvm/lib/Target/ARM/ARMInstrThumb2.td
f5fd499791bd65a31183324dabc5eefc201f9e2e 08-Mar-2010 Bob Wilson <bob.wilson@apple.com> Fix a crash compiling 254.gap for Thumb2. The Thumb2 add/sub with 12-bit
immediate instructions cannot set the condition codes, so they do not have
the extra cc_out operand. We hit an assertion during tail duplication
because the instruction being duplicated had more operands that expected.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@98001 91177308-0d34-0410-b5e6-96231b3b80d8
/external/llvm/lib/Target/ARM/ARMInstrThumb2.td
fb86d78a45212b66c806a286a56bfd5d0ca77247 05-Mar-2010 Johnny Chen <johnny.chen@apple.com> Trivial comment change.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@97776 91177308-0d34-0410-b5e6-96231b3b80d8
/external/llvm/lib/Target/ARM/ARMInstrThumb2.td
267124cff299922b3d92c5f2878fa285df2f1505 04-Mar-2010 Johnny Chen <johnny.chen@apple.com> Drop the ".w" qualifier for t2UXTB16* instructions as there is no 16-bit version
of either sxtb16 or uxtb16, and the unified syntax does not specify ".w".

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@97760 91177308-0d34-0410-b5e6-96231b3b80d8
/external/llvm/lib/Target/ARM/ARMInstrThumb2.td
0635fc5c2726bff3a6cbe91d2ad0f3bcda00671a 04-Mar-2010 Johnny Chen <johnny.chen@apple.com> Added 32-bit Thumb instructions for Preload Data (PLD, PLDW) and Preload
Instruction (PLI) for disassembly only.

According to A8.6.120 PLI (immediate, literal), for example, different
instructions are generated for "pli [pc, #0]" and "pli [pc, #-0"]. The
disassembler solves it by mapping -0 (negative zero) to -1, -1 to -2, ..., etc.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@97731 91177308-0d34-0410-b5e6-96231b3b80d8
/external/llvm/lib/Target/ARM/ARMInstrThumb2.td
e54a3ef0873f0b298a9369fa0101c11230020cdb 03-Mar-2010 Johnny Chen <johnny.chen@apple.com> Added 32-bit Thumb instructions LDRT, LDRBT, LDRHT,,LDRSBT, LDRSHT, STRT, STRBT,
and STRHT for disassembly only.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@97655 91177308-0d34-0410-b5e6-96231b3b80d8
/external/llvm/lib/Target/ARM/ARMInstrThumb2.td
0f7866e796a0fc66bafed36378df274aed18f4ce 03-Mar-2010 Johnny Chen <johnny.chen@apple.com> Added 32-bit Thumb instructions t2NOP, t2YIELD, t2WFE, t2WFI, t2SEV, and t2DBG
for disassembly only.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@97632 91177308-0d34-0410-b5e6-96231b3b80d8
/external/llvm/lib/Target/ARM/ARMInstrThumb2.td
bc9d22c99a0a883cce88af37c1bd6746162df543 03-Mar-2010 Evan Cheng <evan.cheng@apple.com> Eliminate unused instruction classes.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@97617 91177308-0d34-0410-b5e6-96231b3b80d8
/external/llvm/lib/Target/ARM/ARMInstrThumb2.td
a43398283dcb34568d2283dafbdfe0fa66b05033 03-Mar-2010 Johnny Chen <johnny.chen@apple.com> Added 32-bit Thumb instructions t2DMB variants, t2DSB variants, and t2ISBsy for
disassembly only.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@97614 91177308-0d34-0410-b5e6-96231b3b80d8
/external/llvm/lib/Target/ARM/ARMInstrThumb2.td
10a77e14a0b41ebb1c0ee9c07b28550d96acd60c 02-Mar-2010 Johnny Chen <johnny.chen@apple.com> Added 32-bit Thumb instruction CLREX (Clear-Exclusive) for disassembly only.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@97595 91177308-0d34-0410-b5e6-96231b3b80d8
/external/llvm/lib/Target/ARM/ARMInstrThumb2.td
b5031ad4c002004c919f9b42d754361cf53b7d51 02-Mar-2010 Johnny Chen <johnny.chen@apple.com> Removed the extra S from the multiclass def T2I_adde_sube_s_irs as well as from
the opc string passed in, since it's a given from the class inheritance of T2sI.
The fixed the extra 's' in adcss & sbcss when disassembly printing.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@97582 91177308-0d34-0410-b5e6-96231b3b80d8
/external/llvm/lib/Target/ARM/ARMInstrThumb2.td
93042d1dc803b26c7dce7bb75858e6a8c721d9d0 02-Mar-2010 Johnny Chen <johnny.chen@apple.com> Added 32-bit Thumb instructions: CPS, SDIV, UDIV, SXTB16, SXTAB16, UXTAB16, SEL,
SMMULR, SMMLAR, SMMLSR, TBB, TBH, and 16-bit Thumb instruction CPS for
disassembly only.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@97573 91177308-0d34-0410-b5e6-96231b3b80d8
/external/llvm/lib/Target/ARM/ARMInstrThumb2.td
9d3acaa1a015c4499595eaff529686a517c14e15 02-Mar-2010 Johnny Chen <johnny.chen@apple.com> AL is an optional mnemonic extension for always, except in IT instructions.
Add printMandatoryPredicateOperand() PrintMethod for IT predicate printing.

Ref: A8.3 Conditional execution

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@97571 91177308-0d34-0410-b5e6-96231b3b80d8
/external/llvm/lib/Target/ARM/ARMInstrThumb2.td
bc9d98b52d008d857c7423d7b43fb32022b926a2 28-Feb-2010 Dan Gohman <gohman@apple.com> The mayHaveSideEffects flag is no longer used.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@97348 91177308-0d34-0410-b5e6-96231b3b80d8
/external/llvm/lib/Target/ARM/ARMInstrThumb2.td
adc7733a64b65096cbd6066c212a9daa6e278a9a 26-Feb-2010 Johnny Chen <johnny.chen@apple.com> Added the follwoing 32-bit Thumb instructions for disassembly only:

o Parallel addition and subtraction, signed/unsigned
o Miscellaneous operations: QADD, QDADD, QSUB, QDSUB
o Unsigned sum of absolute differences [and accumulate]: USAD8, USADA8
o Signed/Unsigned saturate: SSAT, SSAT16, USAT, USAT16
o Signed multiply accumulate long (halfwords): SMLAL<x><y>
o Signed multiply accumulate/subtract [long] (dual): SMLAD[x], SMLALD[X], SMLSD[X], SMLSLD[X]
o Signed dual multiply add/subtract [long]: SMUAD[X], SMUSD[X]


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@97276 91177308-0d34-0410-b5e6-96231b3b80d8
/external/llvm/lib/Target/ARM/ARMInstrThumb2.td
6341c5a4c4019d4ff2a06bd69d4425324d6a7f81 25-Feb-2010 Johnny Chen <johnny.chen@apple.com> Added the following 32-bit Thumb instructions for disassembly only: SMC, RFE,
and SRS.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@97164 91177308-0d34-0410-b5e6-96231b3b80d8
/external/llvm/lib/Target/ARM/ARMInstrThumb2.td
ce6275fd2ceae4cae7ac5c249e21de3d7527e9e2 25-Feb-2010 Johnny Chen <johnny.chen@apple.com> Added the 32-bit Thumb instructions (BXJ) for disassembly only.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@97163 91177308-0d34-0410-b5e6-96231b3b80d8
/external/llvm/lib/Target/ARM/ARMInstrThumb2.td
2333655ed04637ffd049b9299685a0752aab8e8d 25-Feb-2010 Johnny Chen <johnny.chen@apple.com> Added the 32-bit Thumb instructions (MRS and MSR) for disassembly only.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@97159 91177308-0d34-0410-b5e6-96231b3b80d8
/external/llvm/lib/Target/ARM/ARMInstrThumb2.td
80dc116ce3be18be2866db8fe13f03d1d6c4372f 16-Feb-2010 Jim Grosbach <grosbach@apple.com> 80 column cleanup

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@96393 91177308-0d34-0410-b5e6-96231b3b80d8
/external/llvm/lib/Target/ARM/ARMInstrThumb2.td
6417171026447cde57330114e7df2a22bebfc135 16-Feb-2010 Jim Grosbach <grosbach@apple.com> Remove trailing whitespace

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@96388 91177308-0d34-0410-b5e6-96231b3b80d8
/external/llvm/lib/Target/ARM/ARMInstrThumb2.td
39be8fcfdcad1b01997b22739a889d7c819600d5 16-Feb-2010 Jim Grosbach <grosbach@apple.com> Update Thumb2 to not use CarryDefIsUnused or CarryDefIsUsed predicates, but
to have the predicate on the pattern itself instead. Support for the new
ISel. Remove definitions of CarryDefIsUnused and CarryDefIsUsed since they are
no longer used anywhere.



git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@96384 91177308-0d34-0410-b5e6-96231b3b80d8
/external/llvm/lib/Target/ARM/ARMInstrThumb2.td
a87ded2695e5bce30dbd0d2d2ac10c571bf1d161 09-Feb-2010 Jim Grosbach <grosbach@apple.com> tighten up eh.setjmp sequence a bit.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@95603 91177308-0d34-0410-b5e6-96231b3b80d8
/external/llvm/lib/Target/ARM/ARMInstrThumb2.td
9474d550ff8d2be251792cf21f777d85e052ed5e 02-Feb-2010 Johnny Chen <johnny.chen@apple.com> Added t2BFI (Bitfield Insert) entry for disassembler, with blank pattern field.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@95112 91177308-0d34-0410-b5e6-96231b3b80d8
/external/llvm/lib/Target/ARM/ARMInstrThumb2.td
d5d2baec2609da3ade9ca205e87c88d35e9e6976 22-Jan-2010 Jim Grosbach <grosbach@apple.com> Fix PR5694. The CMN instructions set the flags differently from CMP, so they
cannot be directly interchanged for comparisons against negated values.
Disable the CMN instructions for the time being.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@94119 91177308-0d34-0410-b5e6-96231b3b80d8
/external/llvm/lib/Target/ARM/ARMInstrThumb2.td
f609bb8466e28ef63eb4db9de485583c6d5b8bc9 19-Jan-2010 Evan Cheng <evan.cheng@apple.com> Fix r93758. Use isel patterns instead of c++ selection code to select rbit and make sure we pick different instructions for ARM vs. Thumb2.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@93829 91177308-0d34-0410-b5e6-96231b3b80d8
/external/llvm/lib/Target/ARM/ARMInstrThumb2.td
3482c8003ad0c88469b7333aaf658036e3fd0468 18-Jan-2010 Jim Grosbach <grosbach@apple.com> Patch by David Conrad:

"On ARMv6T2 this turns cttz into rbit, clz instead of the 4 instruction
sequence it is now."




git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@93758 91177308-0d34-0410-b5e6-96231b3b80d8
/external/llvm/lib/Target/ARM/ARMInstrThumb2.td
d248ffb7d57cc7aa4216b79741b372026936ea0a 08-Jan-2010 Johnny Chen <johnny.chen@apple.com> Minor change, change the order of two "let Inst{...}" stmts within multiclass
T2I_bin_ii12rs definition.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@93006 91177308-0d34-0410-b5e6-96231b3b80d8
/external/llvm/lib/Target/ARM/ARMInstrThumb2.td
83142991613730bc857739c6179660ccffebe379 05-Jan-2010 Johnny Chen <johnny.chen@apple.com> Undo r92785, it caused test failure.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@92796 91177308-0d34-0410-b5e6-96231b3b80d8
/external/llvm/lib/Target/ARM/ARMInstrThumb2.td
83f1136cfdbfb6ccbdcd23f1f6e35b72bfaeb306 05-Jan-2010 Johnny Chen <johnny.chen@apple.com> Add Rt2 to the asm format string for 32-bit Thumb load/store register dual
instructions. Thumb does not have the restriction that t2 = t+1.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@92785 91177308-0d34-0410-b5e6-96231b3b80d8
/external/llvm/lib/Target/ARM/ARMInstrThumb2.td
587b072f23789010ee20a487cca458a0e724c6ed 16-Dec-2009 Jim Grosbach <grosbach@apple.com> Mark STREX* as earlyclobber for the success result register.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@91555 91177308-0d34-0410-b5e6-96231b3b80d8
/external/llvm/lib/Target/ARM/ARMInstrThumb2.td
bbc71b2904644bfa85d8785328dc08d61c534467 16-Dec-2009 Johnny Chen <johnny.chen@apple.com> Add encoding bits for some Thumb instructions. Plus explicitly set the top two
bytes of Inst to 0x0000 for the benefit of the Thumb decoder.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@91496 91177308-0d34-0410-b5e6-96231b3b80d8
/external/llvm/lib/Target/ARM/ARMInstrThumb2.td
d68e119c0fea54f47d0f3f0b5282dcf6cd19d8b9 15-Dec-2009 Johnny Chen <johnny.chen@apple.com> Added encoding bits for the Thumb ISA. Initial checkin.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@91434 91177308-0d34-0410-b5e6-96231b3b80d8
/external/llvm/lib/Target/ARM/ARMInstrThumb2.td
7c03dbd8ede6f43063df56eaa6d63f7ae1721892 14-Dec-2009 Jim Grosbach <grosbach@apple.com> Add ARMv6 memory and sync barrier instructions

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@91329 91177308-0d34-0410-b5e6-96231b3b80d8
/external/llvm/lib/Target/ARM/ARMInstrThumb2.td
a623f5a58dd7768b0cf4dbb61b1fffa8b4d07cca 14-Dec-2009 Jim Grosbach <grosbach@apple.com> correct selection requirements for thumb2 vs. arm versions of the barrier intrinsics

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@91313 91177308-0d34-0410-b5e6-96231b3b80d8
/external/llvm/lib/Target/ARM/ARMInstrThumb2.td
c219e4dd5919e2b72b80698fd50aa05e1580a55b 14-Dec-2009 Jim Grosbach <grosbach@apple.com> add Thumb2 atomic and memory barrier instruction definitions

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@91310 91177308-0d34-0410-b5e6-96231b3b80d8
/external/llvm/lib/Target/ARM/ARMInstrThumb2.td
5cdc3a949af0cef7f2163f8a7acbf3049c226321 24-Nov-2009 Anton Korobeynikov <asl@math.spbu.ru> Materialize global addresses via movt/movw pair, this is always better
than doing the same via constpool:
1. Load from constpool costs 3 cycles on A9, movt/movw pair - just 2.
2. Load from constpool might stall up to 300 cycles due to cache miss.
3. Movt/movw does not use load/store unit.
4. Less constpool entries => better compiler performance.

This is only enabled on ELF systems, since darwin does not have needed
relocations (yet).

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@89720 91177308-0d34-0410-b5e6-96231b3b80d8
/external/llvm/lib/Target/ARM/ARMInstrThumb2.td
6935efcb667bcd4dd3a00bbd420461e1fadba73a 24-Nov-2009 Jim Grosbach <grosbach@apple.com> 80 column violations

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@89718 91177308-0d34-0410-b5e6-96231b3b80d8
/external/llvm/lib/Target/ARM/ARMInstrThumb2.td
15e6ef886deedafaf3fcbca8226891ba54dbff9d 23-Nov-2009 Jim Grosbach <grosbach@apple.com> fold immediate of a + Const into the user as a subtract if it can fit as a negated two-part immediate.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@89694 91177308-0d34-0410-b5e6-96231b3b80d8
/external/llvm/lib/Target/ARM/ARMInstrThumb2.td
4aedb61d039580113982827e397d3ebbd0e0dbba 20-Nov-2009 Evan Cheng <evan.cheng@apple.com> Remat VLDRD from constpool. Clean up some instruction property specifications.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@89478 91177308-0d34-0410-b5e6-96231b3b80d8
/external/llvm/lib/Target/ARM/ARMInstrThumb2.td
b9803a8fa65f043c96612fa9c5aeeee12739db2b 07-Nov-2009 Evan Cheng <evan.cheng@apple.com> - Add pseudo instructions tLDRpci_pic and t2LDRpci_pic which does a pc-relative
load of a GV from constantpool and then add pc. It allows the code sequence to
be rematerializable so it would be hoisted by machine licm.
- Add a late pass to break these pseudo instructions into a number of real
instructions. Also move the code in Thumb2 IT pass that breaks up t2MOVi32imm
to this pass. This is done before post regalloc scheduling to allow the
scheduler to proper schedule these instructions. It also allow them to be
if-converted and shrunk by later passes.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@86304 91177308-0d34-0410-b5e6-96231b3b80d8
/external/llvm/lib/Target/ARM/ARMInstrThumb2.td
5a1cd36019ca3cbae811f2800631b5b56a9ffdc2 04-Nov-2009 Evan Cheng <evan.cheng@apple.com> Fix t2Int_eh_sjlj_setjmp. Immediate form of orr is a 32-bit instruction. So it should be 22 bytes instead of 20 bytes long.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@85965 91177308-0d34-0410-b5e6-96231b3b80d8
/external/llvm/lib/Target/ARM/ARMInstrThumb2.td
907eebd5a6779e8539ef7bf63550a5b72de76ab2 02-Nov-2009 Bob Wilson <bob.wilson@apple.com> Put BlockAddresses into ARM constant pools.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@85824 91177308-0d34-0410-b5e6-96231b3b80d8
/external/llvm/lib/Target/ARM/ARMInstrThumb2.td
2f54a2fd8542aa6280d1c5da18ac314d16550676 02-Nov-2009 David Goodwin <david_goodwin@apple.com> Fix schedule model for BFC.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@85809 91177308-0d34-0410-b5e6-96231b3b80d8
/external/llvm/lib/Target/ARM/ARMInstrThumb2.td
9eda68988e7772c40f6125750a965ddb85acc25f 31-Oct-2009 Evan Cheng <evan.cheng@apple.com> It's safe to remat t2LDRpci; Add PseudoSourceValue to load / store's to enable more machine licm. More changes coming.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@85643 91177308-0d34-0410-b5e6-96231b3b80d8
/external/llvm/lib/Target/ARM/ARMInstrThumb2.td
ddb16df91257e4c4d2be5343e2c7c7ecbfbe8bf4 30-Oct-2009 Bob Wilson <bob.wilson@apple.com> Add ARM codegen for indirect branches.
clang/test/CodeGen/indirect-goto.c runs! (unoptimized)


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@85577 91177308-0d34-0410-b5e6-96231b3b80d8
/external/llvm/lib/Target/ARM/ARMInstrThumb2.td
533297b58da8c74bec65551e1aface9801fc2259 29-Oct-2009 Dan Gohman <gohman@apple.com> Rename usesCustomDAGSchedInserter to usesCustomInserter, and update a
bunch of associated comments, because it doesn't have anything to do
with DAGs or scheduling. This is another step in decoupling MachineInstr
emitting from scheduling.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@85517 91177308-0d34-0410-b5e6-96231b3b80d8
/external/llvm/lib/Target/ARM/ARMInstrThumb2.td
699bebac4f3320b5a9a3c94ac76502caf61dd711 27-Oct-2009 Evan Cheng <evan.cheng@apple.com> Change Thumb1 and Thumb2 instructions to separate opcode from operands with a tab instead of a space.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@85184 91177308-0d34-0410-b5e6-96231b3b80d8
/external/llvm/lib/Target/ARM/ARMInstrThumb2.td
65b7f3af76d0ba5bce49b56ab3e18f970b95f9d1 21-Oct-2009 Jim Grosbach <grosbach@apple.com> Improve handling of immediates by splitting 32-bit immediates into two 16-bit
immediate operands when they will fit into the using instruction.



git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@84778 91177308-0d34-0410-b5e6-96231b3b80d8
/external/llvm/lib/Target/ARM/ARMInstrThumb2.td
2095659a8551fb222d145bc8dfa6cf5d15048e42 21-Oct-2009 Evan Cheng <evan.cheng@apple.com> Match more patterns to movt.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@84751 91177308-0d34-0410-b5e6-96231b3b80d8
/external/llvm/lib/Target/ARM/ARMInstrThumb2.td
47eedaa8fa597e3302012b0ef8f24c4886ef6188 13-Oct-2009 Sandeep Patel <deeppatel1987@gmail.com> Add ARMv6T2 SBFX/UBFX instructions. Approved by Anton Korobeynikov.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@84009 91177308-0d34-0410-b5e6-96231b3b80d8
/external/llvm/lib/Target/ARM/ARMInstrThumb2.td
0d92f5f76884513f8f5e014c61cb7a72ff576fa5 01-Oct-2009 Evan Cheng <evan.cheng@apple.com> Add hasExtraSrcRegAllocReq and hasExtraDefRegAllocReq flags to ld / st multiple,
ld / st pairs, etc.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@83197 91177308-0d34-0410-b5e6-96231b3b80d8
/external/llvm/lib/Target/ARM/ARMInstrThumb2.td
d20d6586759fe7a53ec8b1dde80622cda49e31b8 01-Oct-2009 Evan Cheng <evan.cheng@apple.com> Change ld/st multiples to explicitly model the writeback to base register. This fixes most of the -ldstopti-before-sched2 regressions.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@83191 91177308-0d34-0410-b5e6-96231b3b80d8
/external/llvm/lib/Target/ARM/ARMInstrThumb2.td
c732adf3a1718d1b3e08adb11652100cab1efad6 30-Sep-2009 Jim Grosbach <grosbach@apple.com> Add "isBarrier = 1" to return instructions.

Patch by Sylvere Teissier.



git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@83135 91177308-0d34-0410-b5e6-96231b3b80d8
/external/llvm/lib/Target/ARM/ARMInstrThumb2.td
5adb66a646e2ec32265263739f5b01c3f50c176a 28-Sep-2009 Evan Cheng <evan.cheng@apple.com> Make ARM and Thumb2 32-bit immediate materialization into a single 32-bit pseudo
instruction. This makes it re-materializable.

Thumb2 will split it back out into two instructions so IT pass will generate the
right mask. Also, this expose opportunies to optimize the movw to a 16-bit move.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@82982 91177308-0d34-0410-b5e6-96231b3b80d8
/external/llvm/lib/Target/ARM/ARMInstrThumb2.td
6a2fa325c1763a0fb27eceaa78b3a9bf683416bf 28-Sep-2009 Anton Korobeynikov <asl@math.spbu.ru> Use movt/movw pair to materialize 32 bit constants on ARMv6T2+.
This should be better than single load from constpool.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@82948 91177308-0d34-0410-b5e6-96231b3b80d8
/external/llvm/lib/Target/ARM/ARMInstrThumb2.td
e298ab26b11cf6e278b4876bbc5b890e234d4029 27-Sep-2009 Evan Cheng <evan.cheng@apple.com> Enable pre-regalloc load / store multiple pass for Thumb2.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@82893 91177308-0d34-0410-b5e6-96231b3b80d8
/external/llvm/lib/Target/ARM/ARMInstrThumb2.td
ca01a8d4aba723e3b1838e5e2034efbc7efa859d 01-Sep-2009 David Goodwin <david_goodwin@apple.com> RRX reads CPSR.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@80699 91177308-0d34-0410-b5e6-96231b3b80d8
/external/llvm/lib/Target/ARM/ARMInstrThumb2.td
d17479e8458d17575e2532d9e8a61057b057a33d 28-Aug-2009 Evan Cheng <evan.cheng@apple.com> Print a nl before pic labels so they start at a new line. This makes assembly more readable.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@80350 91177308-0d34-0410-b5e6-96231b3b80d8
/external/llvm/lib/Target/ARM/ARMInstrThumb2.td
4f38b383d5089c49489a9a56d8efd0eb76048b3f 21-Aug-2009 Bob Wilson <bob.wilson@apple.com> Rename ARM "lane_cst" operands to "nohash_imm" since they are used for
several things other than Neon vector lane numbers. For inline assembly
operands with a "c" print code, check that they really are immediates.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@79676 91177308-0d34-0410-b5e6-96231b3b80d8
/external/llvm/lib/Target/ARM/ARMInstrThumb2.td
5d598aaf3de7f506749f4a0a142fe0121854e1a6 19-Aug-2009 David Goodwin <david_goodwin@apple.com> Update Cortex-A8 instruction itineraries for integer instructions.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@79436 91177308-0d34-0410-b5e6-96231b3b80d8
/external/llvm/lib/Target/ARM/ARMInstrThumb2.td
51f39961c3558ee71b6323d3713e9ddd2354e099 18-Aug-2009 Evan Cheng <evan.cheng@apple.com> Fix revsh pattern.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@79318 91177308-0d34-0410-b5e6-96231b3b80d8
/external/llvm/lib/Target/ARM/ARMInstrThumb2.td
a1efbbdbf3217598f334a6f39dab84ca06f5de41 14-Aug-2009 Evan Cheng <evan.cheng@apple.com> Shrink ADR and LDR from constantpool late during constantpool island pass.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@78970 91177308-0d34-0410-b5e6-96231b3b80d8
/external/llvm/lib/Target/ARM/ARMInstrThumb2.td
f35d21617e9c6616eb127355b7c7cd3a5aa7cc58 13-Aug-2009 Jim Grosbach <grosbach@apple.com> Add missing defs of R2 and D1.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@78918 91177308-0d34-0410-b5e6-96231b3b80d8
/external/llvm/lib/Target/ARM/ARMInstrThumb2.td
6d3d9c3fc3b98e9c12ca38acaffa77cf02deffe6 13-Aug-2009 David Goodwin <david_goodwin@apple.com> Finalize itineraries for cortex-a8 integer multiply


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@78908 91177308-0d34-0410-b5e6-96231b3b80d8
/external/llvm/lib/Target/ARM/ARMInstrThumb2.td
8db5cce0217a2b76a954cb97de95c91e76edf59c 13-Aug-2009 Jim Grosbach <grosbach@apple.com> Remove unnecessary newline

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@78905 91177308-0d34-0410-b5e6-96231b3b80d8
/external/llvm/lib/Target/ARM/ARMInstrThumb2.td
1add659b0a70bf2bdaa3cb93fa5961359fb7df45 13-Aug-2009 Jim Grosbach <grosbach@apple.com> Correct comment wording

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@78904 91177308-0d34-0410-b5e6-96231b3b80d8
/external/llvm/lib/Target/ARM/ARMInstrThumb2.td
1a8f36e3ce5b9c230781b66600c81536128abfb5 12-Aug-2009 David Goodwin <david_goodwin@apple.com> Enhance the InstrStage object to enable the specification of an Itinerary with overlapping stages. The default is to maintain the current behavior that the "next" stage immediately follows the previous one.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@78827 91177308-0d34-0410-b5e6-96231b3b80d8
/external/llvm/lib/Target/ARM/ARMInstrThumb2.td
378756c0f2d0d5393356ca3711530beceb201e05 12-Aug-2009 Jim Grosbach <grosbach@apple.com> register naming cleanup (s/ip/r12/)

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@78806 91177308-0d34-0410-b5e6-96231b3b80d8
/external/llvm/lib/Target/ARM/ARMInstrThumb2.td
ea253b99e907a4171d49547fc5d99c837af5d0b9 12-Aug-2009 Evan Cheng <evan.cheng@apple.com> Remove an Darwin assembler workaround.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@78777 91177308-0d34-0410-b5e6-96231b3b80d8
/external/llvm/lib/Target/ARM/ARMInstrThumb2.td
4b322e58b77d16f103d88a3af3a4ebd2675245a0 11-Aug-2009 Evan Cheng <evan.cheng@apple.com> Shrinkify Thumb2 load / store multiple instructions.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@78717 91177308-0d34-0410-b5e6-96231b3b80d8
/external/llvm/lib/Target/ARM/ARMInstrThumb2.td
825b72b0571821bf2d378749f69d6c4cfb52d2f9 11-Aug-2009 Owen Anderson <resistor@mac.com> Split EVT into MVT and EVT, the former representing _just_ a primitive type, while
the latter is capable of representing either a primitive or an extended type.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@78713 91177308-0d34-0410-b5e6-96231b3b80d8
/external/llvm/lib/Target/ARM/ARMInstrThumb2.td
5aa1684e5da9a85286bf7d29da419d261a70c2f2 11-Aug-2009 Jim Grosbach <grosbach@apple.com> Add Thumb2 eh_sjlj_setjmp implementation

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@78701 91177308-0d34-0410-b5e6-96231b3b80d8
/external/llvm/lib/Target/ARM/ARMInstrThumb2.td
1cf5783dd73e72adc60aa2d037728cdcd13938ca 11-Aug-2009 Evan Cheng <evan.cheng@apple.com> 80 column violation.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@78657 91177308-0d34-0410-b5e6-96231b3b80d8
/external/llvm/lib/Target/ARM/ARMInstrThumb2.td
e50ed30282bb5b4a9ed952580523f2dda16215ac 11-Aug-2009 Owen Anderson <resistor@mac.com> Rename MVT to EVT, in preparation for splitting SimpleValueType out into its own struct type.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@78610 91177308-0d34-0410-b5e6-96231b3b80d8
/external/llvm/lib/Target/ARM/ARMInstrThumb2.td
e8af1f9afe5e70e1d4ec4d00a6870428dba88692 10-Aug-2009 Evan Cheng <evan.cheng@apple.com> Add support to reduce most of 32-bit Thumb2 arithmetic instructions.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@78550 91177308-0d34-0410-b5e6-96231b3b80d8
/external/llvm/lib/Target/ARM/ARMInstrThumb2.td
8e9ece75db5045ec057efbbdba6550fa0d85e695 09-Aug-2009 Anton Korobeynikov <asl@math.spbu.ru> Use subclassing to print lane-like immediates (w/o hash) eliminating
'no_hash' modifier. Hopefully this will make Daniel happy :)

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@78514 91177308-0d34-0410-b5e6-96231b3b80d8
/external/llvm/lib/Target/ARM/ARMInstrThumb2.td
d77c7aba83bb290b9b62ede38b6ddbc9b790c6ef 07-Aug-2009 Evan Cheng <evan.cheng@apple.com> Thumb2 32-bit ldm / stm needs .w suffix if submode is ia.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@78410 91177308-0d34-0410-b5e6-96231b3b80d8
/external/llvm/lib/Target/ARM/ARMInstrThumb2.td
861986401e05e437cb33bfd8320d510b956fe41e 07-Aug-2009 Evan Cheng <evan.cheng@apple.com> It turns out most of the thumb2 instructions are not allowed to touch SP. The semantics of such instructions are unpredictable. We have just been lucky that tests have been passing.

This patch takes pain to ensure all the PEI lowering code does the right thing when lowering frame indices, insert code to manipulate stack pointers, etc. It's also custom lowering dynamic stack alloc into pseudo instructions so we can insert the right instructions at scheduling time.

This fixes PR4659 and PR4682.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@78361 91177308-0d34-0410-b5e6-96231b3b80d8
/external/llvm/lib/Target/ARM/ARMInstrThumb2.td
8b7d7ade85fd0103316295440d4950f39ab08419 06-Aug-2009 David Goodwin <david_goodwin@apple.com> Add parameter to pattern classes to enable an itinerary to be specified for instructions. For now just use the existing itineraries or NoItinerary.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@78321 91177308-0d34-0410-b5e6-96231b3b80d8
/external/llvm/lib/Target/ARM/ARMInstrThumb2.td
35d6c41fde95422fb8483be0ac0af2b1425a4b13 05-Aug-2009 Evan Cheng <evan.cheng@apple.com> Fix part 1 of pr4682. PICADD is a 16-bit instruction even in thumb2 mode.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@78126 91177308-0d34-0410-b5e6-96231b3b80d8
/external/llvm/lib/Target/ARM/ARMInstrThumb2.td
fa2ea1a8cf2e3fe4dae19032868010e917629d16 04-Aug-2009 Evan Cheng <evan.cheng@apple.com> Emit sub r, #c instead of transforming it to add r, #-c if c fits in 8-bit. This is a bit of pre-mature optimization. 8-bit variant makes it likely it will be narrowed to a 16-bit instruction.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@78030 91177308-0d34-0410-b5e6-96231b3b80d8
/external/llvm/lib/Target/ARM/ARMInstrThumb2.td
25f7cfc3cccba6f569f29f79ea533bae960b93c0 01-Aug-2009 Evan Cheng <evan.cheng@apple.com> Workaround a couple of Darwin assembler bugs.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@77781 91177308-0d34-0410-b5e6-96231b3b80d8
/external/llvm/lib/Target/ARM/ARMInstrThumb2.td
13f8b36205607ff87ad0c4daf28f63b2660e7c0f 01-Aug-2009 Evan Cheng <evan.cheng@apple.com> Split t2MOVCCs since some assemblers do not recognize mov shifted register alias with predicate.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@77764 91177308-0d34-0410-b5e6-96231b3b80d8
/external/llvm/lib/Target/ARM/ARMInstrThumb2.td
b620724e614c6594e7b269b6ea7d8483947ea944 01-Aug-2009 Evan Cheng <evan.cheng@apple.com> Fix Thumb2 function call isel. Thumb1 and Thumb2 should share the same
instructions for calls since BL and BLX are always 32-bit long and BX is always
16-bit long.

Also, we should be using BLX to call external function stubs.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@77756 91177308-0d34-0410-b5e6-96231b3b80d8
/external/llvm/lib/Target/ARM/ARMInstrThumb2.td
1119776b19872cad8366835f12ee682788879951 01-Aug-2009 Evan Cheng <evan.cheng@apple.com> Thumb2 movcc need .w suffix.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@77743 91177308-0d34-0410-b5e6-96231b3b80d8
/external/llvm/lib/Target/ARM/ARMInstrThumb2.td
8f652532365afed2274ec3b8513bb8faef16d2c2 30-Jul-2009 David Goodwin <david_goodwin@apple.com> Darwin assembler now recognizes "orn", so remove workaround.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@77627 91177308-0d34-0410-b5e6-96231b3b80d8
/external/llvm/lib/Target/ARM/ARMInstrThumb2.td
7c92f3ac99c39d745e909390edb71c72bafecc24 30-Jul-2009 David Goodwin <david_goodwin@apple.com> Darwin assembler now supports "rrx", so remove workaround.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@77625 91177308-0d34-0410-b5e6-96231b3b80d8
/external/llvm/lib/Target/ARM/ARMInstrThumb2.td
3e4b22d9836f66ba72dd105567a77be05030f747 30-Jul-2009 David Goodwin <david_goodwin@apple.com> Add missing D* register clobbers for Thumb-2 call.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@77611 91177308-0d34-0410-b5e6-96231b3b80d8
/external/llvm/lib/Target/ARM/ARMInstrThumb2.td
20a2a0aff3221e2c777558d714753bae0f296c8d 29-Jul-2009 Evan Cheng <evan.cheng@apple.com> Make sure Thumb2 uses the right call instructions.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@77507 91177308-0d34-0410-b5e6-96231b3b80d8
/external/llvm/lib/Target/ARM/ARMInstrThumb2.td
0531d04d002c6d9489b4d1a85f49734e5c27e6f7 29-Jul-2009 Evan Cheng <evan.cheng@apple.com> - Fix an obvious copy and paste error.
- Darwin Thumb2 call clobbers r9.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@77500 91177308-0d34-0410-b5e6-96231b3b80d8
/external/llvm/lib/Target/ARM/ARMInstrThumb2.td
5657c01949dca6c012ac60d242d1a8d2ffdf5603 29-Jul-2009 Evan Cheng <evan.cheng@apple.com> Optimize Thumb2 jumptable to use tbb / tbh when all the offsets fit in byte / halfword.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@77422 91177308-0d34-0410-b5e6-96231b3b80d8
/external/llvm/lib/Target/ARM/ARMInstrThumb2.td
e7c329bf4b48ba3a4539183dc2d0804db6f4042a 28-Jul-2009 Evan Cheng <evan.cheng@apple.com> In thumb2 mode, add pc is unpredictable. Use add + mov pc instead (that is until more optimization goes in).

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@77364 91177308-0d34-0410-b5e6-96231b3b80d8
/external/llvm/lib/Target/ARM/ARMInstrThumb2.td
6340632d3b32bdf73c390195698ae337cb753e51 28-Jul-2009 David Goodwin <david_goodwin@apple.com> Remove support for ORN to workaround <rdar://problem/7096522>.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@77363 91177308-0d34-0410-b5e6-96231b3b80d8
/external/llvm/lib/Target/ARM/ARMInstrThumb2.td
5743854f47c00118f7e667c68c10db5ce76225b3 28-Jul-2009 David Goodwin <david_goodwin@apple.com> Add workaround for <rdar://problem/7098328>.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@77340 91177308-0d34-0410-b5e6-96231b3b80d8
/external/llvm/lib/Target/ARM/ARMInstrThumb2.td
3583df7676bd194faf21eb24ff7790928502852a 28-Jul-2009 David Goodwin <david_goodwin@apple.com> Add Thumb-2 patterns for ARMsrl_flag and ARMsra_flag.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@77329 91177308-0d34-0410-b5e6-96231b3b80d8
/external/llvm/lib/Target/ARM/ARMInstrThumb2.td
6495f63945e8dbde81f03a1dc2ab421993b9a495 28-Jul-2009 Evan Cheng <evan.cheng@apple.com> - More refactoring. This gets rid of all of the getOpcode calls.
- This change also makes it possible to switch between ARM / Thumb on a
per-function basis.
- Fixed thumb2 routine which expand reg + arbitrary immediate. It was using
using ARM so_imm logic.
- Use movw and movt to do reg + imm when profitable.
- Other code clean ups and minor optimizations.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@77300 91177308-0d34-0410-b5e6-96231b3b80d8
/external/llvm/lib/Target/ARM/ARMInstrThumb2.td
1f0962756dc46a2909250d242dfa2953eb15e036 28-Jul-2009 David Goodwin <david_goodwin@apple.com> ORN does not require (and can not have) the ".w" suffix. "Orthogonality" is a dirty word at ARM.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@77275 91177308-0d34-0410-b5e6-96231b3b80d8
/external/llvm/lib/Target/ARM/ARMInstrThumb2.td
752aa7d2fe9af9d1bbd027f563e861f854bd40fa 27-Jul-2009 David Goodwin <david_goodwin@apple.com> Thumb-2 does not have RSC.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@77201 91177308-0d34-0410-b5e6-96231b3b80d8
/external/llvm/lib/Target/ARM/ARMInstrThumb2.td
af0d08d55c58cc34a373ca5f0b45e852c31e59d0 27-Jul-2009 David Goodwin <david_goodwin@apple.com> Add ".w" suffix for wide thumb-2 instructions.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@77199 91177308-0d34-0410-b5e6-96231b3b80d8
/external/llvm/lib/Target/ARM/ARMInstrThumb2.td
66ac53165e17b7c76b8c69e57bde623d44ec492e 25-Jul-2009 Evan Cheng <evan.cheng@apple.com> Change Thumb2 jumptable codegen to one that uses two level jumps:

Before:
adr r12, #LJTI3_0_0
ldr pc, [r12, +r0, lsl #2]
LJTI3_0_0:
.long LBB3_24
.long LBB3_30
.long LBB3_31
.long LBB3_32

After:
adr r12, #LJTI3_0_0
add pc, r12, +r0, lsl #2
LJTI3_0_0:
b.w LBB3_24
b.w LBB3_30
b.w LBB3_31
b.w LBB3_32

This has several advantages.
1. This will make it easier to optimize this to a TBB / TBH instruction +
(smaller) table.
2. This eliminate the need for ugly asm printer hack to force the address
into thumb addresses (bit 0 is one).
3. Same codegen for pic and non-pic.
4. This eliminate the need to align the table so constantpool island pass
won't have to over-estimate the size.

Based on my calculation, the later is probably slightly faster as well since
ldr pc with shifter address is very slow. That is, it should be a win as long
as the HW implementation can do a reasonable job of branch predict the second
branch.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@77024 91177308-0d34-0410-b5e6-96231b3b80d8
/external/llvm/lib/Target/ARM/ARMInstrThumb2.td
0b6afa8c71f3ee32d42390c0c46c28ff31aa6325 24-Jul-2009 Evan Cheng <evan.cheng@apple.com> Uh. It would be useful to actually print the operand.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@77004 91177308-0d34-0410-b5e6-96231b3b80d8
/external/llvm/lib/Target/ARM/ARMInstrThumb2.td
789476240d6b6f8ad9366cadf790a82bd41bb0b3 24-Jul-2009 Evan Cheng <evan.cheng@apple.com> Make sure thumb2 jumptable entries are aligned.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@76986 91177308-0d34-0410-b5e6-96231b3b80d8
/external/llvm/lib/Target/ARM/ARMInstrThumb2.td
5ff58b5c3ab6df332600678798ea5c69c5e943d3 24-Jul-2009 David Goodwin <david_goodwin@apple.com> Correctly handle the Thumb-2 imm8 addrmode. Specialize frame index elimination more exactly for Thumb-2 to get better code gen.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@76919 91177308-0d34-0410-b5e6-96231b3b80d8
/external/llvm/lib/Target/ARM/ARMInstrThumb2.td
eee839dd3c5cb87e51a522b4800674d7680fef70 24-Jul-2009 Evan Cheng <evan.cheng@apple.com> Thumb2 does not allow the use of "pc" register as part of the load / store address.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@76909 91177308-0d34-0410-b5e6-96231b3b80d8
/external/llvm/lib/Target/ARM/ARMInstrThumb2.td
81c102ba6639c807825b59df99ac41f3b14d191d 23-Jul-2009 Evan Cheng <evan.cheng@apple.com> Since we have moved unified assembly, switch to ADR instruction instead of a the difficult-to-read .set + add syntax to materialize pc-relative address.

Turns out this also fixed a poor code selection on Thumb1. I have no idea why we were using a mov + add to do the same thing as ADR before.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@76889 91177308-0d34-0410-b5e6-96231b3b80d8
/external/llvm/lib/Target/ARM/ARMInstrThumb2.td
b53cc014d0f47b898c9daca34566c16dda6c4c1e 23-Jul-2009 David Goodwin <david_goodwin@apple.com> Fix frame index elimination to correctly handle thumb-2 addressing modes that don't allow negative offsets. During frame elimination convert *i12 opcode to a *i8 when necessary due to a negative offset.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@76883 91177308-0d34-0410-b5e6-96231b3b80d8
/external/llvm/lib/Target/ARM/ARMInstrThumb2.td
eadf04992aea8d3efbc89d8e5920044d7a652e22 23-Jul-2009 Evan Cheng <evan.cheng@apple.com> Use getTargetConstant instead of getConstant since it's meant as an constant operand.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@76803 91177308-0d34-0410-b5e6-96231b3b80d8
/external/llvm/lib/Target/ARM/ARMInstrThumb2.td
756da12ae4030259d98fefbe26f840d49f71898e 22-Jul-2009 Evan Cheng <evan.cheng@apple.com> Don't forget D16 - D31 are clobbered by calls and sjlj eh.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@76729 91177308-0d34-0410-b5e6-96231b3b80d8
/external/llvm/lib/Target/ARM/ARMInstrThumb2.td
c27a4547a369a49e94a02063b097911bffa6ae57 21-Jul-2009 David Goodwin <david_goodwin@apple.com> CMP and TST define CPSR, not use it.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@76489 91177308-0d34-0410-b5e6-96231b3b80d8
/external/llvm/lib/Target/ARM/ARMInstrThumb2.td
446c428bf394b7113b0f18cbacb5e87b4efd1e14 11-Jul-2009 Evan Cheng <evan.cheng@apple.com> Major changes to Thumb (not Thumb2). Many 16-bit instructions either modifies CPSR when they are outside the IT blocks, or they can predicated when in Thumb2. Move the implicit def of CPSR to an optional def which defaults CPSR. This allows the 's' bit to be toggled dynamically.

A side-effect of this change is asm printer is now using unified assembly. There are some minor clean ups and fixes as well.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@75359 91177308-0d34-0410-b5e6-96231b3b80d8
/external/llvm/lib/Target/ARM/ARMInstrThumb2.td
06e16587ebc81e43b42157fa3afcfd806b59b296 10-Jul-2009 Evan Cheng <evan.cheng@apple.com> Add a thumb2 pass to insert IT blocks.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@75218 91177308-0d34-0410-b5e6-96231b3b80d8
/external/llvm/lib/Target/ARM/ARMInstrThumb2.td
c50a1cbf5f2b536d396a78a3feb91656a8c8d9f1 10-Jul-2009 Evan Cheng <evan.cheng@apple.com> Fix ldm / stm unified syntax; add t2LDM_RET.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@75188 91177308-0d34-0410-b5e6-96231b3b80d8
/external/llvm/lib/Target/ARM/ARMInstrThumb2.td
5c874172ac8fd563867efc54022ac4c1571e1313 10-Jul-2009 Evan Cheng <evan.cheng@apple.com> Fix ldrd / strd address mode matching code. It allows for +/- 8 bit offset. Also change the printer to make the scale 4 explicit.

Note, we are not yet generating these instructions.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@75181 91177308-0d34-0410-b5e6-96231b3b80d8
/external/llvm/lib/Target/ARM/ARMInstrThumb2.td
cba962dd6b46fce807dfe3ed97da04ec5ad98c34 09-Jul-2009 Evan Cheng <evan.cheng@apple.com> Correct comment.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@75172 91177308-0d34-0410-b5e6-96231b3b80d8
/external/llvm/lib/Target/ARM/ARMInstrThumb2.td
f1daf7d8abebd6e0104a6b41a774ccbb19a51c60 09-Jul-2009 David Goodwin <david_goodwin@apple.com> Use common code for both ARM and Thumb-2 instruction and register info.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@75067 91177308-0d34-0410-b5e6-96231b3b80d8
/external/llvm/lib/Target/ARM/ARMInstrThumb2.td
e7cbe4118b7ddf05032ff8772a98c51e1637bb5c 08-Jul-2009 Evan Cheng <evan.cheng@apple.com> Change how so_imm and t2_so_imm are handled. At instruction selection time, the immediates are no longer encoded in the imm8 + rot format, that are left as it is. The encoding is now done in ams printing and code emission time instead.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@75048 91177308-0d34-0410-b5e6-96231b3b80d8
/external/llvm/lib/Target/ARM/ARMInstrThumb2.td
77521f5232e679aa3de10aaaed2464aa91d7ff55 08-Jul-2009 David Goodwin <david_goodwin@apple.com> Generalize opcode selection in ARMBaseRegisterInfo.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@75036 91177308-0d34-0410-b5e6-96231b3b80d8
/external/llvm/lib/Target/ARM/ARMInstrThumb2.td
334c26473bba3ad8b88341bb0d25d0ac2008bb8d 08-Jul-2009 David Goodwin <david_goodwin@apple.com> Checkpoint Thumb2 Instr info work. Generalized base code so that it can be shared between ARM and Thumb2. Not yet activated because register information must be generalized first.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@75010 91177308-0d34-0410-b5e6-96231b3b80d8
/external/llvm/lib/Target/ARM/ARMInstrThumb2.td
e253c951b38e47f14a097db6ac7731c857837ae2 07-Jul-2009 Evan Cheng <evan.cheng@apple.com> Add Thumb2 movcc instructions.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@74946 91177308-0d34-0410-b5e6-96231b3b80d8
/external/llvm/lib/Target/ARM/ARMInstrThumb2.td
40289b041adb299e4474607066b69b89298e5f70 07-Jul-2009 Evan Cheng <evan.cheng@apple.com> Add Thumb2 pkhbt / pkhtb.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@74895 91177308-0d34-0410-b5e6-96231b3b80d8
/external/llvm/lib/Target/ARM/ARMInstrThumb2.td
5b9fcd1c8e9f2b7964a82cd383441f568890b561 07-Jul-2009 Evan Cheng <evan.cheng@apple.com> Add some more Thumb2 multiplication instructions.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@74889 91177308-0d34-0410-b5e6-96231b3b80d8
/external/llvm/lib/Target/ARM/ARMInstrThumb2.td
36a0aebac21bb72328ce72a55df6f3fe62c68b7f 07-Jul-2009 Evan Cheng <evan.cheng@apple.com> Add bfc to armv6t2.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@74868 91177308-0d34-0410-b5e6-96231b3b80d8
/external/llvm/lib/Target/ARM/ARMInstrThumb2.td
d27c9fc403ae906c60ca3dfee72001f7e1930492 03-Jul-2009 Evan Cheng <evan.cheng@apple.com> Add thumb2 sign / zero extend with rotate instructions.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@74755 91177308-0d34-0410-b5e6-96231b3b80d8
/external/llvm/lib/Target/ARM/ARMInstrThumb2.td
2889ccea625942348ea74f51ae2f67d084f44850 03-Jul-2009 Evan Cheng <evan.cheng@apple.com> Add Thumb2 load / store multiple instructions. Not used yet.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@74749 91177308-0d34-0410-b5e6-96231b3b80d8
/external/llvm/lib/Target/ARM/ARMInstrThumb2.td
78236f8c8a0e6bd966afd7e461599336956f7772 03-Jul-2009 Evan Cheng <evan.cheng@apple.com> t2LDR_PRE etc are loads.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@74741 91177308-0d34-0410-b5e6-96231b3b80d8
/external/llvm/lib/Target/ARM/ARMInstrThumb2.td
6d94f1119644393c0b3e58ad666bb1d020770951 03-Jul-2009 Evan Cheng <evan.cheng@apple.com> Added indexed stores.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@74740 91177308-0d34-0410-b5e6-96231b3b80d8
/external/llvm/lib/Target/ARM/ARMInstrThumb2.td
4fbb9960adcd79888acda1869d26032b9ab44a10 03-Jul-2009 Evan Cheng <evan.cheng@apple.com> Sign extending pre/post indexed loads.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@74736 91177308-0d34-0410-b5e6-96231b3b80d8
/external/llvm/lib/Target/ARM/ARMInstrThumb2.td
e88d5cee9d6b02bc786df806395a718464908064 02-Jul-2009 Evan Cheng <evan.cheng@apple.com> Thumb2 pre/post indexed loads.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@74696 91177308-0d34-0410-b5e6-96231b3b80d8
/external/llvm/lib/Target/ARM/ARMInstrThumb2.td
d770d9e7d1f5c65b185897dcf226b3fc64598683 02-Jul-2009 Evan Cheng <evan.cheng@apple.com> Change the meaning of predicate hasThumb2 to mean thumb2 ISA is available, not that it's in thumb mode and thumb2 is available. Added isThumb2 predicate to replace the old predicate.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@74692 91177308-0d34-0410-b5e6-96231b3b80d8
/external/llvm/lib/Target/ARM/ARMInstrThumb2.td
d1fa120aeec67e94e6ed6056593ccb630fe2db0e 01-Jul-2009 David Goodwin <david_goodwin@apple.com> Add PIC load and store patterns for Thumb-2.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@74577 91177308-0d34-0410-b5e6-96231b3b80d8
/external/llvm/lib/Target/ARM/ARMInstrThumb2.td
6647cea111ab4d83483b28712b5ba8244e6612f2 01-Jul-2009 David Goodwin <david_goodwin@apple.com> Thumb-2 load and store double description. But nothing yet creates them.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@74566 91177308-0d34-0410-b5e6-96231b3b80d8
/external/llvm/lib/Target/ARM/ARMInstrThumb2.td
73b8f16b360544bc0f756d92fa2661028160cef3 01-Jul-2009 David Goodwin <david_goodwin@apple.com> Add thumb-2 store word, halfword, and byte.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@74555 91177308-0d34-0410-b5e6-96231b3b80d8
/external/llvm/lib/Target/ARM/ARMInstrThumb2.td
c9a59b5960088f48c3be234bcc4c79a1ed915d73 30-Jun-2009 David Goodwin <david_goodwin@apple.com> Improve Thumb-2 jump table support.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@74549 91177308-0d34-0410-b5e6-96231b3b80d8
/external/llvm/lib/Target/ARM/ARMInstrThumb2.td
5e47a9a6e46bd271eba058fb831da1a1edf8707c 30-Jun-2009 David Goodwin <david_goodwin@apple.com> Add conditional and unconditional thumb-2 branch. Add thumb-2 jump table.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@74543 91177308-0d34-0410-b5e6-96231b3b80d8
/external/llvm/lib/Target/ARM/ARMInstrThumb2.td
f3c21b857b8449bcde35e499ef8268c0fec9514d 30-Jun-2009 Evan Cheng <evan.cheng@apple.com> A few more load instructions.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@74500 91177308-0d34-0410-b5e6-96231b3b80d8
/external/llvm/lib/Target/ARM/ARMInstrThumb2.td
baeb911d60401818dc9fe0db6182cd048e4fdd03 30-Jun-2009 David Goodwin <david_goodwin@apple.com> Add Thumb-2 support for TEQ amd TST.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@74468 91177308-0d34-0410-b5e6-96231b3b80d8
/external/llvm/lib/Target/ARM/ARMInstrThumb2.td
c0309b48b560f119982c02a81416c8c1fd208648 29-Jun-2009 David Goodwin <david_goodwin@apple.com> Rename ARMcmpNZ to ARMcmpZ and use it to represent comparisons that set only the Z flag (i.e. eq and ne). Make ARMcmpZ commutative.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@74423 91177308-0d34-0410-b5e6-96231b3b80d8
/external/llvm/lib/Target/ARM/ARMInstrThumb2.td
055b0310f862b91f33699037ce67d3ab8137c20c 29-Jun-2009 Evan Cheng <evan.cheng@apple.com> Implement Thumb2 ldr.

After much back and forth, I decided to deviate from ARM design and split LDR into 4 instructions (r + imm12, r + imm8, r + r << imm12, constantpool). The advantage of this is 1) it follows the latest ARM technical manual, and 2) makes it easier to reduce the width of the instruction later. The down side is this creates more inconsistency between the two sub-targets. We should split ARM LDR instruction in a similar fashion later. I've added a README entry for this.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@74420 91177308-0d34-0410-b5e6-96231b3b80d8
/external/llvm/lib/Target/ARM/ARMInstrThumb2.td
9cb9e6778c7d458eee7f3e25d304697ad10d8d46 27-Jun-2009 Evan Cheng <evan.cheng@apple.com> Renaming for consistency.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@74368 91177308-0d34-0410-b5e6-96231b3b80d8
/external/llvm/lib/Target/ARM/ARMInstrThumb2.td
8eba8e0ca3497e4f518b5e27117ea22651409c2c 27-Jun-2009 David Goodwin <david_goodwin@apple.com> Remove outdated comment.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@74357 91177308-0d34-0410-b5e6-96231b3b80d8
/external/llvm/lib/Target/ARM/ARMInstrThumb2.td
dcdaebc592cad9bc23652e3b9fdb552d63bbeb9f 27-Jun-2009 David Goodwin <david_goodwin@apple.com> When possible, use "mvn ra, rb" instead of "eor ra, rb, -1" because mvn has a narrow version and eor(i) does not.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@74355 91177308-0d34-0410-b5e6-96231b3b80d8
/external/llvm/lib/Target/ARM/ARMInstrThumb2.td
7ce720b448c581b822577aaf44b73a5aa9689dfc 26-Jun-2009 David Goodwin <david_goodwin@apple.com> Use "adcs/sbcs" only when the carry-out is live, otherwise use "adc/sbc".


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@74321 91177308-0d34-0410-b5e6-96231b3b80d8
/external/llvm/lib/Target/ARM/ARMInstrThumb2.td
93d95bd2c309b1fb8e2a830c441d86556a41038c 26-Jun-2009 David Goodwin <david_goodwin@apple.com> ADC used to implement adde should use "adcs" opcode instead of "adc".


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@74293 91177308-0d34-0410-b5e6-96231b3b80d8
/external/llvm/lib/Target/ARM/ARMInstrThumb2.td
83b3593478406b020b7af6ba5402a14507d7d713 26-Jun-2009 David Goodwin <david_goodwin@apple.com> Currently there is a pattern for the thumb-2 MOV 16-bit immediate instruction. That instruction cannot write the flags so it should use T2I instead of T2sI.
Also, added a pattern for the thumb-2 MOV of shifted immediate since that can encode immediates not encodable by the 16-bit immediate.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@74288 91177308-0d34-0410-b5e6-96231b3b80d8
/external/llvm/lib/Target/ARM/ARMInstrThumb2.td
8de898abc8deb46a30973958801e9f9f4e9a7d46 26-Jun-2009 Evan Cheng <evan.cheng@apple.com> Mark a bunch of instructions commutable.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@74237 91177308-0d34-0410-b5e6-96231b3b80d8
/external/llvm/lib/Target/ARM/ARMInstrThumb2.td
626742231863db0e9aeef1be1fd48e9f4b7e22f8 26-Jun-2009 Evan Cheng <evan.cheng@apple.com> Select ADC, SBC, and RSC instead of the ADCS, SBCS, and RSCS when the carry bit def is not used.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@74228 91177308-0d34-0410-b5e6-96231b3b80d8
/external/llvm/lib/Target/ARM/ARMInstrThumb2.td
0919a916bf152e08617e67f9d4b03db4769076e2 26-Jun-2009 David Goodwin <david_goodwin@apple.com> Use MVN for ~t2_so_imm immediates.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@74223 91177308-0d34-0410-b5e6-96231b3b80d8
/external/llvm/lib/Target/ARM/ARMInstrThumb2.td
1e249e3705bccd20d72d9131e9f904dc10595c02 25-Jun-2009 Evan Cheng <evan.cheng@apple.com> ISD::ADDE / ISD::SUBE updates the carry bit so they should isle to ADCS and SBCS / RSCS.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@74200 91177308-0d34-0410-b5e6-96231b3b80d8
/external/llvm/lib/Target/ARM/ARMInstrThumb2.td
0aa1d8c52d34e9ba1e731a21b16606cd6f4f924a 25-Jun-2009 Evan Cheng <evan.cheng@apple.com> Change thumb2 instruction definitions so if-converter so add predicate operands and / or flip the 's' bit to set the condition flag.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@74158 91177308-0d34-0410-b5e6-96231b3b80d8
/external/llvm/lib/Target/ARM/ARMInstrThumb2.td
b6c29d55123f6b8c3f9e4d56e4be653a1fd2a472 25-Jun-2009 Evan Cheng <evan.cheng@apple.com> Add thumb2 add sp.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@74156 91177308-0d34-0410-b5e6-96231b3b80d8
/external/llvm/lib/Target/ARM/ARMInstrThumb2.td
a09b9ca10fbec13e4ad47d8108e9c6f9a1b53451 25-Jun-2009 Evan Cheng <evan.cheng@apple.com> Add Thumb2 pc relative add.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@74141 91177308-0d34-0410-b5e6-96231b3b80d8
/external/llvm/lib/Target/ARM/ARMInstrThumb2.td
b8f7706911028508dc2a6c07fa185139f870c059 23-Jun-2009 Evan Cheng <evan.cheng@apple.com> Test instructions operands were printed in the wrong order.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@73990 91177308-0d34-0410-b5e6-96231b3b80d8
/external/llvm/lib/Target/ARM/ARMInstrThumb2.td
a67efd12263eff2ed0f0a89ce905d59a82d0760a 23-Jun-2009 Evan Cheng <evan.cheng@apple.com> Proper patterns for thumb2 shift and rotate instructions.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@73987 91177308-0d34-0410-b5e6-96231b3b80d8
/external/llvm/lib/Target/ARM/ARMInstrThumb2.td
e499f970585c2462e2de8a38f67f6d11683a6bb0 23-Jun-2009 Evan Cheng <evan.cheng@apple.com> Rename SelectShifterOperand to SelectThumb2ShifterOperandReg.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@73975 91177308-0d34-0410-b5e6-96231b3b80d8
/external/llvm/lib/Target/ARM/ARMInstrThumb2.td
83a2129332250af4648e0501f93cabfa8873e1f4 23-Jun-2009 Evan Cheng <evan.cheng@apple.com> Obvious typo.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@73967 91177308-0d34-0410-b5e6-96231b3b80d8
/external/llvm/lib/Target/ARM/ARMInstrThumb2.td
f49810c7e60807c43a68ab02c936a4ee77a4d2cf 23-Jun-2009 Evan Cheng <evan.cheng@apple.com> Initial Thumb2 support. Majority of the work is done by David Goodwin. There are
also some contribution from Jim Grosbach, Bob Wilson, and Evan Cheng.

I've done my best to consolidate the patches with those that were done by
Viktor Kutuzov and Anton Korzh from Access Softek, Inc. Let me know if missed
anything. I've completely reorganized the thumb2 td file, made more extensive
uses of multiclass, etc.

Test cases will be contributed later after I re-organize what's in svn first.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@73965 91177308-0d34-0410-b5e6-96231b3b80d8
/external/llvm/lib/Target/ARM/ARMInstrThumb2.td
3850a6ae9d1c5f38c94c89237ce87d4270dcac64 23-Jun-2009 Evan Cheng <evan.cheng@apple.com> Replace isTwoAddress with operand constraint.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@73947 91177308-0d34-0410-b5e6-96231b3b80d8
/external/llvm/lib/Target/ARM/ARMInstrThumb2.td
7c4f7dd43a84b233f94a1fe44faff42ac46b906d 18-Jun-2009 Anton Korobeynikov <asl@math.spbu.ru> Fix asm string from MOVi16

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@73661 91177308-0d34-0410-b5e6-96231b3b80d8
/external/llvm/lib/Target/ARM/ARMInstrThumb2.td
52237119a9b41d6d714c96e730d651300b171298 17-Jun-2009 Anton Korobeynikov <asl@math.spbu.ru> Initial support for some Thumb2 instructions.
Patch by Viktor Kutuzov and Anton Korzh from Access Softek, Inc.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@73622 91177308-0d34-0410-b5e6-96231b3b80d8
/external/llvm/lib/Target/ARM/ARMInstrThumb2.td
d4022c3fbb0705abdc8eddc3ee4a5059f5ef8094 30-May-2009 Anton Korobeynikov <asl@math.spbu.ru> Add placeholder for thumb2 stuff

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@72593 91177308-0d34-0410-b5e6-96231b3b80d8
/external/llvm/lib/Target/ARM/ARMInstrThumb2.td